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

Re: IMAP accounts und Mailfolder size automatische ermitteln



Hallo Christian,

Am 2008-03-18 09:07:41, schrieb Christian Brabandt:
> Das geht mit awk theoretisch sogar auf der Konsole:

...wenn man kein TLS/SSL verwenden muß.  :-/

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

ich dachte, das würde mit dem LIST command funktionieren...

> #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-

Ausprobieren tu ichs trotzdem, mal sehn was der Server sagt...

> Soll das ganze noch rekursiv über alle Folder laufen, sollte ein 

Genau, das ist mein weiters Problem...

Da sind neben der INBOX noch ein INBOX.Spamverdacht und INBOX.Virusverdacht

> 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;
> `----

Geht das auch mit TLS/SSL?

Das Zertifikat liegt bei mir im ~/.mutt/ Verzeichnis rum.

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

Dachte ich mir.

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

Ich kann aber kein Perl, auch wenn es logisch aussieht.  Warscheinlich
würde ich es hinbekommen mit ein paar Wochen herumexperimentieren, nur
werde ich derzeit (seit Montag 2008-03-10) massivst mit SPAM zugemüllt
und ich kann jetzt definitiv meinen Mailaccount <linux4michelle> nicht
mehr per GSM leeren und muß jetzt eben mit diesem script meine Mailboxen
alle 3 Stunden einmal per GSM checken, um zu wissen wann ich wieder ins
Interet-Cafe muß.

Anm.: Letzte Woche habe ich über das Debian-BTS rund 186 MByte
      Spam bekommen was rund 30.000 Spams entspricht.   :-(

Könntest Du es mir bitte anpassen das ich es mit:

   perl-script --user=<user> --pass=<pass>

aufrufen kann und es die Ordner

    imaps://mx.freenet.de/INBOX
    imaps://mx.freenet.de/INBOX.Spamverdacht
    imaps://mx.freenet.de/INBOX.Virusverdacht

Anm. 1: Ich habe in /usr/bin nach dem "#!/usr/bin/perl" gegreped und ein
paar Sachen gefunden, nur geht es noch nicht...  :-)

Auf alle fälle benötige ich ja "use Getopt::Long;" und sowas wie:

----8<------------------------------------------------------
use Getopt::Long;

GetOptions('user|u=s' => \$user,
           'pass|p=s' => \$pass);

die "Kein Benutzer angegeben\n" unless $user = "";
die "Kein Password angegeben\n" unless $pass = "";

----8<------------------------------------------------------

Hmmm, haut irgendwie nicht hin...  Shit...  'perldoc Getopt::Long'
geht nicht!  Muß mal ein 'apt-get install perl-doc' machen

Thanks, Greetings and nice Day
    Michelle Konzack


-- 
Linux-User #280138 with the Linux Counter, http://counter.li.org/
##################### Debian GNU/Linux Consultant #####################
Michelle Konzack   Apt. 917                  ICQ #328449886
+49/177/9351947    50, rue de Soultz         MSN LinuxMichi
+33/6/61925193     67100 Strasbourg/France   IRC #Debian (irc.icq.com)

Attachment: signature.pgp
Description: Digital signature


Reply to: