Во время почтовых рассылок иногда можно столкнуться с ситуацией, когда почтовые сервисы начнут накладывать санкции на ваши отправки. Это могут быть как временные лимиты, так и более серьёзные ограничения до 72 часов. В частности, при массовой рассылке на почтовые ящики вида @yahoo.com, @yahoo.de и так далее — чаще всего мы сможете встретить в mail логах сообщения вида:
host mx-aol.mail.gm0.yahoodns.net[67.195.228.86] said: 421 4.7.0 [TSS04] Messages from x.x.x.x temporarily deferred due to user complaints — 4.16.55.1; see https://help.yahoo.com/kb/postmaster/SLN3434.html (in reply to MAIL FROM command)
Так же отправки будут сопровождаться сообщения о том что соединение было потеряно:
delivery temporarily suspended: lost connection with mta7.am0.yahoodns.net[67.195.204.77] while sending RCPT TO
Всё это говорит нам о том, что Yahoo решил немного охладить нам postfix. По информации от самого Yahoo — в ближайшие 4 часа после получения подобного сообщения — их почтовые сервера не будут принимать наши письма. В этот момент обычно пора задуматься о выставлении лимитов отправок в сторону Yahoo. Либо у нас есть выбор проигнорировать эти санкции, и тогда с большей долей вероятности — вы получите бан уже 72 часа.
Итак, если вы решили идти по первому пути, то приступим к настройке лимитов:
создаём файл transport в папке postfix (если такого файла ещё нет):
nano /etc/postfix/transport
добавляем в него следующее содержимое:
#Yahoo zones
yahoo.ae yahoo:
yahoo.at yahoo:
yahoo.be yahoo:
yahoo.ca yahoo:
yahoo.ch yahoo:
yahoo.cn yahoo:
yahoo.co.il yahoo:
yahoo.co.in yahoo:
yahoo.co.jp yahoo:
yahoo.co.kr yahoo:
yahoo.co.nz yahoo:
yahoo.co.th yahoo:
yahoo.co.uk yahoo:
yahoo.co.za yahoo:
yahoo.com.ar yahoo:
yahoo.com yahoo:
yahoo.com.au yahoo:
yahoo.com.br yahoo:
yahoo.com.cn yahoo:
yahoo.com.hk yahoo:
yahoo.com.mx yahoo:
yahoo.com.my yahoo:
yahoo.com.ph yahoo:
yahoo.com.sg yahoo:
yahoo.com.tr yahoo:
yahoo.com.tw yahoo:
yahoo.com.vn yahoo:
yahoo.cz yahoo:
yahoo.de yahoo:
yahoo.dk yahoo:
yahoo.en yahoo:
yahoo.es yahoo:
yahoo.fi yahoo:
yahoo.fr yahoo:
yahoo.gr yahoo:
yahoo.ie yahoo:
yahoo.it yahoo:
yahoo.nl yahoo:
yahoo.no yahoo:
yahoo.pl yahoo:
yahoo.pt yahoo:
yahoo.ro yahoo:
yahoo.ru yahoo:
yahoo.se yahoo:
yahoo.com.au yahoo:
yahoo.com.br yahoo:
yahoo.com.cn yahoo:
yahoo.com.hk yahoo:
yahoo.com.mx yahoo:
yahoo.com.my yahoo:
yahoo.com.ph yahoo:
yahoo.com.sg yahoo:
yahoo.com.tr yahoo:
yahoo.com.tw yahoo:
yahoo.com.vn yahoo:
yahoo.cz yahoo:
yahoo.de yahoo:
yahoo.dk yahoo:
yahoo.en yahoo:
yahoo.es yahoo:
yahoo.fi yahoo:
yahoo.fr yahoo:
yahoo.gr yahoo:
yahoo.ie yahoo:
yahoo.it yahoo:
yahoo.nl yahoo:
yahoo.no yahoo:
yahoo.pl yahoo:
yahoo.pt yahoo:
yahoo.ro yahoo:
yahoo.ru yahoo:
yahoo.se yahoo:
сохранив файл, нам необходимо сгенерировать файл transport.db, для этого выполним команду:
postmap /etc/postfix/transport
теперь создадим файл с регулярным выражением, которое будет фильтровать почтовые ящики, которые относятся к сервису Yahoo:
nano /etc/postfix/transport.regexp
добавим следующее содержимое:
#yahoo emails
/yahoo(.[a-z]{2,3}){1,2}$/ yahoo:
Теперь отредактируем файл master.cf, выполнив команду:
nano /etc/postfix/master.cf
добавим в него следующее содержимое:
yahoo unix - - n - - smtp -o syslog_name=postfix-yahoo
Далее редактируем main.cf, для этого используем команду:
nano /etc/postfix/main.cf
в самый конец добавим содержимое:
transport_maps = hash:/etc/postfix/transport, regexp:/etc/postfix/transport.regexp
yahoo_initial_destination_concurrency = 1
yahoo_destination_concurrency_limit = 4
yahoo_destination_recipient_limit = 2
yahoo_destination_rate_delay = 1s
сохраняем файл и перезапускаем postfix командой:
service postfix restart
Всё готово, теперь наш почтовый сервер будет отправлять не более 4 сообщений в рамках одного коннекта к Yahoo. В целом скорость отправки конкретно на ящики Yahoo снизится, но с большей долей вероятности мы перестанем получать блокировки, тем самым обеспечим доставку писем в кратчайшее время и точно в срок.
0 Comments