Постфикс: адрес получателя отклонен: пользователь неизвестен в локальной таблице получателей, хотя домен получателя является внешним доменом

9

В инфраструктуре моей компании у меня есть внутренний почтовый сервер с postfix, имя которого, скажем, srv-internal.central.mydomain.tld с внутренним IP 10.10.128.200.

Для обмена почтой с сетью он использует почтовый сервер-ретранслятор (например, сервер в среде DMZ со всеми необходимыми точками прокрутки ), даже с postfix, имя которого mailgw.central.mydomain.tld с внутренним интерфейсом IP 10.10. 133,105

Общедоступным доменным именем нашей инфраструктуры является (скажем) « central.mydomain.tld », но « pec.central.mydomain.tld » НЕ является нашим поддоменом . Он предоставляется другим Интернет-провайдером за пределами нашей сети (поэтому письма на этот домен должны выходить).

Если я отправляю письмо от user1@central.mydomain.tld (с машины srv-internal.central.mydomain.tld) ​​на foo@pec.central.mydomain.tld , я получаю от сервера ретрансляции следующую ошибку:

Sep  4 08:03:16 mailgw postfix/smtpd[26678]: NOQUEUE: reject: RCPT from unknown[10.10.128.200]: 550 5.1.1 <foo@pec.central.mydomain.tld>: Recipient address rejected: User unknown in relay recipient table; from=<user1@central.mydomain.tld> to=<foo@pec.central.mydomain.tld> proto=ESMTP helo=<srv-internal.central.mydomain.tld>
Sep  4 08:03:16 mailgw postfix/smtpd[26678]: disconnect from unknown[10.10.128.200]

Мой сервер ретрансляции работает под управлением Linux CentOS версии 5.7, выпуск postfix - postfix-2.3.3-2.1.el5_2 из стандартных репозиториев CentOS.

Допустим, мой домен:

 mydomain = central.mydomain.tld

И моя постфиксная конфигурация на сервере ретрансляции в настоящее время такова:

(postconf -d; postconf -d; postconf -n;) | сортировать | uniq -u

alias_maps = hash:/etc/aliases
biff = no
body_checks = regexp:/etc/postfix/body_checks
content_filter = filter:127.0.0.1:10025
default_process_limit = 10
disable_vrfy_command = yes
header_checks = pcre:/etc/postfix/header_checks
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
message_size_limit = 12582912
mime_header_checks = regexp:/etc/postfix/mime_header_checks
mydestination = $myhostname, localhost.$mydomain
myhostname = mailgw.$mydomain
mynetworks = 127.0.0.0/8, 10.10.24.0/24, 10.10.128.200/32, 10.10.128.201/32
newaliases_path = /usr/bin/newaliases.postfix
readme_directory = /etc/postfix/README_FILES
receive_override_options = no_address_mappings
relay_domains = $mydomain, riminiventure.it
relay_recipient_maps = hash:/etc/postfix/relay_recipients
sample_directory = /etc/postfix/samples
sendmail_path = /usr/sbin/sendmail.postfix
smtpd_error_sleep_time = 5s
smtpd_hard_error_limit = 10
smtpd_helo_required = yes
smtpd_recipient_restrictions = permit_mynetworks,    permit_sasl_authenticated,    check_client_access hash:/etc/postfix/access_client,    check_helo_access hash:/etc/postfix/access_helo,    check_sender_access hash:/etc/postfix/access_sender, pcre:/etc/postfix/access_sender_pcre,    check_recipient_access hash:/etc/postfix/access_recipient,    reject_unauth_destination,    reject_invalid_hostname,    reject_unauth_pipelining,    reject_non_fqdn_sender,    reject_unknown_sender_domain,    reject_non_fqdn_recipient,    reject_unknown_recipient_domain,    reject_rbl_client bl.spamcop.net,    reject_rbl_client sbl.spamhaus.org,  check_policy_service inet:127.0.0.1:2501,    permit
smtpd_soft_error_limit = 3
strict_rfc821_envelopes = yes
transport_maps = hash:/etc/postfix/transport
unknown_local_recipient_reject_code = 450
virtual_alias_domains = riminifar.it
virtual_alias_maps = hash:/etc/postfix/virtual

И это мой / etc / postfix / transport:

central.mydomain.tld        smtp:[srv-internal.central.mydomain.tld]
someotherdomain.org         smtp:[srv-internal.central.mydomain.tld]
yadomain.it                  smtp:[srv-internal.central.mydomain.tld]
xad.central.mydomain.tld        smtp:[srv-internal.central.mydomain.tld]
test.central.mydomain.tld        smtp:[10.10.15.101]

Теперь адрес получателя отклонен: пользователь, неизвестный в таблице получателей ретрансляции, кажется, что сервер ретрансляции (mailgw) «думает», что «pec.central.mydomain.tld» является одним из его поддоменов, поэтому он ищет пользователя-получателя в своем relay_recipient_maps, в то время как он ИМХО не должно.

Я ожидал такого поведения, если бы я поместил «.central.mydomain.tld» (с начальной точкой!) В мою транспортную таблицу, но у меня действительно есть «central.mydomain.tld», поэтому, читая руководства, он должен учитывать только доменное имя , а не также поддоменов.

Я очень признателен, если кто-нибудь подскажет мне, что я делаю не так.

gabolander
источник

Ответы:

6

Параметр, о котором вы должны знать, это parent_domain_matches_subdomains .

Список возможностей Postfix, где шаблон «example.com» также соответствует поддоменам example.com, вместо того, чтобы требовать явный шаблон «.example.com». Это запланированная обратная совместимость: в конечном итоге ожидается, что все функции Postfix потребуют явных шаблонов стилей ".example.com", когда вы действительно хотите сопоставить поддоменам.

Итак, parent_domain_matches_subdomains содержит список доменов, в которых postfix должен соответствовать своему поддомену даже без (точки) перед ним .

К сожалению, relay_domainsпараметр попадает в этот список.

# postconf parent_domain_matches_subdomains
parent_domain_matches_subdomains = debug_peer_list,fast_flush_domains,mynetworks,permit_mx_backup_networks,qmqpd_authorized_clients,relay_domains,smtpd_access_maps

И поскольку ваш relay_domainsсодержит $mydomainили central.mydomain.tld , postfix соответствует всем поддоменам central.mydomain.tld как relay_domainsне внешние.


Решение установлено parent_domain_matches_subdomainsи не включает relay_domains в этот параметр.

masegaloeh
источник
Большое спасибо, @masegaloeh. Это сработало как очарование! :) Твоё объяснение тоже было очень ясным Tnx.
gabolander
@gabolander Если это работает, пожалуйста , рассмотрите принимать этот ответ, так что вопрос не плавает в без ответа бассейна
masegaloeh
Я уже сделал это, спасибо. (Я не могу сообщить об этом как о полезном, потому что мне нужно 15 как репутация, а у меня еще нет)
gabolander
0

В моем случае я нашел белый список для пользователя электронной почты в: / etc / postfix / relay_recipients Если ваш пользователь не входит в этот список, он никогда не получит письмо.

Курт Кранц
источник