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

oko*_*vko 5 macos msmtp macos-high-sierra

按照ArchLinux上的说明进行安装和配置msmtp不起作用。文件/etc/ssl/certs/ca-certificates.crt或类似内容丢失,尝试使用它msmtp发送邮件将导致证书错误。

OSX High Sierra 的替代配置是什么,以便msmtp可以像教程中那样用于发送邮件?

注意:我前段时间自己回答了这个问题,并认为它很有用且值得分享,所以我创建了这个问题和答案。例如,如果对证书和指纹有更多了解的人可以提供更高质量的答案,并提供有关使用证书或指纹之间的差异的更多详细信息和背景信息,那就太好了。

几年后请注意:我知道这是一个自我回答的问答,但它有 1000 次浏览,所以也许记得给有用的问答点赞。

oko*_*vko 7

您可以使用该tls_fingerprint字段~/.msmtprc代替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一起使用。gmailUbuntu 18Mac OSX High Sierra


小智 2

另一种方法对我有用,可以避免 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
Run Code Online (Sandbox Code Playgroud)

将以下行添加到 .msmptrc

tls_trust_file /opt/local/share/curl/curl-ca-bundle.crt

有用:

Hatchet:~ me$ mail me@mac.com
Subject: Hi Mike
done
.
EOT
Run Code Online (Sandbox Code Playgroud)

没有错误。从日志文件中:

exitcode=EX_OK