1
0
mirror of https://github.com/imapsync/imapsync.git synced 2024-11-16 15:52:47 +01:00
This commit is contained in:
Nick Bebout 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
# $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,
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)
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:
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
but I don't cite them here.
Joe Pruett
Bugfix about delete_message_on_host1() not using --noexpungeaftereach
Mike Salonia
Contributed by using and validating the multi-archive Gmail
destination account. See FAQ.d/FAQ.Gmail.txt

View File

@ -1,17 +1,43 @@
RCS file: RCS/imapsync,v
Working file: imapsync
head: 1.678
head: 1.684
branch:
locks: strict
gilles: 1.678
gilles: 1.684
access list:
symbolic names:
keyword substitution: kv
total revisions: 678; selected revisions: 678
total revisions: 684; selected revisions: 684
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
README part check.
----------------------------

322
FAQ
View File

@ -1,5 +1,5 @@
#!/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 |
@ -179,7 +179,8 @@ R. To know wether a newer imapsync exists or not imapsync does a http
* Operating System
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
@ -359,16 +360,21 @@ Q. How can I try imapsync with latest Mail::IMAPClient 3.xx perl module?
Three solutions at least.
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
R2 Run:
perl -MCPAN -e "install Mail::IMAPClient"
cpanm Mail::IMAPClient # this uses cpanminus
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
@ -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
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/
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,
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
@ -533,62 +457,6 @@ R2. To change this default name, use --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
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.
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?
@ -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
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?
@ -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:
--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>
Date: Fri, 20 Feb 2009 19:35:44 +0100
From: Gilles LAMIRAL <lamiral@linux-france.org>
HeaderEnd
by
by the next four lines
HeaderBegin
Message-ID: <499EF800.4030002@blabla.fr>
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>
HeaderEnd
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
# $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.

View File

@ -1,5 +1,7 @@
#!/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.

View File

@ -1,5 +1,7 @@
#!/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.
@ -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?
R. Just run imapsync on the same account with option --delete2,
ie with host1 == host2 and user1 == user2
R. Just run imapsync on the same account with option --delete2duplicates,
ie, with host1 == host2 and user1 == user2
=======================================================================
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
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
the messages). A solution? it depends. --delete2 solves this problem
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 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"
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:
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".
=======================================================================
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
$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.
@ -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 "BAD Command received in Invalid state".
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?
@ -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
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
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
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
--maxsize 10000000 for 10 MB, change it if needed) to tell
imapsync to skip those messages.

View File

@ -1,5 +1,7 @@
#!/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.

View File

@ -1,5 +1,7 @@
#!/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.

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
$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.
@ -108,9 +110,7 @@ when selecting this not used folder.
=======================================================================
Q. How to synchronize from XXX to Gmail?
R. There are some details to get the special [Gmail] sub-folders
right. Here's an example of migrating an old "Sent" folder to
Gmail's structure:
R. Use the following example:
imapsync --host1 mail.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
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.
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
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.
If you disable ipv6 then disable also ipv6 resolution!
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:
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
name resolution:
In case it changes, get it with any command showing the imap.gmail.com
name resolution, try one of those:
nslookup imap.gmail.com
host imap.gmail.com
@ -343,7 +337,7 @@ name 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' ;

View File

@ -1,5 +1,7 @@
#!/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.

View File

@ -1,5 +1,7 @@
#!/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.
@ -8,10 +10,20 @@ $Id: FAQ.Massive.txt,v 1.6 2016/01/18 18:14:12 gilles Exp gilles $
Questions answered here are:
Q. I need to migrate hundred accounts, how can I do?
Q. I have to migrate 500k users using 400 TB of disk space.
How do I proceed?
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?
@ -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.
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
$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.

View File

@ -1,5 +1,7 @@
#!/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.

View File

@ -1,10 +1,69 @@
#!/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.
=======================================================
=======================================================================
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.
@ -24,5 +83,42 @@ R2. After imapsync 1.673, for example
--sslargs1 SSL_verify_mode=1 \
--sslargs2 SSL_verify_mode=0 \
C1. Don't do this in function "sub set_tls" since it won't work by principle,
tls is done AFTER the application level connexion is established
See perldoc IO::Socket::SSL for all possibilities, also at
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
$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.

View File

@ -1,5 +1,7 @@
#!/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.

View File

@ -1,5 +1,7 @@
#!/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

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
@ -49,7 +49,7 @@ VERSION=$(shell perl -I$(IMAPClient) ./imapsync --version 2>/dev/null || cat VER
VERSION_EXE=$(shell cat ./VERSION_EXE)
HELLO=$(shell date;uname -a)
IMAPClient_3xx=./W/Mail-IMAPClient-3.37/lib
IMAPClient_3xx=./W/Mail-IMAPClient-3.38/lib
IMAPClient=$(IMAPClient_3xx)
HOSTNAME = $(shell hostname -s)
@ -107,14 +107,14 @@ clean_test:
rm -f .test_3xx
clean_tilde:
rm -f *~ W/*~ FAQ.d/*~
rm -f *~ W/*~ FAQ.d/*~ S/*~ INSTALL.d/*~
clean_log:
rm -f LOG_imapsync/*.txt
rm -f examples/LOG_imapsync/*.txt
clean_bak:
rm -f index.shtml.bak ./W/style.css.bak
rm -f index.shtml.bak ./S/style.css.bak
.PHONY: install dist man
@ -142,11 +142,11 @@ install: testp W/imapsync.1
ci: cidone
cidone:
rcsdiff W/*.bat W/*.out W/*.txt W/*.htaccess W/*.shtml
rcsdiff S/*.txt S/*.shtml
rcsdiff W/*.bat W/*.out W/*.txt W/*.htaccess
rcsdiff S/*.txt S/*.shtml S/*.html
rcsdiff doc/*.t2t
rcsdiff INSTALL.d/*.txt INSTALL.d/prerequisites_imapsync
rcsdiff FAQ.d/*txt
rcsdiff FAQ.d/*.txt
rcsdiff examples/*.sh examples/*.bat examples/*.txt
rcsdiff RCS/*
@ -193,6 +193,8 @@ test_quick_3xx: imapsync tests.sh
testv3: imapsync tests.sh
CMD_PERL='perl -I./$(IMAPClient_3xx)' /usr/bin/time sh tests.sh
testv: testv3
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/'
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test3_gmail.bat'
test_imapsync_exe:
test_exe:
unix2dos W/test_exe.bat
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'
@ -371,15 +373,11 @@ tarball: ../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_SECRET := $(shell test -d dist && cat ./dist/path_$(VERSION).txt)
DIST_PATH := ./dist/$(DIST_SECRET)
lalala:
echo $(DIST_SECRET)
DIST_PATH := ./dist/
dist: cidone test clean all perlcritic dist_prepa dist_zip README_dist.txt
md5:
cd $(DIST_PATH)/ && md5sum *
@ -387,7 +385,7 @@ sha:
cd $(DIST_PATH)/ && sha512sum *
dist_prepa: tarball dist_dir
dist_prepa: tarball
ln -f ../prepa_dist/$(DIST_FILE) $(DIST_PATH)/
rcsdiff imapsync
cp -a imapsync $(DIST_PATH)/
@ -395,22 +393,11 @@ dist_prepa: tarball dist_dir
#cd $(DIST_PATH)/ && md5sum -c $(DIST_FILE).md5.txt
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
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
unix2dos $(DIST_PATH)/README_dist.txt
@ -447,13 +434,11 @@ PUBLIC = ./ChangeLog ./NOLIMIT ./LICENSE ./CREDITS ./FAQ \
./VERSION ./VERSION_EXE ./imapsync \
./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
ml: dist_dir
ml:
rcsdiff W/ml_announce.in
m4 -P W/ml_announce.in | mutt -H-
mailq
@ -491,9 +476,7 @@ checklinkext: S/news.shtml S/external.shtml S/imapservers.shtml S/template.shtm
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
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 W/images/ ../imapsync_website/W/images/
rsync -aHv --delete ./examples/ ../imapsync_website/examples/
rsync -aHv --delete ./INSTALL.d/ ../imapsync_website/INSTALL.d/
rsync -aHv --delete ./FAQ.d/ ../imapsync_website/FAQ.d/
@ -513,11 +496,11 @@ upload_FAQ:
upload_ks: ci tarball
rsync -aHv $(PUBLIC) ../imapsync_website/
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 -avH ./S/ ../imapsync_website/S/
rsync -aHv --delete ./dist/ ../imapsync_website/dist/
rsync -aHv --delete ./examples/ ../imapsync_website/examples/
rsync -aHv --delete ./INSTALL.d/ ../imapsync_website/INSTALL.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/

12
OPTIONS
View File

@ -31,7 +31,13 @@
--tls1 : Use a TLS connection on host1.
--tls2 : Use a TLS connection on host2.
--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.
Default is 120 and 0 means no timeout at all.
--timeout2 int : Connection timeout in seconds for host2.
@ -269,8 +275,8 @@
--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)
With perl 5.14.2 Mail::IMAPClient 3.37
$Id: imapsync,v 1.678 2016/01/21 19:47:02 gilles Exp gilles $
With perl 5.14.2 Mail::IMAPClient 3.38
$Id: imapsync,v 1.684 2016/03/17 08:35:03 gilles Exp gilles $
This current imapsync is up to date
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
failures.
$Revision: 1.678 $
$Revision: 1.684 $
SYNOPSIS
To synchronize the source imap account
@ -81,6 +81,12 @@ USAGE
--tls1 : Use a TLS connection on host1.
--tls2 : Use a TLS connection on host2.
--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.
Default is 120 and 0 means no timeout at all.
@ -592,5 +598,5 @@ SIMILAR SOFTWARES
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-style-type" content="text/css"/>
<meta http-equiv="expires" content="0"/>
<link rel="icon" type="image/png" href="../W/images/logo_imapsync_s.png" />
<link href="../W/style.css" rel="stylesheet" type="text/css"/>
<link rel="icon" type="image/png" href="../S/images/logo_imapsync_s.png" />
<link href="../S/style.css" rel="stylesheet" type="text/css"/>
</head>
@ -76,19 +76,19 @@ Prices are given par mailbox and may be outdated (December 2011).</p>
<div>
<a href="http://validator.w3.org/check?uri=referer">
<img
src="../W/images/valid-xhtml10"
src="../S/images/valid-xhtml10"
alt="Valid XHTML 1.0 Strict" height="31" width="88" />
</a>
<a href="http://jigsaw.w3.org/css-validator/check/referer">
<img style="border:0;width:88px;height:31px"
src="../W/images/vcss-blue"
src="../S/images/vcss-blue"
alt="CSS Valide !" />
</a>
<a href="http://www.anybrowser.org/campaign/">
<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" />
</a>
</div>
@ -98,7 +98,7 @@ alt="Viewable With Any Browser" />
<!--#config timefmt="%D" -->
<!--#config timefmt="%A %B %d, %Y" -->
<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>
</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-style-type" content="text/css"/>
<meta http-equiv="expires" content="0"/>
<link rel="icon" type="image/png" href="../W/images/logo_imapsync_s.png" />
<link href="../W/style.css" rel="stylesheet" type="text/css"/>
<link rel="icon" type="image/png" href="../S/images/logo_imapsync_s.png" />
<link href="../S/style.css" rel="stylesheet" type="text/css"/>
</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>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>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)
(<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)
@ -180,19 +181,19 @@ that's my job.
<div>
<a href="http://validator.w3.org/check?uri=referer">
<img
src="../W/images/valid-xhtml10"
src="../S/images/valid-xhtml10"
alt="Valid XHTML 1.0 Strict" height="31" width="88" />
</a>
<a href="http://jigsaw.w3.org/css-validator/check/referer">
<img style="border:0;width:88px;height:31px"
src="../W/images/vcss-blue"
src="../S/images/vcss-blue"
alt="CSS Valide !" />
</a>
<a href="http://www.anybrowser.org/campaign/">
<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" />
</a>
</div>
@ -202,7 +203,7 @@ alt="Viewable With Any Browser" />
<!--#config timefmt="%D" -->
<!--#config timefmt="%A %B %d, %Y" -->
<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>
</p>

View File

@ -1,82 +1,83 @@
1143 Etats-Unis_d'Amerique___ 25.84 % 25.84 % 1
811 Allemagne_______________ 18.34 % 44.18 % 2
413 Royaume-Uni_____________ 9.34 % 53.52 % 3
212 France__________________ 4.79 % 58.31 % 4
209 Italie__________________ 4.73 % 63.03 % 5
201 Canada__________________ 4.54 % 67.58 % 6
179 Suisse__________________ 4.05 % 71.63 % 7
154 Pays-Bas________________ 3.48 % 75.11 % 8
151 Australie_______________ 3.41 % 78.52 % 9
90 Autriche________________ 2.03 % 80.56 % 10
80 Belgique________________ 1.81 % 82.36 % 11
76 Espagne_________________ 1.72 % 84.08 % 12
65 Suede___________________ 1.47 % 85.55 % 13
52 Danemark________________ 1.18 % 86.73 % 14
48 Bresil__________________ 1.09 % 87.81 % 15
41 Norvege_________________ 0.93 % 88.74 % 16
31 Finlande________________ 0.70 % 89.44 % 17
29 Pologne_________________ 0.66 % 90.10 % 18
25 Republique_tcheque______ 0.57 % 90.66 % 19
25 Japon___________________ 0.57 % 91.23 % 20
25 ________________________ 0.57 % 91.79 % 21
22 Russie__________________ 0.50 % 92.29 % 22
22 Irlande_________________ 0.50 % 92.79 % 23
21 Nouvelle-Zelande________ 0.47 % 93.26 % 24
18 Hongrie_________________ 0.41 % 93.67 % 25
15 Hong-Kong_______________ 0.34 % 94.01 % 26
15 Afrique_du_Sud__________ 0.34 % 94.35 % 27
14 Portugal________________ 0.32 % 94.66 % 28
13 Slovaquie_______________ 0.29 % 94.96 % 29
13 Malaisie________________ 0.29 % 95.25 % 30
12 Luxembourg______________ 0.27 % 95.52 % 31
12 Inde____________________ 0.27 % 95.79 % 32
12 Grece___________________ 0.27 % 96.07 % 33
12 Argentine_______________ 0.27 % 96.34 % 34
11 Singapour_______________ 0.25 % 96.59 % 35
11 Israel__________________ 0.25 % 96.83 % 36
11 Chine___________________ 0.25 % 97.08 % 37
11 Chili___________________ 0.25 % 97.33 % 38
10 Mexique_________________ 0.23 % 97.56 % 39
9 Roumanie________________ 0.20 % 97.76 % 40
8 Slovenie________________ 0.18 % 97.94 % 41
8 Emirats_Arabes_Unis_____ 0.18 % 98.12 % 42
7 Lettonie________________ 0.16 % 98.28 % 43
5 Thailande_______________ 0.11 % 98.39 % 44
5 Malte___________________ 0.11 % 98.51 % 45
5 Islande_________________ 0.11 % 98.62 % 46
4 Turquie_________________ 0.09 % 98.71 % 47
4 Indonesie_______________ 0.09 % 98.80 % 48
4 Egypte__________________ 0.09 % 98.89 % 49
4 Croatie_________________ 0.09 % 98.98 % 50
4 Bulgarie________________ 0.09 % 99.07 % 51
3 Venezuela_______________ 0.07 % 99.14 % 52
3 Philippines_____________ 0.07 % 99.21 % 53
3 Estonie_________________ 0.07 % 99.28 % 54
2 Vietnam_________________ 0.05 % 99.32 % 55
2 Uruguay_________________ 0.05 % 99.37 % 56
2 Lituanie________________ 0.05 % 99.41 % 57
2 Costa_Rica______________ 0.05 % 99.46 % 58
2 Chypre__________________ 0.05 % 99.50 % 59
1 Ukraine_________________ 0.02 % 99.53 % 60
1 Trinite-et-Tobago_______ 0.02 % 99.55 % 61
1 Tanzanie________________ 0.02 % 99.57 % 62
1 Taiwan__________________ 0.02 % 99.59 % 63
1 Serbie__________________ 0.02 % 99.62 % 64
1 Senegal_________________ 0.02 % 99.64 % 65
1 Saint_Christophe-Nevis-Anguilla__ 0.02 % 99.66 % 66
1 Qatar___________________ 0.02 % 99.68 % 67
1 Perou___________________ 0.02 % 99.71 % 68
1 Panama__________________ 0.02 % 99.73 % 69
1 Nouvelle-Caledonie______ 0.02 % 99.75 % 70
1 Nigeria_________________ 0.02 % 99.77 % 71
1 Namibie_________________ 0.02 % 99.80 % 72
1 Mongolie________________ 0.02 % 99.82 % 73
1 Moldavie________________ 0.02 % 99.84 % 74
1 Maldives________________ 0.02 % 99.86 % 75
1 Îles_Vierges_britanniques__ 0.02 % 99.89 % 76
1 Koweit__________________ 0.02 % 99.91 % 77
1 Jordanie________________ 0.02 % 99.93 % 78
1 Colombie________________ 0.02 % 99.95 % 79
1 Bahrein_________________ 0.02 % 99.98 % 80
1 Antilles_neerlandaises__ 0.02 % 100.00 % 81
TOTAL = 4423 sales over 81 countries on Thu Jan 21 20:48:13 CET 2016
1156 Etats-Unis_d'Amerique___ 25.47 % 25.47 % 1
832 Allemagne_______________ 18.33 % 43.81 % 2
427 Royaume-Uni_____________ 9.41 % 53.22 % 3
220 Italie__________________ 4.85 % 58.07 % 4
219 France__________________ 4.83 % 62.89 % 5
202 Canada__________________ 4.45 % 67.34 % 6
184 Suisse__________________ 4.05 % 71.40 % 7
160 Pays-Bas________________ 3.53 % 74.92 % 8
158 Australie_______________ 3.48 % 78.40 % 9
92 Autriche________________ 2.03 % 80.43 % 10
83 Espagne_________________ 1.83 % 82.26 % 11
83 Belgique________________ 1.83 % 84.09 % 12
65 Suede___________________ 1.43 % 85.52 % 13
56 Danemark________________ 1.23 % 86.76 % 14
48 Bresil__________________ 1.06 % 87.81 % 15
41 Norvege_________________ 0.90 % 88.72 % 16
31 Pologne_________________ 0.68 % 89.40 % 17
31 Finlande________________ 0.68 % 90.08 % 18
26 Japon___________________ 0.57 % 90.66 % 19
25 Republique_tcheque______ 0.55 % 91.21 % 20
25 ________________________ 0.55 % 91.76 % 21
23 Irlande_________________ 0.51 % 92.27 % 22
22 Russie__________________ 0.48 % 92.75 % 23
21 Nouvelle-Zelande________ 0.46 % 93.21 % 24
20 Hongrie_________________ 0.44 % 93.65 % 25
16 Hong-Kong_______________ 0.35 % 94.01 % 26
15 Portugal________________ 0.33 % 94.34 % 27
15 Afrique_du_Sud__________ 0.33 % 94.67 % 28
13 Slovaquie_______________ 0.29 % 94.95 % 29
13 Malaisie________________ 0.29 % 95.24 % 30
13 Luxembourg______________ 0.29 % 95.53 % 31
13 Grece___________________ 0.29 % 95.81 % 32
12 Inde____________________ 0.26 % 96.08 % 33
12 Argentine_______________ 0.26 % 96.34 % 34
11 Singapour_______________ 0.24 % 96.58 % 35
11 Israel__________________ 0.24 % 96.83 % 36
11 Chine___________________ 0.24 % 97.07 % 37
11 Chili___________________ 0.24 % 97.31 % 38
10 Roumanie________________ 0.22 % 97.53 % 39
10 Mexique_________________ 0.22 % 97.75 % 40
8 Slovenie________________ 0.18 % 97.93 % 41
8 Emirats_Arabes_Unis_____ 0.18 % 98.10 % 42
7 Lettonie________________ 0.15 % 98.26 % 43
5 Thailande_______________ 0.11 % 98.37 % 44
5 Malte___________________ 0.11 % 98.48 % 45
5 Islande_________________ 0.11 % 98.59 % 46
4 Turquie_________________ 0.09 % 98.68 % 47
4 Indonesie_______________ 0.09 % 98.77 % 48
4 Egypte__________________ 0.09 % 98.85 % 49
4 Croatie_________________ 0.09 % 98.94 % 50
4 Bulgarie________________ 0.09 % 99.03 % 51
3 Venezuela_______________ 0.07 % 99.10 % 52
3 Serbie__________________ 0.07 % 99.16 % 53
3 Philippines_____________ 0.07 % 99.23 % 54
3 Estonie_________________ 0.07 % 99.29 % 55
2 Vietnam_________________ 0.04 % 99.34 % 56
2 Uruguay_________________ 0.04 % 99.38 % 57
2 Lituanie________________ 0.04 % 99.43 % 58
2 Costa_Rica______________ 0.04 % 99.47 % 59
2 Chypre__________________ 0.04 % 99.52 % 60
1 Ukraine_________________ 0.02 % 99.54 % 61
1 Trinite-et-Tobago_______ 0.02 % 99.56 % 62
1 Tanzanie________________ 0.02 % 99.58 % 63
1 Taiwan__________________ 0.02 % 99.60 % 64
1 Senegal_________________ 0.02 % 99.63 % 65
1 Saint_Christophe-Nevis-Anguilla__ 0.02 % 99.65 % 66
1 Qatar___________________ 0.02 % 99.67 % 67
1 Perou___________________ 0.02 % 99.69 % 68
1 Panama__________________ 0.02 % 99.71 % 69
1 Nouvelle-Caledonie______ 0.02 % 99.74 % 70
1 Nigeria_________________ 0.02 % 99.76 % 71
1 Namibie_________________ 0.02 % 99.78 % 72
1 Mongolie________________ 0.02 % 99.80 % 73
1 Moldavie________________ 0.02 % 99.82 % 74
1 Maldives________________ 0.02 % 99.85 % 75
1 Îles_Vierges_britanniques__ 0.02 % 99.87 % 76
1 Koweit__________________ 0.02 % 99.89 % 77
1 Jordanie________________ 0.02 % 99.91 % 78
1 Colombie________________ 0.02 % 99.93 % 79
1 Cameroun________________ 0.02 % 99.96 % 80
1 Bahrein_________________ 0.02 % 99.98 % 81
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"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" id="TOP">
<head>
<title>Imapsync News</title>
<meta name="generator" content="Bluefish 2.2.2" />
<meta name="author" content="Gilles LAMIRAL" />
<meta name="date" content="2016-01-22T01:56:39+0100" />
<meta name="copyright" content="None"/>
<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 http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/>
<meta http-equiv="content-style-type" content="text/css"/>
<meta http-equiv="expires" content="0"/>
<link rel="icon" type="image/png" href="../W/images/logo_imapsync_s.png" />
<link href="../W/style.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<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>
<div id="osw_imapsync"></div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></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>New features or bugfixes since previous releases:</p>
<!--
<ul>
<li><b>1.677</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>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>
</ul>
-->
<?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"><html lang="en" id="TOP" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
<title>Imapsync News</title>
<meta content="Bluefish 2.2.2" name="generator" />
<meta content="Gilles LAMIRAL" name="author" />
<meta content="2016-01-22T01:56:39+0100" name="date" />
<meta content="None" name="copyright" />
<meta content="imap, transfer, migration, synchronization" name="keywords" />
<meta content="imap migration tool" name="description" />
<meta content="text/css" http-equiv="content-style-type" />
<meta content="0" http-equiv="expires" />
<link href="../S/images/logo_imapsync_s.png" type="image/png" rel="icon" />
<link type="text/css" rel="stylesheet" href="../S/style.css" />
</head>
<body>
<h1>News about imapsync <!--#exec cmd="cat ../VERSION" --> and previous releases <a href="../#TOP" id="latest"><small>(back to menu)</small></a>
</h1>
<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>
<script type="text/javascript" src="http://static.oswatershed.org/js/package_badge.js"></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>New features or bugfixes since previous releases:</p>
<!--
<ul>
<li><b>1.683</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>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>
</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>
<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,
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>
<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>
</ul>
</li>
</li>
<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>Example <tt>--f1f2 Spam=Junk</tt> to map Spam folder to Junk.</li>
</ul>
</li>
</li>
<li><b>Enhancement</b>: Added <b><tt>--justautomap</tt></b> to exit after seeing what will happen with
--automap and --f1f2 options.</li>
<li><b>Enhancement</b>: Added <a href="https://tools.ietf.org/html/rfc2087">IMAP4 QUOTA </a> values (RFC 2087)
--automap and --f1f2 options.</li>
<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.
</li>
</li>
<li><b>Enhancement</b>: Added <a href="http://tools.ietf.org/html/rfc2971.html">IMAP4 ID extension</a>.
<ul>
<li><b>Enhancement</b>: Added <a href="http://tools.ietf.org/html/rfc2971.html">IMAP4 ID extension</a>.
<ul>
<li>ID feature is on by default if supported by the IMAP servers,
use <b><tt>--noid</tt></b> to turn it off.</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><b>Usability</b>: Added folders counting in outputs.</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>: 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>Usability</b>: Added folders counting in outputs.</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>: 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>: Fixed xoauth2 calls. Now XOAUTH2 Works on Windows <tt>--authmech1 XOAUTH2</tt>
with openssl installed.
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>
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>: 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>
<li><b>Refactoring</b>: Started to use global $sync-> in order to reduce number of parameters in routines.</li>
<li><b>Refactoring</b>: Some perlcritic fixes.</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>
</ul>
<ul>
<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>: 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.
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 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>
</ul>
<ul>
<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 <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.
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>--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 <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>
<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>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>: 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>
<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.
</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>: Split the <a href="../INSTALL">INSTALL</a> file in several parts in <a href="../INSTALL.d/">INSTALL.d/*</a></li>
</ul>
<ul>
<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>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>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>: 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>: 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>
<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>
<li><b>Bug fix</b>: Added several checks if IsUnconnected. Goal avoid imap commands while disconnected.
Reconnexion would be better anyway.</li>
</ul>
<ul>
<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
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>
</ul>
<ul>
<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>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>: <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
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 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>: 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>: 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
like OLD_MAIL -> old_mail. This avoids "does not exist" output.</li>
</ul>
<ul>
<li><b>1.584</b></li>
<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>
<li><b>Enhancement</b>: Added --debugmaxlinelength</li>
<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>
<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>
<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.
It is a preparation for advising not to use --prefix unless suggested.</li>
</ul>
<p><b>Good changes</b> made before, listed because <b>they can help</b>:
</p>
<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 --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 --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 --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 --authmech EXTERNAL.</li>
<li><b>Enhancement</b>: Adapted behavior for allowing --maxdate --mindate with --noabletosearch.
Use internat date instead of Date: header.</li>
<li><b>Enhancement</b>: QQMail IMAP4Server success (with --noabletosearch option) </li>
<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>
<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>
<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>
<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 <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>
<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>: 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 <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>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>: Added <b>host2 minus host1 statistic</b>: number of messages and bytes.
One difference at the start and one at the end.
Useful to <b>detect quickly a difference between host2 and host1</b>.
Need both --foldersizes and --foldersizesatend options (which are on by default).</li>
<li><b>Usability</b>: Added <b>--foldersizesatend</b>.
It gets the folders sizes at the end of the whole transfer.
Turned on by default (use --nofoldersizesatend to turn it off).</li>
<li><b>Enhancement</b>: Added option <b>--delete2duplicates</b>;
it deletes messages in host2 that are duplicates.
--delete2duplicates is on when --delete2 is set unless --nodelete2duplicates is set too.
</li>
<li><b>Enhancement</b>: Added option <b>--pidfilelocking</b>;
it aborts imapsync, when just launched,
in case another imapsync may be running.
Turned off by default</li>
<li><b>Usability</b>: Added option <b>--showpasswords</b>.
it shows passwords on output instead of "MASKED".
Turned off by default.
Useful to restart a run by reading the log
or to see what happen with special characters.
</li>
<li><b>Bug fix</b>: Added option <b>--fixslash2</b>
to avoid the '<b>Invalid mailbox name</b>' error.
It acts when --sep1 is character / and --sep2 is not character /
and host1 folder name contains --sep2 characters.
Turned on by default (--nofixslash2 to unable it).</li>
<li><b>Enhancement</b>: Added option <b>--noabletosearch</b>
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>
(8.6 is fine with SEARCH ALL).</li>
<li><b>Enhancement</b>: Added <b>--noexpungeaftereach</b>
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 --exitwhenover option <b>to avoid locking</b>
when transfers exceed maximum limit.
See for example <a href="https://support.google.com/a/answer/1071518?hl=en">this Gmail constraint</a>
<ul>
<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>
</ul>
</li>
<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>
<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).
Thanks to Ameir Abdeldayem</li>
<li><b>Enhancement</b>: Added --nofilterflags to check any STORE flags
by ignoring PERMANENTFLAGS (Exchange tests)</li>
</ul>
<hr/>
<div>
<a href="http://validator.w3.org/check?uri=referer">
<img
src="../W/images/valid-xhtml10"
alt="Valid XHTML 1.0 Strict" height="31" width="88" />
</a>
<a href="http://jigsaw.w3.org/css-validator/check/referer">
<img style="border:0;width:88px;height:31px"
src="../W/images/vcss-blue"
alt="CSS Valide !" />
</a>
<a href="http://www.anybrowser.org/campaign/">
<img style="border:0;width:88px;height:31px"
src="../W/images/ab_jlh.png"
alt="Viewable With Any Browser" />
</a>
</div>
<hr/>
<p>
<!--#config timefmt="%D" -->
<!--#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>
<ul>
<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>: 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.
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 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>
</ul>
<ul>
<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 <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.
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>--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 <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>
<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>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>: 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>
<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.
</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>: Split the <a href="../INSTALL">INSTALL</a> file in several parts in <a href="../INSTALL.d/">INSTALL.d/*</a></li>
</ul>
<ul>
<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>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>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>: 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>: 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>
<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>
<li><b>Bug fix</b>: Added several checks if IsUnconnected. Goal avoid imap commands while disconnected.
Reconnexion would be better anyway.</li>
</ul>
<ul>
<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
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>
</ul>
<ul>
<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>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>: <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
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 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>: 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 =&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>: Try to get folder size when a folder on host2 has the same name but with a different case
like OLD_MAIL -&gt; old_mail. This avoids "does not exist" output.</li>
</ul>
<ul>
<li><b>1.584</b></li>
<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>
<li><b>Enhancement</b>: Added --debugmaxlinelength</li>
<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>
<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>
<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.
It is a preparation for advising not to use --prefix unless suggested.</li>
</ul>
<p><b>Good changes</b> made before, listed because <b>they can help</b>:
</p>
<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 --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 --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 --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 --authmech EXTERNAL.</li>
<li><b>Enhancement</b>: Adapted behavior for allowing --maxdate --mindate with --noabletosearch.
Use internat date instead of Date: header.</li>
<li><b>Enhancement</b>: QQMail IMAP4Server success (with --noabletosearch option) </li>
<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>
<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>
<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>
<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 <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>
<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>: 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 <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>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>: Added <b>host2 minus host1 statistic</b>: number of messages and bytes.
One difference at the start and one at the end.
Useful to <b>detect quickly a difference between host2 and host1</b>.
Need both --foldersizes and --foldersizesatend options (which are on by default).</li>
<li><b>Usability</b>: Added <b>--foldersizesatend</b>.
It gets the folders sizes at the end of the whole transfer.
Turned on by default (use --nofoldersizesatend to turn it off).</li>
<li><b>Enhancement</b>: Added option <b>--delete2duplicates</b>;
it deletes messages in host2 that are duplicates.
--delete2duplicates is on when --delete2 is set unless --nodelete2duplicates is set too.
</li>
<li><b>Enhancement</b>: Added option <b>--pidfilelocking</b>;
it aborts imapsync, when just launched,
in case another imapsync may be running.
Turned off by default</li>
<li><b>Usability</b>: Added option <b>--showpasswords</b>.
it shows passwords on output instead of "MASKED".
Turned off by default.
Useful to restart a run by reading the log
or to see what happen with special characters.
</li>
<li><b>Bug fix</b>: Added option <b>--fixslash2</b>
to avoid the '<b>Invalid mailbox name</b>' error.
It acts when --sep1 is character / and --sep2 is not character /
and host1 folder name contains --sep2 characters.
Turned on by default (--nofixslash2 to unable it).</li>
<li><b>Enhancement</b>: Added option <b>--noabletosearch</b>
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>
(8.6 is fine with SEARCH ALL).</li>
<li><b>Enhancement</b>: Added <b>--noexpungeaftereach</b>
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 --exitwhenover option <b>to avoid locking</b>
when transfers exceed maximum limit.
See for example <a href="https://support.google.com/a/answer/1071518?hl=en">this Gmail constraint</a>
<ul>
<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>
</ul>
</li>
<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>
<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).
Thanks to Ameir Abdeldayem</li>
<li><b>Enhancement</b>: Added --nofilterflags to check any STORE flags
by ignoring PERMANENTFLAGS (Exchange tests)</li>
</ul>
<hr />
<div>
<a href="http://validator.w3.org/check?uri=referer">
<img width="88" height="31" alt="Valid XHTML 1.0 Strict" src="../S/images/valid-xhtml10" />
</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>
<a href="http://www.anybrowser.org/campaign/">
<img alt="Viewable With Any Browser" src="../S/images/ab_jlh.png" style="border:0;width:88px;height:31px" />
</a>
</div>
<hr />
<p>
<!--#config timefmt="%D" -->
<!--#config timefmt="%A %B %d, %Y" -->
<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 />
<a href="#TOP">Top of the page</a>
</p>
</body></html>

View File

@ -63,7 +63,7 @@ border:0px;
<!--#config timefmt="%D" -->
<!--#config timefmt="%A %B %d, %Y" -->
<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>
</body>

View File

@ -14,7 +14,7 @@
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/>
<meta http-equiv="content-style-type" content="text/css"/>
<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">
body {
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/>
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>
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>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="%A %B %d, %Y" -->
<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>

View File

@ -15,8 +15,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="expires" content="0"/>
<link rel="icon" type="image/png" href="../W/images/logo_imapsync_s.png" />
<link href="../W/style.css" rel="stylesheet" type="text/css"/>
<link rel="icon" type="image/png" href="../S/images/logo_imapsync_s.png" />
<link href="../S/style.css" rel="stylesheet" type="text/css"/>
</head>
@ -37,19 +37,19 @@
<div>
<a href="http://validator.w3.org/check?uri=referer">
<img
src="../W/images/valid-xhtml10"
src="../S/images/valid-xhtml10"
alt="Valid XHTML 1.0 Strict" height="31" width="88" />
</a>
<a href="http://jigsaw.w3.org/css-validator/check/referer">
<img style="border:0;width:88px;height:31px"
src="../W/images/vcss-blue"
src="../S/images/vcss-blue"
alt="CSS Valide !" />
</a>
<a href="http://www.anybrowser.org/campaign/">
<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" />
</a>
</div>
@ -59,7 +59,7 @@ alt="Viewable With Any Browser" />
<!--#config timefmt="%D" -->
<!--#config timefmt="%A %B %d, %Y" -->
<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>
</p>

34
TODO
View File

@ -1,9 +1,35 @@
#!/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
----------------------
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.
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.
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.
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
and counted in error counter statistics.
==== End Similar skip/error messages ====
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)
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)
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
- 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
- regex fix in rt.cpan.org#96575 required Perl 5.10
updated regex to be backwards compatible with Perl 5.8

View File

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

View File

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

View File

@ -33,4 +33,4 @@ requires:
perl: 5.008
resources:
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) 2007-2009 Mark Overmeer
Copyright (C) 2010-2015 Phil Pearl (Lobbes)
Copyright (C) 2010-2016 Phil Pearl (Lobbes)
All rights reserved.
This library is free software; you can redistribute it and/or modify

View File

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

View File

@ -1196,17 +1196,18 @@ and looks like the following:
{
name => 'Mail/Box/Name',
attrs => '\Marked \HasNoChildren',
attrs => [ '\Marked', '\HasNoChildren' ],
delim => '/',
}
IMAP servers implementing RFC6154 return attributes to be used to
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) {
next unless ( $fhash->{attrs} =~ $sattr_re );
print("special: $fhash->{name} : $fhash->{attrs}\n");
next unless defined $fhash->{name};
my @special = grep { $sattr_re } @{ $fhash->{attrs} };
print("special: $fhash->{name} : @special\n") if (@special);
}
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) 2007-2009 Mark Overmeer
Copyright (C) 2010-2015 Phil Pearl (Lobbes)
Copyright (C) 2010-2016 Phil Pearl (Lobbes)
All rights reserved.
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 File::Temp qw(tempfile);
my $debug = $ARGV[0];
my %parms;
my $range = 0;
my $uidplus = 0;
my $fast = 1;
use lib "t/lib";
use MyTest;
my $params;
BEGIN {
open TST, 'test.txt'
or plan skip_all => 'test parameters not provided in test.txt';
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"
eval { $params = MyTest->new; };
$@
? plan skip_all => $@
: plan tests => 104;
}
BEGIN { use_ok('Mail::IMAPClient') or exit; }
my $debug = $ARGV[0];
my $range = 0;
my $uidplus = 0;
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,
Fast_IO => $fast,
Uid => $uidplus,
Debug => $debug,
);
# allow other options to be placed in test.txt
%new_args = ( %new_args, %parms );
%new_args = ( %new_args, %${params} );
my $imap = Mail::IMAPClient->new(
%new_args,
@ -113,7 +92,7 @@ ok( $imap->select('inbox'), "select inbox" );
[ sort keys %{ $fh[0] } ],
[ sort @fh_keys ],
"folders eq folders_hash"
)
);
}
# test append_file
@ -190,6 +169,17 @@ SKIP: {
ok( $imap->delete_message($uid), "delete_message $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()
$uid = $imap->append( $target, $testmsg, "Some extra text too" );
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"
.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
.\" way too many mistakes in technical documents.
.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
supported with success, few failures.
.PP
$Revision: 1.678 $
$Revision: 1.684 $
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
.Vb 5
@ -220,6 +220,12 @@ reproduced here:
\& \-\-tls1 : Use a TLS connection on host1.
\& \-\-tls2 : Use a TLS connection on host2.
\& \-\-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.
\& 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
Feedback (good or bad) will often be welcome.
.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
RewriteRule "^paypal_return.shtml" "/W/paypal_return.shtml"
RewriteRule "^paypal_return_support.shtml" "/W/paypal_return_support.shtml"
RewriteRule "^paypal_return.shtml" "/S/paypal_return.shtml"

View File

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

View File

@ -1,6 +1,6 @@
#!/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/????
@ -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 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 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
/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
@ -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 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 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
: /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
# La totale
@ -154,8 +158,8 @@ set +x
1330 1331 1332 1333 1334 1652 1653 2131 2132
2295 2296 2297 2298 2625 2626 2970 2971 2972
3093 3296 3411 3412 3450 3451 3614 3615 3616 3617
3807 3808 3957 3958 4030 4194 4195 4381 4382 4449 4450
4574' \
3807 3808 3957 3958 4030 4194 4195 4381 4382 4449 4450
4574 4641' \
/g/paypal/paypal_201?_??_complet.csv
#set -v
@ -164,15 +168,15 @@ set +x
1330 1331 1332 1333 1334 1652 1653 2131 2132
2295 2296 2297 2298 2625 2626 2970 2971 2972
3093 3296 3411 3412 3450 3451 3614 3615 3616 3617
3807 3808 3957 3958 4030 4194 4195 4381 4382 4449 4450
4574' \
3807 3808 3957 3958 4030 4194 4195 4381 4382 4449 4450
4574 4641' \
/g/paypal/paypal_201?_??_complet.csv
#set +v
#echo 2016 : ( from 4574 to ???? ) EUR
#set -v
: /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
#set +v

View File

@ -1,6 +1,6 @@
#!/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 strict;
@ -23,16 +23,16 @@ my $opt_ret = GetOptions(
"debug!" => \$debug,
);
usage() and exit if ($help or ! $numopt) ;
usage( ) and exit if ( $help or ! $numopt ) ;
$msg_id_file = $ARGV[1];
$msg_id = firstline($msg_id_file);
$release = firstline( '/g/public_html/imapsync/VERSION' ) ;
$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" ;
@ -107,7 +107,7 @@ while( my $line = shift @input ) {
my $address = 'gilles.lamiral@laposte.net';
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)
and the latest imapsync source code (release $release) at the following link:
@ -210,3 +210,7 @@ sub firstline {
$line = ($line) ? $line: "error !EMPTY! [$file]";
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)
"$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)
"$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)
Regular expression without "/x" flag at line 1333, 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)
Code structure is deeply nested at line 1867, column 41. Consider refactoring. (Severity: 3)
Reused variable name in lexical scope: $sync at line 2039, column 2. Invent unique variable names. (Severity: 3)
Hard tabs used at line 2065, 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)
Regular expression without "/x" flag at line 2198, 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)
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 2252, 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)
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 2304, 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)
Regular expression without "/x" flag at line 2388, 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)
Too many arguments at line 2472, 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 2500, 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)
Too many arguments at line 2781, 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)
Too many arguments at line 2850, column 1. See page 182 of PBP. (Severity: 3)
Too many arguments at line 2972, 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)
Backtick operator used at line 3056, 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)
"die" used instead of "croak" at line 3239, 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 3348, 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 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 3360, 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 3463, 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 3667, 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 3672, 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 3743, 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)
Hard tabs used at line 3758, 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 4228, 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)
Too many arguments at line 4589, 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 4699, column 1. See page 182 of PBP. (Severity: 3)
Too many arguments at line 4888, 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: $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 4962, 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: $total_bytes_transferred at line 4983, 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)
Expression form of "eval" at line 6170, 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)
Expression form of "eval" at line 6410, column 13. See page 161 of PBP. (Severity: 5)
Too many arguments at line 6573, 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 6947, column 12. Use IPC::Open3 instead. (Severity: 3)
Backtick operator used at line 6967, 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 7155, 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 7208, 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 7318, 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)
Regular expression without "/x" flag at line 7690, 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)
Magic variable "*STDERR" should be assigned as "local" at line 7737, 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)
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 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 712, column 1. Unused variables clutter code and make it harder to read. (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 1350, column 33. See page 236 of PBP. (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 2040, column 2. Invent unique variable names. (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 2150, column 2. Invent unique variable names. (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 2221, column 31. See page 236 of PBP. (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 2253, column 2. Invent unique variable names. (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 2297, column 53. 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 2353, column 2. Invent unique variable names. (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 2437, column 2. Invent unique variable names. (Severity: 3)
Too many arguments at line 2473, 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 2501, column 1. See page 182 of PBP. (Severity: 3)
Subroutine "modules_VERSION" with high complexity score (26) at line 2619, column 1. Consider refactoring. (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 2851, column 1. Consider refactoring. (Severity: 3)
Too many arguments at line 2851, 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 3057, column 62. See page 236 of PBP. (Severity: 3)
Backtick operator used at line 3065, column 19. Use IPC::Open3 instead. (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 3248, column 2. See page 283 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 3357, 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 3367, 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 3369, column 8. 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 3477, column 25. 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 3681, column 24. 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 3686, column 19. 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 3757, column 39. 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 3772, column 106. See page 20 of PBP. (Severity: 3)
Expression form of "eval" at line 4012, 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 4603, column 1. Consider refactoring. (Severity: 3)
Too many arguments at line 4603, 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 4713, 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 4963, 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 4976, 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 4997, 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 6186, column 13. See page 161 of PBP. (Severity: 5)
Regular expression without "/x" flag at line 6421, column 22. See page 236 of PBP. (Severity: 3)
Expression form of "eval" at line 6426, column 13. See page 161 of PBP. (Severity: 5)
Too many arguments at line 6589, column 1. See page 182 of PBP. (Severity: 3)
Backtick operator used at line 6756, column 4. 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 6983, column 11. Use IPC::Open3 instead. (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 7171, 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 7224, column 12. See page 261 of PBP. (Severity: 3)
Expression form of "eval" at line 7330, column 43. 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 7539, column 20. See page 261 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 7750, column 2. See page 209 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 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 4228, 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 6410, 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 7318, 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)
Magic variable "*STDERR" should be assigned as "local" at line 7737, 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)
Expression form of "eval" at line 4012, 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 6186, 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 7330, column 43. 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 7750, column 2. See page 209 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 7754, column 2. See page 224 of PBP. (Severity: 4)

View File

@ -1,6 +1,6 @@
$SHELL says /bin/bash
$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
Description: Ubuntu 12.04.5 LTS
Release: 12.04

View File

@ -31,7 +31,13 @@
--tls1 : Use a TLS connection on host1.
--tls2 : Use a TLS connection on host2.
--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.
Default is 120 and 0 means no timeout at all.
--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)
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
Homepage: http://imapsync.lamiral.info/
@ -283,8 +289,8 @@ Homepage: http://imapsync.lamiral.info/
'Authen::NTLM::MD4' => '1.02',
'IO::Compress::Gzip' => '2.048',
'IO::Uncompress::Gunzip' => '2.048',
'IO::Compress::Base::Common' => '2.048',
'IO::Compress::Gzip::Constants' => '2.048',
'IO::Compress::Base::Common' => '2.048',
'Compress::Raw::Zlib' => '2.048',
'Convert::ASN1::IO' => 'undef',
'Convert::ASN1::_decode' => 'undef',
@ -307,7 +313,6 @@ Homepage: http://imapsync.lamiral.info/
'File::GlobMapper' => '1.000',
'IO::Compress::Base' => '2.048',
'IO::Compress::Adapter::Bzip2' => '2.048',
'IO::Compress::Zlib::Constants' => '2.048',
'IO::Compress::RawDeflate' => '2.048',
'IO::Compress::Adapter::Deflate' => '2.048',
'IO::Compress::Zlib::Extra' => '2.048',
@ -317,6 +322,7 @@ Homepage: http://imapsync.lamiral.info/
'Compress::Raw::Bzip2' => '2.048',
'IO::Uncompress::Adapter::Bunzip2' => '2.048',
'IO::Uncompress::Base' => '2.048',
'IO::Compress::Zlib::Constants' => '2.048',
'IO::Uncompress::Adapter::Inflate' => '2.048',
'JSON::WebToken::Constants' => '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