Postfix는 모든 릴레이 도메인 대상을 거부합니다(relay_domains 제외).

Postfix는 모든 릴레이 도메인 대상을 거부합니다(relay_domains 제외).

저는 Postfix 3.5.17이 포함된 Debian 11을 실행하고 있으며 클라이언트가 (제출된 메일에서) 메일을 릴레이할 수 있는 도메인을 제한하는 데 문제가 있습니다.

메일을 릴레이하려는 특정 도메인으로만 Relay_domains를 구성했는데, domain.com에 테스트 메시지를 보내면, Relay_domains에 없더라도 로그에 해당 도메인에 대한 연결이 표시됩니다.

지금은 Relay_domains가 실제로 아무것도 거부하지 않는 것 같습니다. 이 작업을 수행하는 데 필요한 추가 구성 옵션이나 제한 사항이 있습니까?

세션 후-n:

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
anvil_rate_time_unit = 60s
append_dot_mydomain = no
biff = no
compatibility_level = 2
default_destination_rate_delay = 5s
disable_vrfy_command = yes
inet_interfaces = all
inet_protocols = all
invalid_hostname_reject_code = 550
mailbox_size_limit = 0
maximal_backoff_time = 3h
minimal_backoff_time = 180s
mydestination = localhost
mydomain = localmail.com
myhostname = localmail.com
mynetworks = 127.0.0.0/8 172.20.0.0/16 10.10.0.0/16 192.168.0.0/16
myorigin = $mydomain
non_fqdn_reject_code = 550
readme_directory = no
recipient_delimiter = +
relay_domains = protonmail.com, protonmail.ch, mail.protonmail.ch, mailsec.protonmail.ch
relayhost =
smtp_always_send_ehlo = yes
smtp_helo_timeout = 15s
smtp_rcpt_timeout = 15s
smtp_tls_security_level = encrypt
smtpd_banner = $myhostname ESMTP $mail_name
smtpd_client_message_rate_limit = 10
smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated,
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname
smtpd_recipient_limit = 40
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unlisted_recipient, reject_unauth_destination
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination
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 = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, reject_unknown_sender_domain
smtpd_timeout = 30s
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/ssl/certs/mailtls-selfsigned.crt
smtpd_tls_key_file = /etc/ssl/private/mailtls-selfsigned.key
smtpd_tls_security_level = encrypt
smtpd_use_tls = yes
strict_rfc821_envelopes = yes
unknown_address_reject_code = 550
unknown_client_reject_code = 550
unknown_hostname_reject_code = 550
unverified_recipient_reject_code = 550
unverified_sender_reject_code = 550
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf, mysql:/etc/postfix/mysql-virtual-email2email.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_transport = lmtp:unix:private/dovecot-lmtp

답변1

제한의 순서가 중요합니다. 첫 번째로 일치하는 규칙이 우선합니다.

다른 제한 사항이 없기 때문에 permit_mynetworks로컬 네트워크의 호스트는 어디로든 중계할 수 있습니다. 마찬가지로 permit_sasl_authenticated인증된 클라이언트가 모든 도메인에 릴레이할 수 있도록 허용하는 두 번째 제한 사항이 있습니다 .

원치 않으시면 넣어주세요reject_unauth_destination 앞으로 permit_mynetworks그리고 permit_sasl_authenticated.

에서 man 5 postconf:

reject_unauth_destination

다음 조건 중 하나가 충족되지 않으면 요청을 거부합니다.

  • Postfix는 메일 전달자입니다. 해결된 RCPT TO 도메인이 일치 $relay_domains하거나 해당 하위 도메인과 일치하며 보낸 사람이 지정한 경로(user@elsewhere@domain)를 포함하지 않습니다.

  • Postfix는 최종 대상입니다. 구문 분석된 RCPT TO 도메인 은 $mydestination, $inet_interfaces, $proxy_interfaces또는와 $virtual_alias_domains일치하며 $virtual_mailbox_domains보낸 사람이 지정한 경로(user@elsewhere@domain)를 포함하지 않습니다.

relay_domains_reject_code매개변수는 거부된 요청에 대한 응답 코드를 지정합니다(기본값: 554).

관련 정보