Linux -- это интересно

Автоответчик для почтового сервера postfix


Рубрика: Дополнительные материалы -> Администрирование
Метки: | | | |
Просмотров: 15603

Недавно понадобилось настроить автоответчик для почтового сервера 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

Для ldap'а можно посмотреть вот это: http://www.onyxbits.de/gnarwl/

Осталось прописать наш скрипт в /etc/postfix/main.cf:
vacation    unix  -       n       n       -       -       pipe
  flags=Rq user=vmail argv=/etc/postfix/vacation/vacation.pl -f ${sender} -- ${recipient}

может в master.cf

Оставьте комментарий!
Используйте нормальные имена.Войти через loginza
Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



 
(обязательно)