支持 SASL 身份验证的命令行 SMTP 客户端

支持 SASL 身份验证的命令行 SMTP 客户端

Mutt(已编译 SMTP 支持)在发送消息时可以显示操作进度,但它仅在交互模式下显示。如果尝试在批处理模式下运行 Mutt:

% mutt -s ‘测试 #1’ -a huge_file.tar.gz --[电子邮件保护]
使用 TLSv1/SSLv3 (RC4-MD5) 的 SSL 连接

他将看不到进度更新,这对于发送非常大的文件来说很不方便。

我的问题是:是否有任何 SMTP 命令行客户端能够通过 GMail smtp 服务器发送消息向用户显示进度条(或类似的东西)?

提前致谢。

答案1

我相信斯瓦克斯正是您要找的。

答案2

重新阅读问题并得到重要部分(应该突出显示)我想我会这样做(因为我在现有的 smtp 客户端中没有找到这样的解决方案):

使用来源邮件传输协议,在它的“smtp.c”中有“smtp_send_mail()”,实际发送发生在其中。我会修补该文件以打印出发送了多少邮件。也许作为一种选择,也许对信号做出反应(如“kill -USR1”)...

答案3

我将把 Postfix 设置为我的本地 MTA,并启用 SASL。

在 Ubuntu 9.04 示例系统上,安装 postfix、libsasl2-2 和 ca-certificates 包。创建/修改以下 Postfix 配置文件。

/etc/postfix/main.cf:

biff = no
append_dot_mydomain = no
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_use_tls = yes
myhostname = linuxbox.int.example.com
mydomain = example.com
myorigin = $mydomain
smtpd_banner = $myhostname ESMTP $mail_name 
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = linuxbox.int.example.com, linuxbox, localhost.localdomain, localhost
relayhost = [mail.google.com]:587
mynetworks = 127.0.0.0/8
inet_interfaces = loopback-only
mailbox_size_limit = 0
recipient_delimiter = +

所有其他值都可以是默认值,实际上其中很多都是默认值,值得注意的是开头的 smtp_*。更改适合您环境的主机名和域。

在 /etc/postfix/sasl_passwd 中:

[mail.google.com]:587 gmail_username:gmail-password

将 mail.google.com 替换为 Google 的 SMTP 服务器,并将 gmail_username 和 gmail-password 替换为适当的值。

运行 postmap 并重新启动 postfix:

sudo postmap /etc/postfix/sasl_passwd
sudo /etc/init.d/postfix restart

现在,当您在系统上发送邮件时,它将使用 Postfix 作为本地 MTA 并自动使用 SASL 进行身份验证。

相关内容