FastNetMon

Tuesday, 16 March 2010

Диагностика проблем с почтой на сервере / VPS

Добрый вечер!

Сегодня решил написать об одной из самых частых и часто сложных проблем при работе с выделенными серверами / VPS - это проблемы с почтой, причем как входящей, так и исходящей. Итак, поехали.

Решение проблем с исходящей почтой

Симптомы - отправляем почту из скриптов, а она не доходит до получателя.

1. Проверьте хостнейм своего сервера. Это делается командой hostname, он должен быть корректным (вида domain.ru либо subdomain.domain.ru). Очень многие сервера отклоняют почту от серверов с некорректнми хостнеймами (например, myserver или my-server).
2. Проверьте, что в DNS имеется А запись для Вашего хостнейма, которая в идеале должна резволвится в IP адрес Вашего сервера. Это правило соблюдать желательно, но не обязательно, хотя так или иначе есть сервера, которые делают такую проверку и требуют, чтобы хостнейм был отражен в DNS.
3. Проверьте наличие PTR записи для основного IP Вашего сервера (обычно, это IP адрес интерфейс eth0). Сделать это можно так: http://phpsuxx.blogspot.com/2009/10/ptr.html При этом, крайне рекомендую в качестве PTR указывать существующий домен, желательно привязанный к этому же серверу. Это правило из разряда "это делать обязательно", так как такие почтовые системы как hc.ru и mail.ru с высокой вероятностью просто отбросят Вашу почту, если не увидят для Вашего IP обратного резолва
4. Проверьте, запущен ли почтовик на Вашем сервере. Почтовик обычно называется Postfix/Exim/Qmail/Sendmail, проверьте его наличе в выдаче ps aux либо попробуйте подключиться к нему телнетом: telnet localhost 25 и в ответ Вы должны получить нечто вот такое (вместо Exim, разумеется, должно быть написано имя Вашего почтовика):

telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 sds.fastvps.ru ESMTP Exim 4.69 Tue, 16 Mar 2010 22:46:44 +0300


Если же в ответ Вы получаете "telnet: Unable to connect to remote host: Connection refused", то почтовик по всей видимости не установлен / не настроен / не запущен. За подробностями по этим пунктам, прошу в гугл.

Решение проблем с входящей почтой

1. Проверьте наличие MX для требуемого домена. Если не доходит почта на user@domain.ru, то проверьте, какой Mail Exchange (почтовый сервер) обслуживает требуемый домен:

nslookup -type=MX nic.ru
Server: 213.133.99.99
Address: 213.133.99.99#53

Non-authoritative answer:
nic.ru mail exchanger = 5 relay2.RIPN.net.
nic.ru mail exchanger = 5 relay3.RIPN.net.
nic.ru mail exchanger = 10 relay4.RIPN.net.

Authoritative answers can be found from:


Если же в ответ на запрос Вы получаете ошибку, то значит ошибка в настройках DNS.

2. Проверьте, функционирует ли почтовый сервер, обслуживающий домен. Из предыдущего примера мы узнали, что домен обсушивается тремя почтовыми серверами (но обычно это один сервер), который нужно поочередно првоерить командой telnet:

telnet relay2.RIPN.net 25
Trying 195.209.146.172...
Connected to relay2.RIPN.net.
Escape character is '^]'.
220 relay2.ripn.net ESMTP Sendmail (RIPN); Tue, 16 Mar 2010 22:52:54 +0300


Ответ Выше говорит о том, что почтовик функционирует и работает нормально. В противном случае при получении отказа в соединении, идем проверять настройки MTA.

3. Человеческий фактор - проверьте в Вашей панели управления, активирована ли почта для домена и созданы ли ящики и не стоит ли случайно правило для отброса почты.

Продолжение следует, дополнение / возражения принимаются.

2 comments :

  1. проверьте не режется ли почта антиспамом, настроенная человеческим фактором, проверьте, один ли почтовый сервер установлен человеческим фактором, проверьте порты у MTA, настроенные человеческим фактором (могут висеть и на других, типа зашифрованных).
    ЗЫ Извините, накипело

    ReplyDelete
  2. проверьте не режется ли почта антиспамом, настроенная человеческим фактором, проверьте, один ли почтовый сервер установлен человеческим фактором, проверьте порты у MTA, настроенные человеческим фактором (могут висеть и на других, типа зашифрованных).
    ЗЫ Извините, накипело

    ReplyDelete

Note: only a member of this blog may post a comment.