![如何在 macOS 上配置 postfix 来中继 *一切*](https://linux22.com/image/757050/%E5%A6%82%E4%BD%95%E5%9C%A8%20macOS%20%E4%B8%8A%E9%85%8D%E7%BD%AE%20postfix%20%E6%9D%A5%E4%B8%AD%E7%BB%A7%20*%E4%B8%80%E5%88%87*.png)
我需要进行大量本地电子邮件测试(在 macOS 10.14 上),因此大多数情况下我使用端口 2500 上的虚假 SMTP 服务器,但是,我还需要捕获直接通过本地sendmail
二进制文件发送的消息,这实际上意味着使用可以将它们中继到我的虚假邮件服务器的真实邮件服务器。我试图为此使用 postfix,但效果并不好。我的目标是让它中继所有域中所有用户的所有消息,不进行任何过滤、加密或身份验证。我不希望它关注本地用户帐户,这似乎需要禁用本地 postfix 传递代理,但我还没有找到如何做到这一点。
我的配置主要归结为如下几点:
local_transport = local:$myhostname
mydestination = $myhostname, localhost.$mydomain, localhost
local_recipient_maps =
relayhost = localhost:2500
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/local_passwd
smtp_use_tls = no
smtp_tls_security_level = none
compatibility_level = 2
fallback_transport = localhost:2500
local_passwd
我的虚假邮件服务器需要身份验证,但它不会检查任何内容,任何用户名或密码都可以使用,因此该文件中有一个虚拟条目。
在 macOS 上查看日志非常痛苦;到目前为止我发现的最佳方法是:
sudo log stream --predicate '(process == "cleanup") || (process == "pickup") || (process == "qmgr") || (process == "error")' --info
当我使用 sendmail 直接向它提交消息时,我可以看到它很乐意接受发送到本地帐户的消息,但不会转发它们。它还会拒绝发送到不存在的帐户的消息,就像[email protected]
我希望它接受和转发的那样。
这些消息最终会被存放到某个邮箱中,只要我跑步就能拿到它mail
。
我错过了什么?
答案1
我放弃尝试使用 postfix 来解决此问题,并发现邮件传输协议,它更加简单,并且可以在 Homebrew 中使用。
我为其创建了一个配置文件,其中包含:
defaults
host localhost
port 2500
tls off
undisclosed_recipients off
account default
auth plain
user test
password password
sendmail_path
我的 php.ini 中的更改如下:
sendmail_path = /usr/local/bin/msmtp -t -i
这很好地在 PHPmail()
函数和本地 SMTP 测试应用程序之间架起了一座桥梁直升机。