Фильтрация писем при помощи Procmail
Как настраивать почтовый сервер я уже писал. Но в этой настройки настройке есть минус что письма которые помечаются антиспамом все равно сваливаются во Входящие.
Используя 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