[Postfixbuch-users] Greylisting empfängerindividuell aus MySQL

Kai Fürstenberg kai_postfix at fuerstenberg.ws
So Feb 17 11:34:43 CET 2013


Hi Ronny,

Am 17.02.2013 01:46, schrieb Ronny Seffner:
> Bisher gab's den postgrey in den smptd_sender_restrictions per
> check_policy_service inet:127:0:0:1:10023 aufgerufen. Das hat funktioniert

Greylisting hat in den *_sender_restrictions absolut nichts verloren. 
Greylisting benötigt Sender, Recipient und Client und gehört somit in 
die smtpd_recipient_restrictions.

Außerdem ist smtpd_delay_reject defaultmäßig auf yes, was dazu führt, 
dass die Restrictions eh erst nach dem RCPT TO ausgeführt werden. Also 
kannst du auch gleich alles in die recipient_restrictions reinsetzen.

(die Doppelpunkte in der IP-Adresse ignoriere ich hier mal)

> Nun möchte ich es wohl so:
>
> smtpd_restriction_classes = policy_greylist
> policy_greylist = check_policy_service inet:127.0.0.1:10023

OK

> in smtpd_sender_restrictions dann check_recipient_access
> mysql:/etc/postfix/mysql-virtual_policy_greylist.cf

*_recipient_* (s.o.)

> Nur tut nun laut Log der postgrey nichts mehr, aber ein 'postmap -q
> ronny at seffner.de mysql:/etc/postfix/mysql-virtual_policy_greylist.cf'
> liefert ganz brav "policy_greylist".

Das ist auch richtig. Alles andere führt dazu, dass die 
Restriction-Class nicht ausgeführt wird.

> ns1:/etc/postfix# postconf -n | grep grey
> smtpd_recipient_restrictions = reject_non_fqdn_recipient
> 	reject_unknown_recipient_domain
> 	permit_mynetworks
> 	permit_sasl_authenticated
> 	check_recipient_access hash:/etc/postfix/roleaccount_exceptions
> 	check_helo_access pcre:/etc/postfix/helo_checks
> 	reject_non_fqdn_hostname
> 	reject_invalid_hostname
> 	check_sender_mx_access cidr:/etc/postfix/bogus_mx
> 	check_sender_access hash:/etc/postfix/senders
> 	reject_unlisted_sender

^ der nützt hier nichts mehr, weil permit_sasl_authenticated vorher 
schon sein OK gegeben hat.

> 	check_client_access cidr:/etc/postfix/policyd-weight
> 	check_policy_service inet:127.0.0.1:60001
> 	check_client_access hash:/etc/postfix/backup_mx
> 	check_policy_service unix:private/policy-spf
> 	check_recipient_access
> mysql:/etc/postfix/mysql-virtual_policy_greylist.cf
> 	check_recipient_access hash:/etc/postfix/customer2-recipients
> 		hash:/etc/postfix/customer1-recipients
> 		hash:/etc/postfix/relay_domains
> 	reject_unauth_destination

^ den hier würde ich weiter nach oben legen: Warum solltest du etliche 
Abfragen ausführen nur um hier letztlich festzustellen, dass die Mail 
gar nicht für dich bestimmt ist? Ein guter Platz wäre direkt nach dem 
permit_sasl_authenticated. Möglicherweise auch etwas später, das musst 
du dir selbst überlegen.

> 	reject_unverified_recipient

^ vielleicht auch etwas weiter nach oben?

> 	permit

^ das abschliessende "permit" ist völlig unnötig.

> smtpd_restriction_classes = policy_greylist
>
> Die restriction class selbst liefert postconf nicht. Warum?

Das ist normal. Der Name der Restriction-Class ist in dem Sinne kein 
Konfigurationsparameter.

> Edit : Ich sehe gerade 2x check_recipient_access hintereinander. Stört das?
> Aber auch eine Bereinigung auf einen Eintrag mit den 4 Quellen führt zu
> keiner Besserung.

Nein, das gehört sogar so. Wenn du die Einträge alle hintereinander 
schreibst, kann das unerwünschte Effekte haben. Das hatten wir vor 
kurzem hier auf der Liste.

> ns1:/etc/postfix# postmap -q ronny at seffner.de
> mysql:/etc/postfix/mysql-virtual_policy_greylist.cf
> policy_greylist
>
> Muss meine SQL Query anderes liefern? Was?

Nein, genau so.

Wenn dein Greylisting nicht durchgeführt wird, kann das verschiedene 
Ursachen haben:
1. Greylisting läuft erst gar nicht, dann bekommst du einen Eintrag ins Log.
2. Greylisting liegt in den restrictions so weit unten, dass 
möglicherweise eins davorliegende Restriktion bereits die Annahme der 
Mail erlaubt.
3. Dein MySQL läuft nicht, auch dann bekommst du einen Eintrag ins Log.
4. sonstiger Tippfehler. Auch dies müsste im Log stehen.

bei 1, 3 und 4 musst du nur ins Log schauen, oder das mal hier posten 
(bitte vollständig von "connect" bis "disconnect"). Bei 2 wirst du wohl 
nicht umhin kommen, deinen smtpd mal auf "verbose" zu setzen, und 
nachzusehen, welche Restriktion die Annahme erlaubt (ode jede einzelne 
mal händisch durchprobieren).

Egal wie: Das Log ist dein Freund.

-- 
Kai Fürstenberg

PM an kai at fuerstenberg punkt ws



Mehr Informationen über die Mailingliste Postfixbuch-users