Я искал ресурс о том, как это сделать, но без особого успеха.
Я использую рабочий 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. Прочтите мой ответ ниже.
Эта статья помогла: 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"
Надеюсь, это поможет другим, которые могут попытаться сделать что-то подобное.
-aj
Создайте один глобальный procmailrc и для каждого пользователя создайте такое правило:
:0
^TOsomeuser@yourdomain.com
| /usr/bin/procmail -m /etc/procmailrcs/someuser
Обычным последним правилом каждого файла в / etc / procmailrcs / должно быть перенаправление сообщения для доставки (8).
Если у вас много пользователей и вы не хотите поддерживать файл такого типа, то вместо этого рассмотрите возможность написания сценария, который анализирует заголовки почты, чтобы выяснить, какой файл в / etc / procmailrcs / требуется, и соответственно выполняет procmail, и установив это скрипт как ваш mailbox_command.