This commit is contained in:
Nick Bebout 2011-03-12 02:44:01 +00:00
parent ce78978b44
commit 8eaed02a04
9 changed files with 6593565 additions and 33 deletions

View file

@ -1,5 +1,9 @@
#!/bin/cat #!/bin/cat
Bryce Walter
Gave "OpenWave to Imail 8.12"
David Alix David Alix
Suggested order message transfer by uid. Suggested order message transfer by uid.
Gave "Simeon Messaging Server from MessagingDirect" and Gave "Simeon Messaging Server from MessagingDirect" and

View file

@ -1,15 +1,27 @@
RCS file: RCS/imapsync,v RCS file: RCS/imapsync,v
Working file: imapsync Working file: imapsync
head: 1.99 head: 1.102
branch: branch:
locks: strict locks: strict
access list: access list:
symbolic names: symbolic names:
keyword substitution: kv keyword substitution: kv
total revisions: 99; selected revisions: 99 total revisions: 102; selected revisions: 102
description: description:
---------------------------- ----------------------------
revision 1.102
date: 2004/10/15 14:41:25; author: gilles; state: Exp; lines: +36 -21
Add use of fetch_hash() in foldersizes counting.
----------------------------
revision 1.101
date: 2004/10/12 15:17:37; author: gilles; state: Exp; lines: +7 -6
Added OpenWave
----------------------------
revision 1.100
date: 2004/10/08 00:57:33; author: gilles; state: Exp; lines: +33 -12
Added time infos
----------------------------
revision 1.99 revision 1.99
date: 2004/10/04 18:42:40; author: gilles; state: Exp; lines: +15 -8 date: 2004/10/04 18:42:40; author: gilles; state: Exp; lines: +15 -8
Added explanation about --skipheader option : Added explanation about --skipheader option :

7
README
View file

@ -2,7 +2,7 @@ NAME
imapsync - IMAP synchronization, copy or migration tool. Synchronize imapsync - IMAP synchronization, copy or migration tool. Synchronize
mailboxes between two imap servers. Good at IMAP migration. mailboxes between two imap servers. Good at IMAP migration.
$Revision: 1.99 $ $Revision: 1.102 $
INSTALL INSTALL
imapsync works fine under any Unix OS. imapsync works fine under any Unix OS.
@ -170,9 +170,10 @@ IMAP SERVERS
- Dovecot 0.99.10.4 - Dovecot 0.99.10.4
- Domino (Notes) 6.5, 5.0.6 - Domino (Notes) 6.5, 5.0.6
- iPlanet Messaging server 4.15, 5.1 - iPlanet Messaging server 4.15, 5.1
- IMail 7.15 (Ipswitch/Win2003) - IMail 7.15 (Ipswitch/Win2003), 8.12
- MS Exchange Server 5.5 - MS Exchange Server 5.5
- Netscape Mail Server 3.6 (Wintel !) - Netscape Mail Server 3.6 (Wintel !)
- OpenWave
- SunONE Messaging server 5.2, 6.0 (SUN JES - Java Enterprise System) - SunONE Messaging server 5.2, 6.0 (SUN JES - Java Enterprise System)
- UW-imap servers (imap-2000b) rijkkramer IMAP4rev1 2000.287 - UW-imap servers (imap-2000b) rijkkramer IMAP4rev1 2000.287
(RedHat uses UW like 2003.338rh) (RedHat uses UW like 2003.338rh)
@ -237,5 +238,5 @@ AUTHOR
teaching free open and gratis softwares. Don't hesitate to pay him for teaching free open and gratis softwares. Don't hesitate to pay him for
that services. that services.
$Id: imapsync,v 1.99 2004/10/04 18:42:40 gilles Exp $ $Id: imapsync,v 1.102 2004/10/15 14:41:25 gilles Exp $

View file

@ -1 +1 @@
1.99 1.102

516
big_transfert.log Normal file

File diff suppressed because one or more lines are too long

55096
big_transfert.log.s1 Normal file

File diff suppressed because one or more lines are too long

View file

@ -6,7 +6,7 @@ imapsync - IMAP synchronization, copy or migration
tool. Synchronize mailboxes between two imap servers. Good tool. Synchronize mailboxes between two imap servers. Good
at IMAP migration. at IMAP migration.
$Revision: 1.99 $ $Revision: 1.102 $
=head1 INSTALL =head1 INSTALL
@ -128,7 +128,6 @@ the best solution.
imasync is not protected against sniffers on the network so imasync is not protected against sniffers on the network so
the passwords are in plain text. the passwords are in plain text.
=head1 EXIT STATUS =head1 EXIT STATUS
imapsync will exit with a 0 status (return code) if everything went good. imapsync will exit with a 0 status (return code) if everything went good.
@ -196,9 +195,10 @@ Success stories reported (softwares in alphabetic order) :
- Dovecot 0.99.10.4 - Dovecot 0.99.10.4
- Domino (Notes) 6.5, 5.0.6 - Domino (Notes) 6.5, 5.0.6
- iPlanet Messaging server 4.15, 5.1 - iPlanet Messaging server 4.15, 5.1
- IMail 7.15 (Ipswitch/Win2003) - IMail 7.15 (Ipswitch/Win2003), 8.12
- MS Exchange Server 5.5 - MS Exchange Server 5.5
- Netscape Mail Server 3.6 (Wintel !) - Netscape Mail Server 3.6 (Wintel !)
- OpenWave
- SunONE Messaging server 5.2, 6.0 (SUN JES - Java Enterprise System) - SunONE Messaging server 5.2, 6.0 (SUN JES - Java Enterprise System)
- UW-imap servers (imap-2000b) rijkkramer IMAP4rev1 2000.287 - UW-imap servers (imap-2000b) rijkkramer IMAP4rev1 2000.287
(RedHat uses UW like 2003.338rh) (RedHat uses UW like 2003.338rh)
@ -280,7 +280,7 @@ Gilles LAMIRAL earn his living writing, installing,
configuring and teaching free open and gratis configuring and teaching free open and gratis
softwares. Don't hesitate to pay him for that services. softwares. Don't hesitate to pay him for that services.
$Id: imapsync,v 1.99 2004/10/04 18:42:40 gilles Exp $ $Id: imapsync,v 1.102 2004/10/15 14:41:25 gilles Exp $
=cut =cut
@ -315,13 +315,14 @@ my(
$mess_trans, $mess_skipped, $mess_trans, $mess_skipped,
$timeout, # whr (ESS/PRW) $timeout, # whr (ESS/PRW)
$timestart, $timeend, $timediff, $timestart, $timeend, $timediff,
$timesize, $timebefore,
); );
use vars qw ($opt_G); # missing code for this will be option. use vars qw ($opt_G); # missing code for this will be option.
$rcs = ' $Id: imapsync,v 1.99 2004/10/04 18:42:40 gilles Exp $ '; $rcs = ' $Id: imapsync,v 1.102 2004/10/15 14:41:25 gilles Exp $ ';
$rcs =~ m/,v (\d+\.\d+)/; $rcs =~ m/,v (\d+\.\d+)/;
$VERSION = ($1) ? $1 : "UNKNOWN"; $VERSION = ($1) ? $1 : "UNKNOWN";
@ -358,8 +359,8 @@ $error=0;
my $banner = join("", my $banner = join("",
'$RCSfile: imapsync,v $ ', '$RCSfile: imapsync,v $ ',
'$Revision: 1.99 $ ', '$Revision: 1.102 $ ',
'$Date: 2004/10/04 18:42:40 $ ', '$Date: 2004/10/15 14:41:25 $ ',
"\n", "\n",
"Mail::IMAPClient version used here is ", "Mail::IMAPClient version used here is ",
$VERSION_IMAPClient, " auth md5 : $md5_supported", $VERSION_IMAPClient, " auth md5 : $md5_supported",
@ -408,6 +409,7 @@ unless ($md5_supported) {
} }
$timestart = time(); $timestart = time();
$timebefore = $timestart;
$debugimap and print "From connection\n"; $debugimap and print "From connection\n";
$from = login_imap($host1, $port1, $user1, $password1, $debugimap, $timeout); $from = login_imap($host1, $port1, $user1, $password1, $debugimap, $timeout);
@ -422,6 +424,7 @@ sub login_imap {
$imap->Server($host); $imap->Server($host);
$imap->Port($port); $imap->Port($port);
$imap->Fast_io(1); $imap->Fast_io(1);
$imap->Buffer(65536);
$imap->Uid(1); $imap->Uid(1);
$imap->Peek(1); $imap->Peek(1);
$imap->Debug($debugimap); $imap->Debug($debugimap);
@ -559,23 +562,52 @@ if ($foldersizes) {
$error++; $error++;
next; next;
} }
my @f_msgs = $maxage
? $from->since(time - 86400 * $maxage)
: $from->search("ALL");
foreach my $m (@f_msgs) {
my $s = $from->size($m)
or warn "Could not find size of message $m: $@\n";
$stot += $s;
$smess++;
}
print "Size of $f_fold: $stot\n"; if ($maxage) {
print "Messages in $f_fold: $smess\n"; my @f_msgs = $maxage
$tot += $stot; ? $from->since(time - 86400 * $maxage)
$tmess += $smess; : $from->search("ALL");
my $smess2 = scalar(@f_msgs);
print "Messages in $f_fold: $smess2\n";
foreach my $m (@f_msgs) {
my $s = $from->size($m)
or warn "Could not find size of message $m: $@\n";
$stot += $s;
$smess++;
print ".";
}
print "\n";
print "Size of $f_fold: $stot\n";
print "Messages in $f_fold: $smess\n";
$tot += $stot;
$tmess += $smess;
}else{
my $hashref = {};
my $stot2 = 0;
my $smess2 = $from->message_count();
unless ($smess2 == 0) {
$from->fetch_hash("RFC822.SIZE",$hashref);
#print map {$hashref->{$_}->{"RFC822.SIZE"}, " "} keys %$hashref;
map {$stot2 += $hashref->{$_}->{"RFC822.SIZE"}} keys %$hashref;
}
print "Size of $f_fold: $stot2\n";
$tot += $stot2;
$tmess += $smess2;
}
} }
print "Total size: $tot\n"; print "Total size: $tot\n";
print "Total messages: $tmess\n"; print "Total messages: $tmess\n";
print "Time : ", timenext(), " s\n";
}
sub timenext {
my ($timenow, $timerel);
# $timebefore is global, beurk !
$timenow = time;
$timerel = $timenow - $timebefore;
$timebefore = $timenow;
return($timerel);
} }
exit if ($justconnect); exit if ($justconnect);
@ -673,16 +705,19 @@ FOLDER: foreach my $f_fold (@f_folders) {
my %f_hash = (); my %f_hash = ();
my %t_hash = (); my %t_hash = ();
$debug and print "++++ From Parse ++++\n"; print "++++ From Parse ++++\n";
foreach my $m (@f_msgs) { foreach my $m (@f_msgs) {
print ".";
parse_header_msg($m, $from, "F", \%f_hash); parse_header_msg($m, $from, "F", \%f_hash);
} }
print "Time : ", timenext(), " s\n";
$debug and print "++++ To Parse ++++\n"; print "\n++++ To Parse ++++\n";
foreach my $m (@t_msgs) { foreach my $m (@t_msgs) {
print ".";
parse_header_msg($m, $to, "T", \%t_hash); parse_header_msg($m, $to, "T", \%t_hash);
} }
$debug and print "++++ Verifying ++++\n"; print "Time : ", timenext(), " s\n";
print "\n++++ Verifying ++++\n";
# messages in "from" that are not good in "to" # messages in "from" that are not good in "to"
my @f_hash_keys_sorted_by_uid my @f_hash_keys_sorted_by_uid
@ -693,6 +728,7 @@ FOLDER: foreach my $f_fold (@f_folders) {
MESS: foreach my $m_id (@f_hash_keys_sorted_by_uid) { MESS: foreach my $m_id (@f_hash_keys_sorted_by_uid) {
my $f_size = $f_hash{$m_id}{'s'}; my $f_size = $f_hash{$m_id}{'s'};
my $f_msg = $f_hash{$m_id}{'m'}; my $f_msg = $f_hash{$m_id}{'m'};
print ".";
if (defined $maxsize and $f_size > $maxsize) { if (defined $maxsize and $f_size > $maxsize) {
print "+ Skipping msg #$f_msg:$f_size in folder $f_fold (exceeds maxsize limit $maxsize bytes)\n"; print "+ Skipping msg #$f_msg:$f_size in folder $f_fold (exceeds maxsize limit $maxsize bytes)\n";
$mess_size_total_skipped += $f_msg; $mess_size_total_skipped += $f_msg;
@ -788,6 +824,7 @@ FOLDER: foreach my $f_fold (@f_folders) {
} }
} }
} }
print "Time : ", timenext(), " s\n";
} }
$timeend = time(); $timeend = time();

View file

@ -1,8 +1,14 @@
#!/bin/sh #!/bin/sh
# $Id: tests.sh,v 1.23 2004/09/07 00:38:36 gilles Exp $ # $Id: tests.sh,v 1.25 2004/10/15 14:40:05 gilles Exp $
# $Log: tests.sh,v $ # $Log: tests.sh,v $
# Revision 1.25 2004/10/15 14:40:05 gilles
# Added big_transfert_sizes_only()
#
# Revision 1.24 2004/10/12 21:18:10 gilles
# Added big_transfert2()
#
# Revision 1.23 2004/09/07 00:38:36 gilles # Revision 1.23 2004/09/07 00:38:36 gilles
# Added noauthmd5 to first_sync test # Added noauthmd5 to first_sync test
# #
@ -483,13 +489,49 @@ big_transfert()
--passfile1 /var/tmp/secret \ --passfile1 /var/tmp/secret \
--host2 plume --user2 tete@est.belle \ --host2 plume --user2 tete@est.belle \
--passfile2 /var/tmp/secret.tete \ --passfile2 /var/tmp/secret.tete \
--subscribed || \ --subscribed --foldersizes --noauthmd5 || \
true true
} }
date2=`date` date2=`date`
echo3 $date1 $date2 echo3 "[$date1] [$date2]"
} }
big_transfert_sizes_only()
{
date1=`date`
{ ./imapsync \
--host1 louloutte --user1 gilles \
--passfile1 /var/tmp/secret \
--host2 plume --user2 tete@est.belle \
--passfile2 /var/tmp/secret.tete \
--subscribed --foldersizes --noauthmd5 \
--justconnect || \
true
}
date2=`date`
echo3 "[$date1] [$date2]"
}
big_transfert2()
{
date1=`date`
{ perl -d:DProf ./imapsync \
--host1 louloutte --user1 gilles \
--passfile1 /var/tmp/secret \
--host2 plume --user2 tete@est.belle \
--passfile2 /var/tmp/secret.tete \
--subscribed --foldersizes --noauthmd5 \
--folder INBOX.Backup_ASK || \
true
}
date2=`date`
echo3 "[$date1] [$date2]"
dprofpp tmon.out
}
# mandatory tests # mandatory tests
run_tests perl_syntax run_tests perl_syntax

6537824
tmon.out Normal file

File diff suppressed because it is too large Load diff