Как не надо настраивать DNS и почту на примере nic.ru
Столкнулись с проблемой прохождения почты от nic.ru, при разбирательстве всплыла интересная проблема с их стороны.
Предыстория
У нас используются SSL-сертификаты, которые были получены через nic.ru. Настало время их продлять, в связи чем была отправлена заявка в nic.ru. Заявки они принимают через email, и для SSL у них адрес приёма - ssl@nic.ru.
Для обработки заявок у них внутри используется система OTRS. При получении запроса на ssl@nic.ru создаётся тикет и клиенту отправляется автосгенерированное письмо с номером заявки.
Вот с этим письмом как раз и обнаружилась проблема - наш почтовый сервер его не принимал вот с таким сообщением:
Oct 9 15:31:00 mail1 postfix/smtpd[12586]: NOQUEUE: reject: RCPT from ext2.msk-relay.otrs.hostcomm.ru[89.104.90.14]: 450 4.1.8 <otrs@otrs.nic.ru>: Sender address rejected: Domain not found; from=<otrs@otrs.nic.ru> to=<XX@XX.ru> proto=ESMTP helo=<ext2.msk-relay.otrs.hostcomm.ru>
Что мы тут видим: письмо отклонено по той причине, что сработала проверка на существование домена, который указан в MAIL FROM
на этапе SMTP-сессии (так называемый конверт, envelope-from). А именно, домен otrs.nic.ru
, указанный в конверте, не резолвится.
Такая ситуация, когда домен в envelope-from не существует, является явной ошибкой. Множество почтовых систем используют такую проверку.
Дальнейшее развитие ситуации
Позвонили в nic.ru и обрисовали проблему, причём на тех. спеца удалось выйти практически сразу, без прохождения сотен линий поддержки, что конечно является несомненным плюсом.
Первая реакция nic.ru - "а у нас домен otrs.nic.ru резолвится!". Логично, ведь с этим OTRS работают операторы, и внутри корпоративной сети у них всё работает.
Разбирательство
Дальше, чтобы показать им наличие проблемы, было проведено небольшое расследование.
Самая первая проверка:
% host otrs.nic.ru.
Host otrs.nic.ru. not found: 3(NXDOMAIN)
Далее смотрим подробно с помощью dig
:
% dig otrs.nic.ru. a
; <<>> DiG 9.11.0-P3 <<>> otrs.nic.ru. a
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 18745
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;otrs.nic.ru. IN A
;; ANSWER SECTION:
otrs.nic.ru. 264 IN CNAME otrs1.int.nic.ru.
;; AUTHORITY SECTION:
int.nic.ru. 263 IN SOA dns.infra.nic.ru. noc-dns.nic.ru. 650127673 10800 3600 1209600 3600
;; Query time: 0 msec
;; SERVER: 172.18.36.1#53(172.18.36.1)
;; WHEN: Mon Oct 09 16:51:33 +05 2017
;; MSG SIZE rcvd: 118
Ага, а тут уже есть нечто интересное - CNAME-запись: otrs.nic.ru. 264 IN CNAME otrs1.int.nic.ru.
Также здесь мы видим в AUTHORITY SECTION:, что за зону int.nic.ru.
авторитативным сервером указан хост dns.infra.nic.ru.
Далее спросим у этого авторитативного сервера, какие ns-ы отвечают за зону int.nic.ru.
:
% dig @dns.infra.nic.ru. int.nic.ru. ns
; <<>> DiG 9.11.0-P3 <<>> @dns.infra.nic.ru. int.nic.ru. ns
; (3 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44403
;; flags: qr aa rd; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 4
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;int.nic.ru. IN NS
;; ANSWER SECTION:
int.nic.ru. 300 IN NS dns2.infra.nic.ru.
int.nic.ru. 300 IN NS dns3.infra.nic.ru.
int.nic.ru. 300 IN NS dns1.infra.nic.ru.
;; ADDITIONAL SECTION:
dns1.infra.nic.ru. 43200 IN A 89.104.90.24
dns2.infra.nic.ru. 43200 IN A 89.104.94.10
dns3.infra.nic.ru. 43200 IN A 77.222.41.180
;; Query time: 41 msec
;; SERVER: 77.222.41.180#53(77.222.41.180)
;; WHEN: Mon Oct 09 17:01:22 +05 2017
;; MSG SIZE rcvd: 150
Спросим у dns1.infra.nic.ru.
A-запись хоста otrs1.int.nic.ru.
:
% dig @dns1.infra.nic.ru. otrs1.int.nic.ru. a
; <<>> DiG 9.11.0-P3 <<>> @dns1.infra.nic.ru. otrs1.int.nic.ru. a
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 47858
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;otrs1.int.nic.ru. IN A
;; AUTHORITY SECTION:
int.nic.ru. 300 IN SOA dns.infra.nic.ru. noc-dns.nic.ru. 650127668 10800 3600 1209600 3600
;; Query time: 36 msec
;; SERVER: 89.104.90.24#53(89.104.90.24)
;; WHEN: Mon Oct 09 17:03:02 +05 2017
;; MSG SIZE rcvd: 99
Облом, сервер не отдаёт A-запись. Очевидно, что по задумке зона int.nic.ru.
предназначена только для внутреннего использования, и записи из неё наружу не отдаются.
Hint
Чтобы упростить процедуры выяснения, что куда резолвится, можно использовать опцию +trace
у dig. Это позволяет наглядно проследить логику работы резолвера:
% dig +trace otrs1.int.nic.ru. a
; <<>> DiG 9.11.0-P3 <<>> +trace otrs1.int.nic.ru. a
;; global options: +cmd
. 3955 IN NS e.root-servers.net.
. 3955 IN NS c.root-servers.net.
. 3955 IN NS d.root-servers.net.
. 3955 IN NS k.root-servers.net.
. 3955 IN NS j.root-servers.net.
. 3955 IN NS l.root-servers.net.
. 3955 IN NS h.root-servers.net.
. 3955 IN NS f.root-servers.net.
. 3955 IN NS g.root-servers.net.
. 3955 IN NS b.root-servers.net.
. 3955 IN NS m.root-servers.net.
. 3955 IN NS i.root-servers.net.
. 3955 IN NS a.root-servers.net.
. 220851 IN RRSIG NS 8 0 518400 20171018170000 20171005160000 46809 . KL9N9hZL0+qAz3HTc+Vs9PY/BP+1atOJvb+WF6MK9UzIGRa92Kbc1yMn 0qeRFkXIVG6KuKU0kymWepJiy8BvnNhI7VlIa6n/YrX377q0KT3SHBW0 CHD6r/0io5CHtcmpgaD7P6nNmOJ7b7liytsuspQLZ8AbCJqJwuJh7WC2 vg+NmmVo9Scre3zTVEyG/WFYcnVPrZBpB3biYeW5kNapodhEmjTI38vI pkEWr9bXTv8YdjN8ASEsCVuWPldO/Ipd6ZiSYb0WodA5RV5xplNk+/5v 41bnGquU7UHVa4MEMvNUc7HEp2BM7+tjsufZ9/AyUIbRithk/SGIl4Km ZaOGIA==
;; Received 1097 bytes from 172.18.36.1#53(172.18.36.1) in 5 ms
ru. 172800 IN NS a.dns.ripn.net.
ru. 172800 IN NS b.dns.ripn.net.
ru. 172800 IN NS d.dns.ripn.net.
ru. 172800 IN NS e.dns.ripn.net.
ru. 172800 IN NS f.dns.ripn.net.
ru. 86400 IN DS 33094 8 2 7228B0DCE8E4DEDA575C7DB69CBF55C43FCCC4BB60FBCC717DDABED1 D17338E1
ru. 86400 IN RRSIG DS 8 1 86400 20171022050000 20171009040000 46809 . EUc6ZNfPlp50ikOpUJmJTNpChNE89TIMQ5VD8z7i4iXU94zyub7NQeCe nRFYdVNuAFV6kevheydJUCOb9LUHSO9Xe7BKSbiuITYd7WpoQvLd+PM+ pb9rsyGy4mqUMzixJ2DNllea2efr/IUgiGnu5EIVQOnPb+lHE39rKiRl 9ak8m+LeMKQSusAnBglSEaKmp57eyMgMIVc5yEi+9rLIPdCjmKiQMmEX XxM79+pyajji+5BZMcuRqL6EPSILrV6V7+yQRYXoYqrS03BqFb/P/OP5 Zh3RP1dW6fRt3Sco7V9j01hxpRR6ID9BeoW2OC8w6WQ5dRxVYUcyysQX tnXWZg==
;; Received 692 bytes from 199.7.83.42#53(l.root-servers.net) in 50 ms
nic.ru. 345600 IN NS ns5.nic.ru.
nic.ru. 345600 IN NS ns6.nic.ru.
nic.ru. 345600 IN NS ns7.nic.ru.
nic.ru. 345600 IN NS ns9.nic.ru.
nic.ru. 345600 IN NS ns4-cloud.nic.ru.
nic.ru. 345600 IN NS ns8-cloud.nic.ru.
tdui9d4jkuds8b9t86gj39pgflcnlgm5.ru. 3600 IN NSEC3 1 1 3 00FF TEGFE4HCE6I000OFKHF21ET33KU8RGJM NS SOA RRSIG DNSKEY NSEC3PARAM
tdui9d4jkuds8b9t86gj39pgflcnlgm5.ru. 3600 IN RRSIG NSEC3 8 2 3600 20171031024624 20170926183416 16149 ru. tACqWYnEhfsshLtbc0YQkkiVDcxcrhu9QLcEtHTsa74s3fRAeU/49Id9 Z3nLv4N1xAX3Sh60m31U80fC/wymOaGG0QTX9d8oqHJw1/iwd1FkoWMO JLCEXNLkvlO+P5sQHLtgwnQ0gbRqF3ZZxeZB1IAWWJCwOCt1MCSYm4pH 7Mk=
oh3edjhuiabtdd2dd85qthokhepilm8v.ru. 3600 IN NSEC3 1 1 3 00FF OIEPCS7E34RFVQ0FO308VCBTOMQ2TFPI NS DS RRSIG
oh3edjhuiabtdd2dd85qthokhepilm8v.ru. 3600 IN RRSIG NSEC3 8 2 3600 20171106080424 20171001103147 16149 ru. vEo08i7PkAwZp3pYmvN2Ldo4WZeINsAX9ZIyC56xJK9A5ns3/7P9bHoF ThFh3qfXp3XK9ZWPvrJlrSu8ugKAxQNULfEd+R15KATcm8CmC5tyu0DB B0G67Gt/0wAP/xEmrTY+ywzOGE/o0vcBZsCbpFfX/T+DZEs6rrznFZr8 Eno=
;; Received 916 bytes from 193.232.142.17#53(e.dns.ripn.net) in 89 ms
int.nic.ru. 300 IN NS dns3.infra.nic.ru.
int.nic.ru. 300 IN NS dns1.infra.nic.ru.
int.nic.ru. 300 IN NS dns2.infra.nic.ru.
;; Received 156 bytes from 31.177.71.100#53(ns7.nic.ru) in 68 ms
int.nic.ru. 300 IN SOA dns.infra.nic.ru. noc-dns.nic.ru. 650127673 10800 3600 1209600 3600
;; Received 99 bytes from 89.104.94.10#53(dns2.infra.nic.ru) in 34 ms
Здесь мы видим, что процесс резолвинга завершился ответом dns2.infra.nic.ru
, который отдал только SOA, а A-запись не отдал. Запустите для интереса команду типа dig +trace ya.ru. a
- там будет видна A-запись, что показывает успешный результат.
Вывод
- Даже крупные компании типа nic.ru допускают глупые ошибки конфигурирования.
- Отправка почты с какой-либо системы нуждается в тщательной настройке и проверке, с учётом влияния настроек DNS.
Финал
После вышеописанного объяснения nic.ru признали наличие проблемы, но сказали что исправлять ничего не будут, и посоветовали просто прописать их в вайтлист, что собственно мы и сделали.