如何配置 postfix 将所有电子邮件丢弃到一个域并中继所有其他电子邮件?

Bru*_*e P 9 postfix

我需要在开发/测试环境中设置 postfix 来过滤电子邮件,这样我们就不会向客户发送垃圾邮件。在我们的测试环境中,我们清理了所有用户数据,以便将电子邮件地址更改为 @localhost,尽管稍后可能会出于测试目的将某些地址更改为有效的电子邮件地址。我们通过第三方提供商转发所有电子邮件以进行交付,因此我想做的是将 postfix 设置为:

  1. 扔掉任何发送到本地主机的电子邮件
  2. 将所有剩余的电子邮件转发给我们的第三方提供商。

作为 postfix 的新手,设置它的最简单方法是什么?

Bru*_*e P 8

好吧,我似乎已经通过一些搜索和测试设法解决了这个问题。这是我必须做的:

  • 在 /etc/postfix/main.cf 中:

    transport_maps = hash:/etc/postfix/transport
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = static:<relayhost username>:<relayhost password>
    smtp_sasl_security_options = noanonymous
    smtp_tls_security_level = may
    start_tls = yes
    
    Run Code Online (Sandbox Code Playgroud)
  • 在 /etc/postfix/transport 中:

    localhost discard: 
    localhost.localdomain discard:
    * relay:[smtp.relayhost.com]:587
    
    Run Code Online (Sandbox Code Playgroud)

中继显然也绕过了 alias_maps 指令,所以为了让别名继续工作,我必须注释掉 alias_maps 和 alias_database,并用 virtual_alias_maps 替换它们。virutal_alias_map 的格式与 alias_maps 相同,因此很容易进行更改。

完成这些更改后,只需重新启动 postfix 并运行“postmap /etc/postfix/transport”来构建 transport.db。现在所有寻址到@localhost 或@localhost.localdomain 的内容都被丢弃,而其他所有内容都通过指定的主机进行中继。