Virtuelle Benutzer Und Domains Mit Postfix, Courier Und MySQL (Fedora 8)

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 geeinget für SMTP-AUTH und TLS sowie quota (quota ist nicht standardmäßig in Postfix enthalten, ich werde aufzeigen, wie man Postfix sachgerecht patcht). Passworte werden in den Datenbanken verschlüsselt abgelegt (die meisten Dokumente, die ich gefunden habe, haben sich mit einfachen Text-Passworten 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 Fedora 8 (i386). Du solltest bereits ein Fedora Grundsystem eingerichtet haben, wie hier beschrieben wird (für ein x86_64 System, aber die Prozedur für i386 Systeme ist die gleiche): http://www.howtoforge.com/fedora-8-server-lamp-email-dns-ftp-ispconfig und http://www.howtoforge.com/fedora-8-server-lamp-email-dns-ftp-ispconfig-p2. Außerdem solltest Du sicher gehen, dass die Firewall ausgeschaltet ist (zumindest für jetzt) und dass SELinux deaktiviert ist (das ist wichtig!), wie in den Kapiteln 6 und 7 der folgenden Anleitung gezeigt wird http://www.howtoforge.com/fedora-8-server-lamp-email-dns-ftp-ispconfig-p3.

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 Bearbeite die Datei /etc/hosts

Unser Hostname in diesem Beispiel ist server1.example.com und hat die IP Adresse 192.168.0.100, also können wir die Datei /etc/hosts wie folgt ändern:

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

Zuerst importieren wir die GPG Keys für Software Pakete:

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

Dann aktualisieren wir bereits vorhandene Pakete auf dem System:

yum update

Nun installieren wir Software, die wir später brauchen werden:

yum groupinstall 'Development Tools'

yum groupinstall 'Development Libraries'


3 Installation von Apache, MySQL, phpMyAdmin

Das kann alles mit nur einem Befehl installiert werden (inklusive der Pakete, die wir benötigen, um Courier-IMAP zu erstellen):

yum install ntp httpd mysql-server php php-mysql php-mbstring rpm-build gcc mysql-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel phpMyAdmin 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 gibt es keine rpm Pakete für Courier-IMAP, Courier-Authlib und Maildrop, daher müssen wir sie, wie in der folgenden Anleitung beschrieben, installieren: How To Install courier-imap, courier-authlib, And maildrop On Fedora, RedHat, CentOS

5 Anbringen von Quota Patch in Postfix

Wir müssen den Postfix Quelltext rpm beziehen, ihn 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/fedora/linux/releases/8/Fedora/source/SRPMS/postfix-2.4.5-2.fc8.src.rpm
rpm -ivh postfix-2.4.5-2.fc8.src.rpm

Der letzten Befehl wird einige Warnngen anzeigen, die Du ignorieren kannst:

warning: user kojibuilder does not exist - using root
warning: group kojibuilder does not exist - using root

cd /usr/src/redhat/SOURCES
wget http://vda.sourceforge.net/VDA/postfix-2.4.5-vda-ng.patch.gz
gunzip postfix-2.4.5-vda-ng.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 die Zeile Patch0: postfix-2.4.5-vda-ng.patch der Zeile # Patches an und füge letztendlich die Zeile %patch0 -p1 -b .vda-ng an die %setup -q Zeile:
[...]
%define MYSQL 1 [...] # Patches Patch0: postfix-2.4.5-vda-ng.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.4.0-cyrus.patch Patch10: postfix-2.4.5-open_define.patch [...] %prep %setup -q # Apply obligatory patches %patch0 -p1 -b .vda-ng %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 %patch10 -p1 -b .open_define [...]
Dann erstellen wir unser neues Postfix rpm Paket mit Quota und MySQL Unterstützung:

rpmbuild -ba postfix.spec

Eine Menge Warnungen wie diese werden 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 wurde im Verzeichnis /usr/src/redhat/RPMS/i386 erstellt, also gehen wir dort hin:

cd /usr/src/redhat/RPMS/i386

Der Befehl

ls -l

zeigt Dir die verfügbaren Pakete:

[root@server1 i386]# ls -l
total 11604
-rw-r--r-- 1 root root 3899179 2007-11-13 22:26 postfix-2.4.5-2.fc8.i386.rpm
-rw-r--r-- 1 root root 7907114 2007-11-13 22:26 postfix-debuginfo-2.4.5-2.fc8.i386.rpm
-rw-r--r-- 1 root root 50804 2007-11-13 22:26 postfix-pflogsumm-2.4.5-2.fc8.i386.rpm
[root@server1 i386]#

Wähle das Postfix Paket aus und installiere es wie folgt:

rpm -ivh postfix-2.4.5-2.fc8.i386.rpm

(Falls Du Probleme beim Erstellen des Postfix rpm Paketes haben solltest, kannst Du Dir meines von hier runter laden.)

6 MySQL Passworte einrichten Und phpMyAdmin konfigurieren

Starte MySQL:

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

Lege dann Passworte für das MySQL Root Konto an:

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

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

vi /etc/httpd/conf.d/phpMyAdmin.conf


# phpMyAdmin - Web based MySQL browser written in php
# # Allows only localhost by default # # But allowing phpMyAdmin to anyone other than localhost should be considered # dangerous unless properly secured by SSL Alias /phpMyAdmin /usr/share/phpMyAdmin #<Directory /usr/share/phpMyAdmin/> # order deny,allow # deny from all # allow from 127.0.0.1 #</Directory> # This directory does not require access over HTTP - taken from the original # phpMyAdmin upstream tarball # <Directory /usr/share/phpMyAdmin/libraries> Order Deny,Allow Deny from All Allow from None </Directory> # This configuration prevents mod_security at phpMyAdmin directories from # filtering SQL etc. This may break your mod_security implementation. # #<IfModule mod_security.c> # <LocationMatch "/phpMyAdmin/(.+)"> # SecFilterInheritance Off # </LocationMatch> #</IfModule>
Dann erstellen wir die System Startup Links für Apache und starten es:

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

Nun kannst Du Deinen Browser auf http://server1.example.com/phpMyAdmin/ oder 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