Postfix 'Relay Access Denied'를 수정하는 방법?


54

오늘 아침 보안 인증서에서 이름이 일치하지 않는 문제 를 해결하기 위해 메일 서버 SSL을 수정하는 방법 의 권장 단계를 따랐습니다 . 하지만 이제 클라이언트 (이 경우 클라이언트는 Windows Mail)에서 전자 메일을 보내려고하면 다음 오류가 발생합니다.

거부 된 이메일 주소는 'email@gmail.com'입니다. 제목 '이것은 시험입니다. ', 계정 :'mail.domain.com ', 서버 :'mail.domain.com ', 프로토콜 : SMTP, 서버 응답 :'554 5.7.1 : 릴레이 액세스 거부 ', 포트 : 25, 보안 (SSL) : 아니요 , 서버 오류 : 554, 오류 번호 : 0x800CCC79

편집 : 여전히이 계정에서 이메일을 검색 할 수 있으며 동일한 도메인의 다른 계정으로 이메일을 보냅니다. 도메인 외부의 수신자에게 이메일을 보낼 수 없습니다.

TLS를 모두 비활성화하려고 시도했지만 주사위가 없어도 여전히 같은 오류가 발생합니다.

file mail.log확인하면 다음이 표시됩니다.

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

파일 main.cf은 다음과 같습니다

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

참고로, 고용주는 로컬 네트워크 내부와 외부에서 모두 클라이언트 (Thunderbird 및 Outlook)로부터 전자 메일을 보낼 수 있기를 원합니다.


6
왜 받아들이지 않습니까?
Rook

답변:


58

TLS는 smtp 세션에서 암호화를 활성화하며 Postfix가 메시지를 릴레이 할 수 있는지 여부에 직접적인 영향을 미치지 않습니다.

smtpd_recipient_restrictions 규칙이 일치하지 않아 릴레이 거부 메시지가 발생합니다. 메시지가 통과하려면 이러한 조건 중 하나가 충족되어야합니다.

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

이러한 규칙을 설명하려면

permit_sasl_authenticated

SASL을 통해 인증 된 발신자를 허용합니다. 일반적으로 차단 된 네트워크 외부의 사용자를 인증하는 데 필요합니다.

check_recipient_access

이로 인해 postfix는 / etc / postfix / filtered_domains에서 수신자 주소에 따른 규칙을 찾습니다. (파일 이름의 파일 이름으로 판단하면 특정 도메인을 차단하고있을 수 있습니다 ... gmail.com이 목록에 있는지 확인 하시겠습니까?)

permit_mynetworks

이는 $ mynetworks에 지정된 IP 범위와 일치하는 IP 주소 별 호스트를 허용합니다. 게시 한 main.cf에서 $ mynetworks는 127.0.0.1로 설정되었으므로 서버 자체에서 생성 된 이메일 만 릴레이합니다.

해당 구성에 따라 메일 클라이언트는 메시지를 릴레이하기 전에 SMTP 인증을 사용해야합니다. 사용중인 데이터베이스 SASL이 확실하지 않습니다. /usr/lib/sasl2/smtpd.conf에 지정되어있을 것입니다. 아마도 가상 메일 함과 동일한 데이터베이스를 사용하기 때문에 메일 클라이언트에서 SMTP 인증을 사용 가능하게하고 모두 설정해야합니다.


14
smtpd_use_tls = no

TLS를 비활성화 했으므로 이제에 추가하여 로컬 네트워크를 인증해야합니다 mynetworks. 예를 들어

mynetworks = 192.168.1.0/24 127.0.0.0/8

로컬 네트워크에서만 전송이 수정됩니다. 로컬 네트워크 외부에서 이메일을 보내려면 TLS 인증이 작동해야합니다.


네트워크 외부에서 이메일을 보낼 수 있어야하기 때문에 smtpd_use_tls = yes로 설정했습니다. 그러나 문제가 지속됩니다.
노아 굿 리치

smtpd_tls_loglevel을 최대 3까지 범프하고 로그에 흥미로운 것이 표시되는지 확인합니다 (완료되면 1 또는 0으로 다시 내려 놓는 것을 잊지 마십시오).
pgs

또한 smtp_use_tls를 no로 설정하십시오 (외부 이메일 전송의 경우). 참조 postfix.org/postconf.5.html#smtp_use_tls을
PGS

1
모든 사람이 tl을 비활성화 할 수 없기 때문에 -1입니다.
jgifford25

3
나는 그가 tls를 비활성화해야한다고 말하는 것이 아닙니다. 나는 그가 이미 비활성화했기 때문에 내 네트워크를 설정해야한다고 말하고 있습니다. 그리고 완전한 해결책은 tls를 다시 작동시키는 것입니다.
pgs

6

나는 당신이 mydestination에서 domain.com을 그리워한다고 생각한다. 기본값 relay_domains=$mydestination은 다음과 같다.

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

또는:

relay_domains = $mydomain

service postfix restartpostfix conf 파일을 편집 할 때마다 postfix 서버 ( ) 를 다시 시작해야 합니다.


+ 1 "localhost, localhost.localdomain"을 호스트 목록에 추가하기위한 경우 (일부 시스템에서는 문제가 발생하지만 다른 시스템에서는 문제가되지 않는 이유는 명확하지 않음)
Iain Collins

2

Outlook에서 동일한 문제가 발생했으며 (vevecote 및 postfix 백엔드 사용) 이틀 동안 솔루션을 찾고 구성 파일을 조정했습니다. Outlook에서 메일 설정의 발신 탭에서 "서버 인증 필요"를 확인하기 만하면 메시지가 gmail로 전송됩니다. http://support.bluetie.com/node/440 에서 설정을 찾는 방법에 대한 자세한 지침을 참조 하십시오 .


2

이 문제는 잠시 동안 나를 괴롭 혔습니다. server1.domain.com에서 server2.domain.com으로 연결하려고했습니다.

이 문제를 해결 한 방법은 다음과 같습니다.

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

또한 / etc / hosts 및 / etc / hostname을 올바르게 설정했는지 확인하고 네트워킹 변경 후 다음을 실행해야합니다.

sudo service networking restart

그리고 postfix 구성 변경 후 다음

sudo service postfix reload

0

나를 위해 : 나는 이미 거기 에 있었던 사실 localhostmynetworks관계없이 추가 해야 127.0.0.0/8했습니다. 이제는 다음과 같습니다.

mynetworks = 1.1.1.1/32, 127.0.0.0/8, localhost

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.