Sie sind hier:

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:

  1. Installation des MTA Postfix
  2. Installation des IMAP-Servers Dovecot
  3. Installation des Fetchmail-Dienstes
  4. 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.

# Allgemeines
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:

smtps inet n - - - - smtpd
-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:

pwcheck_method: saslauthd
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 :-)

« Das perfekte SoHo-Netzwerk 3 - Der Linux-Server Das perfekte SoHo-Netzwerk 5 - Der Windows-Server »

Einen Kommentar schreiben

Ihr Kommentar wird erst nach einer Überprüfung freigeschaltet.

Bitte rechnen Sie 1 plus 5.