Показаны сообщения с ярлыком postfix. Показать все сообщения
Показаны сообщения с ярлыком postfix. Показать все сообщения

понедельник, 19 октября 2009 г.

Postfix + Procmail для виртуальных ящиков


В дальнейшем предполагается, что виртуальные почтовые ящики расположены в директориях вида: /var/virtmail/domainname/username и принадлежат пользователю virtmail

В файле master.cf описываем транспорт procmail (все - в одну строку):

procmail unix - n n - - pipe flags=RO user=virtmail argv=/usr/bin/procmail -t -o SENDER=${sender} -m USER=${user} DOMAIN=${domain} /etc/procmailrc

включаем этот транспорт для виртуальных пользователей в main.cf:

virtual_transport = procmail

procmail_destination_recipient_limit = 1

Последняя опция означает, что письмо, адресованное нескольким получателям, будет "превращаться" во много писем - каждое с одним получателем. Иначе procmail не вполне правильно разбирается с такими множественными письмами.

Теперь самое интересное - что писать в /etc/procmailrc:

SHELL=/bin/sh

PATH=/bin:/usr/bin

MAILDR=/var/virtmail/${DOMAIN}/${USER}/

# на всякий случай создадим эту папку

DUMMY=`test -d $MAILDR | mkdir -m 700 $MAILDR`

# тут какие-то правила, ради которых и прикручивается procmail

# ...


# и последнее правило - куда класть почту по умолчанию:

:0:

${MAILDR}


По ходу экспериментов было замечено, что хранение имени почтовой директории в "стандартной" переменной MAILDIR приводило к необъяснимому поведению при вызове внешней команды - потому было выбрано "усеченное" имя.

вторник, 13 января 2009 г.

Борьба с дублированием писем в Postfix/ClamSMTPD

Проблема обнаружилась такая: на postfix есть clamsmtpd и virtual_aliases_map, в которой есть запись вида:
ivanov@mydomain.ru: ivanov@mydomain.ru, petrov@mydomain.ru
(т.е. почта Иванова посылается ему - и еще Петрову), так вот, в такой конфигурации Иванов получает все нормально, а Петров - в трех экземплярах. Методом чтения инета - и научного тыка - найдено следующее решение:
в main.cf добавляем строку:
receive_override_options = no_address_mappings
в master.cf в этих двух строках добавляем выделенные красным опции:
smtp inet n - n - - smtpd -o content_filter=dummy
-o receive_override_options=


127.0.0.1:10026 inet n - n - - smtpd

-o content_filter=
-o receive_override_options=no_unknown_recipient_checks, no_header_body_checks, no_address_mappings
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks_style=host
-o smtpd_authorized_xforward_hosts=127.0.0.0/8
(пробелы между добавлены в строку receive_override_options, чтобы поместилась в блоге - в нормальном файле этих пробелов нет; строки, продолжающие команду вызова (начинающиеся с -о), должны предваряться символом табуляции).

среда, 26 ноября 2008 г.

Bounce report на русском языке в Postfix


Сама идея посылки сообщений от SMTP-сервера пользователю на любом языке, кроме английского, лично мне кажется в корне неверной, но иногда очень просят ;( Тогда приступаем.
Шаблоны сообщений сервера (всего их 4: failure_template, delay_template, success_template и verify_template) лежат в файле, описывамом в main.cf как bounce_template_file
т.е. добавляем к нашему конфигу примерно такую строку:
bounce_template_file = /etc/postfix/bounce.cf

Теперь дело за малым - создать сам файл. Шаблоны по умолчанию (чтобы было, что править) можно получить либо командой:
$ postconf -b
либо лично у меня уже был файлик bounce.cf.default в директории с конфигами postfix
Пишем в наш файл что-то типа:

success_template = <
EOF
Charset: windows-1251

From: MAILER-DAEMON (Mail Delivery System)
Subject: Successful Mail Delivery Report

Ваше письмо успешно доставлено получателю.
Подробности приведены ниже.
С уважением, Программа Postfix на сервере $myhostname
--------------------------------------------------------------------
EOF

(...и три других шаблона в том же духе).

Прошу обратить внимание, что указанный charset действует только в теле письма, а не в заголовках - они должны быть в гольном ascii. За справкой о прочих возможностях/невозможностях оращайтесь к man-странице bounce(5) - там все довольно неплохо описано.