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

Mini-Howto

Installation auf RedHat (und kompatiblen Systemen)

Es empfiehlt sich die Verwendung der RPMs von http://untroubled.org .

Aus Lizenzgründen muss man das qmail+patches-RPM selbst kompilieren (rpm --rebuild).

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

MarkusRechberger


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/


KategorieMailServer

QMail (zuletzt geändert am 2007-12-23 22:49:42 durch localhost)