1
0
mirror of https://github.com/imapsync/imapsync.git synced 2024-11-17 00:02:29 +01:00
This commit is contained in:
Nick Bebout 2011-03-12 02:44:57 +00:00
parent 26a302f586
commit c6cefbbb65
12 changed files with 2699 additions and 138 deletions

16
CREDITS
View File

@ -1,5 +1,5 @@
#!/bin/cat #!/bin/cat
# $Id: CREDITS,v 1.141 2010/07/14 13:52:04 gilles Exp gilles $ # $Id: CREDITS,v 1.142 2010/08/09 01:16:01 gilles Exp gilles $
If you want to make a donation to the author, Gilles LAMIRAL: If you want to make a donation to the author, Gilles LAMIRAL:
@ -20,11 +20,23 @@ to remove one.
I thank very much all of these people. I thank very much all of these people.
Martin Werthmoeller
Gave a patch ./patches/imapsync-1.337_tobit_V6.patch
Jeremy Stent
Contributed by giving the book
13.60 "Unfolding the Napkin: The Hands-On Method for Solving Complex Problems with Simple Pictures"
BudgetDedicated
Contributed by giving money 5 USD
Wilton de Oliveira Garcia
Contributed by giving money 10 USD
David Osbo David Osbo
Contributed by giving the book Contributed by giving the book
15.61 "The Complete Idiot's Guide to Conversational Sign Language Illustrated" 15.61 "The Complete Idiot's Guide to Conversational Sign Language Illustrated"
Jeroen Ticheler Jeroen Ticheler
Contributed by giving the book Contributed by giving the book
23.77 "Maps of Narrative Practice" 23.77 "Maps of Narrative Practice"

View File

@ -1,17 +1,29 @@
RCS file: RCS/imapsync,v RCS file: RCS/imapsync,v
Working file: imapsync Working file: imapsync
head: 1.337 head: 1.340
branch: branch:
locks: strict locks: strict
gilles: 1.337 gilles: 1.340
access list: access list:
symbolic names: symbolic names:
keyword substitution: kv keyword substitution: kv
total revisions: 337; selected revisions: 337 total revisions: 340; selected revisions: 340
description: description:
---------------------------- ----------------------------
revision 1.337 locked by: gilles; revision 1.340 locked by: gilles;
date: 2010/08/09 00:03:21; author: gilles; state: Exp; lines: +7 -7
Bug fix. Stupid undef breaking --syncinternaldates
----------------------------
revision 1.339
date: 2010/07/28 15:07:56; author: gilles; state: Exp; lines: +27 -20
Made a justconnect() routine.
----------------------------
revision 1.338
date: 2010/07/28 14:56:26; author: gilles; state: Exp; lines: +42 -27
Added SYNOPSIS at the top of the documentation.
----------------------------
revision 1.337
date: 2010/07/16 23:23:40; author: gilles; state: Exp; lines: +12 -6 date: 2010/07/16 23:23:40; author: gilles; state: Exp; lines: +12 -6
Added --usedatemanip option (not documented in --help) Added --usedatemanip option (not documented in --help)
Turned off Date::Manip usage by default: release 6.x vs 5.x buggy, Turned off Date::Manip usage by default: release 6.x vs 5.x buggy,

18
FAQ
View File

@ -1,5 +1,5 @@
#!/bin/cat #!/bin/cat
# $Id: FAQ,v 1.71 2010/07/15 12:07:00 gilles Exp gilles $ # $Id: FAQ,v 1.73 2010/08/08 23:09:04 gilles Exp gilles $
+------------------+ +------------------+
| FAQ for imapsync | | FAQ for imapsync |
@ -59,6 +59,9 @@ R. Here:
RFC 3501 - INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1 RFC 3501 - INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1
http://www.faqs.org/rfcs/rfc3501.html http://www.faqs.org/rfcs/rfc3501.html
RFC2683 - IMAP4 Implementation Recommendations
http://www.faqs.org/rfcs/rfc2683.html
RFC 2595 - Using TLS with IMAP, POP3 and ACAP RFC 2595 - Using TLS with IMAP, POP3 and ACAP
http://www.faqs.org/rfcs/rfc2595.html http://www.faqs.org/rfcs/rfc2595.html
@ -68,6 +71,9 @@ http://www.faqs.org/rfcs/rfc2822.html
RFC 2342 - IMAP4 Namespace RFC 2342 - IMAP4 Namespace
http://www.faqs.org/rfcs/rfc2342.html http://www.faqs.org/rfcs/rfc2342.html
RFC2180 - IMAP4 Multi-Accessed Mailbox Practice
http://www.faqs.org/rfcs/rfc2180.html
RFC 4549 - Synchronization Operations for Disconnected IMAP4 Clients RFC 4549 - Synchronization Operations for Disconnected IMAP4 Clients
http://www.faqs.org/rfcs/rfc4549.html http://www.faqs.org/rfcs/rfc4549.html
@ -885,6 +891,16 @@ Q. Migrating from David Tobit V8
R. Use the following options : R. Use the following options :
imapsync ... --prefix1 INBOX. --sep1 / --subscribe --subscribed imapsync ... --prefix1 INBOX. --sep1 / --subscribe --subscribed
=======================================================================
Q. Migrating from Tobit David Server 6
("DvISE Mail Access Server MA-6.60a (0118)")
R. Look at the discussion:
http://www.linux-france.org/prj/imapsync_list/msg00582.html
http://www.linux-france.org/prj/imapsync_list/threads.html#00582
patch saved in ./patches/imapsync-1.337_tobit_V6.patch
======================================================================= =======================================================================
Q. I need to migrate 1250 mailboxes from one cyrus-IMAP server to another Q. I need to migrate 1250 mailboxes from one cyrus-IMAP server to another
(empty) one. (Box-swap). The passwords are in a MySQL Database. (empty) one. (Box-swap). The passwords are in a MySQL Database.

View File

@ -1,14 +1,12 @@
# $Id: Makefile,v 1.32 2010/07/17 00:17:18 gilles Exp gilles $ # $Id: Makefile,v 1.34 2010/07/25 21:30:45 gilles Exp gilles $
TARGET=imapsync
.PHONY: help usage all .PHONY: help usage all
help: usage help: usage
usage: usage:
@echo " $(TARGET) $(VERSION), You can do :" @echo " imapsync $(VERSION), You can do :"
@echo "make install # as root" @echo "make install # as root"
@echo "make testf # run tests" @echo "make testf # run tests"
@echo "make testv # run tests verbosely" @echo "make testv # run tests verbosely"
@ -16,24 +14,31 @@ usage:
@echo "make test229 # run tests with Mail-IMAPClient-2.2.9" @echo "make test229 # run tests with Mail-IMAPClient-2.2.9"
@echo "make all " @echo "make all "
DIST_NAME=imapsync-$(VERSION)
DIST_FILE=$(DIST_NAME).tgz
DEB_FILE=$(DIST_NAME).deb
VERSION=$(shell perl -I./Mail-IMAPClient-2.2.9 ./imapsync --version)
all: ChangeLog README VERSION all: ChangeLog README VERSION
.PHONY: test tests testp testf test3xx .PHONY: test tests testp testf test3xx
.test: $(TARGET) tests.sh .test: imapsync tests.sh
/usr/bin/time sh tests.sh 1>/dev/null /usr/bin/time sh tests.sh 1>/dev/null
touch .test touch .test
.test_3xx: $(TARGET) tests.sh .test_3xx: imapsync tests.sh
CMD_PERL='perl -I./Mail-IMAPClient-3.25/lib' /usr/bin/time sh tests.sh 1>/dev/null CMD_PERL='perl -I./Mail-IMAPClient-3.25/lib' /usr/bin/time sh tests.sh 1>/dev/null
touch .test_3xx touch .test_3xx
test_quick : test_quick_229 test_quick_3xx test_quick : test_quick_229 test_quick_3xx
test_quick_229: $(TARGET) tests.sh test_quick_229: imapsync tests.sh
CMD_PERL='perl -I./Mail-IMAPClient-2.2.9' /usr/bin/time sh tests.sh locallocal 1>/dev/null CMD_PERL='perl -I./Mail-IMAPClient-2.2.9' /usr/bin/time sh tests.sh locallocal 1>/dev/null
test_quick_3xx: $(TARGET) tests.sh test_quick_3xx: imapsync tests.sh
CMD_PERL='perl -I./Mail-IMAPClient-3.25/lib' /usr/bin/time sh tests.sh locallocal 1>/dev/null CMD_PERL='perl -I./Mail-IMAPClient-3.25/lib' /usr/bin/time sh tests.sh locallocal 1>/dev/null
testv: testv:
@ -47,23 +52,23 @@ test3xx: .test_3xx
test229: .test_229 test229: .test_229
.test_229: $(TARGET) tests.sh .test_229: imapsync tests.sh
CMD_PERL='perl -I./Mail-IMAPClient-2.2.9' /usr/bin/time sh tests.sh 1>/dev/null CMD_PERL='perl -I./Mail-IMAPClient-2.2.9' /usr/bin/time sh tests.sh 1>/dev/null
touch .test_229 touch .test_229
testf: clean_test test testf: clean_test test
testp : testp :
perl -c $(TARGET) perl -c imapsync
ChangeLog: $(TARGET) ChangeLog: imapsync
rlog $(TARGET) > ChangeLog rlog imapsync > ChangeLog
README: $(TARGET) README: imapsync
perldoc -t $(TARGET) > README perldoc -t imapsync > README
VERSION: $(TARGET) Makefile VERSION: imapsync Makefile
perl -I./Mail-IMAPClient-2.2.9 ./$(TARGET) --version > VERSION perl -I./Mail-IMAPClient-2.2.9 ./imapsync --version > VERSION
.PHONY: clean clean_tilde clean_test .PHONY: clean clean_tilde clean_test
@ -77,25 +82,20 @@ clean_tilde:
.PHONY: install dist man .PHONY: install dist man
man: $(TARGET).1 man: imapsync.1
clean_man: clean_man:
rm -f $(TARGET).1 rm -f imapsync.1
$(TARGET).1: $(TARGET) imapsync.1: imapsync
pod2man $(TARGET) > $(TARGET).1 pod2man imapsync > imapsync.1
install: testp $(TARGET).1 install: testp imapsync.1
install -D $(TARGET) $(DESTDIR)/usr/bin/$(TARGET) install -D imapsync $(DESTDIR)/usr/bin/imapsync
install -D $(TARGET).1 $(DESTDIR)/usr/share/man/man1/$(TARGET).1 install -D imapsync.1 $(DESTDIR)/usr/share/man/man1/imapsync.1
chmod 755 $(DESTDIR)/usr/bin/$(TARGET) chmod 755 $(DESTDIR)/usr/bin/imapsync
DIST_NAME=$(TARGET)-$(VERSION)
DIST_FILE=$(DIST_NAME).tgz
DEB_FILE=$(DIST_NAME).deb
VERSION=$(shell perl -I./Mail-IMAPClient-2.2.9 ./$(TARGET) --version)
dist: cidone test clean clean_dist all INSTALL tarball dist: cidone test clean clean_dist all INSTALL tarball
@ -126,15 +126,21 @@ clean_dist:
# Local goals # Local goals
.PHONY: lfo lfo_upload niouze_lfo niouze_fm public .PHONY: lfo upload_lfo niouze_lfo niouze_fm public
lfo: dist niouze_lfo lfo_upload upload_index: index.shtml
rsync -avH index.shtml \
/home/gilles/public_html/www.linux-france.org/html/prj/imapsync/
sh ~/memo/lfo-rsync
lfo_upload:
lfo: dist niouze_lfo upload_lfo
upload_lfo:
rsync -avH --delete . \ rsync -avH --delete . \
/home/gilles/public_html/www.linux-france.org/html/prj/$(TARGET)/ /home/gilles/public_html/www.linux-france.org/html/prj/imapsync/
rsync -avH --delete ../prepa_dist/imapsync-*tgz \ rsync -avH --delete ../prepa_dist/imapsync-*tgz \
/home/gilles/public_html/www.linux-france.org/ftp/prj/$(TARGET)/ /home/gilles/public_html/www.linux-france.org/ftp/prj/imapsync/
sh ~/memo/lfo-rsync sh ~/memo/lfo-rsync
niouze_lfo : VERSION niouze_lfo : VERSION

51
README
View File

@ -1,19 +1,30 @@
NAME NAME
imapsync - IMAP synchronisation, sync, copy or migration tool. imapsync - IMAP synchronisation, sync, copy or migration tool.
Synchronise mailboxes between two imap servers. Good at IMAP migration. Synchronise mailboxes between two imap servers. Good at IMAP migration.
More than 32 different IMAP server softwares supported with success. More than 36 different IMAP server softwares supported with success.
$Revision: 1.337 $ $Revision: 1.340 $
SYNOPSIS
To synchronise imap account "foo" on "imap.truc.org" to imap account
"bar" on "imap.trac.org" with foo password "secret1" and bar password
"secret2":
imapsync \
--host1 imap.truc.org --user1 foo --password1 secret1 \
--host2 imap.trac.org --user2 bar --password2 secret2
INSTALL INSTALL
imapsync works fine under any Unix OS with perl. imapsync works fine under any Unix OS with perl.
imapsync works fine under Windows (2000, XP) and ActiveState's 5.8 Perl imapsync works fine under Windows (2000, XP) with ActiveState's 5.8 Perl
or as a standalone binary software.
imapsync is already available directly on the following distributions (at least): imapsync is already available directly on the following distributions
FreeBSD, Debian, Ubuntu, Gentoo, NetBSD, Darwin, Mandriva and OpenBSD (yeah!). (at least): FreeBSD, Debian, Ubuntu, Gentoo, NetBSD, Darwin, Mandriva
and OpenBSD (yeah!).
Get imapsync at Get imapsync at
http://www.linux-france.org/prj/imapsync/dist/ http://www.linux-france.org/prj/imapsync/
You'll find a compressed tarball called imapsync-x.xx.tgz You'll find a compressed tarball called imapsync-x.xx.tgz
where x.xx is the version number. Untar the tarball where where x.xx is the version number. Untar the tarball where
@ -23,11 +34,11 @@ INSTALL
Go into the directory imapsync-x.xx and read the INSTALL file. Go into the directory imapsync-x.xx and read the INSTALL file.
The INSTALL file is also at The INSTALL file is also at
http://www.linux-france.org/prj/imapsync/INSTALL (for windows users) http://www.linux-france.org/prj/imapsync/INSTALL
The freshmeat record is at http://freshmeat.net/projects/imapsync/ The freshmeat record is at http://freshmeat.net/projects/imapsync/
SYNOPSIS USAGE
imapsync [options] imapsync [options]
To get a description of each option just run imapsync like this: To get a description of each option just run imapsync like this:
@ -88,19 +99,19 @@ DESCRIPTION
imapsync is a good tool because it reduces the amount of data imapsync is a good tool because it reduces the amount of data
transferred by not transferring a given message if it is already on both transferred by not transferring a given message if it is already on both
sides. Same headers, same message size and the transfer is done only sides. Same headers and the transfer is done only once. All flags are
once. All flags are preserved, unread will stay unread, read will stay preserved, unread will stay unread, read will stay read, deleted will
read, deleted will stay deleted. You can stop the transfer at any time stay deleted. You can stop the transfer at any time and restart it
and restart it later, imapsync works well with bad connections. imapsync later, imapsync works well with bad connections. imapsync is CPU hungry
is CPU hungry so nice and renice commands can be a good help. imapsync so nice and renice commands can be a good help. imapsync can be memory
can be memory hungry too, especially with large messages. hungry too, especially with large messages.
You can decide to delete the messages from the source mailbox after a You can decide to delete the messages from the source mailbox after a
successful transfer (it is a good feature when migrating). In that case, successful transfer (it is a good feature when migrating). In that case,
use the --delete --expunge1 options. use the --delete --expunge1 options.
You can also just synchronize a mailbox A from another mailbox B in case You can also just synchronize a mailbox A from another mailbox B in case
you just want to keep a "live" copy of B in A. you just want to keep a "live" copy of B in A (--delete2 may help)
OPTIONS OPTIONS
To get a description of each option just invoke: To get a description of each option just invoke:
@ -232,7 +243,8 @@ BUG REPORT GUIDELINES
- output given with --debug --debugimap near the failure point. - output given with --debug --debugimap near the failure point.
Isolate a message or two in a folder 'BUG' and use Isolate a message or two in a folder 'BUG' and use
--folder 'BUG' --debug --debugimap
imapsync ... --folder 'BUG' --debug --debugimap
- imap server software on both side and their version number. - imap server software on both side and their version number.
@ -252,7 +264,8 @@ BUG REPORT GUIDELINES
output. output.
One time in your life, read the paper "How To Ask Questions The Smart One time in your life, read the paper "How To Ask Questions The Smart
Way" http://www.catb.org/~esr/faqs/smart-questions.html and forget it. Way" http://www.catb.org/~esr/faqs/smart-questions.html and then forget
it.
IMAP SERVERS IMAP SERVERS
Failure stories reported with the following 4 imap servers: Failure stories reported with the following 4 imap servers:
@ -385,7 +398,7 @@ SIMILAR SOFTWARES
see also tools/wonko_ruby_imapsync see also tools/wonko_ruby_imapsync
pop2imap : http://www.linux-france.org/prj/pop2imap/ pop2imap : http://www.linux-france.org/prj/pop2imap/
Feedback (good or bad) will always be welcome. Feedback (good or bad) will often be welcome.
$Id: imapsync,v 1.337 2010/07/16 23:23:40 gilles Exp gilles $ $Id: imapsync,v 1.340 2010/08/09 00:03:21 gilles Exp gilles $

6
TIME
View File

@ -1,4 +1,8 @@
50 3 replies on list.
40 http://www.linux-france.org/prj/imapsync_list/threads.html#00582
250 ietf imap5 discussion
30 refactoring
80 read RFC2683 - IMAP4 Implementation Recommendations
140 imapsync under win32 strawberry, pp (par::packer), imapsync.exe 140 imapsync under win32 strawberry, pp (par::packer), imapsync.exe
300 imapsync under win32. test msw, environnement, using activestate 300 imapsync under win32. test msw, environnement, using activestate
70 Profiling tests. Interresting results! 70 Profiling tests. Interresting results!

10
TODO
View File

@ -1,5 +1,5 @@
#!/bin/cat #!/bin/cat
# $Id: TODO,v 1.78 2010/07/14 13:37:02 gilles Exp gilles $ # $Id: TODO,v 1.80 2010/08/09 01:15:44 gilles Exp gilles $
TODO file for imapsync TODO file for imapsync
---------------------- ----------------------
@ -21,6 +21,14 @@ Evaluate
http://www.rackspace.com/apps/email_hosting/migrations http://www.rackspace.com/apps/email_hosting/migrations
http://www.yippiemove.com/ http://www.yippiemove.com/
Add a well described problem for each problem detected
and counted in error counter statistics.
Add yahoo imap support:
http://elearningcentral.blogspot.com/2010/07/how-to-use-imapsync-with-yahoo-imap.html
http://www.bwebcentral.com/utils/imapsync-yahoo
See patches/imapsync-yahoo
DONE. Bugfix. Duplicate messages on host2 are not deleted with --delete2 DONE. Bugfix. Duplicate messages on host2 are not deleted with --delete2
Reason: "Skipping msg #120:508 in host2 folder INBOX.2005-INBOX (duplicate so we ignore this message)" Reason: "Skipping msg #120:508 in host2 folder INBOX.2005-INBOX (duplicate so we ignore this message)"

View File

@ -1 +1 @@
1.337 1.340

View File

@ -16,21 +16,34 @@
imapsync - IMAP synchronisation, sync, copy or migration imapsync - IMAP synchronisation, sync, copy or migration
tool. Synchronise mailboxes between two imap servers. Good tool. Synchronise mailboxes between two imap servers. Good
at IMAP migration. More than 32 different IMAP server softwares at IMAP migration. More than 36 different IMAP server softwares
supported with success. supported with success.
$Revision: 1.337 $ $Revision: 1.340 $
=head1 SYNOPSIS
To synchronise imap account "foo" on "imap.truc.org"
to imap account "bar" on "imap.trac.org"
with foo password "secret1"
and bar password "secret2":
imapsync \
--host1 imap.truc.org --user1 foo --password1 secret1 \
--host2 imap.trac.org --user2 bar --password2 secret2
=head1 INSTALL =head1 INSTALL
imapsync works fine under any Unix OS with perl. imapsync works fine under any Unix OS with perl.
imapsync works fine under Windows (2000, XP) and ActiveState's 5.8 Perl imapsync works fine under Windows (2000, XP) with ActiveState's 5.8 Perl
or as a standalone binary software.
imapsync is already available directly on the following distributions (at least): imapsync is already available directly on the following distributions
(at least):
FreeBSD, Debian, Ubuntu, Gentoo, NetBSD, Darwin, Mandriva and OpenBSD (yeah!). FreeBSD, Debian, Ubuntu, Gentoo, NetBSD, Darwin, Mandriva and OpenBSD (yeah!).
Get imapsync at Get imapsync at
http://www.linux-france.org/prj/imapsync/dist/ http://www.linux-france.org/prj/imapsync/
You'll find a compressed tarball called imapsync-x.xx.tgz You'll find a compressed tarball called imapsync-x.xx.tgz
where x.xx is the version number. Untar the tarball where where x.xx is the version number. Untar the tarball where
@ -40,11 +53,11 @@ $Revision: 1.337 $
Go into the directory imapsync-x.xx and read the INSTALL file. Go into the directory imapsync-x.xx and read the INSTALL file.
The INSTALL file is also at The INSTALL file is also at
http://www.linux-france.org/prj/imapsync/INSTALL (for windows users) http://www.linux-france.org/prj/imapsync/INSTALL
The freshmeat record is at http://freshmeat.net/projects/imapsync/ The freshmeat record is at http://freshmeat.net/projects/imapsync/
=head1 SYNOPSIS =head1 USAGE
imapsync [options] imapsync [options]
@ -112,7 +125,7 @@ another. This is called migration.
imapsync is a good tool because it reduces the amount imapsync is a good tool because it reduces the amount
of data transferred by not transferring a given message if it of data transferred by not transferring a given message if it
is already on both sides. Same headers, same message size is already on both sides. Same headers
and the transfer is done only once. All flags are and the transfer is done only once. All flags are
preserved, unread will stay unread, read will stay read, preserved, unread will stay unread, read will stay read,
deleted will stay deleted. You can stop the transfer at any deleted will stay deleted. You can stop the transfer at any
@ -126,7 +139,8 @@ after a successful transfer (it is a good feature when migrating).
In that case, use the --delete --expunge1 options. In that case, use the --delete --expunge1 options.
You can also just synchronize a mailbox A from another mailbox B You can also just synchronize a mailbox A from another mailbox B
in case you just want to keep a "live" copy of B in A. in case you just want to keep a "live" copy of B in A (--delete2
may help)
=head1 OPTIONS =head1 OPTIONS
@ -275,7 +289,8 @@ Help us to help you: in your report, please include:
- output given with --debug --debugimap near the failure point. - output given with --debug --debugimap near the failure point.
Isolate a message or two in a folder 'BUG' and use Isolate a message or two in a folder 'BUG' and use
--folder 'BUG' --debug --debugimap
imapsync ... --folder 'BUG' --debug --debugimap
- imap server software on both side and their version number. - imap server software on both side and their version number.
@ -296,7 +311,7 @@ Most of those values can be found as a copy/paste at the begining of the output.
One time in your life, read the paper One time in your life, read the paper
"How To Ask Questions The Smart Way" "How To Ask Questions The Smart Way"
http://www.catb.org/~esr/faqs/smart-questions.html http://www.catb.org/~esr/faqs/smart-questions.html
and forget it. and then forget it.
=head1 IMAP SERVERS =head1 IMAP SERVERS
@ -452,9 +467,9 @@ Entries for imapsync:
pop2imap : http://www.linux-france.org/prj/pop2imap/ pop2imap : http://www.linux-france.org/prj/pop2imap/
Feedback (good or bad) will always be welcome. Feedback (good or bad) will often be welcome.
$Id: imapsync,v 1.337 2010/07/16 23:23:40 gilles Exp gilles $ $Id: imapsync,v 1.340 2010/08/09 00:03:21 gilles Exp gilles $
=cut =cut
@ -542,7 +557,7 @@ my(
# global variables initialisation # global variables initialisation
$rcs = '$Id: imapsync,v 1.337 2010/07/16 23:23:40 gilles Exp gilles $ '; $rcs = '$Id: imapsync,v 1.340 2010/08/09 00:03:21 gilles Exp gilles $ ';
$total_bytes_transferred = 0; $total_bytes_transferred = 0;
$total_bytes_skipped = 0; $total_bytes_skipped = 0;
@ -561,8 +576,9 @@ unless(defined(&_SYSEXITS_H)) {
eval 'sub EX_USAGE () {64;}' unless defined(&EX_USAGE); eval 'sub EX_USAGE () {64;}' unless defined(&EX_USAGE);
} }
# @ARGV will be eat by get_options # @ARGV will be eat by get_options()
my @argv_copy = @ARGV; my @argv_copy = @ARGV;
get_options(); get_options();
# default values # default values
@ -634,17 +650,7 @@ sub localhost_info {
} }
if ($justconnect) { if ($justconnect) {
my $imap1 = (); justconnect();
my $imap2 = ();
$imap1 = connect_imap($host1, $port1, $debugimap1, $ssl1, $tls1);
print "Host1 software: ", server_banner($imap1);
print "Host1 capability: ", join(" ", $imap1->capability()), "\n";
$imap2 = connect_imap($host2, $port2, $debugimap2, $ssl2, $tls2);
print "Host2 software: ", server_banner($imap2);
print "Host2 capability: ", join(" ", $imap2->capability()), "\n";
$imap1->logout();
$imap2->logout();
exit_clean(0); exit_clean(0);
} }
@ -668,8 +674,8 @@ if ($syncinternaldates) {
if ($syncinternaldates || $idatefromheader) { if ($syncinternaldates || $idatefromheader) {
# Date::Manip is an ugly module it exits (confess) for reading an unset value # Date::Manip is an ugly module: it exits (confess) for reading an unset value
# I should write a bug report but too lazy. # I should write a bug report but I'm too lazy.
no warnings 'redefine'; no warnings 'redefine';
local *Carp::confess = sub { return undef; }; local *Carp::confess = sub { return undef; };
@ -1895,7 +1901,7 @@ Bye.'
print "flags & date from: [$h1_flags][$d]\n"; print "flags & date from: [$h1_flags][$d]\n";
last FOLDER if $imap1->IsUnconnected(); last FOLDER if $imap1->IsUnconnected();
last FOLDER if $imap2->IsUnconnected(); last FOLDER if $imap2->IsUnconnected();
$d = undef; $d = undef if ($d eq "");
unless ($dry) { unless ($dry) {
if ($OSNAME eq "MSWin32") { if ($OSNAME eq "MSWin32") {
@ -2095,7 +2101,7 @@ exit_clean(0);
# subroutines # subroutines
sub imapsync_version { sub imapsync_version {
my $rcs = '$Id: imapsync,v 1.337 2010/07/16 23:23:40 gilles Exp gilles $ '; my $rcs = '$Id: imapsync,v 1.340 2010/08/09 00:03:21 gilles Exp gilles $ ';
$rcs =~ m/,v (\d+\.\d+)/; $rcs =~ m/,v (\d+\.\d+)/;
my $VERSION = ($1) ? $1: "UNKNOWN"; my $VERSION = ($1) ? $1: "UNKNOWN";
return($VERSION); return($VERSION);
@ -2179,8 +2185,8 @@ sub banner_imapsync {
my @argv_copy = @_; my @argv_copy = @_;
my $banner_imapsync = join("", my $banner_imapsync = join("",
'$RCSfile: imapsync,v $ ', '$RCSfile: imapsync,v $ ',
'$Revision: 1.337 $ ', '$Revision: 1.340 $ ',
'$Date: 2010/07/16 23:23:40 $ ', '$Date: 2010/08/09 00:03:21 $ ',
"\n",localhost_info(), "\n", "\n",localhost_info(), "\n",
"Command line used:\n", "Command line used:\n",
"$0 ", command_line_nopassword(@argv_copy), "\n", "$0 ", command_line_nopassword(@argv_copy), "\n",
@ -2216,6 +2222,22 @@ sub write_pidfile {
return($PROCESS_ID); return($PROCESS_ID);
} }
sub justconnect {
my $imap1 = ();
my $imap2 = ();
$imap1 = connect_imap($host1, $port1, $debugimap1, $ssl1, $tls1);
print "Host1 software: ", server_banner($imap1);
print "Host1 capability: ", join(" ", $imap1->capability()), "\n";
$imap2 = connect_imap($host2, $port2, $debugimap2, $ssl2, $tls2);
print "Host2 software: ", server_banner($imap2);
print "Host2 capability: ", join(" ", $imap2->capability()), "\n";
$imap1->logout();
$imap2->logout();
}
sub exit_clean { sub exit_clean {
my $status = shift; my $status = shift;

View File

@ -5,7 +5,7 @@
<title>imapsync <!--#exec cmd="cat VERSION" --> </title> <title>imapsync <!--#exec cmd="cat VERSION" --> </title>
<meta name="generator" content="Bluefish 1.0.7"/> <meta name="generator" content="Bluefish 1.0.7"/>
<meta name="author" content="Gilles LAMIRAL"/> <meta name="author" content="Gilles LAMIRAL"/>
<meta name="date" content="2010-07-17T02:07:03+0200"/> <meta name="date" content="2010-07-27T01:39:03+0200"/>
<meta name="copyright" content="None"/> <meta name="copyright" content="None"/>
<meta name="keywords" content="imap, transfert, migration"/> <meta name="keywords" content="imap, transfert, migration"/>
<meta name="description" content="imap migration tool"/> <meta name="description" content="imap migration tool"/>
@ -16,26 +16,15 @@
</head> </head>
<body> <body>
<script type="text/javascript"><!--
google_ad_client = "pub-2680256394263335";
/* imasync large 728x90 */
google_ad_slot = "6321738813";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<h1><a href="http://www.linux-france.org/prj/imapsync/">imapsync web site</a></h1> <h1><a href="http://www.linux-france.org/prj/imapsync/">imapsync web site</a></h1>
<h2>What is imapsync?</h2> <h2>What is imapsync?</h2>
<p><b>imapsync</b> software is a command line tool allowing incremental and <p><b>imapsync</b> software is a command line tool allowing incremental and
recursive <b>imap</b> transfers from one mailbox to another. recursive <b>imap</b> transfers from one mailbox to another, both anywhere on the internet.
</p> </p>
<a id="AUTHOR"></a>
<h2>AUTHOR</h2> <h2>AUTHOR</h2>
<p>Gilles LAMIRAL<br/> <p>Gilles LAMIRAL<br/>
@ -55,6 +44,7 @@ recursive <b>imap</b> transfers from one mailbox to another.
for feedback. for feedback.
</p> </p>
<a id="donation"></a>
<h2>imapsync donation</h2> <h2>imapsync donation</h2>
<p>Happy with this <b>free</b>, <b>open</b> and <b>gratis</b> software?<br/></p> <p>Happy with this <b>free</b>, <b>open</b> and <b>gratis</b> software?<br/></p>
<p><b>Help</b> the author to <b>maintain</b> imapsync and <b>support</b> users:</p> <p><b>Help</b> the author to <b>maintain</b> imapsync and <b>support</b> users:</p>
@ -75,6 +65,7 @@ Or offer him a book on his
<b><i>Thanks in advance!</i></b></p> <b><i>Thanks in advance!</i></b></p>
<a id="latest"></a>
<h2><a href="imapsync">Latest release <h2><a href="imapsync">Latest release
<!--#exec cmd="cat VERSION" --> <!--#exec cmd="cat VERSION" -->
(<!--#flastmod file="imapsync" -->) (<!--#flastmod file="imapsync" -->)
@ -94,6 +85,7 @@ thanks to Strawberry Perl 5.12 and Par::Packed module.<br/>
<h2><a href="FAQ">Frequently Asked Questions</a></h2> <h2><a href="FAQ">Frequently Asked Questions</a></h2>
<a id="MAILING-LIST"></a>
<h2>MAILING-LIST</h2> <h2>MAILING-LIST</h2>
<p> <p>
@ -133,6 +125,7 @@ thanks to Strawberry Perl 5.12 and Par::Packed module.<br/>
<b>Thank you for your participation!</b> <b>Thank you for your participation!</b>
</p> </p>
<a id="TODO"></a>
<h2><a href="TODO">TODO</a></h2> <h2><a href="TODO">TODO</a></h2>
<p>I code new features for free when I have time and when I find it useful.<br/> <p>I code new features for free when I have time and when I find it useful.<br/>
@ -166,7 +159,7 @@ If you really want a feature you can donate money and I'll code it.<br/>
<!--#config timefmt="%D" --> <!--#config timefmt="%D" -->
<!--#config timefmt="%A %B %d, %Y" --> <!--#config timefmt="%A %B %d, %Y" -->
This document last modified <!--#echo var="LAST_MODIFIED" --> <br/> This document last modified <!--#echo var="LAST_MODIFIED" --> <br/>
$Id: index.shtml,v 1.14 2010/07/17 00:07:16 gilles Exp gilles $ $Id: index.shtml,v 1.17 2010/07/26 23:40:00 gilles Exp gilles $
</p> </p>
</body> </body>

View File

@ -0,0 +1,45 @@
--- imapsync-1.337 2010-08-02 13:56:06.000000000 +0200
+++ imapsync-1.337_tobit-workaround 2010-08-02 13:53:58.000000000 +0200
@@ -3821,6 +3821,7 @@
$banner;
}
+
# IMAPClient 2.2.9 3.xx ads
package Mail::IMAPClient;
@@ -3869,3 +3870,33 @@
#$self->Fast_io( $self->Fast_io );
$sock;
}
+
+sub search {
+ my ( $self, @args ) = @_;
+
+ @args = $self->_quote_search(@args);
+
+ $self->_imap_uid_command( SEARCH => @args )
+ or return undef;
+
+ my @hits;
+ foreach ( $self->History ) {
+ chomp;
+ s/$CR?$LF$//o;
+ s/^(\s*\d+)/* SEARCH $1/;
+ s/^\*\s+SEARCH\s+(?=.*?\d)// or next;
+ push @hits, grep /^\d+$/, split;
+ }
+
+ @hits
+ or $self->_debug("Search successful but found no matching messages");
+
+ # return empty list
+ return
+ wantarray ? @hits
+ : !@hits ? \@hits
+ : $self->Ranges ? $self->Range( \@hits )
+ : \@hits;
+}
+
+

2430
patches/imapsync-yahoo Normal file

File diff suppressed because it is too large Load Diff