04.12.2015 von Jörg Barres
Das perfekte SoHo-Netzwerk 4 - Der Mail-Server
Installation und Einrichtung des email-Systems
Installation und Einrichtung des email-Systems
In dieser Fortsetzung der Installation des Debian-Linux-Servers Pluto werden wir das komplette email-System inklusive Verschlüsselung und Web-Oberfläche behandeln.
Diese Installation ist eine recht umfangreiche Sache und unterteilt sich in folgende Abschnitte:
- Installation des MTA Postfix
- Installation des IMAP-Servers Dovecot
- Installation des Fetchmail-Dienstes
- Installation der Web-Oberfläche RainLoop
Der Mail Transfer Agent Postfix
Installation von Postfix
Die Installation von Postfik samt zugehörigem SSL starte ich in der Konsole so:
root@pluto:~# apt-get install postfix sasl2-bin
Da unser System keine mails direkt versenden, sondern ausgehende mails an unseren Provider weiterreichen soll, wählen Sie "Internet mit Smarthost" als Basiskonfiguration aus.
Wir leiten also ausgehende mails an den zum Versand an den Mail-Server unseres Providers weiter, da viele Internet-email-Server mails von dynamischen IPs ablehnen.
Geben Sie den E-Mail-Namen des Systems an, in meinem Fall "pluto.solarsystem.loca"l
Geben Sie dann den SMTP-Server Ihres Provider als SMTP-Relay-Server an.
Installation der SSL-Zertifikate
Wechseln Sie im Terminal in den Ordner /etc/ssl/private und erzeugen Sie dort ein Zertifikat:
root@pluto:~# cd /etc/ssl/private
root@pluto:/etc/ssl/private# openssl genrsa -des3 -out server.key 2048
Geben Sie eine Passphrase zur Sicherung ein und bestätigen Sie diese.
Anschließend entfernen wir diese Passphrase von der erzeugten Datei, dazu müssen wir die Passphrase ein weiteres Mal eingeben.
root@pluto:/etc/ssl/private# openssl rsa -in server.key -out server.key
Jetzt erzeugen wir eine weitere Zertifikatsdatei:
root@pluto:/etc/ssl/private# openssl req -new -days 3650 -key server.key -out server.csr
Geben Sie bei den folgenden Fragen zumindest einige Daten ein, um das Zertifikat leichter überprüfbar zu machen. Ich benutze folgende Werte:
Country Name (2 letter code) [AU] | DE |
State or Province Name (full name) [Some-State] | Baden Wuerttemberg |
Locality Name (eg, city) [] | Oberboihingen |
Organization Name (eg, company) [Internet Widgits Pty Ltd] | solarsystem |
Organizational Unit Name (eg, section) [] | |
Common Name (e.g. server FQDN or YOUR name) [] | pluto.solarsystem.local |
Email Address [] | |
A challenge password [] | |
An optional company name [] |
Um die Zertifikatsdateien nun zu erzeugen, geben Sie folgendes ein:
root@pluto:/etc/ssl/private# openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650
root@pluto:/etc/ssl/private# openssl rsa -in server.key -out server.key.unencrypted
root@pluto:/etc/ssl/private# mv -f server.key.unencrypted server.key
root@pluto:/etc/ssl/private# openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650
Nun werden Sie wieder einige Fragen gestellt, ich gebe folgende Daten ein:
Enter pass phrase for server.key | XXXXXXXXX |
Country Name (2 letter code) [AU] | DE |
State or Province Name (full name) [Some-State] | Baden Wuerttemberg |
Locality Name (eg, city) [] | Oberboihingen |
Organization Name (eg, company) [Internet Widgits Pty Ltd] | solarsystem |
Organizational Unit Name (eg, section) [] | |
Common Name (e.g. server FQDN or YOUR name) [] | pluto.solarsystem.local |
Email Address [] |
Jetzt haben Sie es fast geschafft, wir müssen nur noch die Rechte der Dateien korrekt setzen:
root@pluto:/etc/ssl/private# chmod 400 server.*
root@pluto:/etc/ssl/private# chmod 400 cacert.pem
Konfiguration von Postfix
Die Konfiguration von Postfix geschieht in der Datei main.cf im Ordner /etc/postfix. Öffnen Sie die Datei mit Ihrem Editor:
root@pluto:~# joe /etc/postfix/main.cf
Statt jetzt die vorhandene Einträge anzupassen, zu Ergänzen oder zu Entfernen, lösche ich einfach alles aus der Datei raus und kopiere meine Einstellungen über die Zwischenablage dort hinein.
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
append_dot_mydomain = no
biff = no
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
data_directory = /var/lib/postfix
home_mailbox = Maildir/
inet_interfaces = all
inet_protocols = ipv4
local_recipient_maps = unix:passwd.byname $alias_maps
mail_owner = postfix
mailbox_size_limit = 0
mailq_path = /usr/bin/mailq
message_size_limit = 40960000
mydestination = pluto.solarsystem.local, localhost.solarsystem.local, localhost, solarsystem.local
mydomain = solarsystem.local
myhostname = pluto.solarsystem.local
myorigin = /etc/mailname
mynetworks = 127.0.0.0/8, 192.168.100.0/24
newaliases_path = /usr/bin/newaliases
sendmail_path = /usr/sbin/postfix
setgid_group = postdrop
readme_directory = no
recipient_delimiter = +
relayhost = xx.xx.xx
unknown_local_recipient_reject_code = 550
# SASL & TLS
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/smtp_sasl_password_map
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_use_tls = yes
smtp_sasl_security_options = noanonymous
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_use_tls = yes
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_recipient_restrictions = permit_sasl_authenticated permit_mynetworks permit_inet_interfaces
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_tls_cert_file = /etc/ssl/private/server.crt
smtpd_tls_key_file = /etc/ssl/private/server.key
smtpd_tls_CAfile = /etc/ssl/private/cacert.pem
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
Nun muss in der Datei master.cf noch ein wenig geändert werden:
root@pluto:~# joe /etc/postfix/master.cf
Entfernen Sie hier die Kommentarzeichen # bei den Zeilen 28 bis 30:
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
Jetzt sind wir fast fertig, wir müssen nur noch die alias-Tabelle neu erzeugen und Postfix neu starten:
root@pluto:~# newaliases
root@pluto:~# systemctl restart postfix
Durch das Kopieren der main.cf haben wir den SMTP-Server vom Provider wieder herausgelöscht, es steht dort nur noch xx.xx.xx drin. Da wir aber für den verschlüsselten Zugang zum Provider-SMTP-Server ohnehin noch einige Einstellungen vornehmen müssen, machen wir das jetzt wieder über Webmin.
Öffnen Sie Webmin und aktualisieren Sie zuerst die Module, damit Postfix im Bereich "Server" erscheint.
Wechseln Sie dann zu "Server" - "Postfix Mail Server" und wählen Sie zuerst "General Options" aus. Geben Sie dort unter "Other General Options" für "Send outgoing mail via host" statt xx.xx.xx den SMTP-Server Ihres Providers an und speichern Sie die Einstellung.
Für eine verschlüsselte Verbindung zum Provider öffnen Sie jetzt noch den Bereich "SMTP Authentication And Encryption", geben ganz unten die Zugangsdaten zum Provider-SMTP-Server an und speichern die Einstellungen.
Der IMAP-Server Dovecot
Installation von Dovecot
Die Installation von Dovecot ist einfach:
root@pluto:~# apt-get install dovecot-core dovecot-pop3d dovecot-imapd
Konfiguration von Dovecot
Nicht so einfach ist die Konfiguration, es müssen in vielen Dateien Einstellungen vorgenommen werden:
root@pluto:~# joe /etc/dovecot/dovecot.conf
Zeile | Eintrag |
30 | listen=* |
root@pluto:~# joe /etc/dovecot/conf.d/10-auth.conf
Zeile | Eintrag |
10 | disable_plaintext_auth = no |
100 | auth_mechanisms = plain login |
root@pluto:~# joe /etc/dovecot/conf.d/10-mail.conf
Zeile | Eintrag |
30 | mail_location = maildir:~/Maildir |
root@pluto:~# joe /etc/dovecot/conf.d/10-master.conf
Zeile | Eintrag |
95ff | # Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } |
root@pluto:~# joe /etc/dovecot/conf.d/10-ssl.conf
Zeile | Eintrag |
6 | ssl = yes |
12 | ssl_cert = </etc/ssl/private/server.crt |
13 | ssl_key = </etc/ssl/private/server.key |
Erzeugen und Bearbeiten der Date smtpd.conf:
root@pluto:~# touch /etc/postfix/sasl/smtpd.conf
root@pluto:~# joe /etc/postfix/sasl/smtpd.conf
Inhalt der Datei:
mech_list: PLAIN LOGIN
Verzeichnis erzeugen:
root@pluto:~# mkdir -p /var/spool/postfix/var/run/saslauthd
Datei saslauthd bearbeiten:
root@pluto:~# joe /etc/default/saslauthd
Zeile | Eintrag |
7 | START = yes |
62 | OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r" |
Den Benutzer postfix zur Gruppe sasl hinzufügen:
root@pluto:~# adduser postfix sasl
Alle Anwendungen neu starten:
root@pluto:~# /etc/init.d/postfix restart
root@pluto:~# /etc/init.d/saslauthd start
root@pluto:~# systemctl restart dovecot
Der Fetchmail-Dienst
Fetchmail dient dem Abruf von emails von Ihren Providern.
Installation von fetchmail
Die Installation ist einfach, wir geben an der Konsole ein:
root@pluto:~# apt-get install fetchmail
Um Fetchmail automatisch zu starten, müssen wir noch eine Datei konfigurieren:
root@pluto:~# joe /etc/default/fetchmail
Dort ändern wir den Inhalt so ab:
Start_Daemon = no | => | Start_Daemon = yes |
Konfiguration von fetchmail
Die Konfiguration von Fetchmail nehmen wir in Webmin vor.
Aktualisieren Sie die Module und gehen Sie dann zu "Server" - "Fetchmail Mail Retrieval".
Da es noch keinen Abruf gibt, können Sie hier direkt einen einrichten.
Geben Sie dann die benötigten Daten für den email-Abruf bei Ihrem Provider an:
Server name | Der POP-Server Ihres Providers |
Protocol | POP3 |
Server port | verrät Ihnen Ihr Provider, bei mir 995 |
Remote user | Benutzername |
Remote Password | Benutzerpasswort |
Local user | Lokaler User, der die mails erhalten soll, bei mir administrator |
Connect in SSL mode | yes |
Erzeugen Sie den Abruf und testen ihn dann über "Check all servers". Prüfen Sie die Ausgabe auf Fehler.
Erzeugen Sie dann noch einen regelmäßigen automatischen Abruf, indem Sie auf den Knopf "Scheduled Checking" klicken.
Wählen Sie dort das gewünschte Zeitintervall und ob die Ausgabe an jemanden geschickt werden soll. Ich lasse sie mir nur im Fehlerfall schicken.
Test und Snapshot
Um den mail-Server zu überprüfen, führen wir folgende Tests durch:
Lokaler Mailtransfer über Webmin
Bei den Postfix-Einstellungen findet sich auch der Bereich "User Mailboxes". Wählen Sie hier den Benutzer aus, mit dem Sie die Tests durchführen wollen.
Über den Knopf "Compose" können Sie eine email erstellen und versenden. Machen Sie das einmal für folgende Konten:
- Lokales Email-Konto, bei mir administrator@solarsystem.local
- Externes Email-Konto, bei mir test@traicon.net
Prüfen Sie sowohl den Versand als auch den Empfang der mails.
Externer Mailverkehr mit Thunderbird
Starten Sie auf einem anderen PC Thunderbird (oder welches email-Programm Sie bevorzugen) und legen Sie ein neues Konto mit folgenden Daten an:
E-Mail-Adresse | Ihre normale email-Adresse |
Passwort | Passwort des Linux-Accounts |
Posteingangs-Server (IMAP) | Server-Name oder IP, bei mir 192.168.100.20 |
Port | 143 |
SSL | STARTTLS |
Authentifizierung | Passwort, normal |
Postausgangs-Server (SNMP) | Server-Name oder IP, bei mir 192.168.100.20 |
Port | 25 |
SSL | STARTTLS |
Authentifizierung | Passwort, normal |
Benutzername | Linux-Account |
Testen Sie auch hier, ob der lokale und externe Versand funktionieren. Schicken Sie auch von extern eine email an den Fetchmail-Account. Kommt diese mail im Thunderbird an?
Fahren Sie nach erfolgreichen Tests den Server herunter und legen Sie einen Snapshot an.
Die Web-email-App RainLoop
RainLoop ist eine modern gestaltete Email-Web-Applikation.
Die Installation erledigen wir über die Konsole und installieren zuerst das PHP-Paket curl, welches von RainLoop benötigt wird.
root@pluto:~# apt-get install php5-curl
root@pluto:~# mkdir /var/www/rainloop
root@pluto:~# cd /var/www/rainloop/
Kopieren Sie jetzt mit WinSCP die ausgepackten Quelldateien von RainLoop in das Verzeichnis /var/www/rainloop.
Wechseln Sie zurück auf die Konsole und ändern Sie die Rechte von Dateien und Ordnern. Starten Sie anschließend Apache neu:
root@pluto:/var/www/rainloop# find . -type d -exec chmod 755 {} \;
root@pluto:/var/www/rainloop# find . -type f -exec chmod 644 {} \;
root@pluto:/var/www/rainloop# chown -R www-data:www-data .
root@pluto:/var/www/rainloop# systemctl restart apache2
Jetzt können Sie die Admin-Oberfläche unter http://192.168.100.20/rainloop/?admin aufrufen.
Der Benutzername lautet admin, das Passwort lautet 12345
Nach dem Ändern des Passwortes legen Sie als erstes eine neue Domain mit folgenden Daten an:
Name | solarsystem |
IMAP | |
Server | localost |
Port | 993 |
Secure | SSL/TLS |
Use short login | yes |
SMTP | |
Server | localost |
Port | 465 |
Secure | SSL/TLS |
Use short login | yes |
Unter "General" können Sie Sprache auf Deutsch umstellen, unter "Anmeldung" sollten Sie Ihre Domain angeben, bei mir also "solarsystem.local".
Melden Sie sich dann von der Verwaltungsoberfläche ab.
Test und Snapshot
Melden Sie sich als normaler Benutzer unter dieser Adresse an: http://192.168.100.20/rainloop
Testen Sie, ob der Versand an interne und externe Mail-Adressen funktioniert und ob eingehende mails angezeigt werden.
Fahren Sie den Rechner dann herunter und legen Sie einen Snapshot an.
Test des mail-Systems
Um den mail-Server zu überprüfen, führen wir folgende Tests durch:
Lokaler Mailtransfer über Webmin
Bei den Postfix-Einstellungen findet sich auch der Bereich "User Mailboxes". Wählen Sie hier den Benutzer aus, mit dem Sie die Tests durchführen wollen.
Über den Knopf "Compose" können Sie eine email erstellen und versenden. Machen Sie das einmal für folgende Konten:
- Lokales Email-Konto, bei mir administrator@solarsystem.local
- Externes Email-Konto, bei mir test@traicon.net
Prüfen Sie sowohl den Versand als auch den Empfang der mails.
Externer Mailverkehr mit Thunderbird
Starten Sie auf einem anderen PC Thunderbird (oder welches email-Programm Sie bevorzugen) und legen Sie ein neues Konto mit folgenden Daten an:
E-Mail-Adresse | Ihre normale email-Adresse |
Passwort | Passwort des Linux-Accounts |
Posteingangs-Server (IMAP) | Server-Name oder IP, bei mir 192.168.100.20 |
Port | 143 |
SSL | STARTTLS |
Authentifizierung | Passwort, normal |
Postausgangs-Server (SNMP) | Server-Name oder IP, bei mir 192.168.100.20 |
Port | 25 |
SSL | STARTTLS |
Authentifizierung | Passwort, normal |
Benutzername | Linux-Account |
Testen Sie auch hier, ob der lokale und externe Versand funktionieren. Schicken Sie auch von extern eine email an den Fetchmail-Account. Kommt diese mail im Thunderbird an?
Fahren Sie nach erfolgreichen Tests den Server herunter und legen Sie einen Snapshot an.
Die Web-email-App RainLoop
RainLoop ist eine modern gestaltete Email-Web-Applikation.
Installation von RainLoop
Die Installation erledigen wir über die Konsole und installieren zuerst das PHP-Paket curl, welches von RainLoop benötigt wird.
root@pluto:~# apt-get install php5-curl
root@pluto:~# mkdir /var/www/rainloop
root@pluto:~# cd /var/www/rainloop/
Kopieren Sie jetzt mit WinSCP die ausgepackten Quelldateien von RainLoop in das Verzeichnis /var/www/rainloop.
Wechseln Sie zurück auf die Konsole und ändern Sie die Rechte von Dateien und Ordnern. Starten Sie anschließend Apache neu:
root@pluto:/var/www/rainloop# find . -type d -exec chmod 755 {} \;
root@pluto:/var/www/rainloop# find . -type f -exec chmod 644 {} \;
root@pluto:/var/www/rainloop# chown -R www-data:www-data .
root@pluto:/var/www/rainloop# systemctl restart apache2
Konfiguration von RainLoop
Jetzt können Sie die Admin-Oberfläche unter http://192.168.100.20/rainloop/?admin aufrufen.
Der Benutzername lautet admin, das Passwort lautet 12345
Nach dem Ändern des Passwortes wechseln Sie in den Bereich "Domains". Die dort bereits vorhandenen Domains mit google oder yahoo können Sie direkt löschen. Legen Sie nun eine neue Domain mit folgenden Daten an:
Name | solarsystem.local |
IMAP | |
Server | localost |
Port | 993 |
Secure | SSL/TLS |
Use short login | yes |
SMTP | |
Server | localost |
Port | 465 |
Secure | SSL/TLS |
Use short login | yes |
Unter "General" können Sie Sprache auf Deutsch umstellen, unter "Anmeldung" sollten Sie Ihre Domain angeben, bei mir also "solarsystem.local".
Melden Sie sich dann von der Verwaltungsoberfläche ab.
Test und Snapshot
Melden Sie sich als normaler Benutzer unter dieser Adresse an: http://192.168.100.20/rainloop
Testen Sie, ob der Versand an interne und externe Mail-Adressen funktioniert und ob eingehende mails angezeigt werden.
Fahren Sie den Rechner dann herunter und legen Sie einen Snapshot an.
Video zum Mailserver
Und so geht's weiter
Im nächsten Teil dieser Reihe beschreibe ich die Installation des Windows-Servers Sol, der sich um primär um die Dateiablage kümmert.
Nebenbei erledigt er auch diverse Backups, überwacht die USV und den Internetzugang und, nuja, lesen Sie selbst :-)
Einen Kommentar schreiben
Ihr Kommentar wird erst nach einer Überprüfung freigeschaltet.