Postfix: Alamat penerima ditolak: Pengguna tidak dikenal di tabel penerima lokal

30

Ketika saya mencoba mengirim email di server postfix saya ke alamat di domain yang sama (misalnya, jika nama host server adalah mail.example.com dan saya mencoba mengirim email ke [email protected]), saya mendapatkan berikut kesalahan dalam log dan email tersebut tidak disampaikan: Recipient address rejected: User unknown in local recipient table. Jika saya mengirim ke alamat di domain lain, saya tidak punya masalah. Ini file /etc/postfix/main.cf saya:

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
myhostname = mail.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
#myorigin = /etc/mailname
myorigin = $mydomain
mydestination = $mydomain, localhost.$mydomain, localhost
relayhost =
#fake IP address
mynetworks = 127.0.0.0/8 100.837.191.223
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
Tai kuadrat
sumber
Saya telah mengalami hal ini sebelumnya ketika server tidak memiliki nama host yang tepat untuk alasan apa pun. Apakah pengaturan domain Anda dengan mail.example.comsebagai data MX Anda? Apakah server ini benar-benar mail.example.com?
Bert

Jawaban:

42

Saya tahu pertanyaan ini agak lama, jadi saya menganggap sudah dijawab dengan memuaskan.

Saya baru saja mengalami masalah yang sama, dan perlu beberapa saat untuk mencari tahu apa yang sedang terjadi. Saya pikir situasi saya sama dengan pertanyaan awal.

Postfix harus menyampaikan semua email ke server lain di internet, ia sebenarnya tidak menerima email untuk domain apa pun. Jadi setiap email yang dikirim ke example.com harus diteruskan ke server mail untuk example.com. Solusinya, seperti yang dijelaskan oleh b techieb0y, adalah menghapus $ mydomain dari baris:

mydestination = $mydomain, localhost.$mydomain, localhost

Baris ini memberi tahu postfix bahwa pesan yang dikirim ke $ mydomain harus diterima dan disimpan di server ini . Bukan itu yang saya inginkan, saya ingin pesan-pesan itu dikirim ke server email yang sebenarnya untuk example.com. Setelah saya menyadari ini, dan menghapus example.com, email berfungsi seperti yang saya harapkan. Saya memposting ini jika penjelasan ini membantu orang lain yang menemukan pertanyaan ini di masa depan.

chmac
sumber
18

Kesalahannya cukup deskriptif sendiri: nama pengguna email target (kiri tanda @) tidak dapat dipetakan ke pengguna lokal pada sistem (pengaturan postfix default), atau ke domain virtual (karena tidak ada yang dikonfigurasikan dari kotak). Keputusan untuk mencoba dan melakukan pemetaan ini dikendalikan oleh daftar domain di 'mydestination' (plus domain virtual apa pun). Jika mesin ini sebenarnya merupakan MX utama domain, maka pengguna yang tidak ada memiliki email yang rusak. Jika kotak ini hanya perlu mengirim pesan keluar, cukup hapus domain target dari mydestination (dengan menghapus $ mydomain dari daftar) sudah mencukupi - ia masih akan menerima pesan secara langsung untuk [email protected], tetapi pesan untuk pengguna @ domain.tld akan melalui proses pencarian MX untuk pengiriman di tempat lain.

techieb0y
sumber
1
Anda menyelamatkan hari saya, saya menjadi gila ... mengapa saya memiliki dua pengguna untuk diri saya sendiri, tstaerk dan thorsten;)
Thorsten Staerk
5

Ketika Anda mengirim pesan ke domain lokal Anda, postfix bertanggung jawab untuk memeriksa apakah penerima ada. Ketika Anda mengirim email ke domain lain, postfix tidak memiliki tanggung jawab seperti itu.

Anda juga perlu memiliki pengguna lokal yang disebut tes

useradd -s /bin/bash -d /home/test -U test

atau, Anda memerlukan alias dari pengujian ke pengguna lokal di / etc / aliases

echo "test: root" >> /etc/aliases
postalias /etc/aliases

Anda harus siap.

Julien Vehent
sumber
Apakah ada cara untuk melewati pemeriksaan ini sehingga saya tidak harus membuat pengguna untuk setiap orang yang akan saya kirimi email? Saya tidak ingin menggunakan server ini sebagai server email utama kami, hanya untuk mengirim email keluar dari aplikasi ketika terjadi kesalahan. Saya lebih suka tidak perlu memperbarui server setiap kali saya ingin menambahkan penerima baru untuk email aplikasi.
Tai Squared
Katakanlah Anda ingin mengirim email ke '[email protected]', yang perlu Anda lakukan adalah memastikan postfix lokal Anda TIDAK bertanggung jawab atas 'domainz.com', jika tidak maka akan mencoba memvalidasi pengguna secara lokal. Jadi, atur direktif 'mydomain' ke sesuatu yang berbeda, seperti 'mydomain = local.server' dan postfix akan mengirim email Anda ke server yang bertanggung jawab untuk 'domainz.com'
Julien Vehent
1

Jadi saya mengalami masalah yang sama dan belum mengetahuinya, tetapi ini akan menggerakkan Anda ke arah yang benar:

http://www.postfix.org/STANDARD_CONFIGURATION_README.html

Lihatlah bagian "Postfix on a null client" - Saya pikir itulah yang Anda inginkan. Saya juga mencoba mengatur pengaturan local_recipient_maps seperti yang ditentukan pada situs web postfix di halaman: LOCAL_RECIPIENT_README.html

Kedua tautan harus melakukan apa yang kita cari di sini, tetapi saya tidak dapat membuatnya berfungsi. Ketika saya melakukan pengaturan klien nol penuh, mencoba melakukan telnet untuk mengirim tes email SMTP tidak berfungsi. Saya mendapatkan "telnet: sambungkan ke alamat 97.74.92.30: Sambungan ditolak". Saat mengatur peta penerima lokal, pencarian di perintah RCPT TO: tidak memberikan pesan kesalahan seperti sebelumnya, tetapi setelah mengirim email (terlihat normal), tidak ada email yang benar-benar dikirim, dan ada kesalahan di maillog:

"550-Mailbox tidak diketahui. Entah tidak ada kotak surat yang terkait dengan 550-nama ini atau Anda tidak memiliki izin untuk melihatnya. 550 5.1.1 Pengguna tidak diketahui"

Beri tahu saya jika Anda beruntung.

jeffthink
sumber