Briefkästchen

Raspberry Pi als privater LAMP- und IMAP-Server

Praxis & Tipps | Praxis

Der Inhalt privater E-Mails ist viel zu persönlich, um sie auf Dauer einem Fremden anzuvertrauen. Zu groß ist die Versuchung, den Inhalt zu Werbezwecken auszuwerten oder an Big Brother weiterzugeben. Ein eigener Mail-Server auf Basis des Raspberry Pi kostet Sie nicht einmal 60 Euro.

Der Prism-Skandal hat gezeigt, dass das Briefgeheimnis im Internet faktisch nicht existiert. Zu mächtig sind die Schlapphüte, als dass ein Provider ihnen den Zugang zu den Briefkästen seiner Kunden verweigern könnte. Hinzu kommt, dass man heute seine E-Mails bildlich gesprochen nicht mehr mit nach Hause nimmt, sondern sämtliche Briefe nach dem Lesen weiterhin im Postfach des Postamts aufbewahrt.

Die E-Mails lokal auf dem Rechner zu speichern, ist im Zeitalter von Smartphones und Tablets ziemlich unbequem: Man kommt mit den mobilen Geräten nicht mehr an sie heran, weder zu Hause noch unterwegs. Dementsprechend lassen viele ihre E-Mails dauerhaft auf dem IMAP-Server ihres Providers liegen, wo sie für Mitarbeiter des Providers und natürlich die Schlapphüte jederzeit einsehbar sind. Die Lösung ist ein eigener IMAP-Server, der die E-Mails für Sie abruft, lokal aufbewahrt, beim Provider löscht und für den PC und die mobilen Geräte bereitstellt. Zudem soll der Server E-Mails von Geräten aus dem lokalen Netz entgegennehmen, was für Multifunktionsgeräte mit Scan-to-Mail-Funktion äußerst praktisch ist, da die gescannten Dokumente keinen Umweg mehr über das Internet machen müssen. Ein Web-Frontend für einen einfachen Zugriff auf die E-Mail-Konten komplettiert den Server und bringt nebenbei noch einen Apache-Webserver inklusive SSL-Verschlüsselung, PHP und einer MySQL-Datenbank mit. So wird der Server zu einem vollwertigen LAMP-Server (Linux, Apache, MySQL, PHP) inklusive IMAP.

Auch wenn die Versuchung groß sein mag, eignen sich alte Rechner für dieses Vorhaben nicht, denn ein IMAP-Server läuft üblicherweise im Dauerbetrieb. Bei einer Leistungsaufnahme von 30 Watt und mehr verursachen selbst sparsame ältere Rechner Stromkosten von über 75 Euro pro Jahr. Daher empfehlen wir als Server-Hardware den Raspberry Pi, den Sie inklusive Netzteil, Gehäuse und Speicherkarte schon für unter 60 Euro bekommen. Damit amortisiert sich das Rechnerchen schon im ersten Jahr allein über den geringeren Stromverbrauch.

Raspbian installieren

Als Betriebssystem kommt die Debian-Variante Raspbian zum Einsatz, das Image des aktuellen Stable Release Wheezy finden Sie in komprimierter Form als sogenanntes Raw Image auf raspberrypi.org zum Download (siehe c’t-Link). Haben Sie das Speicherkarten-Image aus dem Zip-Archiv entpackt, übertragen Sie es auf die Speicherkarte. Dazu öffnen Sie unter Linux ein Terminal und geben folgenden Befehl ein:

dd if=2013-05-25-wheezy-raspbian.⤦
 img of=/dev/sdX bs=4M

Welchen Gerätenamen (/dev/sdX) Ihre Speicherkarte hat, finden Sie unter Linux am einfachsten mit Hilfe des Partitionierungsprogramms GParted heraus. Windows-Anwender können das Image mit dem Win32 Disk Imager (siehe c’t-Link) auf die Speicherkarte übertragen und müssen nicht erst ein Live-Linux booten. Das Raspbian-Image hat eine Größe von nicht einmal 2 GByte und würde somit auf eine 2-GByte-SD-Karte passen, Sie benötigen jedoch noch Speicherplatz für zusätzliche Pakete und Ihre E-Mails – Speicherkarten unter 4 GByte sind also völlig ungeeignet; um noch etwas Platz zu haben, sollten Sie Karten mit 16 GByte oder mehr verwenden.

Der Bootvorgang von Raspbian endet mit dem Start des Konfigurationsprogramms raspi-config auf der Textkonsole. Der erste Schritt ist, das nicht einmal 2 GByte große Raspbian-Image auf die ganze Speicherkarte auszudehnen, um den zusätzlichen Platz überhaupt nutzen zu können. Dazu wählen Sie im Konfigurationsprogramm gleich den ersten Menüpunkt „Expand Filesystem“. Anschließend sollten Sie noch im Menü „Internationalisation Options“ die Zeitzone und die Tastaturbelegung anpassen, mit „Change User Password“ das Standard-Passwort „raspberry“ für den Benutzer „pi“ ändern und schließlich im Menü „Advanced Option“ SSH aktivieren, damit Sie die weitere Einrichtung per Fernzugriff erledigen können. Mit „Finish“ schließen Sie die Erstkonfiguration ab, woraufhin der Raspberry Pi neu startet.

Im nächsten Schritt müssen Sie die Netzwerkkonfiguration anpassen. Raspbian verwendet standardmäßig nur IPv4 und konfiguriert den Netzwerkanschluss per DHCP. Für den Server-Betrieb ist es allerdings sinnvoll, dem Minirechner eine feste IP-Adresse zuzuweisen – schließlich müssen Sie diese IP-Adresse auch bei Ihren mobilen Geräten eingeben, um auf Ihre E-Mails zugreifen zu können. Ein Wechsel der IP-Adresse wäre insofern unpraktisch. Welche IP-Adresse der Raspberry Pi erhalten hat, erfahren Sie übrigens am Ende des Bootvorgangs in der letzten Systemmeldung.

Da Raspbian praktisch vollständig kompatibel zu Debian GNU/Linux ist, ist die Einrichtung einer statischen IP-Adresse für Debian-erfahrene Anwender nicht weiter schwierig. Dazu editieren Sie lediglich die Datei /etc/network/interfaces als Root-Benutzer. Um Root zu werden, geben Sie nach der Anmeldung als Benutzer pi das Kommando „sudo su -“ im Terminal ein oder verwenden „sudo“, um ein Programm mit Root-Rechten zu starten. Als Editor zum Bearbeiten der Netzwerkkonfiguration können Sie zum Beispiel pico verwenden:

sudo pico /etc/network/interfaces

Die DHCP-Konfiguration der Netzwerkschnittstelle versteckt sich hinter folgender Konfigurationszeile:

iface eth0 inet dhcp

Für eine statische IP müssen Sie „dhcp“ in „static“ ändern und dann die IPv4-Konfigurationsdaten in weiteren Zeilen angeben, hier ein Beispiel für die IP-Adresse 192.168.178.2:

iface eth0 inet static
  address 192.168.178.2
  netmask 255.255.255.0
  gateway 192.168.178.1

Die IP-Adresse des Nameservers tragen Sie direkt in der Datei /etc/resolv.conf ein:

nameserver 192.168.178.1

Mit „sudo reboot“ starten Sie den Raspberry Pi neu, anschließend erreichen Sie ihn unter der neuen IP-Adresse.

Ziel ist es, den Raspberry Pi zu einem LAMP-Server mit IMAP und Web-Mail aufzurüsten, wozu Sie mehrere Dienste einrichten müssen: den Apache Webserver, PHP, die MySQL-Datenbank, den lokalen Mail-Server Exim, den IMAP-Server Dovecot und Roundcube als Web-Mail-Frontend.

Zunächst installieren Sie Exim 4, das als MTA (Mail Transfer Agent) für die Zustellung von E-Mails im System zuständig ist:

sudo aptitude install exim4

In der Standardkonfiguration stellt Exim die E-Mails entweder lokal zu, wenn sie zum Beispiel an den Standard-Benutzer pi gerichtet sind, und versucht ansonsten, die Mails direkt an den Mail-Server des Empfängers auszuliefern. Das klappt aufgrund der heutigen Spam-Abwehr in der Regel nicht mehr: Die IP-Adressbereiche von DSL-Anschlüssen stehen bei den Mail-Servern der Provider üblicherweise auf einer Blacklist. Daher benötigen Sie in der Praxis weiterhin ein Postfach bei einem Provider, über das Exim die E-Mails verschicken kann.

Die Konfiguration von Exim erledigen Sie menügeführt im Terminal mit dem Kommando:

sudo dpkg-reconfigure exim4-config

Wichtig ist, dass Sie als Adressen für eingehende SMTP-Verbindungen sowohl 127.0.0.1 als auch die IPv4-Adresse des Raspberry Pi, im Beispiel 192.168.178.2, angeben. Als Trennzeichen zwischen beiden Adressen verwenden Sie ein Semikolon. Damit Exim als sogenannter Smarthost arbeitet und auch E-Mails aus dem lokalen Netz entgegennimmt, müssen Sie außerdem bei „Machines to relay mail for“ das gesamte Subnet eintragen, etwa „192.168.178.0/24“. Schließlich erfragt der Konfigurationsassistent noch den Namen des Mail-Servers Ihres Providers, an den Exim ausgehende E-Mails weiterleiten soll, und das Format, in dem lokale E-Mails gespeichert werden sollen. Behalten Sie bei letzterem die Standard-Einstellung „mbox format in /var/mail/“ bei, da sonst das Einsortieren von E-Mails bestehender Mail-Konten mit Fetchmail nicht klappt.

Die Zugangsdaten für Ihr E-Mail-Postfach für den Versand hinterlegen Sie in Form einer Konfigurationszeile in der Datei /etc/exim4/passwd.client. Hier das Format:

mail.example.com:username:password

Um Ihr Passwort, wie heute üblich, verschlüsselt an den Mail-Server zu übertragen, müssen Sie noch die Datei /etc/exim4/exim4.conf.localmacros mit folgendem Inhalt anlegen:

MAIN_TLS_ENABLE = 1

Ob der Mail-Versand einwandfrei funktioniert, testen Sie direkt im Terminal des Raspberry Pi:

echo "Smarthost-Test" | mail -s⤦
 Smarthost-Test user@example.com

Selbstverständlich müssen Sie die E-Mail-Adresse gegen Ihre eigene austauschen. Die Smarthost-Funktion des Raspberry Pi ist übrigens nicht dafür gedacht, dass lokale PCs, Smartphones und Tablets ihre E-Mails nun erst zum Raspberry Pi schicken: Die Benutzer können Ihre E-Mails weiterhin direkt beim Provider abliefern und sich den Umweg über den Raspberry Pi sparen – nützlich ist die Smarthost-Funktion vor allem für Multifunktionsgeräte mit Scan-to-Mail-Funktion, damit eingescannte Dokumente für lokale Anwender nicht erst einen Umweg über das Internet machen.

IMAP mit Dovecot

Bevor Sie Dovecot als IMAP-Server installieren, müssen Sie das Kernel-Modul ipv6 nachladen:

sudo modprobe ipv6
sudo aptitude install dovecot-imapd

Hintergrund ist, dass Dovecot standardmäßig für IPv4 und IPv6 konfiguriert ist, Raspbian aber nur für IPv4. Ohne IPv6-Unterstützung würde die Dovecot-Installation fehlschlagen. Um die IPv6-Unterstützung von Dovecot abzuschalten, müssen Sie in der Konfigurationsdatei /etc/dovecot/dovecot.conf folgende Zeile ergänzen:

listen *

Alternativ können Sie bei Raspbian die IPv6-Unterstützung aktivieren, indem Sie das Modul ipv6 in die Konfigurationsdatei /etc/modules eintragen, sodass es bei jedem Start automatisch geladen wird.

Damit ist Dovecot schon einsatzbereit und Sie können auf Ihrem PC etwa in Thunderbird ein neues Mail-Konto für den Benutzer pi Ihres Raspberry Pi einrichten. Das Mail-Passwort von „pi“ ist dasselbe, mit dem Sie sich als Benutzer beim Raspberry Pi anmelden. Als IMAP-Server tragen Sie einfach die IP-Adresse des Raspberry Pi ein. Da Dovecot auch SSL unterstützt, können Sie neben dem unverschlüsselten Port 143 auch den SSL-Port 993 für die Mail-Abfrage verwenden. Allerdings erhalten Sie bei SSL die Warnung, dass Thunderbird die Authentizität des Zertifikats nicht überprüfen kann. Da es sich um ein selbst erstelltes Zertifikat handelt, ist das normal – Sie sollten zur Sicherheit aber den Fingerabdruck des Dovecot-Zertifikats überprüfen. Auf dem Raspberry Pi rufen Sie ihn folgendermaßen ab:

openssl x509 -fingerprint -in ⤦
 /etc/dovecot/dovecot.pem -noout

Sollen mehrere Benutzer ihre Mails auf dem Raspberry Pi speichern, müssen Sie für jeden ein eigenes Linux-Benutzerkonto auf dem Miniaturrechner einrichten. Das geht sehr leicht mit dem Kommando useradd, anschließend richten Sie mittels passwd das Passwort ein:

sudo useradd -m mmuster
sudo passwd mmuster

Genauso einfach ist es, den Benutzer mmuster wieder zu löschen:

sudo userdel -r mmuster

Vorsicht, dabei gehen sämtliche E-Mails und das Home-Verzeichnis des Benutzers auf dem Raspberry Pi verloren!

Mit der bisherigen Dovecot-Konfiguration haben Sie aufgrund des Mbox-Dateiformats für Ihre E-Mails (siehe Exim-Konfiguration) keine Möglichkeit, Unterordner im Posteingang anzulegen, um Ihre E-Mails sortieren zu können. Indem Sie Dovecot vom Dateiformat Mbox auf Maildir++ umstellen, lösen Sie das Problem elegant. Sie finden die Option in der Datei /etc/dovecot/conf.d/10-mail.conf:

mail_location = mbox:~/mail:LAYOUT=⤦
 maildir++:INBOX=/var/mail/%u:⤦
 CONTROL=~/mail/control

Anschließend müssen Sie Dovecot neu starten:

sudo service dovecot restart

Damit verwendet Dovecot weiterhin eine Datei im Mbox-Format pro Mail-Ordner, erlaubt aber über den Dateinamen eine hierarchische Anordnung. Der Posteingang bleibt bei dieser Konfiguration weiterhin /var/mail/pi für den Standard-Benutzer pi, alle anderen E-Mails landen in Dateien unterhalb des Verzeichnisses mail im Home-Verzeichnis von pi. Den Papierkorb finden Sie zum Beispiel unter ~/mail/.Trash. Legen Sie etwa mit Thunderbird im Posteingang den Unterordner Gmail an, so speichert Dovecot die E-Mails dieses Unterordners in der Datei ~/mail/.INBOX.Gmail.

Mail-Kollektor Fetchmail

Diese Dateihierarchie eignet sich optimal, um E-Mails mittels Fetchmail von mehreren externen Mail-Konten einzusammeln und in separaten IMAP-Unterverzeichnissen abzuspeichern. Dazu müssen Sie lediglich die Pakete fetchmail und procmail nachinstallieren:

sudo aptitude install fetchmail procmail

Die Konfiguration von Fetchmail nimmt jeder Benutzer selbst vor, indem er eine Konfigurationsdatei .fetchmailrc in seinem Home-Verzeichnis auf dem Raspberry Pi speichert. Hier ein Beispiel für den Mail-Abruf bei Google Mail via IMAP:

poll imap.gmail.com
  protocol IMAP
  user 'maxmuster@googlemail.com'
  is mmuster
  pass '123456'
  folder INBOX
  ssl
  mda 'formail -c >> ~/mail/.INBOX.Gmail'
  keep

Sie müssen lediglich die Zugangsdaten für Ihren Google-Mail-Account eintragen und den Namen des Benutzers auf dem Raspberry Pi, im Beispiel mmuster, gegen den korrekten Benutzernamen austauschen. Der Clou steckt in der vorletzten Zeile: Dort wird das Programm formail verwendet, um die abgerufenen E-Mails in der Datei mail/.INBOX.Gmail zu speichern. Da formail lediglich das Mbox-Format unterstützt, war das der entscheidende Grund für die Wahl dieses Dateiformats für Exim und Dovecot.

Nachdem Sie die Konfigurationsdatei mit dem Befehl chmod 600 .fetchmailrc vor neugierigen Blicken anderer Benutzer geschützt haben, rufen Sie Fetchmail von Hand auf, um die Funktion zu überprüfen:

fetchmail -v

Die Option keep am Ende der Fetchmail-Konfiguration sorgt dafür, dass zunächst keine E-Mail von den Google-Servern gelöscht wird – also nichts verloren geht, sollten Sie ein Problem entdecken. Diese Option sollten Sie erst entfernen, wenn Sie den Raspberry Pi einige Tage verwendet haben. Müssen Sie noch einmal alle E-Mails abrufen, so starten Sie Fetchmail mit dem Parameter –a. Funktioniert die Fetchmail-Konfiguration, legt jeder Benutzer selbst einen Cron-Job an. Dazu loggt er sich per SSH ein und gibt den Befehl crontab -e zum Editieren der Cron-Konfiguration ein. Am Dateiende fügt man dann an:

0,15,30,45 *  * * *  /usr/bin/fetchmail -s

Damit schaut der Raspberry Pi alle vollen 15 Minuten nach neuen E-Mails.

Um auch von unterwegs auf Dovecot zugreifen zu können, etwa mit Ihrem Smartphone, müssen Sie in Ihrem DSL-Router noch eine Port-Weiterleitung einrichten. Dazu benötigen Sie einen dynamischen Hostnamen, bei dem der Router nach einer Neueinwahl automatisch die IP-Adresse aktualisiert. Für Dovecot lassen Sie den DSL-Router den Port 993 auf die IP-Adresse Ihres Raspberry Pi weiterleiten – hier erfolgt der Zugriff per SSL, sodass keine Zugangsdaten oder E-Mails im Klartext übertragen werden. Den Port 143 für unverschlüsselten Zugang sollten Sie allenfalls hausintern oder über einen VPN-Tunnel verwenden.

Prinzipiell könnten Sie auch für Port 25 von Exim eine Port-Weiterleitung einrichten. Damit könnten Sie dann Ihre E-Mails direkt empfangen, wenn Sie zum Beispiel eine eigene Domain besitzen und dort den dynamischen Hostnamen als MX (Mail Exchanger) eintragen. Wir raten allerdings dringend davon ab: Dynamische Hostnamen könnten missbraucht werden oder in fremde Hände fallen, womit Ihre E-Mails dann beim falschen Server landen würden. Zudem würde bei den häufig auftretenden Spam-Attacken Ihre DSL-Leitung ausgelastet. Zuverlässiger ist es, zumindest ein Konto bei einem Provider einzurichten und dieses, wie für Google Mail gezeigt, per Fetchmail auszulesen. Auf die Privatsphäre hat das keinen Einfluss, denn E-Mails werden ohnehin im Internet offen befördert und schon ein einfaches DNS-Spoofing würde dafür sorgen, dass Big Brother Ihre Mails vor Ihnen erhält.

Web-Mailer mit SSL

Um auch unterwegs von einem fremden PC aus in die E-Mails schauen zu können, ohne erst ein E-Mail-Programm installieren zu müssen, ist der Web-Mailer Roundcube eine gute Wahl. Wichtig ist allerdings, dass auch hier die Datenübertragung per SSL verschlüsselt erfolgt. Dazu müssen Sie zunächst Apache, PHP und MySQL nachinstallieren:

sudo aptitude install apache2 mysql-⤦
 client mysql-server php5-mysql

Damit Apache auch SSL unterstützt und nutzt, müssen Sie noch ein eigenes Zertifikat erstellen und SSL aktivieren. Dies erledigen Sie mit den folgenden Befehlen:

sudo mkdir /etc/apache2/ssl
sudo make-ssl-cert /usr/share/ssl-cert/⤦
 ssleay.cnf /etc/apache2/ssl/apache.pem
sudo a2ensite default-ssl
sudo a2enmod ssl

Kontrollieren Sie nun mit einem Browser, ob Sie Ihren Raspberry Pi nun sowohl per HTTP als auch per HTTPS erreichen können. Beim Zugriff via HTTPS warnt der Browser vor einem unbekannten Zertifikat, genau wie Thunderbird beim ersten Zugriff auf Dovecot. Auch hier sollten Sie den Fingerabdruck des Zertifikats überprüfen:

openssl x509 -fingerprint -in /etc/⤦
 apache2/ssl/apache.pem -noout

Anschließend geht es an die Einrichtung von Roundcube:

sudo aptitude install roundcube-core⤦
 roundcube-mysql

Während der Konfiguration startet ein Assistent, der verschiedene Parameter für Roundcube abfragt. Wichtig ist, dass Sie als Datenbank MySQL auswählen, ansonsten übernehmen Sie die Standardeinstellungen. Ist die Roundcube-Installation abgeschlossen, müssen Sie noch zwei Alias-Angaben in der Datei /etc/apache2/conf.d/roundcube eintragen:

Alias /roundcube/program/js/tiny_mce/⤦
 /usr/share/tinymce/www/
Alias /roundcube /var/lib/roundcube

Nach einem Neustart von Apache mittels sudo service apache2 restart können Sie dann Roundcube unter https://192.168.178.2/roundcube aufrufen. Für den Zugang von außen aktivieren Sie eine Port-Weiterleitung von Port 443 auf den Raspberry Pi, womit wiederum nur verschlüsselte Aufrufe möglich sind. Natürlich können Sie Apache auch dafür nutzen, um eine Homepage mit dem Raspberry Pi bereitzustellen – in diesem Fall sollten Sie auch für den Port 80 noch eine Weiterleitung in Ihrem DSL-Router einrichten. (mid)

Artikel kostenlos herunterladen

weiterführende Links

Kommentare

Kommentare lesen (47 Beiträge)

Infos zum Artikel

Kapitel
  1. Raspbian installieren
  2. IMAP mit Dovecot
  3. Mail-Kollektor Fetchmail
  4. Web-Mailer mit SSL
47Kommentare
Kommentare lesen (47 Beiträge)
  1. Avatar
  2. Avatar
  3. Avatar
Anzeige
weiterführende Links
  1. Zu diesem Artikel hat die Redaktion noch folgendes zusammengestellt:

    Links (2)

Anzeige