Nächste Vorherige Inhalt

4. Optionen Details

4.1 Domain und Postmaster

An dieser Stelle möchte ich noch empfehelen darauf zu achten, dass die -d Domain Option angegeben wurde weil das der wichtige Teil nach dem der Filter sucht und ich glaube nicht, dass die Defaulteinstellung "localhost" zu Ihrer Domain passt. Wenn eine falsche Domain für den Filter angegeben wird, dann sucht dieser nach der falschen Domain und wenn er sie nicht findet, was dann sehr wahrscheinlich ist, dann schickt er die Mail an postmaster@(die falsche Domain).

Die -t Option ist erforderlich, wenn man die offizelle Domain(Angabe -d) durch eine andere Domain ersetzen will. Mit dieser Option wird der Domainteil der Adressen, die zu der Domain von -d passen, durch die angegebene Domain ersetzt. Durch diese Option ist es möglich eine andere lokale Domain zum Verteilen der Mails benutzen als die offizielle Internet Domain.

Die -n postmasteralias Option ist wichtig wenn der Filter im Kopf der Mail keine zu der Domain passende Adresse findet. In diesem Fall schickt der Filter die Mail dann an postmaster@(domain aus der -d Option). Die Defaulteinstellung des poastmasteralias ist postmaster und das sollte auf den meisten System passend sein da die meisten Unix Systeme von vorne herein einen Alias von postmaster auf root haben.

Mails können auch an eine Adresse, die mit -r Adresse angegeben wird umgeleitet werden. Wenn -r gesetzt wird, werden alle Adresse im Kopf der Mail ignoriert und die To:-Zeile wird mit der angegebenen Adresse ersetzt.
Vorsicht, auch wenn die -r Option benutzt wird, sollten trotzdem die Optionen -d und -n auch benutzt werden. Aus diesen beiden Optionen wird die Postmaster Adresse gebildet und and diese gehen alle Warung und Fehler Mails (z.B. VBS-Warnungen oder Fehler bei Mailkopf absuchen.
Seit V0.8.2:
Seit V0.8.2 werden die Optionen -d und -n nicht mehr unbedingt zusammen mit der -r Option benötigt, da ab dieser Version diese Angaben aus der Adresse, die mit -r übergeben wurde, gebildet werden.
Wenn -d nicht angegeben wird, werden auch die To:-Zeile und die Cc:-Zeile nicht mehr ersetzt, wenn die Mail über SMTP weiterversandt wird. Dies sollte in diesem Fall aber keine Mailloops oder ungewolltes doppeltes verschicken an Empfänger einer Mail hervorrufen, weil der SMTP Server den Empfänger mit SMTP-Befehlen übergeben bekommt. Trotzdem gibt es manche wenige SMTP Server die den SMTP-Dialog ignorieren und selbst die To:-Zeile absuchen. Bei einem solchen Server sollten die -d und -n Optionen wieder benutzt werden, da dann die To:-Zeile wieder wie vorher ersetzt wird.

4.1.1 Multiple domains

Es können auch mehrere Domains angegeben werden, nach denen gesucht werden soll. Die Domains werden als hochkommaumschlossender-durch Leerzeichen getrennter-String an den Filter nach der -d Option übergeben (z.B. -d "domain1.xxx domain2.yyy domain3.zzz").

4.1.2 Domain und To-Adressen Routing (~/.mailf/domroute.conf)

Eine oder mehrere Domains können auch durch eine andere Domain ersetzt werden. Die Domains die ersetzt werden sollen und die Domains die diese ersetzen sollen werden in der Datei "/$HOME/.mailf/domroute.conf", im Home-Verzeichnis jedes Benutzers mit dem der Filter ausgeführt wird, definiert. In dieser Datei enthält jede Zeile ein Paar von Domains, die Domain die ersetzt werden soll und die Domain die diese ersetzen soll. Die beiden Domains in einer Zeile werden durch einen Doppelpunkt ":" getrennt.
Beispiel:
# domroute.conf: Domain-routing
# domain.from:domain.to
internet.dom:local.dom
domain.xxx:domain.yyy
offical.dom:local.dom

Achtung: Jede Domain die ersetzt werden soll muss auch in der -d Option angegeben werden. (z.B.: -d "local.dom domain.xxx")

Seit der Version V0.9.3 ist es auch möglich definierte To-Adressen durch andere Adressen zu ersetzen. Das To-Adressen-Routing benutzt die selbe Datei wie das Domain-Routing um die Routen zu definieren. Wenn manche Adressen durch andere ersetzt werden sollen, genügt es wenn man eine Zeile für jedes ":"-getrennte Adressenpaar in die domroute.conf Datei einfügt.
Example:
# domroute.conf: Domain-Routing
# domain.from:domain.to
domain.xxx:domain.yyy
...
offical.dom:local.dom
# To-Address-Routing
name@domain.xxx:othername@otherdomain.yyy
maillist@some.dom:name@local.dom

Achtung: Die Domains der Adressen die ersetzt werden sollen, sollten nicht zu den Domains der -d Option hinzugefügt werden. Nur Domains für das Domain-Routing müssen bei der -d Option angegeben werden, das To-Adressen-Routing wird nur dann benutzt, wenn keine passende Domain gefunden wurde.

4.2 SMTP / Mail Delivery Agent MDA

Als Grundeinstellung wird SMTP des localhost zum Weiterversenden der gefilterten Mails benutzt. Mit der -s SMTP-Host Option kann ein anderer Host als der localhost zum Weiterversandt mit SMTP benutzt werden.

Die Grundeinstellung SMTP zu benutzen kann mit der -m MDA Option überschrieben werden und ein lokaler MDA wie "sendmail -t" kann stattdessen benutzt werden. Als Grundeinstellung wird SMTP zum verschicken der gefileterten Mails benutzt. Die -m Option sollte fast jeden belibigen MDA erlauben, das kann ich allerdings nicht sicher sagen, da ich es nur mit Sendmail testen konnte und damit hat es problemlos funktioniert. Wenn jemand Erfahrungen mit anderen MDA's macht würde es mich freuen davon zu hören wie es funktioniert hat.
!!! Wichtig: Falls der MDA Befehl Leerzeichen haben sollte wie "sendmail -t", dann muss dieser Befehl unbedingt in Anführungszeichen setzen, ansonsten kann man nicht sagen was passieren wird. Wenn der gesamte Befehl bereits in Anführungszeichen steht, dann kann man auch Single-Quotes ' benutzen. (z. B. "mailf...-m 'sendmail -t' -l...") !!!

4.3 Logfile

Normalerweise benutzt der Filter die selbe Logdatei wie der aufrufende Prozess benutzt. Um eine ander Datei zu benutzen, kann die -l Option benutzt werden. Diese schreibt Datum, die From:-Zeile, die To:-Zeile und die alte To:-Zeile von den Mails die durch den Filter geschickt wurden in die Logdatei. Als Beispiel "-l /var/log/mailf.log" schreibt das Log in die Datei /var/log/mailf.log.

4.4 Virus Protection

Wenn die --novbs Option zum Aufruf hinzugefügt wurde, sucht der der Filer nach Anhängen mit VB-Wurm-Virus typischen Dateierweiterungen .vbs, .vbe, .wsh, .wsc, .wsf, .scr, .chm, .pif und .shs und ersetzt diese mit .txt. Die .txt Erweiterung sollte von keinem Mailprogramm ausgeführt werden, nicht einmal wenn der Anhang doppel angeklickt wurde.
Falls jemand noch mehr Dateierweiterungen, als die oben genannten, für Würmer kennt, würde ich mich freuen Informationen darüber per Mail zu erhalten.

Die <iframe> and <script> Tags in HTML Mails (Nimda Virus) werden mit der --novbs Option ebenfalls deaktiviert. Dadurch starten Anhänge wie readme.exe nicht bereits im Vorschaufenster und auch nicht automatisch beim öffenen einer Mail. Trotzdem können angehängte Dateien wie readme.exe einen Virus enthalten, sie werden nur nicht mehr automatisch ausgeführt.
Neu in V1.0rc6: Die zu ersetzenden Dateierweiterungen können mit VirusExts= in der Config-Datei bestimmt werden. Jede Erweiterung muss mit einem .(Punkt) beginnen und innerhalb nur einer Zeile stehen.
Example:
~/.mailf/mailf.conf
VirusExts=.vbs.vbe.wsh.wsc.wsf.scr.chm.pif.shs

Durch die --vscan "/path.../scanner options" Option können auch Mailanhänge mit einem exterenen nach Viren gescannt werden. Falls ein Virus gefunden wird, wird der Anhang durch eine Textdatei zur Information ersetzt.
Es sollte eigentlich mit jedem Virenscanner funktionieren, der Scanner muss nur einen Status von 0 zurückgeben wenn kein Virus gefunden wurde. Die Option wurde mit den Scannern Network Associates Virus Scan und H+BEDV AntiVir/X getestet, um einen anderen Virenscanner einzusetzen empfiehlt es sich zunächst auch die --nodelvir Option zu setzen.
Der Kommandozeile für den Aufruf des Virenscanner kann entweder direkt nach --vscan Option angegeben werden (Kommandozeilen mit Leerzeichen müssen in Anführungszeichen gesetzt werden) oder in der Datei "/$HOME/.mailf/vscan.cmd", im Heimverzeichnis des Benutzers mit dem der Filter gestartet wurde, festgelegt werden. Falls nur --vscan gesetzt wird und kein Scanner angegeben wurde, versucht der Filter die Datei "/$HOME/.mailf/vscan.cmd" zu öffnen und sucht in dieser Datei nach der Kommandozeile für den Virenscanner.
Beispiel:
mailf -d ... --vscan "/usr/local/uvscan/uvscan --secure"
--- Oder:---
mailf -d ... --vscan
~/.mailf/vscan.cmd
/usr/local/uvscan/uvscan --secure

Mit der --nodelvir Option werden infizierte Dateien nicht aus dem tmp-Verzeichnis "/$HOME/.mailf/" gelöscht, sie werden nur aus der Mail entfernt damit diese ohne Virus beim Empfänger ankommt.
Vorsicht: Mit dieser Option sind die Mail zwar sicher die als infiziert erkannt wurden, aber die Dateien im tmp-Verzeichnis enthalten immer noch Viren. Diese Option nur zu Testzwecken verwenden oder versuchen die Dateien im tmp-Verzeichnis vor einer Verwendung mit einem Virenkiller bereinigen.
Hinweis: Die --vscan Option kann immer nur so gut sein wie der verwendete Virenscanner. Ein Virenscanner sollte regelmässig (mindestens jeden Monat, empfohlen jede Woche) auf den aktuellen Stand gebracht werden.

4.5 Spam Filter Optionen (~/.mailf/from.spam)

Spammails können nach der Absender Adresse oder der Absender Domain gefiltert werden. Dieses Feature wird aktiviert in dem man eine Datei "/$HOME/.mailf/from.spam" im Home-Verzeichnis des Benutzers mit dem der Filter gestartet wurde erstellt. Jede Zeile dieser Datei sollte aus einem Paar bestehend aus Absender oder Domain und einem Schlüsselwort, was mit der Mail geschehen soll, das durch ein ":" Zeichen gtrennt ist, bestehen. (sender:action). Als Schlüsselwörter können folgende benutzt werden:
trash (Mail nur löschen), postmaster (Postmaster benachrichtigen und die Mail als Anhang mit schicken), reject (Mail löschen und Absender benachrichtigen), postmaster-reject (postmaster und reject gleichzeitig)
Example:
# from.spam: From address spamfilter
# sender:action
# domain:action
spammer@some.dom:trash
sender@other.dom:reject
spam.dom:postmaster
spaming.xxx:postmaster-reject

Manche Spammails können auch an einer Zeile wie X-Mailer: ...Mass Sender... im Mailkopf erkannt werden. Solche Zeilen wird meist von einer massen Mail Software erstellt und so eine Software sucht oft zuvor Homepages nach EMail Adressen ab. Der Filter kann auch solche Mails erkennen und handhaben.
Die --delmass Option löscht eine solche Mail sofort die eine solche Zeile enthält. Die --mass2pm Option schickt die Mail an den Postmaster als Anhang einer Benachrichtigungsmail.
Achtung: Mass Mailer Software kann auch benutzt werden um Maillisten zu verwalten. Normalerweise wird eine solche Software nicht für Maillisten benutzt aber es ist nicht unmöglich.

4.6 Parser options (--norewrite, --maxmem)

Um den Kopf einer Mail best möglich zu erhalten, kann das ersetzen der To:-Zeilen durch die Option --norewrite verhindert werden. Diese Option funktioniert beim Wiederversandt der Mail über SMTP, da der Filter dann einen SMTP-Server-Dialog nur mit den gefundenen Empfängern erstellt.
Trotzdem gibt es manche wenige SMTP Server die den SMTP-Dialog ignorieren und selbst die To:-Zeile absuchen. Bei einem solchen Server sollten die --norewrite Optionen nicht benutzt werden.

Seit der Version V0.9.2 werden Mails unter einer angegebenen Größe im Speicher gefiltert. Dadurch wird nur noch eine Tmp-Datei angelegt und kleine Mails werden schneller bearbeitet.
Voreingestellt werden Mails kleiner als 1048576 Bytes (= 1 MB) im Speicher abgearbeitet. Bei Rechnern mit mehr Hauptspeicher kann auch durch die --maxmem # Option eine andere Grenze (z.B. --maxmem 5242880 für 5 MB) angeben werden.
Durch "--maxmem 0" werden alle Mails wie bisher durch einzelne Dateien(Mailkopf, Mailkörper, neuer Kopf) bearbeitet.

4.7 Andere Optionen

Seit der Version V0.7.7 beendet der Filter normal (Status 0) wenn ein Fehler beim Weiterversandt auftrat. Diese Fehler treten meist bei falsch adressierten Mails oder wenn ein SMTP-Server oder ein lokaler MDA nicht verfügbar war auf. In den meisten Fällen ist es nicht gewollt diese Mails die z.B. mit "550 unknown local mailbox" den Weiterversandt abbrechen, auf dem Server zu behalten. In dem der Filter mit Status 0 beendet wird einer abholenden Software wie fetchmail mitgeteilt, dass sie die Mail vom Server löschen kann.
Falls so eine Mail nicht vom Server entfernt werden soll, kann die --keepresend Option benutzt werden damit der Filter mit einem Fehler beendet und die Mail auf dem Server belassen wird. Wenn eine solche Mail jedoch auf dem Server verbleibt, kann dies dazu führen, dass nur diese Mail immer wieder von der abholenden Software abgerufen wird und die Software sich dann beendet bevor sie weiter Mails danach abheolt hat. Die Option kann aber auf jedenfall nützlich sein, wenn man einen SMTP-Server oder lokalen MDA testet bei dem man Versandtfehler erwartet.
In beiden Fällen werden Mails, bei denen ein Versandtfehler auftrat, in einem Unterverzeichnis "fail" im tmp-Verzeichnis gespeichert und können, wenn nötig, von dort aus manuell versandt werden. Ein Kommandozeilentool zum Versandt von Mails aus diesem Ordner ist momentan in Entwicklung.

Der Filter benachrichtigt auch den Absender einer Mail wenn die Mailbox unbekannt war und der Mailserver mit 550 geantwortet hat. Die selben Mails werden normalerweise von dem absendenden Mailserver erstellt. Wenn solche Mails nicht versandt werden sollen, kann die --no550 Option benutzt werden.
Anmerkung: Mit der --no550 Option wird der Filter keine derartigen Mails versenden, jedoch er kann keine Mails unterdrücken die vom empfangenden Mailserver generiert werden.

Durch die --pm550 wird eine Kopie der Mail zusammen mit einer Meldung auch an den Postmaster gesendet wenn ein 550 Fehler auftritt.

Abschliessend stehen noch zwei Optionen zur Verfügung welche das Verhalten des Filters nicht beeinflussen und lediglich Informationen ausgeben.
Die Option -v gibt die Versionsnummer des Filters aus.
Die Option -h gibt eine kurze hilfe zu den Optionen aus.

4.8 Optionen durch config-Datei setzen und testen mit -cf

Seit Version V0.9.3 können die meisten oben beschriebenen Optionen durch eine config-Datei gesetzt werden anstatt mit den Parametern der Kommandozeile.
Wenn KEINE Domain(-d), Alias(-n) und Redirect-Adresse(-r) durch die Kommandozeile gesetzt wurden sucht der Filter in einer config-Datei nach den Optionen. Falls auch NUR EINE von diesen(-d, -n oder -r) bereits durch die Kommandozeile gesetzt wurde, wird der Filter keine Optionen von einer Datei lesen. Alle anderen Optionen werden zu denen aus eine config-Datei hinzugefügt.
Der Filter versucht zuerst die config-Datei "?userhome?/.mailf/mailf.conf" des Benutzers mit dem er gestartet wurde zu öffnen und die Optionen daraus zu lesen. Sollte eine solche Datei nicht vorhanden sein, versucht der Filter die globale config-Datei "/etc/mailf.conf" zu lesen und die Optionen daraus zu erhalten.
Ein Beispiel für eine "mailf.conf"-Datei kann man im Ordner "samples.mailf" des Quellenpfades finden. Nicht benötigte Optionen können darin deaktiviert werden, in dem man ein #-Zeichen an den Anfang der Zeile, in der diese Option steht, einfügt.

Um eine Konfiguration(Kommandozeile oder config-Datei) zu testen, wurde die neue Option -cf hinzugefügt. Durch hinzufügen dieser Option zur Kommandozeile gibt der Filter lediglich die momentane Konfiguration aus.
Vorsicht: Die -cf Option gibt lediglich die Konfiguration des Filters aus, aber es werden keine eingehenden Mails bearbeitet. Diese Option sollte nur zum Testen einer Konfiguration benutzt werden.


Nächste Vorherige Inhalt