如何配置 postfix 以丢弃发往一个域的所有电子邮件并中继所有其他电子邮件?

如何配置 postfix 以丢弃发往一个域的所有电子邮件并中继所有其他电子邮件?

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

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

作为一名相对较新的 Postfix 用户,最简单的设置方法是什么?

答案1

好吧,我似乎通过一些搜索和测试找到了答案。以下是我必须做的:

  • 在 /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
    
  • 在 /etc/postfix/transport 中:

    localhost discard: 
    localhost.localdomain discard:
    * relay:[smtp.relayhost.com]:587
    

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

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

相关内容