Nach den NSA Enthüllungen von Snowden im Sommer 2013, und nachdem mir mein Arbeitgeber ein paar Monate zuvor ein Raspberry Pi geschenkt hatte, kam mir dieser Artikel im c’t 2013, Heft 17, gerade Recht: *Briefkästchen, Raspberry Pi als privater LAMP- und IMAP-Server*, von Mirko Dölle.
Mein Setup: Mac Mini mit OSX 10.6.8 und Homebrew, ein Apple Airport Router, ein Raspberry Pi, ein 4 GB SD-Karte, ein USB Wireless Dingens, der Nano-WLAN-USB-Stick 150 Mbps von hama.
Raspberry Pi: eMail Server installieren
Der alte USB Kartenleser funktioniert nicht mehr. Ich musste meinen Fotoapparat (!) als SD-Kartenleser verwenden. SD-Karte in den Fotoapparat und Raspbian via Torrent runterladen und entpacken. Das ist Debian für den Raspberry Pi und etwa 2 GB gross. Das schreibt man dann auf die entsprechende Partition. Zuerst mal die richtige Partition finden, unmounten und überschreiben. Vorsicht, die Disks heissen bei dir vielleicht anders.
alex@Pyrobombus:~$ df -h Filesystem Size Used Avail Capacity Mounted on /dev/disk0s2 74Gi 68Gi 5.6Gi 93% / devfs 123Ki 123Ki 0Bi 100% /dev map -hosts 0Bi 0Bi 0Bi 100% /net map auto_home 0Bi 0Bi 0Bi 100% /home /dev/disk1s2 931Gi 904Gi 27Gi 98% /Volumes/Extern /dev/disk2s1 1.8Gi 3.8Mi 1.8Gi 1% /Volumes/OLYMPUS alex@Pyrobombus:~$ sudo diskutil unmount /dev/disk2s1 alex@Pyrobombus:~$ sudo dd bs=1m if=2013-07-26-wheezy-raspbian.img of=/dev/rdisk2
Die Karte dann in den Raspberry Pi reinschieben und am Strom anstecken. Das Ding bootet, aber es hat keine Tastatur und keinen Bildschirm. Man verbindet den Mac mit dem Pi über das normale Netzwerkkabel und stellt beim Mac ein, dass man **das drahtlose Netz gerne mit dem Ethernet teilen** will. Das geht über System Preferences → Sharing → Internet Sharing. Dann probiert man sich mit SSH zu verbinden. Die Adresse hat die Form 192.168.2.n wobei n eine Zahl ab 2 ist. Bei mir hat es mit 3 schon funktioniert:
alex@Pyrobombus:~$ ssh pi@192.168.2.3
Benutzername ist *pi* und Passwort ist *raspberry*.
Dann startet man *sudo raspi-config* und setzt die Kiste auf. expand rootfs, configure keyboard, change locale (ich habe de_CH.UTF8 gewählt und en_GB.UTF8 als Default gelassen). Die Zeitzone habe ich auf Europe _ Zurich gesetzt._
Der erste Schritt ist getan!
Das System auf den neuesten Stand bringen:
pi@raspberrypi ~ $ sudo apt-get update pi@raspberrypi ~ $ sudo apt-get upgrade pi@raspberrypi ~ $ sudo apt-get autoremove
Die erste Anweisung holt sich ein Verzeichnis der aktuelle Pakete, die zweite Anweisung lädt neuere Versionen runter und installiert sie. Die letzte Anweisung sorgt dafür, dass unbenötigte Packete deinstalliert werden.
Vielleicht ist dass folgende Paket schon installiert. Damit wird der Name des Rechners automatisch im Netz bekannt gemacht. Das ist Bonjour für den Raspberry.
pi@raspberrypi ~ $ sudo apt-get install libnss-mdns
Vom Mac aus testen:
alex@Pyrobombus:~$ ssh pi@raspberrypi.local
Ich würde das Passwort des pi Benutzers noch ändern:
pi@raspberrypi ~ $ passwd
Den Raspberry Pi wollen wir nicht nur über den Mac ans Netz hängen. Der Raspberry Pi soll direct am Router hängen, also müssen wir das drahtlose Netz zum laufen kriegen. Hier habe ich viele Anleitungen gesehen und viel herumgebastelt. Was schussendlich aber funktioniert hat, ist *wicd-curses*.
pi@raspberrypi ~ $ apt-get install wicd-curses
In der Liste sucht man sich sein Netzwerk aus und drückt den Pfeil nach rechts.
Bei der statischen IP schreibt man die *inet addr* rein, die man in der *ifconfig* Ausgabe findet. Im Moment verwendet Raspberry Pi nämlich DHCP und hat eine dynamische Nummer vom Router zugewiesen bekommen. Diese schreiben wir halt einfach für die Zukunft fest.
pi@raspberrypi ~ $ ifconfig ... wlan0 Link encap:Ethernet HWaddr 80:1f:02:8f:91:26 inet addr:10.0.1.10 Bcast:10.0.1.255 Mask:255.255.255.0 ...
Wir müssen uns beides merken. Die Hardware Adresse (die MAC Adresse) ist das Teil hinter `HWaddr`: 80:1f:02:8f:91:26. Die IP Nummer ist das Teil hinter `inet addr`: 10.0.1.10.
Bei DNS domain und Search domain müsst ihr wohl etwas anderes hinein schreiben. Die genauen Werte findest du auf deinem Mac: System Preferences → Network → AirPort → Advanced... → DNS → Search Domains. Ich bin mir allerdings nicht sicher, ob da überhaupt was drinnen stehen muss. Ich habe es halt einfach abgeschrieben.
[X] Use Static IPs IP: 10.0.1.10 Netmask:255.255.255.0 Gateway:10.0.1.1 [X] Use Static DNS [ ] Use global DNS servers DNS domain: v.cablecom.net Search domain:v.cablecom.net DNS server 1: 10.0.1.1 DNS server 2: DNS server 3: [ ] Use DHCP Hostname DHCP Hostname: raspberrypi [ ] Use these settings for all networks sharing this essid [X] Automatically connect to this network [X] Use Encryption WPA 1/2 (Passphrase) vvv Preshared key: ******** F10:OK ESC:Cancel
Weil F10 vielleicht komische Mac Sachen macht, kann man den Dialog mit ⌘F10 schliessen.
Ich editiere Dateien oft mit *vi*. Ein Beispiel, welches wir bald brauchen werden:
pi@raspberrypi ~ $ sudo vi /etc/modules
Im vi gibt es zwei Modi: “insert mode” und “command mode”. Wenn man eine Datei editiert, ist man im Kommando Modus. Mit den Pfeilen navigiert man zu dem Ort, wo man etwas einfügen will.
Dann schreibt man soviel man will und am Ende verwendet man ESC um in den Kommando Modus zurück zu finden.
Wir verwenden Dovecot. Um es installieren zu können, muss das IPv6 Modul anscheinend immer geladen sein.
pi@raspberrypi ~ $ modprobe ipv6 pi@raspberrypi ~ $ apt-get install dovecot-imapd
IPv6 immer laden: man trägt es in ##/etc/modules## ein.
pi@raspberrypi ~ $ cat /etc/modules 1. /etc/modules: kernel modules to load at boot time. 1. 1. This file contains the names of kernel modules that should be loaded 1. at boot time, one per line. Lines beginning with "#" are ignored. 1. Parameters can be specified after the module name. ipv6
Leider gibt es immer wieder komische Fehler bei Dovecot.
pi@raspberrypi ~ $ sudo doveadm log errors
Deswegen habe ich in einer Konfigurationsdatei noch eine Änderung gemacht:
pi@raspberrypi ~ $ sudo vi /etc/dovecot/conf.d/10-mail.conf
Wichtig ist diese Einstellung:
mail_privileged_group = mail
Zudem möchte ich die Mails in einer seltsamen Mischung von mbox Format und maildir Format ablegen:
mail_location =mbox:~/mail:LAYOUT=maildir++:INBOX=/var/mail/%u:CONTROL=~/mail/control:INDEX=~/mail/indexes
Ich will schlussendlich Mails für Alex und Claudia hier empfangen und zwischenlagern. So lege ich die Benutzer an und ändere ihr Passwort:
pi@raspberrypi ~ $ useradd -m alex pi@raspberrypi ~ $ passwd alex pi@raspberrypi ~ $ useradd -m claudia pi@raspberrypi ~ $ passwd claudia
Eventuell muss man für diese Benutzer noch die richtigen Verzeichnisse anlegen. Für jeden also:
pi@raspberrypi ~ $ sudo su alex alex@raspberrypi /home/pi $ cd alex@raspberrypi ~ $ mkdir mail alex@raspberrypi ~ $ mkdir mail/control alex@raspberrypi ~ $ mkdir mail/indexes alex@raspberrypi ~ $ exit exit pi@raspberrypi ~ $
Dovecot wird seine Dateien hier nun ablegen. Das kann man später dann mal so prüfen:
pi@raspberrypi ~ $ sudo ls -a /home/alex/mail . .. control .Deleted Messages dovecot.mailbox.log .INBOX indexes pi@raspberrypi ~ $ sudo ls -a /home/alex/mail/control . .. dovecot-uidvalidity dovecot-uidvalidity.522f96e9 .subscriptions pi@raspberrypi ~ $ sudo ls -a /home/alex/mail/indexes . .. .Deleted Messages .INBOX
Das passiert mit *fetchmail*.
pi@raspberrypi ~ $ apt-get install fetchmail
Nun kann jeder Benutzer selber entscheiden, wie er seine Mails bekommt. Dies wird in die **~/.fetchmailrc** Datei geschrieben. Hier beispielsweise mein Setup für alex@gnu.org:
pi@raspberrypi ~ $ sudo su alex alex@raspberrypi /home/pi $ cd alex@raspberrypi ~ $ cat .fetchmailrc poll fencepost.gnu.org protocol apop user alex pass '*mein Passwort*' ssl mda '/usr/lib/dovecot/dovecot-lda' poll imap.gmail.com protocol imap user kensanata pass '*mein App-spezifisches Passwort*' ssl
Das kann man nun austesten. -v steht für “verbose output”. Obige Einstellung mit dem Mail Delivery Agent (MDA) wird so wohl mangels Berechtigungen noch nicht funktionieren. Hierzu beim Thema Spam mehr. Erst mal schauen ob es ohne MDA Angabe geht.
alex@raspberrypi ~ $ fetchmail -v imap.gmail.com
Bist du zufrieden, kannst du nun alle paar Minuten deine Mails abholen gehen. Hierfür wird von jedem Benutzer ein *cronjob* eingerichtet.
alex@raspberrypi ~ $ EDITOR=vi crontab -e
Mit `EDITOR=vi` wird verhindert, dass der normale Editor verwendet wird. Das dürfte `nano` oder sonst so etwas sein.
Hier wollen wir eine Zeile hinzu fügen. Bei mir (und hier sieht man auch gleich, wie man sich den *crontab* auch anzeigen lassen kann):
alex@raspberrypi ~ $ crontab -l ... 1. m h dom mon dow command
So werden alle zehn Minuten meine Mails geholt. -s steht für “silent”. Jegliche Ausgabe, welche von einem cronjob produziert wird, wird uns nämlich zugesendet.
Der GMail Spam Filter ist wirklich ausgezeichnet. Gibt es eine Alternative? Mein Email Provider verwendet offensichtlich SpamAssassin. Der fügt den vermuteten Spam Emails die Kopfzeile `X-Spam-Flag: YES` hinzu. Danach kann man filtern, wenn man Pigeonhole installiert:
pi@raspberrypi ~ $ sudo apt-get install dovecot-sieve
Nun muss man das noch anschalten:
pi@raspberrypi ~ $ sudo vi /etc/dovecot/conf.d/15-lda.conf
Und am Ende der Datei `mail_plugins` auskommentieren und `sieve` hinzufügen (im vi geht es mit `G` ans Ende der Datei):
protocol lda { # Space separated list of plugins to load (default is global mail_plugins). mail_plugins = $mail_plugins sieve }
Und dann muss man wahrscheinlich die Konfigurationsdateien neu laden:
pi@raspberrypi ~ $ sudo doveadm reload
Der Server sucht nach Filtern in der Datei `~/.dovecot.sieve`. Dort sollte für meinen Fall also drinnen stehen:
alex@raspberrypi ~ $ cat .dovecot.sieve require "fileinto"; if header :contains "X-Spam-Flag" "YES" { fileinto "Junk"; }
Mehr Beispiele gibt es auf dem Dovecot Wiki.
Warum funktioniert das? Das funktioniert, weil wir in der Konfiguration für Fetchmail einen Mail Delivery Agent (MDA) angegeben haben – und zwar `dovecot-lda`. Dieses Programm berücksichtigt nicht nur unsere Sieve Regeln, es führt auch die Dovecot Indexe nach.
Leider bleibt noch ein Problem: `dovecot-lda` hat nicht die nötigen Rechte, um Mails im Mailsystem rum zu schieben! Falls man dieses Problem hat, sieht es so aus:
alex@raspberrypi ~ $ fetchmail 1 message for alex at fencepost.gnu.org (4871 octets). fetchmail: MDA returned nonzero status 75 reading message alex@fencepost.gnu.org:1 of 1 (4871 octets) not flushed
Die Lösung? Jetzt wird es mühsam. Der Anleitung auf dem Wiki habe ich nicht folgen können. Das hat einfach nicht funktioniert.
Folgende Lösung reisst sicherlich ein grosses Loch in die Sicherheit vom System. Allerdings: In meinem Fall haben ja nur meine Frau und ich Zugriff auf den Rechner und der Rechner dient nur dazu, Mail zu holen und zu speichern. Deswegen will ich es wagen. Gerne würde ich die “richtige” Lösung kennen!
pi@raspberrypi ~ $ ls -l /usr/lib/dovecot/dovecot-lda -rwxr-xr-x 1 root root 17896 Feb 10 2013 /usr/lib/dovecot/dovecot-lda pi@raspberrypi ~ $ sudo chgrp mail /usr/lib/dovecot/dovecot-lda pi@raspberrypi ~ $ sudo usermod -a -G mail alex pi@raspberrypi ~ $ sudo usermod -a -G mail claudia
Wenn du eine bessere Lösung weist, bin ich dir für jeden Tipp dankbar.
Falls du weitere Probleme hast, hier noch ein paar Tipps für die Spurensuche.
Probleme beim Sieve werden hier aufgeführt:
alex@raspberrypi ~ $ cat .dovecot.sieve.log
Und natürlich sieht man noch eine Ausgabe im `/var/log/syslog` bzw `/var/log/mail.log`. Hier mit einem Test Mail, wo ich die Spam-Kopfzeile gleich selber hinein geschrieben habe:
pi@raspberrypi ~ $ tail /var/log/mail.log ... Oct 4 13:55:23 raspberrypi dovecot: lda(alex): sieve: msgid=<m27gdt2la7.fsf@gnu.org>: stored mail into mailbox 'Junk'
Erfolg!
Ist man im eigenen, drahtlosen Netz, kann man nun schon problemlos Mails lesen. Als IMAP Server kann man **raspberrypi.local** angeben, Benutzer *alex*, Passwort wie gesetzt; Mails sendet man wie bisher via SMTP über den bestehenden SMPT host. Das machen wir nicht über den Raspberry Pi, weil es uns nicht mehr Sicherheit sondern nur mehr Aufwand beschehrt.
Was muss ich aber tun, damit der Raspberry Pi von aussen zugänglich ist?
Hierfür brauche ich ein Dynamic DNS setup. In meinem Fall habe ich beschlossen, **mail.alexschroeder.ch** zu verwenden. Die Domäne alexschroeder.ch habe ich schon. Der Hosting Provider hat schon ein Setup, welches mir die Kontrolle des Eintrages erlaubt.
In der Anleitung des Hosting Providers habe ich den entscheidenden Hinweis bekommen: Im Verzeichnis **~/.dnsupdate** seien zwei Dateien für mich abgelegt.
alex@mirabel:~$ ls .dnsupdate/ Kalex.+157+53225.key Kalex.+157+53225.private
Diese beiden Dateien brauche ich bei mir. Und dann brauche ich noch ein Script, welches den Update macht:
pi@raspberrypi ~ $ mkdir .dnsupdate pi@raspberrypi ~ $ scp alex@epfarms.org:.dnsupdate/* .dnsupdate/ pi@raspberrypi ~ $ mkdir bin pi@raspberrypi ~ $ vi bin/update-ip
Der Inhalt des Skripts muss natürlich angepasst werden. **icanhazip.com** ist einer der vielen Websites, welche einem die eigene IP Adresse (also die Adresse des Routers, also des Apple AirPort) anzeigt.
pi@raspberrypi ~ $ cat bin/update-ip #!/bin/sh IPADDR=`wget -qO - icanhazip.com` echo "update delete mail.alexschroeder.ch. A" > ~/.dnsupdate/nsupdate echo "update add mail.alexschroeder.ch. 21600 IN A $IPADDR" >> ~/.dnsupdate/nsupdate echo "" >> ~/.dnsupdate/nsupdate nsupdate -k /home/pi/.dnsupdate/Kalex.+157+53225.key /home/pi/.dnsupdate/nsupdate
Das Skript mache ich noch ausführbar:
pi@raspberrypi ~ $ chmod +x bin/update-ip
Zum Inhalt des Skriptes. Ich generiere mir eine Liste von Befehlen in **~/.dnsupdate/nsupdate**, welche ich mit dem *nsupdate* Kommando am Ende ausführe. Dies löscht die bestehende IP Nummer für mail.alexschroeder.ch und legt sie neu an. Hierbei verwende ich die IP Nummer, welcher ich gerade eben herausgefunden habe.
Ich kann das auch von Hand überprüfen:
pi@raspberrypi ~ $ bin/update-ip pi@raspberrypi ~ $ cat ~/.dnsupdate/nsupdate update delete mail.alexschroeder.ch. A update add mail.alexschroeder.ch. 21600 IN A 178.83.163.103 pi@raspberrypi ~ $
Selbst die Leerzeile am Ende stimmt.
Ob es funktioniert hat, kann ich ebenfalls herausfinden:
pi@raspberrypi ~ $ dig mail.alexschroeder.ch ... ;; ANSWER SECTION: mail.alexschroeder.ch. 21415 IN A 178.83.163.103 ...
Super Sache! Jetzt fehlt nur noch eins: der Email Client findet die IP Nummer meines Routers und muss von diesem noch an den Raspberry Pi weiter geleitet werden. Das nennt man *port mapping* und wird beim Apple AirPort mit dem *AirPort Dienstprogramm* konfiguriert: Base station auswählen → Manual → Advanced → Port Mapping → + klicken. Es handelt sich um einen IMAP Server und entsprechend muss der TCP Port 993 (also mit Zugriff per SSL) auf die IP Nummer des Raspberry Pi umgeleitet werden. In meinem Beispiel ganz oben, dort wo es um die statische IP Nummer im drahtlosen Netz ging, war das die Nummer 10.0.1.10.
Im Normalfall verwendet man im Heimnetz DHCP, um IP Nummern dynamisch zu verteilen. Wenn man also hier aufhört, kann es passieren, dass der DHCP Server im Router immer wieder mal die Nummer 10.0.1.10 vergibt, obwohl unser Raspberry Pi diese Nummer fix verwendet. Dann kriegt man ab und zu die Fehlermeldung, dass ein anderer Computer im Netz die gleiche IP Nummer verwendet. Normalerweise ist das kein schlimmes Problem, weil die Nummer ja dynamisch vergeben wird. Der Computer ist dann einfach kurze Zeit offline und kriegt dann wieder eine neue IP Nummer. Aber besser ist natürlich, diese Konflikte zu vermeiden. Deswegen muss man eine *Ausnahme* definieren. Im *AirPort Dienstprogramm* ist das beispielsweise im Reiter Network → DHCP Reservations → + klicken. Die beiden Werte haben wir uns oben abgeschrieben, als wir auf dem Raspberry Pi `ifconfig` ausgeführt haben:
Description: Rapsberry Pi Reserve Address By: MAC Address MAC Address: 80:1f:02:8f:91:26 IPv4 Address: 10.0.1.10
Nun kann ich meinen *Email Client umkonfigurieren*, so dass ich meine Mails statt bei raspberrypi.local bei mail.alexschroeder.ch abhole. Der DNS Server von alexschroeder.ch (ns1.epfarms.net) leitet das an die IP Nummer meines Routers weiter, der Router leitet das an den Raspberry Pi weiter, und so kann der Email Client die Mails vom Raspberry Pi lesen.
Das funktioniert natürlich nur, wenn man schon einen Domänenname hat und Subdomänen selber ändern darf. Ansonsten muss man sich beispielsweise bei afraid.org etwas organisieren.
Grundsätzlich gilt, dass man bei hohem Datenaufkommen die Mails vom Server in eigene, lokale Ordner verschieben sollte. So was muss man sich halt angewöhnen. Oder eine fette SD Karte kaufen.
Mal schauen wie lange die Karte hält. Auf StackExchange sah ich auf alle Fälle schon die Frage, die mich ebenfalls beschäftigt: How can I extend the life of my SD card? Ich habe das so verstanden: Die Karten verteilen die Schreiblast selbstständig auf alle Sektoren und im Normalfall reicht die Karte viele Jahre. Da sich die Technologie sowieso alle paar Jahre ändert, lohnt es sich nicht, darüber nachzudenken.
How can I extend the life of my SD card?
In meinem `.fetchmailrc` hatte ich für jede Mailbox noch die Anweisung `mda 'formail -c >> ~/mail/.INBOX'` stehen. Das war im c’t Artikel so angegeben. Das Problem war, dass Mail zwar empfangen wird, aber nicht angezeigt wird. Das lag vermutlich daran, dass die Indexe nicht nachgeführt wurden:
alex@raspberrypi ~ $ mail -s test kensanata@gmail.com nochmal . EOT alex@raspberrypi ~ $ fetchmail fetchmail: No mail for alex at fencepost.gnu.org 8 messages (7 seen) for kensanata at imap.gmail.com. reading message kensanata@gmail-imap.l.google.com:8 of 8 (1662 header octets) (9 body octets) flushed alex@raspberrypi ~ $ ls -l mail/.INBOX mail/indexes/.INBOX/dovecot.index.* -rw------- 1 alex alex 254220 Sep 16 06:48 mail/.INBOX -rw------- 1 alex alex 21504 Sep 16 06:37 mail/indexes/.INBOX/dovecot.index.cache -rw------- 1 alex alex 3720 Sep 16 06:37 mail/indexes/.INBOX/dovecot.index.log
Wie man sieht, wurde der Index nicht nachgeführt. Das hat im ursprünglichen Artikel wahrscheinlich funktioniert, weil bei der Dovecot `mail_location` Einstellung die Anweisung für die Indexe fehlte. Das hat bei mir im Dovecot Fehlerprotokol zu Problemen geführt: das entsprechende Verzeichnis fehlte. Ohne Indexe hat aber das Setup im Artikel wahrscheinlich funktioniert: neue Mail wurde sofort erkannt. Meine Lösung: Die neue Mail wird entweder via Dovecots `dovecot-mda` geliefert (damit ich Spam filtern kann), oder sie kommt in den normalen Mail Spool (wenn ich nichts angebe), also nach `/var/mail/alex`. Von dort holt Dovecot die Mails und speichert sie in `mail/.INBOX`, und führt den Index nach.
Mit meiner Anleitung sollte dieses Problem nicht mehr bestehen.
Ein weiteres Problem waren hunderte von Mails von Cron, welche mich darauf hinwiesen, dass es beim DNS Update einen Fehler gegeben habe. Das erste Mail kam vom `nsupdate` Befehl, dann kamen weitere sechs von `fetchmail`. Ich vermute, dies lag daran, dass meine Rechner ab und zu nicht zu finden waren. Deswegen habe ich das nun wie folgt implementiert:
#!/bin/sh IPADDR=`wget -qO - icanhazip.com` if [ -n "$IPADDR" ]; then echo "update delete mail.alexschroeder.ch. A" > ~/.dnsupdate/nsupdate echo "update add mail.alexschroeder.ch. 21600 IN A $IPADDR" >> ~/.dnsupdate/nsupdate echo >> ~/.dnsupdate/nsupdate nsupdate -k /home/pi/.dnsupdate/Kalex.+157+53225.key /home/pi/.dnsupdate/nsupdate fi if test $((`date +%s` - `date -r ~/.dnsupdate/nsupdate +%s`)) -gt $((6 * 60 * 60)); then echo No IP number for 6h fi
Falls ich also eine IP Nummer bekomme, dann schreibe ich das Kommando und führe es aus. Falls das Kommando mehrere Stunden lang nicht geschrieben wurde, gebe ich eine Warnung aus, welche automatisch ein Mail generiert, welches ich aber erst bekommen werde, wenn die Verbindung wieder hergestellt wird. Damit will ich nur vermeiden, dass ich tagelang keine Ahnung habe, dass es immer wieder zu längeren Ausfällen kommt. Desweiteren habe ich mir einen eigenen Service geschrieben, der mir meine IP Nummer liefert, und zu guter Letzt habe ich noch eine weiter Fehlermeldung eingebaut:
#!/bin/sh IPADDR=`wget -qO - https://alexschroeder.ch/ip` if [ -n "$IPADDR" ]; then echo "update delete mail.alexschroeder.ch. A" > ~/.dnsupdate/nsupdate echo "update add mail.alexschroeder.ch. 21600 IN A $IPADDR" >> ~/.dnsupdate/nsupdate echo >> ~/.dnsupdate/nsupdate if ! nsupdate -k /home/pi/.dnsupdate/Kalex.+157+53225.key /home/pi/.dnsupdate/nsupdate; then echo nsupdate fail: cat ~/.dnsupdate/nsupdate fi fi if test $((`date +%s` - `date -r ~/.dnsupdate/nsupdate +%s`)) -gt $((6 * 60 * 60)); then echo No IP number for 6h fi
(Please contact me if you want to remove your comment.)
⁂
Alex - nice work! Thanks for taking the time to write it up.
– charlie 2013-10-12 09:58 UTC
---
Gute Anleitung, bin ebenfalls gerade daran etwas in die Richtung zu bauen, aber: der NSA schlägt man damit kein Schnippchen, denn die Mails liegen immernoch bei Google & Co bis sie abgerufen werden.
Was müsste man tun, damit die Mails direkt auf den Raspberry ankommen? MX Record der Domain per Script oben auf die IP deines Raspberry ändern, aber wie müsst der Raspberry konfiguriert sein?
Grüße
ML
– Meister Longus 2013-11-07 08:28 UTC
---
Mein aktuelles Setup für Email, die nicht via Google kommt: Ich habe einen Server im Internet, mit fixer IP Nummer und allem was dazu gehört. Dort ist exim4 installiert und so konfiguriert, dass er Mails für meine Domänen annimmt. Bei meinem DNS Provider (Gandi) verwende ich ein Zonefile, welches ein MX Record für meinen Server im Internet hat, und von dem hole ich alle 10 Minuten meine Mail via Raspberry Pi. Ich traue mich im Moment noch nicht, den Raspberry Pi direkt anzugeben. Da hat es immer noch zu viele Unwägbarkeiten.
1. Ich hatte eine Weile lang immer wieder einen Systemabsturz auf dem Raspberry Pi. Einfach nicht mehr zu erreichen. Im Moment habe ich das so “gelöst”, dass der Raspberry Pi via cronjob in den frühen Morgenstunden neu gebootet wird. Ziemlich unelegant, würde ich sagen.
2. Ich rufe jede Stunde ein Script auf (mittlerweile verwende ich nicht mehr die Lösung mit nsupdate; Gandi unterstützt nur ein XMLRPC Protokoll, so dass ich ein entsprechendes Script von einem anderen Benutzer verwende). Dieses Script liefert mir auch immer wieder Fehler. Update ging nicht aus was weiss ich für Gründen. MX Records verdoppeln sich. Das ist mir zu riskant.
Sobald ich Zeit habe, um daheim mal längere Mails zu beantworten, bewege ich alle Mails vom Raspberry Pi auf meine lokale Maschine. Wer weiss, wie sicher der Raspberry Pi wirklich ist. Alle Mail liegt also ein paar Minuten auf meinem Server im Internet, und ein paar Tage auf dem Raspberry Pi, bevor sie in der Offline Welt verschwinden.
– Alex Schroeder 2013-11-07 09:43 UTC
---
Hallo Alex,
hab deinen Artikel voller Freude gefunden und wollte gerade anfangen die Installation umzusetzen. Doch leider fehlt bei dir genau der Part, den ich im ct Artikel schlecht beschrieben finden: Die EXIM4 Installation! Was fehlt den funktional bei dir wenn du kein EXIM4 installiert hast? Sendest du deine Mails direkt per smtp über einen publik Mail Server? Dann hast du die versendeten Mails auch nicht im IMAP Ordner “gesendet”, oder?
Mfg Bernd
– 2013-11-29 16:04 UTC
---
Ist das überhaupt möglich, gar kein Mail auf einem GNU/Linux System? Wenn ein cronjob fehlschlägt, probiert das System beispielsweise eine Mail zu verschicken. Zumindest lokal sollte Mail also funktionieren, meiner Meinung nach.
Meine Mails sende ich direkt via SMTP an einen öffentlichen Mail Server. Mein Mail Client (zB. das iPhone) speichert eine Kopie dieser Mail im IMAP Ordner “Sent Mail” – und Dovecot richtet alles korrekt ein, damit das auch funktioniert. Hierfür wird EXIM4 also nicht benötigt.
– Alex Schroeder 2013-11-29 16:54 UTC
---
Mit cron-apt meldet sich das System, wenn es Upgrades zu installieren gibt.
– Alex Schroeder 2014-01-09 23:51 UTC
---
Wer ein anderes Tutorial sucht, wird vielleicht in der englischen Serie auf Ars Technica fündig. Erster Artikel: How to run your own e-mail server with your own domain, part 1. Heute habe ich auf alle Fälle probiert, auf meinem “richtigen” Rechner (also nicht auf dem Raspberry Pi) den Exim4 richtig zum laufen zu kriegen, so dass wir über den Mail verschicken können, aber es will einfach nicht klappen. TLS geht nicht, oder die selbst-signierten Zertifikate sind nicht gültig, und wie kann man Authentifizierung erzwingen. Eine mühsames, mühsames Geschäft. Zum Brechen.
How to run your own e-mail server with your own domain, part 1
– Alex Schroeder 2014-02-19
---
Und mit dem vi muss man sich nun wahrlich nicht abquälen, der ist was für Masochisten. Der Raspberry hat natürlich den erheblich besseren “nano” an Bord! Außerdem ist noch ein kleiner Dreckfuhler dort versteckt, denn es soll sicher “Kurze Einführung...” heisen beim vi, oder?
Thema SD Karte: Das Problem ist wenn man Class 10 Karten verwendet und den RasPi übertaktet. Das sollte man mit Class 10 Karten nicht machen sondern immer Class 4 Karten dafür verwenden. Der Dateizugriff ist etwas langsamer aber man kann gefahrlos übertakten Eine Class 4 Karte sollte also problemlos halten.
Woe wärs noch jetzt mit einem Webmailer um die Mails mit dem Browser abzuholen ?? Squirrel Mail und Roundcube sind da ja die Klassiker.
– wwinzig 2014-02-26 12:03 UTC
---
Als Emacs User finde ich vi natürlich sehr gewöhnungsbedürftig, aber nano finde ich noch schlimmer...
Webmailer finde ich halt noch mal ein Risiko mehr – und für mich völlig unnötig, da ich Mails mit der Mail Applikation auf meinem Telefon lese und nicht über einen Web Browser.
– Alex Schroeder 2014-02-26 12:31 UTC
---
Nach DSA-2896-1 openssl -- security update zum Thema Heartbleed den Anleitungen auf dem Debian Wiki (zu einer früheren Sicherheitslücke) folgen.
DSA-2896-1 openssl -- security update
sudo apt-get update sudo apt-get upgrade sudo rm /etc/dovecot/dovecot.pem /etc/dovecot/private/dovecot.pem sudo dpkg-reconfigure dovecot-core sudo rm /etc/ssh/ssh_host_* sudo dpkg-reconfigure openssh-server
Etwas nachdenken muss man bei den privaten Schlüsseln in `~/.ssh` – falls welche vorhanden sind. Falls man diese Schlüssel neu generiert, muss man die hinterlegten Schlüssel auf Savannah, GitHub, und so weiter natürlich ebenfalls erneuern.
ssh-keygen
– AlexSchroeder 2014-04-09 12:23 UTC
---
Beim Austauschen aller Schlüssel und dem Ändern aller Passwörter ist mir aufgefallen, dass ein Schritt in meiner Kette nicht mehr funktioniert. Im Artikel selber schrieb ich, dass im `~/.fetchmailrc` von meinem Benutzer zwei hosts abgefragt werden. In Tat und Wahrheit hat es aber noch einen dritten Eintrag, wo ich Mail von einem selber eingerichteten Server hole!
poll psithyrus protocol imap user alex pass '*secret*' ssl sslcertck sslcertfile .ssh/psithyrus.pem
Hier ist relevant, dass ich auf dem Psithyrus Rechner ja den Schlüssel gelöscht habe. Also muss ich den wieder zu mir kopieren: von `psithyrus:/etc/dovecot/dovecot.pem` nach `raspberrypi:.ssh/psithyrus.pem` – und das Passwort musste ich natürlich auch anpassen.
– AlexSchroeder 2014-04-09 20:29 UTC
---
Den YouTube Video zum Thema fand ich auch gut. Blog Post gibt es auch dazu.
– Alex Schroeder 2014-09-11 20:43 UTC
---
Hi and many thanks for the walk-through to configure a private email server. You were mentioning difficulties with dovecot-lda. Alternatively, for the purpose of filtering similarly to what sieve does in your configuration, it may be possible to remain with procmail as MTA for fetchmail but use a procmailrc such as follows:
1. file: /etc/procmailrc 1. system-wide settings for procmail SHELL="/bin/bash" SENDMAIL=/usr/sbin/sendmail SENDMAILFLAGS="-oi" LOGFILE="/var/log/procmail.log" DELIVER="/usr/lib/dovecot/deliver" DROPPRIVS=yes 1. fallback: DEFAULT="$HOME/mail/" MAILDIR="$HOME/mail/" 0 w
(It may be possible to simplify this further. Not sure about the values set by GMX for the X-GMX-_ headers, could not find their documentation.)_
– Ralf 2014-11-09 17:37 UTC
---
Many years ago I had a very elaborate procmail setup. Good times! 🙂
– Alex Schroeder 2014-11-09 18:48 UTC
---
Oh, and I realized that the remaining articles of the Ars Technica series went live ages ago:
Taking e-mail back, part 2: Arming your server with Postfix and Dovecot, Taking e-mail back, part 3: Fortifying your box against spammers, Taking e-mail back, part 4: The finale, with webmail & everything after.
Taking e-mail back, part 2: Arming your server with Postfix and Dovecot
Taking e-mail back, part 3: Fortifying your box against spammers
Taking e-mail back, part 4: The finale, with webmail & everything after
– Alex Schroeder 2014-11-09 18:54 UTC
---
Hi,
ich bin mit der Anleitung der ct, ergänzt um um den Pfad für Index(e), in ein Problem gerannt bei dem Dovecot offenbar die Daten nicht sauber gelesen hat. Nachdem ich (vergeblich) das Thema “Daten im NFS” (hatte sie ursprünglich auf den NAS gelegt) beackert habe, bin ich auf Deine Anleitung gestossen.
Habe dann mda `/usr/lib/dovecot/dovecot-lda` benutzt. Bin nicht sicher ob das Nachführen der Indexe jetzt klappt, könnte aber sein.
Zumindest tauchen keine errors mehr im logfile auf🙂 Damit hättest Du meiner lange Suche schon mal ein mögliches Ende bereitet, ich weiss gar nicht mehr wie lange ich an dem System jetzt schon bastele!
Das Problem das ich jetzt habe ist:
Mit der “alten” Lösung habe ich in den .fetchmailrc der einzelnen User die gewünschten Mailboxverzeichnisse mit formail direkt in die “Mailboxen” (.INBOX, .SENT etc) sortieren lassen.
Mit der dovecot-lda-Lösung kann ich a) kein Verzeichnis beim Provider angeben, dann wird nur .INBOX abgeholt oder b) Verzeichnisse (zusätzlich wie der alten Lösung) angeben, dann wird aber trotzdem alles in .INBOX abgelegt. Wenig spassig😉
Wie hast Du das denn gelöst mit den Verzeichnissen?
Zum einen brauche ich .SENT weil die clients direkt über den smtp des Providers gehen (ok zur Not könnte ich sicher auch die Einsatzfähigkeit des exim vorziehen), zum anderen besteht immer noch die Möglichkeit daß jemand direkt im Webmail des Providers arbeitet. Und im Moment werden noch beide Lösungen (imap beim Provider und raspberry) parallel benutzt - das will ich erst ändern wenn der Raspberry 100% läuft. Im Moment würde ich halt gerne die unterschiedlichen Verzeichnisse abfragen. Wenn das geht. Ohne daß das alles in .INBOX landet.
Achja, und für einen speziellen Absender wird auf dem Server auch noch gleich sortiert in ein Verzeichnis.
Muss ich das alles irgendwie über den Sieve basteln? Mit dem hatte ich noch nie zu tun und eigentlich wollte ich an Filter und Spam erst rangehen wenn der Rest läuft... Quasi die Kür nach der Pflicht...
Danke,
Michael.
– Michael 2015-03-31 22:34 UTC
---
Ach, wargs, vergiss die Frage... -m und dann den Folder angeben ist die Lösung... Ich habe heute einfach schon zu lange gebastelt😟
So wie es aussieht - das wird sich erst in den nächsten Tagen zeigen - ist Deine Lösung die Mails nicht mit formail zu verteilen genau die Richtige. Danke, Danke!
Jetzt kann ich wahrscheinlich daran gehen die Daten wieder auf NFS zu schieben von wo ich sie geholt habe weil ich dachte da kämen die defekten Mails her😄
– Michael 2015-03-31 22:42 UTC
---
Hah, viel Glück!
Bei mir läuft der Raspberry Pi inzwischen nicht mehr als vollwertiger Mail Server. Die Mails kommen an, alle Benutzer haben eine `~/.forward` Datei, welche die Mails an Google weiter leiten. Mein Problem: Bei all den Sicherheitsdiskussionen zum Thema SSH, Zertifizierung und so weiter stelle ich fest, wie wenig sattelfest ich bin. Und dann muss ich abwägen:
1. Wenn meine Sicherheitsinfrastruktur gut ist, bin ich gegen Schnüffler und Verbrecher geschützt.
2. Wenn meine Sicherheitsinfrastruktur schlecht ist, bin ich gegen niemanden geschützt.
3. Wenn ich meine Mails bei Google habe, bin ich auf alle Fälle gegen Verbrecher geschützt.
Falls ich zwischen tag(1) und tag(2) mangels Know How nicht unterscheiden kann, scheint mir tag(3) die beste Alternative.
– Alex Schroeder 2015-04-01 08:29 UTC
---
@Alex: Deine Überlegungen finde ich sehr gut, gerade wenn man solche Lösungen auf günstigen vHost installiert. Mir scheint allerdings die Lösung 3 dann doch etwas übertrieben, da Google und die NSA nicht evtl. Deine Mails lesen, sondern es definitiv tun. Da empfehle ich lieber Dienste wie posteo https://posteo.de/de da werden die Daten auf Wunsch komplett verschlüsselt gespeichert. Die einzige Lücke ist, wenn jemand Dein Passwort herausbekommt, was ein Server-Anbieter natürlich immer tun kann. Das ganze für 1€/Monat.
– niels 2015-04-27 05:14 UTC
---
Vielleicht ist das ja die richtige Lösung. Ich habe von Posteo noch nie gehört und sehe keinen Anlass, denen wirklich zu trauen. Bei Google kenne ich wenigstens ein paar Mitarbeiter, die sehr integer wirken. Aber ich gebe zu, Über Posteo liest sich sehr positiv.
– Alex Schroeder 2015-04-27 05:57 UTC
---
Alternativ geht auch Mailbox.org (https://mailbox.org/) dahinter steckte eine Firma die schon seid Jahren sich mit Linux beschäftigt. Ich denke beide sind vertrauenswürdig, denn es ist relativ blöd so einen Aufwand zu treiben, wenn man eigentlich doch an die Daten ran will. Aber das muss natürlich jeder selber wissen. Weil ein paar Leute bei Google integer wirken auf die gesamte Mail-Manschaft zu schließen + dem Wissen, dass sie Daten lesen und auch rausgeben müssen, finde ich da schon gewagter.
– niels 2015-05-17 18:50 UTC
---
Hallo, sehr interessante Diskussion. Ich habe mir einen Pi zugelegt, um damit Smart Home-Themen zu realisieren (vor allem kabelgebundene Temperaturmessung). Mein Mailserver läuft auf einem Synology NAS hinter einer dynamischen IP, holt die Mails vom gleichnamigen Mailkonto auf Strato ab und versendet über das Strato-Relais. Per IMAP greife ich dann problemlos von diversen Clients (iphone, android, Lubuntu, Mac) auf den Server zuhause zu. Die Mails liegen nur ein paar Minuten bei Strato und werden auf dem NAS regelmäßig automatisch auf ein zweites NAS gebackuped. Ich weiß nicht, ob das interessant ist, wollte es hier aber anmerken. Durch die Software von Synology entfällt vieles von der aufwändigen Mailserverkonfiguration. Inwieweit das unsicher sein könnte kann ich allerdings nicht einschätzen.
– Ben 2015-10-11 05:05 UTC
---
Heute habe ich im c't einen äusserst positiven Artikel zu Posteo gelesen.
– Alex Schroeder 2015-11-02 12:14 UTC
---
Ich habe gerade mein Modem gewechselt und habe damit auch einen neuen Router erhalten.
+------------------+---------------+ | Local IP | 192.168.0.199 | +------------------+---------------+ | Local start port | 993 | | Enabled | On | +------------------+---------------+
Nun muss ich nur noch schauen, ob ich auch Email versenden und empfangen kann. 🙂
(Mehr Info auch hier: Kallobombus Mail.)
– Alex Schroeder 2016-06-27 20:20 UTC
---
Zwei weitere Probleme:
1. Mein neues Modem erlaubt mir kein Port Forwarding auf den Port 25. Wie mühsam. Im Moment leite ich den externen Port 587 auf den internen Port 25, wo Exim die SMTP Verbindungen entgegennimmt.
2. How to upgrade a Wheezy image to Jessie
How to upgrade a Wheezy image to Jessie
Ich habe leider so viele Änderungen an den Dovecot, Spam-Assassin, DKIM und sonstigen Konfigurationsdateien gemacht, dass ich beschlossen habe, überall die Kopie der Maintainer zu übernehmen und für Debian Jessie wieder von vorne zu beginnen.
Erster Test:
Kann ich mir selber eine Mail schreiben?
pi@raspberrypi ~ $ mail pi Subject: test local delivery . EOT pi@raspberrypi ~ $ mail No mail for pi
Tönt nach einem Problem.
pi@raspberrypi ~ $ sudo doveadm log errors pi@raspberrypi ~ $ sudo tail /var/log/exim4/mainlog pi@raspberrypi ~ $ sudo tail /var/log/exim4/rejectlog
Keine Hinweise. Mist!
Mal schauen:
pi@raspberrypi ~ $ sudo less /var/log/mail.log ... Jul 7 19:41:33 raspberrypi postfix/pickup[31950]: 5E4E3175: uid=1000 from=<pi> Jul 7 19:41:33 raspberrypi postfix/cleanup[1892]: warning: connect to Milter service inet:localhost:12301: Connection refused Jul 7 19:41:33 raspberrypi postfix/cleanup[1892]: 5E4E3175: message-id=<20160707174133.5E4E3175@mail.alexschroeder.ch> Jul 7 19:41:33 raspberrypi postfix/qmgr[31951]: 5E4E3175: from=<pi@alexschroeder.ch>, size=477, nrcpt=1 (queue active) Jul 7 19:41:33 raspberrypi postfix/cleanup[1892]: 8551F3D: message-id=<20160707174133.5E4E3175@mail.alexschroeder.ch> Jul 7 19:41:33 raspberrypi postfix/qmgr[31951]: 8551F3D: from=<pi@alexschroeder.ch>, size=611, nrcpt=1 (queue active) Jul 7 19:41:33 raspberrypi postfix/local[1894]: 5E4E3175: to=<pi@alexschroeder.ch>, orig_to=<pi>, relay=local, delay=0.27, delays=0.16/0.07/0/0.04, dsn=2.0.0, status=sent (forwarded as 8551F3D) Jul 7 19:41:33 raspberrypi postfix/qmgr[31951]: 5E4E3175: removed Jul 7 19:41:33 raspberrypi dovecot: lmtp(1897): Connect from local Jul 7 19:41:33 raspberrypi dovecot: lmtp(1897, alex): 4Oe4LU2UfldpBwAAE+zmiA: msgid=<20160707174133.5E4E3175@mail.alexschroeder.ch>: saved mail to INBOX Jul 7 19:41:33 raspberrypi postfix/lmtp[1896]: 8551F3D: to=<alex@alexschroeder.ch>, orig_to=<pi>, relay=mail.alexschroeder.ch[private/dovecot-lmtp], delay=0.42, delays=0.02/0.02/0.18/0.2, dsn=2.0.0, status=sent (250 2.0.0 <alex@alexschroeder.ch> 4Oe4LU2UfldpBwAAE+zmiA Saved) Jul 7 19:41:33 raspberrypi dovecot: lmtp(1897): Disconnect from local: Successful quit Jul 7 19:41:33 raspberrypi postfix/qmgr[31951]: 8551F3D: removed ...
Cool, die Mail wurde also irgendwo abgespeichert. Bloss wo? Ich rate mal, `/var/mail/alex` und prüfe das Ende der Datei:
pi@raspberrypi ~ $ sudo tail -n 27 /var/mail/alex From pi@alexschroeder.ch Thu Jul 07 19:41:33 2016 Return-Path: <pi@alexschroeder.ch> Delivered-To: <alex@alexschroeder.ch> Received: from mail.alexschroeder.ch by mail.alexschroeder.ch (Dovecot) with LMTP id 4Oe4LU2UfldpBwAAE+zmiA for <alex@alexschroeder.ch>; Thu, 07 Jul 2016 19:41:33 +0200 Received: by mail.alexschroeder.ch (Postfix) id 8551F3D; Thu, 7 Jul 2016 19:41:33 +0200 (CEST) Delivered-To: pi@alexschroeder.ch Received: by mail.alexschroeder.ch (Postfix, from userid 1000) id 5E4E3175; Thu, 7 Jul 2016 19:41:33 +0200 (CEST) Date: Thu, 07 Jul 2016 19:41:33 +0200 To: pi@alexschroeder.ch Subject: test User-Agent: Heirloom mailx 12.5 6/20/10 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-Id: <20160707174133.5E4E3175@mail.alexschroeder.ch> From: pi@alexschroeder.ch X-UID: 14343 Status: X-Keywords: Content-Length: 15 local delivery
OK, das Allerwichtigste funktioniert also.
Im Moment funktioniert der Mail Zugriff von aussen allerdings nicht. Das heisst IMAP, das heisst Dovecot, das heist Port 993 prüfen, SSL prüfen, Benutzer authorisierung prüfen, und Ordnerstruktur prüfen. Im `/etc/dovecot/conf.d/` hat es ziemlich viele Dateien mit der Endung `.ucf-dist` und `.ucf-old`. Die muss ich mir mal anschauen.
Mittels `egrep` filtere ich alle Leerzeilen und alle reinen Kommentarzeilen raus, damit ich klarer sehe, was denn überhaupt eingestellt wird.
pi@raspberrypi /etc/dovecot/conf.d $ egrep -v '^( *#|$)' 10-auth.conf disable_plaintext_auth = yes auth_username_format = %Ln auth_mechanisms = plain !include auth-system.conf.ext
Sieht vernünftig aus?
pi@raspberrypi /etc/dovecot/conf.d $ egrep -v '^( *#|$)' 10-mail.conf mail_location = mbox:~/mail:LAYOUT=maildir++:INBOX=/var/mail/%u:CONTROL=~/mail/control:INDEX=~/mail/indexes namespace inbox { inbox = yes } mail_privileged_group = mail
Das mit der `mail_location` bleibt ein Mist, bin ich einverstanden. Aber so weiss ich wenigstens, dass die INBOX die Datei `/var/mail/pi` ist. Und dort habe ich ja meine Test Mail gefunden. Also sieht das auch vernünftig aus.
Bei `10-ssl.conf` gab es Änderungen, die nicht so vernünftig aussehen. Also schnell `sudo vi 10-ssl.conf` angeworfen, so dass das Resultat dann so aussieht:
pi@raspberrypi /etc/dovecot/conf.d $ egrep -v '^( *#|$)' 10-ssl.conf ssl = required ssl_cert = </etc/dovecot/dovecot.pem ssl_key = </etc/dovecot/private/dovecot.pem
Also habe ich `ssl` zwingend gemacht und die schon früher mal generierten `.pem` Dateien auskommentiert...
Mit `20-lmtp.conf` bin ich auch nicht zufrieden. Da ist `sieve` rausgefallen. Also wieder editieren bis es wie folgt aussieht:
pi@raspberrypi /etc/dovecot/conf.d $ egrep -v '^( *#|$)' 20-lmtp.conf protocol lmtp { mail_plugins = $mail_plugins sieve }
Konfiguration neu laden mit `sudo doveadm reload` und dann wieder versucht, Mail mit meinem iPhone zu lesen...
Und es hat geklappt!
pi@alexschroeder.ch test local delivery
Yay!
– Alex Schroeder 2016-07-07
---
Hallo Alex,
danke für das Tutorial! Ich habe aber eine Frage im Vorfeld, bevor ich das umsetzen möchte. Ich betreibe meinen eigenen Exchange Server. Der läuft im Prinzip ohne Probleme. Nur...wenn es welche gibt und ich “Hand anlegen muss”, habe ich keine Lust bei Strato den dortigen Backup-Mail-Server zu aktivieren. Bequemer wäre es einen MX-Eintrag einzustellen, der auf (in diesem Fall der Raspberry) einen anderen Mail-Server verweist.
Wäre das damit möglich? Lieben Dank für Deine Antwort Gysbert
– Gysbert 2019-01-13 11:48 UTC
---
Hallo Gysbert
Leider betreibe ich den Raspberry Pi schon lange nicht mehr als E-Mail Server und habe deswegen keine Ahnung. MX-Einträge ändern sollte problemlos sein. Dafür ist die ganze Sache ja gemacht.
– Alex Schroeder 2019-01-13 13:58 UTC
---
Hallo Alex, ich habe bei Strato eine Domain und meinen eigenen Exchange Server zu Hause. In meiner Fritte habe ich als DynDNS folgendes Update-Schema eingetragen: https://dyndns.strato.com/nic/update?system=dyndns&hostname=beispiel.de&myip=&mx=beispiel.de&wildcard=ON&backmx=YES “beispiel.de” muss natürlich in die eigene Domain umbenannt werden. Dies gilt nur für STRATO, bei anderen weiß ich nicht. Als DynDNS-Anbieter im Router sollte man aber nicht STRATO auswählen, auch wenn es angeboten wird. Nimm bitte Benutzerdefiniert. Der Standardeintrag aktualisiert keine MX-Einträge. Beim Eintrag “backmx=” kannst du auch den Strato Server eintragen oder ganz deaktivieren.
– David 2020-02-06 08:04 UTC
---
Self-hosting mail requires a minimum of knowledge and dedication, it is not a two-clicks thing, you need to have some basic knowledge and you have to be willing to pour some time into it. If you’ve never touched a DNS zone or if you think that taking an hour to setup something is hard, then this will not be easy and I don’t recommend you do it unless you WANT to learn a ton of stuff. – Setting up a mail server with OpenSMTPD, Dovecot and Rspamd
Setting up a mail server with OpenSMTPD, Dovecot and Rspamd
– Alex 2021-09-15 04:20 UTC
---
I implemented all the acronyms, secured antispam measures, verified my domain, made sure my server is neither breached nor used to relay actual spam, added new servers with supposedly clean IPs from reputable providers, tried all the silver bullets recommended by Hacker News, used kafkaesque request forms to prove legitimity, contacted the admins of some blacklists. – After self-hosting my email for twenty-three years I have thrown in the towel. The oligopoly has won.
– Alex 2022-09-05 10:05 UTC