Настройка Procmail Filtering для спама на Postfix/Courier+MySQL Virtual Users
Я искал ресурс о том, как это сделать, но мне не повезло.
Я использую работающий MTA/MUA на основе Postfix и Courier с MySQL в качестве бэкэнда для виртуальных пользователей. Я основал свою систему на следующей статье:
https://help.ubuntu.com/community/PostfixCompleteVirtualMailSystemHowto
Это было здорово до пустых разделов! Моя настройка SMTP/IMAP работает отлично, и мне удалось установить SpamAssassin и ClamAV вместе с некоторой отдельной документацией, которую я нашел в Интернете.
Мне нужна помощь в настройке Postfix для использования Procmail в качестве mailbox_command, чтобы он работал с виртуальными пользователями. Я хочу иметь возможность определять различные правила Procmail для каждого виртуального пользователя отдельно. Я прочитал документацию Postfix, и, насколько я понимаю, функциональность по умолчанию для mailbox_command будет работать только для локальных (не виртуальных) пользователей.
Заранее спасибо!
ОБНОВИТЬ:
После этого поста я понял, что mailbox_command не работает. Вместо этого я нашел способ сделать это с помощью transport_maps. Прочитайте мой собственный ответ ниже.
2 ответа
Эта статья была полезна: http://www.linuxbackups.org/virtual-procmail.
Мне пришлось преодолеть две проблемы. Во-первых, решение требует статический файл для хранения пользовательской / транспортной карты. Мне нужно виртуальное решение. Поэтому вместо создания / etc / postfix / transport мой main.cf говорит:
transport_maps = mysql:/etc/postfix/mysql_virtual_transport_maps.cf
Вот мой mysql_virtual_transport_maps.cf:
user = ******
password = ******
hosts = 127.0.0.1
dbname = postfix
table = mailbox
select_field = transport
where_field = username
Так что решено "виртуальное" требование. Другая проблема заключается в том, что моя структура каталогов отличается от примера procmailrc.common. Вот мой procmailrc.common:
:0
* RECIPIENT ?? .*@\/.*$
{ DOMAIN = "$MATCH" }
#added RECIPIENT variable and we extract domain name
MAILDIR="$HOME/$DOMAIN/$USER@$DOMAIN"
DEFAULT="$MAILDIR/"
LOGFILE="./procmail.log"
VERBOSE=YES
#each user will set his own log file
NL="
"
WS=" "
SWITCHRC="$HOME/$DOMAIN/$USER@$DOMAIN/.procmail"
Надеюсь, что это помогает другим, которые могут пытаться сделать что-то подобное.
-Л
Создайте один глобальный procmailrc и для каждого пользователя создайте такое правило:
:0
^TOsomeuser@yourdomain.com
| /usr/bin/procmail -m /etc/procmailrcs/someuser
Обычное окончательное правило каждого файла в / etc / procmailrcs / должно заключаться в том, чтобы передать сообщение для доставки (8).
Если у вас много пользователей, и вы не хотите поддерживать файл такого типа, вместо этого рассмотрите возможность написания сценария, который анализирует заголовки почты, чтобы выяснить, какой файл в / etc / procmailrcs / нужен и соответствующим образом выполняет procmail, и установить его скрипт как ваш mailbox_command.