Bitte lies Dir den Disclaimer durch, bevor Du eine Anleitung umsetzt...

Haftungsausschluss / Disclaimer

Frankensteins Mailserver – 3 – Postfix Admin

Im dritten Teil installieren wir den Web-Dienst „Postfix Admin“. Er wird es uns ermöglichen, Domains, Postfächer und Weiterleitungen für die Verwendung innerhalb unserer Mail-Dienste komfortabel anzulegen…

In Teil 1 habe ich geschrieben, wir könnten diese Daten ja auch selber per MySQL Kommandos – oder nicht ganz so spartanisch über Adminer – in die Datenbank eintragen.
Ja.
Sicher.
Könnten wir….
Aber warum darf es nicht EIN MAL, nur ein einziges Mal, ein wenig komfortabler sein?!

Wo steht geschrieben, dass sich Admins immer und immer wieder mit der Kommandozeile rumärgern müssen?
Nix da! Ich will „Klicki Buntie!“ Und zwar sofort :)

Genug des Rants. Wir werden im Verlauf des Tutorials noch jede Menge Kommandozeile zu sehen bekommen. Und da es eine elegante Lösung für die Benutzerverwaltung gibt, werden wir sie auch nutzen. Sie heißt „Postfix Admin“.

(Die Einrichtung läuft in weiten Teilen wie die von Adminer. Also werde ich hier etwas schneller zur Sache kommen und nicht jeden Befehl oder Config beschreiben. Außerdem brauchen wir für den Webserver das Wildcard-Zertifikat. Dieses bitte auch erzeugen, falls noch nicht geschehen…)

Und schon geht’s los!

Datenbank für Mail-Verwaltung anlegen

In dieser Datenbank werden alle virtuellen Benutzer, deren Passwörter, Domains, Postfächer und Weiterleitungen gespeichert. NICHT die Mails! Die landen ja in „/var/vmail/x/y“.

Damit wir das auch mal gemacht haben, legen wir zumindest die Datenbank und den Datenbank-Benutzer von Hand mit der Kommandozeile an :)
postfixadmin-datenbank-anlegen
mysql -p
### [MariaDB-root-PW eingeben]
Damit loggen wir uns in die Datenbank ein. Der Prompt verändert seine Form und schreibt nun „MariaDB“. Jetzt müssen wir „SQL“ sprechen…

Jeder SQL-Befehl endet mit einem Semikolon, dem Strichpunkt. Ansonsten bekommen wir einen Pfeil, was wir noch eingeben möchten. Hier dann den Strichpunkt und „Enter“ nachreichen.

In unserer Shell werden Befehle kommentarlos abgearbeitet und mit einer neuen Zeile begonnen, wenn wir keinen Fehler gemacht haben. Im Gegensatz dazu wird jeder Befehl von MariaDB quittiert und eine Ausführungszeit angegeben. Auch mal angenehm. Sollte sich die Shell eine Scheibe abschneiden :)

CREATE DATABASE mailserver;
Das veranlasst MariaDB, eine Datenbank mit dem Namen „mailserver“ anzulegen.

GRANT ALL PRIVILEGES ON mailserver.* TO 'mailuser'@'localhost' IDENTIFIED BY 'Fog7FF.pI]sXb=Ul|Gi!.h8Sy0v^!Dz,';
Das hier ist ein Kombi-Befehl, der vier Sachen auf einmal macht:
– er gewährt „alle Privilegien“ für alle Tabellen der Datenbank „mailserver“ dem folgenden Nutzer,
– er legt den Benutzer „mailuser“ auf dem Host „localhost“ an,
– er vergibt „mailuser“ das Passwort „Fog7FF.pI]sXb=Ul|Gi!.h8Sy0v^!Dz,“
– er beschränkt die Rechte von „mailuser“ auf die Datenbank „mailserver“.* – also alle Tabellen innerhalb der Datenbank „mailserver“.

FLUSH PRIVILEGES;
Dieser Befehl veranlasst MariaDB, die globalen Rechte neu einzulesen. Damit werden die Änderungen des vorherigen Befehls an die Datenbank übergeben und ab diesem Moment wirksam.
Generell: Ändern wir etwas an den Rechten eines Benutzers oder legen einen solchen neu an, sollten wir immer gleich die Rechte-DB neu einlesen.

exit
OK, ich hab gelogen. Der „exit“ Befehl braucht keinen Strichpunkt :)
MariaDB verabschiedet sich mit einem „BYE“ und wir landen wieder auf unserer gewohnten Shell.

Damit hätten wir die Datenbank und ihren -Benutzer angelegt. Sie ist momentan leer.

Dieses Vorgehen zum Anlegen von Datenbanken und -Benutzern funktioniert auch für z.B. WordPress oder Piwik. Wenn man das mal über die Eingabezeile gewohnt ist, ist man eigentlich fast schneller, als über Adminer. Wobei der natürlich komfortabler wäre ;)

Postfix Admin laden, vorbereiten und Webserver einrichten

Postfixadmin laden
wget http://sourceforge.net/projects/postfixadmin/files/latest/download?source=files

Postfix Admin in „etwas lesbarere Form“ wandeln
mv download?source=files postfixadmin.tar.gz

Das Archiv postfixadmin.tar.gz entpacken
tar xvfz postfixadmin.tar.gz

Erstellen des Zielverzeichnisses „postfixadmin“ unterhalb von „/var/www“
mkdir /var/www/postfixadmin

Postfix Admin in das Zielverzeichnis verschieben. Den Namen vom Quellverzeichnis hast Du beim Entpacken gesehen :) Hier ist es die Version 2.93
mv postfixadmin-2.93/* /var/www/postfixadmin

Das Verzeichnis löschen, in welches das Archiv entpackt wurde
rmdir postfixadmin-2.93

Die Rechte eines Unterverzeichnisses von postfixadmin an den Webserver übergeben. Durch diese Änderung kann der dann die darin enthaltenen Dateien beschreiben, anlegen und löschen.
chown -R www-data:www-data /var/www/postfixadmin/templates_c

Erstellen der „Benutzer/Passwort“-Datei, um Postfix Admin zusätzlich mit einem vorgelagerten Passwort abzusichern.
htpasswd -cm /var/www/postfixadmin/.htpass user
### [PW 2x per Copy/Paste einfügen]

Die NginX-Config-Datei für Postfix Admin anlegen
nano /etc/nginx/sites-available/postfixadmin.conf
### HTTP sofort auf HTTPS umleiten
server {
listen 80;
server_name pfa.bla.de;
rewrite ^(.*) https://$server_name$1 permanent;
}

### HTTPS Servervariablen
server {
include ssl-base.conf;
server_name pfa.bla.de;
root /var/www/postfixadmin;
auth_basic „Admin-Bereich – Zugriff nur mit Passwort!“;
auth_basic_user_file /var/www/postfixadmin/.htpass;
index index.php;
access_log /var/log/nginx/postfixadmin-access.log;
error_log /var/log/nginx/postfixadmin-error.log;
include nein.conf;
include hhvm.conf;
ssl_certificate /root/CA/certs/bla.de-vhost.crt;
ssl_certificate_key /root/CA/private/bla.de-vhost.key;
}

Die Config-Datei ‚anschalten‘
ln -s /etc/nginx/sites-available/postfixadmin.conf /etc/nginx/sites-enabled

NginX Server neu starten, damit die neue Config wirksam wird
service nginx restart

OK, damit hätten wir den Webserver-Seitigen Teil erledigt…

Postfix Admin konfigurieren

Die Konfiguration von Postfix Admin ist ein wenig – nun – seltsam. Sie läuft über die zweimalige Anpassung einer Config-Datei ab. Machen wir mal die Änderungen von Schritt 1:

nano /var/www/postfixadmin/config.inc.php

Nachfolgend setzen wir die Variablen ‚configured‘ auf ‚true‘ und ‚default_language‘ auf ‚de‘. Am Setup-PW nichts ändern, das machen wir in Schritt 2.
Wir passen den Datenbank-Teil mit unseren Werten an. Also Name des Benutzers, Name der Datenbank und Passwort des Datenbankbenutzers.
Wer möchte, kann die Defaults für Aliases, Mailboxes und Quota auf „0“ stellen. Da nur wir Zugriff auf das Interface bekommen, brauchen wir keine Limits.
Ebenfalls optional ist die Anpassung des „Footer-Links“. Hier stellen wir die Adresse von unserem Postfix Admin ein.

postfixadmin-config-01postfixadmin-config-02

 

postfixadmin-config-03postfixadmin-config-04

$CONF[‚configured‘] = true;
$CONF[‚default_language‘] = ‚de‘;

$CONF[‚database_type‘] = ‚mysqli‘;
$CONF[‚database_host‘] = ‚localhost‘;
$CONF[‚database_user‘] = ‚mailuser‘;
$CONF[‚database_password‘] = ‚Fog7FF.pI]sXb=Ul|Gi!.h8Sy0v^!Dz,‘;
$CONF[‚database_name‘] = ‚mailserver‘;

$CONF[‚aliases‘] = ‚0‘;
$CONF[‚mailboxes‘] = ‚0‘;
$CONF[‚maxquota‘] = ‚0‘;

$CONF[’show_footer_text‘] = ‚YES‘;
$CONF[‚footer_text‘] = ‚Back to pfa.bla.de‘;
$CONF[‚footer_link‘] = ‚https://pfa.bla.de‘;

Jetzt speichern wir die Datei und öffnen im Browser ‚https://pfa.bla.de/setup.php‘. Es folgen einige Bildschirmausgaben, bei den geprüft wird, ob die Versionen der installierten Software passen und Zugriff auf die Datenbank hergestellt werden kann. Ist Postfix Admin mit unseren Angaben zufrieden, werden die Tabellen in der Datenbank erstellt und aktualisiert.
postfixadmin-config-05postfixadmin-config-06

Nun folgt Schritt 2 der Konfiguration:
In den unteren beiden Zeilen geben wir unser Setup-PW ein und klicken auf „Generate Passwort Hash“. Das Setup springt auf den nächsten Schirm, der uns den „Hash-Key“ mitteilt. Diese Zeile kopieren wir und öffnen abermals die config.inc.php

nano /var/www/postfixadmin/config.inc.php

postfixadmin-config-07postfixadmin-config-08

Dort löschen wir die Zeile mit dem Setup-PW (oder kommentieren sie aus) und kopieren unsere neue Zeile hinein. Die Datei speichern und zurück zum Browser.

Im Browser geben wir nun das Setup-PW ein und füllen die Werte für unseren Admin-User aus. Haben wir das erledigt, klicken wir auf „Admin hinzufügen“.

postfixadmin-config-09postfixadmin-config-10

Hat alles geklappt, informiert und Postfix Admin, dass der Admin-User angelegt wurde und wir nun mit ihm einloggen können. Dazu klicken wir auf den bereitgestellten Link.
Im Anmelde-Screen kannst Du Dich dann in Postfix Admin einloggen. Probier das gleich mal aus :)

postfixadmin-config-11

Herzlichen Glückwunsch! Du hast den Postfix Admin installiert und eingerichtet :)

Bitte jetzt noch nichts im Interface machen, sondern gleich wieder ausloggen. Wir müssen noch einige Dinge am System einstellen, bevor wir die Postfächer einrichten…

Schnittstellen-Dateien erstellen

Damit unser Mailserver Postfix mit der MySQL-Datenbank „reden“ kann, müssen wir ihm Schnittstellen zur Verfügung stellen.
Da jede Server-Installation anders ist und wir ja die Tabellen und Einträge der Datenbank beliebig benennen dürfen, braucht Postfix für jedes „Ziel“ eine eigene Config-Datei, die quasi als „Übersetzer“ zwischen dem Mailserver und der Datenbank fungiert.

Postfix benötigt zum Beispiel die Informationen über die „Virtuellen Aliase“. Normalerweise liegen die in einer lokalen Datei im Config-Verzeichnis. Wir möchten aber die Lösung mit der MySQL-Datenbank verwenden. Da weiß Postfix natürlich nicht, wo die Informationen in der Datenbank stehen. Also bauen wir eine Config-Datei „mysql_virtual_alias_maps.cf“. Darin schreiben wir die Details hinein, wie Postfix an die Daten kommt. Host, Datenbankname und Datenbankbenutzer nebst Passwort müssen drin stehen, um darüber die Verbindung zu MariaDB herzustellen. Dann folgt die SQL-Abfrage, welche Postfix an die Datenbank absetzt. Zurück liefert MariaDB dann die Informationen, die der Mailserver braucht, um arbeiten zu können.

Das war für mich immer der haarigste Part. SQL ist nicht gerade meine Stärke… Und ein kleiner Fehler in der Datei und Du suchst ewig, warum es nicht klappt. Glücklicherweise liefert der Postfix-Admin ein Script mit, welches diese Config-Dateien für uns erstellt.
Irre praktisch, nicht wahr? Finde ich auch :)

mkdir /etc/postfix/sql
Wir erstellen im Config-Verzeichnis von Postfix ein Verzeichnis „sql“, in welches die neuen Config-Dateien dann verschoben werden.

cd /var/www/postfixadmin/DOCUMENTS/
In diesem Verzeichnis befindet sich das Script zur Erstellung der Config-Dateien.

sh POSTFIX_CONF.txt
Wir führen das Script aus.
Das Script möchte von uns vier Dinge wissen: Unser Datenbank-Host (localhost), Name der Datenbank (mailserver), Name des Datenbankbenutzers (mailuser) und Passwort des Datenbankbenutzers (Fog7FF.pI]sXb=Ul|Gi!.h8Sy0v^!Dz,). Diese Daten bitte eingeben, dann erzeugt uns das Script die Config-Dateien unterhalb von /tmp.

mv /tmp/postfixadmin[TAB]/* /etc/postfix/sql/ ### Diese Zeile nicht kopieren!
Postfix Admin erstellt die Dateien in einem Verzeichnis in /tmp, welches eine zufällige Endung bekommt. Bitte beim Verschiebe-Befehl hinter /tmp/postfixadmin die „Tabulator-Taste“ drücken, dann wird der Verzeichnisname vervollständigt.

less POSTFIX_CONF.txt
Mit diesem Befehl lesen wir den Inhalt der Datei. Sie enthält erhellende Infos über die anstehenden Änderungen an der „main.cf“ von Postfix… Du verlässt „less“ mit der Taste „q“.

Jetzt legen wir per Hand noch eine Config-Datei an, welche Postfix zum Validieren der Absender brauchen wird
nano /etc/postfix/mysql_sender_login_maps.cf
hosts = localhost
user = mailuser
password = Fog7FF.pI]sXb=Ul|Gi!.h8Sy0v^!Dz,
dbname = mailserver
query = SELECT username AS allowedUser FROM mailbox WHERE username=’%s‘ AND active = 1 UNION SELECT goto FROM alias WHERE address=’%s‘ AND active = 1
### Die „query“ Anweisung bitte in EINE ZEILE schreiben und nicht umbrechen…

Datei speichern und beenden.

Damit hätten wir dieses längere Kapitel abgeschlossen. Im nächsten Teil konfigurieren wir unseren Mailserver – Postfix.

Navigation

< Vorheriger Artikel | Nächster Artikel >
E-Mail Begleittext Download (Rechtsklick – „Ziel speichern unter…“)

Anzeige *

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.