Почта от Hetzner на GMail через Exim4 и IPv6

Недавно обнаружил, что на одном из моих блогов появляются комментарии, а уведомления на почту о них не создается. Т.к. появились пару свободных часов, я решил разобраться в проблеме..
Итак, блог хостится у компании Hetzner на выделенном сервере. Соответственно, все на нем настраивал я. DNS блога прописывается, через панель Robot. В качестве sendmail-а используется Exim4.
Первым делом, я зашел на почту и проверил папку "Спам". Там писем небыло. Тогда я проверил отправку писем на сервере из консоли:
| 
					 1 2 3  | 
						# echo 'Текст письма' | mail -s 'Тема письма' username@gmail.com  | 
					
и из самого php
| 
					 1 2 3  | 
						# php -r "mail('username@gmail.com', 'Test From Your-Site', 'Test Message from Sendmail by PHP');"  | 
					
писем не было. Я заглянул в логи:
| 
					 1 2 3  | 
						# tail /var/log/exim4/mainlog  | 
					
и увидел следующее:
| 
					 1 2 3 4 5 6 7  | 
						2013-11-21 09:46:31 1VjPuA-0008S7-Ep ** username@gmail.com R=dnslookup T=remote_smtp: SMTP error from remote  mail server after end of data: host gmail-smtp-in.l.google.com [2a00:1450:400c:c05::1b]: 550-5.7.1 [2a01:4f8:a0:6102::2      16]  Our system has detected that this\n550-5.7.1 message does not meet IPv6 sending guidelines regarding PTR records\n 550-5.7.1 and authentication. Please review\n550-5.7.1 https://support.google.com/mail/?p=ipv6_authentication_error for more\n 550 5.7.1 information. k7si10856763wjz.160 - gsmtp  | 
					
тут говорится, что сообщение отправляется через IPv6, но нет PTR записи для моего домена. Другими словами, гугл хочет по ip проверить название моего домена.
Если бы у меня был свой DNS сервер, я бы просто добавил нужную запись в файлик обратных зон, однако у меня такой возможности не было.
Немного погуглив, я нашел совет отключить IPv6 в Exim.
Открываем файл в редакторе:
| 
					 1 2 3  | 
						# nano /etc/exim4/exim4.conf.template  | 
					
И перед begin acl добавляем:
| 
					 1 2 3  | 
						disable_ipv6 = true  | 
					
после чего перезагружаем сервис:
| 
					 1 2 3  | 
						# service exim4 restart  | 
					
К сожалению данные манипуляции мне не помогли, ошибка по прежнему оставалась.
Я связался с Hetzner-ами и спросил что мне делать, они сказали, что можно добавить обратную запись через панель робота:
однако, и это не помогло. Ошибки по прежнему оставались.
Тогда я просто решил отрубить IPv6 вообще для интерфейса.
Открываем sysctl.conf
| 
					 1 2 3  | 
						# nano /etc/sysctl.conf  | 
					
И добавляем такую строчку конфигурации:
| 
					 1 2 3  | 
						net.ipv6.conf.eth0.disable_ipv6=1  | 
					
После этого применяем конфигурацию:
| 
					 1 2 3  | 
						# sysctl -p  | 
					
Теперь можем убедиться, что интерфейсу более не назначен адрес IPv6:
| 
					 1 2 3  | 
						# ifconfig eth0  | 
					
В моем случае, записи:
| 
					 1 2 3 4  | 
						         inet6 addr: 2a01:5f8:a0:6002::2/64 Scope:Global          inet6 addr: fe80::221:86ff:fe62:4f32/64 Scope:Link  | 
					
исчезли, что говорило что я отключил IPv6.
После этого я вновь проверил работу Exim-а. Теперь почта на gmail отправлялась нормально.
Author: | Rating: / | Tags:


6 comments.
Write a comment