我在向某些域/服务器(如 Yahoo 或小型网络提供商)发送新闻通讯时遇到问题。这就像我向他们的服务器发送垃圾邮件,然后他们告诉我过一会儿就停止。我确实收到了一堆电子邮件,但随后一段时间(大约一个小时)我都会看到类似下面的消息,直到重新打开连接:
状态=延期(暂时中止投递:与 mx-eu.mail.am0.yahoodns.net[188.125.69.79] 失去连接
我不想向他们的服务器发送大量连接,因此尝试了各种不同的参数来调整 Postfix 以满足我的需求。到目前为止,我尝试过的方法如下:
- 减少全局并发连接数
- 全局插入 1 秒延迟
- 将流程数量减少到 2 个
- 针对相关域名制定了具体政策(来源:http://steam.io/2013/04/01/postfix-rate-limiting)
你们当中有人有这方面的经验吗?是否可以为这些特定的收件人服务器(例如 Yahoo)创建策略?
配置示例将受到赞赏。
答案1
Postfix 并不是特别激进。它试图根据 SMTP 和各种最佳实践来传递邮件。
这是雅虎的错误。
雅虎极低限制同一发件人发送的邮件同时接收人数。我发现这种情况发生在一个只有 500 名成员的小型列表中,其中只有几十个 Yahoo 地址。
此特定列表的内容极其具有时效性;如果未在两分钟内收到、阅读和采取行动,则该消息将失去其大部分价值。
我的“解决方案”是警告 Yahoo Mail 用户,Yahoo 可能会延迟接收他们的邮件,他们可能希望考虑其他提供商。这对您来说可能有用,也可能没用。由于 Postfix 会很快重试剩余的收件人,因此这通常不是一个严重的问题。
其他一些可能的解决方案包括:
VERP。这使得每封邮件都是独一无二的,而且恰好可以绕过雅虎极低的限制,但它会减慢交付速度并大幅增加带宽使用率,因为必须为每个收件人重复传输邮件正文。您可能需要运行测试并确定交付时间的差异是否可以接受。对于像我上面提到的列表这样对时间敏感的东西,VERP 是不可能的。
更改 Postfix
smtp_destination_recipient_limit
设置。默认情况下,该值是 50,这意味着 Postfix 每次连接到另一个 SMTP 服务器时,将尝试向最多 50 个收件人发送邮件。由于 Yahoo 似乎每次只接受大约 10 个收件人,因此将其更改为 10 会有所帮助。但是,这会影响向全部目的地,即使那些不一定需要以这种方式人为限制的目的地,也会减慢所有邮件的投递速度。而且由于 50 似乎是行业范围内的最佳实践,我仍然不建议这样做。
最后,您链接的文章中列出的配置似乎没问题。您可能在实施过程中遗漏了某些内容,或者 Yahoo 决定真的不喜欢你。