qmail

maildirsmtp funktioniert nicht mit cron – Problem mit serialmail

Ich gehe davon aus, daß qmail bereits so konfiguriert ist, daß es mit maildirsmtp und serialmail zusammen arbeitet. Es funktioniert auch die Mailweiterleitung per SMTP, wenn der maildirsmtp-Befehl direkt auf der Konsole ausgeführt wird. Wenn der Befehl aber aus dem crondaemon heraus ausgeführt wird, so funktioniert die Weiterleitung nicht mehr.

Das erste was getan werden sollte, ist, daß alle Pfade absolut in der crontab stehen, da der cron-daemon sich um systemweite Variablen und Pfade häufig nicht schert. Gib alle Pfade in der crontab immer und überall absolut an!

Damit sieht die crontab ungefähr wie folgt aus:

* * * * * /usr/local/bin/maildirsmtp /path/to/Maildir <remove-delivery-> 1.2.3.4 mail.host.net

Zunächst sollte noch das Logging aktiviert werden:

* * * * * /usr/local/bin/maildirsmtp /path/to/Maildir <remove-delivery-> 1.2.3.4 mail.host.net 2>&1| /var/qmail/bin/splogger serialmail

Durch diesen Zusatz wird das Ergebnis des Befehls in das Systemlog geschrieben (in meinem Fall ist das /var/log/maillog). Hier finden wir nach der Änderung die folgende Fehlermeldung:

Jul 10 11:45:00 mxhost serialmail: 1247219100.556374 maildirserial: fatal: unable to run tcpclient: file does not exist
Jul 10 11:45:00 mxhost serialmail: 1247219100.557665 maildirserial: fatal: unable to run tcpclient: file does not exist
Jul 10 11:45:00 mxhost serialmail: 1247219100.558582 maildirserial: fatal: unable to run tcpclient: file does not exist
Jul 10 11:45:00 mxhost serialmail: 1247219100.558801 maildirserial: fatal: making no progress, giving up

Das Problem ist, daß maildirsmtp das Programm tcpclient nicht findet, welches aber zum Aufbau der SMTP-Verbindung benötigt wird. Deswegen öffnen und modifizieren wir nun das maildirsmtp-script ein wenig und ergänzen dieses (die Ergänzung ist dick gedruckt):

#!/bin/sh
# WARNING: This file was auto-generated. Do not edit!

exec \
/usr/local/bin/maildirserial -b -t 1209600 — “$1″ “$2″ \
/usr/local/bin/tcpclient -RHl0 — “$3″ 25 \
/usr/local/bin/serialsmtp “$2″ “$4″

Durch diese kleine Ergänzung wird die Mailzustellung mit maildirsmtp über einen cron funktionieren. Achte auf Änderungen an Deinem qmail – da das Script automatisch generiert wird, wird diese Änderung ggfs. überschrieben, wodurch die Mailzustellung über den cron-daemon wieder versagen wird!

Get in contact:

Kategorien