[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: IMAP accounts und Mailfolder size automatische ermitteln



Hallo Michelle!

Michelle Konzack schrieb am Samstag, den 15. März 2008:

> ich bin auf der suche nach einem Tool, welches die 
> imaps://server/INBOX
> abfrägt und die Größe in kByte zurückliefert und nicht nur die Anzahl
> der messages...
> 
> Kann mir jemand weiterhelfen?

Das geht mit awk theoretisch sogar auf der Konsole:

,----[ ~$ cat ~/telnet_imap.txt ]-
| 1 login benutzer password
| 2 select INBOX
| 3 fetch 1:* (RFC822.SIZE)
| 4 logout
`----

#v+
~$ cat telnet_imap.txt |nc localhost 143 |awk '/RFC822.SIZE/ 
{i+=substr($5,1,index($5, ")")-1);} END {printf "Size: %.2f 
kB\n",i/1024;}'
Size: 25186,62 kB
#v-

Ungetestet und ich bin mir nicht sicher, ob die Ausgabe des IMAP Fetch 
Befehls standardisiert ist, also ob die Ausgabe wirklich immer so 
aussieht, oder ob sie bei anderen Servern auch etwas anders aussehen 
kann.
Dann müßte evtl. noch der substr. Ausdruck angepasst werden.

Soll das ganze noch rekursiv über alle Folder laufen, sollte ein 
kleines Perl-script helfen:

,----
| #!/usr/bin/perl
| 
| use Net::IMAP::Simple;
| use strict;
| 
| my $password="password";
| my $user="user";
| my $host="localhost";
| my $seperator=".";
| 
| my $imap = Net::IMAP::Simple->new($host) || die 
| $Net::IMAP::Simple::errstr."\n";
| 
| unless($imap->login($user, $password)){
| 	die "Login failed: " . $imap->errstr() . "\n";
| }
| my @mb=$imap->mailboxes;
| my $size = 0;
| 
| foreach (@mb){
|     my $num = $imap->select($_);
| # Die Variante $imap->list funktioniert leider nicht,
| # also über alle Nachrichten loopen.
|         for (my $i=1; $i <= $num; $i++){
|             $size += $imap->list($i);
|         }
| };
| 
| printf "%.2f kB\n", $size/1024;
| 
| $imap->quit;
`----

benötigt aber das Perl-Modul Net::IMAP::Simple. Das passende Paket ist
libnet-imap-simple-perl.

Dann könnte man das Ganze noch per Parameter steuerbar machen und die 
Fehlerbehandlung verbessern, das sollte dann nicht mehr allzu 
schwierig sein. 

Grüße,
Christian
-- 
hundred-and-one symptoms of being an internet addict:
95. Only communication in your household is through email.


Reply to: