Wechseln zu:Navigation, Suche
Wiki

Anforderung

Es soll eine längere Liste Domains in die Spamfilter-Whitelist eingetragen werden. Die Eingabe soll automatisiert über ein Skript erfolgen.

Durchführung

Zuerst muss im Webinterface ein neuer Filter angelegt werden. Dazu klickt man im Webinterface auf Anwendungen -> Mailfilter -> "+ Filterregel hinzufügen"

Im neuen Fenster werden folgende Einstellungen vorgenommen (um eine WHITELIST für SMTP zu definieren):
Protokoll: smtp
Kategorie: spam
Aktion: none
Verknüpfungsoperator: OR

Hinweis: Im Bereich "Regeln" werden noch keine Domains eingetragen. Das Fenster wird einfach mit Klick auf "Speichern" geschlossen.


Jetzt gilt es die ID der neuen Filter-Gruppe herauszufinden. Dazu erstellt man einen "root"-Benutzer mit administrativen Berechtigungen, meldet sich mit diesem an einer SSH-Konsole an und führt folgenden Befehl aus:

root@gateway:~# spcli mail filter get
id|pos|proto|category     |action|operator|rule_id|type|flags
--+---+-----+-------------+------+--------+-------+----+-----
3 |2  |smtp |virus        |filter|AND     |3      |any |CONTAINS
1 |1  |smtp |spam         |block |AND     |1      |any |CONTAINS
9 |3  |smtp |spam         |none  |OR      |       |    |

Von der Zeile mit der höchsten "pos" merkt man sich die "id" (in dem Fall also: 9)


Jetzt muss die Liste der Domains vorbereitet werden. In diesem Fall befinden sich die Domains in einer Text-Datei mit einer Domain pro Zeile:

test.de
test2.de
test3.de
...

HINWEIS: Tragen Sie in dieser Liste keine "lokalen" Domains ein (also solche, für die die Firewall Ziel des MX-Records ist). Spammer verwenden gerne Adressen der Zieldomain im (gefälschten) Absender. Diese Mails würden Sie dann einfach zugestellt bekommen.

Um diese Domains werden jetzt CLI-Befehle herum gebaut. In einem Text-Editor, der das Ersetzen von Text mittels Regexes unterstützt geht das einfach mit:

Suche nach: (.*?)([\r\n]+)
Ersetze durch: spcli mail filter rule new id <ID_VON_OBEN> type mail_from flags CONTAINS value "\1"\2

Die Textdatei sollte danach so ähnlich aussehen:

spcli mail filter rule new id 9 type mail_from flags CONTAINS value "test.de"
spcli mail filter rule new id 9 type mail_from flags CONTAINS value "test2.de"
spcli mail filter rule new id 9 type mail_from flags CONTAINS value "test3.de"
...

Der Inhalt dieser Datei wird jetzt in die Zwischenablage kopiert.

Im Putty wird jetzt folgender Befehl ausgeführt:

# cat > /tmp/whitelist-import.sh

Nach einem Druck auf "ENTER" springt der Cursor in die nächste Zeile. Hier wird der Inhalt aus der Zwischenablage eingefügt und mit "ENTER" -> "Strg + D" gespeichert.

Jetzt wird die Datei ausführbar gemacht:

# chmod +x /tmp/whitelist-import.sh

und zum Schluss ausgeführt:

root@gateway:~# /tmp/whitelist-import.sh
rule_id
-------
10
rule_id
-------
11
rule_id
-------
12

Nun kann geprüft werden, ob das alles nach Wunsch funktioniert hat:

root@gateway:~# spcli mail filter get
id|pos|proto|category     |action|operator|rule_id|type     |flags   |value
--+---+-----+-------------+------+--------+-------+---------+--------+-----
3 |2  |smtp |virus        |filter|AND     |3      |any      |CONTAINS|
1 |1  |smtp |spam         |block |AND     |1      |any      |CONTAINS|
9 |3  |smtp |spam         |none  |OR      |10     |mail_from|CONTAINS|test.de
  |   |     |             |      |        |11     |mail_from|CONTAINS|test2.de
  |   |     |             |      |        |12     |mail_from|CONTAINS|test3.de


Das gleiche muss im Falle einer Whitelist nochmals für
Protokoll: smtp
Kategorie: probably_spam

durchgeführt werden