如何停止我在过渡 postfix-spamassassin-dovecot 设置中引入的循环

如何停止我在过渡 postfix-spamassassin-dovecot 设置中引入的循环

我正处于陡峭的电子邮件处理学习曲线的早期阶段,请耐心等待:-)。

我有一个带有 postfix 和 dovecot 的设置。我正尝试将我的电子邮件服务器(域example.com)从我家迁移到在其他地方运行的实例(test.example.com)。我的想法是,当一切似乎正常时,我将更改 DNS 并替换test.example.comexample.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]

看起来扩张发生了两次,这让我很惊讶。

我的问题是:

  1. 为什么扩张会发生两次?
  2. 当我更改 DNS 并从我的配置中删除时,test.这个问题会消失吗(也就是说,这是一个过渡问题)?
  3. 如果问题 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_optionsno_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}

相关内容