我们向其中一位客户提供服务,向他们的客户发送报表。不幸的是,我们的客户对电子邮件地址的验证并不总是最好的,所以当他们向我们提交一批要发送时,我们通常会看到很多电子邮件由于公共域拼写错误而无法发送(例如 gnail.com、htmail .com 等)。我们收集退回给我们的客户以修复他们的电子邮件列表,但在退回/NDR 发生之前,这些邮件将保留在我们的后缀 mailq 中,直到它们到达队列到期时间。一次又一次地重试发送。
有什么好方法可以让 postfix 在第一次失败时立即为这些消息发送 NDR,而不是一次又一次地尝试?我们只希望这种情况发生在坏域上,但有时,我们会看到由于灰名单而延迟的邮件,并且它们在第二次尝试时就会消失。
我已经尝试过我的 Google-foo,但它似乎在这项任务中让我失败了......
首先通过添加
reject_non_fqdn_recipient
和reject_unknown_recipient_domain
到适当的限制表来拒绝完全无效的邮件。Postfix 还可以
REJECT
通过check_recipient_mx_access
and发送消息check_recipient_access
,但是如何生成适当的查找取决于您可接受的错误级别(拒绝非拼写错误/非拒绝拼写错误)。理想情况下,永远不要将邮件传递到与更受欢迎的收件人域之间的Levensthein 距离较小的收件人域。指定收件人与发音相似的目标之间的音量差异越大,收件人就越不可能是预期的收件人(一个人不会简单地操作拼写差不多的
gmail.com
大型电子邮件服务)。对我来说更简单和有用的是一个
pcre
表,其中包含最常见的错误输入域硬编码,例如:通过从不同时匹配 TLD 更改和排列,我将误报保持在可接受的水平 - 无论如何,所有大接收者听起来都与其他合法企业不太相似。为什么这对我来说就足够了,即使我没有匹配所有的排列?因为 90% 的错别字都在同一组 5% 的可能排列中,所以它捕获了大多数错别字。
如果你有至少几个月的日志,你可能会得到一个很好的开始,只需从连接超时中查找队列超时,手动删除误报并像我上面所做的那样完成列表。