Sieve mit Webmin unter Debian Squeeze
April 19, 2011 No CommentsEine Webmin-Installation, sofern sie über das install.sh Script installiert wurde, kommt schon mit einigen Filter-Möglichkeiten daher. Spamassassin ist dabei, clamAV gegen Viren ebenfalls und Procmail als Serverseitiger Filter. Gerade Procmail ist sehr mächtig. Aber was, wenn man jedem User des Servers eine Möglichkeit geben möchte, selbst Filter zu definieren? Klar, jeder bessere Mail-Client kann Filter erstellen. Aber die funktionieren eben nur Clientseitig. Nutzt man mehrere Clients (Arbeit, Zuhause, Handy usw.) wird es schwer, alle Filter synchron zu halten. Ausserdem möchte man ja mal vielleicht einen Abwesenheitsassistenten einrichten. Also einen Filter, der reagiert wenn man eben nicht die Möglichkeit hat den Client anzuschmeißen. Hier kommt Sieve ins Spiel. Sieve ist im Grunde nur eine Definition einer Script-Sprache, mit der Regeln zum filtern erstellt werden können. Allerdings bringt Dovecot ein Sieve-Plugin mit. Und Dovecot ist bei einer Standard Webmin Installation für die Auslieferung über IMAP/POP3 zuständig. Was spricht also dagegen Dovecot als LDA zu verwenden und damit das Sieve-Plugin zu nutzen? Nichts. Eben.
Die Arbeitskette sieht wie folgt aus: Postfix -> Spamassassin/ClamAV -> Procmail -> MailDir
Hinter Procmail schieben wir Dovecot Deliver ein. Bitte beachten, das die Anleitung auf Dovecot 1.2.x und Webmin mit Virtualmin 3.84 basiert.
/etc/dovecot/dovecot.conf
protocols = imap imaps pop3 pop3s managesieve
protocol lda {
# Address to use when sending rejection mails.
postmaster_address = postmaster@domain.de
mail_plugin_dir = /usr/lib/dovecot/modules/lda
mail_plugins = sieve
}
plugin {
sieve_global_path = /etc/globalsieverc
sieve=~/.dovecot.sieve
sieve_storage=~/sieve
sieve_dir=~/sieve
}
Als Protokoll wird managesieve hinzugefügt. Darüber können später Clients auf die Regeln zugreifen, um sie zu ändern. Im Protokoll lda wird das Plugin sieve aktiviert. Unter plugin wird das Plugin konfiguriert. Dazu wird das User-spezifische Sieve-File definiert, das im Home Directory des Users liegt. Auch die globale Sieve-Datei /etc/globalsieverc wird angegeben. Sie kommt zum tragen, wenn der User keine eigenen Filter definiert hat. Legen Sie dazu die Datei /etc/globalsieverc an.
/etc/globalsieverc
require ["fileinto"];
# Move spam to spam folder
if header :contains "X-Spam-Flag" ["YES"] {
fileinto "spam";
stop;
}
Um Procmail davon abzuhalten die Mails selbst in die Postfächer zu legen, und das Ganze Dovecot zu überlassen, wird die Datei /etc/procmailrc angepasst.
/etc/procmailrc
LOGFILE=/var/log/procmail.log
TRAP=/etc/webmin/virtual-server/procmail-logger.pl
:0wi
VIRTUALMIN=|/etc/webmin/virtual-server/lookup-domain.pl $LOGNAME
DELIVER="/usr/lib/dovecot/deliver"
EXITCODE=$?
:0
* ?/usr/bin/test "$EXITCODE" = "73"
/dev/null
:0
* ?/usr/bin/test "$VIRTUALMIN" != ""
{
INCLUDERC=/etc/webmin/virtual-server/procmail/$VIRTUALMIN
}
DEFAULT=$HOME/Maildir/
ORGMAIL=$HOME/Maildir/
DROPPRIVS=yes
:0 w
| $DELIVER
Nach einem Neustart von Dovecot sollte ein filtern möglich sein. Sieve Plugins gibt es unter anderem für Thunderbird und den Webmailer Roundcube.
IT