如何在 macOS Sierra 10.12.6 上修复 postfix?

如何在 macOS Sierra 10.12.6 上修复 postfix?

我似乎无法让 postfix 工作。每次我发送东西时都会出现错误(TLS is required, but our TLS engine is unavailable)

故障排除步骤(那没用)

  • 删除openssl/opt/local/bin强制使用其中的一个/usr/bin
  • 替换openssl为macOS High Sierra 中的/opt/local/bininopenssl/usr/bin
  • 替换openssl为macOS High Sierra 中的/usr/bininopenssl/usr/bin
  • 安装opensslbrew

/etc/postfix/main.cf

relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_use_tls = yes
smtp_tls_security_level = encrypt
tls_random_source = dev:/dev/urandom
smtp_sasl_security_options = noanonymous
smtp_always_send_ehlo = yes
smtp_sasl_mechanism_filter = plain
inet_protocols = ipv4

/etc/postfix/sasl_passwd

[smtp.gmail.com]:587 [email protected]:XXXXXXXX

无法升级到 High Sierra,请帮忙!!!!!!

答案1

10.12.6 有一个错误导致这种情况发生,即使苹果发布的安全补丁适用于 10.13.1 和 10.12.6。升级到 High Sierra 10.13.1 将最终解决您的问题,而无需更改任何配置。

答案2

最好的方法是升级到 High Sierra。

如果由于某种原因不可能,您可以通过使用stunnel本地加密隧道并通过本地加密隧道中继未加密的邮件来解决此错误本指南(所有功劳归于 Rainer Müller):

  1. 安装Mac端口
  2. $ sudo port install stunnel certsync
  3. 创建/Library/LaunchDaemons/org.example.mail.plist并将以下内容放入其中:

<!-- /Library/LaunchDaemons/org.example.mail.plist -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>org.example.mail</string>
    <key>ProgramArguments</key>
    <array>
        <string>/opt/local/bin/stunnel3</string>
        <string>-c</string>
        <string>-r</string>
        <string>smtp.gmail.com:587</string>
        <string>-n</string>
        <string>smtp</string>
        <string>-v</string>
        <string>2</string>
        <string>-A</string>
        <string>/opt/local/etc/openssl/cert.pem</string>
    </array>
        <key>UserName</key>
        <string>nobody</string>
    <key>Sockets</key>
    <dict>
        <key>Listeners</key>
        <dict>
            <key>SockNodeName</key>
            <string>localhost</string>
            <key>SockServiceName</key>
            <string>555</string>
            <key>SockType</key>
            <string>stream</string>
        </dict>
    </dict>
    <key>inetdCompatibility</key>
    <dict>
        <key>Wait</key>
        <false/>
    </dict>
</dict>
</plist>
  1. 配置 launchd 以运行 stunnel3:
    $ sudo launchctl load -w /Library/LaunchDaemons/org.example.mail.plist
  2. 测试连接:
    nc localhost 555
  3. 编辑/etc/postfix/main.cf以使 postfix 使用本地隧道而不是直接连接到 SMTP 服务器:

relayhost = [localhost]:555
smtp_tls_security_level = may

(加密级别也应降低)

  1. 改为/etc/postfix/sasl_passwdsmtp.gmail.com:587localhost:555
  2. 重新加载邮政地图:

sudo postmap hash:/etc/postfix/sasl_passwd

现在您的邮件应该像魅力一样发挥作用!

PS 使用此命令在运行时查看邮件日志以进行调试:

log stream --predicate  '(process == "smtpd") || (process == "smtp")' --debug

PPS 我安装了 XCode 9.2。安装/运行 stunnel3 可能需要它。

相关内容