2

У меня довольно стандартная настройка exim для входящей и исходящей почты. Недавно наша команда разработчиков создала приложение PHP, которое позволяет нам отправлять массовые письма нашим клиентам. Приложение PHP использует стандартные библиотеки PEAR для инициирования SMTP-подключения к localhost (приложение и почтовый сервер находятся в одном окне). Идея заключается в том, что приложение будет отправлять примерно 10 000 электронных писем за очень короткий период времени (около 60 секунд), который затем Exim будет хранить в своей очереди для доставки.

Проблема возникает, когда после примерно 50 писем exim прекращает принимать почту и регистрирует следующую ошибку в файле exim_main.log:

SMTP command timeout on connection from localhost [127.0.0.1]

Может быть, это потому, что exim немедленно начинает доставлять почту, а затем прекращает принимать новые входящие соединения? Я думал, что увеличение пределов SMTP может быть проблемой здесь, но даже после установки новых значений в файле exim.conf к следующему, я все еще получаю ту же проблему:

queue_run_max = 5000
smtp_accept_max = 5000
smtp_accept_queue = 5000

Это вызывает два вопроса:

  1. Как мне решить это?
  2. Каков наилучший способ настройки exim для приема огромного количества почты в очередь за очень короткий промежуток времени, но затем постепенной доставки, когда все в очереди? Я видел, как некоторые люди запускали отдельные демоны Exim для входящей и исходящей почты; это хорошее решение?

1 ответ1

4

По умолчанию exim пытается доставить письмо сразу, как только оно прибудет, чтобы попытаться избежать его постановки в очередь.

Если он не может доставить его немедленно, он попадает в каталог спула.

По умолчанию все эти файлы сообщений хранятся в одном каталоге, называемом input, внутри общего каталога очереди exim. Некоторые операционные системы не очень хорошо работают, если количество файлов в каталоге становится большим; для повышения производительности в таких случаях можно использовать параметр split_spool_directory . Это приводит к тому, что exim разделяет входные файлы на 62 подкаталога, имена которых состоят из отдельных букв или цифр. Когда это сделано, очередь обрабатывается по одному подкаталогу за раз вместо всех сразу, что может улучшить общую производительность, даже если в каждом каталоге недостаточно файлов, чтобы повлиять на производительность файловой системы.

Существуют варианты, которые контролируют, будет ли exim пытаться доставить его немедленно или нет:

  • queue_only_load - очередь входящих, если нагрузка высокая
  • queue_only_load_latch - не переоценивать нагрузку для каждого сообщения
  • queue_run_max - максимальное количество одновременных участников

и, самое главное:

  • queue_only - немедленной доставки нет

Все эти настройки подробно описаны в Руководстве по спецификации exim.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .