BoMbY
Registered User
Hallo,
also das Plesk Power Panel bietet die Möglichkeit eigene Mail Handler einzubinden, ohne Qmail selbst zu verändern - was natürlich für spätere Updates ideal ist.
Das ganze hier ist momentan nicht viel mehr als ein Proof of Concept, aber vielleicht lässt sich ja etwas daraus machen.
Mein Perl-Script (siehe Anhang) macht Momentan nichts weiter, als eine komplette Mail an den ClamAV-Daemon zu übergeben, und einen Reject (kein Bounce, wenn es 'before-queue' registriert wird) auszulösen, wenn eine Virussignatur gefunden wurde. Dies lässt sich für eine Domain, einen Benutzer oder Global aktivieren. Es wird derzeit der deprecated Befehl 'STREAM' von clamd benutzt, da ich die aktuelle Version mit dem neuen Befehl 'INSTREAM' noch nicht testen konnte. Entsprechende Einträge im Mail-/Syslog sollten geschrieben werden.
-----------------
Für die Zukunft/ToDo:
- Es wäre auch möglich die Mail entsprechend zu verändern, zum Beispiel Header hinzuzufügen, dazu muss nur der Standard-Output entsprechend angepasst werden.
- Alternativ könnte man die Mails zum Beispiel in einem Verzeichnis ablegen, und dem Benutzer eine komplett andere Statusmail zusenden (wie Dr.Web es glaube ich zur Zeit macht).
- Derzeit scheint es übrigens nicht möglich zu sein, eine eigene Meldung als Reject-Message zurückzugeben, weswegen Qmail dem Sender immer mit dem Default antwortet.
- Wenn der installierte ClamAV-Daemon INSTREAM unterstützt, sollte dieses benutzt werden (ClamAV-Version checken).
- ClamAV-Konfiguration sollte automatisch ausgelesen werden.
- Individuelle konfigurierbare Optionen zur Mailbehandlung.
- Theoretisch sollte es auch Möglich sein, einen eigenen Virenscanner in die PPP-Oberfläche zu integrieren (Pluggable Antivirus Filters), aber da stehe ich Momentan noch total auf dem Schlauch.
Vielleicht hat ja sonst noch jemand noch ein paar nette Ideen oder Hinweise?
-----------------
Eine Doku zu den Mail Handlern usw. kann man bei Parallels finden: http://download1.parallels.com/Plesk/PPP9/Doc/en-US/plesk-9.2-unix-mod-api/
Clamd-Doku: http://www.clamav.net/doc/latest/html/node26.html
-----------------
Zur Installation:
Das Script 'qclamd.pl' muss mit Ausführberechtigung für QMail versehen werden, also zum Beispiel (r-xr-xr-x/555). Außerdem muss natürlich ClamAV installiert sein. Je nach System muss die Zeile 'my $clamd_socket = '/var/run/clamav/clamd.ctl';' entsprechend angepasst werden, da das Script die Konfiguration von ClamAV derzeit nicht auslesen kann.
Man kann dann das Script soweit auf Funktionalität mittels des weiteren Scripts 'qclamd_test.pl' testen, welches eine Datei als Parameter erwartet, welche dann mittels 'qclamd.pl' an ClamAV übergeben und gechecked wird. Dabei sollte keine Fehlermeldung (ERROR) ausgegeben werden, sondern ein Status (PASS oder REJECT) und bei sauberen Dateien zusätzlich der Quelltext der Nachricht.
Einbinden kann man das Script als Mail Handler dann per Kommandozeile zum Beispiel wie folgt:
für eine Mailadresse:
oder Global für alle:
Die Priorität von 90 sollte dazu führen, dass das PPP greylisting (05) und spf (10) vorher ausgeführt werden.
----------
Getestet derzeit nur mit PPP 9.2.3 unter Ubuntu 8.04 (Hardy) und mit ClamAV 0.94.2.
also das Plesk Power Panel bietet die Möglichkeit eigene Mail Handler einzubinden, ohne Qmail selbst zu verändern - was natürlich für spätere Updates ideal ist.
Das ganze hier ist momentan nicht viel mehr als ein Proof of Concept, aber vielleicht lässt sich ja etwas daraus machen.
Mein Perl-Script (siehe Anhang) macht Momentan nichts weiter, als eine komplette Mail an den ClamAV-Daemon zu übergeben, und einen Reject (kein Bounce, wenn es 'before-queue' registriert wird) auszulösen, wenn eine Virussignatur gefunden wurde. Dies lässt sich für eine Domain, einen Benutzer oder Global aktivieren. Es wird derzeit der deprecated Befehl 'STREAM' von clamd benutzt, da ich die aktuelle Version mit dem neuen Befehl 'INSTREAM' noch nicht testen konnte. Entsprechende Einträge im Mail-/Syslog sollten geschrieben werden.
-----------------
Für die Zukunft/ToDo:
- Es wäre auch möglich die Mail entsprechend zu verändern, zum Beispiel Header hinzuzufügen, dazu muss nur der Standard-Output entsprechend angepasst werden.
- Alternativ könnte man die Mails zum Beispiel in einem Verzeichnis ablegen, und dem Benutzer eine komplett andere Statusmail zusenden (wie Dr.Web es glaube ich zur Zeit macht).
- Derzeit scheint es übrigens nicht möglich zu sein, eine eigene Meldung als Reject-Message zurückzugeben, weswegen Qmail dem Sender immer mit dem Default antwortet.
- Wenn der installierte ClamAV-Daemon INSTREAM unterstützt, sollte dieses benutzt werden (ClamAV-Version checken).
- ClamAV-Konfiguration sollte automatisch ausgelesen werden.
- Individuelle konfigurierbare Optionen zur Mailbehandlung.
- Theoretisch sollte es auch Möglich sein, einen eigenen Virenscanner in die PPP-Oberfläche zu integrieren (Pluggable Antivirus Filters), aber da stehe ich Momentan noch total auf dem Schlauch.
Vielleicht hat ja sonst noch jemand noch ein paar nette Ideen oder Hinweise?
-----------------
Eine Doku zu den Mail Handlern usw. kann man bei Parallels finden: http://download1.parallels.com/Plesk/PPP9/Doc/en-US/plesk-9.2-unix-mod-api/
Clamd-Doku: http://www.clamav.net/doc/latest/html/node26.html
-----------------
Zur Installation:
Das Script 'qclamd.pl' muss mit Ausführberechtigung für QMail versehen werden, also zum Beispiel (r-xr-xr-x/555). Außerdem muss natürlich ClamAV installiert sein. Je nach System muss die Zeile 'my $clamd_socket = '/var/run/clamav/clamd.ctl';' entsprechend angepasst werden, da das Script die Konfiguration von ClamAV derzeit nicht auslesen kann.
Man kann dann das Script soweit auf Funktionalität mittels des weiteren Scripts 'qclamd_test.pl' testen, welches eine Datei als Parameter erwartet, welche dann mittels 'qclamd.pl' an ClamAV übergeben und gechecked wird. Dabei sollte keine Fehlermeldung (ERROR) ausgegeben werden, sondern ein Status (PASS oder REJECT) und bei sauberen Dateien zusätzlich der Quelltext der Nachricht.
Einbinden kann man das Script als Mail Handler dann per Kommandozeile zum Beispiel wie folgt:
für eine Mailadresse:
Code:
/usr/local/psa/admin/bin/mailmng --add-handler --handler-name=qclamd --handler-type=recipient --handler-type-name=user@domain.com --executable=/path/to/qclamd.pl --context='single' --hook=before-queue --priority=90
oder Global für alle:
Code:
/usr/local/psa/admin/bin/mailmng --add-handler --handler-name=qclamd --handler-type=global --executable=/path/to/qclamd.pl --context='global' --hook=before-queue --priority=90
Die Priorität von 90 sollte dazu führen, dass das PPP greylisting (05) und spf (10) vorher ausgeführt werden.
----------
Getestet derzeit nur mit PPP 9.2.3 unter Ubuntu 8.04 (Hardy) und mit ClamAV 0.94.2.
Attachments
Last edited by a moderator: