Einrichten eines Postfix Mail Servers mit Dovecot und Squirrelmail auf Ubuntu 16.04

Bei diesem Text handelt es sich um eine maschinell erstellte Übersetzung. Eine überarbeitete Version ist in Planung.

Einführung

Erfahren Sie, wie Sie einen Mailserver auf einem Cloud Server mit Ubuntu 16.04 einrichten. In diesem Tutorial werden Postfix als SMTP-Server, Dovecot für POP/IMAP-Funktionalität und Squirrelmail als Webmail-Programm für Benutzer zum Überprüfen und Empfangen von E-Mails über einen Webbrowser vorgestellt.

Das Tutorial führt Sie auch durch den Prozess der Erstellung und Verwendung eines selbstsignierten SSL-Zertifikats zur Sicherung ein- und ausgehender E-Mail-Verbindungen.

Anforderungen

  • Ein Cloud Server mit Ubuntu 16.04.
  • Ein gültiger Domänenname, der auf den Server zeigt.

Firewall-Zugang

Sie müssen Ihre Firewall(s) so einstellen, dass sie den Zugriff auf die folgenden Ports ermöglichen:

  • SMTP: 25
  • POP3: 110
  • IMAP: 143
  • SMTP Sicherheit: 465
  • MSA: 587
  • IMAP Sicherheit: 993
  • POP3 Sicherheit: 995

Standardmäßig verweigert die Firewall Cloud Panel den Zugriff auf alle außer den am häufigsten verwendeten Ports. Anweisungen zum Zulassen von Portzugängen, finden Sie in unserem Artikel "Erstellen eines Cloud Panel Firewall".

Postfix installieren

Um Postfix zu installieren, aktualisieren Sie zuerst Ihre Pakete:

sudo apt-get update

Dann installieren Sie Postfix:

sudo apt-get install postfix

Postfix ist auf den meisten Ubuntu 16.04-Systemen standardmäßig installiert, so dass dieser Befehl höchstwahrscheinlich mit der Meldung endet, dass postfix bereits die neueste Version (3.1.0-3) ist....

Wenn Postfix mit einer Installation fortfahren soll, übernehmen Sie einfach alle Standardwerte bei jeder Eingabeaufforderung, um den Vorgang abzuschließen.

Postfix konfigurieren

Nachdem die Installation abgeschlossen ist, führen Sie den Befehl zur Konfiguration von Postfix aus:

sudo dpkg-reconfigure postfix

Geben Sie bei der Eingabeaufforderung die folgenden Werte ein und ersetzen Sie example.com durch Ihren eigenen Domainnamen. Verwenden Sie die Pfeiltasten nach oben und unten, um sich nach oben und unten zu bewegen, um Antworten hervorzuheben, und Enter, um Ihre Antwort auszuwählen.

Wählen Sie OK, um fortzufahren.

Wählen Sie Internetsite.

System-Mail-Name: example.com

Wurzel- und Postmaster-Mail-Empfänger: root

Andere Ziele für Mail: example.com, localhost.example.com, localhost.example.com, localhost

Synchrone Updates in der Mailwarteschlange erzwingen: Nein

Lokale Netzwerke: 127.0.0.0/8

Procmail für die lokale Zustellung verwenden?: Nein

Begrenzung der Postfachgröße (Bytes): 0

Lokales Adresserweiterungszeichen: +

Zu verwendende Internet-Protokolle: alle

Nachdem die erste Postfix-Konfiguration durchgeführt wurde, können Sie die Postfix-Einstellungen mit dem Befehl ändern:

sudo postconf -e '[new setting]'

Erstellen eines SSL-Zertifikats

Wir werden ein selbstsigniertes SSL-Zertifikat erstellen, um ein- und ausgehende E-Mail-Verbindungen zu schützen:

sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout mailserver.key -out mailserver.crt -nodes -days 365

sudo openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

Beantworten Sie die Fragen bei der Eingabeaufforderung, oder drücken Sie einfach[Enter], um eine Antwort leer zu lassen. Dieser Befehl erstellt zwei Dateien: mailserver.key und mailserver.crt.

Erstellen Sie einen Ordner für die SSL-Zertifikatsdateien:

sudo mkdir /etc/postfix/ssl

Verschieben Sie dann die Dateien in diesen Ordner:

sudo mv mailserver.key /etc/postfix/ssl
sudo mv mailserver.crt /etc/postfix/ssl
sudo mv cakey.pem /etc/postfix/ssl
sudo mv cacert.pem /etc/postfix/ssl

SMTP-AUTH. einrichten

SMTP AUTH ist eine grundlegende Methode zur Sicherung Ihres Mail-Servers. Wir empfehlen dringend die Verwendung von SMTP AUTH auf allen Mail-Servern.

Verwenden Sie zunächst die folgenden Befehle, um Postfix für die Verwendung von SMTP AUTH:

sudo postconf -e 'smtpd_sasl_local_domain ='
sudo postconf -e 'smtpd_sasl_auth_enable = yes'
sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
sudo postconf -e 'broken_sasl_auth_clients = yes'
sudo postconf -e 'smtpd_recipient_restrictions =  permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
sudo postconf -e 'inet_interfaces = all'
sudo postconf -e 'smtp_tls_security_level = may'
sudo postconf -e 'smtpd_tls_security_level = may'
sudo postconf -e 'smtpd_tls_auth_only = no'
sudo postconf -e 'smtp_tls_note_starttls_offer = yes'
sudo postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/mailserver.key'
sudo postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/mailserver.crt'
sudo postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem'
sudo postconf -e 'smtpd_tls_loglevel = 1'
sudo postconf -e 'smtpd_tls_received_header = yes'
sudo postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
sudo postconf -e 'tls_random_source = dev:/dev/urandom'

Ersetzen Sie example.com durch Ihren eigenen Domainnamen:

sudo postconf -e 'myhostname = example.com' 

Erstellen Sie anschließend die Datei /etc/postfix/sasl/smtpd.conf und öffnen Sie sie zur Bearbeitung:

sudo nano /etc/postfix/sasl/smtpd.conf

Füge den folgenden Inhalt hinzu:

pwcheck_method: saslauthd
mech_list: plain login

Nachdem Sie die Konfiguration von Postfix abgeschlossen haben, starten Sie den Postfix-Daemon mit dem Befehl neu:

sudo systemctl restart postfix

Install SASL

Postfix verwendet SASL, um die Authentifizierung mit SMTP AUTH durchzuführen. Nachdem Postfix nun für die Verwendung von SMTP AUTH konfiguriert wurde, installieren Sie SASL mit dem Befehl:

sudo apt-get install libsasl2-2 sasl2-bin libsasl2-modules

Nachdem die Installation abgeschlossen ist, bearbeiten Sie /etc/default/saslauthd:

sudo nano /etc/default/saslauthd

Scrollen Sie nach unten zur Zeile:

# Should saslauthd run automatically on startup? (default: no)
START=no

Ändern Sie START auf ja:

# Should saslauthd run automatically on startup? (default: no)
START=yes

Ändern Sie START auf ja: Unterhalb dieser Zeile fügen Sie die folgenden drei Zeilen hinzu:

PWDIR="/var/spool/postfix/var/run/saslauthd"
PARAMS="-m ${PWDIR}"
PIDFILE="${PWDIR}/saslauthd.pid"

Scrollen Sie nach unten zum Ende der Datei bis zur Zeile:

OPTIONS="-c -m /var/run/saslauthd"

Ändern Sie die letzte Zeile, um zu lesen:

OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"

Speichern und beenden Sie die Datei.

Führen Sie anschließend den folgenden Befehl aus, um den dpkg-Status zu aktualisieren:

sudo dpkg-statoverride --force --update --add root sasl 755 /var/spool/postfix/var/run/saslauthd

Hinweis: Wenn Sie eine Fehlermeldung erhalten, dass /var/spool/postfix/var/run/saslauthd nicht existiert, ignorieren Sie diese. Dieses Verzeichnis wird beim Start des SASL-Daemons erstellt.

Erstellen Sie einen Symlink für die Konfigurationsdatei:

sudo ln -s /etc/default/saslauthd /etc/saslauthd

Und schließlich starten Sie den SASL-Daemon:

sudo /etc/init.d/saslauthd start

Postfix mit Telnet testen

Um Postfix zu testen, werden wir uns mit dem Server verbinden und ein einfaches "Handshake-Protokoll" durchführen, genau wie ein E-Mail-Programm.

Installieren Sie zunächst Telnet:

sudo apt-get install telnet

Sobald Telnet installiert ist, verwenden Sie es, um eine Verbindung zum SMTP-Port des Servers herzustellen:

telnet localhost 25

Der Server antwortet mit:

[user@localhost ~]$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 localhost.localdomain ESMTP Postfix (Ubuntu)

Dies zeigt an, dass Postfix läuft.

Als nächstes begrüßen Sie den Server:

ehlo localhost

Der Server antwortet mit:

250-localhost.localdomain
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

Die folgenden Zeilen zeigen an, dass SMTP AUTH funktioniert:

250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN

Beginnen Sie, indem Sie dem Server mitteilen, von wem die Mail gesendet wird:

mail from: some-person@some-other-server.com

Dann teilen Sie dem Server mit, an wen Sie die E-Mail senden, und ersetzen Sie user@example.com durch Ihren eigenen Benutzernamen und Domainnamen:

rcpt to: root@example.com

Füge nun eine einfache Nachricht hinzu. Teilen Sie dem Server mit, dass Ihr Nachrichtentext hier beginnt:

data 

Geben Sie die Nachricht ein und folgen Sie ihr mit[Enter], einem Punkt . und[Enter]:

hello world 
.

Schließen Sie die Sitzung, indem Sie quit eingeben und Enter drücken.

Wenn Sie erfolgreich sind, erscheint Ihre Testnachricht in /root/Maildir/new. Sie können diese Nachricht mit dem Befehl anzeigen:

ll /root/Maildir/new

Um die Nachricht zu lesen, kopieren und fügen Sie den Namen der Datei ein (es wird ein langer Name wie 1482257384.Vfc00I60512M258205.localhost.localdomain sein) und lesen Sie sie mit mehr:

sudo more  1482257384.Vfc00I60512M258205.localhost.localdomain

Sie sehen die E-Mail-Nachricht zusammen mit allen Kopfzeileninformationen:

From some-person@some-other-server.com  Thu Dec  8 19:43:10 2016
Return-Path: <some-person@some-other-server.com>
X-Original-To: root@example.com
Delivered-To: root@example.com
Received: from localhost (localhost [127.0.0.1])
        by mail.example.com (Postfix) with SMTP id 6CFD589184
        for <root@example.com>; Thu,  8 Dec 2016 19:42:33 +0000 (UTC)
Message-Id: <20161208194238.6CFD589184@mail.oxnardindustries.com>
Date: Thu,  8 Dec 2016 19:42:33 +0000 (UTC)
From: some-person@some-other-server.com

hello world

Installation und Konfiguration von Dovecot

Dovecot ist der Standard-POP3/IMAP-Server für Ubuntu und wird standardmäßig auf den meisten Ubuntu 16.04-Servern installiert. Aktualisieren Sie Dovecot und installieren Sie das imapd-Paket mit dem Befehl:

sudo apt-get install dovecot-core dovecot-imapd

Sie können den Status von Dovecot mit dem Befehl überprüfen:

sudo systemctl status dovecot

Wenn Dovecot läuft, sehen Sie eine Ausgabe ähnlich wie:

[user@mail dovecot]$ sudo systemctl status dovecot -l
● dovecot.service - Dovecot IMAP/POP3 email server
   Loaded: loaded (/usr/lib/systemd/system/dovecot.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2016-12-08 21:04:48 UTC; 3s ago
  Process: 8985 ExecStartPre=/usr/libexec/dovecot/prestartscript (code=exited, status=0/SUCCESS)
 Main PID: 8989 (dovecot)
   CGroup: /system.slice/dovecot.service
           ├─8989 /usr/sbin/dovecot -F
           ├─8992 dovecot/anvil
           ├─8993 dovecot/log
           └─8995 dovecot/config

Dec 08 21:04:48 example.com systemd[1]: Starting Dovecot IMAP/POP3 email server...
Dec 08 21:04:48 example.com systemd[1]: Started Dovecot IMAP/POP3 email server.
Dec 08 21:04:48 example.com dovecot[8989]: master: Dovecot v2.2.10 starting up for imap (core dumps disabled)

Beachten Sie die Zeile, die lautet:

Active: active (running) since Thu 2016-12-08 21:04:48 UTC; 3s ago

Das bedeutet, dass Dovecot installiert ist und läuft.

Legen Sie die Berechtigungen für das Verzeichnis /var/mail fest, so dass Dovecot Ordner für neue Benutzer erstellen kann:

sudo chmod 777 /var/mail

Installation und Konfiguration von Squirrelmail

Installieren Sie Squirrelmail mit dem Befehl:

sudo apt-get install squirrelmail

Sie müssen Ihre Apache-Konfigurationen bearbeiten, um einen Alias für Squirrelmail hinzuzufügen. Diese Direktive muss in den VirtualHost-Befehlsblock in der Hauptkonfigurationsdatei des Apache der Website eingefügt werden.

Diese Apache-Konfigurationsdatei ist normalerweise /etc/apache2/sites-available/example.com.conf auf Ubuntu.

Hinweis: Der Speicherort und Dateiname der Apache-Konfigurationsdatei einer Website kann variieren.

Bearbeiten Sie diese Datei mit einem Editor Ihrer Wahl, z.B. mit dem Befehl:

sudo nano /etc/apache2/sites-available/example.com.conf

Scrollen Sie durch die Datei, bis Sie den VirtualHost-Befehlsblock finden, der so aussehen wird:

<VirtualHost *:80>
ServerName example.com
    <Directory "/var/www/example.com/html">
    AllowOverride All
    </Directory>
</VirtualHost>

Fügen Sie Folgendes zum VirtualHost-Befehlsblock hinzu:

   Alias /squirrelmail /usr/share/squirrelmail

Stellen Sie sicher, dass diese Zeilen außerhalb von Verzeichnisbefehlsblöcken platziert werden. Zum Beispiel:

<VirtualHost *:80>
ServerName example.com

Alias /squirrelmail /usr/share/squirrelmail

    <Directory "/var/www/example.com/html">
    AllowOverride All
    </Directory>
</VirtualHost>

Speichern und beenden Sie die Datei, und starten Sie dann den Apache neu, damit die Änderungen wirksam werden:

sudo systemctl restart apache2

Nach dem Neustart des Apache können Sie Squirrelmail testen, indem Sie die URL http://example.com/squirrelmail  in einem Browser besuchen.