Re: IMAP accounts und Mailfolder size automatische ermitteln
Hallo Michelle!
Michelle Konzack schrieb am Dienstag, den 25. März 2008:
> 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ß. :-/
stunnel?
> ich dachte, das würde mit dem LIST command funktionieren...
Nee, du willst ja Nachrichten Eigenschaften haben und keine Liste
vorhandener Nachrichten.
[perl script mit Net::IMAP::Simple]
> Geht das auch mit TLS/SSL?
klar. Das ganze aufgebohrt:
,----
| 1 #!/usr/bin/perl
| 2
| 3 use Net::IMAP::Simple::SSL;
| 4 use strict;
| 5 use Getopt::Long;
| 6
| 7 sub usage{
| 8 chomp(my $name=`basename $0`);
| 9 print <<EOF;
| 10 Usage: $name [OPTION]
| 11 $name will calculates recursively the file space usage of
| 12 all your mails on your imaps Server.
| 13
| 14 Option:
| 15 -u --user=<username> IMAP Server User
| 16 -p --pass=<password> IMAP Server Password
| 17 -s --server IMAP Server
| 18 --port IMAP Server Port
| 19 --recursive recursively calculate size
| 20 -h --help
| 21 EOF
| 22 exit(1);
| 23 }
| 24
| 25 #DEFAULTS:
| 26 my $password="";
| 27 my $user="";
| 28 my $host="";
| 29 my $port=993;
| 30 my $recursive=0;
| 31 my @mailbox=qw/
| 32 INBOX
| 33 INBOX.spam
| 34 /;
| 35
| 36 GetOptions('user=s' => \$user,
| 37 'pass=s' => \$password,
| 38 'help' => sub {usage},
| 39 'server=s' => \$host,
| 40 'recursive' => \$recursive,
| 41 'port=i' => \$port);
| 42
| 43 if ($host eq "" or $password eq "" or $user eq "" ) {usage}
| 44
| 45 my $imap = Net::IMAP::Simple->new($host.":".$port) ||
| 46 die $Net::IMAP::Simple::errstr."\n";
| 47
| 48 unless($imap->login($user, $password)){
| 49 die "Login failed: " . $imap->errstr() . "\n";
| 50 }
| 51 if ($recursive) { @mailbox=$imap->mailboxes }
| 52 my $size = 0;
| 53
| 54 foreach(@mailbox){
| 55 printf "Wähle Mailbox: $_ \n";
| 56 my $num = $imap->select($_);
| 57 for (my $i=1; $i <= $num; $i++){
| 58 $size += $imap->list($i);
| 59 }
| 60 };
| 61
| 62 printf "%.2f kB\n", $size/1024;
| 63
| 64 $imap->quit;
`----
> Das Zertifikat liegt bei mir im ~/.mutt/ Verzeichnis rum.
Keine Ahnung. Vermutlich kann man mit IO::Socket::SSL auch Zertifikate
prüfen. Könnte sein, dass das bei Net::IMAP::Simple::SSL auch geht,
das baut ja darauf auf. Zur Not muß man das von Hand machen. Aber wie
das geht, das finde ich heute nicht mehr heraus ;)
> 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
>
Versteh ich nicht. Du willst nur diese 3 Folder? Trag ab Zeile 31 in
jede Zeile einen Folder ein. Du willst alle Folder? Ruf das Script mit
--recursive auf. Ansonsten kannst Du in Zeile 26 noch zusätzliche
Defaultoptionen angeben, wenn dir die Kommandozeile zu langweilig ist.
> die "Kein Benutzer angegeben\n" unless $user = "";
> die "Kein Password angegeben\n" unless $pass = "";
Du suchst den Operator eq für Stringvergleiche.
Grüße
Christian
--
hundred-and-one symptoms of being an internet addict:
99. The hum of a cooling fan and the click of keys is comforting to you.
Reply to: