Автовідповідачі Posfix, Dovecot

Зміст

Postfix autoreply

Для Postfix найчастіше зустрічається опис автовідповідача, створюваного через таблицю транспорту, де під автовідповідач має бути виділено доменне ім'я. При цьому лист у відповідь повинен створювати скрипт, що запускається від імені системного користувача.

Далі вільний переклад із офіційної документації.

Для того, щоб налаштувати автовідповідач для віртуальних одержувачів, доставляючи їм при цьому пошту як завжди, необхідно встановити правило таблиці віртуальних аліасів

Сама таблиця аліасів може бути такою

ВАЖЛИВО!не вказуйте домен автовідповідача "autoreply.mydomain.tld" у "mydestination".

Налаштування транспорту для автовідповідача може бути, наприклад, таким

Тут "/path/to/autoreply" - шлях до скрипту, що запускається від імені "nobody" з аргументами "відправник" ($sender) та ($mailbox), наприклад: .

PostfixAdmin - vacation

PostfixAdmin дозволяє реалізувати Vacation. Це автовідповідач, який включається на певний час для певних скриньок (наприклад, коли співробітник у відпустці). При цьому відповідь тому самому відправнику надсилається лише задану кількість разів через задані проміжки. Втім, можна налаштувати постійне відправлення відповідей.

Після встановлення PostfixAdmin багато корисної інформації :) можна отримати тут: . Але головний інтерес представляє каталог. Там є інструкція зі встановлення, запакована в архів "INSTALL.TXT.gz".

Далі вільний переклад розпакованого файлу інструкції (+ багато відсеб'ятини) :

Для роботи знадобляться такі Perl-модулі: DDB::Pg або DBD::mysql (залежить від того, що буде використовуватися - PostgreSQL або MySQL) Mail::Sender Email::Valid MIME::Charset Log::Log4perl Log::Dispatch MIME::EncWords GetOpt::Std

Можна встановити інсталяцію через CPAN, або інший інструмент інсталяції. Встановлення модуля та ін. модулів може виглядати приблизно так (у консолі):

При встановленні цим способом важливо правильно вказувати лапки в потрібних місцях (коли установник ставитиме запитання).

Втім, є спосіб набагато простіше (рекомендую саме його): - для PostgreSQL

Все, вказане вище, має бути в консолі одним рядком.

Крім того, знадобиться пакет MIME Tools:

Скрипт Vacation працює як сервіс, налаштований в "master.cf". Крім того, використовується таблиця транспорту. Коли для користувача задіяна властивість "я у відпустці", то додається аліас, який надсилає копії всіх листів на скрипт автовідповідача.

Наприклад, лист для "[email protected]" буде відправлений на "[email protected]", А ТАКОЖ на "user#[email protected]".

Пошта на "@autoreply.domain.tld" буде перехоплена скриптом "vacation.pl" і відповідь буде надіслана з урахуванням різних налаштувань. За замовчуванням відповідь надсилається лише один раз.

Налаштування зводиться до наступних кроків.

Не можна використовувати користувача "nobody", і, звичайно, не можна використовувати "root" або "postfix". Користувач не повинен мати можливість залогінитись, не повинен використовувати пароль і не повинен мати домашній каталог.

Створюємо користувача та групу, відразу додавши його до неї:

Після додавання це має виглядати приблизно так

Другий рядок - як воно в результаті вийшло на Debian, перший - як описано в документації

Потрібно створити папку, доступ до якої матиме лише користувач "vacation":

У цій папці зберігатимутьсятимчасові файли.

Потрібно розпакувати та скопіювати скрипт у створену вище папку:

Необхідно створити новий тип транспорту у Postfix

Прогалини в опціях навколо "=" неприпустимі, а перед "flags" - обов'язкові (мінімум два).

Необхідно також вказати таблицю транспорту Postfix

Файл, вказаний у налаштуванні таблиці транспорту, також має бути налаштований на транспорт, який був раніше налаштований у "master.cf". Домен "domain.tld", який є в прикладі, повинен бути замінений на коректний. Це може бути будь-який довільний домен, але найпростіше вибрати той, який може використовуватися для всіх ваших доменів.

Можливо, доведеться створити запис у/etc/hostsдля неіснуючого домену.

Далі потрібно буде обробити таблицю: і виконати перезавантаження Postfix для набрання чинності: .

У скрипті "vacation.pl" необхідно прописати тип SQL-бази даних PostfixAdmin та параметри підключення. Для цього потрібно вказати значення для всіх відповідних змінних, що починаються з $db_, а також вказати $db_type: або mysql, або pgsql.

Крім того, значення змінної$vacation_domainповинно збігатися із зазначеним у файлі .

Виконати ці налаштування можна двома способами:

  1. Відредагувати файлvacation.pl.
  2. Створити файл та вказати у ньому всі налаштування. Для цього потрібно просто використовувати синтаксис мови Perl, та вказати значення всіх відповідних змінних, без ключового слова "our".

Перевірка роботи аліасів

У таких випадках аліаси можуть бути задіяні більш ніж один раз, що може призводити до дублювання запитів автовідповідачеві. Щоб уникнути цього, необхідно використовувати опцію" -o receive_overr >

Після зміннеобхідно перезавантажити конфігурацію Postfix:

Необхідно також увімкнути підтримку Vacation у web-інтерфейсі PostfixAdmin

Це програмне забезпечення поширюється без гарантії і періодично у ньому виявляються вразливості!

У налаштуванні зв'язки Postfix-PostfixAdmin потрібно враховувати кілька моментів:

  1. Postfix потрібний доступ до таблиць бази даних тільки на читання
  2. Для Vacation потрібен доступ на запис тільки до таблиціvacation_notification, а також доступ на читання тільки до таблицьaliasтаvacation.
  3. PostfixAdmin вимагає повного доступу до всіх таблиць

Враховуючи вищезазначене, можна використовувати кількох користувачів бази даних із різними правами.

Доступ до файлової системи PostfixAdmin може бути обмежений тільки сесіями.

Але наскільки безпечно відкривати такий доступ – кожен вирішує сам. Особливо після інформації із вищезгаданого розділу.

Деякі умільці переробляли скрипт під використання модуля. Для цього має бути встановлений відповідний пакет: . На жаль, ці ситуації застаріли з виходом нових версій скрипту.

У замітці, що є частковим перекладом з офіційної документації до Dovecot 2: Dovecot 2 - Sieve, описані розширення плагіна Pigeonhole Sieve, які реалізують автовідповідач "я у відпустці" - vacation і vacation-seconds. Друге розширення є доповненням до першого, додаючи можливість налаштовувати інтервали відповідей у ​​секундах. Обидва включені за замовчуванням у плагіні Pigeonhole Sieve, який представляє собою підтримку мови Sieve для Dovecot, користувальницький доступ до персональних правил (ManageSieve), а також розширення та деякі інші плагіни.

У згаданій замітці, розділАвтовідповідач Vacation присвячений опису роботи автовідповідача, створюваного шляхом написання та підключення скрипта, приклад якого наведено ту саму. Крім того описано логіку роботи Vacation та розібрано механізми, які він реалізує.

MUA та ManageSieve

Автовідповідач може бути задіяний у т.ч. та в поштовому клієнті користувача - MUA. Наприклад, для RoundCube існує плагінrcubevacation, з FTP, SSHFTP, Setuid backends з підтримкою .forward і SQL.

ДО РЕЧІ!У репозитаріях Debian доступний пакет:php-net-sieve.

Повинен сказати, що коли я дістався ManageSieve, то в мене відпало всяке бажання вивчати інші механізми. :) Настільки легко, просто і гнучко можна все робити з використанням цього плагіна. На щастя, це сталося наприкінці моїх досліджень і я встиг все-таки дещо вивчити до того, як це бажання зникло. :)

Поштові петлі

Відбудеться зациклювання. Очевидно, це проблема, яка має бути вирішена у механізмі налаштування автовідповідачів.

Одним із способів вирішення цієї проблеми є налаштування автовідповідача на певну кількість відповідей одному відправнику з проміжками "мовчання".

Крім того, автовідповідач повинен порівнювати відправника та одержувача на предмет їхнього збігу. Очевидно, є ще деякі не згадані тут тонкощі в налаштуванні автовідповідачів, до яких я просто не дістався.

Готові продукти

Напевно, у цій сфері простір для творчості далеко не вичерпаний. :)

Джерела інформації та посилання перераховані на окремій сторінці, вказаній внизу головної сторінки теми: Встановлення та налаштування поштового сервера