如何允许 Postfix 解析带有百分号的收件人地址?

如何允许 Postfix 解析带有百分号的收件人地址?

我正在将一封邮件发送到 Postfix 邮件服务器。

  • 该邮件的地址如下:(它基本上是的 URL 编码版本,应该符合 RFC 的规定。)else%[email protected][email protected]
  • 发件人的邮件服务器被告知要处理此消息:NOQUEUE: reject: RCPT from randostring.outbound.protection.outlook.com[...]: 454 4.7.1 <else%[email protected]>: Relay access denied; from=<[email protected]> to=<else%[email protected]> proto=ESMTP helo=<morerando.outbound.protection.outlook.com>
  • 日志告诉我:generic_checks: name=defer_unauth_destination status=2,我认为这就是这里的问题。
  • 我有一个 MySQL 查找$virtual_alias_domains,在创建上述日志消息期间不会对其进行查询。我认为它可能被缓存了一段时间,但我可能完全错了。

我已尝试过:

  • 禁用/启用allow_percent_hack以查看是否是原因,我被拒绝了。两种设置均无变化。
  • 尝试将其更改recipient_delimiter为“%”,但没有任何改变。

我的问题:如何强制 Postfix 发送这封电子邮件?我真的不需要永久的解决方案,因为我认为这只是一种极端情况。

加分项,如果你能向我解释为什么一开始没有收到这封电子邮件,因为我真的想知道为什么会发生这种情况。:)


编辑#1:

我发现工作消息和非工作消息的标志存在差异。

  • 已传递的消息:Flag: 1024
  • 未送达消息:Flag: 1026

通过查看源代码中的不同位置(标志定义: https://github.com/vdukhovni/postfix/blob/bfff4380a3b6fac2513c73531ee3a79212c08660/postfix/src/global/resolve_clnt.h#L36-L37标志用法: https://github.com/vdukhovni/postfix/blob/ed3f86da7c3e15cf1ec57241c1f6036d82b790da/postfix/src/trivial-rewrite/resolve.c#L467-L468),我发现,只要电子邮件地址中出现另一个@、、!或,它就会设置一个标志,然后在稍后进行处理。%routed

我还没弄清楚的是,我怎样才能

a) 防止发生这种情况

或者

b) 进行一些小改动,将他真正地路由回我的服务器。

答案1

这两个设置的组合可以达到这样的效果:

allow_percent_hack = no
allow_untrusted_routing = yes

但要小心!Postfix 文档警告覆盖的默认设置时可能出现“严重的开放中继漏洞” allow_untrusted_routing

如果没有这些设置,Postfix 会拒绝这种目标地址,因为默认设置allow_percent_hack = yes告诉 Postfix 支持过时的源路由机制,即所谓的“%-hack”,如RFC 1711 第 7 节,而默认设置allow_untrusted_routing = no告诉 Postfix 拒绝来自不受信任的客户端的源路由。

换句话说,Postfix 默认拒绝这种目的地,因为它认为这意味着“通过...传送到”,但由于垃圾邮件发送者,只有受信任的客户端才被允许这样做。else%[email protected]else@2bsomethingdomain.com

相关内容