让 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 规则现在应该可以工作了,从而无需在virtual
alias中使用别名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]
。
这里不需要单独的传输图,也不需要调整别名文件。事实上,可以完全禁用本地传输。