Exim - удаление сообщений из очереди Exim4

Если случается взлом сайта, почти всегда происходит массовая рассылка писем. В очереди Exim накапливается огромное число сообщений, что приводит к перебоям в работе почты, к попаданию IP сервера в блэклисты почтовых сервисов и т.д.

С лечением сайта в любом случае придётся разбираться отдельно.. А вот как
очистить очередь сообщений?

Все команды выполняются из-под root-пользователя.

# удалить все замороженные сообщения (delete frozen messages)
exiqgrep -zi|xargs exim -Mrm
exim -bp|grep frozen|awk '{print $3}' |xargs exim -Mrm
exipick -zi | xargs exim -Mrm
#
# Удалить вообще все сообщения из очереди EXIM (любой из предложенных вариантов)
exipick -i | xargs exim -Mrm
exim -bp | exiqgrep -i | xargs exim -Mrm
exim -bp | awk '/^ *[0-9]+[mhd]/{print "exim -Mrm " $3}' | bash
#

Полезные команды при работе с Exim

exim -bp # просмотреть очередь сообщений
exim -Mrm {message-id} # удалить из очереди сообщение с конкретным идентификатором
#
# подглядеть, чем в данный момент занят Exim
exiwhat
#
# Посчитать количество сообщений в очереди EXIM
exim -bp | exiqsumm
#
# Посмотреть маршрутизацию по адресу email
exim -bt here@localdomain.tld
exim -bt there@remotehost.tld
#
# Проверить доступность с учётом всех проверок ACL (Access Control List) и фильтров
exim -bh 192.168.192.168
#
# посмотреть все настройки EXIM
exim -bP

Работа с очередью сообщений в Exim


# Посмотреть заголовки (headers) сообщения в очереди
exim -Mvh {message-id}
# Посмотреть содержимое (body) сообщения в очереди
exim -Mvb {message-id}

exim: no message ids given after -Mrm option

При рестарте Exim4 ругается на отсутствие места, однако на диске свободного места более чем достаточно.

Starting MTA:open: No space left on device

Проверка по количеству файлов всё прояснила
df -i

Exim хранит сообщения в каталоге /var/spool/exim4
Подсчёт количества файлов показал, что их около 600к

/var/spool/exim4# find -maxdepth 1 -type d | while read -r dir; do printf "%s:\t" "$dir"; find "$dir" -type f | wc -l; done
.: 578517
./db: 4
./input: 392917
./msglog: 185596

rm * # не справился - bash: /bin/rm: Слишком длинный список аргументов, удаляем при помощи (очистка каталогов input и msglog Exim заняла несколько минут)
find . -type f | xargs rm

Там же, по соседству (db) нашёлся гигабайтный файл retry

bradthemad.org/tech/notes/exim_cheatsheet.php

Метки: ,

Автор будет признателен, если Вы поделитесь ссылкой на статью, которая Вам помогла:
BB-код (для вставки на форум)

html-код (для вставки в ЖЖ, WP, blogger и на страницы сайта)

ссылка (для отправки по почте)

Добавить комментарий