Postfix 的地址替换在去年就开始做了。当时在 CU 有个简单的讨论帖。不过当时的做法并不是完善的做法。
masquerade_domains = abc.com
local_header_rewrite_clients = permit_mynetworks
通过一些实验,发现 user@test 会被转变为 user@abc.com ,但是 user@test.test 则会被 postfix 认定为合法域名,所以不做任何改变。
Postfix Address Rewriting 一文详细讲解了它所定义的“不标准”的域名地址。
为了解决将 user@test.test 转变为 user@abc.com 只能采用一些变通的方法。通常,我见到最多的地址格式是:user@hostname.localhost,那么通过检测 localhost 来进行正则替换。
一开始,我在尝试通过 header_check 方式来做。检测 From 字段再进行正则匹配。但是后来老板说这种做法属于 “外围” ,还是要想办法找到其内部的方式。
转了一圈之后只能通过 canonical 来做一些操作, canonical 在很多文档中都是通过 hash 的,实际上 regexp 也是可以的。
canonical_maps = regexp:/etc/postfix/canonical
接着在 canonical 中添加:
/([^@]*)\@(.*)\.localdomain/ $1@abc.com
这样就可以将 user@host.localdomain 转变为 user@abc.com。
No related posts.
© 2012 Water is….. | Theme by Eleven Themes
Leave a Comment