![是否可以将 Postfix 中的外发电子邮件限制到一个特定域?](https://linux22.com/image/574506/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%B0%86%20Postfix%20%E4%B8%AD%E7%9A%84%E5%A4%96%E5%8F%91%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E9%99%90%E5%88%B6%E5%88%B0%E4%B8%80%E4%B8%AA%E7%89%B9%E5%AE%9A%E5%9F%9F%EF%BC%9F.png)
我们的生产服务器需要定期向客户群发邮件。这很完美。问题是,当我们测试新功能时,我们的“暂存”环境也会向客户发送电子邮件,并且忘记在我们众多的数据库和表中覆盖实际的客户电子邮件。
我想到了一个解决方案:我是否可以配置 Postfix,使得当我们在暂存/测试服务器上时,所有外发电子邮件都被阻止,除非它们发往我们自己的域。
我搜索了一下,找到了如何拒绝特定域名的方法,但还没有找到除了一个域名之外拒绝所有域名的方法。任何帮助都将不胜感激。
答案1
您可以在 main.cf 中添加传输图:
transport_maps = texthash:/etc/postfix/transport
然后使用您最喜欢的编辑器编辑 /etc/postfix/transport 并添加以下内容:
example.com smtp:
* error:only mail to *@example.com will be delivered
这将退回除 *@example.com 之外的所有收件人的邮件。如果您需要能够动态更改 transport_map,请使用 hash 而不是 texthash,但一旦您更改了文件,就必须在文件上使用 postmap 来更新相应的 .db 文件,这样 postfix 才能注意到它已更改。如果您不想退回其他邮件,请使用以下命令:
example.com smtp:
* discard:
答案2
如果 example.com 是你的内部域,你需要编辑传输文件以仅包含
例如.com:
并不是
example.com smtp:
每http://www.postfix.org/transport.5.html
否则,通过这一改变,这对我来说效果很好。谢谢 lsmooth!
答案3
这看起来不正确。我使用此设置来限制传出域。
main.cf:transport_maps=hash:/etc/postfix/transport
并且传输包含以下几行:
domain1.foo smtp:ip.address.of.relay.host
domain2.foo smtp:ip.address.of.relay.host
* discard:
然后只需 postmap /etc/postfix/transport 并重新加载 postfix。这对我来说很好。
埃罗