Назад | Перейти на главную страницу

GoDaddy: exim4 получает электронные письма, но не может отправить сообщение об ошибке «Нет маршрута к хосту»

На VPS Ubuntu 16.04, размещенном на GoDaddy, я хочу иметь возможность отправлять электронную почту, используя свое доменное имя.

Я создал почтового пользователя noreply@webtest.domain.com через Vestacp, установил Roundcube и проверил, могу ли я получать электронные письма с одного из моих личных адресов (пробовал с gmail и hotmail).

Однако, когда я хочу ответить, exim4 не может отправить и выдает ошибку «Нет маршрута к хосту».

# cat /var/log/exim4/mainlog
exim 4.86_2 daemon started: pid=2310, -q30m, listening for SMTP on port 25 (IPv4) port 587 (IPv4) port 2525 (IPv4) and for SMTPS on port 465 (IPv4)
Start queue run: pid=2311
1iDCy2-00021u-SM H=gmail-smtp-in.l.google.com [172.217.197.27] No route to host
1iDD5o-0000bk-Gt <= noreply@webtest.domain.com U=admin P=local S=795 id=337cb2f63221d64985700e25c2074569@webtest.domain.com
1iDCy2-00021u-SM H=alt1.gmail-smtp-in.l.google.com [64.233.186.27] No route to host
1iDCy2-00021u-SM H=alt2.gmail-smtp-in.l.google.com [74.125.193.27] No route to host
[...]
1iDCy2-00021u-SM == recipient@gmail.com R=dnslookup T=remote_smtp defer (110): Connection timed out
1iDCzB-0002B3-PK ** root@webtest.domain.com: Unrouteable address
1iDCzB-0002B3-PK Frozen (delivery error message)
1iDD8s-0000gq-H3 <= <> R=1iDD8s-0000go-GN U=Debian-exim P=local S=1211

Я попытался запустить tracepath к одному из этих IP-адресов и увидел, что по умолчанию он использует интерфейс внутренней сети GoDaddy, а не тот, который имеет IP-адрес в Интернете:

# tracepath 172.217.218.27
 1?: [LOCALHOST]                                         pmtu 1500
 1:  10.217.15.252                                         0.262ms
[...]
 8:  ash-b1-link.telia.net                                54.953ms asymm 12
 9:  no reply
10:  no reply

Поэтому я попытался добавить директиву интерфейса в /etc/exim4/conf.d/transport/30_exim4-config_remote_smtp, и перезагрузил VPS.

remote_smtp:
  debug_print = "T: remote_smtp for $local_part@$domain"
  driver = smtp
  interface = 148.72.xx.xx

Но я все еще получаю ту же ошибку. Я понятия не имею, где теперь искать.

Проблема была не там, где я ожидал, а просто в том, что провайдер GoDaddy потребовал от меня использовать их сервер ретрансляции. Я понял, что тестируя порт 25 с $ telnet portquiz.net 25, и, к моему большому удивлению, даже несмотря на то, что на нем не было никакого соединения или брандмауэра, блокирующего его, он не мог подключиться.

Исправление:

Это заставит вашу почту проходить через почтовые серверы GoDaddy, но это самое простое решение. Я редактировал файл шаблона конфигурации /etc/exim4/exim4.conf.template, и обновил следующий раздел:

######################################################################
#                      ROUTERS CONFIGURATION                         #
#               Specifies how addresses are handled                  #
######################################################################
begin routers

smarthost:
  driver = manualroute
  transport = remote_smtp
  route_list = !+local_domains dedrelay.secureserver.net

Затем я побежал # dpkg-reconfigure exim4-config очередной раз (Я не уверен, что конфигурация, которую я ввел, единственная, которая работает, но она работает для меня):

- Internet site;
- System mail name: xxx.secureserver.net (find yours in GoDaddy's My Hosting > Server > YourVPS > Settings tab > Hostname)
- 127.0.0.1 ; ::1
- mydomain.com
- Domain to relay: empty
- Machines to relay: empty
- DNS dial on demand: no
- mbox
- Split config: no

И, конечно же, как вы, наверное, видели тысячу раз в Интернете, вы можете протестировать конфигурацию с помощью:

echo "hello" | mail -s "Title" recipient@mail.com

Тем не мение, доставка письма может занять около 5 минут. Более быстрый способ узнать, правильно ли обрабатывается электронное письмо, - это проверить, увеличивается ли счетчик «SMTP-реле» на панели управления вашего сервера на веб-сайте GoDaddy.