"launchd" Job für fetchmail bricht nach 60 Minuten ab

H

hans-mann

Mitglied
Thread Starter
Dabei seit
12.11.2004
Beiträge
20
Reaktionspunkte
0
Hallo,

ich habe mir zum abholen der Mails (Mailserver) über fetchmail folgenden Job "launchd" erstellt:

----------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple$
<plist version="1.0">
<dict>
<key>Label</key>
<string>fetchmail</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/fetchmail</string>
</array>
<key>StartInterval</key>
<integer>300</integer>
</dict>
</plist>
------------------------------------------------------------

Er startet "fetchmail" alle 5 Minuten, was ja ok ist.
Leider funktioniert das nur genau eine Stunde!

Wer kann mir sagen was ich ändern muss damit er es weiter macht?!?

Vielen Dank
 
setz doch mal die debug option oder was vielleicht die bessere lösung wäre:
setz fetchmail in den daemon mode und lass fetchmail die intervalle machen...
 
Da ich mit lauchd nicht warm werde, startet bei mir fetchmail per /Library/StartupItems. Interesse?
 
hans-mann schrieb:
Hallo,

ich habe mir zum abholen der Mails (Mailserver) über fetchmail folgenden Job "launchd" erstellt:


Er startet "fetchmail" alle 5 Minuten, was ja ok ist.
Leider funktioniert das nur genau eine Stunde!

Wer kann mir sagen was ich ändern muss damit er es weiter macht?!?

Leider sind nicht alle Systemprozesse launchd konform. Launchd stellt gewisse Ansprüche an Systemprozesse um diese abzuarbeiten (steht in der Manpage). Evtl. finden sich Fehlermeldungen in der systemlog.

Es muss nicht an launchd liegen, im Zweifel einfach einen Cronjob verwenden. Lingon leistet auch gute Dienste beim Erzeugen der XML Dateien, evtl. fehlen ein paar Parameter.

viele Grüße,
Maximilian
 
MaxS schrieb:
Es muss nicht an launchd liegen, im Zweifel einfach einen Cronjob verwenden.

warum einen cronjob machen, wenn fetchmail schon einen daemon mode mitbringt, der automatisch in intervallen pollt? ;)
 
oneOeight schrieb:
warum einen cronjob machen, wenn fetchmail schon einen daemon mode mitbringt, der automatisch in intervallen pollt? ;)

So verkehrt ist die Idee auch nicht, denn mein Exemplar vergißt nach einem Suspend, syslog zu bedienen. Eher ein kosmetisches Problem, zugegeben...
 
oneOeight schrieb:
(..) wenn fetchmail schon einen daemon mode mitbringt, der automatisch in intervallen pollt? ;)

Wie meinst du das? Bzw. wo soll ich den setzen?
 
<key>Program</key>
<string>/usr/bin/fetchmail</string>
<key>ProgramArguments</key>
<array>
<string>-d 300</string>
</array>

das startintervall kannst du rausnehmen, stattdessen einfach ein
<key>RunAtLoad</key>
<true/>

das startet dann den fetchmail daemon direkt, wenn du den rechner startest...
 
ok, habe ich probiert. Der Daemon wird gestartet aber das Programm "fetchmail" startet nicht alle 300 Sek. Ich habe im Terminal "fetchmail -d 300" eingegeben und hier die gleiche Ausgabe bekommen:

"fetchmail[245]: starting fetchmail 6.2.5 daemon \n"

Er läuft aber nicht alle 5 Minuten um die Mails abzuholen?!? Habe ich noch etwas vergessen?
 
hans-mann schrieb:
Habe ich noch etwas vergessen?

Existiert ~/.fetchmailrc? Oder /etc/fetchmailrc (dann fetchmail -f /etc/fetchmailrc -d ...)?
 
Ich habe jetzt noch einmal getestet. Habe den Intervall auf 60 bzw. 120 Sek gesenkt um nicht immer eine Stunde zu warten.

Hier das Problem: Die Aktion bricht nach 10 Versuchen ab. Liegt also nicht an der Zeit!! Anbei die "mail.log" und die "system.log"

Aug 16 19:01:15 localhost fetchmail[35]: Query status=11 (DNS)\n
Aug 16 19:01:16 localhost postfix/master[46]: daemon started -- version 2.1.5
Aug 16 19:03:21 mini fetchmail[234]: No mail for p6735738 at pop.1und1.com\n
Aug 16 19:05:21 mini fetchmail[246]: No mail for p6735738 at pop.1und1.com\n
Aug 16 19:07:20 mini fetchmail[251]: No mail for p6735738 at pop.1und1.com\n
Aug 16 19:09:20 mini fetchmail[256]: No mail for p6735738 at pop.1und1.com\n
Aug 16 19:11:20 mini fetchmail[261]: No mail for p6735738 at pop.1und1.com\n
Aug 16 19:13:20 mini fetchmail[266]: No mail for p6735738 at pop.1und1.com\n
Aug 16 19:15:20 mini fetchmail[271]: No mail for p6735738 at pop.1und1.com\n
Aug 16 19:17:20 mini fetchmail[276]: No mail for p6735738 at pop.1und1.com\n
Aug 16 19:19:20 mini fetchmail[281]: No mail for p6735738 at pop.1und1.com\n
mini:~ root# tail -f /var/log/system.log
Aug 16 19:11:20 mini launchd: fetch: 4 more failures without living at least 60 seconds will cause job removal
Aug 16 19:13:20 mini launchd: fetch: exited with exit code: 1
Aug 16 19:13:20 mini launchd: fetch: 3 more failures without living at least 60 seconds will cause job removal
Aug 16 19:15:20 mini launchd: fetch: exited with exit code: 1
Aug 16 19:15:20 mini launchd: fetch: 2 more failures without living at least 60 seconds will cause job removal
Aug 16 19:17:20 mini launchd: fetch: exited with exit code: 1
Aug 16 19:17:20 mini launchd: fetch: 1 more failure without living at least 60 seconds will cause job removal
Aug 16 19:19:20 mini launchd: fetch: exited with exit code: 1
Aug 16 19:19:20 mini launchd: fetch: too many failures in succession
 
das liegt daran, dass fetchmail mit exit code 1 beendet, wenn es keine mails zum abrufen hat...
und der launchd denkt sich "hey, da stimmt was nicht, weil kein exit mit 0" und beendet das ganze...

hab jetzt in launchd.plist keine option gefunden das zu ignorieren...
also wirst du dir mal eine fetchmailrc basteln dürfen...
 
oneOeight schrieb:
also wirst du dir mal eine fetchmailrc basteln dürfen...
ok, meine fetchmailrc beinhaltet bisher nur die üblichen Informationen für fetchmail um die Mails abzuholen:

poll pop.domain.com proto pop3
user 'user1' with password 'secret' is user1 here

Was meinst du kann ich hinzufügen um keine exit mit 1 zu bekommen? Wer hat denn einen Mailserver mit fetchmail am laufen? Bin jetzt wirklich überfragt was ich dort ändern kann!
 
die exit werte kannst du wohl nicht verändern...
du könntest ein kleines wrapper script machen...

#!/bin/sh
/usr/bin/fetchmail
exit 0

und das per launchd aufrufen...

oder halt dich mal mit dem daemon mode von fetchmail beschäftigen...
eigentlich sollte das -d 300 reichen...
alternativ kannst du in die fetchmailrc "set daemon 300" schreiben, dann geht der auch in daemon mode mit 5 min intervall...
bist du sicher, dass fetchmail im daemon mode keine mails alle 5 min abgerufen hat?
 
VIELEN DANK, es geht! :)

Du hattest RECHT, er hat klar die Mails im deamon Mode abgerufen.
Die /var/log/mail.log hat mit nur keine Message gegeben wenn keine
Mails vorhanden waren. Daher vermutete ich, dass er auch nichts tun würde!
 
Zurück
Oben Unten