Назад | Перейти на главную страницу

421 одновременных подключений - ограничение скорости от службы поддержки до сервера стойки

На нашем сервере WHM Linux работает служба поддержки Kayako.

Когда от клиентов приходят электронные письма, Kayako рассылает уведомления ряду сотрудников, чьи почтовые ящики размещены на почтовых серверах Rackspace.

Я заметил большую очередь в программе просмотра сообщений Exim в очереди WHM - при просмотре журналов 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 электронным письмам на серверы в стойке, возможно, 60 электронных писем за 1 час в среднем - не огромное количество, но достаточно, чтобы сообщения были отклонены при отправке короткими пакетами.

В этом случае в идеале, если мы можем ограничить количество подключений, отправляемых на сервер стойки, мы можем соблюдать их ограничение. Для наших требований, если мы будем отправлять 1 электронное письмо каждые 10 секунд или около того, это будет нормально.

Сообщения на все остальные серверы должны проходить обычную скорость, только mx1.emailsrvr.com и mx2.emailsrvr.com должны иметь эту политику ограничения подключений.

Это возможно?

Проблема не в том, сколько или как быстро вы отправляете электронные письма, а в том, что exim по умолчанию может открывать несколько параллельных соединений с одним и тем же хостом назначения. Администраторы принимающих серверов решили, что им не нужны множественные соединения с одного и того же IP-адреса, поскольку это может легко привести к тому, что один отправитель будет использовать слишком много ресурсов на своей стороне.

Вы хотите использовать serialize_hosts параметр на маршрутизаторе smtp в вашей конфигурации exim, так как это ограничит 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