[Postfixbuch-users] postfix für unerlaubten optimieren

Sandy Drobic postfixbuch-users at japantest.homelinux.com
Sa Feb 2 17:19:30 CET 2008


Oliver Strixner wrote:
> Hallo,
> 
> erstmal danke an alle die bisher geholfen postfix besser kennenzulernen.
> 
> die Probleme in den mails vom 1.2. und 2.2. sind (hoffentlich) gelöst.
> 
> in meiner mail.log habe ich immer noch ein paar Knadidaten, für die ich noch die passende restriction suche.
> 
> Vor allem für solche, die meinen Hostnamen verwenden, postmaster@ oder etwas anderes davor setzen und diesen dann als Absender deklarieren der dann spam versenden will.
> Wie fange ich denn solche Dinge ab??

Das erste, was du brauchst, ist eine sauber definierte Policy:
- welche Mails präzise dein Server abweisen
- welche er annehmen soll
- wie die Priorität bezüglich Spambekämpfung, Bounces, DSN geregelt ist
usw. usw.

Danach kannst du dich daran begeben, diese Policy umzusetzen in Regeln.
> 
> Feb  2 16:14:20 y postfix/qmgr[25197]: 5BC8C6A4C55: skipped, still being delivered
> Feb  2 16:14:30 y postfix/smtp[25133]: connect to mx.expedient.z[209.166.161.227]: Connection timed out (port 25)
> Feb  2 16:15:00 y postfix/smtp[25133]: connect to vwww1.abs.z[207.114.2.2]: Connection timed out (port 25)
> Feb  2 16:15:00 y postfix/smtp[25133]: 5BC8C6A4C55: to=<hffverthnad at bordertown.com>, relay=none, delay=60, delays=0/0/60$

Dies scheint eine Mail zu sein, welche an eine gefälschte Empfängeradresse 
geht. Bounce oder Spam?

> Feb  2 16:19:20 y postfix/smtpd[25204]: connect from fmmailgate03.web.de[217.72.192.234]
> Feb  2 16:19:21 y postfix/cleanup[25231]: A3A3A6A4C55: message-id=<20080202151921.A3A3A6A4C55 at y.x.z>
> Feb  2 16:19:21 y postfix/qmgr[25197]: A3A3A6A4C55: from=<postmaster at y.x.z>, size=278, nrcpt=1 (queue act$
> Feb  2 16:19:22 y postfix/smtp[25234]: A3A3A6A4C55: to=<jquagliano at quagseeg.com>, relay=mail.mxpath.z[208.74.58.33]:25$
> Feb  2 16:19:22 y postfix/qmgr[25197]: A3A3A6A4C55: removed
> Feb  2 16:19:24 y postfix/smtpd[25204]: NOQUEUE: reject: RCPT from fmmailgate03.web.de[217.72.192.234]: 450 4.1.7 <jquag$
> Feb  2 16:19:24 y postfix/smtpd[25204]: disconnect from fmmailgate03.web.de[217.72.192.234]

Meinst du das hier?

> 
> postconf -n
> 
> alias_database = hash:/etc/aliases
> alias_maps = hash:/etc/aliases
> append_dot_mydomain = no
> biff = no
> broken_sasl_auth_clients = yes
> config_directory = /etc/postfix
> inet_interfaces = all
> inet_protocols = all
> mailbox_size_limit = 0
> mydestination = y, y.x.z, localhost.x.z, localhost
> myhostname = y.x.z
> mynetworks = 127.0.0.0/8
> recipient_delimiter = +
> relayhost =
> smtp_sasl_security_options = noanonymous
> smtpd_banner = $myhostname ESMTP $mail_name
> smtpd_client_restrictions = 
> 			permit_mynetworks,  
> 			reject_unknown_client,  
> 			check_client_access mysql:/etc/postfix/mysql-virtual_forwardings.cf mysql:/etc/postfix/mysql-virtual_email2email.cf,

Was du hier gebaut hast, ist ausgeschrieben:
	permit_mynetworks,
	reject_unknown_client,
	check_client_access mysql:/etc/postfix/mysql-virtual_forwardings.cf
	check_client_access mysql:/etc/postfix/mysql-virtual_email2email.cf,

Mehr dazu unten.

> 			permit
> smtpd_data_restrictions = 
> 			reject_multi_recipient_bounce, 
> 			permit

Hast du mal nachgeschaut, wieviele Mails durch diesen Check abgewiesen wurden?

> smtpd_helo_required = yes
> smtpd_helo_restrictions = 
> 			reject_invalid_hostname,
> 			permit
> smtpd_recipient_restrictions = 
> 			reject_non_fqdn_recipient,
> 			reject_non_fqdn_sender,
> 			reject_unknown_sender_domain,permit_mynetworks,
> 			permit_sasl_authenticated,
> 			reject_unauth_destination,
> 			check_policy_service inet:127.0.0.1:60000,
> 			check_recipient_access hash:/etc/postfix/dont_check_rbls,
> 			check_helo_access pcre:/etc/postfix/helo_checks,check_sender_mx_access cidr:/etc/postfix/bogus_mx,
> 			reject_rbl_client relay.ordb.org,
> 			reject_rbl_client dnsbl.sorbs.z,
> 			reject_rhsbl_sender dsn.rfc-ignorant.org,
> 			reject_unverified_sender,
> 			permit
> smtpd_reject_unlisted_sender = yes
> smtpd_sasl_auth_enable = yes
> smtpd_sender_restrictions = 
> 			reject_unknown_address,
> 			permit

Im Augenblick halte ich deine Konfiguration für ein ziemliches Schlamassel. 
Folgende Punkte (nicht notwendigerweise vollständig) solltest du dringend 
untersuchen:

- Deine Konfig ist im Augenblick schwer in den Griff zu bekommen, da die 
Checks über sämtliche Sparten verteilt sind. Damit ist ein einheitliches 
Black-/Whitelisting fast nicht möglich.

- Du verwendest mindestens eine tote RBL (es hiess übrigens relayS.ordb.org), 
und ich weiss nicht, was dnsbl.sorbs.z sein soll.

- Vor teuren Policy-Servern sollte der Check, ob der Empfänger überhaupt eine 
gültige Adresse ist, bereits geschehen sein. Dies ist Teil von "Best Practises 
für Mailserver", steht auch meistens in den entsprechenden README drin.

- Desgleichen sollte auch VOR der ersten Whitelist (einem Check, der Mails 
direkt annimmt) geprüft werden, ob der Empfänger gültig ist. Ebenfalls Teil 
von "Best Practises".

- ein globales Verify für alle Absender kann dich auf Blacklists befördern. 
Dies ist etwa der Fall bei T-Online (mehr als 40 Rejects an einem Tag) und 
allen Servern, die UCEPROTECT verwenden. Zusätzlich ist die False Positive 
Rate relativ hoch.



> smtpd_tls_cert_file = /etc/postfix/smtpd.cert
> smtpd_tls_key_file = /etc/postfix/smtpd.key
> smtpd_use_tls = yes
> virtual_alias_maps = mysql:/etc/postfix/mysql-virtual_forwardings.cf mysql:/etc/postfix/mysql-virtual_email2email.cf

Oben verwendest du /etc/postfix/mysql-virtual_forwardings.cf als Client-Check, 
hier ist es eine Adressumschreibung. Diese beiden Abfragen sind grundsätzlich 
inkompatibel, da das Ergebnis auf keinen Fall für beide Sinn ergibt.

In virtual_alias_maps erwartet Postfix als Ergebnis eine Emailadresse, bei 
einem check_client_access eine Action (4xx,5xx, ok, reject...).

Ich würde dir dringend raten, die Konfig zu konsolidieren und genau zu 
überlegen, wie die Reihenfolge sein muss.

Da virtual_alias_maps für alle Mails (eingehend und ausgehend) verwendet 
werden, brauchst du sie nicht explizit in den smtpd_*_restrictions aufrufen, 
damit die Adressen umgeschrieben werden.


Hier mal eine Konfig, die ich einem anderen geschickt hatte mit ein paar 
Anmerkungen:

# leer bedeutet, dass sie nicht benutzt werden
smtpd_client_restrictions =
smtpd_helo_restrictions =
smtpd_sender_restrictions =

# alle checks hier einbauen
smtpd_recipient_restrictions =
# checks für alle Clients: keine Emailadressen akzeptieren, die nicht 
vollständig sind.
         reject_non_fqdn_sender
         reject_non_fqdn_recipient
# Relayen erlaubt für Clients, deren IP in mynetworks steht.
         permit_mynetworks
# Relayen erlaubt für Clients, die sich authentifizieren
         permit_sasl_authenticated
# nach reject_unauth_destination nur noch Annahme von Mails für eigene Domains,
# also nur noch externe, nicht vertrauenswürdige Clients
         reject_unauth_destination
# Sicherstellen, dass die Mails auch ausgeliefert werden können (Empfänger ist 
gültig)
# dies setzt voraus, das Postfix auch eine Liste der gültigen Emailadresen hat 
. Siehe oben unter Relay_domains!
         reject_unlisted_recipient
# wenn keine relay_recipient_maps verwendet werden, kann 
reject_unverified_recipient verwendet werden

# hier können falsch eingerichtete Clients aufgenommen werden, die von den 
darunterstehenden Checks abgewiesen werden:
# wenn man dies in der Konfig angibt, muss die Datei existieren, und mit 
"postmap hash:/etc/postfix/whitelist_clients" bei jeder Veränderung
# aktualisiert werden!
         check_client_access hash:/etc/postfix/whitelist_clients
# HELO-checks:
# Bei Postfix 2.3 aufwärts (mail_version?) ist der Name eindeutiger:
# reject_invalid_helo_hostname
# reject_non_fqdn_helo_hostname
         reject_invalid_hostname
         reject_non_fqdn_hostname
# weise alle externen Clients ab, die die eigene IP als HELO angeben (100% nur 
Spammer!):
         check_helo_access hash:/etc/postfix/block_helo_own_ip
# diese Datei enthält IP-Adressen, die nicht öffentlich sind,
# wenn die Absender-Domain im DNS einen MX angibt, der nicht erreichbar ist, 
dann die Mail abweisen.
#check_sender_mx_access cidr:/etc/postfix/sender_mx_blocked
# Blacklist spamhaus.org abfragen
# dies ist eine kombinierte Liste, welche dynamische IPs, Spam-Netze und 
Rechner, die an Spamtrap-Adressen Mails senden, blockieren:
# sehr weit verbreitet, sehr effektiv, sehr wenige False Positives:
         reject_rbl_client zen.spamhaus.org
# Weise Mails ab, deren Absenderadressen nicht im DNS auffindbar sind (diese 
Mails können deshalb ohnehin nicht beantwortet werden):
# Hat manchmal false Positives, aber selten:
         reject_unknown_sender_domain

/etc/postfix/sender_mx_blocked:
127.0.0.0/8             REJECT IP address of MX host is a loopback address
224.0.0.0/12            REJECT IP address of MX host is a multicast address
255.0.0.0/8             REJECT IP address of MX host is a bogus address
192.168.0.0/16                REJECT IP address of MX host is a IANA reserved 
address
172.16.0.0/12                REJECT IP address of MX host is a IANA reserved 
address
10.0.0.0/8                        REJECT IP address of MX host is a IANA reserved

/etc/postfix/block_helo_own_ip:
mail.patorg.de                554 Do not use our own domain as HELO!
87.230.12.138                554 Do not use our own domain as HELO!
[87.230.12.138]                554 Do not use our own domain as HELO!


Hier noch einmal ohne Kommentare die Parameter, die hinzukommen, bzw. die 
bestehenden ersetzen:

/etc/postfix/main.cf:
smtpd_hard_error_limit = 4
smtpd_helo_required = yes
smtpd_client_restrictions =
smtpd_helo_restrictions =
smtpd_sender_restrictions =
smtpd_recipient_restrictions =
         reject_non_fqdn_sender
         reject_non_fqdn_recipient
         permit_mynetworks
         permit_sasl_authenticated
         reject_unauth_destination
         reject_unlisted_recipient
         check_client_access hash:/etc/postfix/whitelist_clients
         reject_invalid_hostname
         reject_non_fqdn_hostname
         check_helo_access hash:/etc/postfix/block_helo_own_ip
         check_sender_mx_access cidr:/etc/postfix/sender_mx_blocked
         reject_rbl_client zen.spamhaus.org
         reject_unknown_sender_domain


Du kannst diese Konfig erweitern nach deinen Bedürfnissen.

> virtual_gid_maps = static:5000
> virtual_mailbox_base = /home/vmail
> virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_domains.cf
> virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_mailboxes.cf
> virtual_uid_maps = static:5000
> 
> Grüße
> Oliver
> _______________________________________
> GRATIS: Movie-FLAT. Jetzt freischalten!
> http://freemail.web.de/club/maxdome.htm
> 


-- 
Sandy

Antworten bitte nur in die Mailingliste!
PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com




Mehr Informationen über die Mailingliste Postfixbuch-users