按照 ArchLinux 上的说明安装和配置msmtp
不起作用。文件/etc/ssl/certs/ca-certificates.crt
或类似内容丢失,尝试使用msmtp
发送邮件将导致证书错误。
OSX High Sierra的替代配置是什么,以便可以使用msmtp
像教程中那样发送邮件?
注意:前段时间我自己回答了这个问题,并认为它有用且值得分享,所以我创建了这个问题和答案。例如,如果对证书和指纹有更多了解的人可以提供更高质量的答案,其中包含有关使用证书或指纹之间区别的更多详细信息和背景信息,那就太好了。
多年后请注意:我知道这是一个自我回答的问答,但这有 1k 次观看,所以也许记得对有用的问答投赞成票。
您可以在 ~/.msmtprc
中使用 tls_fingerprint
字段,而不是 tls_trust_file
。要生成 tls_fingerprint
的字段值,您可以运行以下命令
msmtp --serverinfo --tls --tls-certcheck=off --host=smtp.gmail.com --port=587 | egrep -o "([0-9A-Za-z]{2}:){31}[0-9A-Za-z]{2}"
tls_fingerprint
和 tls_trust_file
是互斥的,因此不要尝试同时使用两者,否则msmtp
会出现配置错误。
您可以运行以下脚本来安装和配置msmtp
以与Ubuntu 18
或Mac OSX High Sierra
上的gmail
帐户一起使用。
一种对我有用的替代方法,避免了tls_fingerprint过期的问题。
使用 MacPorts 安装 curl CA 捆绑包:
sudo port install curl-ca-bundle
找到捆绑包:
port contents curl-ca-bundle
Port curl-ca-bundle contains:
/opt/local/etc/openssl/cert.pem
/opt/local/share/curl/curl-ca-bundle.crt
将以下行添加到 .msmptrc
tls_trust_file /opt/local/share/curl/curl-ca-bundle.crt
它的工作原理:
Hatchet:~ me$ mail me@mac.com
Subject: Hi Mike
done
.
EOT
没有错误。从日志文件:
exitcode=EX_OK