Postfix: Alamat penerima ditolak: Pengguna tidak dikenal di tabel penerima lokal, meskipun domain penerima adalah domain eksternal

9

Dalam infrastruktur perusahaan saya, saya memiliki server surat internal dengan postfix yang namanya, katakanlah, srv-internal.central.mydomain.tld dengan IP internal 10.10.128.200.

Untuk bertukar email dengan Net, ia menggunakan relay mail server (server pada lingkungan DMZ dengan semua lubang kecil yang diperlukan misalnya), bahkan dengan postfix, yang namanya mailgw.central.mydomain.tld dengan antarmuka internal IP 10.10. 133.105

Nama domain publik dari infrastruktur kami adalah (katakanlah) " central.mydomain.tld ", tetapi " pec.central.mydomain.tld " BUKAN subdomain kami . Ini disediakan oleh ISP lain di luar jaringan kami (jadi, email ke domain ini, harus keluar).

Jika saya mengirim email dari [email protected] (dari mesin srv-internal.central.mydomain.tld) ​​ke [email protected] , saya dapatkan dari server relay kesalahan berikut:

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

Server relai saya menggunakan Linux CentOS rilis 5.7, rilis postfix adalah postfix-2.3.3-2.1.el5_2 dari repositori CentOS standar.

Katakanlah domain saya adalah:

 mydomain = central.mydomain.tld

Dan konfigurasi postfix saya di server relay, saat ini adalah sebagai berikut:

(postconf -d; postconf -d; postconf -n;) | sortir | 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

Dan ini adalah / etc / postfix / transport saya:

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]

Sekarang, alamat Penerima ditolak: Pengguna yang tidak dikenal di tabel penerima relai tampaknya server relai (mailgw) "berpikir" bahwa "pec.central.mydomain.tld" adalah salah satu subdomainnya, sehingga ia mencari pengguna penerima ke relay_recipient_maps, sementara itu seharusnya tidak IMHO.

Saya mengharapkan perilaku ini jika saya menaruh ".central.mydomain.tld" (dengan titik awal!) Di tabel transport saya, tetapi saya benar-benar memiliki "central.mydomain.tld", jadi, membaca manual, seharusnya hanya mempertimbangkan nama domain , dan tidak juga subdomain.

Saya sangat menghargai jika seseorang dapat menyarankan saya apa yang saya lakukan salah.

Gabolander
sumber

Jawaban:

6

Parameter yang harus Anda perhatikan adalah parent_domain_matches_subdomains .

Daftar fitur Postfix di mana pola "example.com" juga cocok dengan subdomain example.com, alih-alih membutuhkan pola ".example.com" yang eksplisit. Ini adalah kompatibilitas yang direncanakan: pada akhirnya, semua fitur Postfix diharapkan membutuhkan pola gaya ".example.com" yang eksplisit ketika Anda benar-benar ingin mencocokkan subdomain.

Jadi, parent_domain_matches_subdomains menyimpan daftar domain yang postfix harus cocok dengan subdomainnya bahkan tanpa (titik) di depannya .

Sayangnya, relay_domainsparameter jatuh ke daftar itu.

# 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

Dan karena Anda relay_domainsmengandung $mydomainatau central.mydomain.tld , postfix cocok semua subdomain dari central.mydomain.tld sebagai relay_domainsorang-orang tidak eksternal.


Solusinya diatur parent_domain_matches_subdomainsdan jangan sertakan relay_domains pada parameter tersebut.

masegaloeh
sumber
Terima kasih banyak, @masegaloeh. Itu bekerja seperti pesona! :) Penjelasan Anda juga sangat jelas Tnx lagi.
gabolander
@gabolander Jika ini berhasil, silakan pertimbangkan untuk menerima jawaban ini, jadi pertanyaannya tidak mengambang di kolam yang tidak dijawab
masegaloeh
Saya sudah melakukannya, terima kasih. (Saya tidak bisa melaporkannya bermanfaat, karena saya butuh 15 sebagai reputasi dan saya belum punya)
gabolander
0

Dalam kasus saya, saya menemukan daftar putih untuk pengguna email di bawah: / etc / postfix / relay_recipients Jika pengguna Anda tidak ada dalam daftar ini, ia tidak akan pernah mendapatkan email.

Kurt Kranz
sumber