Univention Bugzilla – Bug 27780
/etc/cron.daily/{cyrus22,cyrus-imapd} verwendet /etc/imapd.conf
Last modified: 2012-07-20 15:25:13 CEST
Folgende Errormail wir von Cron verschickt: "fatal error: can't open configuration file /etc/imapd.conf: No such file or directory" Es wurde zwar der Pfad zur Configdatei in /etc/default/cyrus2.2 angepasst (/etc/imapd/imapd.conf) und auch korrekt eingelesen, allerdings verwendet folgender Code: su "--command=/usr/sbin/chk_cyrus" - cyrus | ...[...] "/etc/imapd.conf" als Konfigurationsdatei. Die neue Konfig müsste bei "chk_cyrus" mit "-C" angegeben werden.
Zum Paket cyrus-common gehört die Datei /etc/cron.daily/cyrus-imapd und darin ist der fehlerhafte Aufruf: CONF=/etc/imapd.conf ... start-stop-daemon --start --exec /usr/sbin/chk_cyrus --quiet --chuid cyrus Das ist die Stelle, wo "chk_cyrus" nun mit "-C" aufgerufen werden muss. An diesen Dateien können wir aber nichts ändern. Deshalb müssen wir einen anderen Weg finden, um dem chk_cyrus beizubringen, dass der seine Konfi-Datei unter /etc/imapd suchen soll. Vielleicht ein symlink ?
Ich habe mir einen DC master als mail server eingerichtet (apt-get install univention-mail-server) und auf diesem mail server tritt das Problem auch auf (/var/log/mail.info): 21:51:40 ucs30-64-dc-smb master[22686]: can't open configuration file /etc/imapd/imapd.conf: No such file or directory Etwas andere Meldung, aber im Prinzip das gleiche. Wenn ich den cron job von Hand aufrufe, dann wird die Variable CONF aber korrekt gesetzt und im log die obige Fehlermeldung NICHT auf. sh -x /etc/cron.daily/cyrus-imapd + set -e + LC_ALL=C + export LC_ALL + bak=/var/backups + bakfile=/var/backups/cyrus-mboxlist.txt.gz + CONF=/etc/imapd.conf + CHKCYRUS=0 + [ -r /etc/default/cyrus-imapd ] + . /etc/default/cyrus-imapd + CONF=/etc/imapd/imapd.conf + MASTERCONF=/etc/imapd/cyrus.conf + OPTIONS= + umask 022 + [ -x /usr/sbin/ctl_mboxlist ] + [ -f /usr/lib/cyrus/cyrus-hardwired-config.txt ] + grep -qE ^PACKAGE_VERSION[[:blank:]]+2[.][24] /usr/lib/cyrus/cyrus-hardwired-config.txt + [ -d /var/backups ] + [ -f /var/backups/cyrus-mboxlist.txt.gz ] + mv /var/backups/cyrus-mboxlist.txt.gz /var/backups/cyrus-mboxlist.txt.gz.bak + gzip -9 + start-stop-daemon --start --exec /usr/sbin/ctl_mboxlist --quiet --chuid cyrus -- -d + [ 0 -ne 0 ] + [ -x /usr/sbin/chk_cyrus ] + mktemp -t cyrus-daily-cronjob.XXXXXXXXXX + tmpfile=/tmp/cyrus-daily-cronjob.b2EXymELn6 + trap rm -f "${tmpfile}" 0 + start-stop-daemon --start --exec /usr/sbin/chk_cyrus --quiet --chuid cyrus + rm -f /tmp/cyrus-daily-cronjob.b2EXymELn6 + trap 0 + exit 0 D.h. der Fehler tritt nur in der Laufzeitumgebung des cron jobs auf, nicht in der Laufzeitumgebung eines root users, der sich normal einlogt.
Wie besprochen: Verwendest du da evt. Cyrus 2.4? Auf einem OXASE mit Cyrus 2.2 schlägt auch das händische Ausführen des Cronjobs mit der Meldung fehl.
Ja, ich habe cyrus 2.4 installiert. Tim, wird die E-Mail mit der Fehlermeldung jede Nacht verschickt oder passierte das nur ein Mal ? Ich frage danach, weil ich vermute, das die Mail nur ein Mal verschickt wird, nämlich dann, wenn der mail server ganz frisch aufgesetzt wurde. Auf meinem Test-System existiert die generierte .conf-Datei scheinbar erst seit 21:52 und die Fehlermeldung ist von 21:51:40. ls -l /etc/imapd/imapd.conf -rw-r----- 1 cyrus sasl 1935 6. Jul 21:52 /etc/imapd/imapd.conf Könnte es sein, dass die Datei einfach zu spät generiert wird ?
Um das Problem zu reproduzieren, ist es notwendig von einem UCS 2.4 auszugehen. Ich habe also ein UCS 2.4 als DC master mit cyrus (ohne kolab) installiert. Danach erfolgte ein upgrade auf UCS 2.4-4-7 mit Hilfe von: univention-updater net --ignoressh --ignoreterm Der anschließende upgrade auf UCS 3.0-0 kann genau so angestartet werden, bleibt allerdings hängen mit der Meldung, dass man manuell ein tcs Paket de-installieren soll, um weitermachen zu können. Danach kann dann der upgrade auf UCS 3.0-0 durchlaufen. Auf UCS 3.0-0 ist nun noch immer der cyrus 2.2 installiert. Damit kann nun das Problem reproduziert werden durch manuelles Anstarten des cron jobs: /etc/cron.daily/cyrus22 fatal error: can't open configuration file /etc/imapd.conf: No such file or directory fatal error: can't open configuration file /etc/imapd.conf: No such file or directory Diese Fehlermeldungen treten nun auf Kommandozeile auf, sind aber nicht im /var/log/mail.log zu finden. Egal, zum Reproduzieren des Problems reicht das.
Ich hab einen patch für cyrus 2.2 eingecheckt und bauen lassen. Das neu gebaute Paket lasse ich noch mal auf einer frischen VM installieren, um damit zu testen. cd patches/cyrus-imapd-2.2/3.0-0-0-ucs/2.2.13-19+squeeze1-ucs3.0-2 cat option-C-for_etc_imapd.patch patch to pass option -C to ctl_mboxlist and chk_cyrus so that they use /etc/imapd/imapd.conf (Bug #27780) diff -ur cyrus-imapd-2.2-2.2.13/debian/cyrus-common-2.2.cyrus22.cron.daily cyrus-imapd-2.2-2.2.13/debian/cyrus-common-2.2.cyrus22.cron.daily --- cyrus-imapd-2.2-2.2.13/debian/cyrus-common-2.2.cyrus22.cron.daily 2012-07-11 12:26:05.000000000 +0200 +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-common-2.2.cyrus22.cron.daily 2012-07-11 12:40:09.402214143 +0200 @@ -41,7 +41,7 @@ [ -d $bak ] || ( mkdir -p $bak ; chmod 600 $bak ) [ -f $bakfile ] && mv ${bakfile} ${bakfile}.bak # su "--command=/usr/sbin/ctl_mboxlist -d" - cyrus | ... -start-stop-daemon --start --exec /usr/sbin/ctl_mboxlist --quiet --chuid cyrus -- -d | gzip -9 >${bakfile} +start-stop-daemon --start --exec /usr/sbin/ctl_mboxlist --quiet --chuid cyrus -- -d -C "$CONF" | gzip -9 >${bakfile} # 2. clean up all leftover .stage directories in all spools listed in # the default config file @@ -66,7 +66,7 @@ tmpfile=$(mktemp -t cyrus-daily-cronjob.XXXXXXXXXX) trap 'rm -f "${tmpfile}"' 0 # su "--command=/usr/sbin/chk_cyrus" - cyrus | ... - start-stop-daemon --start --exec /usr/sbin/chk_cyrus --quiet --chuid cyrus >"${tmpfile}" 2>&1 || cat "${tmpfile}" 1>&2 + start-stop-daemon --start --exec /usr/sbin/chk_cyrus --quiet --chuid cyrus -- -C "$CONF" >"${tmpfile}" 2>&1 || cat "${tmpfile}" 1>&2 rm -f "${tmpfile}" trap '' 0 }
Ich hab noch mal einen snapshot meiner VM von heute Morgen genommen und auf 3.0-1 e93 mit allen aktuellen Paketen von 3.0-2 aktualisiert. Nun meldet /etc/cron.daily/cyrus22 keine Fehler mehr und im script ist die Option -C (wie von Tim vorgeschlagen) eingebaut. /etc/cron.daily/cyrus22 sh -x /etc/cron.daily/cyrus22 + set -e + LC_ALL=C + export LC_ALL + bak=/var/backups + bakfile=/var/backups/cyrus-mboxlist.txt.gz + CONF=/etc/imapd.conf + CHKCYRUS=0 + '[' -r /etc/default/cyrus2.2 ']' + . /etc/default/cyrus2.2 ++ CONF=/etc/imapd/imapd.conf ++ MASTERCONF=/etc/imapd/cyrus.conf ++ OPTIONS= + umask 022 + '[' -x /usr/sbin/ctl_mboxlist ']' + '[' -f /usr/lib/cyrus/cyrus-hardwired-config.txt ']' + grep -qE '^PACKAGE_VERSION[[:blank:]]+2[.]2' /usr/lib/cyrus/cyrus-hardwired-config.txt + '[' -d /var/backups ']' + '[' -f /var/backups/cyrus-mboxlist.txt.gz ']' + mv /var/backups/cyrus-mboxlist.txt.gz /var/backups/cyrus-mboxlist.txt.gz.bak + gzip -9 + start-stop-daemon --start --exec /usr/sbin/ctl_mboxlist --quiet --chuid cyrus -- -d -C /etc/imapd/imapd.conf + '[' 0 -ne 0 ']' + '[' -x /usr/sbin/chk_cyrus ']' ++ mktemp -t cyrus-daily-cronjob.XXXXXXXXXX + tmpfile=/tmp/cyrus-daily-cronjob.gC6bkCIiDQ + trap 'rm -f "${tmpfile}"' 0 + start-stop-daemon --start --exec /usr/sbin/chk_cyrus --quiet --chuid cyrus -- -C /etc/imapd/imapd.conf + rm -f /tmp/cyrus-daily-cronjob.gC6bkCIiDQ + trap '' 0 + exit 0
Mit Cyrus2.2 wird jetzt im Cronjob korrekt die Datei /etc/imapd/imapd.conf für die Ausführung von ctl_mboxlist und ctl_cyrus verwendet. Der Cyrus 2.4 Cronjob /etc/cron.daily/cyrus-imapd verwendet aber weiterhin die Datei /etc/imapd.conf. Dies führt ggf. zu falschem Verhalten, weil diese Datei nicht die richtigen Einstellungen enthält. Der Patch muss auch für Cyrus 2.4 übernommen werden → REOPEN
auch für 2.4 übernommen.
(In reply to comment #8) > Mit Cyrus2.2 wird jetzt im Cronjob korrekt die Datei /etc/imapd/imapd.conf für > die Ausführung von ctl_mboxlist und ctl_cyrus verwendet. Dies gilt jetzt auch für den Cyrus 2.4. Beim Update wird die Datei automatisch aktualisiert. Bei beiden Versionen kann über die /etc/default/cyrus-imapd mit der Variable "CONF" eine alternative Datei definiert werden. → VERIFIED
UCS 3.0-2 has been released: http://forum.univention.de/viewtopic.php?f=54&t=1905 If this error occurs again, please use "Clone This Bug".