Mail Server · 5 min read · Nov 09, 2025
Virtuelle Benutzer und Domains mit Postfix, Courier und MySQL (Fedora Core 5)
Virtuelle Benutzer und Domains mit Postfix, Courier und MySQL (Fedora Core 5)
Version 1.0
Autor: Falko Timme
Dieses Tutorial ist Copyright (c) 2006 von Falko Timme. Es basiert auf einem Tutorial von Christoph Haas, das Sie unter http://workaround.org finden können. Sie dürfen dieses Tutorial unter der Creative Commons Lizenz 2.5 oder einer späteren Version verwenden.
Dieses Dokument beschreibt, wie man einen Mailserver basierend auf Postfix installiert, der auf virtuellen Benutzern und Domains basiert, d.h. Benutzer und Domains, die sich in einer MySQL-Datenbank befinden. Ich werde auch die Installation und Konfiguration von Courier (Courier-POP3, Courier-IMAP) demonstrieren, sodass Courier gegen dieselbe MySQL-Datenbank authentifizieren kann, die Postfix verwendet.
Der resultierende Postfix-Server ist in der Lage, SMTP-AUTH und TLS sowie Quota zu unterstützen (Quota ist standardmäßig nicht in Postfix integriert, ich werde zeigen, wie man Postfix entsprechend patcht). Passwörter werden in verschlüsselter Form in der Datenbank gespeichert (die meisten Dokumente, die ich gefunden habe, befassten sich mit Klartext-Passwörtern, was ein Sicherheitsrisiko darstellt). Zusätzlich behandelt dieses Tutorial die Installation von Amavisd, SpamAssassin und ClamAV, sodass E-Mails auf Spam und Viren gescannt werden.
Der Vorteil eines solchen “virtuellen” Setups (virtuelle Benutzer und Domains in einer MySQL-Datenbank) ist, dass es viel leistungsfähiger ist als ein Setup, das auf “echten” Systembenutzern basiert. Mit diesem virtuellen Setup kann Ihr Mailserver Tausende von Domains und Benutzern verwalten. Außerdem ist es einfacher zu verwalten, da Sie nur mit der MySQL-Datenbank umgehen müssen, wenn Sie neue Benutzer/Domains hinzufügen oder bestehende bearbeiten. Keine weiteren postmap-Befehle zum Erstellen von db-Dateien, kein erneutes Laden von Postfix usw. Für die Verwaltung der MySQL-Datenbank können Sie webbasierte Tools wie phpMyAdmin verwenden, die ebenfalls in diesem Howto installiert werden. Der dritte Vorteil ist, dass Benutzer eine E-Mail-Adresse als Benutzernamen haben (anstatt eines Benutzernamens + einer E-Mail-Adresse), was einfacher zu verstehen und sich zu merken ist.
Dieses Tutorial basiert auf Fedora Core 5 (i386). Sie sollten bereits ein grundlegendes Fedora-System eingerichtet haben, wie hier beschrieben (für ein x86_64-System, aber das Verfahren für i386-Systeme ist dasselbe): https://www.howtoforge.com/perfect_setup_fedora_core_5 und https://www.howtoforge.com/perfect_setup_fedora_core_5_p2. Außerdem sollten Sie sicherstellen, dass die Firewall deaktiviert ist (zumindest vorerst) und dass SELinux deaktiviert ist (das ist wichtig!), wie auf https://www.howtoforge.com/perfect_setup_fedora_core_5_p3 gezeigt.
Dieses Howto ist als praktische Anleitung gedacht; es behandelt nicht die theoretischen Hintergründe. Diese werden in vielen anderen Dokumenten im Web behandelt.
Dieses Dokument kommt ohne jegliche Gewährleistung! Ich möchte sagen, dass dies nicht der einzige Weg ist, ein solches System einzurichten. Es gibt viele Möglichkeiten, dieses Ziel zu erreichen, aber dies ist der Weg, den ich wähle. Ich gebe keine Garantie, dass dies für Sie funktioniert!
1 /etc/hosts bearbeiten
Unser Hostname in diesem Beispiel ist server1.example.com, und er hat die IP-Adresse 192.168.0.100, also ändern wir /etc/hosts wie folgt:
vi /etc/hosts| # Entfernen Sie nicht die folgende Zeile, oder verschiedene Programme # die Netzwerkfunktionen benötigen, werden fehlschlagen. 127.0.0.1 localhost.localdomain localhost 192.168.0.100 server1.example.com server1 |
2 Ein zusätzliches Repository für Fedora-Pakete konfigurieren
Einige der Pakete, die wir installieren müssen (wie courier-imap), sind nicht in den offiziellen Fedora-Repositories enthalten, also müssen wir ein weiteres Repository zu yum hinzufügen:
rpm -ivh http://www.enlartenment.com/packages/fedora/5/i386/enlartenment-release-1.1-2.fc5.mf.noarch.rpmDanach müssen wir enabled auf 1 in /etc/yum.repos.d/enlartenment.repo setzen:
vi /etc/yum.repos.d/enlartenment.repo| [enlartenment] name=Enlartenment Repository für $releasever - $basearch baseurl=http://www.enlartenment.com/packages/fedora/$releasever/$basearch/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-enlartenment enabled=1 gpgcheck=1 [enlartenment-sources] name=Enlartenment Repository für $releasever - Quellen baseurl=http://www.enlartenment.com/packages/fedora/$releasever/SRPMS/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-enlartenment enabled=1 gpgcheck=1 |
Als nächstes importieren wir den GPG-Schlüssel dieses Repositories:
rpm --import http://www.enlartenment.com/RPM-GPG-KEY.mf3 Postfix, Courier, Saslauthd, MySQL, phpMyAdmin installieren
Dies kann alles mit einem einzigen Befehl installiert werden:
yum install ntp httpd mysql-server php php-mysql php-mbstring rpm-build gcc mysql-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel maildrop courier-imap courier-authlib-mysql phpmyadmin pcre-devel openldap-develWenn Sie dies sehen:
warnings: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
Öffentlicher Schlüssel für ntp-4.2.0.a.20050816-11.FC5.i386.rpm ist nicht installiert
GPG-Schlüssel von file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora abrufen
GPG-Schlüssel 0x4F2A6FD2 "Fedora Project <[email protected]>" importieren
Ist das in Ordnung [y/N]:bitte mit y antworten.
4 Quota-Patch auf Postfix anwenden
Wir müssen das Postfix-Quell-rpm holen, es mit dem Quota-Patch patchen, ein neues Postfix-rpm-Paket erstellen und installieren.
cd /usr/src
wget http://ftp-stud.fht-esslingen.de/pub/Mirrors/fedora/linux/core/5/source/SRPMS/postfix-2.2.8-1.2.src.rpm
rpm -ivh postfix-2.2.8-1.2.src.rpm
cd /usr/src/redhat/SOURCES
wget http://web.onda.com.br/nadal/postfix/VDA/postfix-2.2.8-vda.patch.gz
gunzip postfix-2.2.8-vda.patch.gz
cd /usr/src/redhat/SPECS/Jetzt müssen wir die Datei postfix.spec bearbeiten:
vi postfix.specÄndern Sie %define MYSQL 0 in %define MYSQL 1, fügen Sie Patch0: postfix-2.2.8-vda.patch zur # Patches-Stanza hinzu und fügen Sie schließlich %patch0 -p1 -b .vda zur %setup -q-Stanza hinzu:
| [...] %define MYSQL 1 [...] # Patches Patch0: postfix-2.2.8-vda.patch Patch1: postfix-2.1.1-config.patch Patch3: postfix-alternatives.patch Patch4: postfix-hostname-fqdn.patch Patch6: postfix-2.1.1-obsolete.patch Patch7: postfix-2.1.5-aliases.patch Patch8: postfix-large-fs.patch Patch9: postfix-2.2.5-cyrus.patch [...] %setup -q # Obligatorische Patches anwenden %patch0 -p1 -b .vda %patch1 -p1 -b .config %patch3 -p1 -b .alternatives %patch4 -p1 -b .postfix-hostname-fqdn %patch6 -p1 -b .obsolete %patch7 -p1 -b .aliases %patch8 -p1 -b .large-fs %patch9 -p1 -b .cyrus [...] |
Dann bauen wir unser neues Postfix-rpm-Paket mit Quota- und MySQL-Unterstützung:
rpmbuild -ba postfix.specSie werden viele Warnungen wie diese sehen, die Sie ignorieren können:
msg.h:12:1: warning: "/*" innerhalb eines Kommentars
msg.h:14:1: warning: "/*" innerhalb eines Kommentars
msg.h:33:1: warning: "/*" innerhalb eines Kommentars
msg.h:34:1: warning: "/*" innerhalb eines Kommentars
msg.h:35:1: warning: "/*" innerhalb eines Kommentars
msg.h:36:1: warning: "/*" innerhalb eines KommentarsUnser Postfix-rpm-Paket wird in /usr/src/redhat/RPMS/i386 erstellt, also gehen wir dorthin und installieren es:
cd /usr/src/redhat/RPMS/i386
rpm -ivh postfix-2.2.8-1.2.i386.rpm(Falls Sie Probleme beim Erstellen des Postfix-rpm-Pakets haben, können Sie meines hier herunterladen.)
5 MySQL-Passwörter setzen und phpMyAdmin konfigurieren
Starten Sie MySQL:
chkconfig --levels 235 mysqld on
/etc/init.d/mysqld startSetzen Sie dann Passwörter für das MySQL-Root-Konto:
mysqladmin -u root password yourrootsqlpassword
mysqladmin -h server1.example.com -u root password yourrootsqlpasswordJetzt konfigurieren wir phpMyAdmin. Erstellen Sie /usr/share/phpmyadmin/config.inc.php:
vi /usr/share/phpmyadmin/config.inc.php| |
Dann ändern wir die Apache-Konfiguration, sodass phpMyAdmin Verbindungen nicht nur von localhost erlaubt:
vi /etc/httpd/conf.d/phpmyadmin.conf| Alias /phpmyadmin/ "/usr/share/phpmyadmin/" # |
Dann erstellen wir die Systemstartlinks für Apache und starten ihn:
chkconfig --levels 235 httpd on
/etc/init.d/httpd startJetzt können Sie Ihren Browser auf http://server1.example.com/phpmyadmin/ lenken und sich mit dem Benutzernamen root und Ihrem neuen Root-MySQL-Passwort anmelden.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.