[Postfixbuch-users] Machbarkeit eines Content Filters

Jan P. Kessler postfix at jpkessler.info
Mi Mär 25 15:01:31 CET 2009


Jan Novak schrieb:
> Nun haben wir ein kleines PRG geschrieben, welches auf dem Port 10024
> horcht und den dort empfangenden Input Stream an 10025 wieder zurück
> gibt.
> (ala amavis)
> Postfix öffnet den Kanal zu 10024 und das Java Prg erkennt das auch -
> und weiter passiert nichts.
>
> Was erwartet Postfix, damit es die Mail senden kann ?

Wie viele bereits zuvor geschrieben haben: einen SMTP Dialog. Falls Du
jetzt nicht alle RFCs lesen und lernen willst (was eigentlich sicher zu
bevorzugen wäre), kannst Du es Dir auch einfacher machen und das Ding
als transparenten Proxy bauen. Sprich:

- postfix verbindet sich auf 10024 (postfix-in)
- in diesem moment machst du den connect auf 10025 (postfix-out) und
holst dir die HELO Zeile ab
- die reichst du an 10024 (postfix-in) weiter
- die antwort des postfix-in gibst du dann wieder an 10025 (postfix-out)
- ...das gleiche spiel immer weiter...

Wichtig ist, dass Du das abschließende "250 ok" an 10024 (postfix-in)
nach dem DATA Teil erst ausgibst, wenn du es vom upstream 10025
(postfix-out) bekommen hast - wenn du dich an das o.g. gehalten hast,
ergibt sich das aber von selbst, da du ja nur das OK vom 10024
durchreichst. Somit übernimmt dein Programm zu keiner Zeit die
Verantwortung für die E-Mails, muss nicht queuen, dir springen keine
kollegen an den hals, der weltuntergang verzögert sich noch ein wenig,
usw...

Eine schöne Referenzimplementierung (allerdings in perl) dazu gibt es
unter http://bent.latency.net/smtpprox/. ein ausführlicheres Beispiel,
dass auch Spamassassin und diverse Virenscanner integriert, findest Du
unter http://jpkessler.de/postfwd/DEVEL/tools/postfwd-filter.




Mehr Informationen über die Mailingliste Postfixbuch-users