Я только что настроил свой собственный SMTP-сервер Exim для отправки электронных писем
Но я испытываю что-то странное, когда отправляю информационные бюллетени ... Много раз, когда я отправляю через Exim, письма доставляются с задержкой до часа после того, как они были фактически отправлены ??
Допустим, я отправил письмо 09:41
. Письмо отправлено, но получатель получает его по адресу 10:25
.. Но отметка времени на почте все еще 09:41
Это почему??
Когда письма были отправлены, все они были отправлены в одном и том же «поддерживающем» SMTP (TCP) соединении (~ 1000 писем было отправлено за несколько минут)
Тогда многие люди не увидят мою почту, потому что она попадает между старыми и прочитанными сообщениями, потому что временная метка превышает один час, когда почта попадает в почтовый ящик.
2019-10-16 09:41:21 1iKdvt-0002cc-8A <= newsletter@example.com H=smtp.example.com (example.com) [2a01:4f8:140:43a1::2] P=esmtpsa X=TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128 CV=no A=plain_server:example S=6921 id=W7EVMeu2x4beoTgU8bfdbVw3B2xdt2sVtEOQEcQb7E@example.com
2019-10-16 09:41:21 1iKdvt-0002cc-8A no immediate delivery: more than 10 messages received in one connection
Как отправлять электронные письма мгновенно, а не ставить их в очередь?
Ваша проблема не в вашей локальной очереди. Ваша проблема - время установки между двумя запусками очереди в вашей системе.
Exim как MTA не имеет действительно хорошего управления очередью; он просто смотрит каждый раз, когда бежит, чтобы отправить как можно больше, и все.
Посмотрите на параметры, которые Exim использует для запуска в списке процессов, например, если это так. этот:
exim -q30m
это означает, что запуск очереди происходит автоматически каждые полчаса. Некоторые дистрибутивы могут не использовать этот параметр, а вместо этого помещают его в задание cron.
Почта сначала попадет в очередь. Это нормально, это действительно нужно (вы не хотите блокировать весь поток из-за серых списков, например, пока вы не сможете отправить сообщение).
Что вы можете сделать, так это изменить конфигурацию, чтобы очередь считывалась немедленно для этих сообщений. Добавить (или изменить существующее значение):
smtp_accept_queue_per_connection=20
Это поставит в очередь (и отправит как можно скорее) до 20 сообщений на одно соединение. Сейчас предел для вас - 10.