[Postfixbuch-users] unbekannte Empfängeradressen auf SMTP-Ebene zurückweisen
Sandy Drobic
postfixbuch-users at japantest.homelinux.com
Do Nov 9 15:51:14 CET 2006
Andreas Schmidt wrote:
> Sandy Drobic schrieb:
>> Bitte die Ausgabe von "postconf -n" posten, das ist sinnvoller als ein
>> unzusammenhängendes Fragment der Konfiguration.
>>
> Stimmt, so fehlt der komplette Zusammenhang meiner Konfiguration,
> also hier die Ausgabe von "postconf -n".
>
> <--schnipp-->
> alias_database = hash:/etc/aliases,hash:/etc/aliases.d/slots
> alias_maps = hash:/etc/aliases,hash:/etc/aliases.d/slots,ldap:ldapaliases
> body_checks = regexp:/etc/postfix/body_checks
> canonical_maps = hash:/etc/postfix/canonical
> command_directory = /usr/sbin
> config_directory = /etc/postfix
> content_filter =
> daemon_directory = /usr/lib/postfix
> debug_peer_level = 2
> defer_transports =
> disable_dns_lookups = no
> header_checks = regexp:/etc/postfix/header_checks
> inet_interfaces = all
> local_destination_concurrency_limit = 10
> mail_owner = postfix
> mail_spool_directory = /var/mail
> mailbox_command =
> mailbox_size_limit = 0
> mailbox_transport = lmtp:unix:public/lmtp
> mailq_path = /usr/bin/mailq
> manpage_directory = /usr/share/man
> maps_rbl_domains =
> relays.ordb.org,dul.dnsbl.sorbs.net,dialups.mail-abuse.org,blackholes.mail-abuse.org,cbl.abuseat.org,sbl.spamhaus.org,list.dsbl.org,opm
> .blitzed.org
Wie bereits erwähnt ist maps_rbl_domains veraltete Syntax. Wenn du Postfix
2.0 oder neuer verwendest, solltest du besser auf reject_rbl_client gehen.
Die RBLS cbl, sbl, opm sind in der sbl-xbl.spamhaus.org zusammengefasst,
du sparst dir so zwei DNS-Abfragen.
> masquerade_classes = envelope_sender, header_sender, header_recipient
> masquerade_domains = $mydomain
> masquerade_exceptions = root
> message_size_limit = 40000000
> mydestination = $myhostname, localhost.$mydomain, ldap:ldapvdom
Okay, hier wird es interessant. Für domains in $mydestination werden die
gültigen Empfänger in local_recipient_maps erwartet. Diese ist schon
belegt als Standard mit:
# postconf -d local_recipient_maps
local_recipient_maps = proxy:unix:passwd.byname $alias_maps
Du hast local_recipient_maps hier nicht anders definiert, deshalb sollte
local_recipient_maps bei dir diesen Wert haben. Das würde aber bedeuten,
dass alle ungültigen Empfänger abgelehnt werden sollten, wenn eine Abfrage
in smtpd_recipient_restrictions nicht vorher "OK" als Ergebnis
zurückmeldet. Ungültig wären dabei alle ldap-User, da diese nicht
abgefragt werden.
Ist bei dir in master.cf die local_recipient_maps als leer definiert?
Es bedeutet auch, dass sämtliche Domains in $mydestination alle die
gleichen User haben, wenn ein Check dies nicht kompliziert anders regelt.
Ist dies wirklich so gewollt hier? Wenn nicht, wären vielleicht
virtual_alias_domains oder virtual_mailbox_domains besser.
> myhostname = ns1.ascffm.de
> myorigin = $mydomain
> newaliases_path = /usr/bin/newaliases
> queue_directory = /var/spool/postfix
> readme_directory = /usr/share/doc/packages/postfix/README_FILES
> recipient_delimiter = +
> relay_clientcerts = ldap:ldaprelcert
> relayhost =
> relocated_maps = hash:/etc/postfix/relocated
> sample_directory = /usr/share/doc/packages/postfix/samples
> sender_canonical_maps = hash:/etc/postfix/sender_canonical
> sendmail_path = /usr/sbin/sendmail
> setgid_group = maildrop
> smtpd_client_restrictions =
> permit_mynetworks,reject_unauth_pipelining,permit_sasl_authenticated,reject_maps_rbl
> smtpd_helo_required = no
Das sehe ich inzwischen als ein Muss an, dass ein Client ein HELO liefert.
> smtpd_helo_restrictions = reject_invalid_hostname
> smtpd_recipient_restrictions =
> ldap:ldapmailenab,permit_tls_clientcerts,permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination,reject_maps_
> rbl
reject_maps_rbl braucht nur einmal aufgerufen werden, und es findet
bereits in smtpd_client_restrictions statt. Da reject_unauth_pipelining
bei mir praktisch keine Mails abweist, würde ich smtpd_client_restrictions
komplett leer lassen.
> smtpd_sasl_auth_enable = yes
> smtpd_sasl_security_options = noanonymous
> smtpd_sender_restrictions =
> reject_unknown_sender_domain,hash:/etc/postfix/access
> smtpd_tls_CAfile = /etc/ssl/CA/usedCA.pem
> smtpd_tls_ask_ccert = yes
> smtpd_tls_cert_file = /etc/ssl/certs/cert.pem
> smtpd_tls_key_file = /etc/ssl/certs/skey.pem
> smtpd_tls_received_header = yes
> smtpd_use_tls = yes
> strict_rfc821_envelopes = no
> tls_daemon_random_source = dev:/dev/urandom
> tls_random_source = dev:/dev/urandom
> transport_maps = hash:/etc/postfix/transport,ldap:ldaptransport
> virtual_maps = ldap:ldapvuser,hash:/etc/postfix/virtual
> <--schnapp-->
>
> Hier werden ja nicht alle Einträge von der "main.cf" angezeigt,
> die ldap-Konfiguration sieht bei mir so aus:
>
> <--schnipp-->
> ldapaliases_server_host= localhost
> ldapaliases_server_port= 389
> ldapaliases_bind= no
> ldapaliases_timeout= 20
> ldapaliases_search_base= dc=ascffm,dc=de
> ldapaliases_query_filter=
> (|(alias=%s)(&(fn=%s)(objectclass=IMAPFolderObject)))
> ldapaliases_result_attribute= uid,mailDeliveryProgram,deliverToUID
> ldapaliases_scope= one
> ldapvuser_server_host= localhost
> ldapvuser_server_port= 389
> ldapvuser_bind= no
> ldapvuser_timeout= 20
> ldapvuser_search_base= dc=ascffm,dc=de
Okay, so eine Abfrage brauchst du auch für die local_recipient_maps. Nur,
dass du eben die Abfrage auf den User oder Alias machst. Die Abfrage muss
kein Ergebnis bringen, wenn der User nicht existiert und ein Ergebnis
(egal, welches!), wenn der User existiert.
Möglich ist auch, ein check_recipient_access ldap:valid_users einzubauen,
welches den Empfänger abweist, wenn er nicht existiert.
Ich bin leider kein ldap-Spezialist, deshalb kann ich dir die genaue
Syntax nicht sagen.
Testen kannst du deine Abfrage mit postmap:
postmap -q user ldap:valid_users
Sandy
--
Antworten bitte nur in die Mailingliste!
PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com
Mehr Informationen über die Mailingliste Postfixbuch-users