04.07.2022

Ubuntu. Настройка Exim4

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

На помощь приходит Exim4. Exim - Experimental Internet Mailer - агент пересылки сообщений, распространяется под лицензией GPL.

Приступаем.

Обновляем данные о состоянии репозиториев, затем устанавливаем exim4:

sudo apt-get-update
sudo apt-get install exim4

Важно! Если необходимо использование ACL (Access Control List) и прочие дополнительные функции, то следует установить exim4-daemon-heavy.

Теперь настроим exim4. Для этого выполним команду:

sudo dpkg-reconfigure exim4-config

Программа предлагает сделать выбор. Рассмотрим их назначения.

internet site; mail is sent and received directly using SMTP (интернет-сайт; приём и отправка почты напрямую, используя SMTP) - данный вариант подходит для Интернет сайтов, при этом полном доступе к сети Интернет. Служба принимает входящую почту на локальные домены и доставляет пользователям. Отправка почты происходит непосредственно на домены получателя.

mail sent by smarthost; received via SMTP or fetchmail (отправка почты через smarthost; приём по SMTP или через fetchmail) - выбранный нами вариант, применяется для ограниченного доступа к сети Интернет. Входящая почта будет доставлена пользователям, а исходящая сначала доставляется на Smart host и только потом до целевого ящика.

mail sent by smarthost; no local mail (отправка почты через smarthost; локальная почта отсутствует )  - Локальные домены не используются. Все исходящие письма отправляются сразу на Smart host.

local delivery only; not on a network (доставка только локальной почты; доступа к сети нет) - этот вариант следует выбирать, когда у сервера нет подключения к глобальной сети. Доставка почты происходит только между локальными доменами.

Курсорными клавишами выбираем “Отправка почты через smarthost; прием по SMTP или через fetchmail”, в английской локали это будет как “mail sent by smarthost; received via SMTP or fetchmail”. Выбор подтверждаем нажатием по клавише Enter.

Следующим шагом следует указать ваше доменное имя или имя узла.

По окончании нажимаем Enter.

Теперь укажем IP-адреса на которых Exim должен слушать соединения. IP-адреса следует разделять символом “;” - точка с запятой.

Нажимаем Enter.

В обновленном окне указываем локальные домены и почтовые ящики. Поле следует оставить пустым, если у вас нет этого.

Нажимаем Enter.

Следующим шагом указываем список доменов для которых Exim будет пересылать почту выполняя роль Smarthost’а. Если сервер не должен быть Smarthost, то поле нужно оставить пустым.

Нажимаем Enter.

Теперь указываем адреса smtp-сервера и через двойное двоеточие (“::”) smtp-порт.

Пример популярных сервисов:

smtp.yandex.ru::587

smtp.gmail.com::587

mail.example.com::587

Заполнив поле, нажимаем Enter.

Следующим шагом будет вопрос о необходимости скрывать локальные имена сервера. Если нужно - выбираем “Да” (“Yes”).

Настраиваем запросы к DNS. Exim выполняет обращения к DNS при запуске службы, при получении и отправке сообщений. Если соединение к сети ничем не ограничено, то в этом пункте следует выбрать “No” (“Нет”). В противном случае, если используется “Вызов по требованию” (“Deal-on-demand”), то следует выбрать ответ “Да”.

Нажимаем Enter.

Выбираем место хранения почты. Либо это /var/mail, либо в домашнем каталоге пользователя.

Нажимаем Enter.

Для удобства конфигурирования, можно разделить большой файл конфигурации на несколько мелких.

Делаем выбор, нажав Enter.

На этом приложение завершит свою работу.

Настроим данные о почтовом ящике с которого будут уходить письма. Для этого откроем файл /etc/exim4/passwd.client в любом текстовом редакторе:

sudo nano /etc/exim4/passwd.client

В этот файл надо вписать строку с указанием сервера, логина и пароля, разделенные двоеточием.

Например:

Для GMail:

smtp.google.com:<a href="mailto:username@gmail.com">username@gmail.com</a>:user_password

Yandex:

smtp.yandex.ru:username@yandex.ru:user_password

Для собственного SMTP-сервера:

mail.example.com:username@example.com:user_password

Результат будет примерно таким.

Сохраняем.

Так как в самом начале мы не выбирали разделение большого файла на мелкие -  отредактируем файл exim4.conf.template:

sudo nano /etc/exim4/exim4.conf.template

Находим в файле строку:

.ifdef DCconfig_smarthost DCconfig_satellite

После нее вставляем параметры:

send_via_gmail:

driver = manualroute

domains = ! +local_domains

transport = gmail_smtp

route_list = * smtp.gmail.com

Далее ищем строку:

transport/30_exim4-config_remote_smtp_smarthost

После нее вставляем строки:

gmail_smtp:

driver = smtp

port = 587

hosts_require_auth = $host_address

hosts_require_tls = $host_address

Затем ищем строку:

begin authenticators

И указываем эти параметры:

gmail_login:

driver = plaintext

public_name = login

client_send = : user@gmail.com : password

Замените параметры поля “client_send” на свои.

Удаляем из файла следующие строки (находится почти в конце файла):
login:

 driver = plaintext

 public_name = LOGIN

.ifndef AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS

 # Return empty string if not non-TLS AND looking up $host in passwd-file

 # yields a non-empty string; fail otherwise.

 client_send = "<; ${if and{

                         {!eq{$tls_out_cipher}{}}

                         {!eq{PASSWDLINE}{}}

                        }

                     {}fail}

                ; ${extract{1}{::}{PASSWDLINE}}

                ; ${sg{PASSWDLINE}{N([^:]+:)(.*)N}{$2}}"

.endif

Важно! Мы выполняли настройку для серверов gmail. Для сторонних почтовых адресов надо указывать соответствующие параметры.

Сохраняем внесенные изменения.

Перезапускаем службу:

sudo /etc/init.d/exim4 restart

Отправим письмо самому себе с целью проверки:

echo «Testing our Exim» | mail -s Test <a href="mailto:example@example.com">example@example.com</a>

Гугл пришлет оповещение:

Разрешите это действие в настройках почтового сервиса.