Все началось с того, что неожиданно на gmail перестали доставляться письма с нашего сервера. Приходил отчет со следующим текстом:
mx.google.com выдал это сообщение об ошибке:
[<IPv6-адрес> 16] Our system has detected that this message does not meet IPv6 sending guidelines regarding PTR records and authentication. Please review https://support.google.com/mail/?p=ipv6_authentication_error for more information. yz1si800491bkb.222 — gsmtp
Сообщение не было доставлено из-за проблемы с разрешениями или безопасностью. Сообщение мог отклонить модератор, адресат может принимать сообщения электронной почты лишь от некоторых получателей, либо же доставке препятствует другое ограничение.
В заголовках отправленного сообщения было видно, что gmail зачем-то определяет внутренний IPv6 адрес почтового сервера (внешнего адреса у него нет, и даже галочка в настройках интерфейса не стоит), и ищет PTR запись для него. Естественно ее нет (провайдер про IPv6 даже не слышал), поэтому письмо возвращается.
Как вариант решения надо запретить IPv6 на сервере полностью.
Для Windows Server 2008 это делается таким образом.
1. Убираем галку IPv6 в настройках сетевых интерфейсов.
2. Запускаем regedit и ищем ветку:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters
Создаем элемент DWORD 32-бит с названием DisabledComponents
Присваиваем ему шестнадцатеричное значение ffffffff
3. Если на сервере работает служба RRAS (Маршрутизация и удаленный доступ), то необходимо также удалить в реестре ветку
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteAccess\RouterManagers\Ipv6
(предварительно естественно сделав ее экспорт).
4. Перезагружаем сервер.
IPv6 запрещен, теперь в заголовках письма гугл видит только обычный IPv4 адрес и если прописана обратная зона, то проблем с доставкой не возникает.