Virtuelle Benutzer für Postfix auf CentOS 5.1

Version 1.0
Author: Falko Timme


Diese Anleitung ist urheberrechtlich geschützt (Copyright (c) 2007 by Falko Timme). Sie stammt von einer Anleitung von Christoph Haas, die Du auf folgender Seite finden kannst http://workaround.org. Du kannst diese Anleitung unter der Creative Commons License 2.5 oder jeder anderen späteren Version verwenden.
Diese Anleitung beschreibt wie man einen Postfix Mail Server installiert, der auf virtuellen Benutzern und Domains basiert, das heißt Benutzer und Domains, die in einer MySQL Datenbank sind. Weiterhin werde ich die Installation und Konfiguration von Courier (Courier-POP3, Courier-IMAP) veranschaulichen, damit sich Courier gegenüber der gleichen MySQL Datenbank, die Postfix verwendet, autentifizieren kann.

Der daraus resultierende Postfix Server ist geeignet für SMTP-AUTH und TLS sowie quota (quota ist nicht standardmäßig in Postfix enthalten, ich werde aufzeigen, wie man Postfix sachgerecht patcht). Passwörter werden in den Datenbanken verschlüsselt abgelegt (die meisten Dokumente, die ich gefunden habe, haben sich mit einfachen Text-Passwörtern befasst, was ziemlich riskant ist). Weiterhin deckt diese Anleitung auch die Installation von Amavisd, SpamAssassin und ClamAV ab, sodass E-Mails auf Spam und Viren überprüft werden.

Der Vorteil eines solchen “virtuellen” Setups (virtuelle Benutzer und Domains in einer MySQL Datenbank) ist, dass es weitaus leistungsfähiger als ein Setup, das auf “realen” Systembenutzern basiert. Mit diesem virtuellen Setup kann Dein Mail Server Tausende von Domains und Benutzern bedienen. Davon abgesehen, ist es einfacher zu verwalten, da man sich nur mit der MySQL Datenbank beschäftigen muss, wenn man neue Benutzer/Domains hinzufügt oder bereits vorhandene bearbeitet. Keine postmap Befehle mehr um db Dateien zu erstellen, kein Neuladen von Postfix, etc. Zur Administration der MySQL Datenbank kannst Du web-basierte Tools wie phpMyAdmin verwenden, die auch in dieser Anleitung installiert werden. Der dritte Vorteil ist, dass die Benutzer eine E-mail Adresse als Benutzernamen haben (anstelle eines Benutzernamens + E-mai Adresse), was einfacher zu verstehen ist und man kann es sich besser merken.

Diese Anleitung basiert auf CentOS 5.1 (i386). Du solltest bereits ein CentOS Basissystem eingerichtet haben, wie hier http://www.howtoforge.com/centos-5.1-server-lamp-email-dns-ftp-ispconfig und hier http://www.howtoforge.com/centos-5.1-server-lamp-email-dns-ftp-ispconfig-p2 beschrieben wird. Außerdem solltest Du sicherstellen, dass die Firewall ausgeschaltet ist (zumindest vorübergehend) und dass SELinux deaktiviert ist (das ist wichtig!), wie im Kapitel 6 auf http://www.howtoforge.com/centos-5.1-server-lamp-email-dns-ftp-ispconfig-p3 gezeigt wird.

Diese Anleitung ist ein praktischer Leitfaden und deckt kein theoretisches Hintergrundwissen ab. Dies wird in anderen Dokumenten im Web abgehandelt.

Diese Anleitung ist ohne jegliche Gewähr! Allerdings möchte ich an dieser Stelle darauf hinweisen, dass dies hier nicht der einzige Weg ist, ein solches System zu installieren. Es gibt viele Möglichkeiten - ich selbst habe mich für diese entschieden. Ich kann aber nicht garantieren, dass diese Lösung bei jedem funktioniert bzw. für jeden die richtige ist!

1 /etc/hosts Bearbeiten

Unser Hostname in diesem Beispiel ist server1.example.com und hat die IP Adresse 192.168.0.100. Also ändern wir /etc/hosts wie folgt:

vi /etc/hosts


# Do not remove the following line, or various programs
# that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost 192.168.0.100 server1.example.com server1 ::1 localhost6.localdomain6 localhost6

2 Installation Von Software

Zunächst importieren wir die GPG Keys für Softwarepakete:

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

Dann aktualisieren wir unsere vorhandenen Pakete auf dem System:

yum update

Nun installieren wir Software, die wir später noch benötigen werden:

yum groupinstall 'Development Tools'

yum groupinstall 'Development Libraries'


3 Installation Von Apache, MySQL, phpMyAdmin

Zuerst aktivieren wir die RPMforge Paketdatenbank auf unserem CentOS System, da viele der Pakete, die wir in dieser Anleitung installieren werden, nicht in den offiziellen CentOS 5.1 Paketdatenbanken enthalten sind:

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

(Falls der obige Link nicht mehr funktionieren sollte, findest Du die derzeitige Version von rpmforge-release hier: http://apt.sw.be/packages/rpmforge-release/)

Danach können wir die benötigten Pakete mit nur einem Befehl installieren (inklusive der Pakete, die wir benötigen, um Courier-IMAP zu erstellen):

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 Installation Von Courier-IMAP, Courier-Authlib Und Maildrop

Leider sind keine rpm Pakete für Courier-IMAP, Courier-Authlib und Maildrop verfügbar, daher müssen wir sie so installieren, wie in dieser Anleitung beschrieben wird: How To Install courier-imap, courier-authlib, And maildrop On Fedora, RedHat, CentOS
Falls Du Probleme mit der Erstellung der rpm Pakete haben solltest, kannst Du meine runter laden:

5 Anbringen Von Quota Patch In Postfix

Wir müssen den Postfix Quelltext beziehen, patche ihn dann mit dem Quota Patch, erstelle neue Postfix rpm Pakete und installiere diese Pakete.

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 ein paar Warnungen an, die Du ignorieren kannst:

warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using 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/

Nun müssen wir die Datei postfix.spec bearbeiten:

vi postfix.spec

Ändere %define MYSQL 0 zu %define MYSQL 1, füge Patch0: postfix-2.3.3-vda.patch der # Patches Zeile hinzu und füge schließlich %patch0 -p1 -b .vda an die %setup -q Zeile an:
[...]
%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 # Apply obligatory patches %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 erstellen wir unsere neuen Postfix rpm Pakete mit Quota und MySQL Unterstützung:

rpmbuild -ba postfix.spec

Es werden mehrere Warnungen wie diese angezeigt, die Du ignorieren kannst:

msg.h:12:1: warning: "/*" within comment
msg.h:14:1: warning: "/*" within comment
msg.h:33:1: warning: "/*" within comment
msg.h:34:1: warning: "/*" within comment
msg.h:35:1: warning: "/*" within comment
msg.h:36:1: warning: "/*" within comment

Unser Postfix rpm Paket wird in /usr/src/redhat/RPMS/i386 erstellt, also begeben wir uns dahin:

cd /usr/src/redhat/RPMS/i386

Der Befehl

ls -l

zeigt Dir 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ähle das Postfix Paket aus und installiere es wie folgt:

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

(Für den Fall, dass Du Probleme haben solltest, das Postfix rpm Paket zu erstellen, kannst Du mein Paket von postfix-2.3.3-2.i386.rpm runter laden).

6 MySQL Passwörter Anlegen Und phpMyAdmin Konfigurieren

Starte MySQL:

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

Lege dann Passwörter für das MySQL Root-Konot an:

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

Nun konfigurieren wir phpMyAdmin. Wir ändern die Apache Konfiguration, sodass phpMyAdmin nicht nur Verbindungen vom Localhost zulässt (indem wir die Zeile <Directory "/usr/share/phpmyadmin"> auskommentieren):

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


#
# Web application to manage MySQL # #<Directory "/usr/share/phpmyadmin"> # Order Deny,Allow # Deny from all # Allow from 127.0.0.1 #</Directory> 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 zu http:

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


[...]
/* Authentication type */ $cfg['Servers'][$i]['auth_type'] = 'http'; [...]
Dann erstellen wir die System Startup Links für Apache und starten es:

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

Jetzt kannst Du Deinen Browser auf http://server1.example.com/phpmyadmin/ or http://192.168.0.100/phpmyadmin/ ausrichten und Dich mit dem Benutzernamen root und Deinem neuen Root MySQL Passwort anmelden.

0 Kommentar(e)

Zum Posten von Kommentaren bitte