Wie ich ja schon gleich als erstes schrieb, bin ich ein FreeBSD-Nutzer. Da ich nun eh einen Laptop laufen hatte, der mir u.a. dieses Blog, meine Homepage und einen IRC-Bouncer liefert, dachte ich mir, ich könnte damit ja auch einfach mal ein weiteres Problem lösen, das mich plagt.
Pop3 ist ja schon eine feine Sache – so gut wie jeder kann’s. Hat aber den distinkten Nachteil, daß die eMails, die ich dann mit meinem treuen MUA abgeholt habe, nirgendswoanders verfügbar sind. Neue Protokolle braucht das Land. Genauer: IMAP.
Also auf auf und, wie ad001 sagte, „Onkel Google fragen gehen“. Folgende Ingredienzen sind also notwendig, um meine eMails auf dem Server per IMAP bereitzustellen:
- Ein Programm vom Format getmail
- Ein IMAP-Server (bleistiftsweise Dovecot
- Ein eMail-Filterprogramm (hier: Procmail)
- Eine Webmail-Applikation. Aufgrund der Groupware-Einschläge habe ich mich für die Horde-Suite entschieden
So wie das allwissende Ogoogle mir mitteilt, scheint getmail/procmail/dovecot eine halbwegs kanonische Sammlung zu sein (und ungewöhnlich ist Horde auch nicht).
Wie die einzelnen Programme zu installieren sind, setze ich als bekannt voraus (immerhin sind alle Programme in den ports vertreten). Die Probleme lagen auch nicht in der Installation, sondern der Konfiguration. Aber Stück für Stück.
Grundlagen
Was Reisende in die Welt des IMAP über Postfächer unter Unix-ähnlichen wissen sollten.
EMails werden in Postfächern gespeichert. Primär unterscheiden Unix-ähnliche zwei Speicherformate: mbox und Maildir. Die Vor- und Nachzüge dieser Formate kann an anderer und ganz anderer stelle nachgesehen werden. (Außerdem ranken sich einige Sendungen an Newsgroups und Mailinglisten um den Streit mbox gegen Maildir.)
Ich für meinen Teil habe mich für Maildir entschieden. Die Verzeichnisstruktur sagt mir einfach mehr zu – außerdem ist es für mich als Endnutzer eh relativ egal. Nichtsdestominder möge man sich entschieden haben – es macht die Konfiguration später einfacher –, auch wenn es egal ist, wozu
Nachdem die Formatfrage zumindest angesprochen ist, hier die Folge der Programme als Überblick (Fachbegriffe – siehe später):
Programmfluss: Getmail - Procmail - Dovecot - Imp
Das einzige aus dieser Programmkette, das wir als Nutzer dann wirklich zu Gesicht kriegen, ist Imp aus der Horde Suite. Freilich, das ist ja Sinn der ganzen Aktion, kann effektiv jedes MUA-Programm auf Dovecot zugreifen – immerhin möchte ich meinen MUA nicht ersetzen, nur komplementieren.
Trotz der linearen folge der Programme scheint mir dennoch Dovecot dasjenige Programm zu sein, das zuerst zu installieren ist. (Imp ist ja kein automatischer Empfänger von Nachrichten – Dovecot schon.) Also, aufauf zur Konfiguration.
Dovecot
dovecot –n ist ein praktischer Befehl – als jemand mit entsprechenden Rechtn ausgeführt, spuckt Dovecot eine Liste derjenigen Einstellungen aus, die sich von den Standardwerten unterscheiden. Bei mir sieht das so aus:
# 1.0.10: /usr/local/etc/dovecot.conf
log_path: /var/log/dovecot.log
protocols: imaps
ssl_cert_file: /etc/ssl/certs/dovecot.crt
ssl_key_file: /etc/ssl/private/dovecot.key
login_dir: /var/run/dovecot/login
login_executable: /usr/local/libexec/dovecot/imap-login
verbose_proctitle: yes
first_valid_gid: 0
mail_extra_groups: mail
mail_location: maildir:~/Maildir
mail_debug: yes
imap_client_workarounds: delay-newmail outlook-idle
netscape-eoh tb-extra-mailbox-sep
auth default:
passdb:
driver: passwd
userdb:
driver: passwd
Netterweise ist die dovecot.conf sehr gut dokumentiert – eine Modifikation sollte also ein leichtes sein.
Erwähnenswert sei hier: Ich benutze IMAPS; demnach habe ich auch entsprechende Zertifikate generiert. Bei Gelegenheit muß ich einmal überprüfen, ob meine MUA auch mit Klientenzertifikaten umgehen können.
Als Nutzerdatenbanken verwende ich lokale Konten – immerhin habe ich darüber volle Kontrolle und ich hole die eMails eh‘ per getmail von anderen Konten ab.
Wie man auch sieht, habe ich mich für Maildir entschieden und ein entsprechendes Verzeichnis in mein Heim gelegt.
Getmail
Als Nächstes scheint zweckmäßig zu sein, getmail zu konfigurieren – immerhin können sowohl procmail als auch Imp ohne getmail nicht viel machen ;).
Es gibt wirklich genug Anleitungen da draußen, so daß ich nicht im Detail darauf eingehen muß. Was ich als arbeitserleichterung allerdings getan habe, ist folgendes:
Ich habe in meinem Heim das Verzeichnis .getmail angelegt, das die getmailrc-Dateien beherbergen soll. Ich lege dann, wie notwendig, für alle abzuholenden eMail-Konten Kontoname.rc-Dateien an, die die allgegenwärtige, SimplePOPRetreiver-Konfig verwenden.
Den Cronjob habe ich etwas modifiziert – ich als Programmierer halte es für unannehmbar, daß ich bei jedem neuen Konto meinen Cronjob anpassen soll. Ergo:
*/5 * * * * find ~/.getmail/ -name \*rc -exec getmail --rcfile {} > /dev/null 2>&1 \;
Alle fünf Minuten rufe ich nun eben getmail für eine der Konto.rc-Dateien auf – mag mehr fork()-overhead haben, aber das dürfte sich hier in Grenzen halten.
So weit, so leicht. getmail hat sich auch in der Praxis als pflegeleicht erwiesen – anders, als procmail, das für mich etwas unintuitiv zu konfigurieren war.
Procmail
An und für sich ist procmail auch relativ einfach zu konfigurieren. Was für mich ein Stolperstein war, ist die Frage des Postfach-Formates (siehe oben). Ich liefere mal eine Beispiel-Konfiguration ab (auf die in der .procmailrc verwiesen wird):
:0 * ^Reply-To.*notify-dg-Fading_Suns_Games@yahoogroups.com .Mailinglists.Fading\ Suns/ :0 * ^Reply-To.*notify-dg-LaHro@yahoogroups.de .Mailinglists.LaHro/ :0 * ^To_Alertbox Announcement List .Mailinglists.Useit\ Alertbox/ :0 * ^Received.*for.*groups@ichhabeeinetolledomain.de .groups/
Dies sind 4 Anweisungen aus der rc.subscription. Ich filtere zweimal nach der angegebenen Antwortadresse, einmal nach der To-Adresse und als letztes werde ich alle, die vom Konto meiner Groups-eMailadresse abgerufen wurde.
Die Krux liegt im Detail.
Ich nutze, wie erwähnt, Maildir. procmail interpretiert Postfachangaben, die auf einem Vorwärtsschrägstrich enden als Maildir-Postfach; diejenigen, die es nicht tun, als mbox. Noch darüber hinaus wird zwischen „normalem“Maildir und dem MH-Format. Beginnt ein Maildir-Postfach mit einem Punkt („.“), wird es als MH interpretiert.
Das war etwas, das mich beim Konfigurieren wahnsinnig gemacht hat – getmail hat gut abgeliefert. Aber sobald ich procmail in die Kette eingefügt hab, kam keine eMail mehr an. Noch dazu müssen Böse Zeichen™ (Leerzeichen usw.) eben mit Rückwärtsschrägstrichen maskiert werden.
Nach diesem Rezept lassen sich dann auch weitere und auch wesentlich Leistungsstärkere Behandlungen realisieren; dies sei dann woanders erklärt – diese einfachen Filter reichen mir (für’s erste).
Imp
Bleibt noch ein Webmailer. Ich lese viel, daß squirrelmail verwandt wird, aber ich wollte, wie gesagt, die Groupware-Aspekte von Horde nutzen.
Ein Hinweis aus Erfahrung: Baut es aus den Ports. /usr/ports/www/horde-base und /usr/ports/mail/horde-imp sind die gewünschten Pakete. Freilich sind auch die anderen Komponenten in den Ports vorhanden.
Ich hatte zuanfangs die „Horde Groupware Webmail Edition“ als Archiv heruntergeladen, aber nachdem ich mich recht lange in Konfigurationfeinheiten verirrt hatte, hab ich es einfach „selber gebaut“.
Für die Installation von Horde gibt es gute Anleitungen – es ist auch reichlich selbsterklärend. Ein Punkt, der zu bedenken ist, ist die Authentikation. Ich hätte es gerne gehabt, daß alle genutzte Software, so anwendbar, einfach die Rechnerkonten als Anmeldemechanismus zu nutzen. Mit Dovecot ging das gut (s.o.), mit Horde nicht. Habe ich nicht hinbekommen. Also habe ich SQL-Authentication genutzt. Ein Trick, wie man dennoch „komfortabel“ agieren kann, ist in der Nutzer-SQL-Datenbank die gleichen Nutzerdaten einzutragen, wie sie auch in der passwd-Datei stehen (also, äh, halt geeignet homomorph, nicht unbedingt identisch). Dann kann man Imp auch sagen „use Horde auth“ um sich am eMail-Server anzumelden.
Ursprünglich wollte ich én detail meinen Kampf gegen die Horden von Konfigurationsschwierigkeiten erläutern – mit den Ports war das allerdings nicht übermäßig schwer. Das schwierigste war das zusammenspiel von Horde, Imp und Dovecot.
Schlussworte
Ich hoffe, sollte jemand in Not dies gelesen haben, daß ich von Hilfe sein konnte.