September 2000
Beginner
408 pages
10h 29m
English
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;