Exim4 обмежує список доменів та скриньок, яким можна надсилати листи з сервера

Ставимо exim, як описано в попередній статті. Наприкінці вибираємо Split configuration in small files: yes — так зручніше буде.

Тепер створюємо необхідні нам файли:

# touch /etc/exim4/allowed.domains; touch /etc/exim4/allowed.mails

У файл/etc/exim4/conf.d/router/01_exim4-outgoing-filter пишемо правила, які будуть застосовуватися до вихідної пошти:

check_outgoing_from_header: driver = redirect domains = ! +local_domains condition = $> allow_fail data = :fail: Ви не маєте права повідомити mail від нас з From: $header_from as sender: $sender_address

check_outgoing: driver = redirect domains = ! +local_domains senders = ! :! *@lsearch;/etc/exim4/allowed.domains : ! lsearch;/etc/exim4/allowed.mails allow_fail data = :fail: Ви не маєте mail з цього mailbox з цього сервера.

Якщо ви все ж таки вибрали "Split configuration into small files: no", то ці правила потрібно вписати відразу після рядка

Це правило дозволить надсилати лише пошту з будь-яких скриньок доменів, які перераховані у файлі/etc/exim4/allowed.domains, або скриньок, перерахованих у файлі/etc/exim4/allowed.mails. Зверніть увагу на "або" - якщо домен написаний у першому файлі, то в другому сенсі перераховувати його скриньки немає сенсу. А якщо вам потрібно дозволити відправку тільки з однієї скриньки домену - то не потрібно писати його в allowed.domains, потрібно написати конкретну скриньку в allowed.mails

Ящики та домени потрібно писати цілком (без регулярок, зірочок та іншого) по одному на рядок:

#cat /etc/exim4/allowed.domains domain1.tld domain2.tld

#cat /etc/exim4/allowed.mails [email protected] [email protected] [email protected]

Перевірити можна так:

#echo test sendmail -f [email protected] [email protected]

У /var/log/exim4/mainlog у відповідь на це ви побачите щось на кшталт:

Друге правило (check_outgoing) перевіряє, що значення поля sender (він же smtp.sender, він же smtp.name) підходить під одне з трьох правил. Перше - sender порожній (сюди входять листи, згенеровані самим поштовим сервером - наприклад, відлупи про нестачу листів). Друге - sender збігається з шаблоном * @ будь-якого домену списку allowed.domains. Третє — поле sender повністю (користувач@домен) вказано в allowed.mails.

Також враховуйте, що рядок у конфізі apache2 для вхоста виду:

виставляє значення поля sender в [email protected] (при цьому обійти це з самих скриптів не вийде, тільки через htaccess). Тому, якщо ваша CMS надсилає листи від ящика, відмінного від зазначеного в цьому місці — листи надсилати вона перестане.