Как обычно, приходится на собственные вопросы отвечать самому.
Вот и отвечу.
Итак.
В знаменитой Вадимкиной инструкции и связке postfix+MySQL+spamasassin+вся остальная хрень - за раскладывание почты по ящикам юзвреей отвечает virtual - встроенная в постфикс утилита. Которая, по соображениям безопасности, не может управлять входящим потоком сообщений.
В общем, все "для человека".
Сначала я попытался установить вышеозначенный procmail. С нулевым результатом. В системе он был, но ни на что не влиял. Тогда была предпринята попытка ввести в конфиг постфикса директивы
virtual_transport = procmail:
Что тоже не помогло. Почта просто перестала ходить.
Тогда кинул клич, и умные люди, знающие английский, предложили поставить maildrop. После многочисленных экспериментов все упиралось в то, что письма не доходили по причине Invalid user specified. Поиск в гугле упирался в эту же проблему, а те два раза, которые имели решение, сводился к "сбору пути к домашнему директорию юзера", повторить который в моих условиях не удалось.
Спасибо Karl500, его помощь оказалась неоценима.
Итак.
Все-таки - процмэйл.
1.
sudo apt-get install procmail
2.В файл
/etc/postfix/master.cf вставляем строки
procmail unix - n n - - pipe -o flags=RO user=vmail argv=/usr/bin/procmail -t -m USER=${user} EXTENSION=${extension} NEXTHOP=${nexthop} /etc/postfix/procmailrc.common
(это - ОДНА строка!!)
При этом считается, что папка для почты юзеров находится в /home/vmail а исполняемый файл procmail лежит в /usr/bin. Иначе измените пути.
3 В файл
/etc/postfix/main.cf вставляем строку
procmail_destination_recipient_limit = 1
Хрен его знает, зачем. Сам бы хотел узнать.
4. Находим в БД для почты таблицу transport, и в поле domain указываем наш домен, или отдельного юзера этого домена. А в поле transport пишем procmail: (именно так, с двоеточием).
Альтернативный вариант: создаем (если нету) файл
/etc/postfix/transport, и в него вносим
user@domain.ru procmail:
после чего делаем
sudo postmap /etc/postfix/transport
5. Создаем файл /etc/postfix/procmailrc.common следующего содержания
MAILDIR="$HOME/$NEXTHOP/$USER"
DEFAULT="$MAILDIR/"
#VERBOSE=ON
#each user will set his own log file
#LOGFILE="/home/vmail/$NEXTHOP/$USER/procmail.log"
NL="
"
WS=" "
SWITCHRC="$HOME/$NEXTHOP/$USER/.procmail"
6. Создаем в папке пользователя файл .procmail (в нашем случае -
/home/vmail/domain.ru/user/.procmail )
В котором и создаем пользовательские фильтры.
Например:
:0
* ^Subject:.*\<testing
.testing/
Это означает:
:0 - начало нового правила.
* (признак условия) ^ (с начала строки) Subject: (в поле "Тема) .(любой символ) *(встречается ноль или более раз) \(отменяет специальное значение символа, зачем тут нужен - хрен его знает) < (сответственно - просто <), testing (учитывая все предыдущее означает "Если в сабдже встречается <testing) - то
.testing/ - записать в папку "testing" в домашней папке юзера.
Если такой папки нет - она создается, но видимость ее остается на усмотрение почтовой программы или веб-интерфейса. В "Белке" надо вручную подписаться на эту папку.
7. Перезапускаем postfix
sudo /etc/init.d/postfix reload
добавлено позже8. А после всего этого самого окажется, что почта, предназначенная для других юзверей упадет по адресу /home/vmail/new. И разбирать придется вручную.
По этому поводу я получил два совета.
1. Добавить в начало самого первого правила c:, чтобы получилось 0: c:
Добавить в конец скрипта
:0:
${DEFAULT}
2. Удалить нафиг файл /etc/procmailrc так как он, по слухам, если отсутствуют правила, то кладет всю почту "в дефолтную папку".
Я выполни оба, и в результате - заработало.
Все!
Посылка письма на адрес user@domain.ru с сабджем "Ну, предположим testing" должно положить это письмо в заранее созданную папку Testing.
У меня - кладет.
Еще раз огромное спасибо Karl 500 и Шарки, убившие на это со мной уйму времени и сил.
А так же огромное "спасибо" автором всех почтовых пакетов и дополнений, которые переносили функции из одного пакета в другой, мудрили с конфигами, сборками, мануалами, в частности, утверждая, что procmail с виртуальными пользователями не работает.
В общем, всячески облегчали жизнь таким идиотам, как я.
Спасибо за внимание.