Проблемы с почтой и запись MX

На днях один из сотрудников переслал мне письмо-отчет о недоставке его электронного сообщения на внешний почтовый ящик. Как правило в таких письмах указывается и причина по которой письмо не было доставлено. В данном случае причина была следующей:

Router: Failed to connect to SMTP host domain.com because : The server is not responding. The server may be down or you may be experiencing network problems. Contact your system administrator if this problem persists.

Имя почтового домена я изменил в остальном все соответствует. Я объяснил сотруднику, что проблема с почтой не у нас, так как “не отвечает” почтовый сервер-получатель (The server is not responding). Но сотрудник ответил, что связывался с получателем и он клятвенно заверил, что у них проблем с почтой нет и что у них все работает и проблемы у нас.

Сколько раз я уже слышал все это. Ну да ладно. В данном конкретном случае все оказалось предельно просто. Сначала нужно было выяснить доступен ли их почтовый сервер из сети Интернет, а перед этим нужно было определить сам почтовый сервер. Для определения почтового сервера нужно сделать соответствующий DNS-запрос. В Linux я для этого пользуюсь командой dig, хотя можно воспользоваться и командой nslookup.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ dig domain.com mx

; <<>> DiG 9.6.1-P2 <<>> mx domain.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39693
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;domain.com     IN  MX

;; Query time: 92 msec
;; SERVER: 192.168.1.10#53(192.168.1.10)
;; WHEN: Mon Aug 16 11:29:59 2010
;; MSG SIZE  rcvd: 34

Здесь я запрашиваю запись MX для домена domain.com. Запись MX как раз и показывает тот сервер (или сервера), которые должны обрабатывать почтовый трафик. Но как видите для домена domain.com такой записи не существует.

Этот ответ я получил от нашего DNS-сервера (SERVER: 192.168.1.10#53(192.168.1.10)). На всякий случай решил спросить у NS-сервера для домена domain.com. Сначала определяем NS-сервера:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ dig domain.com ns

;; QUESTION SECTION:
;domain.com.        IN  NS

;; ANSWER SECTION:
domain.com. 3600    IN  NS  ns2.dsredirection.COM.
domain.com. 3600    IN  NS  ns1.dsredirection.COM.

;; ADDITIONAL SECTION:
ns1.dsredirection.COM.  35  IN  A   208.73.215.55
ns2.dsredirection.COM.  35  IN  A   204.13.160.55

;; Query time: 79 msec
;; SERVER: 192.168.1.10#53(192.168.1.10)
;; WHEN: Mon Aug 16 11:36:50 2010
;; MSG SIZE  rcvd: 116

Теперь делаем MX-запрос к NS-серверу, который отвечает за домен domain.com:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ dig @ns1.dsredirection.COM domain.com mx

; <<>> DiG 9.6.1-P2 <<>> @ns1.dsredirection.COM domain.com mx
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22877
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;domain.com.        IN  MX

;; Query time: 51 msec
;; SERVER: 208.73.215.55#53(208.73.215.55)
;; WHEN: Mon Aug 16 11:42:52 2010
;; MSG SIZE  rcvd: 34

Результат тот же - запись MX для домена не прописана, значит почту из внешнего мира они получать не могут. Но на самом деле могут. Если не прописана запись MX, то почта должна уйти на ip-адрес указанный в A-записи. А-запись для домена domain.com прописана, но вот порты ни POP3 ни IMAP не открыты. Это можно определить, например, командой nmap (ip-адрес, естественно, выдуман):

1
2
3
4
5
6
7
$ nmap 111.11.11.11

Starting Nmap 5.00 ( http://nmap.org ) at 2010-08-16 17:38 EEST
Interesting ports on 111.11.11.11:
Not shown: 999 filtered ports
PORT   STATE SERVICE
80/tcp open  http

Если вы работаете в операционной системе Windows, то эти же действия можно выполнить с помощью команды nslookup:

1
2
3
4
5
C:\>nslookup -q=mx domain.com
Server:  mydns.server.com
Address:  192.168.1.10

*** No mail exchange (MX) records available for domain.com

Уточняем, если нужно, NS-сервера для domain.com:

1
2
3
4
5
6
7
8
9
10
C:\>nslookup -q=ns domain.com
Server:  mydns.server.com
Address:  192.168.1.10

Non-authoritative answer:
domain.com        nameserver = ns1.dsredirection.com
domain.com        nameserver = ns2.dsredirection.com

ns1.dsredirection.com   internet address = 208.73.215.55
ns2.dsredirection.com   internet address = 204.13.160.55

И спрашиваем у сервера ns1.dsredirection.com:

1
2
3
4
5
C:\>nslookup -q=mx domain.com ns1.dsredirection.com
Server:  ns1.dsredirection.com
Address:  208.73.215.55

*** No mail exchange (MX) records available for domain.com

Результат аналогичен.

А вот, что должно быть для работающего почтового сервера, например ukr.net:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ dig ukr.net mx

; <<>> DiG 9.6.1-P2 <<>> ukr.net mx
;; QUESTION SECTION:
;ukr.net.           IN  MX

;; ANSWER SECTION:
ukr.net.        437 IN  MX  10 mxs.ukr.net.

;; ADDITIONAL SECTION:
mxs.ukr.net.        469 IN  A   195.214.192.100

;; Query time: 1 msec
;; SERVER: 192.168.1.10#53(192.168.1.10)
;; WHEN: Mon Aug 16 12:11:32 2010
;; MSG SIZE  rcvd: 61

Как видите здесь запись MX присутствует:

1
ukr.net.        437 IN  MX  10 mxs.ukr.net.

Конечно, это частный пример и проблемы с почтой могут быть разные. Например, запись MX может быть прописана, но сам почтовый сервер, может быть силу каких-то причин недоступным. Или как я уже писал, MX-записи нет, почта пытается уйти на адрес указанный в A-записи, но там не поднят почтовый сервер. И т.д. Основной смысл был показать как это можно увидеть с помощью команды dig или nslookup и двух-трех запросов.

Если вдруг, где ошибся или, что-то не так написал, или быть может неправильно я определил, что почтовый сервер не работает - просьба сообщить об этом.

Статьи и новости схожей тематики:

Оставьте свой отзыв