QMail ist ein sehr guter MailServer, der leider keine FreieSoftware ist. Deshalb muss man sich an umfangreiche Patch-Orgien wagen, wenn man aktuelle Features wie SMTP-AUTH, TLS etc. nutzen will. Als gute Basis empfiehlt sich hier netqmail, das die wichtigsten Patches bereits enthält.
Homepage: http://cr.yp.to/qmail.html
Community-Seite: http://www.qmail.org/
Lizenz: DjbLizenz
Tips & Tricks
http://www.lifewithqmail.org/ Die Referenzdokumentation zur Qmail-Installation von Dave Sill
http://www.wallroth.de/sebastian/lwq.html Das Gleiche auf deutsch
Power networking with Qmail&Co - Ein deutsches Buch, dass nicht bei Markt & Technik erschien.
Mini-Howto
Installation auf RedHat (und kompatiblen Systemen)
Es empfiehlt sich die Verwendung der RPMs von http://untroubled.org .
- syncdir
- ucspi-tcp
- ucspi-unix
- daemontools
- supervise-scripts
Aus Lizenzgründen muss man das qmail+patches-RPM selbst kompilieren (rpm --rebuild).
- sendmail muss mit "rpm --nodeps" deinstalliert werden
- danach das qmail+patches-RPM installieren
Multi-Relaying
Dazu braucht man das paket serialmail.
Einrichten des users mailex:
# useradd -r -s /bin/true -d /var/local/mailex # mkdir /var/local/mailex # chown mailex.root /var/local/mailex # chmod 0750 /var/local/mailex
Es muss ein maildir für jeden Relayserver erstellt werden:
# su -s /bin/bash - mailex $ maildirmake emailprovider1
Nun müssen wir qmail dazu bringen, die Mails an mailex-ppp entsprechend der Absenderadressen in die entsprechenden Maildirs zu verteilen - dazu benötigen wir Courier/maildrop (oder auch procmail):
$ echo "|preline /usr/bin/maildrop" > .qmail-ppp-default
Normale mail soll an root (cron meldungen etc.):
$ echo \&root > .qmail
Nun erstellen wir die .mailfilter-Datei für maildrop mit einem Editor unserer Wahl:
if (/^From.*@emailprovider1\.de/ || /^Return-Path:.*@emailprovider1\.de/) to emailprovider1/
Für jeden weiteren Relay ist entsprechend zu verfahren.
Für den endgültigen Versand der anfallenden Mails ist maildirsmtp zuständig, dazu schreiben wir ein kleines Shellskript mailexchange:
LANG=C /usr/bin/fetchmail IP=`ifconfig | grep -A 1 -e "^[i]*ppp" | grep "inet addr" | head --lines=1 | cut -d":" -f2 | cut -d" " -f1` ME=`host $IP | head --lines=1 | cut -d" " -f5` echo $ME > /var/qmail/control/HOSTNAME /usr/bin/maildirsmtp emailprovider1/ mailex-ppp- mail.emailprovider1.net $ME 2>&1 | /usr/bin/logger -p 'mail.notice' &
Dieses Skript nutzt die erste verfügbare IP eines ippp- oder ppp-Device.
Für weitere Relayserver sind entsprechend weitere Aufrufe von maildirsmtp einzufügen.
Nun die Rechte noch passend setzen:
# cd ~mailex # chgrp root mailexchange # chmod 0550 mailexchange # chmod 0400 .qmail* .mailfilter .fetchmailrc
Eine Beispielzeile für eine .fetchmailrc (in /var/local/mailex):
poll pop.emailprovider1.de with proto POP3 user "userx" there with password "xxxx" is "usery" here options mda "qmail-inject -a -f%F %T"
Damit spart man sich den lokalen smtp-Server (wenn man den sowieso braucht, dann kan man die mda-Option auch weglassen).
Für weitere Provider und/oder User sind entsprechend weitere Zeilen anzugeben.
Um das Relaying für einen speziellen Host zu erlauben, in der tcp.smtp einfach den jeweiligen Host eintragen und einfach folgende Zeile ausführen:
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
Weitere Infos gibts auf: http://cr.yp.to/qmail/faq/servers.html
Geht man in der Reihenfolge der Installation nach dem Leitfaden unter www.lifewithqmail.org, so trägt man normalerweise die Domains, für die man Mail lokal behandeln möchte in der Datei locals ein.
Geht man in der lifewithqmail.org Dokumentation weiter, so würde man zusätzlich die virtuellen Domains in virtualdomains eintragen. Zu diesem Zeitpunkt bietet lifewithqmail den spärlichen Hinweis, dass Domains, die in virtualdomains eingetragen wurden, nicht in locals einzutragen sind.
Ergo: alle Domains, die ich lokal behandeln möchte, kann ich von Anfang an auch gleich in virtualdomains (und nur dort) eintragen.
Ralf Roeber http://www.zeitfenster.de/