I've recently started keeping all my mail (all 140MB worth of text!) on my web hosting provider's server, in order that I might switch easily between MUAs and client machines.

While I trust them to do backups, I don't trust them so much that I don't want my own backups to have my mail folders too. Therefore, a very simple script to backup IMAP folders to plain files. (This of course is only useful if you don't have access to the folders themselves...)


#!/usr/bin/perl

use Net::IMAP::Simple;
$| = 1;

$server = new Net::IMAP::Simple( 'your.imap.server' );
$server->login( 'username', 'password' );

@folders = $server->mailboxes();

foreach $folder ( @folders )
{
    open (FOLDOUT,">~/IMAPbk/$folder");
    $count = $server->select( $folder );
    print "$folder has $count messages, fetching";
    foreach $msg ( 1 .. $count )
    {
        print ".";
        $fh = $server->getfh( $msg );
        print FOLDOUT <$fh>;
        close $fh;
    }
    print "\n";
}

$server->quit();