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

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

Я только что установил 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 = domain.com
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

Ваш сервер пытается использовать 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]

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

/etc/postfix/main.cf

myhostname = localhost.testing.com
myorigin = testing.com
relayhost =
inet_protocols = ipv4
inet_interfaces = loopback-only
mydestination =

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

inet_protocols = ipv6 

Измените приведенное выше на

inet_protocols = all