smtpd_recipient_restrictions的作品,但并不总是

我有POSTFIX设置过滤某些电子邮件地址。 main.cf文件包含:

 smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/blacklist, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, permit 

当我尝试发送电子邮件到黑名单上的某个地址时,出现错误554 5.7.1 Access denied. 就像它应该。 另外,当我尝试用telnet发送消息被阻止。 但是,这台服务器安装了一个基于php的邮件软件,并使用swiftmailer发送消息。 当我尝试使用此软件发送邮件时,任何邮件都会被发送到其中一个阻止的地址。

这可能是什么原因? 我怎样才能跟踪并debugging呢?

如果本地机器运行一个smtp服务器,有两种发送邮件的方法。

您可以使用smtp协议(就像任何其他远程客户端),连接到localhost端口25,并进行整个smtp谈话。 在这种情况下,smtpd客户端限制也适用。

或者你只需​​运行带有适当参数的sendmail二进制文件。 在这种情况下,你不使用smtp协议,因此限制不被强制执行。

例如,linux上的php mail()函数将使用第二种方法,使用默认的sendmail -t -i命令,或者在php.iniconfiguration为sendmail_path

Swiftmailer支持这两种方法,所以你可以改变代码使用smtp而不是sendmail。 看到这里http://swiftmailer.org/docs/sending.html