
Psimon
pSY
Hallo zusammen,
folgendes Szenario: ich habe einen Cyrus IMAP Server auf dem es genau eine Mailbox gibt (nämlich meine). In dieser Mailbox gibt es eine Ordnerstruktur mit eingen tausend Emails, leider auch ettliche Duplikate, die es zu löschen gilt.
Kurzer Hand hab ich gegoogelt und ein nettes Perl Script im tar.gz der IMAP Tools (Quelle: http://www.athensfbc.com/imap_tools/) gefunden, welches diese Aufgabe, das Finden und löschen der Duplikate, meistern soll. Leider findet dieses Script kein einziges meiner Duplikate, obwohl ich doch genau weiß, dass dort duzende vorhanden sind. In anderen Worten, das Script tut nicht wie es soll.
Meine Google Recherge nach etwas anderem, etwas vergleichbaren, führte zu nichts. Wieso sollte man das Rad auch neu erfinden? Also zurück zum Script von IMAP Tools.
Es listet zwar die Ordner auf, überprüft jedoch keine Emails. Es dauert viel zu kurz, dafür das massenhaft Nachrichten da sind und es erscheint letztendlich auch die Meldung "Total messages purged 0", wie ihr wie folgt sehen könnt:
Nachfolgend die Antwort von 'bytepool', die ich erst gerade im Google Cache gesehen habe (warum dieser Thread gelöscht wurde verstehe ich überhaupt nicht):
Hierzu ist nun zu sagen, dass die Option -p keinen Unterschied gemacht hat. Die Debugausgabe habe ich in Zeile 49 eingesetzt und bekam folgendes Ergebnis:
Heißt also das mbxs tatsächlich leer ist - Schaaaaajseeeee!! Bedeutet wiederrum das die Zeile
mir kein Array zurückliefert. Was kann ich tun?
Schöne Grüße,
Simon
folgendes Szenario: ich habe einen Cyrus IMAP Server auf dem es genau eine Mailbox gibt (nämlich meine). In dieser Mailbox gibt es eine Ordnerstruktur mit eingen tausend Emails, leider auch ettliche Duplikate, die es zu löschen gilt.
Kurzer Hand hab ich gegoogelt und ein nettes Perl Script im tar.gz der IMAP Tools (Quelle: http://www.athensfbc.com/imap_tools/) gefunden, welches diese Aufgabe, das Finden und löschen der Duplikate, meistern soll. Leider findet dieses Script kein einziges meiner Duplikate, obwohl ich doch genau weiß, dass dort duzende vorhanden sind. In anderen Worten, das Script tut nicht wie es soll.
Meine Google Recherge nach etwas anderem, etwas vergleichbaren, führte zu nichts. Wieso sollte man das Rad auch neu erfinden? Also zurück zum Script von IMAP Tools.
Es listet zwar die Ordner auf, überprüft jedoch keine Emails. Es dauert viel zu kurz, dafür das massenhaft Nachrichten da sind und es erscheint letztendlich auch die Meldung "Total messages purged 0", wie ihr wie folgt sehen könnt:
psimongate:/ # perl delIMAPdups.pl -d -S 192.168.0.1/<meinusername>/<meinpassword>
delIMAPdups.pl starting
Connecting to 192.168.0.1
<< * OK PsimonGate Cyrus IMAP4 v2.2.12 server ready
connected to 192.168.0.1
>> 1 LOGIN <meinusername> <meinpassword>
<< 1 OK User logged in
Logged in as <meinusername>
>> 1 LIST "" *
<< * LIST (\HasChildren) "." "INBOX"
<< * LIST (\HasChildren) "." "INBOX.Archiv_Ausgang"
<< * LIST (\HasNoChildren) "." "INBOX.Archiv_Ausgang.2000"
<< * LIST (\HasNoChildren) "." "INBOX.Archiv_Ausgang.2001"
<< * LIST (\HasNoChildren) "." "INBOX.Archiv_Ausgang.2002"
<< * LIST (\HasNoChildren) "." "INBOX.Archiv_Ausgang.2003"
<< * LIST (\HasNoChildren) "." "INBOX.Archiv_Ausgang.2004"
<< * LIST (\HasNoChildren) "." "INBOX.Archiv_Ausgang.2005"
<< * LIST (\HasNoChildren) "." "INBOX.Archiv_Ausgang.2006"
<< * LIST (\HasChildren) "." "INBOX.Archiv_Eingang"
<< * LIST (\HasNoChildren) "." "INBOX.Archiv_Eingang.2000"
<< * LIST (\HasNoChildren) "." "INBOX.Archiv_Eingang.2001"
<< * LIST (\HasNoChildren) "." "INBOX.Archiv_Eingang.2002"
<< * LIST (\HasNoChildren) "." "INBOX.Archiv_Eingang.2003"
<< * LIST (\HasNoChildren) "." "INBOX.Archiv_Eingang.2004"
<< * LIST (\HasNoChildren) "." "INBOX.Archiv_Eingang.2005"
<< * LIST (\HasNoChildren) "." "INBOX.Archiv_Eingang.2006"
<< * LIST (\HasNoChildren) "." "INBOX.Spam"
<< * LIST (\HasChildren) "." "INBOX.wichtiges"
<< * LIST (\HasNoChildren) "." "INBOX.wichtiges.drafts"
<< * LIST (\HasNoChildren) "." "INBOX.wichtiges.ebay"
<< * LIST (\HasNoChildren) "." "INBOX.wichtiges.kskms"
<< * LIST (\HasNoChildren) "." "INBOX.wichtiges.mnet"
<< * LIST (\HasNoChildren) "." "INBOX.wichtiges.mvv"
<< * LIST (\HasNoChildren) "." "INBOX.wichtiges.notizen"
<< * LIST (\HasChildren) "." "INBOX.wichtiges.othas"
<< * LIST (\HasNoChildren) "." "INBOX.wichtiges.othas.foren"
[...]
<< * LIST (\HasNoChildren) "." "INBOX.wichtiges.paypal"
<< * LIST (\HasNoChildren) "." "INBOX.wichtiges.postkarten"
<< * LIST (\HasNoChildren) "." "INBOX.wichtiges.privates"
<< * LIST (\HasNoChildren) "." "INBOX.wichtiges.quittungen"
<< * LIST (\HasNoChildren) "." "INBOX.wichtiges.registrierungen"
<< * LIST (\HasNoChildren) "." "INBOX.wichtiges.vodaphone"
<< * LIST (\HasNoChildren) "." "INBOX.wichtiges.webde"
<< 1 OK Completed (0.000 secs 43 calls)
Looking for duplicate messages
>> 1 LOGOUT
<< * BYE LOGOUT received
<< 1 OK Completed
Total messages purged 0
Nachfolgend die Antwort von 'bytepool', die ich erst gerade im Google Cache gesehen habe (warum dieser Thread gelöscht wurde verstehe ich überhaupt nicht):
hi,
ich habe mir das fragliche Skript mal angeschaut, mir fallen so auf Anhieb 2 Sachen ein:
Erstens, hast du es denn mal mit der Option -p versucht? Bei deinem run oben hast du nur die debug option -d mit angegeben, aber nicht -p, was laut Doku die duplicates loeschen sollte.
Zweitens, bis Zeile 49 scheint ja alles normal durchzulaufen, aber Zeile 55
Code:print STDOUT " Checking mailbox $mbx\n";
wird bei deinem Probe run nicht ausgegeben, also wuerde ich die Vermutung aeussern, dass die foreach Schleife nicht durchlaufen wird, weil das Array @mbxs leer ist.
Lass dir doch spasseshalber mal den inhalt von @mbxs ausgeben, also fuege z.B. vor Zeile 49 ein
Code:print STDOUT " Inhalt von @mbxs: " . @mbxs . "\n";
@mbxs sollte nicht leer sein, falls doch macht er natuerlich nix.
edit:
Btw., du haettest vielleicht groessere Resonanz gefunden, wenn du das fragliche Skript mal angehangen oder gepostet haettest ;p
mfg,
bytepool
Hierzu ist nun zu sagen, dass die Option -p keinen Unterschied gemacht hat. Die Debugausgabe habe ich in Zeile 49 eingesetzt und bekam folgendes Ergebnis:
Code:
Inhalt von : 0
Heißt also das mbxs tatsächlich leer ist - Schaaaaajseeeee!! Bedeutet wiederrum das die Zeile
Code:
@mbxs = &getMailboxList($sourceUser, 'SRC');
mir kein Array zurückliefert. Was kann ich tun?
Schöne Grüße,
Simon
Zuletzt bearbeitet: