OpenWRT als Mailserver mit Dovecot, fetchmail und procmail

Diese Anleitung ist Teil des Projekts OpenWRT als eierlegende Wollmilchsau.

OpenWRT bietet in seinem Repository alle Pakete an die wir benötigen. Das Sieve Plugin wurde nicht für OpenWRT übersetzt insofern kommt hier die altbewährte fetchmail – procmail Chain zum Einsatz. Im Vorfeld sollte man sich darüber im Klaren sein, ob man Dovecot im Maildir- oder im Mbox – Format betreiben möchte. Im folgendem wird eine Installation für Maildir beschrieben, wobei MBOX analog abhandelbar ist.

Als erstes installieren wir einmal alle benötigten Pakete:

Ich benötige mindestens 2 Imapkonten, also lege ich mir entsprechend 2 Konten an:

Die User müssen wir händisch im System anlegen, dazu fügen wir für jeden User in die /etc/passwd folgendes ein:

in der /etc/shadow tragen wir für jeden User zusätzliches folgendes ein

anschließend generieren wir die Passwörter

und passen die Nutzerberechtigungen an

Als nächstes wird die /etc/dovecot.conf unseren Wünschen entsprechend konfiguriert:

Bleibt uns noch die /etc/passwd.dovecot zu erstellen. Dovecot nutzt dieses Datei in unserem Fall um zu ermitteln mit welcher UID und GID er in Verzeichnisse schreibt, welches Passwort vergeben wurde und welches das Maildirectory ist.

Dovecot unterstützt mehrere sogenannte Password Schemes. Wir vertrauen uns, insofern wird der Einfachheit halber PLAIN genutzt. Dovecot starten und den Zugriff mittels eine beliebigen Imapclients testen:

Als nächstes sorgen wir dafür, daß procmail die Mails richtig einsortiert. Hierzu erstellen wir in jeden Homedirectory des Users eine .procmailrc die Später auch dazu dienen kann Mails gleich vorzusortieren. Meine .procmailrc ist wesentlich größer,  dafür nutze ich in Thunderbird keine Regeln. Als Delivercommand nutzen wir das Dovecot eigene deliver – somit wird das Imapfolder auch immer gleich aktualisiert.

Hier noch mal ein Beispiel für eine Regel um E-Mail von einem Bestimmten Absender in ein Unterverzeichnis einzusortieren

Als letzte Amtshandlung für den Mailempfang richtet sich jeder User fetchmail ein. Aktuell rufe ich das Abholen der E-Mail mittels der Crontab auf. Damit die User dies auch dürfen müssen wir crontab suid verpassen.

 

Ich hole meine E-Mail via SSL ab. Hierzu sind ein paar Handgriffe mehr nötig, da Zertifikate importiert werden müssen etc.  Hier gibt es eine Anleitung wie man dazu normalerweise vorgeht.

Da c_rehash für OpenWRT nicht vorliegt habe ich händisch Abhilfe geschaffen.

Für jeden abzuholenden Mailserver geht man entsprechend vor:

Abschließend bleibt die Installation des SMTP Dienst.