mirror of
https://github.com/imapsync/imapsync.git
synced 2025-06-07 13:15:22 +02:00
1.90
This commit is contained in:
parent
5256d44504
commit
1e479e2f94
7 changed files with 79 additions and 13 deletions
4
CREDITS
4
CREDITS
|
@ -1,5 +1,9 @@
|
||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
|
|
||||||
|
Ivan Zilic Schmidt
|
||||||
|
Made me start the FAQ.
|
||||||
|
Suggested the --regextrans2 option.
|
||||||
|
|
||||||
Leon Koch
|
Leon Koch
|
||||||
Gave Microsoft Exchange 2000 server and
|
Gave Microsoft Exchange 2000 server and
|
||||||
Domino IMAP4 Server Release 6.5.1
|
Domino IMAP4 Server Release 6.5.1
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
|
|
||||||
RCS file: RCS/imapsync,v
|
RCS file: RCS/imapsync,v
|
||||||
Working file: imapsync
|
Working file: imapsync
|
||||||
head: 1.89
|
head: 1.90
|
||||||
branch:
|
branch:
|
||||||
locks: strict
|
locks: strict
|
||||||
access list:
|
access list:
|
||||||
symbolic names:
|
symbolic names:
|
||||||
keyword substitution: kv
|
keyword substitution: kv
|
||||||
total revisions: 89; selected revisions: 89
|
total revisions: 90; selected revisions: 90
|
||||||
description:
|
description:
|
||||||
----------------------------
|
----------------------------
|
||||||
|
revision 1.90
|
||||||
|
date: 2004/04/07 18:14:05; author: gilles; state: Exp; lines: +13 -6
|
||||||
|
Added --regextrans2 option
|
||||||
|
----------------------------
|
||||||
revision 1.89
|
revision 1.89
|
||||||
date: 2004/03/31 17:37:23; author: gilles; state: Exp; lines: +17 -13
|
date: 2004/03/31 17:37:23; author: gilles; state: Exp; lines: +17 -13
|
||||||
Changed debug output
|
Changed debug output
|
||||||
|
|
29
FAQ
Normal file
29
FAQ
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
|
||||||
|
+------------------+
|
||||||
|
| FAQ for imapsync |
|
||||||
|
+------------------+
|
||||||
|
|
||||||
|
Q. I'm migrating from WU to Cyrus, and the mail folders are
|
||||||
|
under /home/user/mail but the tool copies everything in
|
||||||
|
/home/user, how can i avoid that?
|
||||||
|
|
||||||
|
R. Use
|
||||||
|
imapsync ... --include '^mail'
|
||||||
|
or (better)
|
||||||
|
imapsync ... --subscribed --subscribe
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Q. I'm migrating from WU to Cyrus, and the mail folders are
|
||||||
|
under /home/user/mail directory. When imapsync creates the
|
||||||
|
folders in the new cyrus imap server, it makes a folder
|
||||||
|
"mail" and below that folder puts all the mail folders the
|
||||||
|
user have in /home/user/mail, i would like to have all those
|
||||||
|
folders directly under INBOX.
|
||||||
|
|
||||||
|
R. Use
|
||||||
|
imapsync ... --regextrans2 's/^mail/INBOX/' --dry
|
||||||
|
look at the simulation and if all transformations seem
|
||||||
|
good then remove the --dry option.
|
||||||
|
|
||||||
|
|
4
README
4
README
|
@ -2,7 +2,7 @@ NAME
|
||||||
imapsync - IMAP sync or copy tool. Synchronize mailboxes between two
|
imapsync - IMAP sync or copy tool. Synchronize mailboxes between two
|
||||||
imap servers.
|
imap servers.
|
||||||
|
|
||||||
$Revision: 1.89 $
|
$Revision: 1.90 $
|
||||||
|
|
||||||
INSTALL
|
INSTALL
|
||||||
imapsync works fine under any Unix OS.
|
imapsync works fine under any Unix OS.
|
||||||
|
@ -229,5 +229,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.89 2004/03/31 17:37:23 gilles Exp $
|
$Id: imapsync,v 1.90 2004/04/07 18:14:05 gilles Exp $
|
||||||
|
|
||||||
|
|
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
||||||
1.89
|
1.90
|
||||||
|
|
19
imapsync
19
imapsync
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
imapsync - IMAP sync or copy tool. Synchronize mailboxes between two imap servers.
|
imapsync - IMAP sync or copy tool. Synchronize mailboxes between two imap servers.
|
||||||
|
|
||||||
$Revision: 1.89 $
|
$Revision: 1.90 $
|
||||||
|
|
||||||
=head1 INSTALL
|
=head1 INSTALL
|
||||||
|
|
||||||
|
@ -269,7 +269,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.89 2004/03/31 17:37:23 gilles Exp $
|
$Id: imapsync,v 1.90 2004/04/07 18:14:05 gilles Exp $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
|
@ -288,7 +288,7 @@ my(
|
||||||
$rcs, $debug, $debugimap, $error,
|
$rcs, $debug, $debugimap, $error,
|
||||||
$host1, $host2, $port1, $port2,
|
$host1, $host2, $port1, $port2,
|
||||||
$user1, $user2, $password1, $password2, $passfile1, $passfile2,
|
$user1, $user2, $password1, $password2, $passfile1, $passfile2,
|
||||||
@folder, $include, $exclude, $prefix2,
|
@folder, $include, $exclude, $prefix2, $regextrans2,
|
||||||
$sep1, $sep2,
|
$sep1, $sep2,
|
||||||
$syncinternaldates,
|
$syncinternaldates,
|
||||||
$maxsize, $maxage,
|
$maxsize, $maxage,
|
||||||
|
@ -307,7 +307,7 @@ my(
|
||||||
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.89 2004/03/31 17:37:23 gilles Exp $ ';
|
$rcs = ' $Id: imapsync,v 1.90 2004/04/07 18:14:05 gilles Exp $ ';
|
||||||
$rcs =~ m/,v (\d+\.\d+)/;
|
$rcs =~ m/,v (\d+\.\d+)/;
|
||||||
$VERSION = ($1) ? $1 : "UNKNOWN";
|
$VERSION = ($1) ? $1 : "UNKNOWN";
|
||||||
|
|
||||||
|
@ -343,8 +343,8 @@ $error=0;
|
||||||
|
|
||||||
my $banner = join("",
|
my $banner = join("",
|
||||||
'$RCSfile: imapsync,v $ ',
|
'$RCSfile: imapsync,v $ ',
|
||||||
'$Revision: 1.89 $ ',
|
'$Revision: 1.90 $ ',
|
||||||
'$Date: 2004/03/31 17:37:23 $ ',
|
'$Date: 2004/04/07 18:14:05 $ ',
|
||||||
"\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",
|
||||||
|
@ -544,6 +544,7 @@ print
|
||||||
"From subscribed folders : ", map("[$_] ", sort keys(%fs_folders)), "\n";
|
"From subscribed folders : ", map("[$_] ", sort keys(%fs_folders)), "\n";
|
||||||
|
|
||||||
sub separator_invert {
|
sub separator_invert {
|
||||||
|
# The separator we hope we'll never encounter
|
||||||
my $o_sep="\000";
|
my $o_sep="\000";
|
||||||
|
|
||||||
my($f_fold, $f_sep, $t_sep) = @_;
|
my($f_fold, $f_sep, $t_sep) = @_;
|
||||||
|
@ -560,6 +561,10 @@ FOLDER: foreach my $f_fold (@f_folders) {
|
||||||
print "From Folder [$f_fold]\n";
|
print "From Folder [$f_fold]\n";
|
||||||
|
|
||||||
$t_fold = separator_invert($f_fold,$f_sep, $t_sep);
|
$t_fold = separator_invert($f_fold,$f_sep, $t_sep);
|
||||||
|
if ($regextrans2) {
|
||||||
|
$debug and print "eval \$t_fold =~ $regextrans2\n";
|
||||||
|
eval("\$t_fold =~ $regextrans2");
|
||||||
|
}
|
||||||
$t_fold = $prefix2 . $t_fold if ($prefix2);
|
$t_fold = $prefix2 . $t_fold if ($prefix2);
|
||||||
print "To Folder [$t_fold]\n";
|
print "To Folder [$t_fold]\n";
|
||||||
|
|
||||||
|
@ -763,6 +768,7 @@ sub get_options
|
||||||
"include=s" => \$include,
|
"include=s" => \$include,
|
||||||
"exclude=s" => \$exclude,
|
"exclude=s" => \$exclude,
|
||||||
"prefix2=s" => \$prefix2,
|
"prefix2=s" => \$prefix2,
|
||||||
|
"regextrans2=s" => \$regextrans2,
|
||||||
"delete!" => \$delete,
|
"delete!" => \$delete,
|
||||||
"syncinternaldates!" => \$syncinternaldates,
|
"syncinternaldates!" => \$syncinternaldates,
|
||||||
"maxsize=i" => \$maxsize,
|
"maxsize=i" => \$maxsize,
|
||||||
|
@ -869,6 +875,7 @@ Several options are mandatory.
|
||||||
is specified)
|
is specified)
|
||||||
--prefix2 <string> : add prefix to all destination folders
|
--prefix2 <string> : add prefix to all destination folders
|
||||||
(usually INBOX. for cyrus imap servers)
|
(usually INBOX. for cyrus imap servers)
|
||||||
|
--regextrans2 <regex> : Apply the whole regex to each destination folders.
|
||||||
--sep1 <char> : separator in case namespace is not supported.
|
--sep1 <char> : separator in case namespace is not supported.
|
||||||
--sep2 <char> : idem.
|
--sep2 <char> : idem.
|
||||||
--delete : delete messages in "from" imap server after
|
--delete : delete messages in "from" imap server after
|
||||||
|
|
26
tests.sh
26
tests.sh
|
@ -1,8 +1,11 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# $Id: tests.sh,v 1.16 2004/03/21 23:24:42 gilles Exp $
|
# $Id: tests.sh,v 1.17 2004/04/07 18:13:29 gilles Exp $
|
||||||
|
|
||||||
# $Log: tests.sh,v $
|
# $Log: tests.sh,v $
|
||||||
|
# Revision 1.17 2004/04/07 18:13:29 gilles
|
||||||
|
# Added lp_regextrans2()
|
||||||
|
#
|
||||||
# Revision 1.16 2004/03/21 23:24:42 gilles
|
# Revision 1.16 2004/03/21 23:24:42 gilles
|
||||||
# Added
|
# Added
|
||||||
# lp_skipsize()
|
# lp_skipsize()
|
||||||
|
@ -379,6 +382,24 @@ lp_include()
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lp_regextrans2()
|
||||||
|
{
|
||||||
|
sendtestmessage
|
||||||
|
if test X`hostname` = X"plume"; then
|
||||||
|
echo3 Here is plume
|
||||||
|
./imapsync \
|
||||||
|
--host2 plume --user2 tata@est.belle \
|
||||||
|
--passfile2 /var/tmp/secret.tata \
|
||||||
|
--host1 loul --user1 tata \
|
||||||
|
--passfile1 /var/tmp/secret.tata \
|
||||||
|
--regextrans2 's/yop/yopX/' --dry
|
||||||
|
else
|
||||||
|
:
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bad_login()
|
bad_login()
|
||||||
{
|
{
|
||||||
! ./imapsync \
|
! ./imapsync \
|
||||||
|
@ -427,7 +448,8 @@ test $# -eq 0 && run_tests \
|
||||||
bad_host \
|
bad_host \
|
||||||
lp_noauthmd5 \
|
lp_noauthmd5 \
|
||||||
lp_skipsize \
|
lp_skipsize \
|
||||||
lp_skipheader
|
lp_skipheader \
|
||||||
|
lp_regextrans2
|
||||||
|
|
||||||
# selective tests
|
# selective tests
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue