Hook für IMAP Komandos

Status
Für weitere Antworten geschlossen.

Hans1234

Benutzer
Mitglied seit
15. Okt 2011
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
Hey,

danke für die Antwort! Ich habs jetz auch getan und es ging ohne Probleme! Mein Ziel war ja den Abruf der Mails häufig durchzuführen, wenn ein Benutzer verbunden ist.

Es gibt die "rc"-File mit der Konfiguration für getmail im jeweiligen .getmail Ordner.
Im home Ordner dann jeweils eine getmail.sh:
#!/bin/sh
/opt/bin/getmail -q -l --rcfile=/volume1/homes/Hanzzz/.getmail/gmx.rc

Jetzt will ich natürlich auch das getmail script ausm Wiki benutzen (http://www.synology-wiki.de/index.php/Getmail_script). Wenn ich das manuell ausführe klappt das auch - also es werden Mails in die Mailbox geliefert. Ich würde das script aber gerne beim Starten der DS automatisch ausführen und stoße dabei auf Probleme.

Frage 1:
Muss ich /bin/busybox bei jedem Start nach /tmp/ kopieren und den Symlink zwischen /tmp/busybox und /tmp/sh erstellen?
Denn das habe ich wie im Wiki beschrieben manuell gemacht:
cp /bin/busybox /tmp/
ln -s /tmp/busybox /tmp/sh
An dieser Stelle: Warum kann das nicht auch im Skript erfolgen?

Frage 2:
In welchem Ordner muss ich das getmail script aus dem Wiki ablegen damit es automatisch gestartet wird? Muss ich beim Start ein Script ausführen, das busybox kopiert, sh verlinkt und dann das WIKI-getmail.sh startet (welches dann als Endlosschleife läuft)?

Frage 3:
Was muss ich machen damit das Script "ordentlich" beim Runterfahren der DS beendet wird?

Frage 4:
Muss ich im getmail.sh der User noch den PATH ändern? Im Moment sieht es ja so aus:
#!/bin/sh
/opt/bin/getmail -q -l --rcfile=/volume1/homes/Hanzzz/.getmail/gmx.rc

Vielen Dank für die Hilfe!
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
1. weil das Script den Interpreter in tmp sucht. Erste Zeile #!/tmp/sh Das muss beim Aufruf des Scriptes vorhanden sein, sonst gibt es einen Fehler. Du kannst das erstellen des Links und kopieren der Datei, aber z.B. in einem anderen Script machen, welches vor dem getmail Script aufgerufen wird.

2. Auto-Startscripte kann man in /usr/syno/etc.defaults/rc.d/ oder /opt/etc/init.d/ ablegen

3. theoretisch braucht es für den Stop nicht viel. Denn beim Stop sollte die Firmware einfach alle noch laufenden Prozesse killen.

4. Nope der Path im getmail Script selber sollte schon #!/bin/sh sein
 

Hans1234

Benutzer
Mitglied seit
15. Okt 2011
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
Okay, hab das jetzt so gelöst:

1. beim Hochfahren startet S11init_mail.sh (liegt in /opt/etc/init.d)
#!/bin/sh
cp /bin/busybox /tmp/
ln -s /tmp/busybox /tmp/
sh /volume1/getmail_check.sh

2. aus dem Skript wir getmail_check.sh aufgerufen. (so wie aus dem Wiki das "getmail script"; su USER hab ich in der jeweiligen getmail.sh)

3. getmail.sh in den User-ordnern verwendet wiederum die Konfig in .getmail des User

Das scheint eigentlich auch zu funktionieren, also kommen Nachrichten in der Mailbox an. Allerdings blinkt jetzt die blaue LED (Power) an der DS die ganze Zeit. Da ich keine Ahnung habe, vermute ich mal:
Das Startskript wird gestartet und ruft das getmail_check in einer Endlosschleife auf. Allerdings wird S11init_mail.sh nicht beendet, weil das andere ja durchweg läuft?!? (zumindest ist das der Fall wenn ich S11init_mail manuell starte)
Evtl. hört das Blinken der LED ja erst auf wenn alle Startupskripte ausgeführt wurden... Oder hast du eine Idee woran es liegen kann und wie ich es beheben könnte?

Achja, wenn ich das Skript aus /opt/etc/init.d entferne und neustarte ist die Lampe nach einer Zeit wieder konstant am Leuchten. Es liegt also definitiv an "den" Skripten.

Und noch eine Frage zum getmail Script: Kann ich den folgenden Abschnitt rausnehmen, wenn ich nicht will, dass die Mails nach einer bestimmten Zeit abgerufen werden, sondern nur wenn User angemeldet sind?
if test `expr $i % 3600` -eq 0 ; then
i=0
for ii in `find /volume1/homes/ -name $pfad_getmail`; do
tt=`ls -all $ii | cut -d' ' -f6`
# siehe oben (Zeile 44-46)
su $tt -c "$ii" >> $getmail_log 2>&1
#$ii >> $getmail_log 2>&1
done
fi

Vielen Dank und Grüße!
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
1.er Link sollte /tmp/busybox sein und nicht nur /tmp
2. setz ein & hinten an deinen Aufruf im Startscript. & gibt die Shell sofort wieder zurück. Ohne müsstest du warten bis das Script zu Ende ist, was bei einer Endlosschleife sehr sehr sehr lange dauern kann ;)
3. klar kannst du das auch entfernen. Sei einfach sicher, dass du keinen Synthax-Fehler dadurch erzeugst
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat