Ich habe diese SMTP-Einschränkung in der Postfix-Konfigurationsdatei:
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
Soweit mir bekannt ist, permit_sasl_authenticated
werden die restlichen Einschränkungen nicht überprüft, wenn angegeben wird, dass ein bestimmter Benutzer authentifiziert ist?
Was ist, wenn ich sicherstellen möchte, dass permit_sasl_authenticated
die check_policy_service inet:127.0.0.1:10031
E-Mail nur dann weitergeleitet wird, wenn beide „Ja“ sagen, andernfalls nicht?
Tatsächlich versuche ich, Cluebringer einzurichten, habe aber das Problem, dass es dies anzeigt Sender address rejected
, selbst nachdem der Absender ordnungsgemäß von SASL authentifiziert wurde.
Hier ist meine postconf -n
Ausgabe:
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
Antwort1
Ehrlich gesagt sind Ihre Einschränkungen im Moment ein ziemliches Durcheinander. Die Mailingliste der Postfix-Benutzer empfiehlt normalerweise, alle Einschränkungen unter smtpd_recipient_restrictions
oder zu sammeln smtpd_relay_restrictions
(nur Postfix 2.10). Der Grund dafür ist, dass es die Lesbarkeit verbessert und bei keinen wirklich großen Unterschied macht smtpd_delay_reject=yes
.
Darüber hinaus sollte ein Richtliniendienst selten mit einer Accept/OK-Anweisung antworten, sondern eher mit DUNNO. In Ihrem Fall scheint es also besser, zuerst den Richtliniendienst zu fragen, ihm die Möglichkeit zu geben, REJECT zu sagen und dann SASL zu prüfen, es sei denn, Ihr Richtliniendienst gibt in einigen Fällen OK zurück.
Ohne die genaue Art Ihrer Versicherungsdienstleistung oder Ihre Anforderungen zu kennen, würde ich etwa so beginnen:
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
Einige Vorbehalte finden Sie in den Kommentaren zu meinem Konfigurationsausschnitt.
Antwort2
meines Wissens werden die restlichen Einschränkungen nicht überprüft, wenn „permit_sasl_authenticated“ besagt, dass ein bestimmter Benutzer authentifiziert ist.
Sie haben Recht, aber nur in den aktuellen smtpd_xxx_restrictions
Entfernen Sie einfach permit_sasl_authenticated aus smtpd_sender_restrictions und verschieben Sie alle Überprüfungen in den Richtliniendienst
smtpd_sender_restrictions = check_policy_service inet:127.0.0.1:10031, ...
Folgende Optionen stehen zur Verfügung
sasl_method
sasl_username
sasl_sender
Diese Attribute wären leer, wenn keine SASL-Authentifizierung vorhanden wäre. Auf logischer Ebene könnte es etwa wie folgt aussehen:
if [ policy_service_return_code == OK && sasl_username not empty ]
return OK
else
return REJECT