我如何使用 postfix 在无效电子邮件进入 smtp 中继之前过滤掉它们

How can I use postfix to filter out invalid emails before they go to smtp relay

我正在尝试使用 postfix and/or maildev 或一些其他工具在它们转到我的外部 smtp 服务器之前过滤掉地址错误的电子邮件。

我有自动测试,可以发送到垃圾邮件收集站点 mailforspam.com。代码已经写好,但我认为没有必要将所有这些邮件发送到外部站点。此外,我还有一些用户正在向其他 non-existing 帐户或域发送流量。我在服务器上设置了 maildev,并将我的服务器配置为将其所有邮件发送到 maildev。然而,每当用户使用诸​​如 abc@xyz.com 之类的虚假电子邮件时,maildev 就会崩溃,因为它等待的响应永远不会到来,或者无法查找主机。我可以使用 maildev 来吸收所有流量(即不中继),但随后合法流量也会被阻止。我正在尝试使用 post修复传输映射来过滤发往特定域或用户的邮件,这样他们就不会通过 smtp 离开网络。

我有 maildev 运行 在 10.231.20.201 上使用端口 1025。

我在同一台机器 (10.231.20.201) 的端口 25 上设置 post 修复。我在 /etc/postfix/transport

中添加了交通地图

它有以下条目:

* relay:10.231.20.201:1025

如果我只有上面的一个条目,所有的邮件都会被正确地收集,但没有邮件会被发送出去。

如果我把它改成:

mailforspam.com 10.231.20.201:1025
* relay:smtp.mydomain.com

它不会将 mailforspam.com 流量路由到邮件服务器,而是将所有内容路由到外部世界。由于自动测试的数量 运行,不良电子邮件会阻塞 smtp 服务器——更不用说发送垃圾邮件了。

如果我将post修复交通地​​图设置为:

mailforspam.com 10.231.20.201:1025
* relay:smtp.mydomain.com

然后我使用 swaks 发送一条简单的消息,例如:

echo "test message" | swaks --to josephspam@mailforspam.com --from "jishak@mydomain.coom" -s 10.231.20.201 -p 25

然后当我向该域发送测试邮件时,我在 /var/log/maillog 中看到以下内容:

May 20 20:49:49 maildev postfix/error[12649]: 109C819C5A13: to=<josephspam@mailforspam.com>, relay=none, delay=6111, delays=6111/0.03/0/0.02, dsn=4.3.0, status=deferred (mail transport unavailable)

我正在尝试找出将标题为我无法控制的域的电子邮件中继到垃圾邮件陷阱(例如 maildev)的正确方法。

我还需要让合法的电子邮件继续进行正确的 smtp 中继。

以前有人做过吗?有什么想法吗?

我看到的主要问题是 1. 我不知道如何将电子邮件路由到垃圾邮件陷阱 2. 一些规则在传输映射中,但我无法让它们在同一个盒子的 1025 上与 maildev 服务器 运行 一起工作,因为这些规则似乎只适用于端口 25。

我最后做了以下事情:

我将 /etc/postfix/transport 文件设置为明确将我的开发人员已知会滥用的某些域列入黑名单,例如配置文件中硬编码的值、拥有我当前公司但不容易更改的以前公司的值改变等

我将人们请求但未被滥用的流量明确列入白名单,例如:

aol.com smtp:[external_mail_server_ip]:25
gmail.com smtp:[external_mail_server_ip]:25
icloud.com smtp:[external_mail_server_ip]:25
mycompany.com smtp:[external_mail_server_ip]:25

我选择阻止所有流量,只将未被滥用的特定网站和电子邮件地址列入白名单。

* relay:[maildev_mail_server_ip]:1025

此外,在某些时候 mailforspam.com 可能厌倦了来自我们域的流量,这些流量是合法的,但超出了他们的处理能力,因此只是丢弃了所有数据包。我最终将该域列入 maildev 服务器的黑名单,并要求开发人员使用 maildev 的 api.

检查 maildev 中的邮件