Настройка связки DKIM + sendmail на сервере Ubuntu

Инструкция о настройке DKIM-подписи для работы с sendmail на сервере с Linux Ubuntu, чтобы отправляемые письма успешно доходили до адресатов, преодолевая спам-фильтры.

Настройка DKIM-записи для работы с sendmail на сервере с Linux Ubuntu

Если вдруг перед вами встала задача использования Sendmail для отправки почты вместо использования альтернативных способов, стоит подумать о том, чтобы верно настроить DKIM-запись, чем обезопасить свою корреспонденцию от придирчивых спам-фильтров. Однако, не всегда этот процесс проходит просто и быстро. В сети множество инструкций о том, как это сделать, но итогом нескольких часов настройки стал собственный опыт и этот мануал.

Сегодняшняя инструкция протестирована на сервере с Linux Ubuntu 16.04.

Сначала установка sendmail

Тут всё просто. Достаточно выполнить команду:

sudo apt-get update

sudo apt-get install sendmail

Если не сработает, иногда приходится добавить также:

sudo apt-get install sensible-mda

sudo apt-get install sendmail-bin

После этого стоит обновить файл hosts, открыв его на редактирование командой:

sudo nano /etc/hosts

Добавляем туда строку:

127.0.0.1 localhost localhost.localdomain имя_вашего_хоста

Здесь обратите внимание на «имя вашего хоста», которое необходимо заменить на справедливое для вас значение.

Затем пересобираем конфиг и перезапускаем сервис:

sendmailconfig

service sendmail restart

Приступаем к DKIM

Нам потребуются пакеты. Доустанваливаем тех, что скорее всего, пока не хватает:

apt-get install opendkim opendkim-tools

Затем создаём директорию для хранения ключей:

mkdir -p /etc/opendkim/keys/ваш_домен_ру

Здесь и далее мы будем использовать в коде подстановку «ваш_домен_ру», которую необходимо заменить на соответствующее название домена. Будьте внимательны, это нам потребуется ещё ни один раз.

Далее потребуется сгенерировать ключи. Приватные будут храниться на вашем сервере, а публичные нужно будет прописать в виде DNS-записей у хостера. Здесь же придумываем название селектора, которое сейчас и в дальнейшем будем использовать. В нашем случае это будет слово «mail».

opendkim-genkey -D /etc/opendkim/keys/your-domain.com -d your-domain.com -s default

После выполнения команды в директории хранения ключей будет создано два файла с именами «mail.private» и «mail.txt».

Теперь назначаем верные права доступа и владельца:

chown -R opendkim:opendkim /etc/opendkim/keys/ващ_домен_ру

chmod 640 /etc/opendkim/keys/your-domain.com/mail.private

chmod 644 /etc/opendkim/keys/your-domain.com/mail.txt

Залезаем в конфиг командой:

sudo nano /etc/opendkim.conf

И вставляем туда эти строки (это пример работающего конфига, который подойдёт для большинства пользователей):

AutoRestart Yes

AutoRestartRate 10/1h

UMask 002

Syslog yes

SyslogSuccess Yes

LogWhy Yes

Canonicalization relaxed/simple

ExternalIgnoreList refile:/etc/opendkim/TrustedHosts

InternalHosts refile:/etc/opendkim/TrustedHosts

KeyTable refile:/etc/opendkim/KeyTable

SigningTable refile:/etc/opendkim/SigningTable

Mode sv

PidFile /var/run/opendkim/opendkim.pid

 

SignatureAlgorithm rsa-sha256

UserID opendkim:opendkim

Socket inet:8891@127.0.0.1

Domain ваш_домен_ру

Selector mail

Теперь создаём те самые три файла, что описали в конфиге. Сначала первый:

sudo nano /etc/opendkim/KeyTable

Вставляем содержимое:

mail._domainkey.ваш_домен_ру ваш_домен_ру:mail:/etc/opendkim/keys/ващ_домен_ру/mail.private

Создаём второй:

sudo nano /etc/opendkim/SigningTable

Содержимое:

*@ваш_домен_ру mail._domainkey.ваш_домен_ру

Переходим к третьему:

sudo nano /etc/opendkim/TrustedHosts

Вставляем туда строки:

127.0.0.1

localhost

ваш_домен_ру

Снова конфигурируем sendmail, сообщая о том, что теперь есть подпись DKIM. Открываем на редактирование файл:

sudo nano /etc/mail/sendmail.mc

И добавляем в конец файла строку:

INPUT_MAIL_FILTER(`opendkim', `S=inet:8891@127.0.0.1')

Редактируем ещё один конфиг:

sudo nano /etc/default/opendkim

Здесь нужно раскомментировать строку «SOCKET="inet:8891@localhost"».

Затем снова пересобираем конфиг sendmail, перезапускаем службу и запускаем openDKIM:

sendmailconfig

service sendmail restart

service opendkim start

Пора добавить DNS-записи

Для начала нам потребуется просмотреть содержимое файла ключа:

cat /etc/opendkim/keys/ваш_домен_ру/mail.txt

В итоге увидим что-то в духе:

default._domainkey IN TXT ( «v=DKIM1; k=rsa; "

«p=MIGfMA0000qGSIb3DQEBAQUAA4GNADCxxxxBgQCgmHiX7BojGFoggggXa25Xs444WRhLmNpnv7777TY7FU4mG/WxtgrpV////Tzt3EZQ1/BpyICjlJZXIhgggguePnyd/iNFh4xKF3pi8yoqWB0eyq6KI/fXUbUWdd+NiU4ffffv89St92g24UFaElEl54XXCa6GlllldHFMetkBXwID/QAB» ) ; ---— DKIM key default for droidnews.ru

Теперь в панели хостера необходимо добавить TXT-Запись «mail._domainkey» (здесь «mail» снова выбранный нами ранее селектор). В качестве значения указываем всё, что прописано в кавычках, включая кавычки.

Настройка DKIM-записи для работы с sendmail на сервере с Linux Ubuntu

Проверяем результат

Чтобы понять, верно ли у нас всё получилось, можно, например, воспользоваться сервисом https://www.mail-tester.com или http://www.isnotspam.com, http://www.appmaildev.com/en/dkim, https://mxtoolbox.com/SuperTool.aspx, которые расскажут о том, удалось отправить подписанное письмо с вашего сервера, а также проверить вашу DKIM-запись на валидность. Кроме того, даст ещё некоторые полезные советы, как повысить рейтинг вашего отправления, чтобы оно было успешно доставлено до адресата, минуя спам-фильтры.

Ещё пара полезных записей в DNS

Почтовые сервисы также одобрят у вас появление записи DMARC.

Для этого в панели хостера добавляем TXT-запись «_ваш_домен_ру» (первый знак нижнего подчёркивания надо оставить) со следующим значением «v=DMARC1; p=none».

Кроме того, добавим SPF-запись. TXT-запись с названием «ваш_домен_ру» и значением «v=spf1 a mx -all».

Теперь ваши письма должны всегда успешно доходить до адресатов.

Если вам интересны новости мира ИТ так же сильно, как нам, подписывайтесь на Telegram-канал. Там все материалы появляются максимально оперативно. Или, может быть, удобнее "Вконтакте"?

Фото автораАвтор: Андрей "zeleboba" Матвеев
Шатаюсь, слушаю и наблюдаю. Пишу тексты.

Поговорить?


Уже наговорили:
Аватар автораМаксим:
Спасибо, помогло, только у вас опечатка:
"opendkim-genkey -D /etc/opendkim/keys/your-domain.com -d your-domain.com -s default",
далее по тексту селектор mail, т.е. нужно:
"opendkim-genkey -D /etc/opendkim/keys/your-domain.com -d your-domain.com -s mail".

Читайте нас где удобно

Ещё на эту тему было

Для тех, кто долистал

Ай-ти шуточка бонусом. Купил телефон на Android, гуляю с зарядкой.