1
0
mirror of https://github.com/imapsync/imapsync.git synced 2024-11-16 15:52:47 +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
# $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:
@ -20,11 +20,23 @@ to remove one.
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
Contributed by giving the book
15.61 "The Complete Idiot's Guide to Conversational Sign Language Illustrated"
Jeroen Ticheler
Contributed by giving the book
23.77 "Maps of Narrative Practice"

View File

@ -1,17 +1,29 @@
RCS file: RCS/imapsync,v
Working file: imapsync
head: 1.337
head: 1.340
branch:
locks: strict
gilles: 1.337
gilles: 1.340
access list:
symbolic names:
keyword substitution: kv
total revisions: 337; selected revisions: 337
total revisions: 340; selected revisions: 340
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
Added --usedatemanip option (not documented in --help)
Turned off Date::Manip usage by default: release 6.x vs 5.x buggy,

18
FAQ
View File

@ -1,5 +1,5 @@
#!/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 |
@ -59,6 +59,9 @@ R. Here:
RFC 3501 - INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1
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
http://www.faqs.org/rfcs/rfc2595.html
@ -68,6 +71,9 @@ http://www.faqs.org/rfcs/rfc2822.html
RFC 2342 - IMAP4 Namespace
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
http://www.faqs.org/rfcs/rfc4549.html
@ -885,6 +891,16 @@ Q. Migrating from David Tobit V8
R. Use the following options :
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
(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 $
TARGET=imapsync
# $Id: Makefile,v 1.34 2010/07/25 21:30:45 gilles Exp gilles $
.PHONY: help usage all
help: usage
usage:
@echo " $(TARGET) $(VERSION), You can do :"
@echo " imapsync $(VERSION), You can do :"
@echo "make install # as root"
@echo "make testf # run tests"
@echo "make testv # run tests verbosely"
@ -16,24 +14,31 @@ usage:
@echo "make test229 # run tests with Mail-IMAPClient-2.2.9"
@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
.PHONY: test tests testp testf test3xx
.test: $(TARGET) tests.sh
.test: imapsync tests.sh
/usr/bin/time sh tests.sh 1>/dev/null
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
touch .test_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
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
testv:
@ -47,23 +52,23 @@ test3xx: .test_3xx
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
touch .test_229
testf: clean_test test
testp :
perl -c $(TARGET)
perl -c imapsync
ChangeLog: $(TARGET)
rlog $(TARGET) > ChangeLog
ChangeLog: imapsync
rlog imapsync > ChangeLog
README: $(TARGET)
perldoc -t $(TARGET) > README
README: imapsync
perldoc -t imapsync > README
VERSION: $(TARGET) Makefile
perl -I./Mail-IMAPClient-2.2.9 ./$(TARGET) --version > VERSION
VERSION: imapsync Makefile
perl -I./Mail-IMAPClient-2.2.9 ./imapsync --version > VERSION
.PHONY: clean clean_tilde clean_test
@ -77,25 +82,20 @@ clean_tilde:
.PHONY: install dist man
man: $(TARGET).1
man: imapsync.1
clean_man:
rm -f $(TARGET).1
rm -f imapsync.1
$(TARGET).1: $(TARGET)
pod2man $(TARGET) > $(TARGET).1
imapsync.1: imapsync
pod2man imapsync > imapsync.1
install: testp $(TARGET).1
install -D $(TARGET) $(DESTDIR)/usr/bin/$(TARGET)
install -D $(TARGET).1 $(DESTDIR)/usr/share/man/man1/$(TARGET).1
chmod 755 $(DESTDIR)/usr/bin/$(TARGET)
install: testp imapsync.1
install -D imapsync $(DESTDIR)/usr/bin/imapsync
install -D imapsync.1 $(DESTDIR)/usr/share/man/man1/imapsync.1
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
@ -126,15 +126,21 @@ clean_dist:
# 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 . \
/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 \
/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
niouze_lfo : VERSION

87
README
View File

@ -1,19 +1,30 @@
NAME
imapsync - IMAP synchronisation, sync, copy or migration tool.
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
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):
FreeBSD, Debian, Ubuntu, Gentoo, NetBSD, Darwin, Mandriva and OpenBSD (yeah!).
imapsync is already available directly on the following distributions
(at least): FreeBSD, Debian, Ubuntu, Gentoo, NetBSD, Darwin, Mandriva
and OpenBSD (yeah!).
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
where x.xx is the version number. Untar the tarball where
@ -23,12 +34,12 @@ INSTALL
Go into the directory imapsync-x.xx and read the INSTALL file.
The INSTALL file is also at
http://www.linux-france.org/prj/imapsync/INSTALL (for windows users)
The freshmeat record is at http://freshmeat.net/projects/imapsync/
http://www.linux-france.org/prj/imapsync/INSTALL
SYNOPSIS
imapsync [options]
The freshmeat record is at http://freshmeat.net/projects/imapsync/
USAGE
imapsync [options]
To get a description of each option just run imapsync like this:
@ -76,7 +87,7 @@ SYNOPSIS
[--pidfile <filepath>]
[--tmpdir <dirpath>]
[--version] [--help]
DESCRIPTION
The command imapsync is a tool allowing incremental and recursive imap
transfer from one mailbox to another.
@ -88,19 +99,19 @@ DESCRIPTION
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
sides. Same headers, same message size and the transfer is done only
once. All flags are preserved, unread will stay unread, read will stay
read, deleted will stay deleted. You can stop the transfer at any time
and restart it later, imapsync works well with bad connections. imapsync
is CPU hungry so nice and renice commands can be a good help. imapsync
can be memory hungry too, especially with large messages.
sides. Same headers and the transfer is done only once. All flags are
preserved, unread will stay unread, read will stay read, deleted will
stay deleted. You can stop the transfer at any time and restart it
later, imapsync works well with bad connections. imapsync is CPU hungry
so nice and renice commands can be a good help. imapsync can be memory
hungry too, especially with large messages.
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,
use the --delete --expunge1 options.
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
To get a description of each option just invoke:
@ -229,30 +240,32 @@ BUG REPORT GUIDELINES
Help us to help you: in your report, please include:
- imapsync version.
- 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
--folder 'BUG' --debug --debugimap
- imap server software on both side and their version number.
- imapsync with all the options you use, the full command line
imapsync ... --folder 'BUG' --debug --debugimap
- imap server software on both side and their version number.
- imapsync with all the options you use, the full command line
you use (except the passwords of course).
- IMAPClient.pm version.
- operating system running imapsync.
- operating systems on both sides and the third side in case
- IMAPClient.pm version.
- operating system running imapsync.
- operating systems on both sides and the third side in case
you run imapsync on a foreign host from the both.
- virtual software context (vmware, xen etc.)
- virtual software context (vmware, xen etc.)
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 "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
Failure stories reported with the following 4 imap servers:
@ -385,7 +398,7 @@ SIMILAR SOFTWARES
see also tools/wonko_ruby_imapsync
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
300 imapsync under win32. test msw, environnement, using activestate
70 Profiling tests. Interresting results!

10
TODO
View File

@ -1,5 +1,5 @@
#!/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
----------------------
@ -21,6 +21,14 @@ Evaluate
http://www.rackspace.com/apps/email_hosting/migrations
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
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

106
imapsync
View File

@ -16,21 +16,34 @@
imapsync - IMAP synchronisation, sync, copy or migration
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.
$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
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):
FreeBSD, Debian, Ubuntu, Gentoo, NetBSD, Darwin, Mandriva and OpenBSD (yeah!).
imapsync is already available directly on the following distributions
(at least):
FreeBSD, Debian, Ubuntu, Gentoo, NetBSD, Darwin, Mandriva and OpenBSD (yeah!).
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
where x.xx is the version number. Untar the tarball where
@ -40,13 +53,13 @@ $Revision: 1.337 $
Go into the directory imapsync-x.xx and read the INSTALL file.
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/
=head1 SYNOPSIS
=head1 USAGE
imapsync [options]
imapsync [options]
To get a description of each option just run imapsync like this:
@ -112,7 +125,7 @@ another. This is called migration.
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 sides. Same headers, same message size
is already on both sides. Same headers
and the transfer is done only once. All flags are
preserved, unread will stay unread, read will stay read,
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.
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
@ -272,23 +286,24 @@ know you run windows(tm) and you haven't read the README yet.
Help us to help you: in your report, please include:
- imapsync version.
- output given with --debug --debugimap near the failure point.
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.
- imapsync with all the options you use, the full command line
you use (except the passwords of course).
- IMAPClient.pm version.
- operating system running imapsync.
- operating systems on both sides and the third side in case
you run imapsync on a foreign host from the both.
- virtual software context (vmware, xen etc.)
Most of those values can be found as a copy/paste at the begining of the output.
@ -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
"How To Ask Questions The Smart Way"
http://www.catb.org/~esr/faqs/smart-questions.html
and forget it.
and then forget it.
=head1 IMAP SERVERS
@ -452,9 +467,9 @@ Entries for imapsync:
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
@ -542,7 +557,7 @@ my(
# 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_skipped = 0;
@ -561,8 +576,9 @@ unless(defined(&_SYSEXITS_H)) {
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;
get_options();
# default values
@ -634,17 +650,7 @@ sub localhost_info {
}
if ($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();
justconnect();
exit_clean(0);
}
@ -668,8 +674,8 @@ if ($syncinternaldates) {
if ($syncinternaldates || $idatefromheader) {
# Date::Manip is an ugly module it exits (confess) for reading an unset value
# I should write a bug report but too lazy.
# Date::Manip is an ugly module: it exits (confess) for reading an unset value
# I should write a bug report but I'm too lazy.
no warnings 'redefine';
local *Carp::confess = sub { return undef; };
@ -1895,7 +1901,7 @@ Bye.'
print "flags & date from: [$h1_flags][$d]\n";
last FOLDER if $imap1->IsUnconnected();
last FOLDER if $imap2->IsUnconnected();
$d = undef;
$d = undef if ($d eq "");
unless ($dry) {
if ($OSNAME eq "MSWin32") {
@ -2095,7 +2101,7 @@ exit_clean(0);
# subroutines
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+)/;
my $VERSION = ($1) ? $1: "UNKNOWN";
return($VERSION);
@ -2179,8 +2185,8 @@ sub banner_imapsync {
my @argv_copy = @_;
my $banner_imapsync = join("",
'$RCSfile: imapsync,v $ ',
'$Revision: 1.337 $ ',
'$Date: 2010/07/16 23:23:40 $ ',
'$Revision: 1.340 $ ',
'$Date: 2010/08/09 00:03:21 $ ',
"\n",localhost_info(), "\n",
"Command line used:\n",
"$0 ", command_line_nopassword(@argv_copy), "\n",
@ -2216,6 +2222,22 @@ sub write_pidfile {
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 {
my $status = shift;

View File

@ -5,7 +5,7 @@
<title>imapsync <!--#exec cmd="cat VERSION" --> </title>
<meta name="generator" content="Bluefish 1.0.7"/>
<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="keywords" content="imap, transfert, migration"/>
<meta name="description" content="imap migration tool"/>
@ -16,26 +16,15 @@
</head>
<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>
<h2>What is imapsync?</h2>
<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>
<a id="AUTHOR"></a>
<h2>AUTHOR</h2>
<p>Gilles LAMIRAL<br/>
@ -55,6 +44,7 @@ recursive <b>imap</b> transfers from one mailbox to another.
for feedback.
</p>
<a id="donation"></a>
<h2>imapsync donation</h2>
<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>
@ -75,6 +65,7 @@ Or offer him a book on his
<b><i>Thanks in advance!</i></b></p>
<a id="latest"></a>
<h2><a href="imapsync">Latest release
<!--#exec cmd="cat VERSION" -->
(<!--#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>
<a id="MAILING-LIST"></a>
<h2>MAILING-LIST</h2>
<p>
@ -133,6 +125,7 @@ thanks to Strawberry Perl 5.12 and Par::Packed module.<br/>
<b>Thank you for your participation!</b>
</p>
<a id="TODO"></a>
<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/>
@ -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="%A %B %d, %Y" -->
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>
</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