use strict;
use warnings;
use Net::IMAP::Simple;

my ($imap, @folders, $folder, $count, $msg, $fh);
# open a connection to the IMAP server
$imap = new Net::IMAP::Simple('mail.foo.bar')
    or die $imap->errstr();

# login
$imap->login('user', 'geheim')
   or die $imap->errno(),$imap->errstr();

@folders = $imap->mailboxes('/imap/*');

foreach $folder (@folders)
  {
  open (FOLDOUT,'>', 'IMAP_Backup/$folder');
  $count = $imap->select($folder);
  print "$folder hat $count Nachrichten - Download beginnt\n";
  foreach $msg(1 .. $count)
    {
    print ".";
    $fh = $imap->getfh($msg);
    print FOLDOUT <$fh>;
    close $fh;
    }
  print "\n";
  }

$imap->quit();
