Exim - настройка "автоответчика"

Версия для печатиОтправить другуPDF version

Exim логотип

Есть настроенный по этой статье почтовик. Решил его немного "допилить", подключив возможность автоматического ответа на входящую корреспонденцию. Данная возможность будет полезна, например, уехавшим в отпуск... Либо же отправка уведомления от технического контакта, что заявка принята и отправлена в обработку... Данная "фича" может пригодится в самых разнообразных ситуациях.

Итак, приступим к настройке.... В конфигурационный файл Exim-а в секцию routers, перед роутером virtual_localuser добавим такой блок:

# Автоответчик. Установить в 1 для активации автоответа.
autoreply:
driver = accept
retry_use_local_part
no_expn
no_verify
unseen
condition = ${lookup mysql{SELECT login FROM users \
        WHERE login='${local_part}' AND domain='${domain}' AND reply = '1'}{yes}{no}}
senders = . ! ^postmaster@.*:\
        ! ^root@.*\
        ! ^noreply@.*.
transport = address_autoreply

Стоит обратить внимание на параметр unseen в конфигурации данного роутера. Его присутствие означает то, что обработка письма после выхода из роутера будет перенаправляться в следующий роутер, а не завершаться. Тоесть, согласно порядка проходжения роутеров, будет направлен автоответ отправителю, а после этого письмо "упадет" в почтовый ящик адресата.

Теперь пора добавить новый транспорт - address_autoreply, поскольку на него ссылается добавленный роутер. Добавим в секцию transports такой блок:

# Автоответчик.
address_autoreply:
driver = autoreply
text = ${lookup mysql{SELECT text_reply FROM users WHERE \
        login='${local_part}' AND domain='${domain}'}}
from = $local_part@$domain
once_repeat = 1d
subject = "Autoreply from $local_part@$domain"
headers = "Content-Type: text/plain; charset=cp1251"
to = $sender_address

Добавим новые поля в таблицю users:

mysql> USE exim;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
mysql> ALTER TABLE  `users` ADD  `reply` ENUM('0',  '1') NOT NULL DEFAULT  '0';
Query OK, 2 rows affected (0.06 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE  `users` ADD  `text_reply` TEXT NOT NULL;
Query OK, 2 rows affected (0.05 sec)
Records: 2  Duplicates: 0  Warnings: 0

Отправим Exim-у сигнал SIGHUP - необходимость перезапуска:

# sh /usr/local/etc/rc.d/exim reload

Установим для своей учетки режим автоответа:

mysql> UPDATE  `exim`.`users` SET  `reply` =  '1', `text_reply` =  'Тестирование автоответчика... 
               Никуда я не девался ;)' WHERE  `users`.`login` =  'muff
               AND  `users`.`domain` =  'ispalternativa.net.ua';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

На этом настройка автоответа закончена. Выполнил тестирование - все работает...

Ваша оценка: Нет Средняя: 5 (4 голоса)

Вставай, Україно!

Литература