[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