我正处于陡峭的电子邮件处理学习曲线的早期阶段,请耐心等待:-)。
我有一个带有 postfix 和 dovecot 的设置。我正尝试将我的电子邮件服务器(域example.com
)从我家迁移到在其他地方运行的实例(test.example.com
)。我的想法是,当一切似乎正常时,我将更改 DNS 并替换test.example.com
为example.com
)。我怀疑我遇到的问题可能是过渡性的,但希望得到任何验证。
在我的旧服务器上,我有实际的 unix 帐户,并且在 /etc/aliases 中有以下内容:
a: \a, b
这样,除了本地副本之外,发送的电子邮件[email protected]
还会被转发。[email protected]
在我的新服务器(当前test.example.com
)上,我有虚拟用户,并且包含[email protected], [email protected]
$virtual_alias_maps
@test.example.com @example.com
[email protected] [email protected], [email protected]
其中,发送的电子邮件[email protected]
将按预期送达,而不会出现循环。
然后,我以以下方式将 spamassassin 添加到 main.cf,它似乎可以正常工作,但有一个例外。
smtp inet n - - - - smtpd
-o content_filter=spamassassin
spamassassin unix - n n - - pipe
user=debian-spamd argv=/usr/bin/spamc -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}
现在,当我发送电子邮件到时[email protected]
,我会在邮箱中收到一份副本
[email protected]
,二副本送至邮箱[email protected]
。
看起来扩张发生了两次,这让我很惊讶。
我的问题是:
- 为什么扩张会发生两次?
- 当我更改 DNS 并从我的配置中删除时,
test.
这个问题会消失吗(也就是说,这是一个过渡问题)? - 如果问题 2 的答案是否定的,您有什么建议吗?
答案1
以下是电子邮件之旅跨 Postfix 守护进程在你放 spamassassin
东西之前
Email for [email protected] -> aliased to [email protected] and [email protected] -> final destination
放 spamassassin
东西之后,基本上你放内容过滤器在 Postfix 堆栈中,因此电子邮件旅程变成
Email for [email protected] -> aliased to [email protected] and [email protected] -> spamassassin
来自 spamassassin 的 postfix 被注入两封电子邮件
Email for [email protected] -> aliased to [email protected] and [email protected] -> final destination
Email for [email protected] -> final destination
这就解释了为什么你有两封电子邮件[电子邮件保护]一个[电子邮件保护]
解决方案
Postfix有参数receive_override_options
用no_address_mappings
来处理这个问题。将其放在内容过滤器之前,您就不会收到重复的电子邮件。
smtp inet n - - - - smtpd
-o content_filter=spamassassin
-o receive_override_options=no_address_mappings
spamassassin unix - n n - - pipe
user=debian-spamd argv=/usr/bin/spamc -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}