Postfix는 오픈 릴레이를 복구할 수 없습니다.

Postfix는 오픈 릴레이를 복구할 수 없습니다.

접미사 구성:

~ # postconf -n | grep mynetworks
mynetworks = 127.0.0.0/8
mynetworks_style = host
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject
smtpd_sender_restrictions = reject_sender_login_mismatch, reject_non_fqdn_sender, reject_unlisted_sender, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_invalid_hostname, reject_unknown_sender_domain, reject_unauth_pipelining, reject

그러나 내 기대와는 달리 postfix 서버는 존재하지 않는 도메인, 잘못된 도메인의 모든 것을 허용합니다. 이에 대해 전혀 책임이 없으며 따라서 오픈 릴레이입니다.

{} ~ telnet SERVER 25
Trying IP...
Connected to SERVER.
Escape character is '^]'.
220 SERVER ESMTP Postfix (Debian/GNU)
HELO google.de
250 SERVER
MAIL FROM: [email protected]
250 2.1.0 Ok
RCPT TO: [email protected]
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Subject: Test
.
250 2.0.0 Ok: queued as 4AB737C1039
QUIT
221 2.0.0 Bye
Connection closed by foreign host.

보시다시피 이는 postfix 구성에 정의된 여러 규칙을 명백히 위반합니다.

Q: 이 문제를 해결하는 이유와 방법은 무엇입니까?

전체 접미사 구성:

~ # postconf -n                                                                                                                                                                                
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
compatibility_level = 2
home_mailbox = Mail/Inbox/
inet_interfaces = all
inet_protocols = all
mailbox_command = /usr/lib/dovecot/deliver
mailbox_size_limit = 0
milter_default_action = accept
milter_protocol = 6
mydestination = $myhostname, SERVER, localhost.DOMAIN, localhost
myhostname = SERVER
mynetworks = 127.0.0.0/8
mynetworks_style = host
myorigin = /etc/mailname
non_smtpd_milters = inet:localhost:12301
readme_directory = no
recipient_delimiter = +
smtp_tls_CAfile = /etc/letsencrypt/live/SERVER/cert.pem
smtp_tls_CApath = /etc/ssl/certs
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname SOOS ESMTP $mail_name (Debian/GNU)
smtpd_milters = inet:localhost:12301
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_sasl_tls_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sender_restrictions = reject_sender_login_mismatch, reject_non_fqdn_sender, reject_unlisted_sender, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_invalid_hostname, reject_unknown_sender_domain, reject_unauth_pipelining, reject
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/letsencrypt/live/SERVER/fullchain.pem
smtpd_tls_exclude_ciphers = aNULL, LOW, EXP, MEDIUM, ADH, AECDH, MD5, DSS, ECDSA, CAMELLIA128, 3DES, CAMELLIA256, RSA+AES, eNULL
smtpd_tls_key_file = /etc/letsencrypt/live/SERVER/privkey.pem
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_security_level = may
tls_preempt_cipherlist = yes

답변1

청취 인터페이스는 무제한입니다lo/127.0.0.1

inet_interfaces = all

답변2

확인을 위해 텔넷 테스트를 수행할 때 mail.log를 추적하는 것이 좋습니다.확실히연결하려는 IP 주소는 실제로 네트워크에 없습니다. 그렇다면 릴레이 제한의 첫 번째 규칙이 트래픽을 허용합니다.

예를 들어 방화벽의 구성 변경으로 인해 피어링 연결의 소스 IP가 차단되었습니다. 이것은 만든다모두연결이 네트워크 내에 있는 것 같습니다. postfix 구성에는 아무것도 변경되지 않았습니다. 메일 로그에 따르면 모든 트래픽은 방화벽 자체에서 발생합니다. 모두에게 나쁜 날입니다.

인터페이스를 localhost로 설정한다는 것은 localhost에서도 연결한다는 의미입니다. 지정된 규칙에 따라 릴레이회의이 경우에는 허용됩니다.

관련 정보