Удобно отправлять на email важные уведомления от сервисов и программ в Linux (Debian). Для этого настроим Linux Mail сервер (SMTP сервер) exim4 в режиме только отправки. Дополнительно настроим, чтобы письма от exim4 не попадали в спам.

Почему только на отправку?

Обработка входящих email требует значительных ресурсов. А нам нужно только отправлять email с уведомлениями и предупреждениями от сервисов и программ, получать ничего не нужно. Поэтому обработкой входящих email заниматься и не будем.

Установка и настройка Linux Mail сервера

Exim4 — это простой почтовый сервер (SMTP сервер). Устанавливаем exim4 с помощью команды:

apt install exim4

Настраиваем exim4:

dpkg-reconfigure exim4-config

Первое окно информирует нас, что если мы настраиваем почтовый сервер exim4 на системе с динамическим IP адресом, то должны настроить отправку исходящей почты на другой SMTP-сервер, называемый smarthost, он и будет отправлять письма. Иначе, письмо с динамического IP-адреса будет заблокировано принимающей почту системой защитой от спама.

Linux Mail Server configuration

У меня статический IP-адрес, и настройка smarthost тут рассматриваться не будет.

Будем отправлять email самостоятельно, напрямую, используя SMTP. Выбираем пункт internet site; mail is sent and received directly using SMTP:

mail is sent and received directly using SMTP

В поле System mail name указываем полное hostname системы, то же, что и в файле /etc/hostname:

System mail name

Обработкой входящих email не хотим заниматься, поэтому делаем запрет входящих соединений. Для этого в поле IP-addresses to listen on for incoming SMTP connections вводим локальный IP-адрес:

127.0.0.1
 IP-addresses to listen on for incoming SMTP connections

Поле Other destinations for which mail is accepted оставляем пустым:

Other destinations for which mail is accepted

Поле Domains to relay mail for тоже оставляем пустым:

Domains to relay mail for

Следующее поле Machines to relay mail for тоже оставляем пустым:

Machines to relay mail for

На вопрос Keep number of DNS-queries minimal (Dial-on-Demand)? отвечаем No:

Keep number of DNS-queries minimal (Dial-on-Demand)

На следующем шаге выбираем значение по умолчанию mbox format in /var/mail/:

Delivery method for local mail

Следующий вопрос Split configuration into small files? Отвечаем No.

Split configuration into small files

И тогда будет один большой конфигурационный файл /etc/exim4/exim4.conf.template, а не много маленьких файлов. На этом настройка exim4 завершена.

Запуск exim4

Чтобы запустить Linux Mail сервер exim4, вводим команду:

/etc/init.d/exim4 start
Запуск Linux Mail сервера Exim4

Логи exim4 по умолчанию располагаются в файле /var/log/exim4/mainlog, просмотреть их удобно командой:

tail -n 20 /var/log/exim4/mainlog

Проверка работоспособности

Проверим работоспособность Linux Mail сервера, отправим email на свой почтовый ящик:

 echo "Hello, world!" | mail -s 'Subject' your_mail@yandex.ru
Проверка работоспособности Linux Mail сервера

Проверяем свой почтовый ящик. Ура! Сообщение пришло.

Наш email, отправленный exim4, почтовый сервер Яндекс в папку Спам не положил. Но радом с отправителем выводит сообщение «Мы не уверены в подлинности отправителя этого письма. Возможно, данные были подменены».

Если отправить тот же email на свой Google почтовый ящик, то почтовый сервер Google вообще не доставит email, посчитав его спамом.

Настройки, чтобы письма не попадали в спам

Сделаем дополнительные настройки, чтобы почтовые сервера не блокировали и не помещали в спам письма от exim4.

PTR запись (обратная DNS запись)

PTR запись еще называют обратной DNS записью. С помощью DNS записи по имени домена можно узнать IP адрес сервера, на котором располагается домен. А с помощью PTR записи, наоборот, по IP адресу сервера можно определить связанное с этим IP адресом доменное имя.

Почтовые сервера активно используют PTR записи: берут IP, откуда пришло письмо, смотрят PTR запись для данного IP и сверяют полученное доменное имя c указанным доменным именем отправителя письма. Если доменные имена не совпадают, то письмо попадает в спам или вообще блокируется.

Проверим DNS запись для домена ya.ru:

host ya.ru
Проверка DNS записи

А теперь проверим PTR запись для IP адреса 87.250.250.242:

host 87.250.250.242
Проверка PTR записи

Для домена ya.ru PTR запись корректно настроена. В моем же случае PTR запись настроена некорректно:

Неправильно настроенная PTR запись

А исправить эту некорректную PTR запись не представляется возможным. Просто отсутствует услуга по правке PTR записи у провайдера, предоставившего статический IP адрес, на котором Linux система с установленным exim4.

Ничего! Настроим две записи: SPF и DKIM, и письма не будут блокироваться и попадать в спам.

SPF запись

SPF запись указывает почтовым серверам, с каких ресурсов будут приходить письма. Прописывается SPF запись в DNS записях домена.

Заходим на хостинг, выбираем нужный домен, переходим в раздел Управление записями DNS, нажимаем кнопку Добавить запись:

Управление записями DNS

Тип записи выбираем TXT. Значение записи:

v=spf1 +a +mx -all

v=spf1 — является версией, всегда spf1;

+a — разрешено отправлять письма с адреса, указанного в A записи домена;

+mx — разрешено отправлять письма c адреса, указанного в MX записи домена;

-all — отклонять письма, не соответствующие политике.

SPF запись

Ура! SPF запись добавлена. Но нужно выждать время, чтобы исправленные DNS записи домена обновились на серверах.

Проверяем работоспособность SPF записи, заново отправляем тестовые письма на свой Яндекс-ящик и на Google-ящик. О! Теперь почтовый сервер Яндекс сообщает, что Отправитель письма подтверждён:

А почтовый сервер Google не заблокировал письмо, как раньше, а пропустил, но положил в папку Спам:

Письмо с SPF записью в Google-почте

DKIM запись (подпись к письмам)

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

Почтовый сервер, при получении письма с цифровой подписью, сверяет подпись с публичным ключом, который указан в DNS записях домена. Если подпись проверку не прошла, то отправитель достоверным не является, и что делать с таким письмом решает почтовый сервер, руководствуясь своей политикой.

Устанавливаем необходимые пакеты для формирования DKIM записи:

apt install opendkim opendkim-tools

Создаем директорию для хранения открытого и закрытого ключей, необходимых для формирования цифровой подписи:

mkdir /etc/exim4/dkim

Создаем пару ключей (открытый и закрытый) с помощью команды:

opendkim-genkey -D /etc/exim4/dkim/ -d domain_name -s mail

где /etc/exim4/dkim/ — директория для хранения ключей, созданная на предыдущем шаге;

domain_name — полное доменное имя, то же, что и в файле /etc/hostname;

mail — это, так называемый, DKIM-селектор.

После выполнения команды в директории /etc/exim4/dkim/ появятся 2 файла: mail.private — закрытый ключ, mail.txt — открытый ключ. Переименовываем закрытый ключ:

mv /etc/exim4/dkim/mail.private /etc/exim4/dkim/domain_name.key

где domain_name — полное доменное имя, то же, что и в файле /etc/hostname.

Меняем владельца директории /etc/exim4/dkim/ и всех вложенных файлов:

chown -R Debian-exim:Debian-exim /etc/exim4/dkim/

Вносим изменения в конфигурационный файл /etc/exim4/exim4.conf.template, чтобы exim4 использовал созданный приватный ключ. В конфигурационном файле /etc/exim4/exim4.conf.template перед секцией remote_smtp добавляем следующий текст:

#DKIM
DKIM_DOMAIN = domain_name
DKIM_KEY_FILE = /etc/exim4/dkim/DKIM_DOMAIN.key
DKIM_PRIVATE_KEY = ${if exists{DKIM_KEY_FILE}{DKIM_KEY_FILE}{0}}
DKIM_SELECTOR = mail

где domain_name — полное доменное имя, то же, что и в файле /etc/hostname.

Перезагружаем exim4, чтобы изменения вступили в силу:

/etc/init.d/exim4 restart

Пропишем DKIM запись в DNS записях домена. Для этого заходим на хостинг, выбираем нужный домен, переходим в раздел Управление записями DNS, нажимаем кнопку Добавить запись. Добавляем TXT-запись для поддомена mail._domainkey. Значение записи копируем из открытого ключа /etc/exim4/dkim/mail.txt.

DKIM запись

Ура! DKIM запись добавлена.

Выждем время, чтобы обновились DNS записи на серверах, и опять отправляем тестовые письма на Яндекс-ящик и на Google-ящик. Смотрите! Почтовый сервер Яндекс увидел цифровую подпись у письма:

Письмо с SPF и DKIM записями в Яндекс-почте

О! Почтовый сервер Google поместил письмо в папку Входящие:

Письмо с SPF и DKIM записями в Google-почте

Выводы

Мы настроили Linux Mail сервер (exim4) на отправку email. Дополнительно настроили, чтобы электронные письма не блокировались почтовыми серверами, их защитой от спама. Теперь все важные уведомления от скриптов и программ можно отправлять себе на почтовый ящик. Еще можно отправлять email, не требующие ответа, клиентам или пользователям сайта. Например, email с требованием активации вновь зарегистрированного пользователя сайта.

Как это может помочь бизнесу?

Почта, отправленная не с бесплатного почтового ящика, а с домена, на котором располагается сайт бизнеса, — это солидно! А если еще и письма с доменной почты успешно доставляются и не попадают у клиентов в спам, какая еще помощь бизнесу нужна???

Комментарии

Добавить комментарий

Этот сайт защищен reCAPTCHA, и к нему применяются Google Политика конфиденциальности и Условия использования.

Войти

Зарегистрироваться

Сбросить пароль

Пожалуйста, введите ваше имя пользователя или эл. адрес, вы получите письмо со ссылкой для сброса пароля.