我们的 WHM Linux 服务器上运行着 Kayako 帮助台。
当收到客户的电子邮件时,Kayako 会向邮箱托管在 Rackspace 邮件服务器上的众多员工发送通知。
我注意到 WHM 的 Exim 队列消息查看器中有一个很大的队列 - 当查看 Exim 日志时,我可以看到很多行2012-10-13 20:06:56 1TN72s-0007Cw-1l SMTP error from remote mail server after initial connection: host mx2.emailsrvr.com [173.203.2.32]: 421 Too many concurrent connections from this client.
一封客户电子邮件会导致大约 5 封电子邮件发送到 Rackspace 服务器,平均每小时大约 60 封电子邮件 - 虽然数量不是很多,但足以导致短时间发送的邮件被拒绝。
在这种情况下,如果我们可以限制发送到 rackspace 服务器的连接数,那么我们就可以遵守它们的限制。对于我们的要求,如果我们每 10 秒左右发送 1 封电子邮件,那就没问题了。
发送到所有其他服务器的消息都应以正常速率传输,只有 mx1.emailsrvr.com 和 mx2.emailsrvr.com 应应用此连接限制策略。
这可能吗?
答案1
问题不在于您发送电子邮件的数量或速度,而在于默认情况下 exim 可以打开到同一目标主机的多个并行连接。接收服务器的管理员已决定他们不希望从同一 ip 地址建立多个连接,因为这很容易导致单个发送者在其端占用过多资源。
您需要serialize_hosts
在 exim 配置中使用 smtp 路由器上的选项,因为这将限制 exim 不会为 serialize_hosts 选项中列出的任何主机打开多个连接。如下所示:
begin transports
# This transport is used for delivering messages over SMTP connections.
remote_smtp:
driver = smtp
serialize_hosts = mx1.emailsrvr.com : mx2.emailsrvr.com