folderxfer

folderxfer is very similar to inboxfer except that, instead of a list of usernames, it takes the output of bsd2cyrus as input and copies messages from Berkeley-format mail folders into the corresponding Cyrus mailboxes. The folderxfer script is shown in Example A-5 .

Example A-5. folderxfer

#!/usr/local/bin/perl

## Purpose: Converts contents of Berkeley-format mail folders
##          to Cyrus mailboxes
##
## Assumptions: (1) The root mailbox and empty Cyrus folder must 
##                  exist before conversion takes place.
##
##              (2) Input has been checked for illegal characters
##                  and files that do not contain mail content.
##
## Input:   A list containing the following information on each 
##          line:
##
##      <username>:<cyrus-format folder name>:<BSD folder path>

$scripts     = "/home/cyrus/bin";       # Location of this script
$mailstore   = "/var/spool/imap/user";  # Cyrus mailstore
$cmd         = "/usr/local/bin/formail -n 20 -s $scripts/cpmsg";

$folders = "$ARGV[0]";
if (!$folders) { die "Usage: $0 filename"; }

open (MB,"$folders") || die "can't open $folders";
while (<MB>) {

    chop;

    ## Be careful with this split - the last token might have
    ## whitespace we want to preserve.

    ($user,$cyrusfolder,$folder) = split(/:/,$_,3);
    @fields = split(/\\./,$cyrusfolder);
    $cyrfol = $fields[$#fields];

    $cat = "/usr/bin/cat \\"$folder\\"";
    system ("$cat | $cmd '$mailstore/$user/$cyrfol'");
}
close MB;

Get Managing IMAP now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.