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

Доставка временно приостановлена: хост или доменное имя не найдены

У меня два независимых домена ad.vz и ad2.vz, между ними шлюз. Всего существует 3 постфиксных сервера:

Mailsh может подключиться сразу только к одной сетевой области. Есть рабочее реле, которое включает / выключает каждые 30 секунд. Я запускаю стресс-тест в mailad, который отправляет 20 писем по 500 КБ каждые 30 секунд. Иногда начинает накапливаться очередь. Я вижу в почтовом журнале следующее сообщение:

Sep  4 08:51:01 mailsh postfix/error[9602]: CFA5E131A7: to=<test@mailinet2.ad.vz>, relay=none, delay=33, delays=32/0/0/0, dsn=4.4.3, status=deferred (delivery temporarily suspended: Host or domain name not found. Name service error for name=mailinet.ad.vz type=MX: Host not found, try again)"

Каждый раз, когда включается адаптер, я отправляю команду postqueue -f

Почему может скапливаться очередь?

mailad postconf:

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
html_directory = no
inet_interfaces = all
inet_protocols = all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mydomain = vzavod.ru
myhostname = mailad.vzavod.ru
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
sample_directory = /usr/share/doc/postfix-2.6.6/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
transport_maps = hash:/etc/postfix/transport
unknown_local_recipient_reject_code = 550
transport settings:
vzavod.ru   local
*       smtp:mailsh.ad.vz

mailsh postconf:

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
html_directory = no
inet_interfaces = all
inet_protocols = all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mydomain = vzavod.ru
myhostname = mailsh.vzavod.ru
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
sample_directory = /usr/share/doc/postfix-2.6.6/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
transport_maps = hash:/etc/postfix/transport
unknown_local_recipient_reject_code = 550

настройки транспорта:

*       smtp:mailinet.ad.vz
vzavod.ru   smtp:mailad.ad.vz

Похоже, ваша ситуация похожа на сценарий из этой статьи: постфикс в коммутируемой машине.

Взято из этой статьи, вот некоторые соображения.

  • Отключить самопроизвольную доставку почты SMTP (если используется только IP-адрес коммутируемого доступа по запросу).

    С параметром ниже postfix не будет пытаться отправить электронное письмо, если вы не запустите postqueue -f вручную. Поместите этот параметр в main.cf. Больше информации в Вот.

      defer_transports = smtp # (Only for on-demand dialup IP hosts)
    
  • Отключите поиск DNS клиента SMTP (только для удаленного доступа в локальной сети).

    Отключите поиск DNS в клиентах Postfix SMTP и LMTP. Когда отключено, поиск хостов выполняется с помощью процедуры системной библиотеки getaddrinfo (), которая обычно также просматривает / etc / hosts. Итак, разместите запись mailad.ad.vz на /etc/hosts. Например

      # echo "192.168.1.99  mailad.ad.vz" >> /etc/hosts
    

    И добавьте этот параметр в main.cf

      disable_dns_lookups = yes #(Only for on-demand dialup IP hosts)