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 进行身份验证。