Назад | Перейти на главную страницу

Невозможно очистить mqueue-client sendmail

drwxr-xr-x  2 smmsp smmsp  4.0K May  6 23:31 mqueue
drwxrws---  2 smmsp smmsp  29M May  8 10:40 mqueue-client

Как вы видете mqueue-client заполнено 29 мегабайтами неотправленной почты. Вероятно, это связано с ошибкой внутренней функции отправки почты на localhost.

Я много раз пытался очистить очередь, но ни одна из них не увенчалась успехом. В результате процесс использует значительные ресурсы ЦП:

16287 smmsp     20   0 50212  44m 2416 R   85  4.4 965:35.45 sendmail-msp

Я пробовал убить процесс, остановить службу sendmail, удалить содержимое mqueue-client и даже переключиться на пользователя smmsp. Но ни один из них не работал. rm зависает при попытке удалить почту.

Как я могу очистить эту очередь?

Как только я это сделаю, я перенесу все в Postfix.

Как предложил Янне в комментариях, я просмотрел свой syslog и обнаружил, что много писем не отправляет ошибки, из-за чего они откладываются, поэтому накапливаются в mqueue-client папка.

Покопавшись, оказывается, crontab устанавливается на почтовый root при завершении / уведомлениях / предупреждениях / ошибках. Путем выдачи crontab -e и добавление MAILTO="" в начало конфига, почта больше не рассылается, проблема решена!

Сейчас я удаляю около 1,5 миллиона плохих писем от mqueue-client используя этот сценарий Bash:

#!/usr/bin/env bash

cd mqueue-client

deleted=0

for i in `ls`
do
        rm -f $i
        percentage=$(bc <<< "scale=2; ($deleted / 1035435) * 100")
        ((deleted++))

        echo "Deleted $i. Files deleted $deleted. $percentage% complete."
done

Запускаем из / var / spool, используя ./filename

Обновить

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