PHP电子邮件,Postfix和Message Queue

我一直在运行一个networking平台,每天都需要发送大量的电子邮件。 在实施date,我和我的合作伙伴决定在服务器上设置Postfix,并使用Swift Mailer类将使用SMTP连接的电子邮件发送到本地Postfix服务器。

这使我们可以拥有多个电子邮件帐户,例如[email protected][email protected] [email protected][email protected]并且能够发送正确与DKIM签名的电子邮件。

我的问题是,我们不能以某种方式configurationPHP,以避免本地SMTP连接(这需要时间的服务器资源),并取而代之的是更直接的方式来传递消息发送到Postfix队列?

形成我的理解,我可以使用PHP mail()函数,甚至Swift Mailer的Swift_SendmailTransport类,并将消息直接传递给Postfix队列。 但如果是这样,我们如何确保DKIM? 将“FROM”标题更改为本地服务器上的电子邮件帐户就足够了吗?

谢谢。

形成我的理解,我可以使用PHP邮件()函数,甚至Swift Mailer的Swift_SendmailTransport类,并将消息直接传递给Postfix队列。

确实如此

但如果是这样,我们如何确保DKIM? 将“FROM”标题更改为本地服务器上的电子邮件帐户就足够了吗?

你没有指定你的DKIM签名者,所以我假设你在你的设置中使用了OpenDKIM。 OpenDKIM通过milter接口与postfix集成。 为了从mail()命令(不用smtp仪式)签名邮件,你需要确保OpenDKIM套接字/端口也列出了non_smptd_milters

首先,只要您在non_smptd_milters中指定了OpenDKIM,而在Postfix的main.cf中指定了smptd_milters,那么通过PHP mail()发送的外发邮件仍应该被签名。 收到的头文件默认没有签名,没有其他的东西应该被清理重写。 如果你想要一个替代方法,你可以使用Amavis和content_filter进行DKIM签名,尽pipe这意味着更多的SMTP会话。

其次,使用本地SMTP而不是将邮件放入maildrop队列是不太可能的,因为这样的性能开销。 这可能是因为你有一个有限数量的postfix smtpd守护进程,所有这些守护进程都在调用milter,但是即使没有,邮件在发送之前仍然需要经过OpenDKIM。 是的,您的PHP脚本将尽快完成,但我怀疑电子邮件将更快地交付。 这可能值得重新阅读http://www.postfix.org/QSHAPE_README.html