1.6. 地址伪装

我遇到的一个需要地址伪装的例子是,一个应用软件需要频繁在用户之间发送邮件,公司的邮件服务器要求身份认证,而该软件不支持,于是配置了一个内部邮件服务器作为该软件要求的SMTP服务器。但是问题又来了,如果发件人地址属于公司的邮件地址,则邮件回被退回,仍旧报告发件人需要身份验证。于是想到了将发件人地址伪装。

那么何为邮件的地址伪装呢?地址伪装只伪装邮件的发送者部分。凡是转发邮件的发送者地址属于"本地域"(不包含"@域名"只有用户名的地址,或者由 class{w})或者包含在 MASQUERADE_DOMAIN 的定义当中,则将发送者地址伪装为 MASQUERADE_AS 定义的地址。例如:采用如下配置后,user1@domain1.com 发送给 user2@domain1.com 的邮件,被重写为由 user1@domain2.com 发送给 user2@domain1.com;同样根据定义,本地域发出的邮件,也要将发送者的邮件地址写为MASQUERADE_AS 定义的地址,即 @domain2.com。配置如下:


FEATURE(masquerade_envelope)
MASQUERADE_DOMAIN(domain1.com)
MASQUERADE_AS(domain2.com)

FEATURE(masquerade_envelope) 很重要。如果没有定义该 Feature,则只修改邮件 header 部分的 From 地址,而不修改信封地址,邮件回复仍然回复到伪装前的地址。

常用的几个伪装规则:

MASQUERADE_AS(domain2.com)                 1
MASQUERADE_DOMAIN(domain1.com)             2
MASQUERADE_DOMAIN_FILE(`filename')         3
FEATURE(allmasquerade)                     4
FEATURE(masquerade_entire_domain)          5
MASQUERADE_EXCEPTION(`host.domain1.com')   6
EXPOSED_USER(`root majordomo')             7
EXPOSED_USER_FILE(`filename')              8
FEATURE(masquerade_envelope)               9
1

指出将要伪装成的域名

2

除了本地域以外,其它需要被替换的地址

3

除了本地域以外,其它需要被替换的地址,列在文件 filename

4

还伪装message header中的To:地址

5

若选择,则 *.domain1.com 都被转化为 domain2.com,否则只有 domain1.com 被转化为 domain2.com

6

当设置了伪装整个域时,需要排除的个别不要伪装的主机地址

7

个别用户不需要伪装,允许暴露出真实的邮件主机名,则在此设置。如 root, majordomo 用户。

8

同上,但用户名保存在文件中。

9

伪装message envelope部分的return address,当不能交付邮件并退回给发送者时会用到该地址

关于地址伪装的几个重要参考: