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 2016-09-19 10:15:41 -05:00
parent d0595b7dfd
commit 8d24f07718
110 changed files with 6018 additions and 4489 deletions

View File

@ -1,5 +1,5 @@
#!/bin/cat #!/bin/cat
# $Id: CREDITS,v 1.185 2016/01/14 12:23:01 gilles Exp gilles $ # $Id: CREDITS,v 1.187 2016/03/07 02:08:16 gilles Exp gilles $
If you want to make a donation to me, imapsync author, Gilles LAMIRAL, If you want to make a donation to me, imapsync author, Gilles LAMIRAL,
use any of the following ways: use any of the following ways:
@ -9,7 +9,7 @@ b) If you can read french, please use the following wishlist :
(books will be send with free postal cost) (books will be send with free postal cost)
c) my paypal account is gilles.lamiral@laposte.net c) my paypal account is gilles.lamiral@laposte.net
http://imapsync.lamiral.info/W/paypal.shtml http://imapsync.lamiral.info/S/paypal.shtml
My postal address is: My postal address is:
Gilles LAMIRAL Gilles LAMIRAL
@ -24,6 +24,9 @@ I thank very much all of these people.
I thank also very much all people who bought imapsync from the homepage I thank also very much all people who bought imapsync from the homepage
but I don't cite them here. but I don't cite them here.
Joe Pruett
Bugfix about delete_message_on_host1() not using --noexpungeaftereach
Mike Salonia Mike Salonia
Contributed by using and validating the multi-archive Gmail Contributed by using and validating the multi-archive Gmail
destination account. See FAQ.d/FAQ.Gmail.txt destination account. See FAQ.d/FAQ.Gmail.txt

View File

@ -1,17 +1,43 @@
RCS file: RCS/imapsync,v RCS file: RCS/imapsync,v
Working file: imapsync Working file: imapsync
head: 1.678 head: 1.684
branch: branch:
locks: strict locks: strict
gilles: 1.678 gilles: 1.684
access list: access list:
symbolic names: symbolic names:
keyword substitution: kv keyword substitution: kv
total revisions: 678; selected revisions: 678 total revisions: 684; selected revisions: 684
description: description:
---------------------------- ----------------------------
revision 1.678 locked by: gilles; revision 1.684 locked by: gilles;
date: 2016/03/17 08:35:03; author: gilles; state: Exp; lines: +24 -16
Bugfix. No more warning about "Use of uninitialized value $sockargs[7] in join or string at"
in ssl or tls mode. Was due to "'SSL_version' => undef".
----------------------------
revision 1.683
date: 2016/03/07 02:41:11; author: gilles; state: Exp; lines: +22 -10
Added --sslargs1 in documentation.
----------------------------
revision 1.682
date: 2016/03/01 00:47:54; author: gilles; state: Exp; lines: +16 -11
*** empty log message ***
----------------------------
revision 1.681
date: 2016/02/04 03:34:49; author: gilles; state: Exp; lines: +12 -13
Bugfix. Syntax error!
----------------------------
revision 1.680
date: 2016/02/04 02:11:32; author: gilles; state: Exp; lines: +25 -27
Bugfix. Added --expungeaftereach in sub delete_message_on_host1().
Usability. Added "use --noexpungeaftereach to speed up" if --delete is used.
----------------------------
revision 1.679
date: 2016/01/25 01:57:54; author: gilles; state: Exp; lines: +11 -11
Bugfix. "Can't use an undefined value as a HASH reference at /usr/bin/imapsync line 1247."
----------------------------
revision 1.678
date: 2016/01/21 19:47:02; author: gilles; state: Exp; lines: +14 -21 date: 2016/01/21 19:47:02; author: gilles; state: Exp; lines: +14 -21
README part check. README part check.
---------------------------- ----------------------------

322
FAQ
View File

@ -1,5 +1,5 @@
#!/bin/cat #!/bin/cat
# $Id: FAQ,v 1.216 2015/11/13 23:58:12 gilles Exp gilles $ # $Id: FAQ,v 1.221 2016/03/07 02:55:01 gilles Exp gilles $
+-------------------+ +-------------------+
| FAQs for imapsync | | FAQs for imapsync |
@ -179,7 +179,8 @@ R. To know wether a newer imapsync exists or not imapsync does a http
* Operating System * Operating System
You can remove this behavior by adding option --noreleasecheck on the You can remove this behavior by adding option --noreleasecheck on the
command line (or by setting $releasecheck = 0 in the source code) command line (or by setting $releasecheck = 0 in the source code)
or by using github release.
======================================================================= =======================================================================
Q. I use --useuid which uses a cache in /tmp or --tmpdir, the hostnames Q. I use --useuid which uses a cache in /tmp or --tmpdir, the hostnames
@ -359,16 +360,21 @@ Q. How can I try imapsync with latest Mail::IMAPClient 3.xx perl module?
Three solutions at least. Three solutions at least.
R1 - Look at the script named "i3" in the tarball, it can be used to R1 - Look at the script named "i3" in the tarball, it can be used to
run imapsync with the included Mail-IMAPClient-3.37/ wherever you run imapsync with the included Mail-IMAPClient-3.38/ wherever you
unpacked the imapsync tarball unpacked the imapsync tarball
R2 Run: R2 Run:
perl -MCPAN -e "install Mail::IMAPClient" cpanm Mail::IMAPClient # this uses cpanminus
or or
cpan -i Mail::IMAPClient cpan -i Mail::IMAPClient
or
perl -MCPAN -e "install Mail::IMAPClient"
R3 If you want to install the Perl module locally in a directory R3 If you want to install the Perl module locally in a directory
@ -383,10 +389,10 @@ R3 If you want to install the Perl module locally in a directory
- run imapsync with perl and -I option tailing to use the perl - run imapsync with perl and -I option tailing to use the perl
module Mail-IMAPClient-3.xx. Example: module Mail-IMAPClient-3.xx. Example:
perl -I./Mail-IMAPClient-3.37/lib ./imapsync ... perl -I./Mail-IMAPClient-3.38/lib ./imapsync ...
or if imapsync is in directory /path/ or if imapsync is in directory /path/
perl -I./Mail-IMAPClient-3.37/lib /path/imapsync ... perl -I./Mail-IMAPClient-3.38/lib /path/imapsync ...
======================================================================= =======================================================================
@ -438,88 +444,6 @@ two-ways sync.
A better tool with this scenario is offlineimap, A better tool with this scenario is offlineimap,
designed for this issue, and faster than imapsync. designed for this issue, and faster than imapsync.
=======================================================================
Q. We have found that the time and date displayed have been changed to
the time at which the file was synchronized.
R. This is the case by default with some email readers like:
- Outlook 2003
- Ipad
but not with:
- Mutt
- Thunderbird
- Zimbra
- Gmail
A thing to keep in mind, imapsync does not touch any byte of messages
unless told to do so by option --regexmess.
Messages on both parts should be identical.
I explain the whole picture about dates of messages.
There are several different dates for any message.
First, there is the "Date:" header. Most of the time, this date is set
by the MUA. MUA means Mail User Agent; it is Outlook, Mutt
or Thunderbird. The Date header is usually the date the message was written
or sent the first time. It is never changed by any transfer or copy.
If an email reader uses the Date header for displaying the date of a
message then no problem should arise.
There is also the internal date. In IMAP the internal date is handled
and normally it corresponds to the arrival date in the mailbox. The
IMAP protocol allows the internal date to be set by a email client.
Imapsync synchronizes internal dates by default, internal dates on host2
should then be the same as the internal dates on host1.
If an email reader uses the internal date for displaying the date of a
message then the sync date problem only occurs when the host2 server software
ignores the internal date given by imapsync during the APPEND imap
command. It happens with some imap servers.
There are also the Received header lines. Each time a message travels
a SMTP server, this one adds a Received header line. Sometimes
some email clients use the last "Received" header date as the date of the
message. And some IMAP servers softwares add a Received line after
and imap transfer. If those both conditions are met then the date
displayed become the transfer date even if imapsync
has done its best to keep all the dates synchronized. Bad luck.
Solutions:
a) Use a better email client or configure it in order it sorts messages
by sent date, the Date header.
b) Use a imap server that respects the imap RFC and accepts
the internal date set by imapsync.
c) Try to understand why the reader shows another date.
For Exchange look at the next FAQ item.
=======================================================================
Q. imapsync calculates 479 messages in a folder but only transfers 400
messages. What's happen?
R1. Unless --useuid is used, imapsync considers a header part
of a message to identify a message on both sides.
By default the header part used is lines "Message-Id:" "Message-ID:"
and "Received:" or specific lines depending on --useheader
--skipheader. Whole header can be set by --useheader ALL
Consequences:
1) Duplicate messages (identical header) are not transferred
several times.
The result is that you can have more messages on host1 than on host2.
R2. With option --useuid imapsync doesn't use headers to identify
messages on both sides but it uses their imap uid. In that case
duplicates on host1 are transferred on host2.
======================================================================= =======================================================================
Q. I need to log every output on a file named log.txt Q. I need to log every output on a file named log.txt
@ -533,62 +457,6 @@ R2. To change this default name, use --logfile log.txt
imapsync ... --logfile log.txt imapsync ... --logfile log.txt
=======================================================================
Q. I need to log every output on a file named log.txt and also to the
screen in order to keep seeing what's going on during execution
R. Use the tee program (also available on Windows)
http://en.wikipedia.org/wiki/Tee_%28command%29
http://stackoverflow.com/questions/796476/displaying-windows-command-prompt-output-and-redirecting-it-to-a-file
http://code.google.com/p/wintee/
imapsync ... 2>&1 | tee log.txt
=======================================================================
Q. Can I run more instances of imapsync in parallel on a Windows host.
R. Yes!
Q. Any performance issue?
You have to try and check the transfer rates, sum them up to
have a uniq numeric criteria.
There is always a limit, depending on remote imap servers
and the one running imapsync;
CPU, memory, Inputs/Outputs are the classical bottlenecks,
the worst bottleneck is the winner that sets the limit.
examples/sync_loop_windows.bat says
...
REM ==== Parallel executions ====
REM If you want to do parallel runs of imapsync then this current script is a good start.
REM Just copy it several times and replace, on each copy, the csvfile variable value.
REM Instead of SET csvfile=file.txt write for example
REM SET csvfile=file01.txt in the first copy
REM then also
REM SET csvfile=file02.txt in the second copy etc.
REM Of course you also have to split the data contained in file.txt
REM into file01.txt file02.txt etc.
REM After that, just double-click on each batch file to launch each process
=======================================================================
Q. I run multiple imapsync applications at the same time then get a
warning "imapsync.pid already exists, overwriting it".
Is this a potential problem when trying to sync multiple
IMAP account in parallel?
R1. No issue with the file imapsync.pid if you don't use its content
by yourself.
This file can help you to manage multiple runs by sending signals
to the processes (sigterm or sigkill) using their PID.
Each run can have its own pid file with --pidfile option.
The file imapsync.pid contains the PID of the imapsync process.
This file is removed at the end of a normal run.
You can safely ignore the warning if you don't use imapsync.pid file.
======================================================================= =======================================================================
Q. Quantifier in {,} bigger than 32766 in regex; marked by <-- HERE in Q. Quantifier in {,} bigger than 32766 in regex; marked by <-- HERE in
m/(.{ <-- HERE 1,49947})(?:,|$)/ at Mail/IMAPClient.pm line 2121. m/(.{ <-- HERE 1,49947})(?:,|$)/ at Mail/IMAPClient.pm line 2121.
@ -697,134 +565,6 @@ R. May be spending too much time on the source server, the connection
timed out on the destination server. timed out on the destination server.
Try options --nofoldersizes Try options --nofoldersizes
=======================================================================
Q. Does imapsync support IMAP TLS?
R. Use --tls1 and/or --tls2 options
--tls1 tells imapsync to use tls on host1.
--tls2 tells imapsync to use tls on host2.
=======================================================================
Q. Does imapsync support IMAP over SSL (IMAPS)?
R. Yes natively since release 1.161.
still, 2 ways, at least :
a) Use native --ssl1 and/or --ssl2 options
--ssl1 tells imapsync to use ssl on host1.
--ssl2 tells imapsync to use ssl on host2.
b) Use stunnel
http://www.stunnel.org/
Assuming there is an imaps (993) server on imap.foo.org,
on your localhost machine (or bar machine) run :
stunnel -c -d imap -r imap.foo.org:imaps
or using names instead of numbers
stunnel -c -d 143 -r imap.foo.org:993
then use imapsync on localhost (or bar machine) imap (143) port.
If the local port 143 is already taken then use a free one, 10143.
c) Other example for gmail with no root access to open port 143
stunnel -f -P '' -c -d 9993 -r imap.gmail.com:993
Then, to access gmail as host2 use:
imapsync ... --host2 localhost --port2 9993 --nossl2
=======================================================================
Q. How can I manually test a login via ssl?
R. Use ncat or telnet-ssl like in this example:
ncat --ssl -C imap.gmail.com 993
* OK Gimap ready for requests from 78.196.254.58 q1mb175739668wix
a LOGIN "gilles.lamiral@gmail.com" "secret"
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE ... ESEARCH
a OK gilles.lamiral@gmail.com Gilles Lamiral authenticated (Success)
b LOGOUT
* BYE LOGOUT Requested
b OK 73 good day (Success)
The client part to type is "a LOGIN ..." and "b LOGOUT" without
the double-quotes.
=======================================================================
Q: How to have an imaps server?
R.
a) Install one
b) or use stunnel :
Assuming there is an imap (143) server on localhost
stunnel -d 993 -r 143 -f
c) or use stunnel on inetd
imaps stream tcp nowait cyrus /usr/sbin/stunnel -s cyrus -p /etc/ssl/certs/imapd.pem -r localhost:imap2
======================================================================
Q. I am transferring mails from one IMAP server to another. I am using
an SSL connection. Transferring huge mails (>10MB) takes ages.
R. try to transfer the mails without SSL connection. SSL code outside
imapsync uses a memory buffer, which gets increased upon reading of
mails by 4096 bytes. This creates a huge load on the host imapsync
runs on by copying the memory buffers for every 4096 byte step.
This does not occur without SSL.
(Written by Stefan Schmidt)
======================================================================
Q. What are --subscribe and --subscribed for, and how can they be used?
R. In the IMAP protocol each user can subscribe to one or more folders.
Then he can configure its email software to just see his subscribed
folders list. That's an IMAP feature.
Knowing that, the imapsync help says:
imapsync --help
...
--subscribed : transfers subscribed folders.
--subscribe : subscribe to the folders transferred on the
host2 that are subscribed on host1.
--subscribe_all : subscribe to the folders transferred on the
host2 even if they are not subscribed on host1.
======================================================================
Q. I want to exclude a folder hierarchy like "public"
R. Use:
--exclude "^public\."
or maybe
--exclude '^"public\.'
In the example given the character "." is the folder separator, you
can omit it. Just take the string as it appears on the imapsync
output line :
From folders list : [INBOX] [public.dreams] [etc.]
======================================================================
Q. I want to exclude only INBOX
R. Use:
imapsync ... --exclude "^INBOX$"
A good way to see what will be done is to first use:
imapsync ... --exclude "^INBOX$" --justfolders --nofoldersizes --dry
====================================================================== ======================================================================
Q. Can Imapsync filter Spam during the sync? Q. Can Imapsync filter Spam during the sync?
@ -839,33 +579,6 @@ http://www.stearns.org/doc/spamassassin-setup.current.html#isbg
http://euer.krebsco.de/using-spamassassin-on-a-remote-imap-host.html http://euer.krebsco.de/using-spamassassin-on-a-remote-imap-host.html
https://github.com/ook/isbg https://github.com/ook/isbg
======================================================================
Q. I want to exclude folders matching SPAM no matter the case,
aka how to be case insensitive
R. Use:
imapsync ... --exclude "(?i)spam"
A good way to see what will be done is to first use:
imapsync ... --exclude "(?i)spam" --justfolders --nofoldersizes --dry
======================================================================
Q. I want the --folder "MyFolder" option be recursive.
Two solutions:
R1. Use
--folderrec "MyFolder"
R2. Use --include "^MyFolder"
Then the folder "MyFolder" and all its subfolders will be handled
and only them.
====================================================================== ======================================================================
Q. How to migrate from uw-imap with an admin/authuser account? Q. How to migrate from uw-imap with an admin/authuser account?
@ -974,22 +687,19 @@ Q. I want to play with headers line and --regexmess but I want to leave
R. The header/body separation is a blank line so an example: R. The header/body separation is a blank line so an example:
--regexmess 's{\A(.*?(?! ^$))^Date:(.*?)$}{$1Date:$2\nX-Date:$2}gxms' --regexmess 's{\A(.*?(?! ^$))^Date:(.*?)$}{$1Date:$2\nX-Date:$2}gxms'
Will replace (HeaderBegin and HeaderEnd are not part of the header) Will replace the next three lines
HeaderBegin
Message-ID: <499EF800.4030002@blabla.fr> Message-ID: <499EF800.4030002@blabla.fr>
Date: Fri, 20 Feb 2009 19:35:44 +0100 Date: Fri, 20 Feb 2009 19:35:44 +0100
From: Gilles LAMIRAL <lamiral@linux-france.org> From: Gilles LAMIRAL <lamiral@linux-france.org>
HeaderEnd
by by the next four lines
HeaderBegin
Message-ID: <499EF800.4030002@blabla.fr> Message-ID: <499EF800.4030002@blabla.fr>
Date: Fri, 20 Feb 2009 19:35:44 +0100 Date: Fri, 20 Feb 2009 19:35:44 +0100
X-Date: Fri, 20 Feb 2009 19:35:44 +0100 X-Date: Fri, 20 Feb 2009 19:35:44 +0100
From: Gilles LAMIRAL <lamiral@linux-france.org> From: Gilles LAMIRAL <lamiral@linux-france.org>
HeaderEnd
This example just add an header line "X-Date:" based on "Date:" line. This example just add an header line "X-Date:" based on "Date:" line.

25
FAQ.d/FAQ.Connection.txt Normal file
View File

@ -0,0 +1,25 @@
#!/bin/cat
$Id: FAQ.Connection.txt,v 1.2 2016/03/16 13:33:51 gilles Exp gilles $
This documentation is also at http://imapsync.lamiral.info/#doc
============================================
Imapsync tips about connection issues.
============================================
=======================================================================
Q.How to test a ssl imap connection without imapsync?
R1.Use openssl command like the following,
an example with imap.gmail.com server:
openssl s_client -connect imap.gmail.com:993
The previous command is an interactive connection, hit ctrl-c
to finish it. If you want to finish it gently, then use:
{ sleep 1; echo "a LOGOUT"; } | openssl s_client -connect imap.gmail.com:993
=======================================================================

71
FAQ.d/FAQ.Dates.txt Normal file
View File

@ -0,0 +1,71 @@
#!/bin/cat
$Id: FAQ.Dates.txt,v 1.2 2016/03/07 02:08:12 gilles Exp gilles $
This documentation is also at http://imapsync.lamiral.info/#doc
===============================
Imapsync tips about dates.
===============================
=======================================================================
Q. We have found that the time and date displayed have been changed to
the time at which the file was synchronized.
R. This is the case by default with some email readers like:
- Outlook 2003
- Ipad
but not with:
- Mutt
- Thunderbird
- Zimbra
- Gmail
A thing to keep in mind, imapsync does not touch any byte of messages
unless told to do so by option --regexmess or --pipemess
Messages on both parts should be identical.
Now I explain the whole picture about dates of messages.
There are several different dates for any message.
First, there is the "Date:" header. Most of the time, this date is set
by the MUA (MUA means Mail User Agent) it can be Outlook, Thunderbird,
a webmail or Mutt. The Date header is usually the date the message was written
or sent the first time, at the writer side.
This Date: header line is never changed by any transfer or copy.
If an email reader uses the "Date:" header for displaying the date of a
message then no problem should arise.
Another date is the internal date. In IMAP, the internal date is handled
by the server and normally it corresponds to the arrival date in the mailbox.
The IMAP protocol allows the internal date to be set by a email client
when a message is delivered by the imap APPEND command.
Imapsync synchronizes internal dates by default, internal dates on host2
should then be the same as the internal dates on host1.
If an email reader uses the internal date for displaying the date of a
message then the sync date problem only occurs when the host2 server software
ignores the internal date given by imapsync during the APPEND imap
command. It happens with some imap servers.
There are also the "Received:" header lines. Each time a message travels
a SMTP server, this one adds a "Received:" header line. Sometimes
some email clients use the last "Received:" header date as the date of the
message. And some IMAP servers software add a "Received:" line after
and imap transfer. If those both conditions are met then the date
displayed become the transfer date even if imapsync
has done its best to keep all the dates synchronized. Bad luck.
Solutions:
a) Use a another email client or configure it in order it sorts messages
by sent date, the "Date:" header line.
b) Use a imap server that respects the imap RFC and accepts
the internal date set by imapsync.
c) Try to understand why the reader shows another date than the "Date:" line.
=======================================================================

View File

@ -1,5 +1,7 @@
#!/bin/cat #!/bin/cat
# $Id: FAQ.Domino.txt,v 1.5 2016/01/18 18:14:12 gilles Exp gilles $ # $Id: FAQ.Domino.txt,v 1.6 2016/01/28 14:34:15 gilles Exp gilles $
This documentation is also at http://imapsync.lamiral.info/#doc
============================= =============================
Imapsync tips for Domino. Imapsync tips for Domino.

View File

@ -1,5 +1,7 @@
#!/bin/cat #!/bin/cat
$Id: FAQ.Dovecot.txt,v 1.3 2016/01/18 18:14:12 gilles Exp gilles $ $Id: FAQ.Dovecot.txt,v 1.4 2016/01/28 14:34:15 gilles Exp gilles $
This documentation is also at http://imapsync.lamiral.info/#doc
======================================================================= =======================================================================
Imapsync tips for Dovecot. Specific issues and solutions. Imapsync tips for Dovecot. Specific issues and solutions.

View File

@ -1,5 +1,7 @@
#!/bin/cat #!/bin/cat
$Id: FAQ.Duplicates.txt,v 1.6 2016/01/18 18:14:12 gilles Exp gilles $ $Id: FAQ.Duplicates.txt,v 1.9 2016/03/08 21:17:21 gilles Exp gilles $
This documentation is also at http://imapsync.lamiral.info/#doc
====================================================================== ======================================================================
Imapsync tips about duplicated messages issues. Imapsync tips about duplicated messages issues.
@ -8,8 +10,8 @@ $Id: FAQ.Duplicates.txt,v 1.6 2016/01/18 18:14:12 gilles Exp gilles $
======================================================================= =======================================================================
Q. How can I remove duplicates in an lone account? Q. How can I remove duplicates in an lone account?
R. Just run imapsync on the same account with option --delete2, R. Just run imapsync on the same account with option --delete2duplicates,
ie with host1 == host2 and user1 == user2 ie, with host1 == host2 and user1 == user2
======================================================================= =======================================================================
Q: Multiple copies, duplicates, when I run imapsync twice ore more. Q: Multiple copies, duplicates, when I run imapsync twice ore more.
@ -29,7 +31,7 @@ Keep in mind it uses a local cache.
imapsync ... --useuid imapsync ... --useuid
A big issue with --useuid is that it doesn't generate duplicates if A big issue with --useuid is that it doesn't generate duplicates if
used from the first time. But it does generate duplicates after a previous used from the first time but it does generate duplicates after a previous
run without --useuid (because it uses a different method to identify run without --useuid (because it uses a different method to identify
the messages). A solution? it depends. --delete2 solves this problem the messages). A solution? it depends. --delete2 solves this problem
if you are permitted to use it. if you are permitted to use it.
@ -53,11 +55,11 @@ want to forward me the output.
A way to avoid this problem is by using option --useheader with A way to avoid this problem is by using option --useheader with
a different set than the default ones used by imapsync. a different set than the default ones used by imapsync.
The default set is like: The default set is equivalent to:
imapsync ... --useheader "Message-Id" --useheader "Received" imapsync ... --useheader "Message-Id" --useheader "Received"
The big problem is that what can be used instead of Message-Id The problem now is that what can be used instead of Message-Id
and Received lines? Often standalone Message-Id works: and Received lines? Often standalone Message-Id works:
imapsync ... --useheader "Message-Id" imapsync ... --useheader "Message-Id"
@ -89,5 +91,25 @@ trick to keep the --useheader filtering behaviour is to use
Read it as "skip every header except Message-Id". Read it as "skip every header except Message-Id".
======================================================================= =======================================================================
Q. imapsync calculates 479 messages in a folder but only transfers 400
messages. What's happen?
R1. Unless --useuid is used, imapsync considers a header part
of a message to identify a message on both sides.
By default the header part used is lines "Message-Id:" "Message-ID:"
and "Received:" or specific lines depending on --useheader
--skipheader. Whole header can be set by --useheader ALL
Consequences:
1) Duplicate messages on host1 (identical header) are not transferred.
The result is that you can have more messages on host1 than on host2.
R2. With option --useuid imapsync doesn't use headers to identify
messages on both sides but it uses their imap uid identifier.
In that case duplicates on host1 are also transferred on host2.
=======================================================================

View File

@ -1,5 +1,7 @@
#!/bin/cat #!/bin/cat
$Id: FAQ.Exchange.txt,v 1.17 2016/01/18 18:14:12 gilles Exp gilles $ $Id: FAQ.Exchange.txt,v 1.20 2016/03/03 15:44:17 gilles Exp gilles $
This documentation is also at http://imapsync.lamiral.info/#doc
================================================================================= =================================================================================
Imapsync tips for Exchange 20xx and Office365. Specific issues and solutions. Imapsync tips for Exchange 20xx and Office365. Specific issues and solutions.
@ -18,6 +20,8 @@ Q. For Office365 I have double and triple checked the username and
Q. Exchange fails with "User is authenticated but not connected". Q. Exchange fails with "User is authenticated but not connected".
Q. Exchange fails with "BAD Command received in Invalid state".
Q. From XXX to Exchange 2013 or Office365, read receipts are all Q. From XXX to Exchange 2013 or Office365, read receipts are all
resent again after a sync. Even for old messages. How can I fix that? resent again after a sync. Even for old messages. How can I fix that?
@ -148,6 +152,13 @@ http://unix.stackexchange.com/questions/164823/user-is-authenticated-but-not-con
Thanks to James Abbottsmith for this link and explanation at Thanks to James Abbottsmith for this link and explanation at
https://github.com/imapsync/imapsync/issues/32#issuecomment-153561647 https://github.com/imapsync/imapsync/issues/32#issuecomment-153561647
=======================================================================
Q. Exchange fails with "BAD Command received in Invalid state".
R. This message might happens when authentication without ssl nor tls.
Add --tls1 or --ssl1 if this error message comes from host1.
Add --tls2 or --ssl2 if this error message comes from host1.
======================================================================= =======================================================================
Q. From XXX to Exchange 2013 or Office365, read receipts are all Q. From XXX to Exchange 2013 or Office365, read receipts are all
resent again after a sync. Even for old messages. How can I fix that? resent again after a sync. Even for old messages. How can I fix that?
@ -191,6 +202,8 @@ R. This error message comes from Exchange IMAP server when it
* Some messages are bigger than the size limit. 10 MB by default * Some messages are bigger than the size limit. 10 MB by default
on Exchange. It can be upped by configuration for Exchange. on Exchange. It can be upped by configuration for Exchange.
Sometimes a reboot is needed to take configuration changes
into account.
If you can't fix this limit on Exchange then use option If you can't fix this limit on Exchange then use option
--maxsize 10000000 for 10 MB, change it if needed) to tell --maxsize 10000000 for 10 MB, change it if needed) to tell
imapsync to skip those messages. imapsync to skip those messages.

View File

@ -1,5 +1,7 @@
#!/bin/cat #!/bin/cat
$Id: FAQ.Flags.txt,v 1.6 2016/01/18 18:14:12 gilles Exp gilles $ $Id: FAQ.Flags.txt,v 1.7 2016/01/28 14:34:15 gilles Exp gilles $
This documentation is also at http://imapsync.lamiral.info/#doc
=============================== ===============================
Imapsync tips about flags. Imapsync tips about flags.

View File

@ -1,5 +1,7 @@
#!/bin/cat #!/bin/cat
$Id: FAQ.Folders_Mapping.txt,v 1.9 2016/01/18 18:14:12 gilles Exp gilles $ $Id: FAQ.Folders_Mapping.txt,v 1.10 2016/01/28 14:34:15 gilles Exp gilles $
This documentation is also at http://imapsync.lamiral.info/#doc
=============================================== ===============================================
Imapsync tips about changing folders names. Imapsync tips about changing folders names.

View File

@ -0,0 +1,96 @@
#!/bin/cat
$Id: FAQ.Folders_Selection.txt,v 1.3 2016/02/07 22:01:56 gilles Exp gilles $
This documentation is also at http://imapsync.lamiral.info/#doc
=====================================
Imapsync tips to select folders.
=====================================
By default, Imapsync syncs all folders, one by one, in alphanumeric order.
======================================================================
Q. How can I sync only one folder?
R. Use --folder option.
imapsync ... --folder MyFolder
If you have more specific folders to sync just add several --folder
imapsync ... --folder MyFolder --folder ThisFolder --folder ThatFolder
======================================================================
Q. What are --subscribe and --subscribed for, and how can they be used?
R. In the IMAP protocol each user can subscribe to one or more folders.
Then one can configure his email software to just see his subscribed
folders. That's an IMAP feature.
Knowing that, the imapsync help mentions:
imapsync --help
...
--subscribed : transfers subscribed folders.
--subscribe : subscribe to the folders transferred on the
host2 that are subscribed on host1.
--subscribe_all : subscribe to the folders transferred on the
host2 even if they are not subscribed on host1.
======================================================================
Q. I want to exclude a folder hierarchy like "public"
R. Use:
--exclude "^public\."
or maybe
--exclude '^"public\.'
In the example given the character "." is the folder separator, you
can omit it. Just take the string as it appears on the imapsync
output line :
From folders list : [INBOX] [public.dreams] [etc.]
======================================================================
Q. I want to exclude only INBOX
R. Use:
imapsync ... --exclude "^INBOX$"
A good way to see what will be done is to first use:
imapsync ... --exclude "^INBOX$" --justfolders --nofoldersizes --dry
======================================================================
Q. I want to exclude folders matching SPAM no matter the case,
aka how to be case insensitive
R. Use:
imapsync ... --exclude "(?i)spam"
A good way to see what will be done is to first use:
imapsync ... --exclude "(?i)spam" --justfolders --nofoldersizes --dry
======================================================================
Q. I want the --folder "MyFolder" option be recursive.
Two solutions:
R1. Use
--folderrec "MyFolder"
R2. Use --include "^MyFolder"
Then the folder "MyFolder" and all its subfolders will be handled
and only them.

View File

@ -1,5 +1,7 @@
#!/bin/cat #!/bin/cat
$Id: FAQ.Gmail.txt,v 1.18 2016/01/18 18:14:12 gilles Exp gilles $ $Id: FAQ.Gmail.txt,v 1.21 2016/03/17 20:14:14 gilles Exp gilles $
This documentation is also at http://imapsync.lamiral.info/#doc
===================================== =====================================
Imapsync tips for Gmail accounts. Imapsync tips for Gmail accounts.
@ -108,9 +110,7 @@ when selecting this not used folder.
======================================================================= =======================================================================
Q. How to synchronize from XXX to Gmail? Q. How to synchronize from XXX to Gmail?
R. There are some details to get the special [Gmail] sub-folders R. Use the following example:
right. Here's an example of migrating an old "Sent" folder to
Gmail's structure:
imapsync --host1 mail.oldhost.com \ imapsync --host1 mail.oldhost.com \
--user1 my_email@oldhost.com \ --user1 my_email@oldhost.com \
@ -186,12 +186,6 @@ not accepted by gmail, character ^ to character _ underscore.
--regextrans2 "s/['\"\\\\]/_/g" is optional. It converts --regextrans2 "s/['\"\\\\]/_/g" is optional. It converts
characters ' or " or \ to character _ underscore. characters ' or " or \ to character _ underscore.
You can add --folder "INBOX.Sent" in the example in case
you want to sync only the "Sent" folder.
You can select folders exported to imap within the gmail preferences. You can select folders exported to imap within the gmail preferences.
Select or unselect some "System labels", depending on your needs. Select or unselect some "System labels", depending on your needs.
@ -324,7 +318,7 @@ Q. Can not open imap connection on [imap.gmail.com]:
Unable to connect to imap.gmail.com Unable to connect to imap.gmail.com
R0. It looks like this issue is related to ipv6. Both ipv4 and ipv6 R0. It looks like this issue is related to ipv6. Both ipv4 and ipv6
protocols should work with gmail and imapsync, I test that regurlarly, protocols should work with gmail and imapsync, I test that regularly,
imapsync works fine for both ipv4 and ipv6. imapsync works fine for both ipv4 and ipv6.
If you disable ipv6 then disable also ipv6 resolution! If you disable ipv6 then disable also ipv6 resolution!
Or at least, make ipv4 answers be taken before ipv6 since the default Or at least, make ipv4 answers be taken before ipv6 since the default
@ -332,10 +326,10 @@ names resolution order is to present ipv6 name resolutions first.
R1. A first simple solution is to use directly gmail ipv4 ip address: R1. A first simple solution is to use directly gmail ipv4 ip address:
imapsync ... --host1 74.125.133.108 imapsync ... --host1 64.233.184.108
In case it changes, get with any command showing the imap.gmail.com In case it changes, get it with any command showing the imap.gmail.com
name resolution: name resolution, try one of those:
nslookup imap.gmail.com nslookup imap.gmail.com
host imap.gmail.com host imap.gmail.com
@ -343,7 +337,7 @@ name resolution:
Or go to http://ping.eu/nslookup/ to get the resolution. Or go to http://ping.eu/nslookup/ to get the resolution.
R2. Fix imapsync with the line: R2. Second solution. Fix imapsync with the line:
use IO::Socket::SSL 'inet4' ; use IO::Socket::SSL 'inet4' ;

View File

@ -1,5 +1,7 @@
#!/bin/cat #!/bin/cat
$Id: FAQ.ISP.txt,v 1.3 2016/01/18 18:14:12 gilles Exp gilles $ $Id: FAQ.ISP.txt,v 1.4 2016/01/28 14:34:15 gilles Exp gilles $
This documentation is also at http://imapsync.lamiral.info/#doc
========================================================= =========================================================
Imapsync tips for ISP. Specific issues and solutions. Imapsync tips for ISP. Specific issues and solutions.

View File

@ -1,5 +1,7 @@
#!/bin/cat #!/bin/cat
$Id: FAQ.Massive.txt,v 1.6 2016/01/18 18:14:12 gilles Exp gilles $ $Id: FAQ.Massive.txt,v 1.8 2016/02/07 17:21:40 gilles Exp gilles $
This documentation is also at http://imapsync.lamiral.info/#doc
============================================== ==============================================
Imapsync tips for massive/bulk migrations. Imapsync tips for massive/bulk migrations.
@ -8,10 +10,20 @@ $Id: FAQ.Massive.txt,v 1.6 2016/01/18 18:14:12 gilles Exp gilles $
Questions answered here are: Questions answered here are:
Q. I need to migrate hundred accounts, how can I do? Q. I need to migrate hundred accounts, how can I do?
Q. I have to migrate 500k users using 400 TB of disk space. Q. I have to migrate 500k users using 400 TB of disk space.
How do I proceed? How do I proceed?
Q. How to determine what is the bottleneck in my current imapsync process? Q. How to determine what is the bottleneck in my current imapsync process?
Q. Can I run more instances of imapsync in parallel on a Windows host?
Q. I run multiple imapsync applications at the same time then get a
warning "imapsync.pid already exists, overwriting it".
Is this a potential problem when trying to sync multiple
IMAP account in parallel?
======================================================================= =======================================================================
Q. I need to migrate hundred accounts, how can I do? Q. I need to migrate hundred accounts, how can I do?
@ -123,3 +135,50 @@ If performances increase a lot then host1/link1 is the bottleneck.
If performances increase on both tests 1) and 2), I have no clue to explain that. If performances increase on both tests 1) and 2), I have no clue to explain that.
Same thing if they both decrease! Same thing if they both decrease!
=======================================================================
Q. Can I run more instances of imapsync in parallel on a Windows host?
R. Yes!
Q. Any performance issue?
You have to try and check the transfer rates, sum them up to
have a uniq numeric criteria.
There is always a limit, depending on remote imap servers
and the one running imapsync;
CPU, memory, Inputs/Outputs are the classical bottlenecks,
the worst bottleneck is the winner that sets the limit.
examples/sync_loop_windows.bat says
...
REM ==== Parallel executions ====
REM If you want to do parallel runs of imapsync then this current script is a good start.
REM Just copy it several times and replace, on each copy, the csvfile variable value.
REM Instead of SET csvfile=file.txt write for example
REM SET csvfile=file01.txt in the first copy
REM then also
REM SET csvfile=file02.txt in the second copy etc.
REM Of course you also have to split the data contained in file.txt
REM into file01.txt file02.txt etc.
REM After that, just double-click on each batch file to launch each process
=======================================================================
Q. I run multiple imapsync applications at the same time then get a
warning "imapsync.pid already exists, overwriting it".
Is this a potential problem when trying to sync multiple
IMAP account in parallel?
R1. No issue with the file imapsync.pid if you don't use its content
by yourself.
This file can help you to manage multiple runs by sending signals
to the processes (sigterm or sigkill) using their PID.
Each run can have its own pid file with --pidfile option.
The file imapsync.pid contains the PID of the current imapsync process.
This file is removed at the end of a normal run.
You can safely ignore the warning if you don't use imapsync.pid file
to manage imapsync processes.

View File

@ -1,5 +1,7 @@
#!/bin/cat #!/bin/cat
$Id: FAQ.Messages_selection.txt,v 1.3 2016/01/18 18:14:12 gilles Exp gilles $ $Id: FAQ.Messages_Selection.txt,v 1.5 2016/02/05 08:22:26 gilles Exp gilles $
This documentation is also at http://imapsync.lamiral.info/#doc
===================================== =====================================
Imapsync tips to select messages. Imapsync tips to select messages.

View File

@ -1,5 +1,7 @@
#!/bin/cat #!/bin/cat
$Id: FAQ.Oracle-UCS.txt,v 1.2 2016/01/18 18:14:12 gilles Exp gilles $ $Id: FAQ.Oracle-UCS.txt,v 1.3 2016/01/28 14:34:15 gilles Exp gilles $
This documentation is also at http://imapsync.lamiral.info/#doc
================================================== ==================================================
Imapsync tips for Oracle-UCS. Specific issues. Imapsync tips for Oracle-UCS. Specific issues.

View File

@ -1,10 +1,69 @@
#!/bin/cat #!/bin/cat
# $Id: FAQ.Security.txt,v 1.3 2016/01/18 18:14:12 gilles Exp gilles $ # $Id: FAQ.Security.txt,v 1.6 2016/02/07 21:49:52 gilles Exp gilles $
This documentation is also at http://imapsync.lamiral.info/#doc
======================================================= =======================================================
Imapsync tips about security. Issues and solutions. Imapsync tips about security. Issues and solutions.
======================================================= =======================================================
=======================================================================
Q. Does imapsync support IMAP TLS?
R. Use --tls1 and/or --tls2 options
--tls1 tells imapsync to use tls on host1.
--tls2 tells imapsync to use tls on host2.
=======================================================================
Q. Does imapsync support IMAP over SSL (IMAPS)?
R. Yes natively since release 1.161.
still, 2 ways, at least to use ssl:
a) Use native --ssl1 and/or --ssl2 options
--ssl1 tells imapsync to use ssl on host1.
--ssl2 tells imapsync to use ssl on host2.
b) Use stunnel
http://www.stunnel.org/
Assuming there is an imaps (993) server on imap.foo.org,
on your localhost machine (or bar machine) run :
stunnel -c -d imap -r imap.foo.org:imaps
or using names instead of numbers
stunnel -c -d 143 -r imap.foo.org:993
then use imapsync on localhost (or bar machine) imap (143) port.
If the local port 143 is already taken then use a free one, 10143.
c) Other example for gmail with no root access to open port 143
stunnel -f -P '' -c -d 9993 -r imap.gmail.com:993
Then, to access gmail as host2 use:
imapsync ... --host2 localhost --port2 9993 --nossl2
=======================================================================
Q. How can I manually test a login via ssl?
R. Use ncat or telnet-ssl like in this example:
ncat --ssl -C imap.gmail.com 993
* OK Gimap ready for requests from 78.196.254.58 q1mb175739668wix
a LOGIN "gilles.lamiral@gmail.com" "secret"
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE ... ESEARCH
a OK gilles.lamiral@gmail.com Gilles Lamiral authenticated (Success)
b LOGOUT
* BYE LOGOUT Requested
b OK 73 good day (Success)
The client part to type is "a LOGIN ..." and "b LOGOUT" without
the double-quotes.
====================================================================== ======================================================================
Q. Imapsync used to use SSL_VERIFY_PEER now it uses SSL_VERIFY_NONE. Q. Imapsync used to use SSL_VERIFY_PEER now it uses SSL_VERIFY_NONE.
@ -24,5 +83,42 @@ R2. After imapsync 1.673, for example
--sslargs1 SSL_verify_mode=1 \ --sslargs1 SSL_verify_mode=1 \
--sslargs2 SSL_verify_mode=0 \ --sslargs2 SSL_verify_mode=0 \
C1. Don't do this in function "sub set_tls" since it won't work by principle, See perldoc IO::Socket::SSL for all possibilities, also at
tls is done AFTER the application level connexion is established http://search.cpan.org/perldoc?IO%3A%3ASocket%3A%3ASSL
C1. Don't do this manual change in function "sub set_tls",
it won't work by principle, because tls is done AFTER
the application level connexion is established.
=======================================================================
Q. How can I manually test a login via ssl?
R. Use ncat or telnet-ssl like in this example:
ncat --ssl -C imap.gmail.com 993
* OK Gimap ready for requests from 78.196.254.58 q1mb175739668wix
a LOGIN "gilles.lamiral@gmail.com" "secret"
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE ... ESEARCH
a OK gilles.lamiral@gmail.com Gilles Lamiral authenticated (Success)
b LOGOUT
* BYE LOGOUT Requested
b OK 73 good day (Success)
The client part to type is "a LOGIN ..." and "b LOGOUT" without
the double-quotes.
=======================================================================
Q: How to have an imaps server?
R.
a) Install one
b) or use stunnel :
Assuming there is an imap (143) server on localhost
stunnel -d 993 -r 143 -f
c) or use stunnel on inetd
imaps stream tcp nowait cyrus /usr/sbin/stunnel -s cyrus -p /etc/ssl/certs/imapd.pem -r localhost:imap2

View File

@ -1,5 +1,7 @@
#!/bin/cat #!/bin/cat
$Id: FAQ.SmarterMail.txt,v 1.7 2016/01/18 18:14:12 gilles Exp gilles $ $Id: FAQ.SmarterMail.txt,v 1.8 2016/01/28 14:34:15 gilles Exp gilles $
This documentation is also at http://imapsync.lamiral.info/#doc
================================================================= =================================================================
Imapsync tips for SmarterMail. Specific issues and solutions. Imapsync tips for SmarterMail. Specific issues and solutions.

View File

@ -1,5 +1,7 @@
#!/bin/cat #!/bin/cat
$Id: FAQ.Various_Server_Softwares.txt,v 1.3 2016/01/18 18:14:12 gilles Exp gilles $ $Id: FAQ.Various_Server_Softwares.txt,v 1.4 2016/01/28 14:34:15 gilles Exp gilles $
This documentation is also at http://imapsync.lamiral.info/#doc
==================================================== ====================================================
Imapsync tips for various imap server softwares. Imapsync tips for various imap server softwares.

View File

@ -1,5 +1,7 @@
#!/bin/cat #!/bin/cat
$Id: FAQ.XOAUTH2.txt,v 1.8 2016/01/18 18:14:12 gilles Exp gilles $ $Id: FAQ.XOAUTH2.txt,v 1.9 2016/01/28 14:34:15 gilles Exp gilles $
This documentation is also at http://imapsync.lamiral.info/#doc
====================================================================== ======================================================================
Imapsync tips to use XOAUTH2 authentication (Gmail) and old XOAUTH Imapsync tips to use XOAUTH2 authentication (Gmail) and old XOAUTH

View File

@ -1,5 +1,5 @@
# $Id: Makefile,v 1.216 2016/01/22 01:03:46 gilles Exp gilles $ # $Id: Makefile,v 1.222 2016/03/07 15:56:21 gilles Exp gilles $
.PHONY: help usage all doc .PHONY: help usage all doc
@ -49,7 +49,7 @@ VERSION=$(shell perl -I$(IMAPClient) ./imapsync --version 2>/dev/null || cat VER
VERSION_EXE=$(shell cat ./VERSION_EXE) VERSION_EXE=$(shell cat ./VERSION_EXE)
HELLO=$(shell date;uname -a) HELLO=$(shell date;uname -a)
IMAPClient_3xx=./W/Mail-IMAPClient-3.37/lib IMAPClient_3xx=./W/Mail-IMAPClient-3.38/lib
IMAPClient=$(IMAPClient_3xx) IMAPClient=$(IMAPClient_3xx)
HOSTNAME = $(shell hostname -s) HOSTNAME = $(shell hostname -s)
@ -107,14 +107,14 @@ clean_test:
rm -f .test_3xx rm -f .test_3xx
clean_tilde: clean_tilde:
rm -f *~ W/*~ FAQ.d/*~ rm -f *~ W/*~ FAQ.d/*~ S/*~ INSTALL.d/*~
clean_log: clean_log:
rm -f LOG_imapsync/*.txt rm -f LOG_imapsync/*.txt
rm -f examples/LOG_imapsync/*.txt rm -f examples/LOG_imapsync/*.txt
clean_bak: clean_bak:
rm -f index.shtml.bak ./W/style.css.bak rm -f index.shtml.bak ./S/style.css.bak
.PHONY: install dist man .PHONY: install dist man
@ -142,11 +142,11 @@ install: testp W/imapsync.1
ci: cidone ci: cidone
cidone: cidone:
rcsdiff W/*.bat W/*.out W/*.txt W/*.htaccess W/*.shtml rcsdiff W/*.bat W/*.out W/*.txt W/*.htaccess
rcsdiff S/*.txt S/*.shtml rcsdiff S/*.txt S/*.shtml S/*.html
rcsdiff doc/*.t2t rcsdiff doc/*.t2t
rcsdiff INSTALL.d/*.txt INSTALL.d/prerequisites_imapsync rcsdiff INSTALL.d/*.txt INSTALL.d/prerequisites_imapsync
rcsdiff FAQ.d/*txt rcsdiff FAQ.d/*.txt
rcsdiff examples/*.sh examples/*.bat examples/*.txt rcsdiff examples/*.sh examples/*.bat examples/*.txt
rcsdiff RCS/* rcsdiff RCS/*
@ -193,6 +193,8 @@ test_quick_3xx: imapsync tests.sh
testv3: imapsync tests.sh testv3: imapsync tests.sh
CMD_PERL='perl -I./$(IMAPClient_3xx)' /usr/bin/time sh tests.sh CMD_PERL='perl -I./$(IMAPClient_3xx)' /usr/bin/time sh tests.sh
testv: testv3 testv: testv3
test: .test_3xx test: .test_3xx
@ -269,7 +271,7 @@ W/test3_gmail.bat:
scp imapsync W/test3_gmail.bat /g/var/pass/secret.gilles_gmail Admin@c:'C:/msys/1.0/home/Admin/imapsync/' scp imapsync W/test3_gmail.bat /g/var/pass/secret.gilles_gmail Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test3_gmail.bat' ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test3_gmail.bat'
test_imapsync_exe: test_exe:
unix2dos W/test_exe.bat unix2dos W/test_exe.bat
scp W/test_exe.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/' scp W/test_exe.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test_exe.bat' ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test_exe.bat'
@ -371,15 +373,11 @@ tarball: ../prepa_dist/$(DIST_FILE)
ls -l ../prepa_dist/$(DIST_FILE) ls -l ../prepa_dist/$(DIST_FILE)
DO_IT := $(shell test -d dist && { test -f ./dist/path_$(VERSION).txt || makepasswd --chars 4 > ./dist/path_$(VERSION).txt ; } ) DIST_PATH := ./dist/
DIST_SECRET := $(shell test -d dist && cat ./dist/path_$(VERSION).txt)
DIST_PATH := ./dist/$(DIST_SECRET)
lalala:
echo $(DIST_SECRET)
dist: cidone test clean all perlcritic dist_prepa dist_zip README_dist.txt dist: cidone test clean all perlcritic dist_prepa dist_zip README_dist.txt
md5: md5:
cd $(DIST_PATH)/ && md5sum * cd $(DIST_PATH)/ && md5sum *
@ -387,7 +385,7 @@ sha:
cd $(DIST_PATH)/ && sha512sum * cd $(DIST_PATH)/ && sha512sum *
dist_prepa: tarball dist_dir dist_prepa: tarball
ln -f ../prepa_dist/$(DIST_FILE) $(DIST_PATH)/ ln -f ../prepa_dist/$(DIST_FILE) $(DIST_PATH)/
rcsdiff imapsync rcsdiff imapsync
cp -a imapsync $(DIST_PATH)/ cp -a imapsync $(DIST_PATH)/
@ -395,22 +393,11 @@ dist_prepa: tarball dist_dir
#cd $(DIST_PATH)/ && md5sum -c $(DIST_FILE).md5.txt #cd $(DIST_PATH)/ && md5sum -c $(DIST_FILE).md5.txt
ls -l $(DIST_PATH)/ ls -l $(DIST_PATH)/
dist_dir:
@echo $(DIST_SECRET)
@echo $(DIST_PATH)
mkdir -p $(DIST_PATH)
ln -f ./dist/path_$(VERSION).txt ./dist/path_last.txt
dist_exe: imapsync.exe
cp -a ./imapsync.exe $(DIST_PATH)/
#cd $(DIST_PATH)/ && md5sum ./imapsync.exe > ./imapsync.exe.md5.txt
#cd $(DIST_PATH)/ && md5sum -c ./imapsync.exe.md5.txt
dist_zip: zip dist_zip: zip
cp -a ../prepa_zip/imapsync_$(VERSION_EXE).zip $(DIST_PATH)/ cp -a ../prepa_zip/imapsync_$(VERSION_EXE).zip $(DIST_PATH)/
README_dist.txt: dist_dir README_dist.txt:
sh W/tools/gen_README_dist > $(DIST_PATH)/README_dist.txt sh W/tools/gen_README_dist > $(DIST_PATH)/README_dist.txt
unix2dos $(DIST_PATH)/README_dist.txt unix2dos $(DIST_PATH)/README_dist.txt
@ -447,13 +434,11 @@ PUBLIC = ./ChangeLog ./NOLIMIT ./LICENSE ./CREDITS ./FAQ \
./VERSION ./VERSION_EXE ./imapsync \ ./VERSION ./VERSION_EXE ./imapsync \
./README ./OPTIONS ./TODO ./README ./OPTIONS ./TODO
PUBLIC_W = ./W/style.css ./W/tw-hash.html \
./W/TIME.txt \
./W/paypal.shtml ./W/paypal_return.shtml
PUBLIC_doc = ./doc/TUTORIAL_Unix.html ./doc/GOOD_PRACTICES.html PUBLIC_doc = ./doc/TUTORIAL_Unix.html ./doc/GOOD_PRACTICES.html
ml: dist_dir ml:
rcsdiff W/ml_announce.in rcsdiff W/ml_announce.in
m4 -P W/ml_announce.in | mutt -H- m4 -P W/ml_announce.in | mutt -H-
mailq mailq
@ -491,9 +476,7 @@ checklinkext: S/news.shtml S/external.shtml S/imapservers.shtml S/template.shtm
upload_index: .valid.index.shtml upload_index: .valid.index.shtml
rcsdiff index.shtml S/*.shtml FAQ FAQ.d/*.txt INSTALL LICENSE CREDITS TODO W/*.bat examples/*.bat index.shtml INSTALL.d/*.txt imapsync rcsdiff index.shtml S/*.shtml FAQ FAQ.d/*.txt INSTALL LICENSE CREDITS TODO W/*.bat examples/*.bat index.shtml INSTALL.d/*.txt imapsync
rsync -avH index.shtml FAQ INSTALL OPTIONS NOLIMIT LICENSE CREDITS TODO imapsync imapsync.exe $(BIN_NAME) imapsync_bin_Darwin ../imapsync_website/ rsync -avH index.shtml FAQ INSTALL OPTIONS NOLIMIT LICENSE CREDITS TODO imapsync imapsync.exe $(BIN_NAME) imapsync_bin_Darwin ../imapsync_website/
rsync -avH $(PUBLIC_W) ../imapsync_website/W/
rsync -avH S/ ../imapsync_website/S/ rsync -avH S/ ../imapsync_website/S/
rsync -avH W/images/ ../imapsync_website/W/images/
rsync -aHv --delete ./examples/ ../imapsync_website/examples/ rsync -aHv --delete ./examples/ ../imapsync_website/examples/
rsync -aHv --delete ./INSTALL.d/ ../imapsync_website/INSTALL.d/ rsync -aHv --delete ./INSTALL.d/ ../imapsync_website/INSTALL.d/
rsync -aHv --delete ./FAQ.d/ ../imapsync_website/FAQ.d/ rsync -aHv --delete ./FAQ.d/ ../imapsync_website/FAQ.d/
@ -513,11 +496,11 @@ upload_FAQ:
upload_ks: ci tarball upload_ks: ci tarball
rsync -aHv $(PUBLIC) ../imapsync_website/ rsync -aHv $(PUBLIC) ../imapsync_website/
rsync -aHv $(PUBLIC_W) ../imapsync_website/W/ rsync -aHv $(PUBLIC_W) ../imapsync_website/W/
rsync -aHv --delete ./W/images/ ../imapsync_website/W/images/
rsync -aHv --delete ./W/ks.htaccess ../imapsync_website/.htaccess rsync -aHv --delete ./W/ks.htaccess ../imapsync_website/.htaccess
rsync -avH ./S/ ../imapsync_website/S/ rsync -avH ./S/ ../imapsync_website/S/
rsync -aHv --delete ./dist/ ../imapsync_website/dist/ rsync -aHv --delete ./dist/ ../imapsync_website/dist/
rsync -aHv --delete ./examples/ ../imapsync_website/examples/ rsync -aHv --delete ./examples/ ../imapsync_website/examples/
rsync -aHv --delete ./INSTALL.d/ ../imapsync_website/INSTALL.d/ rsync -aHv --delete ./INSTALL.d/ ../imapsync_website/INSTALL.d/
rsync -aHv --delete ./FAQ.d/ ../imapsync_website/FAQ.d/ rsync -aHv --delete ./FAQ.d/ ../imapsync_website/FAQ.d/
rsync -avH --delete ./doc/ ../imapsync_website/doc/
rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/ rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/

12
OPTIONS
View File

@ -31,7 +31,13 @@
--tls1 : Use a TLS connection on host1. --tls1 : Use a TLS connection on host1.
--tls2 : Use a TLS connection on host2. --tls2 : Use a TLS connection on host2.
--debugssl int : SSL debug mode from 0 to 4. --debugssl int : SSL debug mode from 0 to 4.
--sslargs1 str : Pass any ssl parameter for host1 ssl or tls connection. Example:
--sslargs1 SSL_verify_mode=1 --sslargs1 SSL_version=SSLv3
See all possibilities in the new() method of IO::Socket::SSL
http://search.cpan.org/perldoc?IO::Socket::SSL#Description_Of_Methods
--sslargs2 str : Pass any ssl parameter for host2 ssl or tls connection.
See --sslargs1
--timeout1 int : Connection timeout in seconds for host1. --timeout1 int : Connection timeout in seconds for host1.
Default is 120 and 0 means no timeout at all. Default is 120 and 0 means no timeout at all.
--timeout2 int : Connection timeout in seconds for host2. --timeout2 int : Connection timeout in seconds for host2.
@ -269,8 +275,8 @@
--host2 test2.lamiral.info --user2 test2 --password2 secret2 --host2 test2.lamiral.info --user2 test2 --password2 secret2
Here is a [linux] system (Linux petite 3.2.0-97-generic #137-Ubuntu SMP Thu Dec 17 21:14:00 UTC 2015 i686) Here is a [linux] system (Linux petite 3.2.0-97-generic #137-Ubuntu SMP Thu Dec 17 21:14:00 UTC 2015 i686)
With perl 5.14.2 Mail::IMAPClient 3.37 With perl 5.14.2 Mail::IMAPClient 3.38
$Id: imapsync,v 1.678 2016/01/21 19:47:02 gilles Exp gilles $ $Id: imapsync,v 1.684 2016/03/17 08:35:03 gilles Exp gilles $
This current imapsync is up to date This current imapsync is up to date
Homepage: http://imapsync.lamiral.info/ Homepage: http://imapsync.lamiral.info/

10
README
View File

@ -4,7 +4,7 @@ NAME
More than 66 different IMAP server softwares supported with success, few More than 66 different IMAP server softwares supported with success, few
failures. failures.
$Revision: 1.678 $ $Revision: 1.684 $
SYNOPSIS SYNOPSIS
To synchronize the source imap account To synchronize the source imap account
@ -81,6 +81,12 @@ USAGE
--tls1 : Use a TLS connection on host1. --tls1 : Use a TLS connection on host1.
--tls2 : Use a TLS connection on host2. --tls2 : Use a TLS connection on host2.
--debugssl int : SSL debug mode from 0 to 4. --debugssl int : SSL debug mode from 0 to 4.
--sslargs1 str : Pass any ssl parameter for host1 ssl or tls connection. Example:
--sslargs1 SSL_verify_mode=1 --sslargs1 SSL_version=SSLv3
See all possibilities in the new() method of IO::Socket::SSL
http://search.cpan.org/perldoc?IO::Socket::SSL#Description_Of_Methods
--sslargs2 str : Pass any ssl parameter for host2 ssl or tls connection.
See --sslargs1
--timeout1 int : Connection timeout in seconds for host1. --timeout1 int : Connection timeout in seconds for host1.
Default is 120 and 0 means no timeout at all. Default is 120 and 0 means no timeout at all.
@ -592,5 +598,5 @@ SIMILAR SOFTWARES
Feedback (good or bad) will often be welcome. Feedback (good or bad) will often be welcome.
$Id: imapsync,v 1.678 2016/01/21 19:47:02 gilles Exp gilles $ $Id: imapsync,v 1.684 2016/03/17 08:35:03 gilles Exp gilles $

11
S/bc-payment.html Executable file
View File

@ -0,0 +1,11 @@
<!-- $Id: bc-payment.html,v 1.3 2016/02/07 21:45:35 gilles Exp gilles $ -->
<a
class="coinbase-button"
data-code="c85b7c5aea8a50cc69c3f3a9afb96f91"
href="https://www.coinbase.com/checkouts/c85b7c5aea8a50cc69c3f3a9afb96f91">Pay with bitcoins</a>
<script
src="https://www.coinbase.com/assets/button.js"
type="text/javascript">
</script>

View File

@ -15,8 +15,8 @@
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/> <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/>
<meta http-equiv="content-style-type" content="text/css"/> <meta http-equiv="content-style-type" content="text/css"/>
<meta http-equiv="expires" content="0"/> <meta http-equiv="expires" content="0"/>
<link rel="icon" type="image/png" href="../W/images/logo_imapsync_s.png" /> <link rel="icon" type="image/png" href="../S/images/logo_imapsync_s.png" />
<link href="../W/style.css" rel="stylesheet" type="text/css"/> <link href="../S/style.css" rel="stylesheet" type="text/css"/>
</head> </head>
@ -76,19 +76,19 @@ Prices are given par mailbox and may be outdated (December 2011).</p>
<div> <div>
<a href="http://validator.w3.org/check?uri=referer"> <a href="http://validator.w3.org/check?uri=referer">
<img <img
src="../W/images/valid-xhtml10" src="../S/images/valid-xhtml10"
alt="Valid XHTML 1.0 Strict" height="31" width="88" /> alt="Valid XHTML 1.0 Strict" height="31" width="88" />
</a> </a>
<a href="http://jigsaw.w3.org/css-validator/check/referer"> <a href="http://jigsaw.w3.org/css-validator/check/referer">
<img style="border:0;width:88px;height:31px" <img style="border:0;width:88px;height:31px"
src="../W/images/vcss-blue" src="../S/images/vcss-blue"
alt="CSS Valide !" /> alt="CSS Valide !" />
</a> </a>
<a href="http://www.anybrowser.org/campaign/"> <a href="http://www.anybrowser.org/campaign/">
<img style="border:0;width:88px;height:31px" <img style="border:0;width:88px;height:31px"
src="../W/images/ab_jlh.png" src="../S/images/ab_jlh.png"
alt="Viewable With Any Browser" /> alt="Viewable With Any Browser" />
</a> </a>
</div> </div>
@ -98,7 +98,7 @@ alt="Viewable With Any Browser" />
<!--#config timefmt="%D" --> <!--#config timefmt="%D" -->
<!--#config timefmt="%A %B %d, %Y" --> <!--#config timefmt="%A %B %d, %Y" -->
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b> <b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
($Id: external.shtml,v 1.5 2015/10/08 01:05:25 gilles Exp gilles $)<br/> ($Id: external.shtml,v 1.6 2016/03/03 22:36:57 gilles Exp gilles $)<br/>
<a href="#TOP">Top of the page</a> <a href="#TOP">Top of the page</a>
</p> </p>

View File

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View File

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

View File

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -15,8 +15,8 @@
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/> <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/>
<meta http-equiv="content-style-type" content="text/css"/> <meta http-equiv="content-style-type" content="text/css"/>
<meta http-equiv="expires" content="0"/> <meta http-equiv="expires" content="0"/>
<link rel="icon" type="image/png" href="../W/images/logo_imapsync_s.png" /> <link rel="icon" type="image/png" href="../S/images/logo_imapsync_s.png" />
<link href="../W/style.css" rel="stylesheet" type="text/css"/> <link href="../S/style.css" rel="stylesheet" type="text/css"/>
</head> </head>
@ -63,6 +63,7 @@ Examples:</p>
<li>Atmail 6.x [host1] <a href="https://www.atmail.com/">https://www.atmail.com/</a></li> <li>Atmail 6.x [host1] <a href="https://www.atmail.com/">https://www.atmail.com/</a></li>
<li>Axigen Mail Server Version 8.0.0 (<a href="https://www.axigen.com/">https://www.axigen.com/</a>)</li> <li>Axigen Mail Server Version 8.0.0 (<a href="https://www.axigen.com/">https://www.axigen.com/</a>)</li>
<li>BincImap 1.2.3 (GPL) (<a href="http://www.bincimap.org/">http://www.bincimap.org/</a>)</li> <li>BincImap 1.2.3 (GPL) (<a href="http://www.bincimap.org/">http://www.bincimap.org/</a>)</li>
<li>ClearOS <a href="https://www.clearos.com/">https://www.clearos.com/</a> uses Cyrus as IMAP backend server.</li>
<li>CommuniGatePro server (Redhat 8.0) (Solaris), CommuniGate Pro 5.2.17[host2] (CentOS 5.4) <li>CommuniGatePro server (Redhat 8.0) (Solaris), CommuniGate Pro 5.2.17[host2] (CentOS 5.4)
(<a href="http://www.communigate.com/">http://www.communigate.com/</a>) </li> (<a href="http://www.communigate.com/">http://www.communigate.com/</a>) </li>
<li>Courier IMAP 1.5.1, 2.2.0, 2.1.1, 2.2.1, 3.0.8, 3.0.3, 4.1.1 (GPL) <li>Courier IMAP 1.5.1, 2.2.0, 2.1.1, 2.2.1, 3.0.8, 3.0.3, 4.1.1 (GPL)
@ -180,19 +181,19 @@ that's my job.
<div> <div>
<a href="http://validator.w3.org/check?uri=referer"> <a href="http://validator.w3.org/check?uri=referer">
<img <img
src="../W/images/valid-xhtml10" src="../S/images/valid-xhtml10"
alt="Valid XHTML 1.0 Strict" height="31" width="88" /> alt="Valid XHTML 1.0 Strict" height="31" width="88" />
</a> </a>
<a href="http://jigsaw.w3.org/css-validator/check/referer"> <a href="http://jigsaw.w3.org/css-validator/check/referer">
<img style="border:0;width:88px;height:31px" <img style="border:0;width:88px;height:31px"
src="../W/images/vcss-blue" src="../S/images/vcss-blue"
alt="CSS Valide !" /> alt="CSS Valide !" />
</a> </a>
<a href="http://www.anybrowser.org/campaign/"> <a href="http://www.anybrowser.org/campaign/">
<img style="border:0;width:88px;height:31px" <img style="border:0;width:88px;height:31px"
src="../W/images/ab_jlh.png" src="../S/images/ab_jlh.png"
alt="Viewable With Any Browser" /> alt="Viewable With Any Browser" />
</a> </a>
</div> </div>
@ -202,7 +203,7 @@ alt="Viewable With Any Browser" />
<!--#config timefmt="%D" --> <!--#config timefmt="%D" -->
<!--#config timefmt="%A %B %d, %Y" --> <!--#config timefmt="%A %B %d, %Y" -->
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b> <b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
($Id: imapservers.shtml,v 1.8 2015/11/04 18:21:08 gilles Exp gilles $)<br/> ($Id: imapservers.shtml,v 1.10 2016/03/03 22:36:57 gilles Exp gilles $)<br/>
<a href="#TOP">Top of the page</a> <a href="#TOP">Top of the page</a>
</p> </p>

View File

@ -1,82 +1,83 @@
1143 Etats-Unis_d'Amerique___ 25.84 % 25.84 % 1 1156 Etats-Unis_d'Amerique___ 25.47 % 25.47 % 1
811 Allemagne_______________ 18.34 % 44.18 % 2 832 Allemagne_______________ 18.33 % 43.81 % 2
413 Royaume-Uni_____________ 9.34 % 53.52 % 3 427 Royaume-Uni_____________ 9.41 % 53.22 % 3
212 France__________________ 4.79 % 58.31 % 4 220 Italie__________________ 4.85 % 58.07 % 4
209 Italie__________________ 4.73 % 63.03 % 5 219 France__________________ 4.83 % 62.89 % 5
201 Canada__________________ 4.54 % 67.58 % 6 202 Canada__________________ 4.45 % 67.34 % 6
179 Suisse__________________ 4.05 % 71.63 % 7 184 Suisse__________________ 4.05 % 71.40 % 7
154 Pays-Bas________________ 3.48 % 75.11 % 8 160 Pays-Bas________________ 3.53 % 74.92 % 8
151 Australie_______________ 3.41 % 78.52 % 9 158 Australie_______________ 3.48 % 78.40 % 9
90 Autriche________________ 2.03 % 80.56 % 10 92 Autriche________________ 2.03 % 80.43 % 10
80 Belgique________________ 1.81 % 82.36 % 11 83 Espagne_________________ 1.83 % 82.26 % 11
76 Espagne_________________ 1.72 % 84.08 % 12 83 Belgique________________ 1.83 % 84.09 % 12
65 Suede___________________ 1.47 % 85.55 % 13 65 Suede___________________ 1.43 % 85.52 % 13
52 Danemark________________ 1.18 % 86.73 % 14 56 Danemark________________ 1.23 % 86.76 % 14
48 Bresil__________________ 1.09 % 87.81 % 15 48 Bresil__________________ 1.06 % 87.81 % 15
41 Norvege_________________ 0.93 % 88.74 % 16 41 Norvege_________________ 0.90 % 88.72 % 16
31 Finlande________________ 0.70 % 89.44 % 17 31 Pologne_________________ 0.68 % 89.40 % 17
29 Pologne_________________ 0.66 % 90.10 % 18 31 Finlande________________ 0.68 % 90.08 % 18
25 Republique_tcheque______ 0.57 % 90.66 % 19 26 Japon___________________ 0.57 % 90.66 % 19
25 Japon___________________ 0.57 % 91.23 % 20 25 Republique_tcheque______ 0.55 % 91.21 % 20
25 ________________________ 0.57 % 91.79 % 21 25 ________________________ 0.55 % 91.76 % 21
22 Russie__________________ 0.50 % 92.29 % 22 23 Irlande_________________ 0.51 % 92.27 % 22
22 Irlande_________________ 0.50 % 92.79 % 23 22 Russie__________________ 0.48 % 92.75 % 23
21 Nouvelle-Zelande________ 0.47 % 93.26 % 24 21 Nouvelle-Zelande________ 0.46 % 93.21 % 24
18 Hongrie_________________ 0.41 % 93.67 % 25 20 Hongrie_________________ 0.44 % 93.65 % 25
15 Hong-Kong_______________ 0.34 % 94.01 % 26 16 Hong-Kong_______________ 0.35 % 94.01 % 26
15 Afrique_du_Sud__________ 0.34 % 94.35 % 27 15 Portugal________________ 0.33 % 94.34 % 27
14 Portugal________________ 0.32 % 94.66 % 28 15 Afrique_du_Sud__________ 0.33 % 94.67 % 28
13 Slovaquie_______________ 0.29 % 94.96 % 29 13 Slovaquie_______________ 0.29 % 94.95 % 29
13 Malaisie________________ 0.29 % 95.25 % 30 13 Malaisie________________ 0.29 % 95.24 % 30
12 Luxembourg______________ 0.27 % 95.52 % 31 13 Luxembourg______________ 0.29 % 95.53 % 31
12 Inde____________________ 0.27 % 95.79 % 32 13 Grece___________________ 0.29 % 95.81 % 32
12 Grece___________________ 0.27 % 96.07 % 33 12 Inde____________________ 0.26 % 96.08 % 33
12 Argentine_______________ 0.27 % 96.34 % 34 12 Argentine_______________ 0.26 % 96.34 % 34
11 Singapour_______________ 0.25 % 96.59 % 35 11 Singapour_______________ 0.24 % 96.58 % 35
11 Israel__________________ 0.25 % 96.83 % 36 11 Israel__________________ 0.24 % 96.83 % 36
11 Chine___________________ 0.25 % 97.08 % 37 11 Chine___________________ 0.24 % 97.07 % 37
11 Chili___________________ 0.25 % 97.33 % 38 11 Chili___________________ 0.24 % 97.31 % 38
10 Mexique_________________ 0.23 % 97.56 % 39 10 Roumanie________________ 0.22 % 97.53 % 39
9 Roumanie________________ 0.20 % 97.76 % 40 10 Mexique_________________ 0.22 % 97.75 % 40
8 Slovenie________________ 0.18 % 97.94 % 41 8 Slovenie________________ 0.18 % 97.93 % 41
8 Emirats_Arabes_Unis_____ 0.18 % 98.12 % 42 8 Emirats_Arabes_Unis_____ 0.18 % 98.10 % 42
7 Lettonie________________ 0.16 % 98.28 % 43 7 Lettonie________________ 0.15 % 98.26 % 43
5 Thailande_______________ 0.11 % 98.39 % 44 5 Thailande_______________ 0.11 % 98.37 % 44
5 Malte___________________ 0.11 % 98.51 % 45 5 Malte___________________ 0.11 % 98.48 % 45
5 Islande_________________ 0.11 % 98.62 % 46 5 Islande_________________ 0.11 % 98.59 % 46
4 Turquie_________________ 0.09 % 98.71 % 47 4 Turquie_________________ 0.09 % 98.68 % 47
4 Indonesie_______________ 0.09 % 98.80 % 48 4 Indonesie_______________ 0.09 % 98.77 % 48
4 Egypte__________________ 0.09 % 98.89 % 49 4 Egypte__________________ 0.09 % 98.85 % 49
4 Croatie_________________ 0.09 % 98.98 % 50 4 Croatie_________________ 0.09 % 98.94 % 50
4 Bulgarie________________ 0.09 % 99.07 % 51 4 Bulgarie________________ 0.09 % 99.03 % 51
3 Venezuela_______________ 0.07 % 99.14 % 52 3 Venezuela_______________ 0.07 % 99.10 % 52
3 Philippines_____________ 0.07 % 99.21 % 53 3 Serbie__________________ 0.07 % 99.16 % 53
3 Estonie_________________ 0.07 % 99.28 % 54 3 Philippines_____________ 0.07 % 99.23 % 54
2 Vietnam_________________ 0.05 % 99.32 % 55 3 Estonie_________________ 0.07 % 99.29 % 55
2 Uruguay_________________ 0.05 % 99.37 % 56 2 Vietnam_________________ 0.04 % 99.34 % 56
2 Lituanie________________ 0.05 % 99.41 % 57 2 Uruguay_________________ 0.04 % 99.38 % 57
2 Costa_Rica______________ 0.05 % 99.46 % 58 2 Lituanie________________ 0.04 % 99.43 % 58
2 Chypre__________________ 0.05 % 99.50 % 59 2 Costa_Rica______________ 0.04 % 99.47 % 59
1 Ukraine_________________ 0.02 % 99.53 % 60 2 Chypre__________________ 0.04 % 99.52 % 60
1 Trinite-et-Tobago_______ 0.02 % 99.55 % 61 1 Ukraine_________________ 0.02 % 99.54 % 61
1 Tanzanie________________ 0.02 % 99.57 % 62 1 Trinite-et-Tobago_______ 0.02 % 99.56 % 62
1 Taiwan__________________ 0.02 % 99.59 % 63 1 Tanzanie________________ 0.02 % 99.58 % 63
1 Serbie__________________ 0.02 % 99.62 % 64 1 Taiwan__________________ 0.02 % 99.60 % 64
1 Senegal_________________ 0.02 % 99.64 % 65 1 Senegal_________________ 0.02 % 99.63 % 65
1 Saint_Christophe-Nevis-Anguilla__ 0.02 % 99.66 % 66 1 Saint_Christophe-Nevis-Anguilla__ 0.02 % 99.65 % 66
1 Qatar___________________ 0.02 % 99.68 % 67 1 Qatar___________________ 0.02 % 99.67 % 67
1 Perou___________________ 0.02 % 99.71 % 68 1 Perou___________________ 0.02 % 99.69 % 68
1 Panama__________________ 0.02 % 99.73 % 69 1 Panama__________________ 0.02 % 99.71 % 69
1 Nouvelle-Caledonie______ 0.02 % 99.75 % 70 1 Nouvelle-Caledonie______ 0.02 % 99.74 % 70
1 Nigeria_________________ 0.02 % 99.77 % 71 1 Nigeria_________________ 0.02 % 99.76 % 71
1 Namibie_________________ 0.02 % 99.80 % 72 1 Namibie_________________ 0.02 % 99.78 % 72
1 Mongolie________________ 0.02 % 99.82 % 73 1 Mongolie________________ 0.02 % 99.80 % 73
1 Moldavie________________ 0.02 % 99.84 % 74 1 Moldavie________________ 0.02 % 99.82 % 74
1 Maldives________________ 0.02 % 99.86 % 75 1 Maldives________________ 0.02 % 99.85 % 75
1 Îles_Vierges_britanniques__ 0.02 % 99.89 % 76 1 Îles_Vierges_britanniques__ 0.02 % 99.87 % 76
1 Koweit__________________ 0.02 % 99.91 % 77 1 Koweit__________________ 0.02 % 99.89 % 77
1 Jordanie________________ 0.02 % 99.93 % 78 1 Jordanie________________ 0.02 % 99.91 % 78
1 Colombie________________ 0.02 % 99.95 % 79 1 Colombie________________ 0.02 % 99.93 % 79
1 Bahrein_________________ 0.02 % 99.98 % 80 1 Cameroun________________ 0.02 % 99.96 % 80
1 Antilles_neerlandaises__ 0.02 % 100.00 % 81 1 Bahrein_________________ 0.02 % 99.98 % 81
TOTAL = 4423 sales over 81 countries on Thu Jan 21 20:48:13 CET 2016 1 Antilles_neerlandaises__ 0.02 % 100.00 % 82
TOTAL = 4538 sales over 82 countries on Thu Mar 17 09:36:49 CET 2016

View File

@ -1,112 +1,128 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html lang="en" id="TOP" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" id="TOP"> <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
<title>Imapsync News</title>
<head> <meta content="Bluefish 2.2.2" name="generator" />
<title>Imapsync News</title> <meta content="Gilles LAMIRAL" name="author" />
<meta name="generator" content="Bluefish 2.2.2" /> <meta content="2016-01-22T01:56:39+0100" name="date" />
<meta name="author" content="Gilles LAMIRAL" /> <meta content="None" name="copyright" />
<meta name="date" content="2016-01-22T01:56:39+0100" /> <meta content="imap, transfer, migration, synchronization" name="keywords" />
<meta name="copyright" content="None"/> <meta content="imap migration tool" name="description" />
<meta name="keywords" content="imap, transfer, migration, synchronization"/>
<meta name="description" content="imap migration tool"/>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <meta content="text/css" http-equiv="content-style-type" />
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/> <meta content="0" http-equiv="expires" />
<meta http-equiv="content-style-type" content="text/css"/> <link href="../S/images/logo_imapsync_s.png" type="image/png" rel="icon" />
<meta http-equiv="expires" content="0"/> <link type="text/css" rel="stylesheet" href="../S/style.css" />
<link rel="icon" type="image/png" href="../W/images/logo_imapsync_s.png" />
<link href="../W/style.css" rel="stylesheet" type="text/css"/> </head>
</head> <body>
<body>
<h1>News about imapsync <!--#exec cmd="cat ../VERSION" --> and previous releases <a href="../#TOP" id="latest"><small>(back to menu)</small></a>
</h1>
<h1>News about imapsync <!--#exec cmd="cat ../VERSION" --> and previous releases <a id="latest" href="../#TOP"><small>(back to menu)</small></a>
</h1> <p>imapsync <!--#exec cmd="cat ../VERSION" --> was written on <!--#flastmod file="VERSION" -->
</p>
<p>imapsync <!--#exec cmd="cat ../VERSION" --> was written on <!--#flastmod file="VERSION" -->
</p> <div id="osw_imapsync"></div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
<div id="osw_imapsync"></div> <script type="text/javascript" src="http://static.oswatershed.org/js/package_badge.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script> <script type="text/javascript">$(document).ready(function(){ package_badge("imapsync", "#osw_imapsync"); });</script>
<script src="http://static.oswatershed.org/js/package_badge.js" type="text/javascript"></script>
<script type="text/javascript">$(document).ready(function(){ package_badge("imapsync", "#osw_imapsync"); });</script> <p>See <b><a href="../ChangeLog">ChangeLog</a></b> to read what has been done in details since 2001.</p>
<p>See <b><a href="../ChangeLog">ChangeLog</a></b> to read what has been done in details since 2001.</p> <p>New features or bugfixes since previous releases:</p>
<p>New features or bugfixes since previous releases:</p> <!--
<ul>
<!-- <li><b>1.683</b></li>
<ul> <li><b>Enhancement</b>: </li>
<li><b>1.677</b></li> <li><b>Enhancement</b>: </li>
<li><b>Enhancement</b>: </li> <li><b>Enhancement</b>: </li>
<li><b>Enhancement</b>: </li>
<li><b>Enhancement</b>: </li> <li><b>Usability</b>: </li>
<li><b>Usability</b>: </li>
<li><b>Usability</b>: </li> <li><b>Usability</b>: </li>
<li><b>Usability</b>: </li> <li><b>Usability</b>: </li>
<li><b>Usability</b>: </li>
<li><b>Usability</b>: </li> <li><b>Bug fix</b>: </li>
<li><b>Bug fix</b>: </li>
<li><b>Bug fix</b>: </li> <li><b>Bug fix</b>: </li>
<li><b>Bug fix</b>: </li>
<li><b>Bug fix</b>: </li> <li><b>Refactoring</b>: </li>
<li><b>Refactoring</b>: </li>
<li><b>Refactoring</b>: </li> </ul>
<li><b>Refactoring</b>: </li> -->
</ul>
--> <ul>
<li><b>1.684</b> Small changes, bugfixes</li>
<li><b>Bug fix</b>: Imapsync.exe updated to Mail-IMAPClient-3.38 (3.37 had a bug with credentials containing special characters)</li>
<li><b>Usability</b>: Added inline help about "use --noexpungeaftereach to speed up" if --delete is used.</li>
<li><b>Usability</b>: Added --sslargs1 in documentation, usage option list.</li>
<li><b>Bug fix</b>: No more warning about "Use of uninitialized value $sockargs[7] in join or string at"
in ssl or tls mode. Was due to "'SSL_version' => undef".</li>
<li><b>Bug fix</b>: No more "Can't use an undefined value as a HASH reference at /usr/bin/imapsync line 1247."</li>
<li><b>Bug fix</b>: Added --expungeaftereach check in sub delete_message_on_host1().</li>
<ul>
<li><b>1.678</b> <b>Improved website!</b> (I hope...)</li>
<li><b>Enhancement</b>: Added <b><tt>--sslargs1</tt></b> and <b><tt>--sslargs2</tt></b> to pass any ssl parameter for host1 or host2 connection.
Example: <tt>--sslargs1 SSL_verify_mode=1 --sslargs1 SSL_version=SSLv3</tt></li>
<li><b>Enhancement</b>: Added <tt>--timeout1 int</tt> and <tt>--timeout2 int</tt> in seconds (<tt>--timeout int</tt> still available to set both with the same value)</li>
<li><b>Enhancement</b>: Added <tt>--debugssl int</tt>. Default is like <tt>--debugssl 1</tt> (Only print out errors).</li>
<li><b>Enhancement</b>: Added several <a href="../#polls">polls</a> to know where I shall focus improvements.</li>
<li><b>Usability</b>: Added env_proxy call in <tt>sub xoauth2()</tt>
to read proxy settings from environment variable <tt>http_proxy</tt>
without using <tt>PERL_LWP_ENV_PROXY=1</tt></li>
<li><b>Usability</b>: Wrote <a href="../TUTORIAL_Unix.html">TUTORIAL_Unix</a>.</li>
<li><b>Usability</b>: Check f1 folder exists when specified by <tt>--f1f2</tt> and warns when it doesn't</li>
<li><b>Usability</b>: Added <tt>--automap --justfolders --dry</tt> in <tt>imapsync_example.sh</tt> and <tt>imapsync_example.bat</tt></li>
<li><b>Bug fix</b>: Added require Encode::Byte to solve "The locale codeset (cp1252) isn't one that perl can decode" on Win32.</li>
<li><b>Refactoring</b>: Removed <tt>--allow3xx</tt> option.</li>
<li><b>Refactoring</b>: Continue to move to one global $sync-> in order to reduce number of parameters in routines.</li>
</ul> </ul>
<ul>
<li><b>1.670</b> Folders <b>mapping made easy</b> with <b>--automap</b></li> <ul>
<li><b>1.678</b> <b>Improved website!</b> (I hope...)</li>
<li><b>Enhancement</b>: Added <b><tt>--sslargs1</tt></b> and <b><tt>--sslargs2</tt></b> to pass any ssl parameter for host1 or host2 connection.
Example: <tt>--sslargs1 SSL_verify_mode=1 --sslargs1 SSL_version=SSLv3</tt></li>
<li><b>Enhancement</b>: Added <tt>--timeout1 int</tt> and <tt>--timeout2 int</tt> in seconds (<tt>--timeout int</tt> still available to set both with the same value)</li>
<li><b>Enhancement</b>: Added <tt>--debugssl int</tt>. Default is like <tt>--debugssl 1</tt> (Only print out errors).</li>
<li><b>Enhancement</b>: Added several <a href="../#polls">polls</a> to know where I shall focus improvements.</li>
<li><b>Usability</b>: Added env_proxy call in <tt>sub xoauth2()</tt>
to read proxy settings from environment variable <tt>http_proxy</tt>
without using <tt>PERL_LWP_ENV_PROXY=1</tt></li>
<li><b>Usability</b>: Wrote <a href="../TUTORIAL_Unix.html">TUTORIAL_Unix</a>.</li>
<li><b>Usability</b>: Check f1 folder exists when specified by <tt>--f1f2</tt> and warns when it doesn't</li>
<li><b>Usability</b>: Added <tt>--automap --justfolders --dry</tt> in <tt>imapsync_example.sh</tt> and <tt>imapsync_example.bat</tt></li>
<li><b>Bug fix</b>: Added require Encode::Byte to solve "The locale codeset (cp1252) isn't one that perl can decode" on Win32.</li>
<li><b>Refactoring</b>: Removed <tt>--allow3xx</tt> option.</li>
<li><b>Refactoring</b>: Continue to move to one global $sync-&gt; in order to reduce number of parameters in routines.</li>
</ul>
<ul>
<li><b>1.670</b> Folders <b>mapping made easy</b> with <b>--automap</b></li>
<li><b>Enhancement</b>: Added option <b><tt>--automap</tt></b> that guesses folders mapping, <li><b>Enhancement</b>: Added option <b><tt>--automap</tt></b> that guesses folders mapping,
for folders like "Sent", "Junk", "Drafts", "All", "Archive", "Flagged". for folders like "Sent", "Junk", "Drafts", "All", "Archive", "Flagged".
<ul>
<li>IMAP Special-Use folders described in <a href="https://tools.ietf.org/html/rfc6154">rfc6154</a> <ul>
<li>IMAP Special-Use folders described in <a href="https://tools.ietf.org/html/rfc6154">rfc6154</a>
are supported and also well known names for Exchange and common clients. </li> are supported and also well known names for Exchange and common clients. </li>
<li>Automap is turned off by default, <li>Automap is turned off by default,
to try it a safe method is to use <tt>--automap --justautomap</tt>, it will exit early</li> to try it a safe method is to use <tt>--automap --justautomap</tt>, it will exit early</li>
</ul> </ul>
</li> </li>
<li><b>Enhancement</b>: Added <b><tt>--f1f2 str1=str2</tt></b> : Force folder str1 to be synced to str2. <li><b>Enhancement</b>: Added <b><tt>--f1f2 str1=str2</tt></b> : Force folder str1 to be synced to str2.
<ul>
<ul>
<li>Option <tt>--f1f2</tt> overrides any <tt>--automap</tt> mapping and any <tt>--regextrans2</tt> transformation. </li> <li>Option <tt>--f1f2</tt> overrides any <tt>--automap</tt> mapping and any <tt>--regextrans2</tt> transformation. </li>
<li>Example <tt>--f1f2 Spam=Junk</tt> to map Spam folder to Junk.</li> <li>Example <tt>--f1f2 Spam=Junk</tt> to map Spam folder to Junk.</li>
</ul> </ul>
</li> </li>
<li><b>Enhancement</b>: Added <b><tt>--justautomap</tt></b> to exit after seeing what will happen with <li><b>Enhancement</b>: Added <b><tt>--justautomap</tt></b> to exit after seeing what will happen with
--automap and --f1f2 options.</li> --automap and --f1f2 options.</li>
<li><b>Enhancement</b>: Added <a href="https://tools.ietf.org/html/rfc2087">IMAP4 QUOTA </a> values (RFC 2087) <li><b>Enhancement</b>: Added <a href="https://tools.ietf.org/html/rfc2087">IMAP4 QUOTA </a> values (RFC 2087)
when they are available. A warning goes up when it's time to find space. when they are available. A warning goes up when it's time to find space.
</li> </li>
<li><b>Enhancement</b>: Added <a href="http://tools.ietf.org/html/rfc2971.html">IMAP4 ID extension</a>. <li><b>Enhancement</b>: Added <a href="http://tools.ietf.org/html/rfc2971.html">IMAP4 ID extension</a>.
<ul>
<ul>
<li>ID feature is on by default if supported by the IMAP servers, <li>ID feature is on by default if supported by the IMAP servers,
use <b><tt>--noid</tt></b> to turn it off.</li> use <b><tt>--noid</tt></b> to turn it off.</li>
<li>ID Infos returned by the imap servers are shown.</li> <li>ID Infos returned by the imap servers are shown.</li>
@ -122,281 +138,272 @@ without using <tt>PERL_LWP_ENV_PROXY=1</tt></li>
</li> </li>
<li><b>Usability</b>: Added folders counting in outputs.</li> <li><b>Usability</b>: Added folders counting in outputs.</li>
<li><b>Usability</b>: Better output in the login part</li> <li><b>Usability</b>: Better output in the login part</li>
<li><b>Usability</b>: Guess prefixes and separators instead of forcing the user to find them.</li> <li><b>Usability</b>: Guess prefixes and separators instead of forcing the user to find them.</li>
<li><b>Usability</b>: Output, added <tt>Host1:</tt> or <tt>Host2:</tt> at the beginning of lines.</li> <li><b>Usability</b>: Output, added <tt>Host1:</tt> or <tt>Host2:</tt> at the beginning of lines.</li>
<li><b>Bug fix</b>: SSL_VERIFY_NONE in --ssl and --tls modes</li> <li><b>Bug fix</b>: SSL_VERIFY_NONE in --ssl and --tls modes</li>
<li><b>Bug fix</b>: Fixed xoauth2 calls. Now XOAUTH2 Works on Windows <tt>--authmech1 XOAUTH2</tt> <li><b>Bug fix</b>: Fixed xoauth2 calls. Now XOAUTH2 Works on Windows <tt>--authmech1 XOAUTH2</tt>
with openssl installed. with openssl installed.
See <a href="http://imapsync.lamiral.info/FAQ.d/FAQ.XOAUTH2.txt">FAQ.d/FAQ.XOAUTH2.txt</a>.</li> See <a href="http://imapsync.lamiral.info/FAQ.d/FAQ.XOAUTH2.txt">FAQ.d/FAQ.XOAUTH2.txt</a>.</li>
<li><b>Bug fix</b>: Fixed IO::Socket::SSL constants issue with latest releases</li> <li><b>Bug fix</b>: Fixed IO::Socket::SSL constants issue with latest releases</li>
<li><b>Bug fix</b>: Changed "Host1: checking all wanted folders exist" not efficient algorithm in order <li><b>Bug fix</b>: Changed "Host1: checking all wanted folders exist" not efficient algorithm in order
to allow efficiently a 2.4 million folders account. Yes, some accounts have this.</li> to allow efficiently a 2.4 million folders account. Yes, some accounts have this.</li>
<li><b>Refactoring</b>: Started to use global $sync-> in order to reduce number of parameters in routines.</li> <li><b>Refactoring</b>: Started to use global $sync-&gt; in order to reduce number of parameters in routines.</li>
<li><b>Refactoring</b>: Some perlcritic fixes.</li> <li><b>Refactoring</b>: Some perlcritic fixes.</li>
</ul> </ul>
<ul> <ul>
<li><b>1.644</b> Mac OS X standalone binary provided!</li> <li><b>1.644</b> Mac OS X standalone binary provided!</li>
<li><b>Enhancement</b>: Mac OS X standalone binary called <tt>imapsync_bin_Darwin</tt></li> <li><b>Enhancement</b>: Mac OS X standalone binary called <tt>imapsync_bin_Darwin</tt></li>
<li><b>Enhancement</b>: Added option <tt>--subfolder2 SUB</tt> Move whole host1 folders hierarchy under folder SUB.</li> <li><b>Enhancement</b>: Added option <tt>--subfolder2 SUB</tt> Move whole host1 folders hierarchy under folder SUB.</li>
<li><b>Enhancement</b>: Added <tt>--fetch_hash_set "1:*"</tt> to permit Mail2World success. <li><b>Enhancement</b>: Added <tt>--fetch_hash_set "1:*"</tt> to permit Mail2World success.
Need a patched Mail::IMAPClient 3.35 in <tt>sub fetch_hash()</tt></li> Need a patched Mail::IMAPClient 3.35 in <tt>sub fetch_hash()</tt></li>
<li><b>Usability</b>: No folders sizes if --justfolders, unless really wanted.</li> <li><b>Usability</b>: No folders sizes if --justfolders, unless really wanted.</li>
<li><b>Usability</b>: No warning about messages when <tt>--dry --justfolders</tt> are used together.</li> <li><b>Usability</b>: No warning about messages when <tt>--dry --justfolders</tt> are used together.</li>
<li><b>Bug fix</b>: Added NOOP in --dry mode during fake APPEND in order to avoid timeouts</li> <li><b>Bug fix</b>: Added NOOP in --dry mode during fake APPEND in order to avoid timeouts</li>
</ul> </ul>
<ul> <ul>
<li><b>1.636</b></li> <li><b>1.636</b></li>
<li><b>Enhancement</b>: Added errors dump listing at the end, before last folder sizes or the statistics. Turned on by default. Use <tt>--noerrorsdump</tt> to avoid it.</li> <li><b>Enhancement</b>: Added errors dump listing at the end, before last folder sizes or the statistics. Turned on by default. Use <tt>--noerrorsdump</tt> to avoid it.</li>
<li><b>Enhancement</b>: Added <tt>--maxlinelengthcmd</tt> that will be called upon when a line over <tt>--maxlinelength</tt> value is detected. </li> <li><b>Enhancement</b>: Added <tt>--maxlinelengthcmd</tt> that will be called upon when a line over <tt>--maxlinelength</tt> value is detected. </li>
<li><b>Enhancement</b>: Exchange maxlinelength issue fixed with <tt>--maxlinelengthcmd 'reformime -r7'</tt> on Linux. <li><b>Enhancement</b>: Exchange maxlinelength issue fixed with <tt>--maxlinelengthcmd 'reformime -r7'</tt> on Linux.
Install maildrop package to get reformime command</li> Install maildrop package to get reformime command</li>
<li><b>Enhancement</b>: Added <tt>--testslive</tt>. Running <tt>imapsync --testslive</tt> performs a live test on real accounts (I own).</li> <li><b>Enhancement</b>: Added <tt>--testslive</tt>. Running <tt>imapsync --testslive</tt> performs a live test on real accounts (I own).</li>
<li><b>Enhancement</b>: Added <tt>--pipemess</tt> in order to pass all message to an external filter tool like <tt>reformime -r7</tt>.</li> <li><b>Enhancement</b>: Added <tt>--pipemess</tt> in order to pass all message to an external filter tool like <tt>reformime -r7</tt>.</li>
<li><b>Enhancement</b>: Added xoauth2 support, available on Unix with underlying openssl. Thanks to Joaquin Lopez.</li> <li><b>Enhancement</b>: Added xoauth2 support, available on Unix with underlying openssl. Thanks to Joaquin Lopez.</li>
<li><b>Enhancement</b>: Added <tt>--skipmess regex</tt> to skip messages matching a regex. <li><b>Enhancement</b>: Added <tt>--skipmess regex</tt> to skip messages matching a regex.
Example <tt>--skipmess 'm/[\x80-ff]/'</tt> to slip messages with non-7bit characters ( ie a byte somewhere begins with 1 )</li> Example <tt>--skipmess 'm/[\x80-ff]/'</tt> to slip messages with non-7bit characters ( ie a byte somewhere begins with 1 )</li>
<li><b>Usability</b>: Better output of folders excluded by --exclude and folders included by --include</li> <li><b>Usability</b>: Better output of folders excluded by --exclude and folders included by --include</li>
<li><b>Usability</b>: Added inline help in many places. What you can do with switches to change imapsync behaviour, contextually. Learn imapsync the easy way.</li> <li><b>Usability</b>: Added inline help in many places. What you can do with switches to change imapsync behaviour, contextually. Learn imapsync the easy way.</li>
<li><b>Bug fix</b>: <tt>imapsync --tests</tt> should work under any circumstance now, any Unix, Windows, exe or bin or script. 561 non-regression tests</li> <li><b>Bug fix</b>: <tt>imapsync --tests</tt> should work under any circumstance now, any Unix, Windows, exe or bin or script. 561 non-regression tests</li>
<li><b>Bug fix</b>: Options <tt>--folderfirst</tt> and <tt>--folderlast</tt> generated an error when their value folder does not exist. Existence is checked.</li> <li><b>Bug fix</b>: Options <tt>--folderfirst</tt> and <tt>--folderlast</tt> generated an error when their value folder does not exist. Existence is checked.</li>
<li><b>Bug fix</b>: Option <tt>--disarmreadreceipts</tt> used to change Disposition-Notification-To in the body when not available in the header. <li><b>Bug fix</b>: Option <tt>--disarmreadreceipts</tt> used to change Disposition-Notification-To in the body when not available in the header.
Now never changes the body in all cases.</li> Now never changes the body in all cases.</li>
<li><b>Bug fix</b>: Change default useheader values. Now it is really like <tt>--useheader "Message-Id" --useheader "Received"</tt>. <li><b>Bug fix</b>: Change default useheader values. Now it is really like <tt>--useheader "Message-Id" --useheader "Received"</tt>.
HMailServer replies two lines with <tt>--useheader "Message-Id" --useheader "Message-ID"</tt> in older imapsync releases. HMailServer replies two lines with <tt>--useheader "Message-Id" --useheader "Message-ID"</tt> in older imapsync releases.
</li> </li>
<li><b>Bug fix</b>: in <tt>imap_utf7_decode()</tt> + character must not be escaped. Was a bug with Cyrillic characters</li> <li><b>Bug fix</b>: in <tt>imap_utf7_decode()</tt> + character must not be escaped. Was a bug with Cyrillic characters</li>
<li><b>Refactoring</b>: Started to split the <a href="../FAQ">FAQ</a> file in several parts in <a href="../FAQ.d/">FAQ.d/*</a></li> <li><b>Refactoring</b>: Started to split the <a href="../FAQ">FAQ</a> file in several parts in <a href="../FAQ.d/">FAQ.d/*</a></li>
<li><b>Refactoring</b>: Split the <a href="../INSTALL">INSTALL</a> file in several parts in <a href="../INSTALL.d/">INSTALL.d/*</a></li> <li><b>Refactoring</b>: Split the <a href="../INSTALL">INSTALL</a> file in several parts in <a href="../INSTALL.d/">INSTALL.d/*</a></li>
</ul> </ul>
<ul> <ul>
<li><b>1.607</b> Folders shown also in utf8.</li> <li><b>1.607</b> Folders shown also in utf8.</li>
<li><b>Caveat to upgrade on Unix!</b>: New <b>Unicode::String</b> Perl module dependency, for utf8 output. See the <a href="../INSTALL">INSTALL</a> file.</li> <li><b>Caveat to upgrade on Unix!</b>: New <b>Unicode::String</b> Perl module dependency, for utf8 output. See the <a href="../INSTALL">INSTALL</a> file.</li>
<li><b>Enhancement</b>: Added --skipemptyfolders to skip syncing empty host1 folders. They are not created on host2.</li> <li><b>Enhancement</b>: Added --skipemptyfolders to skip syncing empty host1 folders. They are not created on host2.</li>
<li><b>Enhancement</b>: Windows exe now uses IO::SSL 2.002 instead of 1.98 (is it really an enhancement?).</li> <li><b>Enhancement</b>: Windows exe now uses IO::SSL 2.002 instead of 1.98 (is it really an enhancement?).</li>
<li><b>Usability</b>: Remove /x from regexes applied with --include and --exclude. Blanks no longer have to be explicit with \ or [ ].</li> <li><b>Usability</b>: Remove /x from regexes applied with --include and --exclude. Blanks no longer have to be explicit with \ or [ ].</li>
<li><b>Usability</b>: Added utf8 output for folder names, protocol native utf7imap special characters are not user friendly readable</li> <li><b>Usability</b>: Added utf8 output for folder names, protocol native utf7imap special characters are not user friendly readable</li>
<li><b>Usability</b>: Moved foldersizes output after folders lists output.</li> <li><b>Usability</b>: Moved foldersizes output after folders lists output.</li>
<li><b>Usability</b>: Added total size transferred after each message copied.</li> <li><b>Usability</b>: Added total size transferred after each message copied.</li>
<li><b>Usability</b>: After ETA, added number of total to be synced, as a denominator dddd after each message copied, like nnn/dddd <li><b>Usability</b>: After ETA, added number of total to be synced, as a denominator dddd after each message copied, like nnn/dddd
where nnn is the number of messages copied. Before there was only nnn without /dddd.</li> where nnn is the number of messages copied. Before there was only nnn without /dddd.</li>
<li><b>Bug fix</b>: Cache fix on Windows. File paths with brackets [] are special, they have to be escaped with glob. <li><b>Bug fix</b>: Cache fix on Windows. File paths with brackets [] are special, they have to be escaped with glob.
For example, [Gmail] must be written [[]Gmail[]].</li> For example, [Gmail] must be written [[]Gmail[]].</li>
<li><b>Bug fix</b>: Added several checks if IsUnconnected. Goal avoid imap commands while disconnected. <li><b>Bug fix</b>: Added several checks if IsUnconnected. Goal avoid imap commands while disconnected.
Reconnexion would be better anyway.</li> Reconnexion would be better anyway.</li>
</ul> </ul>
<ul> <ul>
<li><b>1.597</b> Small things</li> <li><b>1.597</b> Small things</li>
<li><b>Enhancement</b>: Added --nomixfolders to avoid merging folders that are considered different on host1 but the same on destination host2 <li><b>Enhancement</b>: Added --nomixfolders to avoid merging folders that are considered different on host1 but the same on destination host2
because of case sensitivities and insensitivities.</li> because of case sensitivities and insensitivities.</li>
<li><b>Bug fix</b>: Fixed "imapsync doesn't see created folders in the listing of folder sizes at the end". (second time this bug shows up)</li> <li><b>Bug fix</b>: Fixed "imapsync doesn't see created folders in the listing of folder sizes at the end". (second time this bug shows up)</li>
</ul> </ul>
<ul> <ul>
<li><b>1.592</b> Logging by default! (an internal feature now)</li> <li><b>1.592</b> Logging by default! (an internal feature now)</li>
<li><b>Caveat to upgrade</b>: New <b>IO::Tee</b> Perl module dependency, for logging. See the <a href="../INSTALL">INSTALL</a> file.</li> <li><b>Caveat to upgrade</b>: New <b>IO::Tee</b> Perl module dependency, for logging. See the <a href="../INSTALL">INSTALL</a> file.</li>
<li><b>Windows upgrade</b>: Win32 binary is now distributed in a zip file with two batches scripts ready to use it.</li> <li><b>Windows upgrade</b>: Win32 binary is now distributed in a zip file with two batches scripts ready to use it.</li>
<li><b>Enhancement</b>: Added logging by default in subdirectory <b>./LOG_imapsync/</b></li> <li><b>Enhancement</b>: Added logging by default in subdirectory <b>./LOG_imapsync/</b></li>
<li><b>Enhancement</b>: <b>Added option --log turned on by default</b>. Use --nolog to disable logging.</li> <li><b>Enhancement</b>: <b>Added option --log turned on by default</b>. Use --nolog to disable logging.</li>
<li><b>Enhancement</b>: Added option --logfile. Default is like ./LOG_imapsync/YYYY_MM_DD_HH_MM_SS_user2.txt <li><b>Enhancement</b>: Added option --logfile. Default is like ./LOG_imapsync/YYYY_MM_DD_HH_MM_SS_user2.txt
where YYYY_MM_DD_HH_MM_SS is the launching date and time like 2014_05_20_23_45_10</li> where YYYY_MM_DD_HH_MM_SS is the launching date and time like 2014_05_20_23_45_10</li>
<li><b>Enhancement</b>: Added option <b>--disarmreadreceipts</b> to fix resending read receipts on host2. A must with Exchange as host2.</li> <li><b>Enhancement</b>: Added option <b>--disarmreadreceipts</b> to fix resending read receipts on host2. A must with Exchange as host2.</li>
<li><b>Enhancement</b>: Added FTGate support (no EXAMINE imap command used anymore).</li> <li><b>Enhancement</b>: Added FTGate support (no EXAMINE imap command used anymore).</li>
<li><b>Usability</b>: Updated the code to easily switch on --noreleasecheck by default but allowing --releasecheck (some users want this feature).</li> <li><b>Usability</b>: Updated the code to easily switch on --noreleasecheck by default but allowing --releasecheck (some users want this feature).</li>
<li><b>Usability</b>: Warn syncing messges will not be simulated when --dry mode is on and folder on host2 does not exist yet.</li> <li><b>Usability</b>: Warn syncing messges will not be simulated when --dry mode is on and folder on host2 does not exist yet.</li>
<li><b>Bug fix</b>: Make TLS works with last IO::Socket::SSL default value (Added SSL_verify_mode => 'SSL_VERIFY_NONE') in --tls mode.</li> <li><b>Bug fix</b>: Make TLS works with last IO::Socket::SSL default value (Added SSL_verify_mode =&gt; 'SSL_VERIFY_NONE') in --tls mode.</li>
<li><b>Bug fix</b>: Fixed bug when creating folders on host2 with --sep2=\\ (Lotus Notes).</li> <li><b>Bug fix</b>: Fixed bug when creating folders on host2 with --sep2=\\ (Lotus Notes).</li>
<li><b>Bug fix</b>: Try to get folder size when a folder on host2 has the same name but with a different case <li><b>Bug fix</b>: Try to get folder size when a folder on host2 has the same name but with a different case
like OLD_MAIL -> old_mail. This avoids "does not exist" output.</li> like OLD_MAIL -&gt; old_mail. This avoids "does not exist" output.</li>
</ul> </ul>
<ul> <ul>
<li><b>1.584</b></li> <li><b>1.584</b></li>
<li><b>Enhancement</b>: Added --minmaxlinelength to select messages with long lines only. <li><b>Enhancement</b>: Added --minmaxlinelength to select messages with long lines only.
It helps to diagnostic Echange error on messages with lines longer than 9000 characters</li> It helps to diagnostic Echange error on messages with lines longer than 9000 characters</li>
<li><b>Enhancement</b>: Added --debugmaxlinelength</li> <li><b>Enhancement</b>: Added --debugmaxlinelength</li>
<li><b>Bug fix</b>: --ssl1 --tls2 was buggy because of default SSL_VERIFY_PEER. <li><b>Bug fix</b>: --ssl1 --tls2 was buggy because of default SSL_VERIFY_PEER.
"Can not go to tls encryption on [localhost]:Unable to start TLS: Cannot determine peer hostname for verification..."</li> "Can not go to tls encryption on [localhost]:Unable to start TLS: Cannot determine peer hostname for verification..."</li>
<li><b>Bug fix</b>: Check if going to tls is ok, exit otherwise with explicit error message. <li><b>Bug fix</b>: Check if going to tls is ok, exit otherwise with explicit error message.
Thanks to Dennis Schridde for reporting this ugly bug that deserves this <a href="http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-2014">CVE-2014-2014</a>.</li> Thanks to Dennis Schridde for reporting this ugly bug that deserves this <a href="http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-2014">CVE-2014-2014</a>.</li>
<li><b>Debug</b>: Print separator given by NAMESPACE even when --sep1 oe --sep2 is used.</li> <li><b>Debug</b>: Print separator given by NAMESPACE even when --sep1 oe --sep2 is used.</li>
<li><b>Debug</b>: Prints prefix given by NAMESPACE even when --prefix1 or --prefix2 is used. <li><b>Debug</b>: Prints prefix given by NAMESPACE even when --prefix1 or --prefix2 is used.
It is a preparation for advising not to use --prefix unless suggested.</li> It is a preparation for advising not to use --prefix unless suggested.</li>
</ul> </ul>
<p><b>Good changes</b> made before, listed because <b>they can help</b>: <p><b>Good changes</b> made before, listed because <b>they can help</b>:
</p> </p>
<ul> <ul>
<li><b>Enhancement</b>: Added <b>--skipcrossduplicates</b> to avoid copying messages that are already copied in another folder, good <b>from Gmail to X</b>.</li> <li><b>Enhancement</b>: Added <b>--skipcrossduplicates</b> to avoid copying messages that are already copied in another folder, good <b>from Gmail to X</b>.</li>
<li><b>Enhancement</b>: Added --debugcrossduplicates to print which messages (UIDs) are skipped with --skipcrossduplicates (and in what other folders they are).</li> <li><b>Enhancement</b>: Added --debugcrossduplicates to print which messages (UIDs) are skipped with --skipcrossduplicates (and in what other folders they are).</li>
<li><b>Enhancement</b>: Added --folderfirst string: sync this folder first. --folderfirst "Work" --folderfirst "Friends"</li> <li><b>Enhancement</b>: Added --folderfirst string: sync this folder first. --folderfirst "Work" --folderfirst "Friends"</li>
<li><b>Enhancement</b>: Added --folderlast string: sync this folder last. --folderlast "[Gmail]/All Mail" etc.</li> <li><b>Enhancement</b>: Added --folderlast string: sync this folder last. --folderlast "[Gmail]/All Mail" etc.</li>
<li><b>Enhancement</b>: Added <b>--maxmessagespersecond</b> to limit messages tranfer rate and fix <b>Office365 throttle limitation</b> (use --maxmessagespersecond 4).</li> <li><b>Enhancement</b>: Added <b>--maxmessagespersecond</b> to limit messages tranfer rate and fix <b>Office365 throttle limitation</b> (use --maxmessagespersecond 4).</li>
<li><b>Enhancement</b>: Added --maxbytespersecond to limit byte transfer rate.</li> <li><b>Enhancement</b>: Added --maxbytespersecond to limit byte transfer rate.</li>
<li><b>Enhancement</b>: Added --debugmemory option that prints memory consumption after each message is copied.</li> <li><b>Enhancement</b>: Added --debugmemory option that prints memory consumption after each message is copied.</li>
<li><b>Enhancement</b>: Added --authmech EXTERNAL.</li> <li><b>Enhancement</b>: Added --authmech EXTERNAL.</li>
<li><b>Enhancement</b>: Adapted behavior for allowing --maxdate --mindate with --noabletosearch. <li><b>Enhancement</b>: Adapted behavior for allowing --maxdate --mindate with --noabletosearch.
Use internat date instead of Date: header.</li> Use internat date instead of Date: header.</li>
<li><b>Enhancement</b>: QQMail IMAP4Server success (with --noabletosearch option) </li> <li><b>Enhancement</b>: QQMail IMAP4Server success (with --noabletosearch option) </li>
<li><b>Usability</b>: Apply same treatment to --delete2duplicates as --delete2. <li><b>Usability</b>: Apply same treatment to --delete2duplicates as --delete2.
If --uidexpunge2 can be done, do it, else do --expunge2 (unless --nouidexpunge2 or --noexpunge2).</li> If --uidexpunge2 can be done, do it, else do --expunge2 (unless --nouidexpunge2 or --noexpunge2).</li>
<li><b>Usability</b>: Added --timeout in the --help output. Default timeout is 120 seconds now <li><b>Usability</b>: Added --timeout in the --help output. Default timeout is 120 seconds now
(was nothing by imapsync, 600 with underlying modules).</li> (was nothing by imapsync, 600 with underlying modules).</li>
<li><b>Enhancement/Bug fix</b>: Added --ssl1_SSL_version and --ssl2_SSL_version to force the SSL_version <li><b>Enhancement/Bug fix</b>: Added --ssl1_SSL_version and --ssl2_SSL_version to force the SSL_version
in case the default auto-negociation does not work. Example: <b>--ssl1 --ssl1_SSL_version SSLv3</b></li> in case the default auto-negociation does not work. Example: <b>--ssl1 --ssl1_SSL_version SSLv3</b></li>
<li><b>Enhancement</b>: Added option --messageidnodomain to fix Mailenable bug changing the domain part of Message-Id header, and avoid duplicates</li> <li><b>Enhancement</b>: Added option --messageidnodomain to fix Mailenable bug changing the domain part of Message-Id header, and avoid duplicates</li>
<li><b>Enhancement</b>: Added option --syncflagsaftercopy to fix Mailenable bug not getting the flags with the APPEND</li> <li><b>Enhancement</b>: Added option --syncflagsaftercopy to fix Mailenable bug not getting the flags with the APPEND</li>
<li><b>Enhancement</b>: Added option <b>--maxlinelength</b> to skip messages whose max line length is over a number of bytes. <li><b>Enhancement</b>: Added option <b>--maxlinelength</b> to skip messages whose max line length is over a number of bytes.
Exchange 2013 and Office365 need <b>--maxlinelength 1000</b> (which is a RFC2822 must) to avoid disconnections.</li> Exchange 2013 and Office365 need <b>--maxlinelength 1000</b> (which is a RFC2822 must) to avoid disconnections.</li>
<li><b>Usability</b>: Added --fixInboxINBOX, turned on by default, to map automatically Inbox INBOX folder names.</li> <li><b>Usability</b>: Added --fixInboxINBOX, turned on by default, to map automatically Inbox INBOX folder names.</li>
<li><b>Usability</b>: IMAP server removing consecutive spaces on the header part doesn't generate duplicates (MailEnable does that)</li> <li><b>Usability</b>: IMAP server removing consecutive spaces on the header part doesn't generate duplicates (MailEnable does that)</li>
<li><b>Usability</b>: SSL_verify_mode 0 to avoid warning about Man-In-The-Middle.</li> <li><b>Usability</b>: SSL_verify_mode 0 to avoid warning about Man-In-The-Middle.</li>
<li><b>Enhancement</b>: Added XOAUTH authentication. Thanks to Eduardo Bortoluzzi Junior.</li> <li><b>Enhancement</b>: Added XOAUTH authentication. Thanks to Eduardo Bortoluzzi Junior.</li>
<li><b>Enhancement</b>: Added <b>--search1</b> and <b>--search2</b> to allow different searches on each host.</li> <li><b>Enhancement</b>: Added <b>--search1</b> and <b>--search2</b> to allow different searches on each host.</li>
<li><b>Usability</b>: Added --delete1 as an alias for --delete</li> <li><b>Usability</b>: Added --delete1 as an alias for --delete</li>
<li><b>Speed</b>: Option <b>--nocheckmessageexists is activated by default</b> since --checkmessageexists often slow down transfers too much.</li> <li><b>Speed</b>: Option <b>--nocheckmessageexists is activated by default</b> since --checkmessageexists often slow down transfers too much.</li>
<li><b>Usability</b>: Option --foldersizesatend is on if --foldersizes is on. Off if --nofoldersizesatend</li> <li><b>Usability</b>: Option --foldersizesatend is on if --foldersizes is on. Off if --nofoldersizesatend</li>
<li><b>Usability</b>: Added <b>host2 minus host1 statistic</b>: number of messages and bytes. <li><b>Usability</b>: Added <b>host2 minus host1 statistic</b>: number of messages and bytes.
One difference at the start and one at the end. One difference at the start and one at the end.
Useful to <b>detect quickly a difference between host2 and host1</b>. Useful to <b>detect quickly a difference between host2 and host1</b>.
Need both --foldersizes and --foldersizesatend options (which are on by default).</li> Need both --foldersizes and --foldersizesatend options (which are on by default).</li>
<li><b>Usability</b>: Added <b>--foldersizesatend</b>. <li><b>Usability</b>: Added <b>--foldersizesatend</b>.
It gets the folders sizes at the end of the whole transfer. It gets the folders sizes at the end of the whole transfer.
Turned on by default (use --nofoldersizesatend to turn it off).</li> Turned on by default (use --nofoldersizesatend to turn it off).</li>
<li><b>Enhancement</b>: Added option <b>--delete2duplicates</b>; <li><b>Enhancement</b>: Added option <b>--delete2duplicates</b>;
it deletes messages in host2 that are duplicates. it deletes messages in host2 that are duplicates.
--delete2duplicates is on when --delete2 is set unless --nodelete2duplicates is set too. --delete2duplicates is on when --delete2 is set unless --nodelete2duplicates is set too.
</li> </li>
<li><b>Enhancement</b>: Added option <b>--pidfilelocking</b>; <li><b>Enhancement</b>: Added option <b>--pidfilelocking</b>;
it aborts imapsync, when just launched, it aborts imapsync, when just launched,
in case another imapsync may be running. in case another imapsync may be running.
Turned off by default</li> Turned off by default</li>
<li><b>Usability</b>: Added option <b>--showpasswords</b>. <li><b>Usability</b>: Added option <b>--showpasswords</b>.
it shows passwords on output instead of "MASKED". it shows passwords on output instead of "MASKED".
Turned off by default. Turned off by default.
Useful to restart a run by reading the log Useful to restart a run by reading the log
or to see what happen with special characters. or to see what happen with special characters.
</li> </li>
<li><b>Bug fix</b>: Added option <b>--fixslash2</b> <li><b>Bug fix</b>: Added option <b>--fixslash2</b>
to avoid the '<b>Invalid mailbox name</b>' error. to avoid the '<b>Invalid mailbox name</b>' error.
It acts when --sep1 is character / and --sep2 is not character / It acts when --sep1 is character / and --sep2 is not character /
and host1 folder name contains --sep2 characters. and host1 folder name contains --sep2 characters.
Turned on by default (--nofixslash2 to unable it).</li> Turned on by default (--nofixslash2 to unable it).</li>
<li><b>Enhancement</b>: Added option <b>--noabletosearch</b> <li><b>Enhancement</b>: Added option <b>--noabletosearch</b>
to allow the listing of messages without the imap "SEARCH ALL" command. to allow the listing of messages without the imap "SEARCH ALL" command.
It's useful for playing with poor imap servers like <b>Softalk 7.6.4</b> It's useful for playing with poor imap servers like <b>Softalk 7.6.4</b>
(8.6 is fine with SEARCH ALL).</li> (8.6 is fine with SEARCH ALL).</li>
<li><b>Enhancement</b>: Added <b>--noexpungeaftereach</b> <li><b>Enhancement</b>: Added <b>--noexpungeaftereach</b>
to speedup --delete --expunge from Gmail.</li> to speedup --delete --expunge from Gmail.</li>
<li><b>Enhancement</b>: Added option <b>--nocheckmessageexists</b> to <b>speed up</b> with <b>Tobit imap server</b> as host1.</li> <li><b>Enhancement</b>: Added option <b>--nocheckmessageexists</b> to <b>speed up</b> with <b>Tobit imap server</b> as host1.</li>
<li><b>Enhancement</b>: Added option --exitwhenover option <b>to avoid locking</b> <li><b>Enhancement</b>: Added option --exitwhenover option <b>to avoid locking</b>
when transfers exceed maximum limit. when transfers exceed maximum limit.
See for example <a href="https://support.google.com/a/answer/1071518?hl=en">this Gmail constraint</a> See for example <a href="https://support.google.com/a/answer/1071518?hl=en">this Gmail constraint</a>
<ul> <ul>
<li>imapsync ... --exitwhenover 2500000000 # 2.5GB if <b>host1 is Gmail</b></li> <li>imapsync ... --exitwhenover 2500000000 # 2.5GB if <b>host1 is Gmail</b></li>
<li>imapsync ... --exitwhenover 500000000 # 500MB if <b>host2 is Gmail</b></li> <li>imapsync ... --exitwhenover 500000000 # 500MB if <b>host2 is Gmail</b></li>
</ul> </ul>
</li> </li>
<li><b>Usability</b>: Default headers used to identify a message are like --useheader "Message-Id" --useheader "Received" <li><b>Usability</b>: Default headers used to identify a message are like --useheader "Message-Id" --useheader "Received"
(<b>Exchange compatibility</b> bu default).</li> (<b>Exchange compatibility</b> bu default).</li>
<li><b>Enhancement</b>: Added option --addheader to fix the issue <li><b>Enhancement</b>: Added option --addheader to fix the issue
"ignored (no header so we ignore this message)" (on <b>Sent</b> folder usually). "ignored (no header so we ignore this message)" (on <b>Sent</b> folder usually).
Thanks to Ameir Abdeldayem</li> Thanks to Ameir Abdeldayem</li>
<li><b>Enhancement</b>: Added --nofilterflags to check any STORE flags <li><b>Enhancement</b>: Added --nofilterflags to check any STORE flags
by ignoring PERMANENTFLAGS (Exchange tests)</li> by ignoring PERMANENTFLAGS (Exchange tests)</li>
</ul> </ul>
<hr/> <hr />
<div> <div>
<a href="http://validator.w3.org/check?uri=referer"> <a href="http://validator.w3.org/check?uri=referer">
<img <img width="88" height="31" alt="Valid XHTML 1.0 Strict" src="../S/images/valid-xhtml10" />
src="../W/images/valid-xhtml10" </a>
alt="Valid XHTML 1.0 Strict" height="31" width="88" />
</a> <a href="http://jigsaw.w3.org/css-validator/check/referer">
<img alt="CSS Valide !" src="../S/images/vcss-blue" style="border:0;width:88px;height:31px" />
<a href="http://jigsaw.w3.org/css-validator/check/referer"> </a>
<img style="border:0;width:88px;height:31px"
src="../W/images/vcss-blue" <a href="http://www.anybrowser.org/campaign/">
alt="CSS Valide !" /> <img alt="Viewable With Any Browser" src="../S/images/ab_jlh.png" style="border:0;width:88px;height:31px" />
</a> </a>
</div>
<a href="http://www.anybrowser.org/campaign/">
<img style="border:0;width:88px;height:31px" <hr />
src="../W/images/ab_jlh.png" <p>
alt="Viewable With Any Browser" /> <!--#config timefmt="%D" -->
</a> <!--#config timefmt="%A %B %d, %Y" -->
</div> <b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
($Id: news.shtml,v 1.15 2016/03/17 19:59:00 gilles Exp gilles $)<br />
<hr/> <a href="#TOP">Top of the page</a>
<p> </p>
<!--#config timefmt="%D" --> </body></html>
<!--#config timefmt="%A %B %d, %Y" -->
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
($Id: news.shtml,v 1.10 2016/01/22 01:04:15 gilles Exp gilles $)<br/>
<a href="#TOP">Top of the page</a>
</p>
</body>
</html>

View File

@ -63,7 +63,7 @@ border:0px;
<!--#config timefmt="%D" --> <!--#config timefmt="%D" -->
<!--#config timefmt="%A %B %d, %Y" --> <!--#config timefmt="%A %B %d, %Y" -->
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b> <b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
($Id: paypal.shtml,v 1.8 2015/09/19 08:21:46 gilles Exp gilles $) ($Id: paypal.shtml,v 1.9 2016/03/03 15:57:41 gilles Exp gilles $)
</p> </p>
</body> </body>

View File

@ -14,7 +14,7 @@
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/> <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/>
<meta http-equiv="content-style-type" content="text/css"/> <meta http-equiv="content-style-type" content="text/css"/>
<meta http-equiv="expires" content="0"/> <meta http-equiv="expires" content="0"/>
<link rel="icon" type="image/png" href="W/images/logo_imapsync_s.png" /> <link rel="icon" type="image/png" href="S/images/logo_imapsync_s.png" />
<style type="text/css"> <style type="text/css">
body { body {
color: black; color: black;
@ -44,12 +44,12 @@ to view details of this transaction (if you have a Paypal account).
<p>You will find the latest <b>imapsync.exe binary</b> release <!--#exec cmd="cat ../VERSION_EXE" --><br/> <p>You will find the latest <b>imapsync.exe binary</b> release <!--#exec cmd="cat ../VERSION_EXE" --><br/>
and the latest <b>imapsync source code</b> release <!--#exec cmd="cat ../VERSION" --> at this and the latest <b>imapsync source code</b> release <!--#exec cmd="cat ../VERSION" --> at this
<a href="../dist/<!--#exec cmd="cat ../dist/path_last.txt" -->/"><b>download page</b></a>. <a href="../dist/"><b>download page</b></a>.
</p> </p>
<p> <p>
Next steps are the imapsync <a href="../#install" >installation</a> Next steps are the imapsync <a href="../#install" >installation</a>
and then your first runs following the <a href="../#doc" >tutorial</</a>. and then your first runs following the <a href="../#doc" >tutorial</a>.
</p> </p>
<p>You will receive an invoice soon, in a couple of weeks at the worst. <p>You will receive an invoice soon, in a couple of weeks at the worst.
@ -96,7 +96,7 @@ gilles.lamiral@laposte.net</p>
<!--#config timefmt="%D" --> <!--#config timefmt="%D" -->
<!--#config timefmt="%A %B %d, %Y" --> <!--#config timefmt="%A %B %d, %Y" -->
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b><br/> <b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b><br/>
($Id: paypal_return.shtml,v 1.19 2016/01/21 02:37:53 gilles Exp gilles $) ($Id: paypal_return.shtml,v 1.23 2016/03/03 22:36:57 gilles Exp gilles $)
</p> </p>

View File

@ -15,8 +15,8 @@
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/> <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/>
<meta http-equiv="content-style-type" content="text/css"/> <meta http-equiv="content-style-type" content="text/css"/>
<meta http-equiv="expires" content="0"/> <meta http-equiv="expires" content="0"/>
<link rel="icon" type="image/png" href="../W/images/logo_imapsync_s.png" /> <link rel="icon" type="image/png" href="../S/images/logo_imapsync_s.png" />
<link href="../W/style.css" rel="stylesheet" type="text/css"/> <link href="../S/style.css" rel="stylesheet" type="text/css"/>
</head> </head>
@ -37,19 +37,19 @@
<div> <div>
<a href="http://validator.w3.org/check?uri=referer"> <a href="http://validator.w3.org/check?uri=referer">
<img <img
src="../W/images/valid-xhtml10" src="../S/images/valid-xhtml10"
alt="Valid XHTML 1.0 Strict" height="31" width="88" /> alt="Valid XHTML 1.0 Strict" height="31" width="88" />
</a> </a>
<a href="http://jigsaw.w3.org/css-validator/check/referer"> <a href="http://jigsaw.w3.org/css-validator/check/referer">
<img style="border:0;width:88px;height:31px" <img style="border:0;width:88px;height:31px"
src="../W/images/vcss-blue" src="../S/images/vcss-blue"
alt="CSS Valide !" /> alt="CSS Valide !" />
</a> </a>
<a href="http://www.anybrowser.org/campaign/"> <a href="http://www.anybrowser.org/campaign/">
<img style="border:0;width:88px;height:31px" <img style="border:0;width:88px;height:31px"
src="../W/images/ab_jlh.png" src="../S/images/ab_jlh.png"
alt="Viewable With Any Browser" /> alt="Viewable With Any Browser" />
</a> </a>
</div> </div>
@ -59,7 +59,7 @@ alt="Viewable With Any Browser" />
<!--#config timefmt="%D" --> <!--#config timefmt="%D" -->
<!--#config timefmt="%A %B %d, %Y" --> <!--#config timefmt="%A %B %d, %Y" -->
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b> <b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
($Id: template.shtml,v 1.3 2015/11/05 17:38:18 gilles Exp gilles $)<br/> ($Id: template.shtml,v 1.4 2016/03/03 22:36:57 gilles Exp gilles $)<br/>
<a href="#TOP">Top of the page</a> <a href="#TOP">Top of the page</a>
</p> </p>

34
TODO
View File

@ -1,9 +1,35 @@
#!/bin/cat #!/bin/cat
# $Id: TODO,v 1.149 2016/01/21 15:21:17 gilles Exp gilles $ # $Id: TODO,v 1.155 2016/03/13 13:01:26 gilles Exp gilles $
This documentation is also at http://imapsync.lamiral.info/#doc
TODO file for imapsync TODO file for imapsync
---------------------- ----------------------
Try to act as --tls if CAPABILITY allows it and if there is no --notls.
Fallback without --tls if --tls fails.
WANTED 2016_03_11
Add a FAQ about Authentication failures and quoting.
WANTED 2016_02_10
Add stats about "Messages found crossduplicate on host1"
WANTED 2016_01_28 Stephen Sookdeo
Able to send email without attachment (in case size is the problem) and maybe note in main body that attachment was removed...
See http://unix.stackexchange.com/questions/174707/remove-delete-attachments-from-email-server-imap
http://unix.stackexchange.com/a/174726/89270
imapsync ... --pipemess 'remove_attachments --sizemin 10MB --addnote "Attachment was removed" '
WANTED 2016_03_06
Add a real test to authenticate with a ssl certificate.
WANTED 2016_03_08
Check if --ssl1 and --tls1 are used together and warn abort and abort in that case.
Same for --ssl2 and --tls2
Start a wiki for imapsync. Start a wiki for imapsync.
Write a Windows tutorial, TUTORIAL_Windows.html. Write a Windows tutorial, TUTORIAL_Windows.html.
@ -26,6 +52,10 @@ Add "df -i" with usecache and abort if the number of messages
to transfer will exhaust empty inodes used by the cache. to transfer will exhaust empty inodes used by the cache.
Looks like module Filesys::DfPortable will help for Unix and Win32. Looks like module Filesys::DfPortable will help for Unix and Win32.
==== Similar skip/error messages ====
WANTED 2016_01_28 Stephen Sookdeo
List all emails that gives errors so you know exactly which. List with detailed info.
Then ability to perform action on these specific emails like delete or ignore per email.
WANTED 2015_06_02 Karen F Bath. WANTED 2015_06_02 Karen F Bath.
Add skipped messages in the final dump. Add skipped messages in the final dump.
@ -57,7 +87,7 @@ Folder [Inbox] already exists,"Error"
WANTED Add a well described problem for each problem detected WANTED Add a well described problem for each problem detected
and counted in error counter statistics. and counted in error counter statistics.
==== End Similar skip/error messages ====
WANTED 2015_05_18 WANTED 2015_05_18

View File

@ -1 +1 @@
1.678 1.684

View File

@ -1 +1 @@
1.678 1.684

View File

@ -370,3 +370,13 @@
1453217776 END 1.677 : mardi 19 janvier 2016, 16:36:16 (UTC+0100) 1453217776 END 1.677 : mardi 19 janvier 2016, 16:36:16 (UTC+0100)
1453407595 BEGIN 1.678 : jeudi 21 janvier 2016, 21:19:55 (UTC+0100) 1453407595 BEGIN 1.678 : jeudi 21 janvier 2016, 21:19:55 (UTC+0100)
1453408277 END 1.678 : jeudi 21 janvier 2016, 21:31:17 (UTC+0100) 1453408277 END 1.678 : jeudi 21 janvier 2016, 21:31:17 (UTC+0100)
1457139168 BEGIN 1.682 : samedi 5 mars 2016, 01:52:48 (UTC+0100)
1457139341 END 1.682 : samedi 5 mars 2016, 01:55:41 (UTC+0100)
1457318569 BEGIN 1.683 : lundi 7 mars 2016, 03:42:49 (UTC+0100)
1457318753 END 1.683 : lundi 7 mars 2016, 03:45:53 (UTC+0100)
1457903122 BEGIN 1.683 : dimanche 13 mars 2016, 22:05:22 (UTC+0100)
1457903935 END 1.683 : dimanche 13 mars 2016, 22:18:55 (UTC+0100)
1458205761 BEGIN 1.684 : jeudi 17 mars 2016, 10:09:21 (UTC+0100)
1458206536 END 1.684 : jeudi 17 mars 2016, 10:22:16 (UTC+0100)
1458216703 BEGIN 1.684 : jeudi 17 mars 2016, 13:11:43 (UTC+0100)
1458217520 END 1.684 : jeudi 17 mars 2016, 13:25:20 (UTC+0100)

Binary file not shown.

View File

@ -5,6 +5,20 @@ Changes from 2.99_01 to 3.16 made by Mark Overmeer
Changes from 0.09 to 2.99_01 made by David Kernen Changes from 0.09 to 2.99_01 made by David Kernen
- Potential compatibility issues from 3.17+ highlighted with '*' - Potential compatibility issues from 3.17+ highlighted with '*'
version 3.38: Tue Feb 9 02:48:21 UTC 2016
- rt.cpan.org#107592: redact credentials via debug if !Showcredentials
[Gilles Lamiral]
- rt.cpan.org#110273: failure to quote password values
(regression introduced in 3.36 via fix for rt.cpan.org#100601)
[Gilles Lamiral]
- rt.cpan.org#107593: allow getquota("")
- *Quote() now returns qq("") for defined but empty values
- rt.cpan.org#107011: fix folders_hash() docs and usage in is_parent()
[Gilles Lamiral]
- rt.cpan.org#106500: split UID EXPUNGE with a large sequence set
- added t/quota.t and t/lib/MyTest.pm for testing
- updated copyright for 2016
version 3.37: Fri Aug 14 11:04:53 EDT 2015 version 3.37: Fri Aug 14 11:04:53 EDT 2015
- regex fix in rt.cpan.org#96575 required Perl 5.10 - regex fix in rt.cpan.org#96575 required Perl 5.10
updated regex to be backwards compatible with Perl 5.8 updated regex to be backwards compatible with Perl 5.8

View File

@ -31,8 +31,10 @@ t/basic.t
t/body_string.t t/body_string.t
t/bodystructure.t t/bodystructure.t
t/fetch_hash.t t/fetch_hash.t
t/lib/MyTest.pm
t/messageset.t t/messageset.t
t/pod.t t/pod.t
t/quota.t
t/simple.t t/simple.t
t/thread.t t/thread.t
test_template.txt test_template.txt

View File

@ -52,5 +52,5 @@
"resources" : { "resources" : {
"homepage" : "http://sourceforge.net/projects/mail-imapclient/" "homepage" : "http://sourceforge.net/projects/mail-imapclient/"
}, },
"version" : "3.37" "version" : "3.38"
} }

View File

@ -33,4 +33,4 @@ requires:
perl: 5.008 perl: 5.008
resources: resources:
homepage: http://sourceforge.net/projects/mail-imapclient/ homepage: http://sourceforge.net/projects/mail-imapclient/
version: 3.37 version: 3.38

View File

@ -84,7 +84,7 @@ COPYRIGHT AND LICENSE
===================== =====================
Copyright (C) 1999-2003 The Kernen Group, Inc. Copyright (C) 1999-2003 The Kernen Group, Inc.
Copyright (C) 2007-2009 Mark Overmeer Copyright (C) 2007-2009 Mark Overmeer
Copyright (C) 2010-2015 Phil Pearl (Lobbes) Copyright (C) 2010-2016 Phil Pearl (Lobbes)
All rights reserved. All rights reserved.
This library is free software; you can redistribute it and/or modify This library is free software; you can redistribute it and/or modify

View File

@ -7,7 +7,7 @@ use strict;
use warnings; use warnings;
package Mail::IMAPClient; package Mail::IMAPClient;
our $VERSION = '3.37'; our $VERSION = '3.38';
use Mail::IMAPClient::MessageSet; use Mail::IMAPClient::MessageSet;
@ -571,13 +571,14 @@ sub login {
# if user is passed as a literal: # if user is passed as a literal:
# 1. send passwd as a literal # 1. send passwd as a literal
# 2. empty literal passwd are sent as an blank line ($CRLF) # 2. empty literal passwd are sent as an blank line ($CRLF)
$user = ( $user eq "" ) ? qq("") : $self->Quote($user); $user = $self->Quote($user);
if ( $user =~ /^{/ ) { if ( $user =~ /^{/ ) {
my $nopasswd = ( $passwd eq "" ) ? 1 : 0;
$passwd = $self->Quote( $passwd, 1 ); # force literal $passwd = $self->Quote( $passwd, 1 ); # force literal
$passwd .= $CRLF if ( $passwd eq "{0}$CRLF" ); # blank line $passwd .= $CRLF if ($nopasswd); # blank line
} }
else { else {
$passwd = qq("") if ( $passwd eq "" ); $passwd = $self->Quote($passwd);
} }
$self->_imap_command("LOGIN $user $passwd") $self->_imap_command("LOGIN $user $passwd")
@ -598,7 +599,7 @@ sub noop {
sub proxyauth { sub proxyauth {
my ( $self, $user ) = @_; my ( $self, $user ) = @_;
$user = ( $user eq "" ) ? qq("") : $self->Quote($user); $user = $self->Quote($user);
$self->_imap_command("PROXYAUTH $user") ? $self->Results : undef; $self->_imap_command("PROXYAUTH $user") ? $self->Results : undef;
} }
@ -764,7 +765,7 @@ sub subscribed {
sub deleteacl { sub deleteacl {
my ( $self, $target, $user ) = @_; my ( $self, $target, $user ) = @_;
$target = $self->Quote($target); $target = $self->Quote($target);
$user = ( $user eq "" ) ? qq("") : $self->Quote($user); $user = $self->Quote($user);
$self->_imap_command(qq(DELETEACL $target $user)) $self->_imap_command(qq(DELETEACL $target $user))
or return undef; or return undef;
@ -778,8 +779,8 @@ sub setacl {
$target = $self->Quote($target); $target = $self->Quote($target);
$user ||= $self->User; $user ||= $self->User;
$user = ( $user eq "" ) ? qq("") : $self->Quote($user); $user = $self->Quote($user);
$acl = ( $acl eq "" ) ? qq("") : $self->Quote($acl); $acl = $self->Quote($acl);
$self->_imap_command(qq(SETACL $target $user $acl)) $self->_imap_command(qq(SETACL $target $user $acl))
or return undef; or return undef;
@ -823,7 +824,7 @@ sub listrights {
$target = $self->Quote($target); $target = $self->Quote($target);
$user ||= $self->User; $user ||= $self->User;
$user = ( $user eq "" ) ? qq("") : $self->Quote($user); $user = $self->Quote($user);
$self->_imap_command(qq(LISTRIGHTS $target $user)) $self->_imap_command(qq(LISTRIGHTS $target $user))
or return undef; or return undef;
@ -1312,7 +1313,6 @@ sub _imap_command_do {
# for APPEND (append_string) only log first line of command # for APPEND (append_string) only log first line of command
my $logstr = ( $string =~ /^($tag\s+APPEND\s+.*?)$CR?$LF/ ) ? $1 : $string; my $logstr = ( $string =~ /^($tag\s+APPEND\s+.*?)$CR?$LF/ ) ? $1 : $string;
# BUG? use $self->_next_index($tag) ? or 0 ??? # BUG? use $self->_next_index($tag) ? or 0 ???
# $self->_record($tag, [$self->_next_index($tag), "INPUT", $logstr] ); # $self->_record($tag, [$self->_next_index($tag), "INPUT", $logstr] );
$self->_record( $count, [ 0, "INPUT", $logstr ] ); $self->_record( $count, [ 0, "INPUT", $logstr ] );
@ -1466,6 +1466,44 @@ sub _record {
push @{ $self->{History}{$count} }, $array; push @{ $self->{History}{$count} }, $array;
} }
# try to avoid exposing auth info via debug unless Showcredentials is true
sub _redact_line {
my ( $self, $string ) = @_;
$self->Showcredentials and return undef;
my ( $tag, $cmd ) = ( $self->Count, undef );
my $retext = "[Redact: Count=$tag Showcredentials=OFF]";
my $show = $retext;
# tagged command?
if ( $string =~ s/^($tag\s+(\S+)\s+)// ) {
( $show, $cmd ) = ( $1, $2 );
# login <username|literal> <password|literal>
if ( $cmd =~ /login/i ) {
# username as literal
if ( $string =~ /^{/ ) {
$show .= $string;
}
# username (possibly quoted) string, then literal? password
elsif ( $string =~ s/^((?:"(?>(?:(?>[^"\\]+)|\\.)*)"|\S+)\s*)// ) {
$show .= $1;
$show .= ( $string =~ /^{/ ) ? $string : $retext;
}
}
elsif ( $cmd =~ /^auth/i ) {
$show .= $string;
}
else {
return undef; # show it all
}
}
return $show;
}
# _send_line handles literal data and supports the Prewritemethod # _send_line handles literal data and supports the Prewritemethod
sub _send_line { sub _send_line {
my ( $self, $string, $suppress ) = @_; my ( $self, $string, $suppress ) = @_;
@ -1476,7 +1514,13 @@ sub _send_line {
# handle case where string contains a literal # handle case where string contains a literal
if ( $string =~ s/^([^$LF\{]*\{\d+\}$CRLF)(?=.)//o ) { if ( $string =~ s/^([^$LF\{]*\{\d+\}$CRLF)(?=.)//o ) {
my $first = $1; my $first = $1;
$self->_debug("Sending literal: $first\tthen: $string"); if ( $self->Debug ) {
my $dat =
( $self->IsConnected and !$self->IsAuthenticated )
? $self->_redact_line($string)
: undef;
$self->_debug( "Sending literal: $first\tthen: ", $dat || $string );
}
$self->_send_line($first) or return undef; $self->_send_line($first) or return undef;
# look for "$tag NO" or "+ ..." # look for "$tag NO" or "+ ..."
@ -1489,15 +1533,14 @@ sub _send_line {
$string = $prew->( $self, $string ); $string = $prew->( $self, $string );
} }
my $debug ; if ( $self->Debug ) {
if ( !$self->Showcredentials && $string =~ /^(\d+\s+LOGIN\s+).*/ ) { my $dat =
$debug = "$1 XXXXXXXX XXXXXXXX_Showcredentials_is_off" ; ( $self->IsConnected and !$self->IsAuthenticated )
$debug = $string ; ? $self->_redact_line($string)
}else{ : undef;
$debug = $string ; $self->_debug( "Sending: ", $dat || $string );
} }
$self->_debug("Sending: $debug");
unless ( $self->IsConnected ) { unless ( $self->IsConnected ) {
$self->LastError("NO not connected"); $self->LastError("NO not connected");
return undef; return undef;
@ -2207,7 +2250,9 @@ sub fetch_hash {
$l = shift @$output; $l = shift @$output;
next ATTR; next ATTR;
} }
elsif ( $l=~ m/\G(?:"((?>(?:(?>[^"\\]+)|\\.)*))"|([^()\s]+))\s*/gc ) { elsif (
$l =~ m/\G(?:"((?>(?:(?>[^"\\]+)|\\.)*))"|([^()\s]+))\s*/gc )
{
$value = defined $1 ? $1 : $2; $value = defined $1 ? $1 : $2;
$entry->{$key} = $value; $entry->{$key} = $value;
next ATTR; next ATTR;
@ -2215,7 +2260,9 @@ sub fetch_hash {
elsif ( $l =~ m/\G\(/gc ) { elsif ( $l =~ m/\G\(/gc ) {
my $depth = 1; my $depth = 1;
$value = ""; $value = "";
while ( $l =~ m/\G("((?>(?:(?>[^"\\]+)|\\.)*))"\s*|[()]|[^()"]+)/gc ) { while ( $l =~
m/\G("((?>(?:(?>[^"\\]+)|\\.)*))"\s*|[()]|[^()"]+)/gc )
{
my $stuff = $1; my $stuff = $1;
if ( $stuff eq "(" ) { if ( $stuff eq "(" ) {
$depth++; $depth++;
@ -2326,6 +2373,10 @@ sub uidexpunge {
my ( $self, $msgspec ) = ( shift, shift ); my ( $self, $msgspec ) = ( shift, shift );
return undef unless $self->has_capability("UIDPLUS"); return undef unless $self->has_capability("UIDPLUS");
unless ( $self->Uid ) {
$self->LastError("Uid must be enabled for uidexpunge");
return undef;
}
my $msg = my $msg =
UNIVERSAL::isa( $msgspec, 'Mail::IMAPClient::MessageSet' ) UNIVERSAL::isa( $msgspec, 'Mail::IMAPClient::MessageSet' )
@ -2334,23 +2385,35 @@ sub uidexpunge {
$msg->cat(@_) if @_; $msg->cat(@_) if @_;
if ( $self->Uid ) { my ( @data, $cmd );
$self->_imap_command("UID EXPUNGE $msg") my ($seq_set) = $self->_split_sequence( $msg, "UID EXPUNGE" );
for ( my $x = 0 ; $x <= $#$seq_set ; $x++ ) {
my $seq = $seq_set->[$x];
$self->_imap_uid_command( "EXPUNGE" => $seq )
or return undef; or return undef;
} my $res = $self->Results;
else {
$self->LastError("Uid must be enabled for uidexpunge"); # only keep last command and last response (* OK ...)
return undef; $cmd = shift(@$res);
pop(@$res) if ( $x != $#{$seq_set} );
push( @data, @$res );
} }
return wantarray ? $self->History : $self->Results; if ( $cmd and !wantarray ) {
$cmd =~ s/^(\d+\s+.*?EXPUNGE\s+)\S+(\s*)/$1$msg$2/;
unshift( @data, $cmd );
}
#wantarray ? $self->History : $self->Results;
return wantarray ? @data : \@data;
} }
sub rename { sub rename {
my ( $self, $from, $to ) = @_; my ( $self, $from, $to ) = @_;
$from = ( $from eq "" ) ? qq("") : $self->Quote($from); $from = $self->Quote($from);
$to = ( $to eq "" ) ? qq("") : $self->Quote($to); $to = $self->Quote($to);
$self->_imap_command(qq(RENAME $from $to)) ? $self : undef; $self->_imap_command(qq(RENAME $from $to)) ? $self : undef;
} }
@ -2842,13 +2905,13 @@ sub is_parent {
my $rec = $self->_list_or_lsub_response_parse($resp); my $rec = $self->_list_or_lsub_response_parse($resp);
next unless defined $rec->{attrs}; next unless defined $rec->{attrs};
$self->_debug("unexpected attrs data: @$list\n") if $attrs; $self->_debug("unexpected attrs data: @$list\n") if $attrs;
$attrs = $rec->{attrs}->[0]; $attrs = $rec->{attrs};
} }
if ($attrs) { if ($attrs) {
return undef if $attrs =~ /\\NoInferiors/i; return undef if grep { /\A\\NoInferiors\Z/i } @$attrs;
return 1 if $attrs =~ /\\HasChildren/i; return 1 if grep { /\A\\HasChildren\Z/i } @$attrs;
return 0 if $attrs =~ /\\HasNoChildren/i; return 0 if grep { /\A\\HasNoChildren\Z/i } @$attrs;
} }
else { else {
$self->_debug( join( "\n\t", "no attrs for '$folder' in:", @$list ) ); $self->_debug( join( "\n\t", "no attrs for '$folder' in:", @$list ) );
@ -3327,21 +3390,21 @@ sub size {
sub getquotaroot { sub getquotaroot {
my ( $self, $what ) = @_; my ( $self, $what ) = @_;
my $who = $what ? $self->Quote($what) : "INBOX"; my $who = defined $what ? $self->Quote($what) : "INBOX";
return $self->_imap_command("GETQUOTAROOT $who") ? $self->Results : undef; return $self->_imap_command("GETQUOTAROOT $who") ? $self->Results : undef;
} }
# BUG? using user/$User here and INBOX in quota/quota_usage # BUG? using user/$User here and INBOX in quota/quota_usage
sub getquota { sub getquota {
my ( $self, $what ) = @_; my ( $self, $what ) = @_;
my $who = $what ? $self->Quote($what) : "user/" . $self->User; my $who = defined $what ? $self->Quote($what) : "user/" . $self->User;
return $self->_imap_command("GETQUOTA $who") ? $self->Results : undef; return $self->_imap_command("GETQUOTA $who") ? $self->Results : undef;
} }
# usage: $self->setquota($quotaroot, storage => 512, ...) # usage: $self->setquota($quotaroot, storage => 512, ...)
sub setquota(@) { sub setquota(@) {
my ( $self, $what ) = ( shift, shift ); my ( $self, $what ) = ( shift, shift );
my $who = $what ? $self->Quote($what) : "user/" . $self->User; my $who = defined $what ? $self->Quote($what) : "user/" . $self->User;
my @limits; my @limits;
while (@_) { while (@_) {
my ( $k, $v ) = ( $self->Quote( uc( shift @_ ) ), shift @_ ); my ( $k, $v ) = ( $self->Quote( uc( shift @_ ) ), shift @_ );
@ -3380,7 +3443,7 @@ sub Quote($;$) {
if ( $force or $name =~ /["\\[:^ascii:][:cntrl:]]/s ) { if ( $force or $name =~ /["\\[:^ascii:][:cntrl:]]/s ) {
return "{" . length($name) . "}" . $CRLF . $name; return "{" . length($name) . "}" . $CRLF . $name;
} }
elsif ( $name =~ /[(){}\s%*\[\]]/s ) { elsif ( $name =~ /[(){}\s%*\[\]]/s or $name eq "" ) {
return qq("$name"); return qq("$name");
} }
else { else {

View File

@ -1196,17 +1196,18 @@ and looks like the following:
{ {
name => 'Mail/Box/Name', name => 'Mail/Box/Name',
attrs => '\Marked \HasNoChildren', attrs => [ '\Marked', '\HasNoChildren' ],
delim => '/', delim => '/',
} }
IMAP servers implementing RFC6154 return attributes to be used to IMAP servers implementing RFC6154 return attributes to be used to
identify special-use mailboxes (folders). identify special-use mailboxes (folders).
my $sattr_re = /\b\\(?:All|Archive|Drafts|Flagged|Junk|Sent|Trash)\b/; my $sattr_re = /\A\\(?:All|Archive|Drafts|Flagged|Junk|Sent|Trash)\Z/;
foreach my $fhash (@fhashes) { foreach my $fhash (@fhashes) {
next unless ( $fhash->{attrs} =~ $sattr_re ); next unless defined $fhash->{name};
print("special: $fhash->{name} : $fhash->{attrs}\n"); my @special = grep { $sattr_re } @{ $fhash->{attrs} };
print("special: $fhash->{name} : @special\n") if (@special);
} }
Version note: method added in Mail::IMAPClient 3.34 Version note: method added in Mail::IMAPClient 3.34
@ -3968,7 +3969,7 @@ http://rt.cpan.org/Public/Dist/Display.html?Name=Mail-IMAPClient
Copyright (C) 1999-2003 The Kernen Group, Inc. Copyright (C) 1999-2003 The Kernen Group, Inc.
Copyright (C) 2007-2009 Mark Overmeer Copyright (C) 2007-2009 Mark Overmeer
Copyright (C) 2010-2015 Phil Pearl (Lobbes) Copyright (C) 2010-2016 Phil Pearl (Lobbes)
All rights reserved. All rights reserved.
This library is free software; you can redistribute it and/or modify This library is free software; you can redistribute it and/or modify

View File

@ -6,52 +6,31 @@ use IO::File qw();
use Test::More; use Test::More;
use File::Temp qw(tempfile); use File::Temp qw(tempfile);
my $debug = $ARGV[0]; use lib "t/lib";
use MyTest;
my %parms; my $params;
my $range = 0;
my $uidplus = 0;
my $fast = 1;
BEGIN { BEGIN {
open TST, 'test.txt' eval { $params = MyTest->new; };
or plan skip_all => 'test parameters not provided in test.txt'; $@
? plan skip_all => $@
while ( my $l = <TST> ) {
chomp $l;
my ( $p, $v ) = split /\=/, $l, 2;
s/^\s+//, s/\s+$// for $p, $v;
$parms{$p} = $v if $v;
}
close TST;
my @missing;
foreach my $p (qw/server user passed/) {
push( @missing, $p ) unless defined $parms{$p};
}
@missing
? plan skip_all => "missing value for: @missing"
: plan tests => 104; : plan tests => 104;
} }
BEGIN { use_ok('Mail::IMAPClient') or exit; } BEGIN { use_ok('Mail::IMAPClient') or exit; }
my $debug = $ARGV[0];
my $range = 0;
my $uidplus = 0;
my %new_args = ( my %new_args = (
Server => delete $parms{server},
Port => delete $parms{port},
User => delete $parms{user},
Password => delete $parms{passed},
Authmechanism => delete $parms{authmech},
Clear => 0, Clear => 0,
Fast_IO => $fast,
Uid => $uidplus, Uid => $uidplus,
Debug => $debug, Debug => $debug,
); );
# allow other options to be placed in test.txt # allow other options to be placed in test.txt
%new_args = ( %new_args, %parms ); %new_args = ( %new_args, %${params} );
my $imap = Mail::IMAPClient->new( my $imap = Mail::IMAPClient->new(
%new_args, %new_args,
@ -113,7 +92,7 @@ ok( $imap->select('inbox'), "select inbox" );
[ sort keys %{ $fh[0] } ], [ sort keys %{ $fh[0] } ],
[ sort @fh_keys ], [ sort @fh_keys ],
"folders eq folders_hash" "folders eq folders_hash"
) );
} }
# test append_file # test append_file
@ -190,6 +169,17 @@ SKIP: {
ok( $imap->delete_message($uid), "delete_message $uid" ); ok( $imap->delete_message($uid), "delete_message $uid" );
ok( $imap->uidexpunge($uid), "uidexpunge $uid" ); ok( $imap->uidexpunge($uid), "uidexpunge $uid" );
=begin comment
my $ol = $imap->Maxcommandlength();
$imap->Maxcommandlength(64);
my $exp = $imap->uidexpunge($uid . "," . join(",", map{$_*2} 2..40) );
$imap->Maxcommandlength($ol);
is( $exp->[0], $imap->Count . " UID EXPUNGE $uid", "UID EXPUNGE $uid" );
is( grep( /^\* $uid EXPUNGE/, @$exp ), !undef, "found EXPUNGE response" );
=cut
# multiple args joined internally in append() # multiple args joined internally in append()
$uid = $imap->append( $target, $testmsg, "Some extra text too" ); $uid = $imap->append( $target, $testmsg, "Some extra text too" );
ok( defined $uid, "append test message to $target with date (uid=$uid)" ); ok( defined $uid, "append test message to $target with date (uid=$uid)" );

View File

@ -0,0 +1,35 @@
package MyTest;
use strict;
use warnings;
my $infile = "test.txt";
sub new {
my ($class) = @_;
my %self;
open( my $fh, "<", $infile )
or die("test parameters not provided in $infile\n");
my %argmap = ( passed => "Password", authmech => "Authmechanism" );
while ( my $l = <$fh> ) {
chomp $l;
next if $l =~ /^\s*#/;
my ( $p, $v ) = split( /=/, $l, 2 );
s/^\s+//, s/\s+$// for $p, $v;
$p = $argmap{$p} if $argmap{$p};
$self{ ucfirst($p) } = $v if defined $v;
}
close($fh);
my @missing;
foreach my $p (qw/Server User Password/) {
push( @missing, $p ) unless defined $self{$p};
}
die("missing value for: @missing") if (@missing);
return \%self;
}
1;

View File

@ -0,0 +1,45 @@
#!/usr/bin/perl
use strict;
use warnings;
use Test::More;
use lib "t/lib";
use MyTest;
my $params;
BEGIN {
eval { $params = MyTest->new; };
$@
? plan skip_all => $@
: plan tests => 7;
}
BEGIN { use_ok('Mail::IMAPClient') or exit; }
my %args = ( Debug => $ARGV[0], %$params );
my $imap = Mail::IMAPClient->new(%args);
ok( !$@, "successful login" ) or diag( '$@:' . $@ );
# RFC 2087: QUOTA
SKIP: {
my ( $res, $root );
skip "QUOTA not supported", 1 unless $imap->has_capability("QUOTA");
foreach my $root ( "", "INBOX", "/blah" ) {
$res = $imap->getquotaroot($root);
ok( $res, "getquotaroot($root)" ) or diag( '$@:' . $@ );
#my $tag = $imap->Count;
#foreach my $r ( @{$res||[]} ) {
# next if $r =~ /^$tag\s+/;
# chomp($r);
# warn("gqr r=$r\n");
#}
}
ok( $imap->getquota("User quota"), "getquota" ) or diag( '$@:' . $@ );
my $dne = "ThisDoesNotExist";
ok( !$imap->getquota($dne), "getquota($dne)" ) or diag( '$@:' . $@ );
}

View File

@ -124,7 +124,7 @@
.\" ======================================================================== .\" ========================================================================
.\" .\"
.IX Title "IMAPSYNC 1" .IX Title "IMAPSYNC 1"
.TH IMAPSYNC 1 "2016-01-21" "perl v5.14.2" "User Contributed Perl Documentation" .TH IMAPSYNC 1 "2016-03-17" "perl v5.14.2" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents. .\" way too many mistakes in technical documents.
.if n .ad l .if n .ad l
@ -135,7 +135,7 @@ Synchronises mailboxes between two imap servers.
Good at IMAP migration. More than 66 different IMAP server softwares Good at IMAP migration. More than 66 different IMAP server softwares
supported with success, few failures. supported with success, few failures.
.PP .PP
$Revision: 1.678 $ $Revision: 1.684 $
.SH "SYNOPSIS" .SH "SYNOPSIS"
.IX Header "SYNOPSIS" .IX Header "SYNOPSIS"
.Vb 5 .Vb 5
@ -220,6 +220,12 @@ reproduced here:
\& \-\-tls1 : Use a TLS connection on host1. \& \-\-tls1 : Use a TLS connection on host1.
\& \-\-tls2 : Use a TLS connection on host2. \& \-\-tls2 : Use a TLS connection on host2.
\& \-\-debugssl int : SSL debug mode from 0 to 4. \& \-\-debugssl int : SSL debug mode from 0 to 4.
\& \-\-sslargs1 str : Pass any ssl parameter for host1 ssl or tls connection. Example:
\& \-\-sslargs1 SSL_verify_mode=1 \-\-sslargs1 SSL_version=SSLv3
\& See all possibilities in the new() method of IO::Socket::SSL
\& http://search.cpan.org/perldoc?IO::Socket::SSL#Description_Of_Methods
\& \-\-sslargs2 str : Pass any ssl parameter for host2 ssl or tls connection.
\& See \-\-sslargs1
\& \&
\& \-\-timeout1 int : Connection timeout in seconds for host1. \& \-\-timeout1 int : Connection timeout in seconds for host1.
\& Default is 120 and 0 means no timeout at all. \& Default is 120 and 0 means no timeout at all.
@ -767,4 +773,4 @@ https://web.archive.org/web/20070202005121/http://www.imap.org/products/showall.
.PP .PP
Feedback (good or bad) will often be welcome. Feedback (good or bad) will often be welcome.
.PP .PP
\&\f(CW$Id:\fR imapsync,v 1.678 2016/01/21 19:47:02 gilles Exp gilles $ \&\f(CW$Id:\fR imapsync,v 1.684 2016/03/17 08:35:03 gilles Exp gilles $

View File

@ -1,5 +1,4 @@
RewriteEngine on RewriteEngine on
RewriteRule "^paypal_return.shtml" "/W/paypal_return.shtml" RewriteRule "^paypal_return.shtml" "/S/paypal_return.shtml"
RewriteRule "^paypal_return_support.shtml" "/W/paypal_return_support.shtml"

View File

@ -1,54 +1,54 @@
1143 Etats-Unis_d'Amerique___ 25.84 % 25.84 % 1 1145 Etats-Unis_d'Amerique___ 25.78 % 25.78 % 1
811 Allemagne_______________ 18.34 % 44.18 % 2 813 Allemagne_______________ 18.30 % 44.08 % 2
413 Royaume-Uni_____________ 9.34 % 53.52 % 3 418 Royaume-Uni_____________ 9.41 % 53.49 % 3
212 France__________________ 4.79 % 58.31 % 4 213 France__________________ 4.80 % 58.28 % 4
209 Italie__________________ 4.73 % 63.03 % 5 212 Italie__________________ 4.77 % 63.06 % 5
201 Canada__________________ 4.54 % 67.58 % 6 202 Canada__________________ 4.55 % 67.60 % 6
179 Suisse__________________ 4.05 % 71.63 % 7 180 Suisse__________________ 4.05 % 71.66 % 7
154 Pays-Bas________________ 3.48 % 75.11 % 8 156 Pays-Bas________________ 3.51 % 75.17 % 8
151 Australie_______________ 3.41 % 78.52 % 9 151 Australie_______________ 3.40 % 78.57 % 9
90 Autriche________________ 2.03 % 80.56 % 10 90 Autriche________________ 2.03 % 80.59 % 10
80 Belgique________________ 1.81 % 82.36 % 11 80 Belgique________________ 1.80 % 82.40 % 11
76 Espagne_________________ 1.72 % 84.08 % 12 76 Espagne_________________ 1.71 % 84.11 % 12
65 Suede___________________ 1.47 % 85.55 % 13 65 Suede___________________ 1.46 % 85.57 % 13
52 Danemark________________ 1.18 % 86.73 % 14 53 Danemark________________ 1.19 % 86.76 % 14
48 Bresil__________________ 1.09 % 87.81 % 15 48 Bresil__________________ 1.08 % 87.84 % 15
41 Norvege_________________ 0.93 % 88.74 % 16 41 Norvege_________________ 0.92 % 88.77 % 16
31 Finlande________________ 0.70 % 89.44 % 17 31 Finlande________________ 0.70 % 89.46 % 17
29 Pologne_________________ 0.66 % 90.10 % 18 29 Pologne_________________ 0.65 % 90.12 % 18
25 Republique_tcheque______ 0.57 % 90.66 % 19 26 Japon___________________ 0.59 % 90.70 % 19
25 Japon___________________ 0.57 % 91.23 % 20 25 Republique_tcheque______ 0.56 % 91.27 % 20
25 ________________________ 0.57 % 91.79 % 21 25 ________________________ 0.56 % 91.83 % 21
22 Russie__________________ 0.50 % 92.29 % 22 22 Russie__________________ 0.50 % 92.32 % 22
22 Irlande_________________ 0.50 % 92.79 % 23 22 Irlande_________________ 0.50 % 92.82 % 23
21 Nouvelle-Zelande________ 0.47 % 93.26 % 24 21 Nouvelle-Zelande________ 0.47 % 93.29 % 24
18 Hongrie_________________ 0.41 % 93.67 % 25 18 Hongrie_________________ 0.41 % 93.70 % 25
15 Hong-Kong_______________ 0.34 % 94.01 % 26 15 Hong-Kong_______________ 0.34 % 94.03 % 26
15 Afrique_du_Sud__________ 0.34 % 94.35 % 27 15 Afrique_du_Sud__________ 0.34 % 94.37 % 27
14 Portugal________________ 0.32 % 94.66 % 28 14 Portugal________________ 0.32 % 94.69 % 28
13 Slovaquie_______________ 0.29 % 94.96 % 29 13 Slovaquie_______________ 0.29 % 94.98 % 29
13 Malaisie________________ 0.29 % 95.25 % 30 13 Malaisie________________ 0.29 % 95.27 % 30
12 Luxembourg______________ 0.27 % 95.52 % 31 12 Luxembourg______________ 0.27 % 95.54 % 31
12 Inde____________________ 0.27 % 95.79 % 32 12 Inde____________________ 0.27 % 95.81 % 32
12 Grece___________________ 0.27 % 96.07 % 33 12 Grece___________________ 0.27 % 96.08 % 33
12 Argentine_______________ 0.27 % 96.34 % 34 12 Argentine_______________ 0.27 % 96.35 % 34
11 Singapour_______________ 0.25 % 96.59 % 35 11 Singapour_______________ 0.25 % 96.60 % 35
11 Israel__________________ 0.25 % 96.83 % 36 11 Israel__________________ 0.25 % 96.85 % 36
11 Chine___________________ 0.25 % 97.08 % 37 11 Chine___________________ 0.25 % 97.10 % 37
11 Chili___________________ 0.25 % 97.33 % 38 11 Chili___________________ 0.25 % 97.34 % 38
10 Mexique_________________ 0.23 % 97.56 % 39 10 Mexique_________________ 0.23 % 97.57 % 39
9 Roumanie________________ 0.20 % 97.76 % 40 9 Roumanie________________ 0.20 % 97.77 % 40
8 Slovenie________________ 0.18 % 97.94 % 41 8 Slovenie________________ 0.18 % 97.95 % 41
8 Emirats_Arabes_Unis_____ 0.18 % 98.12 % 42 8 Emirats_Arabes_Unis_____ 0.18 % 98.13 % 42
7 Lettonie________________ 0.16 % 98.28 % 43 7 Lettonie________________ 0.16 % 98.29 % 43
5 Thailande_______________ 0.11 % 98.39 % 44 5 Thailande_______________ 0.11 % 98.40 % 44
5 Malte___________________ 0.11 % 98.51 % 45 5 Malte___________________ 0.11 % 98.51 % 45
5 Islande_________________ 0.11 % 98.62 % 46 5 Islande_________________ 0.11 % 98.63 % 46
4 Turquie_________________ 0.09 % 98.71 % 47 4 Turquie_________________ 0.09 % 98.72 % 47
4 Indonesie_______________ 0.09 % 98.80 % 48 4 Indonesie_______________ 0.09 % 98.81 % 48
4 Egypte__________________ 0.09 % 98.89 % 49 4 Egypte__________________ 0.09 % 98.90 % 49
4 Croatie_________________ 0.09 % 98.98 % 50 4 Croatie_________________ 0.09 % 98.99 % 50
4 Bulgarie________________ 0.09 % 99.07 % 51 4 Bulgarie________________ 0.09 % 99.08 % 51
3 Venezuela_______________ 0.07 % 99.14 % 52 3 Venezuela_______________ 0.07 % 99.14 % 52
3 Philippines_____________ 0.07 % 99.21 % 53 3 Philippines_____________ 0.07 % 99.21 % 53
3 Estonie_________________ 0.07 % 99.28 % 54 3 Estonie_________________ 0.07 % 99.28 % 54
@ -79,4 +79,4 @@
1 Colombie________________ 0.02 % 99.95 % 79 1 Colombie________________ 0.02 % 99.95 % 79
1 Bahrein_________________ 0.02 % 99.98 % 80 1 Bahrein_________________ 0.02 % 99.98 % 80
1 Antilles_neerlandaises__ 0.02 % 100.00 % 81 1 Antilles_neerlandaises__ 0.02 % 100.00 % 81
TOTAL = 4423 sales over 81 countries on Wed Jan 20 18:35:17 CET 2016 TOTAL = 4442 sales over 81 countries on Sat Jan 23 10:46:48 CET 2016

View File

@ -1,6 +1,6 @@
#!/usr/bin/perl #!/usr/bin/perl
# $Id: paypal_bilan,v 1.80 2015/11/01 01:13:59 gilles Exp gilles $ # $Id: paypal_bilan,v 1.81 2016/01/23 09:37:19 gilles Exp gilles $
use strict; use strict;
use warnings; use warnings;
@ -13,7 +13,7 @@ use Test::More 'no_plan' ;
die unless (utf8_supported_charset('ISO-8859-1')); die unless (utf8_supported_charset('ISO-8859-1'));
my $rcs = '$Id: paypal_bilan,v 1.80 2015/11/01 01:13:59 gilles Exp gilles $ ' ; my $rcs = '$Id: paypal_bilan,v 1.81 2016/01/23 09:37:19 gilles Exp gilles $ ' ;
$rcs =~ m/,v (\d+\.\d+)/ ; $rcs =~ m/,v (\d+\.\d+)/ ;
my $VERSION = ($1) ? $1: "UNKNOWN" ; my $VERSION = ($1) ? $1: "UNKNOWN" ;
@ -891,6 +891,9 @@ First of all, I'm sorry for the delay in getting back to you.
Last imapsync release is available from the page Last imapsync release is available from the page
http://imapsync.lamiral.info/paypal_return.shtml http://imapsync.lamiral.info/paypal_return.shtml
Help me improving imapsync and its services by voting at
http://imapsync.lamiral.info/#poll
You'll find in the attachment the invoice of imapsync You'll find in the attachment the invoice of imapsync
$F->{object_type} you bought and paid (dd/mm/yyyy $F->{Date}). $F->{object_type} you bought and paid (dd/mm/yyyy $F->{Date}).
The invoice file is named facture_imapsync-${invoice}.pdf The invoice file is named facture_imapsync-${invoice}.pdf

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# $Id: paypal_build_invoices,v 1.101 2016/01/14 15:57:04 gilles Exp gilles $ # $Id: paypal_build_invoices,v 1.103 2016/03/17 20:37:06 gilles Exp gilles $
# usage: sh paypal_build_invoices /g/var/paypal_invoices/???? # usage: sh paypal_build_invoices /g/var/paypal_invoices/????
@ -72,9 +72,11 @@ cp /home/gilles/public_html/AGIL/factures/000/facture_imapsync-000.tex /g/var/pa
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4383 /g/paypal/paypal_2015_10_complet.csv #/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4383 /g/paypal/paypal_2015_10_complet.csv
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4451 /g/paypal/paypal_2015_11_complet.csv #/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4451 /g/paypal/paypal_2015_11_complet.csv
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4506 /g/paypal/paypal_2015_12_complet.csv #/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4506 /g/paypal/paypal_2015_12_complet.csv
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4575 /g/paypal/paypal_2016_01_complet.csv
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4642 /g/paypal/paypal_2016_02_complet.csv
set -x set -x
/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4575 /g/paypal/paypal_2016_01_complet.csv /g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4695 /g/paypal/paypal_2016_03_complet.csv
set +x set +x
@ -142,9 +144,11 @@ set +x
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4383 /g/paypal/paypal_2015_10_complet.csv : /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4383 /g/paypal/paypal_2015_10_complet.csv
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4451 /g/paypal/paypal_2015_11_complet.csv : /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4451 /g/paypal/paypal_2015_11_complet.csv
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4506 /g/paypal/paypal_2015_12_complet.csv : /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4506 /g/paypal/paypal_2015_12_complet.csv
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4575 /g/paypal/paypal_2016_01_complet.csv
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4642 /g/paypal/paypal_2016_02_complet.csv
set -x set -x
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4575 /g/paypal/paypal_2016_01_complet.csv : g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4695 /g/paypal/paypal_2016_03_complet.csv
set +x set +x
# La totale # La totale
@ -154,8 +158,8 @@ set +x
1330 1331 1332 1333 1334 1652 1653 2131 2132 1330 1331 1332 1333 1334 1652 1653 2131 2132
2295 2296 2297 2298 2625 2626 2970 2971 2972 2295 2296 2297 2298 2625 2626 2970 2971 2972
3093 3296 3411 3412 3450 3451 3614 3615 3616 3617 3093 3296 3411 3412 3450 3451 3614 3615 3616 3617
3807 3808 3957 3958 4030 4194 4195 4381 4382 4449 4450 3807 3808 3957 3958 4030 4194 4195 4381 4382 4449 4450
4574' \ 4574 4641' \
/g/paypal/paypal_201?_??_complet.csv /g/paypal/paypal_201?_??_complet.csv
#set -v #set -v
@ -164,15 +168,15 @@ set +x
1330 1331 1332 1333 1334 1652 1653 2131 2132 1330 1331 1332 1333 1334 1652 1653 2131 2132
2295 2296 2297 2298 2625 2626 2970 2971 2972 2295 2296 2297 2298 2625 2626 2970 2971 2972
3093 3296 3411 3412 3450 3451 3614 3615 3616 3617 3093 3296 3411 3412 3450 3451 3614 3615 3616 3617
3807 3808 3957 3958 4030 4194 4195 4381 4382 4449 4450 3807 3808 3957 3958 4030 4194 4195 4381 4382 4449 4450
4574' \ 4574 4641' \
/g/paypal/paypal_201?_??_complet.csv /g/paypal/paypal_201?_??_complet.csv
#set +v #set +v
#echo 2016 : ( from 4574 to ???? ) EUR #echo 2016 : ( from 4574 to ???? ) EUR
#set -v #set -v
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan \ : /g/public_html/imapsync/W/paypal_reply/paypal_bilan \
--first_in 4575 --avoid_numbers '4574 ' \ --first_in 4575 --avoid_numbers '4574 4641' \
/g/paypal/paypal_2016_??_complet.csv /g/paypal/paypal_2016_??_complet.csv
#set +v #set +v

View File

@ -1,6 +1,6 @@
#!/usr/bin/perl #!/usr/bin/perl
# $Id: paypal_build_reply,v 1.26 2014/05/22 10:35:33 gilles Exp gilles $ # $Id: paypal_build_reply,v 1.28 2016/03/03 13:36:18 gilles Exp gilles $
use warnings; use warnings;
use strict; use strict;
@ -23,16 +23,16 @@ my $opt_ret = GetOptions(
"debug!" => \$debug, "debug!" => \$debug,
); );
usage() and exit if ($help or ! $numopt) ; usage( ) and exit if ( $help or ! $numopt ) ;
$msg_id_file = $ARGV[1]; $msg_id_file = $ARGV[1];
$msg_id = firstline($msg_id_file); $msg_id = firstline($msg_id_file);
$release = firstline( '/g/public_html/imapsync/VERSION' ) ; $release = firstline( '/g/public_html/imapsync/VERSION' ) ;
$release_exe = firstline( '/g/public_html/imapsync/VERSION_EXE' ) ; $release_exe = firstline( '/g/public_html/imapsync/VERSION_EXE' ) ;
my $path_last = firstline( '/g/public_html/imapsync/dist/path_last.txt' ) ; #my $path_last = firstline( '/g/public_html/imapsync/dist/path_last.txt' ) ;
$url = "http://ks.lamiral.info/imapsync/dist/$path_last/" ; $url = "http://ks.lamiral.info/imapsync/dist/" ;
$debug and print "Hi!\n" ; $debug and print "Hi!\n" ;
@ -107,7 +107,7 @@ while( my $line = shift @input ) {
my $address = 'gilles.lamiral@laposte.net'; my $address = 'gilles.lamiral@laposte.net';
my $address2 = 'gilles@lamiral.info'; my $address2 = 'gilles@lamiral.info';
my $rcstag = '$Id: paypal_build_reply,v 1.26 2014/05/22 10:35:33 gilles Exp gilles $'; my $rcstag = '$Id: paypal_build_reply,v 1.28 2016/03/03 13:36:18 gilles Exp gilles $';
my $download_info = "You will find the latest imapsync.exe binary (release $release_exe) my $download_info = "You will find the latest imapsync.exe binary (release $release_exe)
and the latest imapsync source code (release $release) at the following link: and the latest imapsync source code (release $release) at the following link:
@ -210,3 +210,7 @@ sub firstline {
$line = ($line) ? $line: "error !EMPTY! [$file]"; $line = ($line) ? $line: "error !EMPTY! [$file]";
return $line; return $line;
} }
sub usage {
print "$0\n" ;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,78 +1,78 @@
Main code has high complexity score (407) at line 1, column 1. Consider refactoring. (Severity: 3) Main code has high complexity score (400) at line 1, column 1. Consider refactoring. (Severity: 3)
"$ssl1_SSL_version" is declared but not used at line 706, column 1. Unused variables clutter code and make it harder to read. (Severity: 3) "$ssl1_SSL_version" is declared but not used at line 712, column 1. Unused variables clutter code and make it harder to read. (Severity: 3)
"$ssl2_SSL_version" is declared but not used at line 706, column 1. Unused variables clutter code and make it harder to read. (Severity: 3) "$ssl2_SSL_version" is declared but not used at line 712, column 1. Unused variables clutter code and make it harder to read. (Severity: 3)
Regular expression without "/x" flag at line 1333, column 33. See page 236 of PBP. (Severity: 3) Regular expression without "/x" flag at line 1341, column 33. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 1342, column 33. See page 236 of PBP. (Severity: 3) Regular expression without "/x" flag at line 1350, column 33. See page 236 of PBP. (Severity: 3)
Code structure is deeply nested at line 1867, column 41. Consider refactoring. (Severity: 3) Code structure is deeply nested at line 1875, column 41. Consider refactoring. (Severity: 3)
Reused variable name in lexical scope: $sync at line 2039, column 2. Invent unique variable names. (Severity: 3) Reused variable name in lexical scope: $sync at line 2040, column 2. Invent unique variable names. (Severity: 3)
Hard tabs used at line 2065, column 22. See page 20 of PBP. (Severity: 3) Hard tabs used at line 2066, column 22. See page 20 of PBP. (Severity: 3)
Reused variable name in lexical scope: $sync at line 2149, column 2. Invent unique variable names. (Severity: 3) Reused variable name in lexical scope: $sync at line 2150, column 2. Invent unique variable names. (Severity: 3)
Regular expression without "/x" flag at line 2198, column 29. See page 236 of PBP. (Severity: 3) Regular expression without "/x" flag at line 2199, column 29. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 2220, column 31. See page 236 of PBP. (Severity: 3) Regular expression without "/x" flag at line 2221, column 31. See page 236 of PBP. (Severity: 3)
Reused variable name in lexical scope: $sync at line 2229, column 2. Invent unique variable names. (Severity: 3) Reused variable name in lexical scope: $sync at line 2230, column 2. Invent unique variable names. (Severity: 3)
Reused variable name in lexical scope: $sync at line 2252, column 2. Invent unique variable names. (Severity: 3) Reused variable name in lexical scope: $sync at line 2253, column 2. Invent unique variable names. (Severity: 3)
Regular expression without "/x" flag at line 2285, column 30. See page 236 of PBP. (Severity: 3) Regular expression without "/x" flag at line 2286, column 30. See page 236 of PBP. (Severity: 3)
Reused variable name in lexical scope: $sync at line 2296, column 53. Invent unique variable names. (Severity: 3) Reused variable name in lexical scope: $sync at line 2297, column 53. Invent unique variable names. (Severity: 3)
Reused variable name in lexical scope: $sync at line 2304, column 2. Invent unique variable names. (Severity: 3) Reused variable name in lexical scope: $sync at line 2305, column 2. Invent unique variable names. (Severity: 3)
Reused variable name in lexical scope: $sync at line 2352, column 2. Invent unique variable names. (Severity: 3) Reused variable name in lexical scope: $sync at line 2353, column 2. Invent unique variable names. (Severity: 3)
Regular expression without "/x" flag at line 2388, column 26. See page 236 of PBP. (Severity: 3) Regular expression without "/x" flag at line 2389, column 26. See page 236 of PBP. (Severity: 3)
Reused variable name in lexical scope: $nb_errors at line 2436, column 2. Invent unique variable names. (Severity: 3) Reused variable name in lexical scope: $nb_errors at line 2437, column 2. Invent unique variable names. (Severity: 3)
Too many arguments at line 2472, column 1. See page 182 of PBP. (Severity: 3) Too many arguments at line 2473, column 1. See page 182 of PBP. (Severity: 3)
Too many arguments at line 2490, column 1. See page 182 of PBP. (Severity: 3) Too many arguments at line 2491, column 1. See page 182 of PBP. (Severity: 3)
Too many arguments at line 2500, column 1. See page 182 of PBP. (Severity: 3) Too many arguments at line 2501, column 1. See page 182 of PBP. (Severity: 3)
Subroutine "modules_VERSION" with high complexity score (26) at line 2618, column 1. Consider refactoring. (Severity: 3) Subroutine "modules_VERSION" with high complexity score (26) at line 2619, column 1. Consider refactoring. (Severity: 3)
Too many arguments at line 2781, column 1. See page 182 of PBP. (Severity: 3) Too many arguments at line 2782, column 1. See page 182 of PBP. (Severity: 3)
Subroutine "authenticate_imap" with high complexity score (21) at line 2850, column 1. Consider refactoring. (Severity: 3) Subroutine "authenticate_imap" with high complexity score (21) at line 2851, column 1. Consider refactoring. (Severity: 3)
Too many arguments at line 2850, column 1. See page 182 of PBP. (Severity: 3) Too many arguments at line 2851, column 1. See page 182 of PBP. (Severity: 3)
Too many arguments at line 2972, column 1. See page 182 of PBP. (Severity: 3) Too many arguments at line 2981, column 1. See page 182 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 3048, column 62. See page 236 of PBP. (Severity: 3) Regular expression without "/x" flag at line 3057, column 62. See page 236 of PBP. (Severity: 3)
Backtick operator used at line 3056, column 19. Use IPC::Open3 instead. (Severity: 3) Backtick operator used at line 3065, column 19. Use IPC::Open3 instead. (Severity: 3)
Return value of eval not tested at line 3194, column 2. You can't depend upon the value of $@/$EVAL_ERROR to tell whether an eval failed. (Severity: 3) Return value of eval not tested at line 3203, column 2. You can't depend upon the value of $@/$EVAL_ERROR to tell whether an eval failed. (Severity: 3)
"die" used instead of "croak" at line 3239, column 2. See page 283 of PBP. (Severity: 3) "die" used instead of "croak" at line 3248, column 2. See page 283 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 3347, column 15. See page 236 of PBP. (Severity: 3) Regular expression without "/x" flag at line 3356, column 15. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 3348, column 15. See page 236 of PBP. (Severity: 3) Regular expression without "/x" flag at line 3357, column 15. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 3349, column 15. See page 236 of PBP. (Severity: 3) Regular expression without "/x" flag at line 3358, column 15. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 3358, column 8. See page 236 of PBP. (Severity: 3) Regular expression without "/x" flag at line 3367, column 8. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 3359, column 8. See page 236 of PBP. (Severity: 3) Regular expression without "/x" flag at line 3368, column 8. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 3360, column 8. See page 236 of PBP. (Severity: 3) Regular expression without "/x" flag at line 3369, column 8. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 3386, column 31. See page 236 of PBP. (Severity: 3) Regular expression without "/x" flag at line 3395, column 31. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 3463, column 25. See page 236 of PBP. (Severity: 3) Regular expression without "/x" flag at line 3477, column 25. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 3466, column 20. See page 236 of PBP. (Severity: 3) Regular expression without "/x" flag at line 3480, column 20. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 3667, column 24. See page 236 of PBP. (Severity: 3) Regular expression without "/x" flag at line 3681, column 24. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 3668, column 19. See page 236 of PBP. (Severity: 3) Regular expression without "/x" flag at line 3682, column 19. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 3672, column 19. See page 236 of PBP. (Severity: 3) Regular expression without "/x" flag at line 3686, column 19. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 3742, column 39. See page 236 of PBP. (Severity: 3) Regular expression without "/x" flag at line 3756, column 39. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 3743, column 39. See page 236 of PBP. (Severity: 3) Regular expression without "/x" flag at line 3757, column 39. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 3744, column 41. See page 236 of PBP. (Severity: 3) Regular expression without "/x" flag at line 3758, column 41. See page 236 of PBP. (Severity: 3)
Hard tabs used at line 3758, column 106. See page 20 of PBP. (Severity: 3) Hard tabs used at line 3772, column 106. See page 20 of PBP. (Severity: 3)
Expression form of "eval" at line 3998, column 13. See page 161 of PBP. (Severity: 5) Expression form of "eval" at line 4012, column 13. See page 161 of PBP. (Severity: 5)
Expression form of "eval" at line 4228, column 13. See page 161 of PBP. (Severity: 5) Expression form of "eval" at line 4242, column 13. See page 161 of PBP. (Severity: 5)
Subroutine "copy_message" with high complexity score (25) at line 4589, column 1. Consider refactoring. (Severity: 3) Subroutine "copy_message" with high complexity score (25) at line 4603, column 1. Consider refactoring. (Severity: 3)
Too many arguments at line 4589, column 1. See page 182 of PBP. (Severity: 3) Too many arguments at line 4603, column 1. See page 182 of PBP. (Severity: 3)
Too many arguments at line 4665, column 1. See page 182 of PBP. (Severity: 3) Too many arguments at line 4679, column 1. See page 182 of PBP. (Severity: 3)
Too many arguments at line 4699, column 1. See page 182 of PBP. (Severity: 3) Too many arguments at line 4713, column 1. See page 182 of PBP. (Severity: 3)
Too many arguments at line 4888, column 1. See page 182 of PBP. (Severity: 3) Too many arguments at line 4902, column 1. See page 182 of PBP. (Severity: 3)
Reused variable name in lexical scope: $total_bytes_transferred at line 4949, column 2. Invent unique variable names. (Severity: 3) Reused variable name in lexical scope: $total_bytes_transferred at line 4963, column 2. Invent unique variable names. (Severity: 3)
Reused variable name in lexical scope: $nb_msg_transferred at line 4949, column 2. Invent unique variable names. (Severity: 3) Reused variable name in lexical scope: $nb_msg_transferred at line 4963, column 2. Invent unique variable names. (Severity: 3)
Reused variable name in lexical scope: $nb_msg_transferred at line 4962, column 9. Invent unique variable names. (Severity: 3) Reused variable name in lexical scope: $nb_msg_transferred at line 4976, column 9. Invent unique variable names. (Severity: 3)
Reused variable name in lexical scope: $maxmessagespersecond at line 4962, column 9. Invent unique variable names. (Severity: 3) Reused variable name in lexical scope: $maxmessagespersecond at line 4976, column 9. Invent unique variable names. (Severity: 3)
Reused variable name in lexical scope: $total_bytes_transferred at line 4983, column 9. Invent unique variable names. (Severity: 3) Reused variable name in lexical scope: $total_bytes_transferred at line 4997, column 9. Invent unique variable names. (Severity: 3)
Reused variable name in lexical scope: $maxbytespersecond at line 4983, column 9. Invent unique variable names. (Severity: 3) Reused variable name in lexical scope: $maxbytespersecond at line 4997, column 9. Invent unique variable names. (Severity: 3)
Expression form of "eval" at line 6170, column 13. See page 161 of PBP. (Severity: 5) Expression form of "eval" at line 6186, column 13. See page 161 of PBP. (Severity: 5)
Regular expression without "/x" flag at line 6405, column 22. See page 236 of PBP. (Severity: 3) Regular expression without "/x" flag at line 6421, column 22. See page 236 of PBP. (Severity: 3)
Expression form of "eval" at line 6410, column 13. See page 161 of PBP. (Severity: 5) Expression form of "eval" at line 6426, column 13. See page 161 of PBP. (Severity: 5)
Too many arguments at line 6573, column 1. See page 182 of PBP. (Severity: 3) Too many arguments at line 6589, column 1. See page 182 of PBP. (Severity: 3)
Backtick operator used at line 6740, column 4. Use IPC::Open3 instead. (Severity: 3) Backtick operator used at line 6756, column 4. Use IPC::Open3 instead. (Severity: 3)
Backtick operator used at line 6947, column 12. Use IPC::Open3 instead. (Severity: 3) Backtick operator used at line 6963, column 12. Use IPC::Open3 instead. (Severity: 3)
Backtick operator used at line 6967, column 11. Use IPC::Open3 instead. (Severity: 3) Backtick operator used at line 6983, column 11. Use IPC::Open3 instead. (Severity: 3)
Split long regexps into smaller qr// chunks at line 7129, column 12. See page 261 of PBP. (Severity: 3) Split long regexps into smaller qr// chunks at line 7145, column 12. See page 261 of PBP. (Severity: 3)
Split long regexps into smaller qr// chunks at line 7155, column 12. See page 261 of PBP. (Severity: 3) Split long regexps into smaller qr// chunks at line 7171, column 12. See page 261 of PBP. (Severity: 3)
Split long regexps into smaller qr// chunks at line 7196, column 12. See page 261 of PBP. (Severity: 3) Split long regexps into smaller qr// chunks at line 7212, column 12. See page 261 of PBP. (Severity: 3)
Split long regexps into smaller qr// chunks at line 7208, column 12. See page 261 of PBP. (Severity: 3) Split long regexps into smaller qr// chunks at line 7224, column 12. See page 261 of PBP. (Severity: 3)
Expression form of "eval" at line 7314, column 43. See page 161 of PBP. (Severity: 5) Expression form of "eval" at line 7330, column 43. See page 161 of PBP. (Severity: 5)
Expression form of "eval" at line 7318, column 45. See page 161 of PBP. (Severity: 5) Expression form of "eval" at line 7334, column 45. See page 161 of PBP. (Severity: 5)
Split long regexps into smaller qr// chunks at line 7523, column 20. See page 261 of PBP. (Severity: 3) Split long regexps into smaller qr// chunks at line 7539, column 20. See page 261 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 7690, column 19. See page 236 of PBP. (Severity: 3) Regular expression without "/x" flag at line 7706, column 19. See page 236 of PBP. (Severity: 3)
Close filehandles as soon as possible after opening them at line 7734, column 2. See page 209 of PBP. (Severity: 4) Close filehandles as soon as possible after opening them at line 7750, column 2. See page 209 of PBP. (Severity: 4)
Magic variable "*STDERR" should be assigned as "local" at line 7737, column 10. See pages 81,82 of PBP. (Severity: 4) Magic variable "*STDERR" should be assigned as "local" at line 7753, column 10. See pages 81,82 of PBP. (Severity: 4)
One-argument "select" used at line 7738, column 2. See page 224 of PBP. (Severity: 4) One-argument "select" used at line 7754, column 2. See page 224 of PBP. (Severity: 4)

View File

@ -1,9 +1,9 @@
Expression form of "eval" at line 3998, column 13. See page 161 of PBP. (Severity: 5) Expression form of "eval" at line 4012, column 13. See page 161 of PBP. (Severity: 5)
Expression form of "eval" at line 4228, column 13. See page 161 of PBP. (Severity: 5) Expression form of "eval" at line 4242, column 13. See page 161 of PBP. (Severity: 5)
Expression form of "eval" at line 6170, column 13. See page 161 of PBP. (Severity: 5) Expression form of "eval" at line 6186, column 13. See page 161 of PBP. (Severity: 5)
Expression form of "eval" at line 6410, column 13. See page 161 of PBP. (Severity: 5) Expression form of "eval" at line 6426, column 13. See page 161 of PBP. (Severity: 5)
Expression form of "eval" at line 7314, column 43. See page 161 of PBP. (Severity: 5) Expression form of "eval" at line 7330, column 43. See page 161 of PBP. (Severity: 5)
Expression form of "eval" at line 7318, column 45. See page 161 of PBP. (Severity: 5) Expression form of "eval" at line 7334, column 45. See page 161 of PBP. (Severity: 5)
Close filehandles as soon as possible after opening them at line 7734, column 2. See page 209 of PBP. (Severity: 4) Close filehandles as soon as possible after opening them at line 7750, column 2. See page 209 of PBP. (Severity: 4)
Magic variable "*STDERR" should be assigned as "local" at line 7737, column 10. See pages 81,82 of PBP. (Severity: 4) Magic variable "*STDERR" should be assigned as "local" at line 7753, column 10. See pages 81,82 of PBP. (Severity: 4)
One-argument "select" used at line 7738, column 2. See page 224 of PBP. (Severity: 4) One-argument "select" used at line 7754, column 2. See page 224 of PBP. (Severity: 4)

View File

@ -1,6 +1,6 @@
$SHELL says /bin/bash $SHELL says /bin/bash
$0 gives ./INSTALL.d/prerequisites_imapsync $0 gives ./INSTALL.d/prerequisites_imapsync
ps -ef gives gilles 21682 21681 0 20:55 pts/22 00:00:00 /bin/sh ./INSTALL.d/prerequisites_imapsync ps -ef gives gilles 1314 1313 0 09:43 pts/31 00:00:00 /bin/sh ./INSTALL.d/prerequisites_imapsync
Distributor ID: Ubuntu Distributor ID: Ubuntu
Description: Ubuntu 12.04.5 LTS Description: Ubuntu 12.04.5 LTS
Release: 12.04 Release: 12.04

View File

@ -31,7 +31,13 @@
--tls1 : Use a TLS connection on host1. --tls1 : Use a TLS connection on host1.
--tls2 : Use a TLS connection on host2. --tls2 : Use a TLS connection on host2.
--debugssl int : SSL debug mode from 0 to 4. --debugssl int : SSL debug mode from 0 to 4.
--sslargs1 str : Pass any ssl parameter for host1 ssl or tls connection. Example:
--sslargs1 SSL_verify_mode=1 --sslargs1 SSL_version=SSLv3
See all possibilities in the new() method of IO::Socket::SSL
http://search.cpan.org/perldoc?IO::Socket::SSL#Description_Of_Methods
--sslargs2 str : Pass any ssl parameter for host2 ssl or tls connection.
See --sslargs1
--timeout1 int : Connection timeout in seconds for host1. --timeout1 int : Connection timeout in seconds for host1.
Default is 120 and 0 means no timeout at all. Default is 120 and 0 means no timeout at all.
--timeout2 int : Connection timeout in seconds for host2. --timeout2 int : Connection timeout in seconds for host2.
@ -270,7 +276,7 @@
Here is a [linux] system (Linux petite 3.2.0-97-generic #137-Ubuntu SMP Thu Dec 17 21:14:00 UTC 2015 i686) Here is a [linux] system (Linux petite 3.2.0-97-generic #137-Ubuntu SMP Thu Dec 17 21:14:00 UTC 2015 i686)
With perl 5.14.2 Mail::IMAPClient 3.30 With perl 5.14.2 Mail::IMAPClient 3.30
$Id: imapsync,v 1.678 2016/01/21 19:47:02 gilles Exp gilles $ $Id: imapsync,v 1.684 2016/03/17 08:35:03 gilles Exp gilles $
This current imapsync is up to date This current imapsync is up to date
Homepage: http://imapsync.lamiral.info/ Homepage: http://imapsync.lamiral.info/
@ -283,8 +289,8 @@ Homepage: http://imapsync.lamiral.info/
'Authen::NTLM::MD4' => '1.02', 'Authen::NTLM::MD4' => '1.02',
'IO::Compress::Gzip' => '2.048', 'IO::Compress::Gzip' => '2.048',
'IO::Uncompress::Gunzip' => '2.048', 'IO::Uncompress::Gunzip' => '2.048',
'IO::Compress::Base::Common' => '2.048',
'IO::Compress::Gzip::Constants' => '2.048', 'IO::Compress::Gzip::Constants' => '2.048',
'IO::Compress::Base::Common' => '2.048',
'Compress::Raw::Zlib' => '2.048', 'Compress::Raw::Zlib' => '2.048',
'Convert::ASN1::IO' => 'undef', 'Convert::ASN1::IO' => 'undef',
'Convert::ASN1::_decode' => 'undef', 'Convert::ASN1::_decode' => 'undef',
@ -307,7 +313,6 @@ Homepage: http://imapsync.lamiral.info/
'File::GlobMapper' => '1.000', 'File::GlobMapper' => '1.000',
'IO::Compress::Base' => '2.048', 'IO::Compress::Base' => '2.048',
'IO::Compress::Adapter::Bzip2' => '2.048', 'IO::Compress::Adapter::Bzip2' => '2.048',
'IO::Compress::Zlib::Constants' => '2.048',
'IO::Compress::RawDeflate' => '2.048', 'IO::Compress::RawDeflate' => '2.048',
'IO::Compress::Adapter::Deflate' => '2.048', 'IO::Compress::Adapter::Deflate' => '2.048',
'IO::Compress::Zlib::Extra' => '2.048', 'IO::Compress::Zlib::Extra' => '2.048',
@ -317,6 +322,7 @@ Homepage: http://imapsync.lamiral.info/
'Compress::Raw::Bzip2' => '2.048', 'Compress::Raw::Bzip2' => '2.048',
'IO::Uncompress::Adapter::Bunzip2' => '2.048', 'IO::Uncompress::Adapter::Bunzip2' => '2.048',
'IO::Uncompress::Base' => '2.048', 'IO::Uncompress::Base' => '2.048',
'IO::Compress::Zlib::Constants' => '2.048',
'IO::Uncompress::Adapter::Inflate' => '2.048', 'IO::Uncompress::Adapter::Inflate' => '2.048',
'JSON::WebToken::Constants' => 'undef', 'JSON::WebToken::Constants' => 'undef',
'JSON::WebToken::Exception' => 'undef', 'JSON::WebToken::Exception' => 'undef',

7
W/tools/addFromIfMissing Executable file
View File

@ -0,0 +1,7 @@
#!/usr/bin/ruby
require 'mail'
message = Mail.read_from_string(STDIN.read)
message.from = 'emiliano.heyns@han.nl' if message.sender.nil?
puts message.to_s

Some files were not shown because too many files have changed in this diff Show More