На 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.