У меня есть личный почтовый сервер, который я использую уже много лет; очень редко возникали проблемы с отправкой почты, поэтому я никогда не был в курсе таких вещей, как SPF, DMARC и DKIM. Недавно, во время обновления системы, я решил сделать это.
SPF был очень прост, поскольку я использовал один фиксированный IP-адрес.
DMARC почти так же прост: изначально я установил политику «нет» для получения отчетов и оставил ее на неделю или две, а затем изменил ее на «отклонить».
Теперь я реализовал фильтр подписи DKIM для почтового сервера (Курьер МТА, и нет, для этого нет готовых). Для сложных деталей я использовалдкимпи. Это также имеет простой инструмент проверки, который работает со всеми сообщениями, выполняет собственные поиски и т. д., то есть это фиктивное доказательство, поскольку есть только один способ его использования (тогда как подпись можно настроить различными способами, и, возможно, у меня останется место для того, чтобы все испортить). Это пропускает сообщения, которые, по моему мнению, должны пройти, и отклоняет те, которые, по моему мнению, не должны, так что я вполне удовлетворен тем, что работает; я запускал его на сообщениях, полученных с сервера. В настоящее время, чтобы минимизировать проблемы, я подписываю только тело и заголовок From.
Однако ни одна из моих писем не доходит до моих тестовых аккаунтов -- один из них gmail, а другой от моего интернет-провайдера. Более того, хотя у меня теперь есть адреса rua и ruf в записи DMARC, яне получая никаких отчетов для них. Раньше они оба работали как часы.
Если все, что я сделаю, это выключу фильтр(так что нет подписи DKIM), все снова работает. Я проверил, что сервер действительно пытается во всех случаях; неудачные попытки DKIM, похоже, вызывали тайм-ауты и закрывали соединения, что приводило к бесконечной отсрочке — что само по себе кажется немного странным, поскольку подразумевает, что «отклоненное» письмо даже не проверяется, однако удаление подписи — это все, что нужно, чтобы оно снова было принято. Я отнесу это на счет неоднозначностей в журнале Courier.
Я понимаю, что здесь никто не связан никакими законами, но разве это нормальная политика? Если предположить, что подпись DKIM неверна, не должен ли принимающий сервер отправить мне отчет DMARC об этом?
Так что сейчас я влип. Хотя такие вещи, как MXToolbox, дают мне блестящие результаты, я не нашел бесплатного сервиса, который активно тестирует подпись DKIM, принимая почту, за исключением одного, который, похоже, сделал то же, что и другие серверы — никогда не принимает почту, которую должен был проверять (не знаю, является ли это потенциальной подсказкой).
Вот соответствующие записи DNS из dig
:
ФЗП:
cognitivedissonance.ca. 3600 IN TXT "v=spf1 ip4:138.197.150.177 -all"
ДКИМ:
aporia._domainkey.cognitivedissonance.ca. 3600 IN TXT "v=DKIM1; k=rsa; h=sha256; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAosptGk+J2mdjjc7RWmcnQ3yBqx1JT/lA0bw4GJCzZ+esa0f8rjHhPiW6NnUr64Kf5h0fPEthQhYGTjjw3jAd/3EE28hGA30+jODxEK7A0+5aeI82fWa/ZZk9FvyIhf+UkkX1B0klYhCRW5r91smJ+rwYrr2B6jOrw0DReHTAZ51NACSWI7ov2mA" "UIh2l8blA8hFFBOBwxlzC+smRsYlZCKZfsSMkyS/XIm2m58QNfw/aCHp5VufSrf/hh7f6AGKTgxHfgs+8RBbYdHEM2LAMT+WYsITC3R0OYfgplzWna6PRB9lx+FFzTtT/8XClYfUJ6rwWwM4koeX0yt9gDr/03QIDAQAB"
Обратите внимание, что полное доменное имя почтового сервера —
aporia.cognitivedissonance.ca
, поэтому я использовал егоaporia
в качестве селектора DKIM из-за недостатка воображения. Домен электронной почты — простоcognitivedissonance.ca
. Стоит ли мне использовать полное доменное имя (т. е.aporia._domainkey.aporia.cognitivedissonance.ca
)?ДМАРК:
_dmarc.cognitivedissonance.ca. 3600 IN TXT "v=DMARC1;p=reject;pct=100;rua=mailto:[email protected],mailto:[email protected];ruf=mailto:[email protected],mailto:[email protected]; "
Там есть несколько дополнительных mailto для сервиса проверки dmarc, на который я подписался. К сожалению, они не проверяют подписи DKIM напрямую.
Наконец, пример подписи:
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=cognitivedissonance.ca; [email protected]; q=dns/txt;
s=aporia; t=1650468130; h=from;
bh=3N81YR+AxHZqpkdMAh4Jti6JpRmUrlzO5bUjUoWdGeg=;
b=kNzUid2LG8TfHoegur3JzlcktiJT+5A1E2en+IlV/GgDMZWL0Ft/4kE02LGFzb2kTMkav
c9jLUqd2+NCrLDzVRBxgwif++vDwoljCI1X0wvbcCqhfA3uElcCuhCAtBkl/ZNqLR0H1Gjq
XXA801KqyVrvottuv0+PmEOvqQ8skTpBvl4Da8JjQ73Zscm3/5Mfk0dGTLlggNgapszsP9z
nt/1Oi6gzLasX933wIdLZWVex8QNfKr8+MTx6bmpVodaeklR+281u8k1zhCBu5pWrzlavUh
CbWjUm4j3YbeztpG98r9MZOVKbJZyHaiHWcRa1vEq3Cz8AEnRyRkQhd5WtvA==
решение1
В конце концов я нашел онлайн-валидатор DKIM:https://www.appmaildev.com/en/dkimОни протестируют загрузку существующего письма или предоставят вам тестовый адрес для отправки.
Я не уверен на 100%, в чем была изначальная проблема, потому что к тому времени, как я ее нашел, я создал другую: использование функции «плавающего IP» Digital Ocean для установки моих записей DNS. ОС на самом деле не видит этот адрес, а другие почтовые серверы сообщали о почте как о полученной с этого «реального» IP (который все еще действителен). Стоит отметитьесли вы являетесь пользователем Droplet.
Чтобы было ясно, это не могло быть изначальной проблемой, потому что я включил плавающий IP только вчера, когда в отчаянии решил переместить узел, чтобы посмотреть, не выпало ли что-нибудь из дерева. Однако...
Я не нашел ни одного бесплатного сервиса, который бы активно проверял подпись DKIM, принимая почту, за исключением одного, который, похоже, сделал то же, что и другие серверы — никогда не принимает почту, которую он должен проверять (не знаю, является ли это потенциальной подсказкой).
Обратите внимание, что сервис не был тем, на который ссылались в первом абзаце. В любом случае, то, что другие почтовые серверы в целом отказывали в соединениях (в отличие от возврата почты), похоже, кричит "проблема DNS". Почему именно это стало проблемой, когда новая установка сервера работала месяц, я до сих пор не знаю, так что это на самом деле только частичный ответ -- хотя он и объясняетПочему серверы электронной почты перестают отправлять отчеты DMARC. Приведя все мои данные в порядок с записями DNS (записи A для домена и узла aporia, сопоставление SPF и т. д.), наконец-то все работает так, как должно быть.