Почтовые баталии

Автор: | 19 ноября 2010

удаляйте спам оптом

Как удалить письмо из очереди писем? Или как удалить плохие письма, например, спамовые, из очереди писем?

Все зависит от почтовой программы. Просмотреть список писем (очередь) можно командой

Postfix

Письма, которые почтовая программа postfix не доставила (зависит от ваших настроек, количества отправляемых писем в час), можно быстро просмотреть так:

1lynx -dump /var/spool/postfix/deferred/X/XYYYYYY

Идентификатор письма XYYYYYY можно увидеть  в выводе mailq. Соответственно, первая цифра или буква является именем подкаталога в каталоге deferred.

Для перекодировки письма в другую кодировку, к вышеуказанной команде можно добавить через пайп (|):

1iconv -f utf-8 -t koi8-r -c
2# -c - подавляет ошибки

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

Если в очереди нет полезных писем, можно удалить всю очередь postfix:

Чтобы удалить конкретное письмо:

1postsuper -d ИДЕНТИФИКАТОР_ПИСЬМА

Понятное дело, что, если в очереди сотни или тысячи плохих писем, то на таком удалении далеко не уедешь. Поэтому можно просто найти письма со спамом и удалить:

1find /var/spool/postfix/deferred/ -name "*" -exec grep -i "LONASEX" {} \; \
2| awk -F / '{print $7}' | awk '{print $1}' | postsuper -d -

Будут найдены и удалены письма, содержащие ключевое слово "LONASEX".

Удалить письма ошибок доставки можно так:

1mailq | grep DAEMON | awk '{print $1}' | postsuper -d –
Sendmail

Sendmail складывает неотправленную почту в каталоге /var/spool/mqueue.

Насильно повторно отправить определенное письмо можно так:

1sendmail -v -qI$QF –d11<br># где $QF – идентификатор письма

df_ID – тело письма
qf_ID – заголовок письма

Удалять письма из очереди можно грепая файлы заголовков или файлы тел сообщений. Просмотрите письмо как вам удобно (cat, less, more, ee, mcedit etc.) и определитесь с ключевыми словами.

Пример скрипта, который ищет письма по заголовкам, удаляет плохие и пытается повторно отправить нормальные письма:

01#!/bin/sh
02# удаляем письма, в заголовке которых встречается
03# could not send
04 
05for QF in `ls qf*`
06do
07  blacklisted=`grep "could not send" $QF`
08  if [ "$blacklisted" = "" ]
09  then
10    # пытаемся отправить повторно хорошее письмо:
11    echo `sendmail -v -qI$QF -d11`
12    # закомментируйте, чтобы просто удалить письма
13  else
14    # удаляем плохое письмо вместе с телом:
15    body=`echo $QF | sed 's/qf/df/'`
16    rm $body
17    rm $QF
18  fi
19done
Exim

В exim’е, чтобы просмотреть тело письма, нужно выполнить:

А для просмотра заголовка:

Удалить одно сообщение:

Сдаться и отправить отправителю ошибку:

Очистить всю очередь:

1exim -bp | awk '/^ *[0-9]+[mhd]/{print "exim -Mrm " $3}' | sh

Удалить Frozen письма:

1exim -bpu | awk '/\*\*\* frozen \*\*\*/ {print$3}' | xargs exim –Mrm

Удалить все письма, содержащие строку "a certain string":

1grep -lr 'a certain string' /var/spool/exim/input/ \
2| sed -e 's/^.*\/\([a-zA-Z0-9-]*\)-[DH]$/\1/g' \
3| xargs exim –Mrm

Все, желаю удачи и поменьше спама 😉

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