Доброго дня.
Сервер, а точнее IP сервера попал в бан google. И надо что-то предпринимать, т.к. потдержка корпорации добра не стримится помоч тем кто им не платит, пробуем решить данную проблему своими силами. И одно из таких решений это подтверждение кашерности письма по средсвам DKIM.
Этот пост я честно списал с других ресурсов, чисто для себя, чтобы не искать в следующий раз и не вспоминать что да как было.
Оригинал взят с этих статей: статья 1, статья 2.
И так начнем устанавливаем OpenDKIM
Создадим дирректорю для наших будущих ключей
Теперь надо генерировать ключи «открытый» и «закрытый».
вот тут один момент, в описании говорится что -d -это домен, а -s — селектор. Селектор — это приставка что ли, по которой будет потом искаться ключ в DNS, потом покажу.
И так создались два файла example.private и example.txt.
Сразу возьмем и добавим из файла example.txt хэш код на сервер DNS — обращаю ваше внимание что нам нужно только та информация, которая включена в двойные кавычки (кавычки не копируем).
И в этом же файле наблюдаем такую запись example._domainkey — вот это и есть селектор (без ._domainkey), это буде TXT запись на нашем DNS сервере. Примерно должно получиться следующая запись в DNS
Файлам ключей обязательно нужно дать доступ для группы, в которой работает OpenDKIM:
chmod g+r /etc/postfix/dkim/*
В файл конфигурации /etc/opendkim.conf записываем:
SyslogSuccess yes
# на время отладки включим расширенное логгирование
LogWhy yes
X-Header yes
Canonicalization relaxed/relaxed
# подпись и проверка подписей
Mode sv
# если только подписываем
#Mode s
# список ключей -
KeyTable file:/etc/postfix/dkim/keytable
# соответствие адресов/доменов и ключей -
SigningTable file:/etc/postfix/dkim/signingtable
# если вы подписываете и на других серверах -
#ExternalIgnoreList file:/etc/postfix/dkim/trusted
# список внутренних хостов, почта которых требует подписи -
#InternalHosts file:/etc/postfix/dkim/internal
Список имеющихся ключей укажем в файле /etc/postfix/dkim/keytable:
# в качестве названия удобно использовать имя DNS записи с ключем
mail.example.com example.com:example:/etc/postfix/dkim/example.private
# ключей может быть сколько угодно
#mx._domainkey.example.net example.net:mx:/etc/postfix/dkim/mx.private
# (список ключей может быть и в БД - продробней в манах)
Объясним OpenDKIM почту каких доменов какими ключами подписывать в файле /etc/postfix/dkim/signingtable:
example.com mail.example.com
#example.net mx._domainkey.example.net
# все остальные адреса тоже подписываем
#* mail.example.com
# (подробное описание формат есть в man)
В других файлах, указаных в директивах ExternalIgnoreList и InternalHosts, содержится просто список хостов и/или IP-адресов каждый на новой строке.
В файле /etc/default/opendkim объясним DKIM-демону где ему ждать подключений:
Наконец, добавим в конец /etc/postfix/main.cf следующие строки:
milter_protocol = 2
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
Я добавил еще вот такую запись в DNS
Перезапускаем postfix
Перезапускаем opendkim
Проверить отрабатывает или нет ваш DKIM (там же и SPF) можно отослав тестовое письмо на адрес check-auth@verifier.port25.com в ответ придет письмо с развернутым ответом что да как 🙂
Теперь поговорим об SPF
Настраивается еще проще чем DKIM. Нужно просто в DNS добавить запись типа TXT/SPF
где указывается IP вашего домена. Причем запись вешается прям на сам домен.
Немного про SPF
Ну и последнее — DMARC
Немного о DMARC.
Говорят их очень любит Google, что же не будем его обижать, добавим запись вида
что означает все письма которые не прошли проверку отправлять на такой то адрес.