Николай Ланец
7 мар. 2019 г., 9:10

Настройка DKIM в @prisma-cms

Всем привет!

Сегодня я кратко опишу процедуру запуска @prisma-cms с настройками DKIM, то есть с ключом подтверждения домена для отправляемых с сервера писем. Без него, в большинстве случаев отправки писем с сервера, они будут отправляться в спам (а то и вовсе не приниматься почтовыми серверами).

1. Устанавливаем мейл-сервер для отладки.
Если мы занимаемся первичной разработкой и отладкой локально, то имеет смысл локально установить мейл-сервер для отладки, который будет на себя ловить всю отправляемую почту. Это очень удобно, так как часто реальные почтовые серверы могут не просто в спам письма отправлять, но и вовсе не принимать письма, если с ними что-то не так. А со своим почтовым сервером мы сможем получить все письма и посмотреть их исходники.

Для установки выполняем
docker run -d -p 1025:1025 -p 8025:8025 mailhog/mailhog
Если все ОК, откройте http://localhost:8025, должен крутиться веб-интерфейс установленного почтового клиента. http://joxi.ru/MAjz7eNc4zjzzA

2. Генерируем ключи.
Идем на https://dkimcore.org/tools/keys.html, указываем свой домен и получаем приватный и публичный ключ. Приватный ключ надо сохранить на сервер, к примеру в /opt/dkim/mydomain/privatekey.txt.
Публичный ключ мы себе никуда не сохраняем, а просто записываем в DNS. Пример:
23423423.vr._domainkey.mydomain.ru. IN TXT ( "v=DKIM1;t=s;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCjmPjzupTjls1rGj2vUbjiZRX" "NO2WkHe3aQ4V65tuzSQkkpdBlAaVLRdvs3UoiXV5XRo10ZA6YWFCYHR/vHUgSFsr" "2pdpLQaGKul0lk3aFYV3IqKEmppEXGgxppB9XsgqS/b9MbEUHEQBnOggezmdWPYV" "lqHexiFbVWJfqLn9EwIDAQAB")
То есть надо в управлении DNS создать TXT-запись поддомен 23423423.vr._domainkey со значением вида v=DKIM1;p=PublicKEY (поддомен конечно же у вас будет указан другой).

3. Запускаем @prisma-cms с указанием DKIM-ключа. Полная команда будет выглядеть вот так:
SendmailDkimKeySelector=1551899575.vr SendmailDkimFile=/opt/dkim/ar-vr.dev/privatekey.txt SendmailTest=true APP_SECRET=MyAwesomeSecret endpoint=http://localhost:4466/ar-vr/dev yarn start-server
Обратите внимание! Здесь есть путаница. Поддомен предлагается создать 1551899575.vr._domainkey, но key selector не 1551899575.vr._domainkey, а 1551899575.vr. Если указать 1551899575.vr._domainkey, то будет ошибка, точнее об этом не будет сказано, но если смотреть исходники полученного письма в гугле, то DKIM не пройден. http://joxi.ru/nAyYL6ZSYZ9wPA
Можно еще проверить ключ здесь: https://dkimcore.org/tools/, только вводим домен не в раздел Generate a DKIM Core Key, а Check a published DKIM Core Key, и туда же указываем ключ поддомена, в моем случае 1551899575.vr Должно быть все ОК http://joxi.ru/DmBJ1RaCw0qqKm

4. Проверяем ключ.
Запускаем фронт
yarn start
Регистрируем пользователя (если его еще нет), после этого разлогиниваемся и запрашиваем новый пароль. Ждем некоторое время (по умолчанию рассылка писем выполняется раз в минуту или типа того), или просто перезапускаем сервер (при запуске выполняется рассылка писем) и получаем письмо счастья. Смотрим исходник письма, есть информация о подписи: http://joxi.ru/krDq1k3tERGLvm
Если с подписью все ОК, то гугл это отметит: http://joxi.ru/n2YdR0WHoMk0am

P.S. В свое время я не раз настраивал DKIM на сервере. Тогда приходилось ставить отдельный софт, конфигурить его, sendmail конфигурить и т.п. Задачу разных подписей для разных доменов на одном сервере я и вовсе не победил... А сейчас все гораздо проще. Ничего особенно ставить и не надо.
Просто лирическое отступление...

P.P.S. Плюс к этому желательно еще добавить записи SPF и DMARK. Я создаю такие:
TXT _dmarc.mydomain.ru v=DMARC1; p=none TXT mydomain.ru v=spf1 ip4:SERVER_IP include:_spf.google.com ~all

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