Postfix - хост или домен не найден

22

Я только что установил Postfix в своей Ubuntu, в локальной сети.

В этой сети у меня есть Exchange Server (с использованием домена mail.example.com). У меня возникла проблема при отправке электронного письма на местный адрес adress@example.com:

relay=none, delay=0.01, delays=0.01/0/0/0, dsn=4.3.5, status=deferred 
(Host or domain name not found. Name service error for name=example.com
type=AAAA: Host found but no data record of requested type)

Я решил эту проблему, используя relay_domainв моем Postfix main.cf:

relay_domains = example.com
transport_maps = hash:/etc/postfix/transport

И по моему /etc/postfix/transport:

example.com smtp:[mail.example.com]

Теперь я могу отправлять почту @example.com, и я проверил некоторые основные веб-письма (Gmail, Yahoo, Hotmail ...). Оно работает. Но почему я получил эту ошибку на мои адреса @example.com? Как я могу быть уверен, что никогда не найду эту ошибку в другом домене?

Моя конфигурация Postfix:

postconf -n

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
inet_interfaces = all
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
mydestination = SRVWEB, localhost.localdomain, localhost
myhostname = SRVWEB
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relay_domains = mutuelle-var.fr
relayhost =
smtp_generic_maps = hash:/etc/postfix/generic
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
transport_maps = hash:/etc/postfix/transport
Винсент ЛИТУР
источник
Не могли бы вы добавить вывод postconf -n к вопросу?
ALex_hha
Вы используете ipv6?
ALex_hha
Я изменил конфиг postfix, чтобы использовать только ipv4 на данный момент. Подожди и посмотри ..
Винсент ЛИТУР

Ответы:

33

Ваш сервер пытается использовать IPv6 при отправке почты. Поскольку у mail.example.comнего нет AAAA-записи (которая аналогична A-записи, но для IPv6), это не работает.

Если вы хотите, чтобы Postfix никогда не использовал IPv6, вы можете изменить это в файле конфигурации, как объяснено на справочной странице postconf (5):

When IPv6 support is enabled via the inet_protocols parameter,  Post-
fix will do DNS type AAAA record lookups.

When  both IPv4 and IPv6 support are enabled, the Postfix SMTP client
will attempt to connect via IPv6 before attempting to use IPv4.

Examples:

inet_protocols = ipv4
inet_protocols = all (DEFAULT)
inet_protocols = ipv6
inet_protocols = ipv4, ipv6

Если вы хотите изменить его только для этого домена, измените свою транспортную карту на

example.com smtp-ipv4:[mail.domain.com]
Дженни Ди говорит восстановить Монику
источник
Спасибо за это объяснение! Я прочитал документацию на французском языке, в которой говорилось, что ipv4 был конфигурацией DEFAULT. Я поставил ipv4 сейчас, и я перезагрузил Postfix, похоже, работает. Еще раз спасибо !
Винсент ЛИТУР
Это зависит от того, какую версию Postfix вы используете - я не помню, какая версия по умолчанию какой, но я знаю, что они меняли ее хотя бы один раз.
Дженни Ди говорит восстановить Монику
7
Не соединение разрывается, а поиск DNS, который предшествует этому. Когда у меня есть, inet_protocols = allон не пытается Aпоиск, если AAAAпоиск не удается, что кажется бессмысленным. Кроме того, если вы измените это значение, вы должны перезапустить постфикс, а не просто перезагрузить.
Синхронное
0

Простая конфигурация Postfix, которая работала для меня.

/etc/postfix/main.cf

myhostname = localhost.testing.com
myorigin = testing.com
relayhost =
inet_protocols = ipv4
inet_interfaces = loopback-only
mydestination =
Джозеф
источник
-5

Следующее изменение в /etc/postfix/main.cf решило проблему для меня.

inet_protocols = ipv6 

Измените выше, чтобы

inet_protocols = all
selche
источник
9
Многое не добавляет к принятому ответу и, честно говоря, бесполезно без поста JennyD, который дает объяснение .
Охотник на оленей