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

Как уменьшить время ожидания DNS для Sendmail

У меня проблема с Отправить почту Тайм-аут DNS при попытке отправить на адрес электронной почты, на который есть проблема с DNS. Допустим, проблемный адрес электронной почты test@example.com

Я вижу, что в этом домене есть проблема с DNS, используя:

>host -t mx example.com
;; connection timed out; no servers could be reached

Я могу проверить и определить время вызова sendmail на проблемный адрес электронной почты, используя:

> time echo "This is a test message" | /usr/lib/sendmail -ftest@test.com test@example.com
real 2m36.252s
user 0m0.004s
sys  0m0.005s

В настоящее время время ожидания sendmail занимает 2 минуты 36 секунд! Это приводит к зависанию наших веб-страниц PHP, которые пытаются отправить на этот адрес электронной почты, и в конечном итоге возвращать ошибку в браузер.

У меня вопрос: как уменьшить время ожидания?

Я видел несколько конфигураций тайм-аута, связанных с sendmail:

> grep resolver /etc/mail/sendmail.cf
Timeout.resolver.retrans=5s
Timeout.resolver.retry=4

Похоже, что Sendmail настроен на повторную попытку 4 раза с задержкой 5 секунд при каждой повторной передаче.

Но я не нашел фактического периода ожидания DNS?

Для справки: это происходит в Red Hat Enterprise Linux Server версии 5.2, sendmail 8.13.8, ядра Linux: 2.6.18, версии Apache: 2.2.3, версии PHP: 5.3.0. Примечание: Этот вопрос является продолжением Sendmail задерживается на некоторых адресах электронной почты

В качестве быстрого решения вы можете поиграть с вашим /etc/resolv.conf. Конечно, это меняет работу системного распознавателя, это совсем не проблема sendmail.

timeout: n
    sets the amount of time the resolver will wait for a response from a remote name server before retrying the query via a different name server. Measured in seconds, the default is RES_TIMEOUT (see <resolv.h> ). 
attempts: n
    sets the number of times the resolver will send a query to its name servers before giving up and returning an error to the calling application. The default is RES_DFLRETRY (see <resolv.h> ). 

В конечном итоге это не очень хорошее решение. Настройка вашего DNS-сервера нарушена, и ее необходимо исправить. Если есть запрос о несуществующем MX / домене, сервер должен БЫСТРО ответить NXDOMAIN. Не следует ждать так долго, поскольку это обычно вызывает всевозможные проблемы со многими программами (для начинающих с sendmail, но обычно также с sshd и NFS).