1.684
7
CREDITS
@ -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
|
||||
|
34
ChangeLog
@ -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
@ -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
@ -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
@ -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.
|
||||
|
||||
=======================================================================
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
||||
=======================================================================
|
||||
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
96
FAQ.d/FAQ.Folders_Selection.txt
Normal 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.
|
||||
|
||||
|
||||
|
@ -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' ;
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
||||
|
||||
|
@ -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.
|
@ -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.
|
||||
|
@ -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
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
51
Makefile
@ -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
@ -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
@ -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
@ -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>
|
@ -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>
|
||||
|
||||
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 7.0 KiB |
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
@ -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>
|
||||
|
||||
|
@ -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
|
||||
|
739
S/news.shtml
@ -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-> 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-> 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 => '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 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>
|
@ -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>
|
@ -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>
|
||||
|
||||
|
@ -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
@ -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
|
||||
|
@ -1 +1 @@
|
||||
1.678
|
||||
1.684
|
||||
|
@ -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)
|
||||
|
@ -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
|
@ -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
|
@ -52,5 +52,5 @@
|
||||
"resources" : {
|
||||
"homepage" : "http://sourceforge.net/projects/mail-imapclient/"
|
||||
},
|
||||
"version" : "3.37"
|
||||
"version" : "3.38"
|
||||
}
|
@ -33,4 +33,4 @@ requires:
|
||||
perl: 5.008
|
||||
resources:
|
||||
homepage: http://sourceforge.net/projects/mail-imapclient/
|
||||
version: 3.37
|
||||
version: 3.38
|
@ -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
|
@ -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 {
|
@ -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
|
@ -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)" );
|
35
W/Mail-IMAPClient-3.38/t/lib/MyTest.pm
Normal 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;
|
45
W/Mail-IMAPClient-3.38/t/quota.t
Normal 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( '$@:' . $@ );
|
||||
}
|
12
W/imapsync.1
@ -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 $
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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" ;
|
||||
}
|
||||
|
4913
W/perlcritic_1.out
1558
W/perlcritic_2.out
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
@ -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
|
||||
|