我需要做很多本地电子邮件测试(在 macOS 10.14 上),所以我在端口 2500 上使用了一个假的 SMTP 服务器来处理大多数事情,但是,我还需要捕获通过本地sendmail
二进制文件直接发送的消息,这实际上意味着使用真正的邮件服务器,可以将它们中继到我的假邮件服务器。我正在尝试为此使用后缀,但它确实进展不顺利。我的目标是让它为所有域中的所有用户中继所有消息,而不进行过滤、加密或身份验证。我根本不希望它关注本地用户帐户,这似乎需要禁用本地 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
。
我错过了什么?
我放弃了尝试为此使用 postfix 并找到msmtp,它更简单,并且可以在自制软件中使用。
我为它创建了一个配置文件,其中包含:
sendmail_path
我的 php.ini 中的更改:这很好地在 PHP 的
mail()
函数和本地 SMTP 测试应用程序HELO之间提供了一座桥梁。