Очистить почтовую очередь Postfix бывает нужно когда с сервера произошла массовая рассылка писем и большая часть писем не была отправлена.
Рассылка может не быть отправлена если у него нет получателя, если адреса получателя не существует. Также в очереди будет большое количество писем если адрес сервера при попытке отправки заблокирован провайдером. Часто причиной таких рассылок является взлом сервера или сайта.
Почтовую очередь на сервере можно посмотреть выполнив
mailq
Утилита mailq устанавливается в Debian Ubuntu вместе с пакетом Postfix.
Также можно посчитать общее количество писем в очереди
mailq | wc -l
Как очистить почтовую очередь Postfix
postfix flush
Но чаще используется утилита postsuper. При помощи которой можно удалить все письма или часть из них передав их через pipe-line из вывода grep
Удалить все письма из почтовой очереди:
postsuper -d ALL
Если писем нет утилита mailq вернет сообщение о том что очередь пуста.
Полезной может оказаться и команда, удаляющая все сообщения в статусе deferred
postsuper -d ALL deferred
Иногда возникают ситуации, когда от одного и того же адресата практически постоянно идут сообщения, не представляющие ценности, которые не могут быть отправлены. Они забивают очередь, а удалять их вручную постоянно трудоемко. Соответствующую задачу можно добавить в CRON
bash скрипт для удаления писем из очереди для запуска по CRON
#!/bin/bash -eu mailq | \ grep '[email protected]' | \ stripq | \ postsuper -d - exit 0
При установке скрипта и добавлении его с правами на исполнение в качестве CRON задания с указанной периодичностью будут удалятся из почтовой очереди письма, отправленные на [email protected]. Также будут удаляться письма с этим адресом в поле 'Отправитель'.
Такое также бывает нужно когда письма в очереди продолжают прибывать из-за того что процессы выполнившего рассылку пользователя не завершены.