mirror of
https://github.com/imapsync/imapsync.git
synced 2025-07-25 03:28:16 +02:00
1.260
This commit is contained in:
parent
1f4db27b3d
commit
f854c1ea0a
11 changed files with 366 additions and 36461 deletions
85
CREDITS
85
CREDITS
|
@ -1,4 +1,5 @@
|
||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
|
# $Id: CREDITS,v 1.114 2008/08/13 23:34:05 gilles Exp gilles $
|
||||||
|
|
||||||
I thank very much all of these people.
|
I thank very much all of these people.
|
||||||
|
|
||||||
|
@ -10,10 +11,42 @@ a) you can use the imapsync wishlist :
|
||||||
|
|
||||||
b) If you can read french, please use the following wishlist :
|
b) If you can read french, please use the following wishlist :
|
||||||
http://amazon.fr/gp/registry/wishlist/37RZF7PPCD7YL
|
http://amazon.fr/gp/registry/wishlist/37RZF7PPCD7YL
|
||||||
(free postal cost)
|
(books will be send with free postal cost)
|
||||||
|
|
||||||
c) its paypal account gilles.lamiral@laposte.net
|
c) its paypal account gilles.lamiral@laposte.net
|
||||||
|
|
||||||
|
Here are the people I thanks, and why :
|
||||||
|
|
||||||
|
Ploc
|
||||||
|
Made me write the option --idatefromheader
|
||||||
|
|
||||||
|
Pierre-Emmanuel André
|
||||||
|
Success from dovecot 1.0.0 to Archiveopteryx 2.10
|
||||||
|
|
||||||
|
Kevin Harriss
|
||||||
|
Pushed me to find (documentation and source) and solve
|
||||||
|
the authuser method with uw-imap. FAQ entry.
|
||||||
|
|
||||||
|
Scott Pedigo
|
||||||
|
Contributed by giving the book
|
||||||
|
"Smart and Gets Things Done"
|
||||||
|
|
||||||
|
|
||||||
|
Don Jackson
|
||||||
|
Contributed by giving the book
|
||||||
|
"The Back of the Napkin"
|
||||||
|
|
||||||
|
Joschua Penix
|
||||||
|
Contributed by giving the book
|
||||||
|
"Programming Collective Intelligence"
|
||||||
|
|
||||||
|
Bertram N Shure
|
||||||
|
Contributed by giving the book
|
||||||
|
"Hackers and Painters".
|
||||||
|
|
||||||
|
Simon Heimlicher
|
||||||
|
Gave a patch to avoid non-selectable folders.
|
||||||
|
|
||||||
Stéphane Besnard
|
Stéphane Besnard
|
||||||
Success from Serveur Domino IMAP4 Edition France 4.61 Code
|
Success from Serveur Domino IMAP4 Edition France 4.61 Code
|
||||||
to Cyrus IMAP4 v2.3.7 server ready
|
to Cyrus IMAP4 v2.3.7 server ready
|
||||||
|
@ -564,3 +597,53 @@ Suggested --subscribed option.
|
||||||
Eric Yung
|
Eric Yung
|
||||||
(Suggested --sep1 option) and tested it, and found a bug about it.
|
(Suggested --sep1 option) and tested it, and found a bug about it.
|
||||||
|
|
||||||
|
Total amount of book prices :
|
||||||
|
c \
|
||||||
|
16.47+\
|
||||||
|
26.39+\
|
||||||
|
29.95+\
|
||||||
|
33.95+\
|
||||||
|
15.61+\
|
||||||
|
11.55+\
|
||||||
|
16.49+\
|
||||||
|
16.49+\
|
||||||
|
22.00+\
|
||||||
|
26.39+\
|
||||||
|
26.39+\
|
||||||
|
19.77+\
|
||||||
|
23.60+\
|
||||||
|
19.77+\
|
||||||
|
51.70+\
|
||||||
|
19.79+\
|
||||||
|
58.38+\
|
||||||
|
13.57+\
|
||||||
|
32.70+\
|
||||||
|
29.00+\
|
||||||
|
19.00+\
|
||||||
|
26.37+\
|
||||||
|
38.60+\
|
||||||
|
16.49+\
|
||||||
|
39.10+\
|
||||||
|
28.00+\
|
||||||
|
40.00+\
|
||||||
|
18.21+\
|
||||||
|
24.95+\
|
||||||
|
31.49+\
|
||||||
|
64.50+\
|
||||||
|
32.70+\
|
||||||
|
50.40+\
|
||||||
|
22.49+\
|
||||||
|
18.21+\
|
||||||
|
29.70+\
|
||||||
|
15.96+\
|
||||||
|
13.57+\
|
||||||
|
15.61+\
|
||||||
|
11.86+\
|
||||||
|
14.95+\
|
||||||
|
12.21+\
|
||||||
|
27.50+\
|
||||||
|
59.99+\
|
||||||
|
31.20+\
|
||||||
|
40.00
|
||||||
|
|
||||||
|
=1253.02
|
||||||
|
|
37
ChangeLog
37
ChangeLog
|
@ -1,17 +1,46 @@
|
||||||
|
|
||||||
RCS file: RCS/imapsync,v
|
RCS file: RCS/imapsync,v
|
||||||
Working file: imapsync
|
Working file: imapsync
|
||||||
head: 1.255
|
head: 1.260
|
||||||
branch:
|
branch:
|
||||||
locks: strict
|
locks: strict
|
||||||
gilles: 1.255
|
gilles: 1.260
|
||||||
access list:
|
access list:
|
||||||
symbolic names:
|
symbolic names:
|
||||||
keyword substitution: kv
|
keyword substitution: kv
|
||||||
total revisions: 255; selected revisions: 255
|
total revisions: 260; selected revisions: 260
|
||||||
description:
|
description:
|
||||||
----------------------------
|
----------------------------
|
||||||
revision 1.255 locked by: gilles;
|
revision 1.260 locked by: gilles;
|
||||||
|
date: 2008/08/13 03:14:14; author: gilles; state: Exp; lines: +54 -13
|
||||||
|
- Added option --idatefromheader :
|
||||||
|
sets the internal dates on host2 same as the "Date:" headers.
|
||||||
|
----------------------------
|
||||||
|
revision 1.259
|
||||||
|
date: 2008/08/13 01:22:10; author: gilles; state: Exp; lines: +49 -21
|
||||||
|
- Made a function for regexmess() --regexmess to be able to
|
||||||
|
check it easily
|
||||||
|
- Added function tests_regexmess() to check regexmess(), 3
|
||||||
|
tests.
|
||||||
|
- Removed imapsync copyleft GPL licence output (boring).
|
||||||
|
Replaced by wishlist link.
|
||||||
|
- Added thank_author() to avoid duplicate code about thanks.
|
||||||
|
- Better bug report documentation.
|
||||||
|
----------------------------
|
||||||
|
revision 1.258
|
||||||
|
date: 2008/07/28 21:38:36; author: gilles; state: Exp; lines: +18 -18
|
||||||
|
Change report bug information order.
|
||||||
|
----------------------------
|
||||||
|
revision 1.257
|
||||||
|
date: 2008/07/28 21:17:56; author: gilles; state: Exp; lines: +10 -19
|
||||||
|
removed comment and ugly output
|
||||||
|
----------------------------
|
||||||
|
revision 1.256
|
||||||
|
date: 2008/06/29 01:28:51; author: gilles; state: Exp; lines: +14 -5
|
||||||
|
Applied patch from Simon Heimlicher to avoid non-selectable
|
||||||
|
folders.
|
||||||
|
----------------------------
|
||||||
|
revision 1.255
|
||||||
date: 2008/06/24 16:38:49; author: gilles; state: Exp; lines: +7 -6
|
date: 2008/06/24 16:38:49; author: gilles; state: Exp; lines: +7 -6
|
||||||
Domino (Notes) 4.61
|
Domino (Notes) 4.61
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
53
FAQ
53
FAQ
|
@ -26,6 +26,9 @@ R.
|
||||||
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
|
||||||
|
|
||||||
|
RFC 2595 - Using TLS with IMAP, POP3 and ACAP
|
||||||
|
http://www.faqs.org/rfcs/rfc2595.html
|
||||||
|
|
||||||
RFC 2822 - Internet Message Format
|
RFC 2822 - Internet Message Format
|
||||||
http://www.faqs.org/rfcs/rfc2822.html
|
http://www.faqs.org/rfcs/rfc2822.html
|
||||||
|
|
||||||
|
@ -294,6 +297,14 @@ R. Use
|
||||||
|
|
||||||
--folderrec 'MyFolder'
|
--folderrec 'MyFolder'
|
||||||
|
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
Q. How to migrate from uw-imap with an admin/authuser account ?
|
||||||
|
|
||||||
|
R. Use
|
||||||
|
--user1="user*admin_user" --password1 "admin_user_password"
|
||||||
|
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
Q. How to migrate from cyrus with an admin account ?
|
Q. How to migrate from cyrus with an admin account ?
|
||||||
|
|
||||||
|
@ -469,8 +480,25 @@ before using imapsync. Don't think to add a colon to this
|
||||||
line since you will end with two "From:" lines (just look at
|
line since you will end with two "From:" lines (just look at
|
||||||
the other lines)
|
the other lines)
|
||||||
|
|
||||||
b) Run imapsync with the following option :
|
b) Run imapsync with the following options :
|
||||||
--regexmess 's/\AFrom \w .*\n//'
|
--regexmess 's/\AFrom \w .*\n//' --skipsize
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. The contact folder isn't well copied.
|
||||||
|
How to copy the contact folder ?
|
||||||
|
|
||||||
|
R. Forget the destination server (chose the same)
|
||||||
|
Change the script around line 1426
|
||||||
|
# ITSD
|
||||||
|
$new_id = $from->copy($t_fold,$f_msg);
|
||||||
|
#$new_id = $to->append_string($t_fold,$string, $flags_f, $d);
|
||||||
|
and tried a copy of the mail instead an append_string.
|
||||||
|
Because we are using the same server, we can use $from->copy
|
||||||
|
Therefore we seem to not download and upload the message and therefore
|
||||||
|
we do not have any format issues.
|
||||||
|
And now it works fine.
|
||||||
|
(Thanks to Hansjoerg.Maurer)
|
||||||
|
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. Synchronysing from XXX to Gmail
|
Q. Synchronysing from XXX to Gmail
|
||||||
|
@ -647,6 +675,8 @@ To convert the wholes messages from 8bit to 7bit, use option :
|
||||||
|
|
||||||
--regexmess 's/[\x80-\xff]/X/g'
|
--regexmess 's/[\x80-\xff]/X/g'
|
||||||
|
|
||||||
|
(This is bad since only headers need this).
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
Q: From MailEnable 1.75
|
Q: From MailEnable 1.75
|
||||||
R: --sep1 "/" --prefix1 ""
|
R: --sep1 "/" --prefix1 ""
|
||||||
|
@ -666,6 +696,25 @@ Use:
|
||||||
--useheader Message-Id --skipsize
|
--useheader Message-Id --skipsize
|
||||||
|
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
Q. From any to Exchange2007
|
||||||
|
|
||||||
|
Several problems:
|
||||||
|
- Big messages: increse the "send- and receive-connector"
|
||||||
|
in exchange2007 to 40 MB.
|
||||||
|
|
||||||
|
R. 2 solutions
|
||||||
|
|
||||||
|
R1. With imapsync (only partial success)
|
||||||
|
--skipsize --skipheader 'Received' \
|
||||||
|
--regexmess 's{\A(.*?(?!^$))^Date:(.*?)$}{$1Date:$2\nReceived: From; $2}gxms'
|
||||||
|
Any user having time to spend to debug Exchange2007 with imapsync
|
||||||
|
is welcome.
|
||||||
|
|
||||||
|
R2. Other solution
|
||||||
|
Two users succeded by using "MS Transporter Suite" (which is closed
|
||||||
|
expensive nonfree software).
|
||||||
|
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
Q: How can I write an .rpm with imapsync
|
Q: How can I write an .rpm with imapsync
|
||||||
|
|
43
README
43
README
|
@ -3,7 +3,7 @@ NAME
|
||||||
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 32 different IMAP server softwares supported with success.
|
||||||
|
|
||||||
$Revision: 1.255 $
|
$Revision: 1.260 $
|
||||||
|
|
||||||
INSTALL
|
INSTALL
|
||||||
imapsync works fine under any Unix OS with perl.
|
imapsync works fine under any Unix OS with perl.
|
||||||
|
@ -53,6 +53,7 @@ SYNOPSIS
|
||||||
[--sep2 <char>]
|
[--sep2 <char>]
|
||||||
[--justfolders] [--justfoldersizes] [--justconnect]
|
[--justfolders] [--justfoldersizes] [--justconnect]
|
||||||
[--syncinternaldates]
|
[--syncinternaldates]
|
||||||
|
[--idatefromheader]
|
||||||
[--buffersize <int>]
|
[--buffersize <int>]
|
||||||
[--syncacls]
|
[--syncacls]
|
||||||
[--regexmess <regex>] [--regexmess <regex>]
|
[--regexmess <regex>] [--regexmess <regex>]
|
||||||
|
@ -201,37 +202,38 @@ MAILING-LIST
|
||||||
|
|
||||||
Thank you for your participation.
|
Thank you for your participation.
|
||||||
|
|
||||||
BUGS
|
BUGS and BUG REPORT
|
||||||
No known serious bug. Report any bug or feature request to the author or
|
No known serious bug.
|
||||||
the mailing-list. Before reporting bugs, read the FAQ, this README and
|
|
||||||
the TODO files.
|
Report any bug or feature request to the author or the mailing-list.
|
||||||
|
|
||||||
|
Before reporting bugs, read the FAQ, this README and the TODO files.
|
||||||
|
|
||||||
Don't write imapsync in uppercase in the email title, I'll know you run
|
Don't write imapsync in uppercase in the email title, I'll know you run
|
||||||
windows.
|
windows and you haven't read the README yet.
|
||||||
|
|
||||||
Make a good title, not just "imapsync" or "problem", a good title is
|
Make a good title, not just "imapsync" or "problem", a good title is
|
||||||
made of keywords summary, not too long (one visible line).
|
made of keywords summary, not too long (one visible line).
|
||||||
|
|
||||||
In your report, please include:
|
Before reporting bugs, read the FAQ, this README and the TODO files.
|
||||||
|
http://www.linux-france.org/prj/imapsync/
|
||||||
|
|
||||||
|
Help me to help you: in your report, please include:
|
||||||
|
|
||||||
- imapsync version.
|
- imapsync version.
|
||||||
- IMAPClient.pm version.
|
- output given with --debug --debugimap near the failure point.
|
||||||
- perl version.
|
|
||||||
- operating system running imapsync.
|
- operating system running imapsync.
|
||||||
- imap servers softwares on both side and their version.
|
- imap servers softwares 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.
|
||||||
|
|
||||||
Those values can be found with the command line
|
Those values can be found as a copy/paste at the begining of the output.
|
||||||
|
|
||||||
imapsync --host1 imap.host1.net --host2 imap.host2.org --justconnect
|
|
||||||
|
|
||||||
And also, if it can help :
|
And also, if it can help :
|
||||||
|
|
||||||
- operating systems on both sides and the third side in case
|
- operating systems on both sides and the third side in case
|
||||||
you run imapsync on a foreign host from the both.
|
you run imapsync on a foreign host from the both.
|
||||||
- imapsync with all the options you use, the full command line
|
|
||||||
you use (except the passwords of course). This can be found
|
|
||||||
at the beginning of the output.
|
|
||||||
- output given with --debug --debugimap near the failure point.
|
|
||||||
|
|
||||||
IMAP SERVERS
|
IMAP SERVERS
|
||||||
Failure stories reported with the following 4 imap servers :
|
Failure stories reported with the following 4 imap servers :
|
||||||
|
@ -245,7 +247,8 @@ IMAP SERVERS
|
||||||
Success stories reported with the following 35 imap servers (softwares
|
Success stories reported with the following 35 imap servers (softwares
|
||||||
names are in alphabetic order) :
|
names are in alphabetic order) :
|
||||||
|
|
||||||
- Archiveopteryx 2.03, 2.04, 2.09 (OSL 3.0) http://www.archiveopteryx.org/
|
- Archiveopteryx 2.03, 2.04, 2.09, 2.10 [dest]
|
||||||
|
(OSL 3.0) http://www.archiveopteryx.org/
|
||||||
- BincImap 1.2.3 (GPL) (http://www.bincimap.org/)
|
- BincImap 1.2.3 (GPL) (http://www.bincimap.org/)
|
||||||
- CommuniGatePro server (Redhat 8.0)
|
- CommuniGatePro server (Redhat 8.0)
|
||||||
- Courier IMAP 1.5.1, 2.2.0, 2.1.1, 2.2.1, 3.0.8, 3.0.3, 4.1.1 (GPL)
|
- Courier IMAP 1.5.1, 2.2.0, 2.1.1, 2.2.1, 3.0.8, 3.0.3, 4.1.1 (GPL)
|
||||||
|
@ -295,7 +298,7 @@ IMAP SERVERS
|
||||||
- Zimbra-IMAP 3.0.1 GA 160, 3.1.0 Build 279, 4.0.5, 4.5.2, 4.5.6, 5.5.
|
- Zimbra-IMAP 3.0.1 GA 160, 3.1.0 Build 279, 4.0.5, 4.5.2, 4.5.6, 5.5.
|
||||||
|
|
||||||
Please report to the author any success or bad story with imapsync and
|
Please report to the author any success or bad story with imapsync and
|
||||||
don't forget to mention the IMAP server software names and version on
|
do not forget to mention the IMAP server software names and version on
|
||||||
both sides. This will help future users. To help the author maintaining
|
both sides. This will help future users. To help the author maintaining
|
||||||
this section report the two lines at the begining of the output if they
|
this section report the two lines at the begining of the output if they
|
||||||
are useful to know the softwares. Example:
|
are useful to know the softwares. Example:
|
||||||
|
@ -361,5 +364,5 @@ SIMILAR SOFTWARES
|
||||||
|
|
||||||
Feedback (good or bad) will be always welcome.
|
Feedback (good or bad) will be always welcome.
|
||||||
|
|
||||||
$Id: imapsync,v 1.255 2008/06/24 16:38:49 gilles Exp gilles $
|
$Id: imapsync,v 1.260 2008/08/13 03:14:14 gilles Exp gilles $
|
||||||
|
|
||||||
|
|
14
TODO
14
TODO
|
@ -1,6 +1,20 @@
|
||||||
TODO file for imapsync
|
TODO file for imapsync
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
|
Write to zimbra coders about the date presentation:
|
||||||
|
Sorting by default by internal date is bad with migrations
|
||||||
|
and delays arrivals. An option would be good.
|
||||||
|
|
||||||
|
Fix --ssl --justconnect bug
|
||||||
|
|
||||||
|
Fix --ssl need --authmech login with gmail. Why?
|
||||||
|
|
||||||
|
Add an option to implement the faq entry about copying a contact folder.
|
||||||
|
|
||||||
|
imapsync doesn't report well. It should says "I had
|
||||||
|
to sync 123 messages but I could transfer only 99 messages"
|
||||||
|
|
||||||
|
|
||||||
Fix bug "not possible to use space in the imap password"
|
Fix bug "not possible to use space in the imap password"
|
||||||
|
|
||||||
Add kerberos authentification
|
Add kerberos authentification
|
||||||
|
|
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
||||||
1.255
|
1.260
|
||||||
|
|
|
@ -15,7 +15,12 @@ RELEASE_FOCUS="Major bugfixes"
|
||||||
#TEXT_BODY="Bug fix: be case insensitive with header keywords."
|
#TEXT_BODY="Bug fix: be case insensitive with header keywords."
|
||||||
#TEXT_BODY="Bug fix: rewrote the way to store messages to avoid freeze problems with some imap servers"
|
#TEXT_BODY="Bug fix: rewrote the way to store messages to avoid freeze problems with some imap servers"
|
||||||
#TEXT_BODY="Bug fix: Allow long usernames with md5 authentification."
|
#TEXT_BODY="Bug fix: Allow long usernames with md5 authentification."
|
||||||
|
#TEXT_BODY="Bug fix: Bug really fixed: 'parse_headers want an ARRAY ref' crash (second time)."
|
||||||
|
|
||||||
TEXT_BODY="Bug fixes:
|
TEXT_BODY="Bug fixes:
|
||||||
- Bug really fixed: "parse_headers want an ARRAY ref" crash (second time).
|
- Adaptation fix: Some imap servers return message size not equal to real message
|
||||||
|
size. Now imapsync accept this silly behavior and leave the message as is.
|
||||||
|
|
||||||
- Many thanks to the freshmeat folk that correct my bad and poorly English !
|
- Many thanks to the freshmeat folk that correct my bad and poorly English !
|
||||||
"
|
"
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,14 @@
|
||||||
Project: imapsync
|
Project: imapsync
|
||||||
Version: 1.252
|
Version: 1.255
|
||||||
Release-Focus: Major bugfixes
|
Release-Focus: Major bugfixes
|
||||||
Hide: N
|
Hide: N
|
||||||
Home-Page-URL: http://www.linux-france.org/prj/imapsync/
|
Home-Page-URL: http://www.linux-france.org/prj/imapsync/
|
||||||
Gzipped-Tar-URL: http://www.linux-france.org/prj/imapsync/dist/
|
Gzipped-Tar-URL: http://www.linux-france.org/prj/imapsync/dist/
|
||||||
|
|
||||||
|
Bug fixes:
|
||||||
|
- Adaptation fix: Some imap servers return message size not equal to real message
|
||||||
|
size. Now imapsync accept this silly behavior and leave the message as is.
|
||||||
|
|
||||||
|
- Many thanks to the freshmeat folk that correct my bad and poorly English !
|
||||||
|
|
||||||
|
|
||||||
|
|
179
imapsync
179
imapsync
|
@ -9,7 +9,7 @@ tool. Synchronise mailboxes between two imap servers. Good
|
||||||
at IMAP migration. More than 32 different IMAP server softwares
|
at IMAP migration. More than 32 different IMAP server softwares
|
||||||
supported with success.
|
supported with success.
|
||||||
|
|
||||||
$Revision: 1.255 $
|
$Revision: 1.260 $
|
||||||
|
|
||||||
=head1 INSTALL
|
=head1 INSTALL
|
||||||
|
|
||||||
|
@ -61,6 +61,7 @@ The option list :
|
||||||
[--sep2 <char>]
|
[--sep2 <char>]
|
||||||
[--justfolders] [--justfoldersizes] [--justconnect]
|
[--justfolders] [--justfoldersizes] [--justconnect]
|
||||||
[--syncinternaldates]
|
[--syncinternaldates]
|
||||||
|
[--idatefromheader]
|
||||||
[--buffersize <int>]
|
[--buffersize <int>]
|
||||||
[--syncacls]
|
[--syncacls]
|
||||||
[--regexmess <regex>] [--regexmess <regex>]
|
[--regexmess <regex>] [--regexmess <regex>]
|
||||||
|
@ -234,39 +235,41 @@ post to this list if you want to stay private.
|
||||||
|
|
||||||
Thank you for your participation.
|
Thank you for your participation.
|
||||||
|
|
||||||
=head1 BUGS
|
=head1 BUGS and BUG REPORT
|
||||||
|
|
||||||
No known serious bug. Report any bug or feature request to the author
|
No known serious bug.
|
||||||
|
|
||||||
|
Report any bug or feature request to the author
|
||||||
or the mailing-list.
|
or the mailing-list.
|
||||||
|
|
||||||
Before reporting bugs, read the FAQ, this README and the
|
Before reporting bugs, read the FAQ, this README and the
|
||||||
TODO files.
|
TODO files.
|
||||||
|
|
||||||
Don't write imapsync in uppercase in the email title, I'll
|
Don't write imapsync in uppercase in the email title, I'll
|
||||||
know you run windows.
|
know you run windows and you haven't read the README yet.
|
||||||
|
|
||||||
Make a good title, not just "imapsync" or "problem",
|
Make a good title, not just "imapsync" or "problem",
|
||||||
a good title is made of keywords summary, not too long (one visible line).
|
a good title is made of keywords summary, not too long (one visible line).
|
||||||
|
|
||||||
In your report, please include:
|
Before reporting bugs, read the FAQ, this README and the
|
||||||
|
TODO files. http://www.linux-france.org/prj/imapsync/
|
||||||
|
|
||||||
|
Help me to help you: in your report, please include:
|
||||||
|
|
||||||
- imapsync version.
|
- imapsync version.
|
||||||
- IMAPClient.pm version.
|
- output given with --debug --debugimap near the failure point.
|
||||||
- perl version.
|
|
||||||
- operating system running imapsync.
|
- operating system running imapsync.
|
||||||
- imap servers softwares on both side and their version.
|
- imap servers softwares 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.
|
||||||
|
|
||||||
Those values can be found with the command line
|
Those values can be found as a copy/paste at the begining of the output.
|
||||||
|
|
||||||
imapsync --host1 imap.host1.net --host2 imap.host2.org --justconnect
|
|
||||||
|
|
||||||
And also, if it can help :
|
And also, if it can help :
|
||||||
|
|
||||||
- operating systems on both sides and the third side in case
|
- operating systems on both sides and the third side in case
|
||||||
you run imapsync on a foreign host from the both.
|
you run imapsync on a foreign host from the both.
|
||||||
- imapsync with all the options you use, the full command line
|
|
||||||
you use (except the passwords of course). This can be found
|
|
||||||
at the beginning of the output.
|
|
||||||
- output given with --debug --debugimap near the failure point.
|
|
||||||
|
|
||||||
=head1 IMAP SERVERS
|
=head1 IMAP SERVERS
|
||||||
|
|
||||||
|
@ -281,7 +284,8 @@ Failure stories reported with the following 4 imap servers :
|
||||||
Success stories reported with the following 35 imap servers
|
Success stories reported with the following 35 imap servers
|
||||||
(softwares names are in alphabetic order) :
|
(softwares names are in alphabetic order) :
|
||||||
|
|
||||||
- Archiveopteryx 2.03, 2.04, 2.09 (OSL 3.0) http://www.archiveopteryx.org/
|
- Archiveopteryx 2.03, 2.04, 2.09, 2.10 [dest]
|
||||||
|
(OSL 3.0) http://www.archiveopteryx.org/
|
||||||
- BincImap 1.2.3 (GPL) (http://www.bincimap.org/)
|
- BincImap 1.2.3 (GPL) (http://www.bincimap.org/)
|
||||||
- CommuniGatePro server (Redhat 8.0)
|
- CommuniGatePro server (Redhat 8.0)
|
||||||
- Courier IMAP 1.5.1, 2.2.0, 2.1.1, 2.2.1, 3.0.8, 3.0.3, 4.1.1 (GPL)
|
- Courier IMAP 1.5.1, 2.2.0, 2.1.1, 2.2.1, 3.0.8, 3.0.3, 4.1.1 (GPL)
|
||||||
|
@ -331,7 +335,7 @@ Success stories reported with the following 35 imap servers
|
||||||
- Zimbra-IMAP 3.0.1 GA 160, 3.1.0 Build 279, 4.0.5, 4.5.2, 4.5.6, 5.5.
|
- Zimbra-IMAP 3.0.1 GA 160, 3.1.0 Build 279, 4.0.5, 4.5.2, 4.5.6, 5.5.
|
||||||
|
|
||||||
Please report to the author any success or bad story with
|
Please report to the author any success or bad story with
|
||||||
imapsync and don't forget to mention the IMAP server
|
imapsync and do not forget to mention the IMAP server
|
||||||
software names and version on both sides. This will help
|
software names and version on both sides. This will help
|
||||||
future users. To help the author maintaining this section
|
future users. To help the author maintaining this section
|
||||||
report the two lines at the begining of the output if they
|
report the two lines at the begining of the output if they
|
||||||
|
@ -418,7 +422,7 @@ Entries for imapsync:
|
||||||
|
|
||||||
Feedback (good or bad) will be always welcome.
|
Feedback (good or bad) will be always welcome.
|
||||||
|
|
||||||
$Id: imapsync,v 1.255 2008/06/24 16:38:49 gilles Exp gilles $
|
$Id: imapsync,v 1.260 2008/08/13 03:14:14 gilles Exp gilles $
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -453,7 +457,9 @@ my(
|
||||||
$prefix1, $prefix2,
|
$prefix1, $prefix2,
|
||||||
@regextrans2, @regexmess, @regexflag,
|
@regextrans2, @regexmess, @regexflag,
|
||||||
$sep1, $sep2,
|
$sep1, $sep2,
|
||||||
$syncinternaldates, $syncacls,
|
$syncinternaldates,
|
||||||
|
$idatefromheader,
|
||||||
|
$syncacls,
|
||||||
$fastio1, $fastio2,
|
$fastio1, $fastio2,
|
||||||
$maxsize, $maxage, $minage,
|
$maxsize, $maxage, $minage,
|
||||||
$skipheader, @useheader,
|
$skipheader, @useheader,
|
||||||
|
@ -483,7 +489,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.255 2008/06/24 16:38:49 gilles Exp gilles $ ';
|
$rcs = '$Id: imapsync,v 1.260 2008/08/13 03:14:14 gilles Exp gilles $ ';
|
||||||
$rcs =~ m/,v (\d+\.\d+)/;
|
$rcs =~ m/,v (\d+\.\d+)/;
|
||||||
$VERSION = ($1) ? $1 : "UNKNOWN";
|
$VERSION = ($1) ? $1 : "UNKNOWN";
|
||||||
|
|
||||||
|
@ -517,8 +523,8 @@ $error=0;
|
||||||
|
|
||||||
my $banner = join("",
|
my $banner = join("",
|
||||||
'$RCSfile: imapsync,v $ ',
|
'$RCSfile: imapsync,v $ ',
|
||||||
'$Revision: 1.255 $ ',
|
'$Revision: 1.260 $ ',
|
||||||
'$Date: 2008/06/24 16:38:49 $ ',
|
'$Date: 2008/08/13 03:14:14 $ ',
|
||||||
"\n",localhost_info(),
|
"\n",localhost_info(),
|
||||||
" and the module Mail::IMAPClient version used here is ",
|
" and the module Mail::IMAPClient version used here is ",
|
||||||
$VERSION_IMAPClient,"\n",
|
$VERSION_IMAPClient,"\n",
|
||||||
|
@ -592,13 +598,21 @@ $user1 || missing_option("--user1");
|
||||||
$user2 || missing_option("--user2");
|
$user2 || missing_option("--user2");
|
||||||
|
|
||||||
$syncinternaldates = defined($syncinternaldates) ? defined($syncinternaldates) : 1;
|
$syncinternaldates = defined($syncinternaldates) ? defined($syncinternaldates) : 1;
|
||||||
|
|
||||||
|
if($idatefromheader) {
|
||||||
|
print "Turned ON idatefromheader, ",
|
||||||
|
"will set the internal dates on host2 from the 'Date:' header line.\n";
|
||||||
|
$syncinternaldates = 0;
|
||||||
|
|
||||||
|
}
|
||||||
if ($syncinternaldates) {
|
if ($syncinternaldates) {
|
||||||
print "Turned ON syncinternaldates, will set the internal dates on host2 same as host1.\n";
|
print "Turned ON syncinternaldates, ",
|
||||||
|
"will set the internal dates on host2 same as host1.\n";
|
||||||
}else{
|
}else{
|
||||||
print "Turned OFF syncinternaldates\n";
|
print "Turned OFF syncinternaldates\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($syncinternaldates) {
|
if ($syncinternaldates || $idatefromheader) {
|
||||||
no warnings 'redefine';
|
no warnings 'redefine';
|
||||||
local *Carp::confess = sub { return undef; };
|
local *Carp::confess = sub { return undef; };
|
||||||
require Date::Manip;
|
require Date::Manip;
|
||||||
|
@ -908,6 +922,15 @@ if (scalar(@exclude)) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Remove no selectable folders
|
||||||
|
|
||||||
|
foreach my $folder (keys(%requested_folder)) {
|
||||||
|
if ( not $from->selectable($folder)) {
|
||||||
|
print "Warning : ignoring folder $folder because it is not selectable\n";
|
||||||
|
remove_from_requested_folders($folder);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
my @requested_folder = sort(keys(%requested_folder));
|
my @requested_folder = sort(keys(%requested_folder));
|
||||||
|
|
||||||
|
@ -1386,12 +1409,33 @@ FOLDER: foreach my $f_fold (@f_folders) {
|
||||||
#print "AAA1[$string]ZZZ\n";
|
#print "AAA1[$string]ZZZ\n";
|
||||||
#unlink($message_file);
|
#unlink($message_file);
|
||||||
if (@regexmess) {
|
if (@regexmess) {
|
||||||
|
$string = regexmess($string);
|
||||||
|
|
||||||
|
#string_to_file($string, $message_file);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub tests_regexmess {
|
||||||
|
|
||||||
|
ok("blabla" eq regexmess("blabla"), "regexmess, nothing to do");
|
||||||
|
@regexmess = ('s/p/Z/g');
|
||||||
|
ok("ZoZoZo" eq regexmess("popopo"), "regexmess, s/p/Z/g");
|
||||||
|
@regexmess = 's{c}{C}gxms';
|
||||||
|
#print "RRR¤\n", regexmess("H1: abc\nH2: cde\n\nBody abc"), "\n";
|
||||||
|
ok("H1: abC\nH2: Cde\n\nBody abC"
|
||||||
|
eq regexmess("H1: abc\nH2: cde\n\nBody abc"),
|
||||||
|
"regexmess, c->C");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
sub regexmess {
|
||||||
|
my ($string) = @_;
|
||||||
foreach my $regexmess (@regexmess) {
|
foreach my $regexmess (@regexmess) {
|
||||||
$debug and print "eval \$string =~ $regexmess\n";
|
$debug and print "eval \$string =~ $regexmess\n";
|
||||||
eval("\$string =~ $regexmess");
|
eval("\$string =~ $regexmess");
|
||||||
}
|
}
|
||||||
#string_to_file($string, $message_file);
|
return($string);
|
||||||
}
|
}
|
||||||
|
|
||||||
$debug and print
|
$debug and print
|
||||||
"=" x80, "\n",
|
"=" x80, "\n",
|
||||||
"F message content begin next line\n",
|
"F message content begin next line\n",
|
||||||
|
@ -1400,12 +1444,26 @@ FOLDER: foreach my $f_fold (@f_folders) {
|
||||||
my $d = "";
|
my $d = "";
|
||||||
if ($syncinternaldates) {
|
if ($syncinternaldates) {
|
||||||
$d = $f_idate;
|
$d = $f_idate;
|
||||||
$debug and print "internal date from 1: [$d]\n";
|
$debug and print "internal date from 1: [$d]\n";
|
||||||
$d = UnixDate(ParseDate($d), "%d-%b-%Y %H:%M:%S %z");
|
$d = good_date($d);
|
||||||
$d = "\"$d\"";
|
|
||||||
$debug and print "internal date from 1: [$d] (fixed)\n";
|
$debug and print "internal date from 1: [$d] (fixed)\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($idatefromheader) {
|
||||||
|
|
||||||
|
$d = $from->get_header($f_msg,"Date");
|
||||||
|
$debug and print "header date from 1: [$d]\n";
|
||||||
|
$d = good_date($d);
|
||||||
|
$debug and print "header date from 1: [$d] (fixed)\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
sub good_date {
|
||||||
|
my ($d) = @_;
|
||||||
|
$d = UnixDate(ParseDate($d), "%d-%b-%Y %H:%M:%S %z");
|
||||||
|
$d = "\"$d\"";
|
||||||
|
return($d);
|
||||||
|
}
|
||||||
|
|
||||||
my $flags_f = $f_hash{$m_id}{'F'} || "";
|
my $flags_f = $f_hash{$m_id}{'F'} || "";
|
||||||
# RFC 2060 : This flag can not be altered by any client
|
# RFC 2060 : This flag can not be altered by any client
|
||||||
$flags_f =~ s@\\Recent@@gi;
|
$flags_f =~ s@\\Recent@@gi;
|
||||||
|
@ -1597,16 +1655,18 @@ sub stats {
|
||||||
print "Total bytes transferred: $mess_size_total_trans\n";
|
print "Total bytes transferred: $mess_size_total_trans\n";
|
||||||
print "Total bytes skipped : $mess_size_total_skipped\n";
|
print "Total bytes skipped : $mess_size_total_skipped\n";
|
||||||
print "Total bytes error : $mess_size_total_error\n";
|
print "Total bytes error : $mess_size_total_error\n";
|
||||||
print "Detected $error errors\n";
|
print "Detected $error errors\n\n";
|
||||||
print "Please, rate imapsync at http://freshmeat.net/projects/imapsync/\n";
|
print thank_author();
|
||||||
print "?Happy with this free, open source and gratis GPL software?\n",
|
|
||||||
"Feel free to thank the author by giving him a book:\n",
|
|
||||||
"http://www.amazon.com/gp/registry/wishlist/1C9UNDIH3P7R7/\n",
|
|
||||||
"(or its paypal account gilles.lamiral\@laposte.net)\n";
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub thank_author {
|
||||||
|
|
||||||
|
return(join("", "Happy with this free, open and gratis GPL software?\n",
|
||||||
|
"Please, thank the author (Gilles LAMIRAL) by giving him a book:\n",
|
||||||
|
"http://www.amazon.com/gp/registry/wishlist/1C9UNDIH3P7R7/\n",
|
||||||
|
"and rate imapsync at http://freshmeat.net/projects/imapsync/\n"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
sub get_options
|
sub get_options
|
||||||
{
|
{
|
||||||
|
@ -1639,6 +1699,7 @@ sub get_options
|
||||||
"delete!" => \$delete,
|
"delete!" => \$delete,
|
||||||
"delete2!" => \$delete2,
|
"delete2!" => \$delete2,
|
||||||
"syncinternaldates!" => \$syncinternaldates,
|
"syncinternaldates!" => \$syncinternaldates,
|
||||||
|
"idatefromheader!" => \$idatefromheader,
|
||||||
"syncacls!" => \$syncacls,
|
"syncacls!" => \$syncacls,
|
||||||
"maxsize=i" => \$maxsize,
|
"maxsize=i" => \$maxsize,
|
||||||
"maxage=i" => \$maxage,
|
"maxage=i" => \$maxage,
|
||||||
|
@ -1797,6 +1858,7 @@ sub string_to_file {
|
||||||
|
|
||||||
sub usage {
|
sub usage {
|
||||||
my $localhost_info = localhost_info();
|
my $localhost_info = localhost_info();
|
||||||
|
my $thank = thank_author();
|
||||||
print <<EOF;
|
print <<EOF;
|
||||||
|
|
||||||
usage: $0 [options]
|
usage: $0 [options]
|
||||||
|
@ -1874,6 +1936,8 @@ Several options are mandatory.
|
||||||
--expunge2 : expunge messages on target account.
|
--expunge2 : expunge messages on target account.
|
||||||
--syncinternaldates : sets the internal dates on host2 same as host1.
|
--syncinternaldates : sets the internal dates on host2 same as host1.
|
||||||
Turned on by default.
|
Turned on by default.
|
||||||
|
--idatefromheader : sets the internal dates on host2 same as the
|
||||||
|
"Date:" headers.
|
||||||
--buffersize <int> : sets the size of a block of I/O.
|
--buffersize <int> : sets the size of a block of I/O.
|
||||||
--maxsize <int> : skip messages larger than <int> bytes
|
--maxsize <int> : skip messages larger than <int> bytes
|
||||||
--maxage <int> : skip messages older than <int> days.
|
--maxage <int> : skip messages older than <int> days.
|
||||||
|
@ -1927,21 +1991,22 @@ $0 \\
|
||||||
--host2 imap.trac.org --user2 bar --passfile2 /etc/secret2
|
--host2 imap.trac.org --user2 bar --passfile2 /etc/secret2
|
||||||
|
|
||||||
$localhost_info
|
$localhost_info
|
||||||
Mail::IMAPClient version is $Mail::IMAPClient::VERSION
|
Mail::IMAPClient version is $Mail::IMAPClient::VERSION
|
||||||
$rcs
|
$rcs
|
||||||
imapsync copyleft is the GNU General Public License.
|
|
||||||
See http://www.gnu.org/copyleft/gpl.html
|
$thank
|
||||||
http://www.amazon.com/gp/registry/wishlist/1C9UNDIH3P7R7/
|
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sub tests {
|
sub tests {
|
||||||
|
|
||||||
SKIP: {
|
SKIP: {
|
||||||
skip "No test in normal run" if (not $tests);
|
skip "No test in normal run" if (not $tests);
|
||||||
tests_folder_routines();
|
tests_folder_routines();
|
||||||
tests_compare_lists();
|
tests_compare_lists();
|
||||||
|
tests_regexmess();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2217,6 +2282,19 @@ use constant NonFolderArg => 1; # Value to pass to Massage to
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
*Mail::IMAPClient::get_header = sub {
|
||||||
|
my($self , $msg, $header ) = @_;
|
||||||
|
my $val;
|
||||||
|
|
||||||
|
#eval { $val = $self->parse_headers([$msg],$header)->{$header}[0] };
|
||||||
|
my $h = $self->parse_headers([$msg],$header);
|
||||||
|
#require Data::Dumper;
|
||||||
|
#print Data::Dumper->Dump([$h]);
|
||||||
|
#$val = $self->parse_headers([$msg],$header)->{$header}[0];
|
||||||
|
|
||||||
|
$val = $h->{$msg}{$header}[0];
|
||||||
|
return defined($val)? $val : undef;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
*Mail::IMAPClient::parse_headers = sub {
|
*Mail::IMAPClient::parse_headers = sub {
|
||||||
|
@ -2232,7 +2310,7 @@ use constant NonFolderArg => 1; # Value to pass to Massage to
|
||||||
unless(ref($msgspec_all) eq 'ARRAY') {
|
unless(ref($msgspec_all) eq 'ARRAY') {
|
||||||
print "parse_headers want an ARRAY ref\n";
|
print "parse_headers want an ARRAY ref\n";
|
||||||
#exit 1;
|
#exit 1;
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $headers = {}; # hash from message ids to header hash
|
my $headers = {}; # hash from message ids to header hash
|
||||||
|
@ -2466,27 +2544,18 @@ use constant NonFolderArg => 1; # Value to pass to Massage to
|
||||||
$string .= $result->[DATA]
|
$string .= $result->[DATA]
|
||||||
if defined($result) and $self->_is_literal($result) ;
|
if defined($result) and $self->_is_literal($result) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
# BUG? should probably return undef if length != expected
|
# BUG? should probably return undef if length != expected
|
||||||
|
# No bug, somme servers are buggy.
|
||||||
|
|
||||||
if ( length($string) != $expected_size ) {
|
if ( length($string) != $expected_size ) {
|
||||||
carp "${self}::message_string: " .
|
carp "message_string: " .
|
||||||
"expected $expected_size bytes but received " .
|
"expected $expected_size bytes but received " .
|
||||||
length($string);
|
length($string);
|
||||||
$self->LastError("${self}::message_string: expected ".
|
$self->LastError("message_string: expected ".
|
||||||
"$expected_size bytes but received " .
|
"$expected_size bytes but received " .
|
||||||
length($string)."\n");
|
length($string)."\n");
|
||||||
}
|
}
|
||||||
# REMOVE NEXT COMMENTED LINES
|
|
||||||
# if ( length($string) > $expected_size ){
|
|
||||||
# $string = substr($string,0,$expected_size)
|
|
||||||
# }
|
|
||||||
# if ( length($string) < $expected_size ) {
|
|
||||||
# $self->LastError("${self}::message_string: expected ".
|
|
||||||
# "$expected_size bytes but received " .
|
|
||||||
# length($string)."\n");
|
|
||||||
# return $string;
|
|
||||||
# #return undef;
|
|
||||||
# }
|
|
||||||
|
|
||||||
return $string;
|
return $string;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
27
tests.sh
27
tests.sh
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# $Id: tests.sh,v 1.73 2008/05/08 02:10:31 gilles Exp gilles $
|
# $Id: tests.sh,v 1.77 2008/08/13 23:33:18 gilles Exp gilles $
|
||||||
|
|
||||||
#### Shell pragmas
|
#### Shell pragmas
|
||||||
|
|
||||||
|
@ -244,6 +244,22 @@ ll_internaldate() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ll_idatefromheader() {
|
||||||
|
if test X`hostname` = X"plume"; then
|
||||||
|
echo3 Here is plume
|
||||||
|
sendtestmessage
|
||||||
|
$CMD_PERL ./imapsync \
|
||||||
|
--host1 localhost --user1 tata@est.belle \
|
||||||
|
--passfile1 /var/tmp/secret.tata \
|
||||||
|
--host2 localhost --user2 titi@est.belle \
|
||||||
|
--passfile2 /var/tmp/secret.titi \
|
||||||
|
--folder INBOX.oneemail \
|
||||||
|
--idatefromheader --debug --dry
|
||||||
|
else
|
||||||
|
:
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ll_folder_rev() {
|
ll_folder_rev() {
|
||||||
|
@ -557,6 +573,7 @@ ll_regexmess()
|
||||||
{
|
{
|
||||||
if test X`hostname` = X"plume"; then
|
if test X`hostname` = X"plume"; then
|
||||||
echo3 Here is plume
|
echo3 Here is plume
|
||||||
|
rm -f /home/vmail/titi/.yop.yap/cur/*
|
||||||
$CMD_PERL ./imapsync \
|
$CMD_PERL ./imapsync \
|
||||||
--host1 localhost --user1 tata@est.belle \
|
--host1 localhost --user1 tata@est.belle \
|
||||||
--passfile1 /var/tmp/secret.tata \
|
--passfile1 /var/tmp/secret.tata \
|
||||||
|
@ -565,8 +582,10 @@ ll_regexmess()
|
||||||
--folder INBOX.yop.yap \
|
--folder INBOX.yop.yap \
|
||||||
--regexmess 's/\157/O/g' \
|
--regexmess 's/\157/O/g' \
|
||||||
--regexmess 's/p/Z/g' \
|
--regexmess 's/p/Z/g' \
|
||||||
--dry --debug
|
--debug
|
||||||
echo 'rm /home/vmail/titi/.yop.yap/cur/*'
|
file=`ls -t /home/vmail/titi/.yop.yap/cur/* | tail -1`
|
||||||
|
diff /var/tmp/imapsync/tests/ll_regexmess/dest_01 $file
|
||||||
|
#echo 'rm -f /home/vmail/titi/.yop.yap/cur/*'
|
||||||
else
|
else
|
||||||
:
|
:
|
||||||
fi
|
fi
|
||||||
|
@ -744,6 +763,7 @@ msw() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
##########################
|
##########################
|
||||||
# specific tests
|
# specific tests
|
||||||
##########################
|
##########################
|
||||||
|
@ -980,6 +1000,7 @@ test $# -eq 0 && run_tests \
|
||||||
ll_justfolders \
|
ll_justfolders \
|
||||||
ll_prefix12 \
|
ll_prefix12 \
|
||||||
ll_internaldate \
|
ll_internaldate \
|
||||||
|
ll_idatefromheader \
|
||||||
ll_folder_rev \
|
ll_folder_rev \
|
||||||
ll_subscribed \
|
ll_subscribed \
|
||||||
ll_subscribe \
|
ll_subscribe \
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue