$Id: README.Postfix.de,v 1.4 2001/11/09 19:21:26 mjt Exp $

avcheck mit Postfix zu nutzen ist relativ einfach.

Postfix besitzt seit dem 20000228 Release eine "content_filter"
Feature. Grob gesagt ermoeglich dieses Feature, die Mail durch
beliebiege Programme zu bearbeiten (und somit z.B. nach
Schluesselwoertern zu suchen, Viren zu erkennen usw.)

Der content_filter ist in der Datei "FILTER_README" in der Postfix
Distribution dokumentiert.

Die avcheck zugrundeliegende Idee ist, dass jede Mail, die von Postfix
bearbeitet wird, den content_filter passieren muss.
Dieser als "transport" definierte Filter prueft die Mail und, wenn
kein Virus gefunden wird, reinjiziert die Mail zur weiter Zustellung
erneut in Postfix.
Natuerlich muss dies auf einem Wege gescheehen, der nicht erneut der
Filterung unterworfen ist.

Damit wir nun avcheck mit Postfix nutzen koennen, muss zuallererst der
Antivirus Daemon installiert und gestartet werden.

Danach muessen die folgenden Aenderungen in der Konfiguraton von
Postfix vornehmen.

In der Datei /etc/postfix/master.cf muessen die folgenden Zeilen
eingefuegt werden. Die hier gezeigten Kommentare dienen nur der
Uebersichtlichkeit:

# =======================================================================
# service       type private unpriv chroot wakeup  maxproc command + args
#                    (yes)   (yes)  (yes)  (never) (50)
# =======================================================================

localhost:1025 inet n       -      n      -       - smtpd -o content_filter=

(Ja, das letzte Zeichen ist ein Gleichheitszeichen).

Man kann ganz einfach die schon vorhandene Zeile `smtp inet ... smtpd'
kopieren und anpassen. Darueberhinaus kann man hier ueber "-o ..."
z.B. spezielle smtpd_*_restrictions spezifizieren, die unnoetige
Ueberpruefungen abschalten, z.B.:
-o smtpd_recipient_restrictions=permit_mynetworks,reject 

Als naechstes muss ein Transport "avcheck" in der master.cf definiert
werden. Wir zeigen hier den avcheck Aufruf fuer einen im chroot-Jail
laufenden kavdaemon:

# ==================================================================
# service  type private unpriv chroot wakeup  maxproc command + args
#               (yes)   (yes)  (yes)  (never) (50)
# ==================================================================
 avcheck   unix -       n      n      -       5      pipe
        flags=q user=avclient argv=/var/spool/avp/avcheck
        -d /var/spool/avp/./tst -s AVP:/var/spool/avp/ctl/AvpCtl
	-f ${sender} -S :1025 -- ${recipient}

(die letzten drei Zeilen MUESSEN mit einem Leerzeichen/Tabulator
anfangen: alle vier Zeilen bilden eigentlich eine logische Zeile,
sind aber der Lesbarkeit halber so umgebrochen worden!)

Bitte beachten Sie die "-S :1025"-Option: Sie gibt an, wie Mail ins
System reinjiziert werden kann, sodass sie NICHT erneut gefiltert
wird. Hier handelt es sich um Port 1025 auf localhost.
'flags=q' wird benoetigt, um Adressen mit Leerzeichen und anderen
Sonderzeichen korrekt zu "quoten".

Man kann hier eine Option "-t timeout" hinzufuegen, welche eine obere
Schwelle fuer die Zeit angibt, die der Filter benoetigen darf (in
Sekunden).
Hier ist es natuerlich sinnvoll einen Wert anzugeben, der KLEINER ist
als Postfixs eingebautes globales "command_time_limit" (bzw. ein
explizites "avcheck_time_limit", sollte es definiert worden sein).

Als naechstes muss das Skript "infected" auf die eigenen Beduerfnisse
angepasst werden. Man kann 

  content_filter = avcheck

in der /etc/postfix/main.cf angeben. Dann wird ALLE Mail, sogar lokal
via /usr/sbin/sendmail generierte Mail dem content_filter unterworfen.

Oder man fuegt:

  -o content_filter=avcheck
  
der smtpd Zeile in der master.cf hinzu:

 smtp inet  n - n - - smtpd -o content_filter=avcheck

sodass nur Mail, die ueber das Netzwerk auf Port 25 hereinkommt
gescannt wird. 

Nachdem alle Aenderungen vorgenommen wurde, muss

  postfix reload

ausgefuehrt werden. Zum Testen muss nun eine Mail auf einem Pfad in
das Mailsystem geschickt werden, der der Filterung unterworfen ist und
waehrenddessen das Logfile beobachtet werden.

Generell ist es immer ein guter Plan zu TESTEN, ob "avcheck"
tatsaechlich funktioniert: Am besten sollte man es manuell starten,
bevor man versucht, es ueber den content_filter in Postfix einzubinden.
Dies muss natuerlich unter derselben Userid (avc) geschehen; man
pipe'd einfach eine "sauber" und eine "infizierte" Mail an avcheck.
Dies sollten funktionieren, bevor man es in Postfix einbaut.

Waehrend der Testphase kann es Sinn machen, in der main.cf

soft_bounce = yes

zu setzen. So wird verhindert, dass im Fehlerfall Mail gebounced wird.
