Bagaimana cara memperbaiki Postfix '' Relay Access Denied '?

54

Pagi ini, untuk memperbaiki masalah dengan ketidakcocokan nama dalam sertifikat keamanan, saya mengikuti langkah-langkah yang disarankan dari Bagaimana cara memperbaiki server mail SSL? , tetapi sekarang, ketika mencoba mengirim email dari klien (dalam hal ini klien adalah Windows Mail), saya menerima kesalahan berikut.

Alamat surel yang ditolak adalah '[email protected]'. Subjek 'Ini adalah ujian. ', Akun:' mail.domain.com ', Server:' mail.domain.com ', Protokol: SMTP, Server Tanggapan:' 554 5.7.1: Akses relai ditolak ', Port: 25, Aman (SSL): Tidak , Kesalahan Server: 554, Nomor Kesalahan: 0x800CCC79

Sunting : Saya masih dapat mengambil email dari akun ini, dan saya mengirim email ke akun lain di domain yang sama. Saya tidak bisa mengirim email ke penerima di luar domain kami.

Saya mencoba menonaktifkan TLS sama sekali tetapi tidak ada dadu, saya masih mendapatkan kesalahan yang sama.

Ketika saya memeriksa file mail.log, saya melihat yang berikut ini.

Jul 18 08:24:41 company imapd: LOGIN, [email protected], ip=[::ffff:111.111.11.11], protocol=IMAP
Jul 18 08:24:42 company imapd: DISCONNECTED, [email protected], ip=[::ffff:111.111.11.11], headers=0, body=0, rcvd=83, sent=409, time=1
Jul 18 08:25:19 company postfix/smtpd[29282]: connect from company.university.edu[111.111.11.11]
Jul 18 08:25:19 company postfix/smtpd[29282]: NOQUEUE: reject: RCPT from company.university.edu[111.111.11.11]: 554 5.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<UserPC>
Jul 18 08:25:19 company postfix/smtpd[29282]: disconnect from company.university.edu[111.111.11.11]
Jul 18 08:25:22 company imapd: DISCONNECTED, [email protected], ip=[::ffff:111.111.11.11], headers=13, body=142579, rcvd=3289, sent=215892, time=79

File main.cfterlihat seperti ini:

#
# Postfix MTA Manager Main Configuration File;
#
# Please do NOT edit this file manually;
#

#
# Postfix directory settings; These are critical for normal Postfix MTA functionallity;
#

command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
program_directory = /usr/lib/postfix

#
# Some common configuration parameters;
#

inet_interfaces = all
mynetworks = 127.0.0.0/8
mynetworks_style = host

myhostname = mail.domain.com
mydomain = domain.com
myorigin = $mydomain

smtpd_banner = $myhostname ESMTP 2.4.7.1 (Debian/GNU)
setgid_group = postdrop

#
# Receiving messages parameters;
#

mydestination = localhost, company 
append_dot_mydomain = no
append_at_myorigin = yes
transport_maps = mysql:/etc/postfix/transport.cf

#
# Delivering local messages parameters;
#

mail_spool_directory = /var/spool/mail
mailbox_size_limit = 0
mailbox_command = procmail -a "$EXTENSION"

biff = no

alias_database = hash:/etc/aliases

local_recipient_maps =

#
# Delivering virtual messages parameters;
#
virtual_mailbox_maps=mysql:/etc/postfix/mysql_virt.cf
virtual_uid_maps=mysql:/etc/postfix/uids.cf
virtual_gid_maps=mysql:/etc/postfix/gids.cf
virtual_mailbox_base=/usr/local/virtual
virtual_maps=mysql:/etc/postfix/virtual.cf
virtual_mailbox_domains=mysql:/etc/postfix/virtual_domains.cf


#
# SASL paramters;
#
smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s

smtp_tls_CAfile = /etc/postfix/ssl/smptd.pem
smtp_tls_cert_file = /etc/postfix/ssl/smptd.crt
smtp_tls_key_file = /etc/postfix/ssl/smptd.key

smtpd_tls_CAfile = /etc/postfix/ssl/smptd.pem
smtpd_tls_cert_file = /etc/postfix/ssl/smptd.crt
smtpd_tls_key_file = /etc/postfix/ssl/smptd.key

smtpd_sasl_auth_enable = yes

smtpd_sasl_security_options = noanonymous

smtpd_sasl_local_domain =

broken_sasl_auth_clients = yes

smtpd_sender_restrictions =
        permit_sasl_authenticated
        permit_mynetworks

smtpd_recipient_restrictions =
        permit_sasl_authenticated
        check_recipient_access hash:/etc/postfix/filtered_domains
        permit_mynetworks
        reject_unauth_destination

Sebagai catatan tambahan, majikan saya ingin dapat mengirim email dari klien (Thunderbird dan Outlook) baik dari dalam jaringan lokal kami maupun dari luar.

Noah Goodrich
sumber
6
Kenapa kamu tidak menerima?
Benteng

Jawaban:

58

TLS hanya mengaktifkan enkripsi pada sesi smtp dan tidak secara langsung mempengaruhi apakah atau tidak Postfix akan diizinkan untuk menyampaikan pesan.

Pesan ditolak relai terjadi karena aturan smtpd_recipient_restrictions tidak cocok. Salah satu syarat tersebut harus dipenuhi untuk memungkinkan pesan melalui:

smtpd_recipient_restrictions =
    permit_sasl_authenticated
    check_recipient_access hash:/etc/postfix/filtered_domains
    permit_mynetworks
    reject_unauth_destination

Untuk menjelaskan aturan-aturan itu:

permit_sasl_authenticated

mengizinkan pengirim yang diautentikasi melalui SASL. Ini akan diperlukan untuk mengautentikasi pengguna di luar jaringan Anda yang biasanya diblokir.

check_recipient_access

Ini akan menyebabkan postfix mencari di / etc / postfix / filtered_domains untuk aturan berdasarkan alamat penerima. (Dilihat dari nama file pada nama file, itu mungkin hanya memblokir domain tertentu ... Periksa untuk melihat apakah gmail.com terdaftar di sana?)

permit_mynetworks

Ini akan mengizinkan host berdasarkan alamat IP yang cocok dengan rentang IP yang ditentukan dalam $ mynetworks. Di main.cf yang Anda posting, $ mynetworks diatur ke 127.0.0.1, jadi itu hanya akan menyampaikan email yang dihasilkan oleh server itu sendiri.

Berdasarkan konfigurasi itu, klien email Anda harus menggunakan Otentikasi SMTP sebelum diizinkan untuk menyampaikan pesan. Saya tidak yakin apa yang digunakan database SASL. Itu ditentukan di /usr/lib/sasl2/smtpd.conf Agaknya ia juga menggunakan database yang sama dengan kotak surat virtual Anda, jadi Anda harus dapat mengaktifkan otentikasi SMTP di klien email Anda dan siap.

Brandon
sumber
14
smtpd_use_tls = no

Anda telah menonaktifkan TLS, jadi sekarang Anda perlu mengotorisasi jaringan lokal Anda dengan menambahkannya mynetworks. Sebagai contoh,

mynetworks = 192.168.1.0/24 127.0.0.0/8

Ini akan memperbaiki pengiriman dari jaringan lokal Anda saja. Untuk mengirim email dari luar jaringan lokal Anda, Anda harus mengaktifkan otentikasi TLS.

pgs
sumber
Saya telah menetapkan smtpd_use_tls = ya karena kami harus dapat mengirim email dari luar jaringan. Namun, masalahnya tetap ada.
Noah Goodrich
Bump smtpd_tls_loglevel hingga 3 dan lihat apakah ada sesuatu yang menarik muncul di log (dan ingat untuk menjatuhkannya kembali ke 1 atau 0 ketika Anda selesai).
pgs
Juga, coba atur smtp_use_tls ke no (untuk mengirim email eksternal). Lihat postfix.org/postconf.5.html#smtp_use_tls
pgs.
1
-1 karena tidak semua orang dapat menonaktifkan tls.
jgifford25
3
Saya tidak mengatakan bahwa dia harus menonaktifkan tls; Saya mengatakan bahwa karena dia telah menonaktifkannya maka dia perlu mengatur mynetworks. Dan solusi lengkapnya adalah membuat tl bekerja kembali.
pgs
6

Saya pikir Anda merindukan Anda domain.com di mydestination, karena defaultnya relay_domains=$mydestination, sehingga Anda dapat menambahkan konfigurasi baris:

mydestinations = $mydomain, $myhostname, localhost, localhost.localdomain

atau:

relay_domains = $mydomain

Jangan lupa untuk me-restart server postfix ( service postfix restart) setiap kali Anda mengedit file conf postfix.

Wtower
sumber
+1 untuk menambahkan "localhost, localhost.localdomain" ke daftar host (seringkali menjadi masalah pada beberapa sistem, meskipun tidak jelas mengapa ini bukan masalah pada yang lain)
Iain Collins
2

Saya memiliki masalah yang sama di Outlook (dengan dovecote dan postfix backend) dan saya menghabiskan dua hari mencari solusi dan men-tweak file konfigurasi saya. Yang perlu saya lakukan adalah memeriksa "Server memerlukan otentikasi" di tab Keluar dalam pengaturan email dalam pandangan dan pesan saya sekarang dikirim ke gmail. Lihat instruksi terperinci tentang cara menemukan pengaturan di sini http://support.bluetie.com/node/440 .

Dee
sumber
2

Masalah ini mengganggu saya untuk sementara waktu. Saya mencoba untuk terhubung dari server1.domain.com ke server2.domain.com.

Begini cara saya memperbaikinya -

#/etc/postfix/main.cf
mydomain = server1.domain.com
myhostname = $mydomain
virtual_alias_maps = hash:/etc/postfix/virtual
alias_database = hash:/etc/postfix/virtual
myorigin = /etc/mailname
mydestination = localhost.localdomain localhost $mydomain
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

Anda juga perlu memastikan bahwa Anda telah mengatur / etc / hosts dan / etc / hostname dengan benar dan memastikan bahwa Anda menjalankan yang berikut setelah perubahan jaringan -

sudo service networking restart

dan berikut ini setelah perubahan konfigurasi postfix

sudo service postfix reload
A23
sumber
0

Bagi saya: Saya harus menambahkan localhostuntuk mynetworksterlepas dari fakta 127.0.0.0/8yang sudah ada di sana. Jadi, sekarang tampilannya:

mynetworks = 1.1.1.1/32, 127.0.0.0/8, localhost

Putnik
sumber