Я создал DKIM-запись на одном из моих хостинг-сайтов (pair.com), используя их автоматизированную систему. Я добавил TXT-запись с хостом и ключом DKIM на свой DNS-сервер DigitalOcean.
Если я отправляю письмо через Thunderbird, проверка DKIM проходит успешно. Однако когда Discourse отправляет письмо, используя те же самые данные сервера и учётной записи, я получаю:
Подпись DKIM выполняется на отправляющем почтовом сервере, то есть после того, как Discourse передаст письмо SMTP-серверу, который настроен для использования.
Если вы видите несоответствие хеша, это означает, что либо письмо было изменено после подписания, либо пара ключей не совпадает.
Если вы точно используете одинаковые данные в Thunderbird и Discourse (перезапустили ли вы контейнер, чтобы убедиться, что он использует данные из app.yml?), я был бы удивлен, если бы письмо подписывалось другим ключом или использовался другой селектор, поэтому я ожидал бы увидеть тот же результат, если бы пара ключей не совпадала.
Возможно, адрес отправителя отличается, и ваш почтовый провайдер подписывает письмо по-разному в зависимости от этого?
По сути, что-то происходит после того, как письмо покинуло Discourse. Если вы не можете найти очевидную причину, например, адрес отправителя, возможно, вам потребуется связаться с вашим почтовым провайдером, чтобы узнать, что происходит.
Я провёл серию дополнительных тестов и выяснил, что проблема заключалась в том, что адрес получателя (TO), с которым я тестировал, пересылал почту в Gmail. Если же отправлять письмо напрямую в Gmail, хэш проходит проверку.
Тем не менее, это всё ещё вызывает у меня недоумение: я смотрю на заголовки других писем, отправленных на этот адрес, и хэш DKIM проходит. Почему в этом случае всё иначе?