当连接来自本地主机时,如何阻止 postfix 将邮件转发到 spampd

当连接来自本地主机时,如何阻止 postfix 将邮件转发到 spampd

今天早些时候,我询问了有关从本地主机发送邮件的 postfix 和 spamassassin 的问题,postfix、垃圾邮件杀手、swiftmailer并很快得到了很好的答复(谢谢)。直接使用 sendmail 解决了速度问题,但出于其他原因,我想尝试使用 SMTP,因此我需要知道如何在连接客户端为 localhost 时阻止 postfix 将邮件转发到 spampd。目前,退回的邮件不是返回到 REPLY-TO 地址,而是返回到 Web 服务器管理员,我认为这是因为直接使用 sendmail。我的配置显示在前面的问题中,只是目前我已将邮件程序配置为

'mailer' => [
    'class' => 'yii\swiftmailer\Mailer',
    // send all mails to a file by default. You have to set
    // 'useFileTransport' to false and configure a transport
    // for the mailer to send real emails.
    'useFileTransport' => false,
    'transport' => [
        'class' => 'Swift_SendmailTransport'
    ],
],

答案1

以下是我解决问题的方法。相关文档位于http://www.postfix.org/SMTPD_PROXY_README.html

/etc/postfix/master.cf 中有相关配置。

smtp       inet  n       -       y       -       20      smtpd
-o smtpd_proxy_filter=127.0.0.1:10025
-o smtpd_client_connection_count_limit=10
127.0.0.1:10026 inet n  -       n       -        -      smtpd
    -o smtpd_authorized_xforward_hosts=127.0.0.0/8
    -o smtpd_client_restrictions=
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o smtpd_data_restrictions=
    -o mynetworks=127.0.0.0/8
    -o receive_override_options=no_unknown_recipient_checks

这些定义了端口 10026 以接收来自邮件过滤器的输出,并由 postfix 的后过滤 SMTP 服务处理。我将配置设置为发送到端口 10026,SMTP 会立即处理电子邮件。

我已经使用不正确的电子邮件地址进行了测试,退回邮件被正确地发送到回复地址,而不是我的网络服务器管理员。

事实上,我很惊讶我找不到更多关于这个问题的讨论,但也许大多数服务器都有一个网站,所以网络服务器管理员与网站上的电子邮件发件人相同或相似。在我们的案例中,我们有大约 100 个不同的电子邮件发件人,因此他们获得自己的退回邮件非常重要。

这是我们现在使用的 Yii2 Swiftmailer 配置:

'mailer' => [
        'class' => 'yii\swiftmailer\Mailer',
        // send all mails to a file by default. You have to set
        // 'useFileTransport' to false and configure a transport
        // for the mailer to send real emails.
        'useFileTransport' => false,
        'transport' => [
            'class' => 'Swift_SmtpTransport',
            'host' => '127.0.0.1',
            'port' => '10026'
        ]
    ],

这应该是显而易见的,但我要声明的是,防火墙上未打开端口 10026,因此只有本地主机可以使用该端口。

相关内容