postfix 設定ファイルに次の SMTP 制限があります:
smtpd_sender_restrictions = permit_sasl_authenticated, check_policy_service inet:127.0.0.1:10031,permit_mynetworks, warn_if_reject reject_non_fqdn_sender, reject_unauth_pipelining, reject_authenticated_sender_login_mismatch, reject_unknown_sender_domain
私の知る限り、permit_sasl_authenticated
特定のユーザーが認証されていると表示されている場合、残りの制限はチェックされないのでしょうか?
と の両方が「はい」と答えた場合のみ電子メールを渡し、そうでない場合は「いいえ」とpermit_sasl_authenticated
答えることを確認したい場合はどうすればよいでしょうか?check_policy_service inet:127.0.0.1:10031
Sender address rejected
実際、私は cluebringer をセットアップしようとしていますが、送信者が SASL から適切に認証された後でも、という問題が発生します。
これが私のpostconf -n
出力です:
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
config_directory = /etc/postfix
disable_vrfy_command = yes
inet_interfaces = 91.91.98.67, localhost
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
mydestination = mauth.fdomain.co.uk, localhost
myhostname = mauth.fdomain.co.uk
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relay_domains = mysql:/etc/postfix/relaydomains.cf
relayhost =
smtp_bind_address = 91.91.9.7
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = mysql:/etc/postfix/authsmtp.conf
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname Freezone Internet ESMTP
smtpd_client_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_rbl_client sbl.spamhaus.org, reject_rbl_client blackholes.easynet.nl, reject_rbl_client bl.spamcop.net
smtpd_data_restrictions = permit_sasl_authenticated, reject_unauth_pipelining
smtpd_delay_reject = yes
smtpd_end_of_data_restrictions = check_policy_service inet:127.0.0.1:10031
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks, warn_if_reject reject_non_fqdn_hostname, reject_invalid_hostname, permit
smtpd_recipient_restrictions = permit_sasl_authenticated, check_policy_service inet:127.0.0.1:10031, permit_mynetworks, reject_unauth_destination
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain =
smtpd_sasl_security_options = noanonymous
smtpd_sender_restrictions = permit_sasl_authenticated, check_policy_service inet:127.0.0.1:10031,permit_mynetworks, warn_if_reject reject_non_fqdn_sender, reject_unauth_pipelining, reject_authenticated_sender_login_mismatch, reject_unknown_sender_domain
smtpd_tls_CAfile = /etc/postfix/ssl/freezonewc.ca
smtpd_tls_auth_only = no
smtpd_tls_cert_file = /etc/postfix/ssl/freezonewc.crt
smtpd_tls_key_file = /etc/postfix/ssl/freezonewc.key
smtpd_tls_loglevel = 2
smtpd_tls_received_header = yes
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s
smtpd_use_tls = yes
transport_maps = mysql:/etc/postfix/transport.cf
unknown_local_recipient_reject_code = 450
答え1
正直に言うと、あなたの制限は今のところちょっと混乱しています。 postfix-users メーリング リストでは通常、すべての制限をsmtpd_recipient_restrictions
またはsmtpd_relay_restrictions
(Postfix 2.10 のみ) の下に集めることを推奨しています。 その理由は、読みやすさが向上し、 とあまり違いがないためですsmtpd_delay_reject=yes
。
さらに、ポリシー サービスは accept/ok ステートメントで応答することはほとんどなく、むしろ DUNNO で応答します。したがって、あなたのケースでは、ポリシー サービスが場合によっては OK を返さない限り、最初にポリシー サービスに問い合わせて REJECT を返す機会を与え、次に SASL をチェックする方がよい方法のようです。
ポリシー サービスの正確な内容も要件もわからないため、次のような内容から始めます。
smtpd_relay_restrictions =
# subject even authenticated users and trusted networks
# to the policy check
check_policy_service inet:127.0.0.1:10031
permit_mynetworks
reject_unknown_sender_domain
permit_sasl_authenticated
defer_unauth_destination
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
# we exclude our networks and SASL authenticated users
# from all further checks.
# since I don't know if the policy service is relevant
# for unauthenticated mail, I commented it out here
# check_policy_service inet:127.0.0.1:10031
warn_if_reject reject_non_fqdn_hostname
warn_if_reject reject_non_fqdn_sender
reject_invalid_hostname
reject_unknown_sender_domain
smtpd_data_restrictions = reject_unauth_pipelining
いくつかの注意事項については、私の構成スニペットのコメントを参照してください。
答え2
私の知る限り、permit_sasl_authenticated で特定のユーザーが認証されていると示されている場合、残りの制限はチェックされません。
あなたは正しいですが、現在のsmtpd_xxx_restrictionsのみです
smtpd_sender_restrictionsからpermit_sasl_authenticatedを削除し、すべての検証をポリシーサービスに移動するだけです。
smtpd_sender_restrictions = check_policy_service inet:127.0.0.1:10031, ...
以下のオプションが利用可能です
sasl_method
sasl_username
sasl_sender
SASL認証がない場合、これらの属性は空になります。論理レベルでは、次のようになります。
if [ policy_service_return_code == OK && sasl_username not empty ]
return OK
else
return REJECT