Верстакфорум практиков
рекламаiprazon: приватные серверные адреса IPv4 и SOCKS5, безлимитный трафик, бесплатный тест до 2 часов
ФорумПочта и рассылки

Очередь писем и ограничения на стороне сервера

Влад Терентьев
Влад Терентьев
Участник
сообщений 745
с авг
15 марта, 14:02первое сообщение

Раскидываю уведомления по своей базе, порядка четырёх тысяч адресов за прогон. Отдаю всё разом в локальный postfix, дальше он сам. Первые полчаса идёт бодро, потом очередь распухает и почти всё висит в deferred.

В логе повторяется одно и то же:

status=deferred (host mx.example.net said: 421 4.7.0 too many connections from your host)

Очередь не рассасывается, письма уходят по несколько штук в минуту. Сервер отправки свой, канал свободен, соседи по машине ничего не жуют. Куда копать?

queue_master
queue_master
Участник
сообщений 410
с ноя
22 августа, 17:19#2

Классика при веерной отправке. Ты открываешь к одному mx столько соединений, сколько разрешил сам себе, а принимающая сторона держит потолок штуки в две-три.

Смотри smtp_destination_concurrency_limit. По умолчанию он двадцать, для крупных mx это много.

очередь длиннее памяти
Влад Терентьев
Влад Терентьев
Участник
сообщений 745
с авг
1 января, 08:36#3
queue_master: принимающая сторона держит потолок штуки в две-три

Стоит двадцать, да. То есть резать вниз, до двух?

dev_null_ru
dev_null_ru
Ветеран
сообщений 2560
с фев
8 июня, 11:53#4

Резать вниз надо с пониманием, какой именно потолок ты пробиваешь. Их два, и они между собой независимы.

Первый это число одновременных соединений к одному узлу. Второй это темп: сколько писем в час принимающая сторона согласна взять с одного адреса отправки. Ответ 421 обычно про первый. Про второй чаще прилетает 4.7.1 со словом rate в тексте.

В postfix оба крутятся отдельно, и лучше не общими настройками, через свой транспорт:

# master.cf
massa     unix  -       -       n       -       -       smtp
    -o syslog_name=postfix-massa
    -o smtp_destination_concurrency_limit=2
    -o smtp_destination_rate_delay=1s
    -o smtp_extra_recipient_limit=10
# /etc/postfix/transport
mx.example.net   massa:

rate_delay включает мягкий режим: соединение держится одно, между письмами пауза. На крупных приёмниках это идёт ровнее, чем попытка задавить всё в два потока без пауз вообще.

Полина Ждан
Полина Ждан
Новичок
сообщений 120
с мая, второй сезон
15 ноября, 14:10#5

а как понять, какой из двух лимитов сработал? в логе одни цифры

queue_master
queue_master
Участник
сообщений 410
с ноя
22 апреля, 17:27#6

По тексту ответа. Приёмники почти всегда пишут словами: connections, rate, quota. Первое про одновременные, второе про темп, третье про суточный объём.

Полина Ждан, выдерни из лога куски после said: и посмотри, что там повторяется чаще.

очередь длиннее памяти
Борис Лапин
Борис Лапин
Знаток
сообщений 1960
с мар
1 сентября, 08:44#7

Заодно посмотри, во что упирается сама очередь. Часто половина deferred висит на другом узле, и держит тебя именно он.

кто держит очередь
кто держит очередь

qshape сразу показывает расклад по узлам. Если один даёт три четверти, крутить общий лимит смысла мало, правь адресно через транспорт.

dev_null_ru
dev_null_ru
Ветеран
сообщений 2560
с фев
8 февраля, 11:01#8

Ещё момент про свежий адрес отправки. Новый узел никто не знает, и первые дни приёмники держат его на коротком поводке. Темп поднимают постепенно, от пары сотен писем в сутки к нужному объёму за неделю или две.

Влад Терентьев
Влад Терентьев
Участник
сообщений 745
с авг
15 июля, 14:18#9

Собрал транспорт под крупные mx: два соединения и пауза в секунду. Очередь ушла за ночь, в deferred сейчас одиннадцать штук, и те по опечаткам в адресах.

qshape записал в закладки, без него гадал бы дальше. Спасибо.