Abholdienst für Mail

Abstract

Immer wieder wird auch heute noch ein Abholdienst für Mail benötigt, doch die Konfiguration des Klassikers Fetchmail ist zuweilen sehr komplex. Eine einfache Alternative ist Getmail.

Immer wieder wird auch heute noch ein Abholdienst für Mail benötigt, doch die Konfiguration des Klassikers Fetchmail ist zuweilen sehr komplex. Eine einfache Alternative ist Getmail. Es lässt sich zudem sehr gut in eine bestehende Postfix/Dovecot-Installation integrieren und bietet ein besonderes Schmankerl: Es kann die Nachrichten während des Abholvorgangs nach Viren oder Spam filtern.

Hier ein kleines Beispiel, wie man einen Getmail-Abholdienst gestalten könnte. Zahlreiche Varianten finden Sie auf der Website von Getmail .

Eine typische Konfigurationsdatei für Getmail sieht z.B. so aus:

user_at_beispiel.com-getmail.rc

 [options]
 verbose = 0
 message_log = /var/log/getmail.log
 read_all = false
 delivered_to = false
 delete = false

 [retriever]
 type = SimplePOP3Retriever
 server = mail.beispiel.com
 username = user@beispiel.com
 password = .....

[filter-1]
allow_root_commands = True
type = Filter_classifier
path = /usr/bin/clamdscan
arguments = ("--stdout", "--no-summary", "-")
exitcodes_drop = (1, )

[filter-2]
allow_root_commands = True
type = Filter_external
path = /usr/bin/spamc
arguments = ("-s", " 250000", "-u", "user@server.com")

[destination]
type = MDA_external
path = /usr/lib/dovecot/deliver
arguments = ("-d", "user@server.com")
user = vmail
group = vmail

Besonderheit hier: Es erfolgt eine direkte Übergabe an den Dovecot-LDA. So kommen eventuell konfigurierte Dovecot-LDA-Plugins automatisch zum Einsatz, z.B. die Filtersprache Sieve oder ACLs, Quota usw.

Zwar muss man sich dadurch nicht mit möglicherweise existierenden Postfix Restrictions herumschlagen, allerdings würden eine existierende SMTP Transport Table, eine Weiterleitung oder das Umschreiben der Adressen von Postfix etc. auch nicht zum Tragen kommen. Eine Weiterleitung sollte aber ohnehin mit Sieve realisiert werden, da man zuvor noch Spam ausfiltern kann, den man ja möglichst nie weiterleiten will.

Der Antivirenfilter Clamav ( clamscan ) ist hier so eingerichtet, dass er Virenmails nicht an weitere Filter übergibt.

Der Spamassassin-Filter ( spamc ) wird mit dem Usernamen übergeben, so dass Spamassassin existierende White- und Blacklistings mitverwendet.

Je nach Setup kann man in der Spamassassin-Konfiguration ein paar zusätzliche Parameter für die von Getmail bereits nach Spam gescannten Mails zur besseren Klassifizierung übergeben.

/etc/spamassassin/local.cf

...
bayes_ignore_header X-Bogosity
bayes_ignore_header X-Spam-Flag
bayes_ignore_header X-Spam-Status
bayes_ignore_header X-getmail-filter-classifier
...

Weitere Konfigurationsdateien für weitere User kann man ähnlich anlegen, um danach per Cron über Getmail und ein kleines Bash-Script die Abholung regelmäßig ausführen zu lassen.

/etc/crontab

10,30,50  * * * * root /root/.getmail/getmail-rc.sh

/root/.getmail/getmail-rc.sh

#/bin/sh
filelist=`/bin/ls /root/.getmail/*.rc`
for i in $filelist
do
/usr/bin/getmail -q --rcfile=$i
done

Note

Verwendet man einen Abholdienst, sollte man den Transportweg der Mails sorgfältig planen und an die vorhandene Mailserver-Konfiguration anpassen.

Robert Schetterer, 12. April 2013