Фильтрация писем при помощи Procmail

10.01.2010 0 Автор Vovanys

Как настраивать почтовый сервер я уже писал. Но в этой настройки настройке есть минус что письма которые помечаются антиспамом все равно сваливаются во Входящие.

Используя Procmail можно письма, помеченные как спам или просто по теме, перекладывать в другую папку на уровне сервера, а не почтового клиента.

Делается так:

В почте создаем папку (если ее еще нет)  Junk (переводится как спам).

На сервере устанавливаем procmail:
apt-get install procmail
Создаем файл с настройками /etc/procmailrc и вносим строки:
LOGFILE=/var/log/procmail.log
DEFAULT="| /usr/sbin/dbmail-smtp -d $1"
LASTFOLDER="| /usr/sbin/dbmail-smtp -d $1"
LOGABSTRACT=yes
VERBOSE=yes
COMSAT=no
# remove duplicated emails - ie: mailing list replies.
:0
* ^Subject:.*(test|SPAM)
{
:0
| /usr/sbin/dbmail-smtp -m Junk -u $1
}
:0
| /usr/sbin/dbmail-smtp -d $1
:0e
{ EXITCODE=75 HOST }

Строка ^Subject:.*(test|SPAM) говорит о том что если в поле тема есть одно из этих слов выполнять команду  /usr/sbin/dbmail-smtp -m Junk -u $1 которая доставляет почту в папку Junk (спам).

Если никаких слов не встречается и других правил нет выполнять /usr/sbin/dbmail-smtp  $1 которая просто доставляет почту во Входящие.

В файле настроек постфикса /etc/postfix/main.cf  заменяем (лучше закомментировать и вставить новую) строку mailbox_transport= на mailbox_transport=procmail

В файл /etc/postfix/master.cf добавляем новый транспорт :
procmail unix - n n - 4 pipe
flags=DRhu user=mail argv=/usr/bin/procmail -a ${recipient}

Перезагружаем posftix:
/etc/init.d/postfix restart

При внесении строк в файл /etc/procmailrc постфикс перезагружать не нужно.

Проверяем создав себе письмо и в теме пишем test, отправляем, проверяем куда упало письмо.

Далее уже зависит от ваших требований и нужд, что и куда распихивать.

p.s. примеры файла procmailrc можно найти в мане командой man procmailex