Postfix Anleitung · 5 min read · Sep 28, 2025

Virtuelle Benutzer und Domains mit Postfix, Courier und MySQL (CentOS 5.1)

Virtuelle Benutzer und Domains mit Postfix, Courier und MySQL (CentOS 5.1)

Version 1.0
Autor: Falko Timme

Dieses Tutorial ist Copyright (c) 2007 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 Postfix-Mailserver installiert, der auf virtuellen Benutzern und Domains basiert, d.h. Benutzern und Domains, die in einer MySQL-Datenbank gespeichert sind. 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). Darüber hinaus 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 leichter zu verstehen und im Gedächtnis zu behalten ist.

Dieses Tutorial basiert auf CentOS 5.1 (i386). Sie sollten bereits ein grundlegendes CentOS-System eingerichtet haben, wie hier beschrieben: https://www.howtoforge.com/centos-5.1-server-lamp-email-dns-ftp-ispconfig und https://www.howtoforge.com/centos-5.1-server-lamp-email-dns-ftp-ispconfig-p2. Außerdem sollten Sie sicherstellen, dass die Firewall deaktiviert ist (zumindest vorerst) und dass SELinux deaktiviert ist (das ist wichtig!), wie im Kapitel sechs auf https://www.howtoforge.com/centos-5.1-server-lamp-email-dns-ftp-ispconfig-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 Wege, dieses Ziel zu erreichen, aber dies ist der Weg, den ich wähle. Ich gebe keine Garantie, dass dies für Sie funktionieren wird!

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 ::1 localhost6.localdomain6 localhost6 |

2 Einige Software installieren

Zuerst importieren wir die GPG-Schlüssel für Softwarepakete:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Dann aktualisieren wir unsere vorhandenen Pakete im System:

yum update

Jetzt installieren wir einige Software, die wir später benötigen:

yum groupinstall 'Development Tools'
yum groupinstall 'Development Libraries'

3 Apache, MySQL, phpMyAdmin installieren

Zuerst aktivieren wir das RPMforge-Repository auf unserem CentOS-System, da viele der Pakete, die wir im Verlauf dieses Tutorials installieren werden, nicht in den offiziellen CentOS 5.1-Repositories verfügbar sind:

rpm -Uhv http://apt.sw.be/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

(Wenn der obige Link nicht mehr funktioniert, finden Sie die aktuelle Version von rpmforge-release hier: http://apt.sw.be/packages/rpmforge-release/)

Anschließend können wir die benötigten Pakete mit einem einzigen Befehl installieren (einschließlich der Pakete, die wir zum Erstellen von Courier-IMAP benötigen):

yum install ntp httpd mysql-server php php-mysql php-mbstring php-mcrypt phpmyadmin rpm-build gcc mysql-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel pcre-devel openldap-devel postgresql-devel expect libtool-ltdl-devel openldap-servers libtool gdbm-devel pam-devel gamin-devel

4 Courier-IMAP, Courier-Authlib und Maildrop installieren

Leider gibt es keine rpm-Pakete für Courier-IMAP, Courier-Authlib und Maildrop, daher müssen wir sie wie in diesem Tutorial beschrieben installieren: How To Install courier-imap, courier-authlib, And maildrop On Fedora, RedHat, CentOS

Falls Sie Probleme beim Erstellen der rpm-Pakete haben, können Sie meine herunterladen:

  • courier-authlib-0.60.2-1.i386.rpm
  • courier-authlib-devel-0.60.2-1.i386.rpm
  • courier-authlib-mysql-0.60.2-1.i386.rpm
  • courier-imap-4.2.1-1.i386.rpm
  • maildrop-2.0.4-1.i386.rpm

5 Quota-Patch auf Postfix anwenden

Wir müssen das Postfix-Quell-rpm beziehen, es mit dem Quota-Patch patchen, ein neues Postfix-rpm-Paket erstellen und es installieren.

cd /usr/src  
wget http://ftp-stud.fht-esslingen.de/pub/Mirrors/centos/5.1/os/SRPMS/postfix-2.3.3-2.src.rpm  
rpm -ivh postfix-2.3.3-2.src.rpm

Der letzte Befehl zeigt einige Warnungen, die Sie ignorieren können:

warnung: Benutzer mockbuild existiert nicht - verwende root  
warnung: Gruppe mockbuild existiert nicht - verwende root
cd /usr/src/redhat/SOURCES  
wget http://vda.sourceforge.net/VDA/postfix-2.3.3-vda.patch.gz  
gunzip postfix-2.3.3-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.3.3-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.3.3-vda.patch Patch1: postfix-2.1.1-config.patch Patch3: postfix-alternatives.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 # Wenden Sie obligatorische Patches an %patch0 -p1 -b .vda %patch1 -p1 -b .config %patch3 -p1 -b .alternatives %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.spec

Sie werden viele Warnungen wie diese sehen, die Sie ignorieren können:

msg.h:12:1: warnung: "/*" innerhalb eines Kommentars  
msg.h:14:1: warnung: "/*" innerhalb eines Kommentars  
msg.h:33:1: warnung: "/*" innerhalb eines Kommentars  
msg.h:34:1: warnung: "/*" innerhalb eines Kommentars  
msg.h:35:1: warnung: "/*" innerhalb eines Kommentars  
msg.h:36:1: warnung: "/*" innerhalb eines Kommentars

Unser Postfix-rpm-Paket wird in /usr/src/redhat/RPMS/i386 erstellt, also gehen wir dorthin:

cd /usr/src/redhat/RPMS/i386

Der Befehl

ls -l

zeigt Ihnen die verfügbaren Pakete:

[root@server1 i386]# ls -l  
total 11280  
-rw-r--r-- 1 root root 3819299 Dec  5 15:25 postfix-2.3.3-2.i386.rpm  
-rw-r--r-- 1 root root 7655069 Dec  5 15:25 postfix-debuginfo-2.3.3-2.i386.rpm  
-rw-r--r-- 1 root root   50346 Dec  5 15:25 postfix-pflogsumm-2.3.3-2.i386.rpm  
[root@server1 i386]#

Wählen Sie das Postfix-Paket aus und installieren Sie es wie folgt:

rpm -ivh postfix-2.3.3-2.i386.rpm

(Falls Sie Probleme beim Erstellen des Postfix-rpm-Pakets haben, können Sie meines hier herunterladen: postfix-2.3.3-2.i386.rpm.)

6 MySQL-Passwörter festlegen und phpMyAdmin konfigurieren

Starten Sie MySQL:

chkconfig --levels 235 mysqld on  
/etc/init.d/mysqld start

Setzen Sie dann die Passwörter für das MySQL-Root-Konto:

mysqladmin -u root password yourrootsqlpassword  
mysqladmin -h server1.example.com -u root password yourrootsqlpassword

Jetzt konfigurieren wir phpMyAdmin. Wir ändern die Apache-Konfiguration, sodass phpMyAdmin Verbindungen nicht nur von localhost zulässt (indem wir die -Stanza auskommentieren):

vi /etc/httpd/conf.d/phpmyadmin.conf

| # # Webanwendung zur Verwaltung von MySQL # # # Order Deny,Allow # Deny from all # Allow from 127.0.0.1 # Alias /phpmyadmin /usr/share/phpmyadmin Alias /phpMyAdmin /usr/share/phpmyadmin Alias /mysqladmin /usr/share/phpmyadmin |

Als nächstes ändern wir die Authentifizierung in phpMyAdmin von Cookie auf HTTP:

vi /usr/share/phpmyadmin/config.inc.php

| [...] /* Authentifizierungstyp */ $cfg['Servers'][$i]['auth_type'] = 'http'; [...] |

Dann erstellen wir die Systemstartlinks für Apache und starten ihn:

chkconfig --levels 235 httpd on  
/etc/init.d/httpd start

Jetzt können Sie Ihren Browser auf http://server1.example.com/phpmyadmin/ oder http://192.168.0.100/phpmyadmin/ lenken und sich mit dem Benutzernamen root und Ihrem neuen Root-MySQL-Passwort anmelden.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.