如何在OSX上安装和配置MSMTP?

5
按照 ArchLinux 上的指示安装和配置 msmtp 无法正常工作。缺少文件 /etc/ssl/certs/ca-certificates.crt 或类似的文件,尝试使用 msmtp 发送邮件将导致证书错误。
在OSX High Sierra上有哪些备选配置可以让 msmtp 像教程中那样用于发送邮件?
注:我自己在一段时间前回答了这个问题,并决定分享出来,认为它很有用。如果有更多了解证书和指纹的人能提供更高质量、更详细的答案和背景信息,例如使用证书或指纹的区别,那就太好了。
注(多年后):我知道这是一个自问自答的 Q/A,但它已经有1k次的浏览了,所以也许要记得给有用的 Q/A 点赞。
2个回答

7
您可以在~/.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_fingerprinttls_trust_file是互斥的,因此不要尝试同时使用两者,否则msmtp将出现配置错误。
这是一个可以安装和配置msmtp以与gmail帐户一起使用的脚本,适用于Ubuntu 18Mac OSX High Sierra脚本

这种方法的注意事项是tls_fingerprint似乎会在随机长度的时间后过期。当邮件停止工作时,您必须生成新的指纹。一定有更好的方法。 - Buadhai

2

这是一个适用于我并避免了tls_fingerprint过期问题的替代方法。

使用MacPorts安装curl CA bundle:

sudo port install curl-ca-bundle

找到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


确认这在10.9.5(Mavericks)上非常好用,并且避免了TLS指纹过期的问题。 - northernman
太好了!终于有人因为指纹过期而感到烦恼,找到了正确的答案 :) - okovko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接