Как удалить письмо из очереди писем? Или как удалить плохие письма, например, спамовые, из очереди писем?
Все зависит от почтовой программы. Просмотреть список писем (очередь) можно командой
Postfix
Письма, которые почтовая программа postfix не доставила (зависит от ваших настроек, количества отправляемых писем в час), можно быстро просмотреть так:
1 | lynx -dump /var/spool/postfix/deferred/X/XYYYYYY |
Идентификатор письма XYYYYYY можно увидеть в выводе mailq. Соответственно, первая цифра или буква является именем подкаталога в каталоге deferred.
Для перекодировки письма в другую кодировку, к вышеуказанной команде можно добавить через пайп (|):
1 | iconv -f utf-8 -t koi8-r -c |
Перезапустить всю очередь (обычно используется при внесении изменений в конфиг, сообщения начнут обрабатываться заново):
Если в очереди нет полезных писем, можно удалить всю очередь postfix:
Чтобы удалить конкретное письмо:
1 | postsuper -d ИДЕНТИФИКАТОР_ПИСЬМА |
Понятное дело, что, если в очереди сотни или тысячи плохих писем, то на таком удалении далеко не уедешь. Поэтому можно просто найти письма со спамом и удалить:
1 | find /var/spool/postfix/deferred/ -name "*" - exec grep -i "LONASEX" {} \; \ |
2 | | awk -F / '{print $7}' | awk '{print $1}' | postsuper -d - |
Будут найдены и удалены письма, содержащие ключевое слово "LONASEX".
Удалить письма ошибок доставки можно так:
1 | mailq | grep DAEMON | awk '{print $1}' | postsuper -d – |
Sendmail
Sendmail складывает неотправленную почту в каталоге /var/spool/mqueue.
Насильно повторно отправить определенное письмо можно так:
1 | sendmail - v -qI$QF –d11<br> |
df_ID – тело письма
qf_ID – заголовок письма
Удалять письма из очереди можно грепая файлы заголовков или файлы тел сообщений. Просмотрите письмо как вам удобно (cat, less, more, ee, mcedit etc.) и определитесь с ключевыми словами.
Пример скрипта, который ищет письма по заголовкам, удаляет плохие и пытается повторно отправить нормальные письма:
07 | blacklisted=` grep "could not send" $QF` |
08 | if [ "$blacklisted" = "" ] |
11 | echo `sendmail - v -qI$QF -d11` |
15 | body=` echo $QF | sed 's/qf/df/' ` |
Exim
В exim’е, чтобы просмотреть тело письма, нужно выполнить:
А для просмотра заголовка:
Удалить одно сообщение:
Сдаться и отправить отправителю ошибку:
Очистить всю очередь:
1 | exim -bp | awk '/^ *[0-9]+[mhd]/{print "exim -Mrm " $3}' | sh |
Удалить Frozen письма:
1 | exim -bpu | awk '/\*\*\* frozen \*\*\*/ {print$3}' | xargs exim –Mrm |
Удалить все письма, содержащие строку "a certain string":
1 | grep -lr 'a certain string' /var/spool/exim/input/ \ |
2 | | sed -e 's/^.*\/\([a-zA-Z0-9-]*\)-[DH]$/\1/g' \ |
Все, желаю удачи и поменьше спама