Skip to content

Настройка Exim с помощью Ansible

License

Notifications You must be signed in to change notification settings

ilyagoz/exim-ansible

Repository files navigation

Содержание

  1. Что это и зачем
  2. Настройка с помощью Ansible
  3. Проверка

Что это и зачем

Сегодня мы наконец настроим почтовый сервер Exim (версии 4) для одного распространенного сценария использования, который, к сожалению, последовательно, хотя и не без причины, игнорируется разработчиками дистрибутивов.

Exim выбран почтовым сервером по умолчанию в Debian и в производных от него дистрибутивах. Если вам уже приходилось устанавливать Exim, то, вероятно, вы имели дело с одним из таких дистрибутивов и системой конфигурации, в которой предусмотрен вариант "отправка почты через smarthost". Для домашнего пользователя таким smarthost ("умным" хостом) обычно будет крупный сервис электронной почты вроде Gmail. В корпоративной сети, возможно, будет свой "умный" хост.

Проблема: smarthost в стандартной конфигурации может быть только один. Некуда вписать пароли от всех ваших учетных записей на Gmail, Mail.ru, Яндекс и так далее и заставить Exim самостоятельно отправлять ваши письма на нужный сервис в зависимости, например, от обратного адреса.

Разумеется, Exim сам по себе способен сделать с почтой все, что угодно, вопрос только в конфигурации. К сожалению, простого и, что самое главное, общепринятого решения этой проблемы не придумано. Можно найти некоторые предложения 1 , 2 , 3 , 4, но все они страдают определенными ограничениями.

Решение. Ниже показан вариант, требующий минимальных изменений в стандартной конфигурации. При этом все ее возможности сохраняются. Способ настройки рассчитан на систему конфигурации Exim4 в Debian с раздельными файлами. Полученную конфигурацию можно использовать и на домашнем компьютере, и на облачном сервере для отправки уведомлений от различных сервисов и так далее.

Настройка с помощью Ansible

Впишите в файл inventory адрес настраиваемой машины и имя пользователя, от которого будет работать Ansible. Разумеется, этот пользователь должен иметь возможность становиться root.

Впишите в раздел vars файла exim-conf-debian.yaml данные для доступа к smarthost-серверу, который будет использоваться по умолчанию, если среди правил отправки не найдется подходящего. Образец:

vars:
  смартхост: smtp.mail.ru
  логин: AzureDiamond@mail.ru
  пароль: hunter2

Откройте файл 40_smarthosts.j2 и посмотрите, нет ли там готовых конфигураций для нужных вам провайдеров. Если нет, впишите свою конфигурацию.

Откройте файл smarthosts.j2 и посмотрите, нет ли там готовых правил для отправки почты. Если нет, впишите свои правила. Пример:

user1:mailru
*@inbox.ru:mailru

При желании, добавьте локальных пользователей в файл passwd.j2. По умолчанию там будет только один пользователь с тем же логином и паролем, что используется для доступа к smarthost-серверу по умолчанию (см. выше). Пользователей можно будет добавить позже с помощью скрипта /usr/share/doc/exim4-base/examples/exim-adduser или вручную. См. man exim4-config_files, раздел /etc/exim4/passwd.

Впишите логины и пароли для отправки почты на SMTP-серверы нужных вам провайдеров в passwd.smarthosts.j2. Пример:

# Для Яндекс Почты логином служит часть адреса до @
AzureDiamond@ya.ru:AzureDiamond:hunter2

Запустите скрипт.

ansible-playbook exim-conf-debian.yaml -i inventory

Проверка

Отправлять тестовые письма удобно с помощью Swaks. Пример:

swaks -tls -a \
      --to user@example.com \
      --from <ваш адрес> \
      --server localhost \
      --auth-user <ваш логин на *локальном* сервере> \
      --auth-password  <ваш пароль на *локальном* сервере>

Изучите сообщения об ошибках и доработайте напильником.

Примечания

1 exim: select smarthost according to sender address

2 [Pkg-exim4-users] selecting smarthost based on sender address

3 Exim4 and multiple gmail accounts

4 Как настроить Exim на несколько ящиков?

About

Настройка Exim с помощью Ansible

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages