我正在将邮件发送到 Postfix 邮件服务器。
- 该邮件的地址如下
else%[email protected]
:(它基本上是 的 url 编码版本[email protected]
,应该是 RFC 有效的。) - 发件人的邮件服务器被告知要处理此消息:
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) 一起破解一些东西,以将他“返回”到我的服务器。
这两个设置的组合可以解决问题:
但小心点!Postfix 文档警告在覆盖
allow_untrusted_routing
.如果没有这些设置,Postfix 拒绝这种目标地址,因为默认设置
allow_percent_hack = yes
告诉 Postfix 支持被称为“所谓的 %-hack”的过时源路由机制,如RFC 1711 的第 7 节所述,而默认设置allow_untrusted_routing = no
告诉用于拒绝来自不受信任客户端的源路由的后缀。换句话说,Postfix 默认拒绝这种目的地,因为它认为意味着“通过方式
else%[email protected]
传递”,但由于垃圾邮件发送者,只允许受信任的客户端这样做。else@2bsomething
domain.com