Inhalt

3. Mails versenden

Das Kapitel 1 Einführung sollte unbedingt gelesen werden, da hier u.a. die Hintergründe erklärt werden.

3.1 qmail-Programme

Qmail ist im Gegensatz zu sendmail modular aufgebaut. D.h. für jede Aufgabe gibt es ein eigenes Programm. Bevor ich die Einrichtung des Mailservers beschreibe, hier vorab ein paar Informationen zu den wichtigsten Programmen:
Verschiedene Programme können auch von Hand mit entsprechenden Parametern aufgerufen werden um qmail zu testen oder Mails zu schreiben. Normalerweise werden sie jedoch von qmail selbst ausgeführt.
Weitere Informationen zu den Programmen findet man in der jeweiligen Manual-Page.

3.2 Konfigurationsdateien

In diesem Abschnitt werde ich die Konfigurationsdateien, gegliedert nach den Programmen zu denen sie gehören, vorstellen. Verschiedene Dateien dürfen keine Kommentare oder unnötigen Zeilen enthalten. D.h. der Eintrag muss sich in der ersten Zeile befinden. Auf diese Dateien werde ich hinweisen. Nach Änderungen an den Dateien muss qmail meistens neu gestartet werden. Auf kleineren Mailservern können meist die Defaultwerte beibehalten (d.h. keine Datei vorhanden) werden.

3.2.1 Standardwerte

defaultdelivery: Diese Datei ist keine Standarddatei von qmail. Sie wird jedoch oft benutzt um dem Startscript rc Parameter zu übergeben. Diese Einstellungen können durch eine eigene .qmail-Datei überschrieben werden.
# Uncomment the next line for .forward support
#|dot-forward .forward
./.maildir/
oder die Mail an procmail übergeben:
# Uncomment the next line for .forward support
#|dot-forward .forward
|preline procmail

concurrencyincoming (einzeilig!): Hiermit wird die Anzahl gleichzeitiger hereinkommender SMTP-Verbindungen angegeben. Diese Datei ist keine Standarddatei von qmail. Sie wird von tcpserver benutzt. Es wird einfach nur die gewünschte Zahl (im Beispiel 20) eingetragen.
20

me: Hier wird der Hostnamen festgelegt, der von vielen Konfigurationsdateien als Defaultwert benutzt wird.
mail.64-bit.de

3.2.2 qmail-smtpd

Zum Empfangen der Mails ist der Mail Transfer Agent (MTA) zuständig. Benutzt wird hierbei das Simple Mail Transfer Protocol (SMTP). Er nimmt die Mails von Benutzern entgegen und stellt sie mit dem Befehl qmail-queue in die Warteschlange. Man frägt sich nun warum ich mit diesem Programm beginne, obwohl es doch nicht um das Empfangen, sondern um das Versenden von Nachrichten geht. Das ist ganz einfach: dder MTA nimmt ja auch die Mails von Mailprogrammen entgegen und diese werden dann weiterversendet. Also spielt er auch hier eine Rolle.
Der qmail-smtpd wird vom tcpserver aufgerufen, wenn dieser eine Nachricht am SMTP-Port empfängt.

Konfigurationsdateien:

badmailfrom
: In dieser Datei werden qmail Mailadressen oder Domänen übergeben, von denen keine Mails entgegengenommen werden sollen
# Mail- oder Domaennamen die abgewiesen werden
viagra@doctor.com
@spam.net

databytes (einzeilig!): Default 0: Hier kann angegeben werden (in Byte) wie groß empfangene Nachrichten maximal sein dürfen. Bei 0 wird die Größe ignoriert.
10000000

localiphost (einzeilig!) Default me: Mit diesem Hostnamen wird bei Mails mit einer IP-Nummer in der Empfängeradresse eben diese ersetzt. D.h. wenn der Server z.B. die IP 192.168.1.1 hat und eine Mail an den Benutzer willi@192.168.1.1 gesendet wurde wird diese in willi@64-bit.de konvertiert.
64-bit.de

rcpthosts: Diese Datei ist eine der wichtigsten Konfigurationsdateien. In ihr werden Domänen angegeben von denen Mails über SMTP angenommen werden. Sie wird vor allem dann benötigt, wenn der Mailservers eines Providers viele Accounts der Kundendomänen verwaltet.

Anm.: Wenn diese Datei fehlt ist ihr System offen. D.h. es kann von jedem als Mailserver benutzt werden. Spammer finden solche Mailserver meist innerhalb kürzester Zeit!
heimnetz
64-bit.de

morerecpthosts: Eine optionale Erweiterung zu rcpthosts. Sie sollte eingesetzt werden, wenn die Einträge in der rcpthosts über 50 steigt. In diesem Falle sollten aktuelle bzw. zu bevorzugende in die rcpthosts und die anderen hier eingetragen werden. Nach Änderungen in dieser Datei muss sie mit qmail-newmrh in eine binäre Datenbank konvertiert werden.
virtuell.64-bit.de

smtpgreeting (einzeilig!) Default me: Hier wird der SMTP-Begrüßungstext angegeben. Sie muss einzeilig sein! Es sollte auch der Name des Mailservers darin vorkommen.
mail.64-bit.de < * * * Willkommen auf dem Mailserver der Firma XYZ * * * > 

timeoutsmtpd (einzeilig!) Default 1200 Sekunden (= 20 Minuten): Hier wird angegeben wie lange auf jede Kommunikation bzw. Antwort eines SMTP-Clients gewartet wird.
300

3.2.3 qmail-send

qmail-send steuert die Auslieferung der Nachrichten, die in der Warteschlange stehen und benutzt hierzu qmail-rspawn oder qmail-lspawn.

Konfigurationsdateien:


bouncefrom (einzeilig!): Hier wird der Benutzername eingetragen, der im From-Feld einer Bounce-Nachricht (Unzustellbar) stehen soll.
postmaster

bouncehost (einzeilig!) Default me: Hier wird der Hostname eingetragen, der im From-Feld einer Bounce-Nachricht stehen soll.
64-bit.de

concurrencylocal (einzeilig!) Default 10: Hiermit wird die Anzahl gleichzeitiger lokaler SMTP-Auslieferungen angegeben. Es wird einfach nur die gewünschte Zahl (im Beispiel 20) eingetragen.
20

concurrencyremote (einzeilig!) Default 20: Diese Datei gibt die Anzahl gleichzeitiger externer Auslieferungen an. Es wird einfach nur die gewünschte Zahl (im Beispiel 30) eingetragen.
30

doublebouncehost (einzeilig!) Default me: der Hostname des Rechners an den absolute unzustellbare Nachrichten (Empfänger und Sender falsch) gesendet werden. Die Adresse setzt sich wie folgt zusammen: doublebounceto@doublebouncehost
postbote.heimnetz

doublebounceto (einzeilig!) Default postmaster: der User an den unzustellbare Bounce-Nachrichten gesendet werden. Die Adresse setzt sich wie folgt zusammen: doublebounceto@doublebouncehost
dirk

envnoathost (einzeilig!) Default me: Enthält den Domänennamen für Empfängeradressen wenn die Mail keinen enthält (bzw. kein @-Zeichen).
64-bit.de

locals Default me: Hier kann man Domännamen angeben, die auf diesem System lokal ausgeliefert werden können. Diese Domänen sollten auch in rcpthosts eingetragen werden.
localhost
mail.64-bit.de
postbote.heimnetz

queuelifetime Default 604800 Sekunden = 1 Woche: In dieser Datei kann man die maximale Dauer einstellen, in der versucht wird eine Nachricht zu senden. Wenn diese Zeit abgelaufen ist und die Mail sich noch in der Warteschlange befinden, wird sie als Unzustellbar gekennzeichnet und zurückgesendet. Auf privaten Systemen reicht eigentlich 1 Tag (24h x 60min x 60s = 86400s)
86400

virtualdomains
: hier können virtuelle Domänen angegeben werden.
:alias-extern

3.2.4 qmail-remote

Dieses Programm dient dazu entfernte Mails an den entsprechenden Mailserver zu liefern. Bei einem Internet-Mailserver liefert dieser die externen Mails sofort an den entsprechenden Empfänger.

Aufruf:
qmail-remote ZIELHOST ABSENDER EMPFÄNGER [EMPFÄNGER] 
Nach dem manuellen Aufruf, kann man den Text eingeben. Mit STRG + D wird die Eingabe beendet und die Mail versendet.

Konfigurationsdateien:

helohost (einzeilig!) Default me: Hier gibt man den Hostnamen an, den der Befehl HELO beim Ausliefern von Mails benutzt .
mail.64-bit.de

OFFEN smtproutes: Hier können eigene Routen für SMTP-Transfer festgelegt werden. DNS-Angaben werden hierdurch ignoriert. Man kann dadurch erreichen, dass Nachrichten an eine bestimmte Domäne ohne DNS-Abfrage ausgeliefert werden.
64-bit.de:extern.64-bit.de

timeoutconnect (einzeilig!) Default 60 Sekunden: Setzt die Dauer in Sekunden, die gewartet wird bis eine SMTP-Verbindung zu einem entfernten Server aufgebaut ist.
30

timeoutremote (einzeilig!) Default 1200 Sekunden (= 20 Minuten): Setzt die Dauer in Sekunden, die auf eine Antwort gewartet wird, wenn ein Befehl zu einem entfernten Server gesendet wurde (die Verbindung ist hierbei schon aufgebaut)
300

3.3 Einrichten als Mail Transfer Agent (MTA)

In den vorherigen Kapiteln habe ich die Programme und Konfigurationsdateien von qmail vorgestellt. Nun geht es darum qmail als Mailverteiler (MTA) einzurichten. Die unter 3.2 aufgeführten Konfigurationsdateien müssen nicht alle vorhanden sein bzw. benutzt werden.
Beim Versenden von Emails werden diese normalerweise von einem Mailprogramm (Mail User Agent - MUA) an den MTA übergeben. Dieser leitet die nachricht dann normalerweise, nach einer Namenauflösung, an den entsprechenden Mailserver des Empfängers weiter. Wenn der Versender eine dynamische IP-Nummer hat wird die Mail jedoch häufig abgelehnt. In diesem Fall müssen alle Mails über den Provider versendet werden.

3.3.1 Konfiguration

Bei der Installation wurden bereits durch das Script config (bzw. config-fast) verschiedene Konfigurationsdateien unter /var/qmail/control erstellt (siehe 2.1.1). Die wichtigste Einstellung die nun vorzunehmen ist, ist welches Mailboxformat benutzt werden soll. Es stehen Drei  zur Verfügung. Hier eine Kurzbeschreibung (weitere Hinweise findet man im doc-Verzeichnis von qmail):
  1. Mailbox: unter /var/spool/mail; Traditionelles Unix-Format. Alle Mails sind in einer Datei
  2. Mailbox: wie 1. nur das die Datei im Homeverzeichnis des Benutzers liegt
  3. Maildir: im Homeverzeichnis des Benutzers gibt es drei Verzeichnisse: new, cur und tmp; die Mails werden alle einzeln gespeichert
Ich benutze das neuere Maildir-Format. Eingestellt wird dies in der Datei defaultdelivery:
# Uncomment the next line for .forward support
#|dot-forward .forward
./.maildir/

Danach muss noch die Anzahl der maximalen Verbindungen für tcpserver (aus dem Paket ucspi-tcp) festgelegt werden:
echo 20 > /var/qmail/control/concurrencyincoming 

Um Mails überhaupt zu versenden müssen diese ja von Clients geliefert werden. Standardmäßig ist der Empfang aus Sicherheitsgründen deaktiviert. Um bestimmten Rechnern oder Netzwerken das Versenden zu erlauben wird die Datei /etc/tcp.smtp benötigt. Hier ein Beispiel:
# Mails vom lokalen Host
127.:allow,RELAYCLIENT=""

# Netzwerkadresse 192.168.0.0/24 freigeben
192.168.0.:allow,RELAYCLIENT=""

Nach Änderungen oder Erstellen muss sie konvertiert werden:
qmailctl cdb

Bei Systemen mit fester IP und DNS-Eintrag reichen diese Einstellungen bereits aus.

3.3.2 qmail als Einwahl-Client

Wer qmail mit einer festen IP-Nummer und DNS-Auflösung einrichtet, kann diesen Abschnitt überspringen und bei 3.3.3 weitermachen.

Standardmäßig versendet qmail externe Nachrichten sofort an den entprechenden Mailempfänger weiter. Wenn der Mailserver die Mails jedoch relayen und nur zu bestimmten Zeiten über einen Smart-Host senden soll, muss man ein wenig tricksen. Es müssen alle externen Mails über eine virtuelle Domäne an einen Alias gesendet werden. Dort werden die Mails im Maildir-Verzeichnis gespeichert. Diese können dann mit dem Befehl maildirsmtp über einen weiteren MTA versendet werden.

In der Datei /var/qmail/control/virtualdomains wird mit dem folgenden Eintrag eine virtuelle Domäne erstellt:
:alias-outgoing

Dann wird der Alias /var/qmail/alias/.qmail-outgoing-default mit folgendem Inhalt erstellt:
/var/qmail/spool

Da es dieses Maildir-Verzeichnis noch nicht gibt muss es noch mit maildirmake /var/qmail/spool und mit chmod -r alias /var/qmail/spool erstellt werden.
Die Mails werden nun in diesem Spool-Verzeichnis gesammelt und müssen per Befehl versendet werden (siehe 3.3.4)

3.3.3 qmail starten

Da qmail von den daemontools gestartet wird müssen noch ein paar Anpassungen vorgenommen werden. Zunächst muss ein supervise-Verzeichnis angelegt werden, indem run-Scripte zum Starten der Dämonen enthalten sind. Das komplette Verzeichnis findet man hier als Tar-Archiv. Einfach unter /var/qmail entpacken. Danach muss man noch sicherstellen, dass qmail in Logbücher schreiben kann:
mkdir -p /var/log/qmail/smtpd
chown qmaill /var/log/qmail /var/log/qmail/smtpd

Gestartet wird qmail ja wie bereits erwähnt durch die daemontools. Dies wird dadurch erreicht, dass die Unterverzeichnisse im supervise-Verzeichnis nach /service gelinkt werden:
ln -s /var/qmail/supervise/qmail-send /service
ln -s /var/qmail/supervise/qmail-smtpd /service

3.3.4 Mails versenden

Wer qmail als Einwahl-Client eingerichtet hat muss nun dafür sorgen, dass die Nachrichten im Spooler auch versendet werden. Dies kann beim Einwählen oder per Cronjob erfolgen. Notwendig ist folgende Befehlszeile:
setlock /var/lock/externspool maildirsmtp /var/qmail/spool alias-extern mail.64-bit.de vmserver

Anm.: oft ist es notwendig, dass man sich vor dem Versenden der Mails per POP3-Anmeldung authentifiziert (siehe fetchmail).



Inhalt