Очистить почтовую очередь, удаление писем по cron

Очистка почтовой очереди является самой частой задачей при администрировании любого почтового сервера, большие очереди скапливаются при попытках отправки сообщений на несуществующие адреса — следствием является возрастание нагрузки на серверную инфраструктуру.

 

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

mailq

 

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

mailq | wc -l

 

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

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

postfix flush

 

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

postsuper -d ALL

 

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

postsuper -d ALL deferred

 

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

 

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

 

#!/bin/bash -eu

mailq-stat | \
grep 'info@example.com' | \
stripq | \
sudo postsuper -d —

exit 0

 

При установке скрипта и добавлении его с правами на исполнение в качестве CRON задания с указанной периодичностью будут письма, отправленные на info@example.com или с этого адреса будут удалятся из почтовой очереди