|
|
d0d307a |
#!/usr/bin/perl
|
|
|
d0d307a |
#
|
|
|
d0d307a |
# Usage: folderxfer inputfile
|
|
|
d0d307a |
#
|
|
|
d0d307a |
# Purpose: Converts contents of Berkeley-format mail folders
|
|
|
d0d307a |
# to Cyrus mailboxes
|
|
|
d0d307a |
#
|
|
|
d0d307a |
# Input: Output of 'bsd2cyrus'
|
|
|
d0d307a |
# (username:Cyrus-folder-name:Berkeley-folder-path)
|
|
|
d0d307a |
#
|
|
|
d0d307a |
# Warnings: The root mailbox and empty Cyrus folder must
|
|
|
d0d307a |
# exist before conversion takes place, and source folders
|
|
|
d0d307a |
# should be checked for RFC 822 content before being processed
|
|
|
d0d307a |
#
|
|
|
d0d307a |
#$Id: folderxfer,v 1.1 2004/02/04 12:59:42 karsten Exp $
|
|
|
d0d307a |
|
|
|
d0d307a |
$pwd = "/usr/lib/cyrus-imapd";
|
|
|
d0d307a |
$mailstore = "/var/spool/imap"; # Cyrus mailstore
|
|
|
d0d307a |
$cat = "/bin/cat";
|
|
|
d0d307a |
$cmd = "/usr/bin/formail -n 20 -s $pwd/cpmsg";
|
|
|
d0d307a |
|
|
|
d0d307a |
$folders = "$ARGV[0]";
|
|
|
d0d307a |
if (!$folders) { die "Usage: $0 filename"; }
|
|
|
d0d307a |
|
|
|
d0d307a |
open (MB,"$folders") || die "can't open $folders";
|
|
|
d0d307a |
|
|
|
d0d307a |
while (<MB>) {
|
|
|
d0d307a |
|
|
|
d0d307a |
chop;
|
|
|
d0d307a |
|
|
|
d0d307a |
# Be careful with this split - the last token might have
|
|
|
d0d307a |
# whitespace we want to preserve
|
|
|
d0d307a |
|
|
|
d0d307a |
($user,$cyrusfolder,$folder) = split(/:/,$_,3);
|
|
|
d0d307a |
@fields = split(/\./,$cyrusfolder);
|
|
|
d0d307a |
$cyrfol = $fields[$#fields];
|
|
|
d0d307a |
|
|
|
d0d307a |
$fcat = "$cat \"$folder\"";
|
|
|
d0d307a |
print $fcat;
|
|
|
d0d307a |
$prefix = substr($user,0,1);
|
|
|
d0d307a |
system ("$fcat | $cmd '$mailstore/$prefix/user/$user/$cyrfol'");
|
|
|
d0d307a |
#print "'$mailstore/$prefix/user/$user/$cyrfol";
|
|
|
d0d307a |
}
|
|
|
d0d307a |
close MB;
|
|
|
d0d307a |
|
|
|
d0d307a |
|