需要 Postfix 规范映射方面的帮助

需要 Postfix 规范映射方面的帮助

我很难让该canonical_maps功能正常工作,以修复旧客户端的一些错误地址。以下是目前的情况以及我迄今为止尝试过的方法:

旧客户端 (oldhost.legacy.org) 在通过 SMTP 发送信封或邮件时不会将其域 (legacy.org) 附加到邮件地址。因此,如果用户输入诸如 之类的地址guser@oldhost,则它会以 SMTP 形式发出,user@oldhost而不是[email protected]

带后缀 ( ) 的机器与旧机器newhost.standard.org拥有不同的域 ( standard.org)。它还充当oldhost.legacy.org域的 MX 和中继。

当来自旧客户端的消息到达带有诸如 guser@oldhost(missing .legacy.org) 之类的地址的 postfix 计算机时,我想将其重写为 read [email protected]。据我了解,canonical_maps 函数就是为此目的而设计的。

/etc/postfix/canonical.pcre有:

/^(.*)@oldhost$/    [email protected]

如果我使用以下方式测试: postmap –qguser@oldhostpcre:/etc/postfix/canonical.pcre

答案是: [email protected]完美。

/etc/postfix/main.cf

canonical_maps = pcre:/etc/postfix/canonical.pcre

然后,在旧主机上,我发送一条消息,例如:

To:  [email protected]
Cc: user@oldhost

邮件到达 Postfix 机器,但 CC 行未被重写。

canonical_maps 的文档说,为了重写标头,客户端需要匹配,local_header_rewrite_clients否则必须remote_header_rewrite_domain为非空。我尝试了这两种方法,但都没有产生我需要的输出。

如果我设置local_header_rewrite_clients = static:allpermit_mynetworks或其他会导致与旧客户端匹配的选项,则该append_dot_domain选项将接管并将地址重写为[email protected]。规范表显然被忽略了。

如果我保留local_header_rewrite_clients其默认值(与旧客户端不匹配)并打开remote_header_rewrite_domain = invalid.domain,则地址将被重写为[email protected],并且再次,规范表显然被忽略。

因此,规范表的文档是正确的,即只有与local_header_rewrite_clients客户端匹配或remote_header_rewrite_domain设置了时才会发生重写。重写确实在发生。但发生的重写完全忽略了规范表。

那么,我如何让后缀仅将append_dot_domainappend_at_myorigin应用于其自身,并将规范表应用于其他客户端,或者至少首先应用规范表?

相关内容