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, который был настроен на очистку очереди, но в результате увеличилось количество невыполненных работ. Надеюсь, теперь это отключено, все должно очиститься.