Vpopmail maildrop

Материал из rrv-wiki
Перейти к навигации Перейти к поиску

После того как одного сотрудника замучил SPAM (его раздражало любое кол-во спама), он попросил жестко прописать список почтовых адресов с которого он мог получать письма.

Решение:

На этом сервере стоял qmail+vpopmail, а так же maildrop, решение было тривиальным:

Создаем файл .qmail

В папке vpopmail-пользователя (что то типа /usr/local/vpopmail/domains/mydomain.ru/user, в этой папке есть папка Maildir) создаем DOT-файл .qmail:

# cat .qmail

|/usr/local/bin/maildrop ./mailfilter

Со следующими правами: -rw------- 1 vpopmail vchkpw 71 20 ноя 15:43 .qmail

Создаем файл правил mailfilter

В той же папке создаем файл mailfilter:

# cat mailfilter
#VERBOSE=9
#logfile "/var/log/maildrop/maildrop.log"

if (/^From:.*(test\@yandex\.ru|mail\.ru)/)
{
   exception {
   to "./Maildir/"
#    log "mail ok"
   }
}

Со следующими правами: -rw------- 1 vpopmail vchkpw 71 20 ноя 15:45 mailfilter

Итог

В итоге все письма которые поподают под регулярное выражение /^From:.*(test\@yandex\.ru|mail\.ru)/ попадут в Maildir-папку пользователя, в поддиректорию new, а именно пользователь в этом примере получит письма от почтового ящика test@yandex.ru и от всех пользователей в адресе которых есть домен mail.ru
Кстати регулярные выражения можно создавать и по другим полям Subject:. To:. X-Spam-Status: YES и др. (смотри поля заголовка писем).
Так же кол-во секций if может быть несколько и на каждое условие можно организовать свою реакцию. (Внимание! Действие to может передавать только в mailbox-формате в этом случае надо указать путь с точностью до файла, либо maildir-формате тогда нужно указать папку формата Maildir, если она не создана, то воспользоватся утилитой maildirmake. Не пытайтесь указывать какую нибудь поддиректорию внутри Maildir например /Maildir/cur - так не работатает)