在 Postfix 中默默地将电子邮件发送到特定的无效域?

在 Postfix 中默默地将电子邮件发送到特定的无效域?

让 Postfix 默默地将电子邮件发送到特定的无效域的最佳方法是什么?

由于目前无法以其他方式处理的原因,我们的邮件服务器收到大量地址为 $userid@BLAH 的电子邮件,其中 @BLAH 始终是该值,而 $userid 由发件人以编程方式生成。发件人邮件服务器可以通过我们的邮件服务器进行中继,但由于 BLAH 不是有效域,因此邮件被延迟,并显示“未找到主机或域名。名称服务错误,名称=BLAH 类型=MX:未找到主机,请重试”。显然 header_checks 不起作用,因为主机名查找后可以很好地处理该问题。

我希望阻止它们进入队列,即使它们在几次重试后最终会过期,而是默默地丢弃它们。(最终我们会解决源问题,但可能不会很快。)

更新
我采纳了 Michael 的建议,因为尽管有别名,但虚拟邮箱配置还是会将邮件投递到邮箱而不是 /dev/null。但是,我已经对另一个域进行了虚拟别名,因此我只需将 BLAH“域”添加到virtual_alias_domains并添加到@BLAH BLAH/etc/postfix/virtual然后进行 postmapped,再加上新/etc/aliases条目,它就能很好地工作。

更新 2
我突然想到,将 BLAH 添加到 后virtual_alias_domains,header_check 规则现在应该可以工作了,从而无需在virtualalias中使用别名aliases,而且测试也证实了这一点。这还有一个额外的好处,那就是电子邮件现在被记录为丢弃邮件,因此我们的 Collectd tail 插件配置中的现有模式会将其选入我们的 SMTP 服务器指标图表中。

答案1

首先,您需要接受不存在的域的邮件,例如通过将其添加到virtual_mailbox_domains

然后您需要创建一个用于virtual_mailbox_maps本地投递的万能地址,例如:

@example.com    throwaway

最后,您需要为 创建一个本地别名,throwaway以便/etc/aliases将邮件发送到/dev/null,例如:

throwaway       /dev/null

根据需要,使用 Postmap 并重新加载 postfix。

答案2

要默默地删除外发电子邮件,您还可以使用传输图文件

transport_maps = hash:/etc/postfix/transport_maps

包含如下条目:

[email protected] discard:
@domain-to-bin.com discard: 

答案3

您可以将 Goodwin 先生和 Hampton 先生的回答合并到一个映射文件中。

[main.cf]
virtual_alias_maps = pcre:/etc/postfix/virtual
... # other settings

[virtual]
/^([^@]+)@invalid\b/  discard:
/^nobounce(\+[^@]+)?@/  discard:

这将丢弃发往[email protected][email protected]以及 的邮件[email protected]

这里不需要单独的传输图,也不需要调整别名文件。事实上,可以完全禁用本地传输。

相关内容