Postfix Admin ist eine webbasierte Schnittstelle, mit der Benutzer einen Postfix-basierten E-Mail-Server konfigurieren und verwalten können. Mit Postfix Admin können Sie mehrere virtuelle Domänen, Benutzer und Aliase erstellen und verwalten.
Dies ist der erste Beitrag in der Reihe zum Einrichten und Konfigurieren eines Mailservers, der das Erstellen der erforderlichen DNS-Einträge behandelt und erklärt, wie Postfix Admin, Nginx mit kostenlosem Let’s Encrypt-Zertifikat, PHP und MySQL installiert und konfiguriert werden.
Dieses Tutorial wurde für Ubuntu 16.04 geschrieben, jedoch sollten die gleichen Schritte mit kleinen Änderungen auf jeder neueren Version von Ubuntu funktionieren.
Voraussetzungen #
Als Voraussetzungen, um dieser Serie zu folgen, benötigen Sie:
- Ubuntu 16.04-Server. Der Server-Hostname muss ein FQDN sein. In dieser Serie verwenden wir
mail.linuxize.com
. - Benutzer mit sudo-Berechtigungen.
DNS-Einstellungen #
Sie müssen die folgenden DNS-Einträge einrichten, damit Ihr E-Mail-System funktioniert:
- Ein Datensatz, um den FQDN (Hostname) Ihres Systems auf die IPv4-Adresse Ihres Mailservers zu verweisen.
mail.linuxize.com. 3600 IN A 23.45.67.89
Der FQDN besteht aus zwei Teilen, dem Hostnamen und dem Domänennamen.- MX-Eintrag, um anzugeben, welcher Mailserver für die Annahme von E-Mail-Nachrichten im Namen der Domain eines Empfängers verantwortlich ist. In unserem Fall möchten wir, dass alle E-Mails an
@linuxize.com
gesendet werden E-Mail-Adressen, die vonmail.linuxize.com
akzeptiert werden sollen Mailserver.
linuxize.com. 3600 IN MX 0 mail.linuxize.com.
- SPF-Eintrag, der verwendet wird, um zu überprüfen, welche Mailserver berechtigt sind, E-Mails im Namen einer bestimmten Domain zu senden. Im folgenden Beispiel genehmigen wir die Domain-Mailserver (mx) und wenn die SPF-Prüfung fehlschlägt, ist das Ergebnis ein Soft Failure (~all):
linuxize.com. 3600 IN TXT "v=spf1 mx ~all"
Natürlich müssen Sie den Domainnamen und die IP-Adresse durch Ihren echten Domainnamen und die IP-Adresse Ihres Mailservers ersetzen. Reverse-DNS (PTR) #
Reverse DNS (PTR) ist eine Zuordnung von IP-Adressen zu Domänennamen, das genaue Gegenteil von DNS, das Domänennamen auf IP-Adressen abbildet.
Die meisten E-Mail-Server führen eine umgekehrte DNS-Suche an der IP-Adresse durch, die versucht, sich mit ihnen zu verbinden, und akzeptieren möglicherweise keine E-Mails vom Server, wenn der PTR-Eintrag nicht festgelegt ist.
In den meisten Fällen können PTR-Einträge über die Weboberfläche Ihres Hosting-Providers eingestellt werden oder indem Sie sich an das Support-Team wenden und es bitten, einen korrekten PTR-Eintrag für Sie einzurichten.
Sie können den dig-Befehl verwenden, um den Reverse-DNS einer bestimmten IP-Adresse herauszufinden.
dig -x 23.45.67.89
23.45.67.89.in-addr.arpa domain name pointer mail.linuxize.com.
Erstellen Sie einen Systembenutzer #
Da wir einen Mailserver mit virtuellen Benutzern konfigurieren, benötigen wir einen Systembenutzer, der Eigentümer aller Postfächer ist und von den virtuellen Benutzern verwendet wird, um auf ihre E-Mail-Nachrichten auf dem Server zuzugreifen.
Der folgende Befehl erstellt eine neue Gruppe und einen neuen Benutzer mit dem Namen vmail
und setzen Sie das Home-Verzeichnis des Benutzers auf /var/mail/vmail
:
sudo groupadd -g 5000 vmail
sudo useradd -u 5000 -g vmail -s /usr/sbin/nologin -d /var/mail/vmail -m vmail
Alle virtuellen Postfächer werden in /var/mail/vmail
gespeichert Verzeichnis.
Installieren Sie Nginx PHP und MySQL #
Postfix Admin ist eine PHP-basierte Anwendung. Um auf die Weboberfläche von PostfixAdmin zugreifen zu können, müssen wir einen Webserver und PHP installieren.
Führen Sie den folgenden Befehl aus, um Nginx, PHP und alle erforderlichen PHP-Module zu installieren:
sudo apt install nginx mysql-server php7.0-fpm php7.0-cli php7.0-imap php7.0-json php7.0-mysql php7.0-opcache php7.0-mbstring php7.0-readline
Sie werden während der Installation aufgefordert, ein MySQL-Root-Passwort zu erstellen.
Laden Sie Postfix Admin # herunter und konfigurieren Sie es
Zum Zeitpunkt des Schreibens 3.1
ist die neueste stabile Version von Postfix Admin.
Laden Sie das Postfix-Admin-Archiv mit dem folgenden wget-Befehl herunter:
VERSION=3.1
wget -q https://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-${VERSION}/postfixadmin-${VERSION}.tar.gz
Sobald der Download abgeschlossen ist, extrahieren Sie das Archiv:
tar xzf postfixadmin-${VERSION}.tar.gz
Verschieben Sie die Postfix-Admin-Quelldateien nach /var/www
Verzeichnis und erstellen Sie templates_c
Verzeichnis (Smarty-Cache):
sudo mv postfixadmin-${VERSION}/ /var/www/postfixadmin
rm -f postfixadmin-${VERSION}.tar.gz
mkdir /var/www/postfixadmin/templates_c
Sowohl Nginx als auch PHP-FPM laufen unter dem Benutzer www-data
daher müssen wir den Besitz von /var/www/postfixadmin
ändern an diesen Benutzer:
sudo chown -R www-data: /var/www/postfixadmin
Postfix Admin verwendet eine MySQL-Datenbank, um Informationen über Benutzer, Domänen und die Anwendungskonfiguration zu speichern.
Melden Sie sich bei der MySQL-Shell an:
mysql -u root -p
Erstellen Sie mit den folgenden Befehlen einen neuen MySQL-Benutzer und eine neue MySQL-Datenbank:
Vergessen Sie nicht, das Passwort zu ändern (CREATE DATABASE postfixadmin;
GRANT ALL ON postfixadmin.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'P4ssvv0rD';
FLUSH PRIVILEGES;
P4ssvv0rD
) zu etwas Sichererem.
Anstatt die standardmäßige Postfix-Admin-Konfiguration zu bearbeiten, erstellen wir eine neue Datei mit dem Namen config.local.php
wodurch die Standardanwendungseinstellungen überschrieben werden:
Öffnen Sie die Datei mit Ihrer Textdatei:
sudo nano /var/www/postfixadmin/config.local.php
Fügen Sie den folgenden PHP-Code ein:
/var/www/postfixadmin/config.local.php<?php
$CONF['configured'] = true;
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'P4ssvv0rD';
$CONF['database_name'] = 'postfixadmin';
$CONF['default_aliases'] = array (
'abuse' => '[email protected]',
'hostmaster' => '[email protected]',
'postmaster' => '[email protected]',
'webmaster' => '[email protected]'
);
$CONF['fetchmail'] = 'NO';
$CONF['show_footer_text'] = 'NO';
$CONF['quota'] = 'YES';
$CONF['domain_quota'] = 'YES';
$CONF['quota_multiplier'] = '1024000';
$CONF['used_quotas'] = 'YES';
$CONF['new_quota_table'] = 'YES';
$CONF['aliases'] = '0';
$CONF['mailboxes'] = '0';
$CONF['maxquota'] = '0';
$CONF['domain_quota_default'] = '0';
?>
Speichern und schließen Sie die Datei.
Mit der obigen Konfiguration definieren wir den Datenbanktyp und die Anmeldedaten. Außerdem spezifizieren wir die Standardaliase und deaktivieren fetchmail
und Kontingent aktivieren.
Führen Sie als Nächstes den folgenden Befehl aus, um das Schema für die Postfix-Admin-Datenbank zu erstellen:
sudo -u www-data php /var/www/postfixadmin/upgrade.php
Sobald die Datenbank gefüllt ist, können wir fortfahren und unseren ersten PostfixAdmin-Superadmin-Benutzer mit postfixadmin-cli
erstellen Werkzeug.
Dieser Benutzer hat Administratorrechte zum Ändern von Domänen- oder Anwendungseinstellungen.
sudo bash /var/www/postfixadmin/scripts/postfixadmin-cli admin add [email protected] --superadmin 1 --active 1 --password P4ssvv0rD --password2 P4ssvv0rD
Die Ausgabe sollte in etwa so aussehen:
Welcome to Postfixadmin-CLI v0.2
---------------------------------------------------------------
The admin [email protected] has been added!
---------------------------------------------------------------
Vergessen Sie nicht, das Passwort zu ändern (P4ssvv0rD
) für das Superadmin-Konto auf etwas Sichereres. Installieren Sie das kostenlose SSL-Zertifikat von Let’s Encrypt #
Wir werden das SSL-Zertifikat verwenden, um auf unsere Postfix-Admin-Installation zuzugreifen und die Dovecot- und Postfix-SSL/TLS-Verschlüsselung zu aktivieren.
Wir haben ein Tutorial zur Installation eines Let’s Encrypt SSL-Zertifikats. Der wichtigste Punkt hier ist, ein SSL-Zertifikat für Ihren Server-Hostnamen (FQDN) zu generieren, in unserem Fall mail.linuxize.com
.
Nachdem Sie das SSL-Zertifikat generiert haben, indem Sie dem oben verlinkten Tutorial gefolgt sind, bearbeiten Sie Ihren Nginx-Serverblock wie folgt:
/etc/nginx/sites-enabled/mail.linuxize.com.confserver {
listen 80;
server_name mail.linuxize.com;
include snippets/letsencrypt.conf;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name mail.linuxize.com;
root /var/www;
ssl_certificate /etc/letsencrypt/live/mail.linuxize.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mail.linuxize.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/mail.linuxize.com/chain.pem;
include snippets/ssl.conf;
include snippets/letsencrypt.conf;
location / {
try_files $uri $uri/ /index.php;
}
location /postfixadmin {
index index.php;
try_files $uri $uri/ /postfixadmin/index.php;
}
location ~* \.php$ {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {return 404;}
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Laden Sie den Nginx-Dienst neu, damit die Änderungen wirksam werden:
sudo systemctl reload nginx
An diesem Punkt sollten Sie sich unter https://mail.linuxize.com/postfixadmin
bei Ihrer Postfix-Admin-Installation anmelden können , indem Sie den Superadmin-Benutzer verwenden, der zuvor in diesem Tutorial erstellt wurde.