Archiv verlassen und diese Seite im Standarddesign anzeigen : Cyrus Postfach per Kommandozeile leeren
Hallo,
ich suche nach einer Möglichkeit ein Cyrus Postfach per Kommandozeile zu leeren, um das per Script zu erledigen (geht um ein Postfach in das Spam für sa-learn kommt, das dann per Cron ausgeführt wird und danach sollte das Postfach geleert werden...). Ich habe leider die man zu wenig verstanden, sollte es gehen....
Einfach die Dateien rauszulöschen war nicht erfolgreich, da Cyrus einen Index seperat abspeichert und anscheinend durcheinander kommt wenn ich Die Mails einfach von Hand rauslösche.
Kennt jemand einen Weg hierfür?
Danke!
Stolzi
Das würd ich auch mal gerne wissen.
Russel-Athletic
28.04.04, 22:32
Wo wir gerade dabei sind würde ich es auch gern wissen, am besten in Verbindung mit einem Cronjob.
Ich denke das geht irgendwie über cyradm.
Habe ein wenig darüber nachgedacht und denke nicht dass das die Aufgabe von Cyrus ist. Eher die eines Clients wie "mail", der es aber nicht kann was ich aus der man gelesen habe :-(
Kennt niemand einen Mailclient mit dem man aus der Kommandozeile ein Postfach leeren kann?
Hallo,
das leeren des Postfaches ist in der Tat eine Aufgabe des MUA -> Mail User Agents -> Mail-Clients.
1. Relativ einfach würdest Du zu einer halbwegs funktionierenden Lösung kommen, wenn Du das Postfach regelmäßig löschst und dann direkt wieder neu anlegst. Vorausgesetzt, der User cyrus hat kein Passwort, ginge das zum Beispiel so:
# Mailbox loeschen
echo -e "deletemailbox sa-learn\nquit\n" | cyradm --user cyrus localhost
# Mailbox neu anlegen
echo -e "createmailbox sa-learn\nquit\n" | cyradm --user cyrus localhost
# ACL zum loeschen fuer cyrus setzen
echo -e "setacl dummy cyrus c\nquit\n" | cyradm --user cyrus localhost
Bei dieser Lösung könnte jedoch das Problem auftreten, dass genau in dem Moment zwischen der Löschung und dem Neuanlegen der Mailbox eine Mail in das Postfach zugestellt werden soll, diese aber dann mit einem SMPT Errorcode 550 (Mailbox nicht verfügbar) zurück an den Absender gesendet wird.
2. Eine andere mögliche Lösung wäre das Auslesen der Mailbox über einen MUA -> z.B. fetchmail.
In der ~/.fetchmailrc (auf dem Server oder auf einem remote-Host) kannst Du beispielsweise eintragen:
poll <Server> protocol imap username "sa-learn" password "xyz" is <lokaler Dummyuser>
Der Aufruf von "fetchmail" unter dem Account, unter dem der Eintrag angelegt ist, führt dann zum Auslesen der Mailbox und zum Löschen der Nachrichten im Postfach. Allerdings werden die gepollten Mails dann in über den lokalen Mailer dem Postfach von "lokaler Dummyuser" zugestellt. Das muss man dann auch wieder von Zeit zu Zeit löschen ... ;)
3. Bestimmt gibt es auch noch einfachere Lösungen ... wir arbeiten dran ;)
Harry
Wens noch beschäftigt ich habe nun noch eine Lösung gefunden die zumindest bei mir ohne Kompromisse funktioniert!
Die Lösung lautet: über Telnet die Mailbox löschen und wieder anlegen. Da werden viell einige sagen: Ja super aber wie soll das über ein Script funktionieren?
Die Lösung lautet "expect". Einfach das Projekt expect installieren. Dann kann man mit zB dieser Befehlsfolge in einer Datei gespeichert ein Postfach "spam" im Konto "learn" auf localhost 127.0.0.1 im Imap Konto 143 löschen:
--> cut
#!/usr/bin/expect
spawn telnet 127.0.0.1 143
expect "OK" {send "? login learn Super-geheimes-Passwort\r"}
expect "OK" {send "? delete INBOX.spam\r"}
expect "OK" {send "? create INBOX.spam\r"}
expect "OK" {send "? logout\r"}
expect {
"Connection closed" {puts stdout "\nMailbox erfolgreich geleert!"}
default {puts stdout "\nFehler!"}
}
<-- cut
Hoffe geholfen zu haben.
Grüsse
Stolzi
Hallo
es geht schon das man die Dateien in dem Ordner mittels Script löscht, nur muss man anschliessend ein "reconstruct" der geleerten Mailbox durchführen, damit die Inhalte von cyrus.cache, cyrus.index und cyrus.header wieder richtig gestellt werden.
z.b.:
cyrreconstruct -f user.username.sa-learn
Will man dieses Kommando für mehrere User ausführen einfach anstatt Username ein Prozentzeichen einsetzen.
ausserdem bringt cyrus ein binary mit das sich ipurge nennt, dieses kann mails abhängig von ihrem alter löschen, habe die genaue Funktionsweise dieses Programmes allerdings selber noch nicht ausprobiert, denke aber das es z.B. zum wöchentlichen löschen von "Mistkübeln" nicht uninteressant ist.
lg
tomk
Den Befehl "cyrreconstruct" gibt es bei mir leider nicht (genau nach soetwas habe ich nämlich gesucht), gibt es denn keine saubere Möglichkeit? Die anderen von oben gefallen mir auch nicht wirklich... :ugly:
Roger Wilco
10.02.05, 15:44
Es werden hier ja nette Verrenkungen vorgeschlagen, dabei bringt Cyrus doch schon was passendes mit: ipurge
Damit kann man Mails eines ganzes Postfachs oder auch nur eines speziellen Ordners nach bestimmten Kriterien (Größe, Alter...) löschen lassen.
Wobei ipurge speziel nichts mit cyrus zu tun hat.
Christian
Roger Wilco
23.05.05, 15:55
Wobei ipurge speziel nichts mit cyrus zu tun hat.
Außer, dass es eben als Tool mit Cyrus IMAPd verteilt wird...
Servus!
Auf der postfix-users Mailingliste gabs die letzten Tage was dazu:
http://listi.jpberlin.de/pipermail/postfixbuch-users/2005-May/thread.html
(Weiter unten, such nach Cyrus).
Grüße, Stefan
http://listi.jpberlin.de/pipermail/postfixbuch-users/2005-May/thread.html
ziemlich weit unten is ne nette diskussion darueber und relativ aufschlussreich.
EDIT: oh, den letzten post uebersehen .. sorry
Werd ich mir mal ansehn. Danke.
Meine expect Variante läuft aber nun ca. 1 Jahr einwandfrei. Bin voll zufrieden!
Habs jetz durchgelesen... Ich halte meine Expect Variante nach wie vor für die sauberste bzw einfachste Lösung. Da kanns einfach keine Probs mit Cyrus geben, da ich den Ordner gleich leere wies ein Mailclient macht.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.