![421 并发连接 - 从帮助台到 Rackspace 服务器的速率限制](https://linux22.com/image/598410/421%20%E5%B9%B6%E5%8F%91%E8%BF%9E%E6%8E%A5%20-%20%E4%BB%8E%E5%B8%AE%E5%8A%A9%E5%8F%B0%E5%88%B0%20Rackspace%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E9%80%9F%E7%8E%87%E9%99%90%E5%88%B6.png)
我们的 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