Raspberry Pi als echten Web- und Mailserver einsetzen (German)
Postfach im Griff
Selbst ausgewachsene Aufgaben wie einen
Mailserver stemmt der RasPi, wenn Sie die Ressourcen im Blick behalten und beim
Setup aufpassen.
Dass sich der Raspberry Pi hervorragend als Server im
LAN eignet, ist bekannt. Viele spielen aber mit dem Gedanken, ihm mehr Aufgaben
anzuvertrauen, zum Beispiel als Webserver. Sicher erreicht er nicht die
Leistung eines modernen Intel-Servers mit 32 Kernen. Für einfache Dienste
wie Mailserver und Web host reichen seine Kräfte unter Umständen aus.
Der erste Webserver, war eine SUN
Enterprise 220R, ein Monster mit vier Höheneinheiten bei voller
Einbautiefe. Auf der Maschine war ein Warnhinweis zu lesen, dass zwei Personen
zum Tragen nötig sind. Sie hatte zwei CPUs mit je 360 MHz und
512 MByte RAM, ähnliche Werte wie der RasPi von heute. Der Vergleich
hinkt zwar etwas, aber es ist auf jeden Fall einen Versuch wert. Zum Glück
benötigen einfache Webdienste nicht so viel CPU und RAM.
Vorüberlegungen
Was unterscheidet einen Home-Server von
einem echten Webserver? Die Leistung mal außen vor, dann bleibt nicht mehr so
viel übrig. Die bereitgestellten Dienste sollen bei beiden immer zu erreichen
sein. Ein Webserver ist im Vergleich zum Server im LAN jedoch vom Internet aus
erreichbar, er braucht also eine öffentliche IP-Adresse.
Möchten Sie einen vollwertigen
Mailserver betreiben, benötigen Sie zusätzlich einen Reverse-DNS-Eintrag (siehe
Kasten "Domain Name System").
Wenn der Rechner diese zwei Bedingungen erfüllt, dann spricht nichts dagegen,
durchzustarten. Im Rechenzentrum sind diese beiden Parameter immer erfüllt. Eine
öffentliche IP für den Raspberry Pi bekommen Sie dagegen auf anderem Weg:
Viele DSL-Provider bieten in ihren Business-Tarifen eine feste IP an.
Domain Name System
|
DNS steht für Domain Name System. Kurz gesagt: Es übersetzt Namen, die
sich Menschen gut merken können, in IP-Adressen. In den meisten Fällen dient
dieses System tatsächlich nur zum Auflösen der Namen. Weitaus seltener
benötigt ein Rechner oder Dienst die Gegenrichtung, also IP-Adresse nach
Name.
Mailserver verwenden diese Reverse DNS Names, um herauszufinden,
ob ihr Gegenüber selbst ein Mailserver ist oder nur ein DSL-Anschluss. Ist
kein korrekter Eintrag vorhanden, weist der Server Mails von diesen Rechnern
ab. Das geschieht, um die Spam-Flut etwas in Grenzen zu halten.
|
Allerdings empfiehlt es sich, sich vor
dem Bestellen einer dieser Business-Lösungen zu erkundigen, ob Sie einen
zusätzlichen Grenzrouter benötigen. Falls Sie so etwas noch nie eingerichtet
haben, sollten Sie sich im Voraus Hilfe organisieren oder zumindest im Netz
recherchieren, wie Sie eine solche Anbindung aufbauen.
Firewall öffnen
Es ist sicher keine gute Idee, jetzt
einfach wild in der Firewall-Konfiguration herumzustochern, bis es geht. An
dieser Stelle sei vor vermeintlichen Experten-Videos bei einschlägigen
Plattformen gewarnt, da sich dort teilweise haarsträubende Anleitungen finden.
Es sollte klar sein, dass jede Lücke hier potenzielle Sicherheitslücken
schafft.
Als Erstes wählen Sie für den
Raspberry Pi eine feste lokale IP-Adresse aus. Sie sollte nach Möglichkeit
nicht im DHCP-Pool (siehe Kasten "Dynamische Adressen") des Routers liegen. Falls
Sie hier auf Probleme stoßen, lohnt sich ein Blick in die Anleitung des
Routers. Die meisten Geräte bieten heute die Möglichkeit, solche festen
Adressen zu vergeben. Für das Beispiel kommt die IP-Adresse
192.168.2.160
zum Einsatz.
Dynamische Adressen
|
DHCP steht für Dynamic Host Configuration Protocol. Es dient dazu, an
die Hosts im Netzwerk dynamisch eine Konfiguration bezüglich des Netzwerks zu
verteilen. Das vereinfacht die Konfiguration von IP-Netzen erheblich und
verhindert falsche Einstellungen am Client-PC. Bevor es das Protokoll gab,
galt es, alle Parameter fest in die Rechner einzutragen.
Ein einfaches Beispiel zeigt nun, wie DHCP das Leben leichter macht:
Angenommen, das Standard Gateway eines Netzwerks ändert sich, so musste der
Administrator früher zu jedem Rechner laufen und die Konfiguration manuell
ändern. Heute ändert er den Eintrag im DHCP-Server und alle Clients holen
sich die neuen Werte.
Es ist darüber hinaus möglich, mit DHCP einer bestimmten MAC-Adresse
immer eine feste IP zu geben. Auf diese Weise realisieren Sie über DHCP eine
statische Konfiguration für Server im Netzwerk.
DHCP vermag erheblich mehr als nur IP-Adressen an PCs zu verteilen. Es
hilft ebenfalls beim Einsatz von Rechnern ohne Festplatte, denn es verteilt
bei Bedarf die Informationen über die Bootimages.
|
Achten Sie beim Manipulieren der
Firewall darauf, dass Sie genau nur die Ports öffnen, die Sie für den Server
benötigen. Bei einigen Routern nennt sich der Punkt Port-Weiterleitung. Wie das
im Einzelfall geht, beschreibt die Anleitung des Routers. Abbildung 1 zeigt die
Konfiguration des Routers im Testsetup.
Ein einfacher Webserver lauscht auf
Port 80 und auf Port 443 (HTTPS). Port 25 (SMTP) ist
für den Mailserver reserviert. Hier sei noch einmal der Rat gegeben, im Zweifel
lieber zu wenige als zu viele Ports zu öffnen. Die Tabelle "Dienste"
zeigt eine Auswahl, welche Ports Sie für welche Dienste benötigen. Um eine
Übersicht über alle Dienst/Port-Zuordnungen zu bekommen, werfen Sie einen Blick
in die Datei
/etc/services
.
Dienste
|
||||||||||||||
|
Von FTP sei hier abgeraten, da es
erstens nur unverschlüsselt Daten überträgt und Sie komplette Bereiche öffnen
müssten, um es zu verwenden; SCP/SFTP ist hier die bessere und zeitgemäße
Alternative. Telnet kommt aus Sicherheitsgründen nicht infrage. Für den
Shell-Zugriff ist SSH besser geeignet.
Raspberry Pi vorbereiten
Für diesen Workshop dient die
Debian-basierte Distribution Raspbian als Grundlage. Die aktuelle Version laden
Sie entweder aus dem Web oder nehmen die Version von der Heft-DVD. Anschließend
entpacken Sie die Daten und schreiben Sie auf eine SD-Karte (Listing 1).
Listing 1 |
$ unzip
2014-12-24-wheezy-raspbian.zip
$ sudo dd
if=2014-12-24-wheezy-raspbian.img of=/dev/sdd
|
Die SD-Karte stecken Sie in den
Raspberry, schließen Monitor und Tastatur an und starten direkt in das Programm
raspi-config
hinein. Dort erweitern Sie das
Dateisystem und ändern das Passwort für den User pi
.
In den Advanced
Options setzen Sie das GPU-RAM runter auf 16 MByte, suchen bei
Bedarf einen neuen Hostnamen aus und schalten SSH ein. Schnell noch
sudo apt-get update
und
sudo apt-get upgrade
ausführen und der Raspberry Pi ist
bereit für den Einsatz.Feste IP
Der Raspberry Pi braucht im lokalen
Netz eine feste IP-Adresse, damit er über die entsprechenden Firewall-Regeln
immer zu erreichen ist. Die Konfiguration legen Sie, wie bei fast allen
Linux-Systemen, in der Datei
/etc/network/interfaces
fest.
Diese editieren Sie nun so, dass Sie den
DHCP-Teil für das verwendete Netzwerk-Interface auskommentieren und dafür eine
statische IP-Konfiguration eintragen (Listing 2) Im Beispiel heißt die Schnittstelle
eth0
.
Listing 2
|
auto lo
iface lo inet loopback
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.2.160
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255
gateway 192.168.2.1
|
Nach dem Speichern booten Sie den
Rechner einmal neu. Das ist zwar grundsätzlich bei Linux nicht nötig, hat aber
den Charme, dass Sie sicher sind, dass alle Dienste die neue Konfiguration des
Netzwerks verinnerlicht haben.
Platz schaffen
Bevor Sie mit der Installation des
Webservers weitermachen, lohnt es sich, auf dem Dateisystem etwas Ordnung zu
schaffen. Jedes nicht benötigte Stück Software auf einem Server ist eine
potenzielle Sicherheitslücke und nimmt zusätzlich Platz für die wichtigen
Dienste weg. Wenn Sie den Rechner nur für die im Workshop vorgesehenen Dienste
nutzen, dürfen Sie einige Pakete getrost entfernen (Listing 3).
Listing 3
|
sudo apt-get remove x11-common midori lxde python3 python3-minimal
sudo apt-get autoremove
sudo apt-get clean
|
Die Parameter
autoremove
und
clean
weisen Apt an, alle heruntergeladenen
Archive und temporären Dateien zu entfernen. Durch diese Entrümpelungsaktion
gewinnen Sie in der Regel etwa 1,2 GByte an Plattenplatz und haben die für
einen Server unnötige Software entfernt.Software installieren
Am Ende sollen auf dem Raspberry Pi
ein kompletter Webserver, eine Datenbank und ein Mailserver laufen. Ein Punkt,
auf den Sie dabei immer achten sollten, ist das IP-Protokoll: Der Raspberry hat
von Haus aus nur IPv4 an Bord. Alle Dienste, die Sie installieren, unterstützen
aber schon IPv6. Das erzeugt immer wieder Fehler. Diese Tatsache sollten Sie im
Hinterkopf behalten, falls beim Start von Diensten Fehler mit dem Netzwerk
auftauchen. Dann lohnt es sich zu prüfen, ob der Dienst nicht versucht hat,
eine IPv6-Adresse zu binden.
Zuerst installieren Sie die
Datenbank. Das ist die einzige Komponente, die bei der
Installation eine wichtige Eingabe verlangt. Es handelt sich dabei um das
Root-Passwort für die Datenbank, das Sie später brauchen und daher gut
verwahren sollten.
Software einrichten
Die MySQL-Datenbank übernimmt primär das
Verwalten der Mailkonten, darf aber auch für andere Zwecke zum Einsatz kommen.
Das Skript
createMailDB.sql
legt die Datenbank vmail
an,
die folgende drei Tabellen enthält:users
: Sie enthalten die E-Mail-Adressen des Users mit ihren Passwörtern.domains
: Diese Tabelle enthält die Domains, für die sich der Mailserver zuständig fühlt.aliases
: Regeln zum Weiterleiten von E-Mails.
Zu guter Letzt legt es einen Benutzer (
vmail
) an, mit dem Sie später auf die
Datenbank zugreifen. Falls Sie für diesen ein eigenes Passwort verwenden
möchten, was sehr zu empfehlen ist, ändern Sie vor dem Ausführen des Skripts in
der letzten Zeile das Passwort. Listing 4 zeigt, wie Sie die Datenbank installieren und
das Skript anwenden.
Listing 4
|
sudo apt-get install mysql-server
mysql -u root -p < createMailDB.sql
|
Die Datenbank ist nun vorbereitet, und
jetzt ist es an der Zeit, mit der Installation der restlichen Komponenten zu
beginnen. Wenn sich das Setup von Postfix meldet, wählen Sie das entsprechende
Interface aus und tragen die Maildomäne ein. Das Roundcube-Paket möchte das
Passwort für den Root-User der Datenbank. Zusätzlich braucht es noch ein
Passwort, um die eigene Konfiguration zu schützen. Listing 5 zeigt, welche Pakete Sie für den Aufbau
brauchen.
Listing 5
|
sudo apt-get install
dovecot-common dovecot-imapd dovecot-mysql dovecot-lmtpd postfix
postfix-mysql apache2 roundcube roundcube-mysql roundcube-plugins
roundcube-plugins-extra
|
Dovecot einrichten
Im Test kam Dovecot als IMAP-Server zum Einsatz, das bedeutet, er verwaltet
die Postfächer. Dazu muss die Software wissen, wer ein Postfach auf dem Server
hat. Die Benutzer verwalten Sie in diesem Fall via MySQL. Das bedeutet, diese
User sind nicht als Benutzer im System angelegt, also quasi nur virtuell
vorhanden.
Das vereinfacht die Administration
erheblich. Um den im System schon vorhandenen Usern nicht ins Gehege zu kommen,
legen Sie eigens für die von Dovecot verwalteten Postkörbe einen neuen User an.
Nennen Sie ihn der Einfachheit halber
vmail
,
weil er zum Verwalten der
virtuellen Mailbenutzer gedacht ist. Außerdem legen Sie gleich für die
Postkörbe ein Verzeichnis mit den passenden Berechtigungen an (Listing 6).
Listing 6
|
sudo mkdir /var/vmail
sudo useradd vmail
sudo chown -R vmail:vmail
/var/vmail
sudo chmod -R 770 /var/vmail/
|
Nun teilen Sie dem Dovecot-Server mit,
wie er an die User-Informationen aus der Datenbank herankommt. Dazu editieren
Sie einige Konfigurationsdateien. Starten Sie dabei mit
/etc/dovecot/conf.d/10-mail.conf
. Diese öffnen Sie mit einem Editor Ihrer
Wahl und ändern die Zeilen entsprechend Listing 7. Falls einige Parameter nicht vorhanden sind,
fügen Sie diese einfach hinzu. Damit teilen Sie dem Server mit, wo er die
Postfächer anlegen soll und mit welchem Betriebssystem-User er auf diese
Verzeichnisse Zugriff hat.
Listing 7
|
mail_home = /var/vmail/%d/%n
mail_location =
maildir:~/mail:LAYOUT=fs
mail_uid = vmail
mail_gid = vmail
mail_privileged_group = vmail
|
In der Datei
/etc/dovecot/conf.d/10-auth.conf
setzen Sie einige Parameter für das
Authentifizieren (Listing 8).
Listing 8
|
# /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = yes
auth_mechanisms = plain login
#!include auth-system.conf.ext
|
Anschließend nehmen Sie noch einige
grundlegende Einstellungen an Dovecot vor. Das erledigen Sie in
/etc/dovecot/dovecot.conf
(Listing 9)
Listing 9
|
!include_try
/usr/share/dovecot/protocols.d/*.protocol
listen = *
base_dir = /var/run/dovecot/
# Greeting message for clients.
login_greeting = Dovecot ready.
!include conf.d/*.conf
!include_try local.conf
|
Nun definieren Sie einige Sockets, was
ermöglicht, dass Postfix und Dovecot miteinander kommunizieren. Die beiden
tauschen Login-Informationen und E-Mails über diese Schnittstelle aus (Listing 10).
Listing 10
|
#/etc/dovecot/conf.d/10-master.conf
service auth {
unix_listener auth-userdb {
mode = 0600
user = vmail
group = vmail
}
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
mode = 0660
group = postfix
user = postfix
}
user = vmail
}
|
Damit Dovecot die Möglichkeit hat, sich
selbst über E-Mails zu melden, benötigt es noch eine Mailadresse für den
Postmaster. Es verhält sich überaus unkooperativ, wenn Sie diese nicht setzen.
Zu diesem Zweck verwenden Sie in der Datei
/etc/dovecot/conf.d/15-lda.conf
den Parameter postmaster_address
.Sichere Verbindungen
Alle in diesem Artikel verwendeten
Zertifikate rufen eine Warnung hervor, da sie nicht von einer richtigen
Zertifizierungsstelle signiert sind. Zum Ausprobieren ist das aber ein
praktikabler Weg. Es gibt zwei Alternativen, mit denen Sie diese Meldung
verhindern: Sie arbeiten komplett unverschlüsselt. Das ist nicht zu empfehlen.
Oder Sie besorgen sich ein offizielles Zertifikat. Es gibt Anbieter, die für
einen bestimmten Zeitraum signierte Zertifikate bereitstellen. So haben Sie die
Möglichkeit, zu testen. Meist verfallen diese Zertifikate nach 90 Tagen. Zu
Testzwecken reicht es, nach der Installation den Server mit den vorhandenen
Zertifikaten zu betreiben (Listing 11), auch wenn man weiß, dass das
Fehlermeldungen produziert.
Listing 11
|
#/etc/dovecot/conf.d/10-ssl.conf
ssl = required
ssl_cert =
</etc/dovecot/dovecot.pem
ssl_key =
</etc/dovecot/private/dovecot.pem
ssl_protocols = !SSLv2 !SSLv3
ssl_cipher_list = EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
|
In der Datei
/etc/dovecot/dovecot-sql.conf.ext
teilen Sie Dovecot mit, dass es die
Informationen über die User und die Domänen aus der MySQL-Datenbank erhält.
Dovecot ist nun vollständig eingerichtet und bereit, die Postfächer zu
verwalten.
Listing 12
|
driver = mysql
connect = host=127.0.0.1
dbname=vmail user=vmail password=vmailpasswort
default_pass_scheme = SHA512-CRYPT
password_query = SELECT username,
domain, password FROM users WHERE username = '%n' AND domain = '%d'
#iterate_query = SELECT username,
domain FROM users
|
Postfix einrichten
Postfix ist die Komponente im Mailsystem, die sich um das
Zustellen kümmert. Dovecot stellt die Briefkästen bereit; Postfix ist der
Postbote. Damit dieser Austausch klappt, bearbeiten Sie die Datei
/etc/postfix/main.cf
entsprechend (Listing 13). Das beinhaltet auch die Verbindungen zu
den Tabellen in der Datenbank, wie den Zugang via SSL. Listing 13 |
#/etc/postfix/main.cf
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no
##### TLS parameters ######
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mydestination =
recipient_delimiter =
inet_interfaces = all
myorigin = /etc/mailname
inet_protocols = all
###### SASL Auth ######
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
inet_protocols = ipv4
##### TLS parameters ######
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
###### Use Dovecot LMTP Service to deliver Mails to Dovecot ######
virtual_transport = lmtp:unix:private/dovecot-lmtp
##### Only allow mail transport if client is authenticated or in own network (PHP Scripts, ...) ######
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
###### MySQL Connection ######
virtual_alias_maps = mysql:/etc/postfix/virtual/mysql-aliases.cf
virtual_mailbox_maps = mysql:/etc/postfix/virtual/mysql-maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/virtual/mysql-domains.cf
local_recipient_maps = $virtual_mailbox_maps
###### SASL Auth ######
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
|
Wenn Sie Ihre
master.cf
mit
der Datei von der DVD überschreiben, ist es notwendig, dass Sie den Parameter myhostname=
wieder
auf den Wert setzen, der zu Ihrem Setup passt. In die Datei /etc/postfix/master.cf
fügen Sie die Zeilen aus Listing 14 ein.Listing 14 |
submission inet n - - - - smtpd -v
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth
-o smtpd_sasl_security_options=noanonymous
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
|
Nachdem Sie alle Einstellungen in
main.conf
vorgenommen haben, erzeugen Sie die
Dateien für den Zugriff auf MySQL. Diese legen Sie am besten in ein separates
Verzeichnis, um sie vom Rest der Konfiguration zu trennen.sudo mkdir /etc/postfix/virtual
sudo chmod 660 /etc/postfix/virtual/
|
In der Datei
/etc/postfix/virtual/mysql-aliases.cf
definieren Sie die SQL-Parameter für die Alias-Tabelle (Listing 15). In /etc/postfix/virtual/mysql-maps.cf
legen Sie die SQL-Parameter für die
Auswahl der Benutzer ab und /etc/postfix/virtual/mysql-domains.cf
liefert die Liste der Domains, für die
sich Postfix verantwortlich fühlt. Denken Sie daran, dass Sie hier das Passwort
für den Benutzer vmail
korrekt einsetzen.Listing 15 |
user = vmail
password = Passwort
hosts = 127.0.0.1
dbname = vmail
query = SELECT destination FROM aliases WHERE source='%s'
|
Listing 16 |
user = vmail
password = Passwort
hosts = 127.0.0.1
dbname = vmail
query = SELECT * FROM users WHERE username='%u' AND domain='%d'
|
Listing 17 |
user = vmail
password = Passwort
hosts = 127.0.0.1
dbname = vmail
query = SELECT * FROM domains WHERE domain='%s'
|
Jetzt kommt der etwas kniffelige Teil:
Sie müssen die Mailbenutzer in der Datenbank anlegen. Für die ersten Versuche
reicht die Arbeit auf der Konsole. Haben Sie aber viele User zu administrieren,
sollten Sie sich eine etwas elegantere Methode suchen, wie Phpmyadmin oder
Heidisql.
Als Erstes erstellen Sie einen
Passwort-Hash für das Passwort des jeweiligen Benutzers, im Beispiel
<§§B>start123<§§B> (Listing 18). Den
Hash-Wert merken Sie sich auf geeignete Weise, da Sie ihn später wieder
benötigen.
Listing 18 |
$doveadm pw -s SHA512-CRYPT
Enter new password: start123
Retype new password: start123
{SHA512-CRYPT}$6$Ks1/Ov3KNGamfRpz$ZbuRIJ1pp1.InH9ghV9AOMXh6pd2hMkHM1Vr5vM/BVddYl1SavjUHhSpLFGmNJW8bkvusO0ahPBjwmhTuIGRK0
|
Jetzt erstellen Sie für die Maildomain,
die entsprechenden Einträge in der Datenbank (Listing 19,
Zeile 3). In die Tabelle
domains
tragen wir die Domäne ein, für die sich unser Mailserver
zuständig fühlen soll. Es kann durchaus mehr als nur eine sein. Und es braucht
nicht die zu sein, in der sich der Server selbst befindet.
In die Tabelle
users
tragen Sie den Mailuser mit dem
erzeugten Hash ein, im Beispiel ist dies der von start123
(Listing 19,
Zeile 4). Falls Sie Aliase benötigen – als Adressen, unter denen Sie einen
User außerdem erreichen möchten –, tragen Sie diese analog zu Listing 19 in die Tabelle
aliases
ein.Listing 19 |
mysql -u vmail -p
use vmail;
insert into domains (domain) values ('domain.tld');
insert into users (username, domain, password) values ('Benutzer', 'Domain', '$6$Ks1/Ov3KNGamfRpz$ZbuRIJ1pp1.InH9ghV9AOMXh6pd2hMkHM1Vr5vM/BVddYl1SavjUHhSpLFGmNJW8bkvusO0ahPBjwmhTuIGRK0 ');
insert into aliases (source, destination) values ('alias1@ubuntu-server.de', 'benutzer@ubuntu-server.de');
|
Um alle Änderungen an der Konfiguration
anzuwenden, starten Sie jetzt den Mailserver einmal komplett neu. Dabei lohnt
sich immer ein Blick in die Log-Datei, um mögliche Fehler in der Konfiguration
frühzeitig zu erkennen. Für den Neustart verwenden Sie die folgenden beiden
Befehle:
sudo service dovecot restart
sudo service postfix restart
|
Jetzt bestünde bereits die Möglichkeit,
mit einem Mailclient, wie etwa Thunderbird, auf die Postfächer zuzugreifen und
Mails zu versenden. Thunderbird beschwert sich zwar, wenn Sie Zertifikate
verwenden, für die er keine Verifikation erhält, aber mit einem Klick fügen Sie
die Ausnahme hinzu und schaffen das Problem so vorerst aus der Welt.
Der Benutzername setzt sich nach dem Schema
Benutzer
@Domäne
zusammen. Wenn Sie nur den
Benutzernamen eingeben, schafft es Dovecot nicht, Sie gegen die Datenbank zu
authentifizieren.Apache
Der Webserver Apache läuft zu diesem
Zeitpunkt bereits. Bei Bedarf testen Sie dies mit einem Browser. Tippen Sie die
lokale IP des Rechners ein, sollten Sie die Standardseite des Servers
sehen. Nun bestünde die Möglichkeit, den Apache mit mehreren virtuellen Hosts
zu konfigurieren. Im konkreten Fall ist das aber nicht nötig.
Beim Apache ist der HTTPS-Modus ab Werk
noch nicht aktiviert. Das erledigen Sie mit den folgenden Kommandozeilen:
sudo a2enmod ssl
sudo a2ensite default-ssl
sudo service apache2 restart
|
Die dritte Zeile startet dabei den
Dienst einmal neu, um die Änderungen anzuwenden. Nach dem Neustart sollten Sie
wieder die Startseite sehen, wenn Sie per HTTPS auf die lokale IP-Adresse des
Rechners zugreifen.
Roundcube
Nun fehlt nur noch der webbasierte
Mailclient Roundcube, um das Projekt zu einem erfolgreichen Abschluss zu
bringen. Der Einfachheit halber fügen Sie den Inhalt der Datei
/etc/roundcube/apache.conf
in /etc/apache2/sites-available/default-ssl
ein, am besten vor der zweitletzten
Zeile </VirtualHost>
.
Im Anschluss
kommentieren Sie noch die zwei Aliase für Roundcube wieder ein (Listing 20).
Listing 20
|
Alias /roundcube/program/js/tiny_mce/ /usr/share/tinymce/www/
Alias /roundcube /var/lib/roundcube
|
Jetzt nehmen Sie noch in der
Konfigurationsdatei
/etc/roundcube/main.inc.php
von Roundcube einige Anpassungen vor, um sich mit
Roundcube an dem vorhandenen Mailserver anzumelden (Listing 21).Listing 21 |
$rcmail_config['default_host'] = 'localhost';
$rcmail_config['default_port'] = 143;
$rcmail_config['imap_auth_type'] = PLAIN;
$rcmail_config['smtp_server'] = 'localhost';
$rcmail_config['smtp_port'] = 25;
$rcmail_config['smtp_auth_type'] = 'PLAIN';
|
Die Login-Methode
PLAIN
birgt auf dem lokalen Rechner insofern
ein geringeres Risiko, da die unverschlüsselten Passwörter nicht über das
Internet übertragen werden. Sie dürfen Roundcube selbst natürlich nicht über
eine unverschlüsselte Verbindung bereitstellen, sonst hätten Sie das Problem
von Passwörtern im Klartext im Internet.
In Roundcube loggen Sie sich mittels
Browser über
https://IP-Adresse/roundcube/
ein, wobei Sie für die IP-Adresse die
des RasPi einsetzen. Hier bekommen Sie ebenfalls die bekannte Meldung, dass es
nicht möglich sei, das Zertifikat zu verifizieren.Passwort-Plugin
Aktuell steht in der Datenbank nur ein
Passwort-Hash für das Passwort
start123
. Das ist suboptimal. Sie haben zwar die Möglichkeit, mit doveadm pw -s
SHA512-CRYPT
jederzeit zusätzliche Passwörter zu generieren und in die Datenbank einzufügen.
Aber das sind alles Tätigkeiten, die nur der Administrator durchführen darf.
Die Benutzer haben keinen Zugriff auf die Datenbank.
Es gibt für Roundcube jedoch ein Plugin
zum Ändern der Passwörter. Sie aktivieren es, indem Sie in der
Konfigurationsdatei
/etc/roundcube/main.inc.php
von Roundcube die folgende Zeile
eintragen:$rcmail_config['plugins'] = array('password');
|
Jetzt nehmen Sie noch einige kleine
Änderungen an der Konfiguration der Plugins selbst vor. Dazu kopieren Sie sich
eine schon komplett gefüllte Vorlage und editieren sie (Listing 22).
Listing 22 |
sudo cp /usr/share/roundcube/plugins/password/config.inc.php.dist /etc/roundcube/plugins/password/config.inc.php
|
Nun machen Sie die Verbindung zur
Datenbank bekannt und passen das Passwort im Update-String an (Listing 23). Damit ist die Konfiguration schon
abgeschlossen, und Sie haben die Möglichkeit, zu testen, ob es einwandfrei
klappt (Abbildung 2).
Listing 23 |
$rcmail_config['password_db_dsn'] = 'mysql://vmail:Passwort@localhost/vmail';
$rcmail_config['password_query'] = 'update users set password = ENCRYPT(%p,concat("$6$",SUBSTRING(SHA(RAND()),-16))) where username=%l and domain=%d Limit 1';
$rcmail_config['password_crypt_hash'] = 'sha512';
|
Fazit
Der Raspberry Pi ist durchaus als
kleiner Server zu gebrauchen. Ein Mailsystem mit einigen Benutzern läuft gut,
eine Webseite mit einfachen PHP-Skripten stellt die Hardware vor keine großen
Probleme. Von der Leistung her konkurriert damit der Mini-PC in etwa mit einem
kleinen virtuellen Server bei einem Provider.
Bei den Kosten schlägt natürlich der
DSL-Tarif mit der festen IP-Adresse zu Buche. Da heißt es schon, genauer
hinsehen, ob sich das rechnet. In jedem Fall ist es ein ausgezeichnetes
Lernprojekt, das viel über die Mechnismen verrät, die dabei ineinandergreifen.
Infos
|
|
Kommentare
Kommentar veröffentlichen