Недавно понадобилось настроить автоответчик для почтового сервера Postfix.
Задача: если человек уходит в отпуск или на больничный, он должен иметь возможность повесить автоответчик на своё корпоративное мыло, но так, чтобы каждый адресат этот ответ получал всего 1 раз (то есть, только на первое письмо).

Я нашёл ряд якобы решений, которые с поставленной задачей полностью не справлялись. Отвечать один раз без обработки напильником они не могли, а текст сообщения и у кого включён автоответчик - это надо было мне постоянно прописывать в нужные файлы.
В общем, неудобно и как-то слабовато. Но дальше я начал искать по отдельным компонентам из уже имеющегося материала и нашёл достаточно интересную и полную статью по комплексной настройке почтового сервера, где было несколько строк и про автоответчик.
Всё оказалось очень просто и удобно. В качестве веб-интерфейса для управления атвоответчиком используется postfixadmi! В нём же есть всё необходимой для настройки: скрипт на Perl и документация, как его использовать. В Debian всё это добро находится тут:
/usr/share/doc/postfixadmin/examples/VIRTUAL_VACATION
а в интернете можно взять с svn:
https://postfixadmin.svn.sourceforge.net/svnroot/postfixadmin/trunk/VIRTUAL_VACATION/
Итак, postfixadmin должен быть уже установлен и настроен.
Далее необходимо установить несколько модулей для Perl:
aptitude install libmime-encwords-perl libmail-sendmail-perl libdbd-pg-perl libemail-valid-perl libmime-perl liblog-log4perl-perl libgetopt-argvfile-perl libmime-charset-perl liblog-dispatch-perl
После этого устанавливаем vacation.pl в нужное место:
mkdir -p /etc/postfix/vacation сd /etc/postfix/vacation wget https://postfixadmin.svn.sourceforge.net/svnroot/postfixadmin/trunk/VIRTUAL_VACATION/vacation.pl (или cp /usr/share/doc/postfixadmin/examples/VIRTUAL_VACATION/vacation.pl.gz ./ && gunzip vacation.pl.gz) chown -R vmail /etc/postfix/vacation chmod 700 vacation.pl
(пользователь vmail был создан во время настройки почтового сервера)
Теперь отредактируем vacation.pl внеся в него данные для подключения к БД. Если posttfix настроен в связке с MySQL, то необходимо закомментировать строку (добавить # вначале строки):
our $db_type = 'Pg';
и расскомментировать (убрать # перед):
#our $db_type = 'mysql';
и вносим свои данные ниже:
our $db_host = 'localhost'; # connection details our $db_username = 'user'; our $db_password = 'password'; our $db_name = 'postfix';
Не забываем указать домен автоответчика:
our $vacation_domain = 'autoreply.zenway.ru';
Если в локальной сети авторизации нет на smtp-сервере, то делаем значения пустыми:
our $smtp_auth = ''; our $smtp_authid = ''; our $smtp_authpwd = '';
Только ни в коем случае совсем не убирайте эти строки!
А вот то, что меня интересовало в первую очередь после удобного интерфейса:
# notification interval, in seconds # set to 0 to notify only once # e.g. 1 day ... #my $interval = 60*60*24; # disabled by default our $interval = 0;
Значение "0" как раз то, которое мне необходимо - отвечать 1 раз. Либо можно указать нужный интервал в секундах, через который автоответчик снова ответит одному и тому же адресату.
Это основные настройки скрипта. Настало время настроить postfixadmin. Для этого редактируем файл config.inc.php в кго корне. В дебиане это:
/etc/postfixadmin/config.inc.php
У всех параметров ниже должно быть значение "YES":
$CONF['vacation'] = 'YES'; $CONF['vacation_control'] ='YES'; $CONF['vacation_control_admin'] = 'YES';
А тут прописываем свой домен для автоответчика, который мы уже упоминали выше:
$CONF['vacation_domain'] = 'autoreply.zenway.ru';
Осталось прописать наш домен в hosts (дополнительная настройка DNS не требуется!). Добавляем в /etc/hosts строку типа:
127.0.0.1 autoreply.zenway.ru
Почти всё. На очереди сам postfix.
Создаём файл /etc/postfix/vacation/transport содержащей следующую строку:
autoreply.zenway.ru vacation:
И выполняем команду:
postmap hash:/etc/postfix/vacation/transport
а в /etc/postfix/main.cf дописываем:
transport_maps = hash:/etc/postfix/vacation/transport
Осталось прописать наш скрипт в /etc/postfix/main.cf:
vacation unix - n n - - pipe flags=Rq user=vmail argv=/etc/postfix/vacation/vacation.pl -f ${sender} -- ${recipient}
После этого просим postfix перечитать конфиги:
postfix reload
и берёмся за настройку автоответчика через веб-интерфейс postfixadmin. Теперь каждый пользователь вашего сервера имеет доступ к этим настройкам по адресу:
http://ВАШ_ДОМЕН/postfixadmin/users/
Вот так выглядит активация самого виновника:
То есть, остяётся лишь вставить даты и приписать что хочется ;) Всё это может делать простой пользователь, не дёргая вас постоянно ;)
Кроме того, сам же пользователь может настроить перенаправление своей почты на кого он хочет. При этом у него есть выбор - получать в это время письма или нет:
На самом деле, всё просто - скачать скрипт, прописать в нём свои данные, указать его postfix'у и включить автоответчик в postfixadmin'е. Жаль только, что скрипт не работает с ldap'ом :(
Комментариев: 2 RSS
1vovans19-08-2009 13:04
Для ldap'а можно посмотреть вот это: //www.onyxbits.de/gnarwl/
2GaLaPeredol23-03-2010 14:07
может в master.cf
Вы можете войти под своим логином или зарегистрироваться на сайте.