Làm cách nào để sửa Postfix '' Truy cập bị từ chối '?


54

Sáng nay, để khắc phục sự cố với tên không khớp trong chứng chỉ bảo mật, tôi đã làm theo các bước được đề xuất từ Cách khắc phục SSL máy chủ thư? , nhưng bây giờ, khi cố gắng gửi email từ máy khách (trong trường hợp này máy khách là Windows Mail), tôi nhận được lỗi sau.

Địa chỉ email bị từ chối là 'email @ gmail'. Chủ đề 'Đây là một bài kiểm tra. ', Tài khoản:' mail.domain.com ', Máy chủ:' mail.domain.com ', Giao thức: SMTP, Phản hồi của máy chủ:' 554 5.7.1: Truy cập chuyển tiếp bị từ chối ', Cổng: 25, Bảo mật (SSL): Không , Lỗi máy chủ: 554, Số lỗi: 0x800CCC79

Chỉnh sửa : Tôi vẫn có thể truy xuất email từ tài khoản này và tôi gửi email đến các tài khoản khác trong cùng một tên miền. Tôi chỉ không thể gửi email cho người nhận bên ngoài miền của chúng tôi.

Tôi đã cố gắng vô hiệu hóa TLS hoàn toàn nhưng không có xúc xắc, tôi vẫn nhận được lỗi tương tự.

Khi tôi kiểm tra tập tin mail.log, tôi thấy như sau.

Jul 18 08:24:41 company imapd: LOGIN, user=user_name@domain.com, ip=[::ffff:111.111.11.11], protocol=IMAP
Jul 18 08:24:42 company imapd: DISCONNECTED, user=user_name@domain.com, 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@gmail.com>: Relay access denied; from=<user_name@domain.com> to=<email@gmail.com> 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, user=user_name@domain.com, ip=[::ffff:111.111.11.11], headers=13, body=142579, rcvd=3289, sent=215892, time=79

Tệp main.cftrông như thế này:

#
# 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

Là một lưu ý phụ, chủ nhân của tôi muốn có thể gửi email từ khách hàng (Thunderbird và Outlook) cả từ trong mạng cục bộ của chúng tôi và bên ngoài nó.


6
Tại sao bạn không chấp nhận?
Rook

Câu trả lời:


58

TLS chỉ cho phép mã hóa trên phiên smtp và không ảnh hưởng trực tiếp đến việc Postfix có được phép chuyển tiếp tin nhắn hay không.

Thông báo từ chối chuyển tiếp xảy ra do quy tắc smtpd_recipient_restrictions không khớp. Một trong những điều kiện đó phải được đáp ứng để cho phép tin nhắn đi qua:

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

Để giải thích các quy tắc đó:

permit_sasl_authenticated

cho phép người gửi xác thực thông qua SASL. Điều này sẽ cần thiết để xác thực người dùng bên ngoài mạng của bạn thường bị chặn.

check_recipient_access

Điều này sẽ khiến postfix tìm trong / etc / postfix / filtered_domains cho các quy tắc dựa trên địa chỉ người nhận. (Đánh giá theo tên tệp trên tên tệp, có lẽ nó chỉ chặn các tên miền cụ thể ... Kiểm tra xem gmail có được liệt kê trong đó không?)

permit_mynetworks

Điều này sẽ cho phép các máy chủ lưu trữ theo địa chỉ IP khớp với các dải IP được chỉ định trong $ mynetworks. Trong main.cf mà bạn đã đăng, $ mynetworks được đặt thành 127.0.0.1, do đó, nó sẽ chỉ chuyển tiếp các email được tạo bởi chính máy chủ.

Dựa trên cấu hình đó, ứng dụng thư khách của bạn sẽ cần sử dụng Xác thực SMTP trước khi được phép chuyển tiếp thư. Tôi không chắc chắn cơ sở dữ liệu nào mà SASL đang sử dụng. Điều đó được chỉ định trong /usr/lib/sasl2/smtpd.conf Có lẽ nó cũng sử dụng cùng một cơ sở dữ liệu như các hộp thư ảo của bạn, vì vậy bạn có thể kích hoạt xác thực SMTP trong ứng dụng thư khách của mình và được thiết lập.


14
smtpd_use_tls = no

Bạn đã vô hiệu hóa TLS, vì vậy bây giờ bạn cần ủy quyền mạng cục bộ của mình bằng cách thêm nó vào mynetworks. Ví dụ,

mynetworks = 192.168.1.0/24 127.0.0.0/8

Điều này sẽ sửa lỗi gửi từ mạng cục bộ của bạn. Để gửi email từ bên ngoài mạng cục bộ của bạn, bạn sẽ cần phải xác thực TLS hoạt động.


Tôi đã đặt smtpd_use_tls = yes vì ​​chúng tôi phải gửi email từ bên ngoài mạng. Tuy nhiên, vấn đề vẫn tồn tại.

Bump smtpd_tls_loglevel lên đến 3 và xem có gì thú vị xuất hiện trong nhật ký không (và nhớ thả nó xuống 1 hoặc 0 khi bạn kết thúc).
pss

Ngoài ra, hãy thử đặt smtp_use_tls thành không (để gửi email bên ngoài). Xem postfix.org/postconf.5.html#smtp_use_tls
pgs

1
-1 vì không phải ai cũng có thể vô hiệu hóa tls.
jgifford25

3
Tôi không nói rằng anh ta nên vô hiệu hóa tls; Tôi đang nói rằng vì anh ta đã vô hiệu hóa nên anh ta cần phải thiết lập mạng mynetworks. Và giải pháp đầy đủ là để tls hoạt động trở lại.
pss

6

Tôi nghĩ rằng bạn nhớ bạn domain.com trong mydestination, vì mặc định relay_domains=$mydestination, vì vậy bạn có thể nối thêm cấu hình cho dòng:

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

hoặc là:

relay_domains = $mydomain

Đừng quên khởi động lại máy chủ postfix ( service postfix restart) mỗi khi bạn chỉnh sửa tập tin conffix.


+ 1 để thêm "localhost, localhost.localdomain" vào danh sách máy chủ (thường là sự cố trên một số hệ thống, không rõ tại sao nó không phải là vấn đề đối với người khác)
Iain Collins

2

Tôi gặp vấn đề tương tự trong Outlook (với phụ trợ dovecote và postfix) và tôi đã dành hai ngày để tìm giải pháp và điều chỉnh các tệp cấu hình của mình. Tất cả những gì tôi cần làm là kiểm tra "Máy chủ yêu cầu xác thực" trong tab Gửi đi trong cài đặt thư trong triển vọng và thư của tôi hiện được gửi đến gmail. Xem hướng dẫn chi tiết về cách tìm cài đặt tại đây http://support.bluetie.com/node/440 .


2

Vấn đề này đã làm tôi khó chịu trong một thời gian. Tôi đã cố gắng kết nối từ server1.domain.com đến server2.domain.com.

Đây là cách tôi sửa lỗi này -

#/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

Bạn cũng cần đảm bảo rằng bạn đã đặt / etc / hosts và / etc / hostname đúng cách và đảm bảo rằng bạn chạy như sau sau khi thay đổi mạng -

sudo service networking restart

và sau đây sau khi thay đổi cấu hình postfix

sudo service postfix reload

0

Đối với tôi: tôi đã phải thêm localhostvào mynetworksbất kể thực tế 127.0.0.0/8đã có ở đó. Vì vậy, bây giờ nó trông:

mynetworks = 1.1.1.1/32, 127.0.0.0/8, localhost

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.