有没有什么方法可以防止在 Postfix 服务器上进行本地传送?
理想情况下,我想避免本地传送到某些域,因为这个 postfix 服务器是 google apps 的备份服务器。
答案1
为了让 postfix 知道不要在本地为某个域传递邮件,您需要对 main.cf 中的几个配置变量(如果与您的设置相关)进行更改 - 从官方 postfix 文档中,您需要确保从以下变量中删除所有您不想被视为本地的域:
- 我的目的地:这通常包含本地交付的域名列表
- 本地收件人地图:包含本地收件人地址的查找表
- 本地运输:本地邮件的默认传输方式 - 如果需要则更改inet_接口或者代理接口匹配邮件的目的地
- 虚拟邮箱域名:与...一样我的目的地,如果你正在使用它
除此之外,我还建议您:
- 使用后置配置在命令行中快速访问 Postfix 配置变量中的当前值(人postconf了解更多详情)
- 访问postconf/main.cf官方 Postfix 网站上的信息页面全部细节
是的,后缀能很复杂 - 但这正是其可配置特性的美妙之处。
希望这可以帮助!
答案2
我在 Plesk 的上下文中搜索了这个问题并找到了这个问题和答案。似乎在某些配置下(可能取决于您的托管服务提供商),Plesk 无论如何都喜欢假设 postfix 会使用本地交付。非常有帮助!
然后我找到并遵循了这篇文章,它帮助我解决了这个问题: http://www.rcneil.com/blog/postfix-local-loop-in-plesk/
相关部分是:
找到 PostFix 的“main.cf”配置文件,对于 CentOS 6,该文件位于 /etc/postfix/main.cf ...
然后,通过文本编辑器或在 Linux shell 中打开该文件,并编写以下行:
virtual_mailbox_domains = $virtual_mailbox_maps, hash:/var/spool/postfix/plesk/virtual_domains virtual_alias_maps = $virtual_maps, hash:/var/spool/postfix/plesk/virtual virtual_mailbox_maps = hash:/var/spool/postfix/plesk/vmailbox
像这样注释掉:
#virtual_mailbox_domains = $virtual_mailbox_maps, hash:/var/spool/postfix/plesk/virtual_domains #virtual_alias_maps = $virtual_maps, hash:/var/spool/postfix/plesk/virtual` #virtual_mailbox_maps = hash:/var/spool/postfix/plesk/vmailbox`
然后,重新启动 Postfix 服务... 瞧!您的电子邮件地址现在应该可以接收这些电子邮件了。
只是想在这里记录一下,以防有人发现它有助于确切了解对我有用的设置。
答案3
我不确定这是否是理想的解决方案,但我有一个带有单个域的盒子,这对我来说很有效。我使用 Google Apps 收发电子邮件,并且我们安装了 postfix 来发送事务性电子邮件,这些电子邮件最终通过 sendgrid 发送给我们网站的用户。
我发现 postfix 用数千条消息填满了 /Maildir,并占用了我的系统的磁盘空间。
我在 etc/postfix/main.cnf 中更改了以下内容:
mydestination = ip-{IP-ADDRESS-HERE}.ec2.internal, localhost.ec2.internal, , localhost
到:
mydestination = localhost
其中 {IP-ADDRESS-HERE} 是您的 IP,例如 10-100-10-10
重新启动 postfix 后,我进行了测试,消息仍然可以成功发送到 sendgrid 并通过 postfix 发出,但现在我的 maildir 不再充满不必要的消息。