Moin!
"NEVER list a virtual MAILBOX domain name as a mydestination domain!"
Leider steht keine Begründung dabei
Weil Postfix die Mails sonst in den falschen Hals^WTransport kriegt, vermute ich.
Die mit mysql-acc/transport angesprochene Tabelle sieht so aus:
domain | transport
-------------+-----------
example.com | virtual:
example.org | virtual:Soweit ich weiß, ist die zweite Spalte allerdings nur ein Platzhalter...
Richtig, weil Postfix immer Hash-Lookups macht und dafür zusätzlich zu dem Hash (der Domain) auch irgendwas braucht, was man uplooken kann, auch wenn es in der Beziehung irrelevant ist.
Wobei deine Tabelle doch eher so aussieht, als könne man sie auch als transport_map nutzen.
Greylisting ist eine der zwei erfolgreichsten Waffen gegen blöden Spam. Die andere Waffe ist eine strenge Prüfung der Angabe HELO.
Ich habe mir gerade mal Greylisting in Wikipedia durchgelesen, ich werde demnächst sicherlich mal versuchen dieses Greylisting zu implementieren.
Ist, wie erwähnt, recht simpel. Die Arbeit übernimmt ein Fertigmodul, welches über eine TCP- oder Unix-Socket ansprechbar ist, und Postfix bindet das einfach nur ein in den *_restrictions. Das Modul kann dann noch passend konfiguriert werden (Standardwerte von postgrey waren aber schon sinnvoll gewählt).
Wie funktioniert die strengere Prüfung der Angabe HELO? Was soll ein Server eigentlich in der HELO Angabe übermitteln? Bei meinen Tests ist es relativ egal, was ich da rein schreibe...
Der SMTP-Standard schreibt vor, dass hinter HELO ein FQDN kommt, also ein vollständiger Domainname. Der Standard schreibt nicht vor, dass dieser Domainname in irgendeiner Weise mit dem sendenden SMTP-Server zusammenhängen muß.
reject_invalid_hostname und reject_non_fqdn_hostname prüfen auf die Einhaltung dieser Forderung. Damit werden Scherzkeksprogramme, die eben "HELO friend" oder "HELO 1.1.1.1" (IP-Adressen, falsch konstruiert) nutzen, abgewiesen. Das sind schon eine ganze Menge.
reject_unknown_hostname verweigert den Empfang, wenn der bei HELO angegebene Hostname nicht im DNS auffindbar ist. Ist ebenfalls hilfreich, aber schon einen Schritt weg von der SMTP-Norm, d.h. es könnte legitime Mailer geben, die damit ausgefiltert werden. Allerdings halten sich alle verbreiteten Mailserver an die Übereinkunft, als HELO ihren EIGENEN Domainnamen zu senden.
Das wiederrum ist der Ansatzpunkt für check_helo_access pcre:/etc/postfix/helo_access - dort prüfe ich, ob die Domain im HELO meine eigene ist. Denn das kann ja auch nicht sein, meine eigene Domain im HELO darf nur mein eigener Mailserver verwenden, und der würde mit sich selbst nicht SMTP sprechen (und vorher sowieso schon durch permit_mynetworks durchgelassen werden). Ebenso ist meine eigene IP im HELO extrem ablehnungswürdig.
Und das war es dann auch schon - und bringt fast 50% der abgelehnten Mails.
Was einem auf der anderen Seite auch wieder Angst machen sollte: Wenn die Spambot-Autoren demnächst etwas besser hingucken in die Standards, und auch aktiv auswerten, wie auf ihre Zustellversuche reagiert wird, könnte direkt schon die nächste Spamwelle kommen.
Ich meine: HELO-Checks und Greylisting sind ja nur deshalb so erfolgreich, weil die Spambot-Autoren schludrig gearbeitet haben. Nicht auszudenken, was passiert, wenn da jemand mit Sachverstand rangehen würde.
Die von dieser Tabelle zurückgelieferte "action" soll also ausgeführt werden, doch wie hat diese action auzusehen? Einfach der Name der Restriktions-Klasse? Sähe eine Tabelle also so aus:
adresse | action
----------------+------------
foo@example.org | userlevel1 <- Nach deiner Definition niedriger Spamschutz
bar@example.com | sammeladdr <- Nach d.D. hoher Spammschutz
Ganz genau.
Diese Postfix-Tabellen, egal ob sie nun als Hash oder in MySQL abgelegt sind, haben immer das gleiche Schema: Lookup-Wert => Ergebnis. Problem 1: Was ist der Lookup-Wert? Problem 2: Was ist das Ergebnis? :)
Das Ergebnis ergibt sich hier fast von alleine. Die Lookup-Werte müssen bei dir allerdings nicht nur komplette Mailadressen sein, sondern wie dokumentiert auch Domains und Domainteile, oder Adressteile.
- Sven Rautenberg
"Love your nation - respect the others."