Очистить почтовую очередь Postfix


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

Рассылка может не быть отправлена если у него нет получателя, если адреса получателя не существует. Также в очереди будет большое количество писем если адрес сервера при попытке отправки заблокирован провайдером. Часто причиной таких рассылок является взлом сервера или сайта.



Почтовую очередь на сервере можно посмотреть выполнив

mailq


Утилита mailq устанавливается в Debian Ubuntu вместе с пакетом Postfix.



Также можно посчитать общее количество писем в очереди

mailq | wc -l



Как очистить почтовую очередь Postfix


postfix flush

Но чаще используется утилита postsuper. При помощи которой можно удалить все письма или часть из них передав их через pipe-line из вывода grep



Удалить все письма из почтовой очереди:

postsuper -d ALL



Если писем нет утилита mailq вернет сообщение о том что очередь пуста.


Очистить почтовую очередь Postfix


Полезной может оказаться и команда, удаляющая все сообщения в статусе deferred

postsuper -d ALL deferred



Иногда возникают ситуации, когда от одного и того же адресата практически постоянно идут сообщения, не представляющие ценности, которые не могут быть отправлены. Они забивают очередь, а удалять их вручную постоянно трудоемко. Соответствующую задачу можно добавить в CRON



 bash скрипт для удаления писем из очереди для запуска по CRON


#!/bin/bash -eu

mailq | \
 grep '[email protected]' | \
 stripq | \
 postsuper -d -

exit 0



При установке скрипта и добавлении его с правами на исполнение в качестве CRON задания с указанной периодичностью будут удалятся из почтовой очереди письма, отправленные на [email protected]. Также будут удаляться письма с этим адресом в поле 'Отправитель'.



Такое также бывает нужно когда письма в очереди продолжают прибывать из-за того что процессы выполнившего рассылку пользователя не завершены.

Сказать спасибо