|
Kompilieren und installieren des Postfix MailServer mit MySQL, PCRE und SASL Support, auf einem Fedora Core 3, 4, 5, 6 bzw 8 Server. In unserem Beispiel gehen wir davon aus, dass der Original Postfix Server von Fedora bereits installiert und korrekt konfiguriert wurde. Eine RPM Installation reicht aus. Unser Beispiel lehnt sich dabei nah an die ISP-Software 'isp4you' an, es kann aber auch jede andere MySQL Datenbank verwendet werden, um die User in der Datenbank zu verwalten.
==========================================================================
Vorarbeiten am System:
Mit 'yum Paketname' installieren wir die fehlenden Header-Dateien. Der Befehl lautet: yum install 'Paketname' (ohne .rpm) Die dependencies nehmen wir natürlich auch mit. Alternativ können mit 'rpm -ivh' die RPM-Pakete auch ohne Yum installiert werden.
Es empfiehlt sich auf alle Fälle vorher mit: rpm -q 'Paketname' (ohne .rpm) zu kontrollieren, welche Pakete bereits installiert sind.
- mysql-server.rpm - mysql-devel.rpm - mysqlclient.rpm bzw. mysqlclient10.rpm (Fedora Core 4,5 oder 6) - mysql.rpm (Fedora Core 3) - (Fedora 8 = ?) - mysqlclient10-devel.rpm (Fedora Core 4,5 oder 6) - (Fedora 8 = ?) - libzvt.rpm (nur Fedora Core 4) - db4-devel.rpm - pcre-devel.rpm - cyrus-sasl-devel.rpm
Von www.postfix.org können die Sourcen heruntergeladen werden. Am einfachsten geht das mit 'wget URL'. Beispiel: 'wget ftp://ftp.fu-berlin.de/unix/mail/postfix/official/postfix-2.5.0.tar.gz (Stand: 02.02.2008) Der Tarball wird mit 'tar -xzf postfix-2.5.x.tar.gz' entpackt.
Selbstredend werden die Entwickler Tools 'gcc' und 'make' benötigt.
Falls der Postfix Server noch läuft, bitte mit: '/etc/init.d postfix stop' jetzt anhalten.
==========================================================================
Das Build:
Um mit dem Build zu beginnen, wird in das Verzeichnis des neuen Postfix Programms, das gerade entpackt wurde, gewechselt. Achten Sie darauf, dass wenn Sie SASL Support einkompiliernen wollen, das Build sich je nach der Postfix Version (2.2.x oder 2.3.x) geringfügig ändert (Postix hat ab Version 2.3.x hier Änderungen vorgenommen). Bei Version 2.3.x oder höher muss auch später noch eine zusätzliche Konfigurationzeile für Cyrus SASL Support angegeben werden. Weitere Informationen zu diesem Thema steht in der Postfix Dokumentation: (http://www.postfix.org/postconf.5.html#smtpd_sasl_type).
Auf der Kommandozeile geben wir,je nach System und Postfix Version, einen der folgenden Befehle ein:
Fedora Core 4 & 5 - Postfix 2.2.x : (mit SASL Support) make -f Makefile.init makefiles \ 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DHAS_PCRE -I/usr/include -DUSE_SASL_AUTH -I/usr/include/sasl' \ 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lm -L/usr/lib -lpcre -L/usr/lib/sasl2 -lsasl2'
Fedora Core 4 , 5 , 6, 8 - Postfix 2.3.x oder höher : (mit SASL Support) make -f Makefile.init makefiles \ 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DHAS_PCRE -I/usr/include -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl' \ 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lm -L/usr/lib -lpcre -L/usr/lib/sasl2 -lsasl2'
Fedora Core 3 - Postfix 2.2.x : (mit SASL Support) make -f Makefile.init makefiles \ 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DHAS_PCRE -I/usr/include -DUSE_SASL_AUTH -I/usr/include/sasl' \ 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lm -L/usr/lib -lpcre -L/usr/lib/sasl2 -lsasl2'
Fedora Core 3 - Postfix 2.3.x : (mit SASL Support) make -f Makefile.init makefiles \ 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DHAS_PCRE -I/usr/include -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl' \ 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lm -L/usr/lib -lpcre -L/usr/lib/sasl2 -lsasl2'
Fedora Core 3 : (ohne SASL Support) make -f Makefile.init makefiles \ 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DHAS_PCRE -I/usr/include' \ 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lm -L/usr/lib -lpcre'
Tipp: Achten Sie darauf, dass am Ende der Zeilen ein Leerzeichen vor dem Backslash steht, ansonsten schlägt das Build fehl. Bsp.; ....-I/usr/include'<LEERZEICHEN>\
Anschließend wird aus den Sourcen das Binary gebaut:
make clean make /etc/init.d/postfix/stop make upgrade make clean /etc/init.d/postfix/start
Wir benutzen 'make upgrade', da wir ja ein vorhandenes Postifx Binary lediglich upgraden wollen. Bei einer Neuinstallation kann hier 'make install' eingegeben werden.
Mit 'postconf -m' können wir nun kontrollieren ob MySQL und PCRE Support tatsächlich einkompiliert wurde. Die Ausgabe auf dem Terminal sollte in etwa wie folgt aussehen:
btree cidr environ hash mysql nis pcre proxy regexp static unix
==========================================================================
Die Konfiguration:
Wurde Postfix 2.3.x oder höher mit SASL Support kompiliert, muss in die /etc/postfix/main.cf noch folgende Zeile eingefügt werden:
smtpd_sasl_type = cyrus
Mit 'postconf -a' können wir uns auf der Kommandozeile ansehen, welche Arten von SASL unser Postfix unterstützt.
Wenn alles O.K ist, werden in die Datei /etc/postfix/main.cf folgende Zeilen eingefügt:
virtual_mailbox_base = /virtualmail/ virtual_mailbox_domains = mysql:/etc/postfix/mysql-domains.cf virtual_maps = mysql:/etc/postfix/mysql-virtual.cf
Ist die Direktive 'virtual_maps' schon vorhanden, muss Sie entsprechend dem oberen Beispiel angepasst werden.
Nun die Datei: /etc/postfix/mysql-virtual.cf anlegen und wie folgt bearbeiten:
user = Mysql_username password = password dbname = isp4you table = virtual select_field = mailbox where_field = mail_address hosts = localhost
Die Datei: /etc/postfix/mysql-domains.cf anlegen und wie folgt bearbeiten:
user = Mysql_username password = password dbname = isp4you table = virtual select_field = domainname where_field = domainname hosts = localhost
Die Datei /etc/postfix/mysql-domains.cf beschreibt die Domains für die sich der PostfixServer bei der Annahme von Mails zuständig fühlt.
'user' und 'password' beschreibt den Usernamen, der auf die MySQL Datenbank Zugriff hat. 'dbname' ist die zugehörige Datenbank, in der die User angelegt werden. In der Datenbank sollte nach unserem Beispiel ein Table 'virtual' vorhanden sein. 'select_field' beschreibt die Mailbox, in die die E-Mail verschoben wird. Das 'where_field' enthält die Mail-Adresse, auf welcher der Postfix Server die ankommenden E-Mails entgegen nimmt.
Zu guter Letzt legen wir noch fest ob die MySQL-Datenbank auf dem lokalen Host liegt oder ob Posftix auf einem entfernten MySQL Server zugreifen soll.
Selbstverstänldich kann der PostfixServer Mails nur ausliefern, wenn die Direktive 'smtpd_recipient_restrictions' korrekt konfiguriert wurde. Hier ein Beispiel für eine vernünftige 'smtpd_recipient_restrictions' Direktive. Wir gehen bei unserem Beispiel davon aus, dass in der Datei '/etc/postfix/access' KEIN Eintrag vorhanden ist. Achtung Einträge in der '/etc/postfix/access' Datei kann einen OPEN_RELAY Mailserver zur Folge haben!!! Alternativ können die beiden ersten Einträge deswegen auch vernachlässigt werden. Das Prinzip ist wie immer: Trifft eine Regel zu, wird die nächste nicht weiter überprüft.
smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/access, check_sender_access hash:/etc/postfix/access, permit_sasl_authenticated, permit_mynetworks, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unknown_sender_domain, reject_unauth_destination, reject_unauth_pipelining, reject_invalid_hostname, reject_rbl_client relays.ordb.org, reject_rbl_client bl.spamcop.net, reject_rbl_client sbl.spamhaus.org, reject_rbl_client dsn.rfc-ignorant.org, reject_rbl_client cbl.abuseat.org, reject_rbl_client opm.blitzed.org
Tipp: Achten Sie darauf, dass die ersten beiden Leerzeichen in der Liste vorhanden sind.
==========================================================================
Postfix neu starten saslauthd starten (wenn saslauth verwendet werden soll)
==========================================================================
Zu Guter letzt:
Sollte sich überlegt werden, ob man das Paket gcc nicht wieder loswerden will... Dieses kann mit 'rpm -e gcc' bewerkstelligt werden.
Ausserdem sollten das Paket 'postfix' von yum nicht mehr upgedated werden. Damit bei einem Update aus dem Repository nicht wieder eine Original Postfix Version installiert wird.
In '/etc/yum.conf' die folgende Zeile einfügen:
exclude=postfix
Auf einem Produktionsserver wäre die folgende Zeile eher sinnvoll:
exclude=postfix kernel glibc
==========================================================================
Letzte Aktualisierung: 02.02.2008
|