This commit is contained in:
Nick Bebout 2011-03-12 02:44:30 +00:00
parent ff7c4df85f
commit 7cc7cb246a
10 changed files with 135 additions and 41 deletions

View file

@ -7,7 +7,7 @@ tool. Synchronise mailboxes between two imap servers. Good
at IMAP migration. More than 25 different IMAP server softwares
supported with success.
$Revision: 1.190 $
$Revision: 1.194 $
=head1 INSTALL
@ -43,6 +43,7 @@ $Revision: 1.190 $
[--authmech1 <string>] [--authmech2 <string>]
[--noauthmd5]
[--folder <string> --folder <string> ...]
[--folderrec <string> --folderrec <string> ...]
[--include <regex>] [--exclude <regex>]
[--prefix2 <string>] [--prefix1 <string>]
[--regextrans2 <regex> --regextrans2 <regex> ...]
@ -216,6 +217,7 @@ Failure stories reported with the following imap servers :
- DBMail 2.0.7 (GPL). But DBMail 1.2.1 works.
Patient and confident testers are welcome.
- dkimap4 2.39
- Imail 7.04 (maybe).
Success stories reported with the following imap servers
(softwares names are in alphabetic order) :
@ -229,24 +231,24 @@ Success stories reported with the following imap servers
2.2.1, 2.2.2-BETA, 2.2.10, 2.2.12, 2.3-alpha (OSI Approved)
(http://asg.web.cmu.edu/cyrus/)
- David Tobit V8 (proprietary Message system).
- DBMail 1.2.1, 2.0.4, 2.0.9 (GPL) (http://www.dbmail.org/).
- DBMail 1.2.1, 2.0.4, 2.0.9, 2.2rc1 (GPL) (http://www.dbmail.org/).
2.0.7 seems buggy.
- Dovecot 0.99.10.4 0.99.14 0.99.14-8.fc4 1.0-0.beta2.7 (LGPL)
- Dovecot 0.99.10.4, 0.99.14, 0.99.14-8.fc4, 1.0-0.beta2.7 (LGPL)
(http://www.dovecot.org/)
- Domino (Notes) 6.5, 5.0.6, 5.0.7
- Domino (Notes) 6.5, 5.0.6, 5.0.7, 7.0.2, 6.0.2CF1
- Eudora WorldMail v2
- Groupwise IMAP (Novell) 6.x and 7.0. Buggy so see the FAQ.
- iPlanet Messaging server 4.15, 5.1, 5.2
- IMail 7.15 (Ipswitch/Win2003), 8.12
- MDaemon 7.0.1, 8.1
- MS Exchange Server 5.5
- Microsoft Exchange Server 5.5
- Netscape Mail Server 3.6 (Wintel !)
- Netscape Messaging Server 4.15 Patch 7
- OpenWave
- Qualcomm Worldmail (NT)
- Rockliffe Mailsite 5.3.11
- Samsung Contact IMAP server 8.5.0
- Scalix v10.1
- Scalix v10.1, 10.0.1.3
- SunONE Messaging server 5.2, 6.0 (SUN JES - Java Enterprise System)
- Surgemail 3.6f5-5
- UW-imap servers (imap-2000b) rijkkramer IMAP4rev1 2000.287
@ -254,7 +256,7 @@ Success stories reported with the following imap servers
(http://www.washington.edu/imap/)
- UW - QMail v2.1
- Imap part of TCP/IP suite of VMS 7.3.2
- Zimbra-IMAP 3.0.1 GA 160, 3.1.0 Build 279.
- Zimbra-IMAP 3.0.1 GA 160, 3.1.0 Build 279, 5.5.
Please report to the author any success or bad story with
imapsync and don't forget to mention the IMAP server
@ -343,7 +345,7 @@ Gilles LAMIRAL earn his living writing, installing,
configuring and teaching free open and gratis
softwares. Don't hesitate to pay him for that services.
$Id: imapsync,v 1.190 2006/11/11 00:13:15 gilles Exp gilles $
$Id: imapsync,v 1.194 2006/12/08 04:04:34 gilles Exp $
=cut
@ -367,7 +369,7 @@ my(
$rcs, $debug, $debugimap, $error,
$host1, $host2, $port1, $port2,
$user1, $user2, $password1, $password2, $passfile1, $passfile2,
@folder, @include, @exclude,
@folder, @include, @exclude, @folderrec,
$prefix1, $prefix2,
@regextrans2, @regexmess, @regexflag,
$sep1, $sep2,
@ -400,7 +402,7 @@ my(
use vars qw ($opt_G); # missing code for this will be option.
$rcs = ' $Id: imapsync,v 1.190 2006/11/11 00:13:15 gilles Exp gilles $ ';
$rcs = ' $Id: imapsync,v 1.194 2006/12/08 04:04:34 gilles Exp $ ';
$rcs =~ m/,v (\d+\.\d+)/;
$VERSION = ($1) ? $1 : "UNKNOWN";
@ -437,8 +439,8 @@ $error=0;
my $banner = join("",
'$RCSfile: imapsync,v $ ',
'$Revision: 1.190 $ ',
'$Date: 2006/11/11 00:13:15 $ ',
'$Revision: 1.194 $ ',
'$Date: 2006/12/08 04:04:34 $ ',
"\n",
"Mail::IMAPClient version used here is ",
$VERSION_IMAPClient,"\n"
@ -504,8 +506,8 @@ $user1 || missing_option("--user1");
$user2 || missing_option("--user2");
if(defined($authmd5) and not($authmd5)) {
$authmech1 ||= 'PLAIN';
$authmech2 ||= 'PLAIN';
$authmech1 ||= 'LOGIN';
$authmech2 ||= 'LOGIN';
}else{
$authmech1 ||= $authuser1 ? 'PLAIN' : 'CRAM-MD5';
$authmech2 ||= $authuser2 ? 'PLAIN' : 'CRAM-MD5';
@ -674,16 +676,23 @@ my (@f_folders, @t_folders, %fs_folders);
map { $fs_folders{$_}=1 } $from->subscribed();
if (scalar(@folder)) {
if (scalar(@folder) or $subscribed or scalar(@folderrec)) {
# folders given by option --folder
@f_folders = @folder;
}elsif ($subscribed) {
push(@f_folders, @folder) if scalar(@folder);
# option --subscribed
@f_folders = sort keys (%fs_folders);
push(@f_folders, sort keys (%fs_folders)) if ($subscribed);
if (scalar(@folderrec)) {
foreach my $folderrec (@folderrec) {
push(@f_folders, $from->folders($folderrec));
}
}
@f_folders = sort @f_folders;
}else {
# no option, all folders
# no folder/subscribed/folderrec options => all folders
@f_folders = sort $from->folders();
# consider (optional) includes and excludes
# WARNING the following two loops are bad with more than one pass.
foreach my $include (@include) {
@f_folders = grep /$include/,@f_folders;
print "Only including folders matching pattern '$include'\n";
@ -1261,6 +1270,7 @@ sub get_options
"sep1=s" => \$sep1,
"sep2=s" => \$sep2,
"folder=s" => \@folder,
"folderrec=s" => \@folderrec,
"include=s" => \@include,
"exclude=s" => \@exclude,
"prefix1=s" => \$prefix1,
@ -1412,8 +1422,9 @@ Several options are mandatory.
--ssl1 : use an SSL connection on host1.
--ssl2 : use an SSL connection on host2.
--folder <string> : sync only this folder.
--folder <string> : and this one.
--folder <string> : and this one, etc.
--folderrec <string> : sync only this folder recursively.
--folderrec <string> : and this one, etc.
--include <regex> : only sync folders matching this regular expression
(only effective if neither --folder nor --subscribed
is specified).