1.684
7
CREDITS
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
# $Id: CREDITS,v 1.185 2016/01/14 12:23:01 gilles Exp gilles $
|
# $Id: CREDITS,v 1.187 2016/03/07 02:08:16 gilles Exp gilles $
|
||||||
|
|
||||||
If you want to make a donation to me, imapsync author, Gilles LAMIRAL,
|
If you want to make a donation to me, imapsync author, Gilles LAMIRAL,
|
||||||
use any of the following ways:
|
use any of the following ways:
|
||||||
@ -9,7 +9,7 @@ b) If you can read french, please use the following wishlist :
|
|||||||
(books will be send with free postal cost)
|
(books will be send with free postal cost)
|
||||||
|
|
||||||
c) my paypal account is gilles.lamiral@laposte.net
|
c) my paypal account is gilles.lamiral@laposte.net
|
||||||
http://imapsync.lamiral.info/W/paypal.shtml
|
http://imapsync.lamiral.info/S/paypal.shtml
|
||||||
|
|
||||||
My postal address is:
|
My postal address is:
|
||||||
Gilles LAMIRAL
|
Gilles LAMIRAL
|
||||||
@ -24,6 +24,9 @@ I thank very much all of these people.
|
|||||||
I thank also very much all people who bought imapsync from the homepage
|
I thank also very much all people who bought imapsync from the homepage
|
||||||
but I don't cite them here.
|
but I don't cite them here.
|
||||||
|
|
||||||
|
Joe Pruett
|
||||||
|
Bugfix about delete_message_on_host1() not using --noexpungeaftereach
|
||||||
|
|
||||||
Mike Salonia
|
Mike Salonia
|
||||||
Contributed by using and validating the multi-archive Gmail
|
Contributed by using and validating the multi-archive Gmail
|
||||||
destination account. See FAQ.d/FAQ.Gmail.txt
|
destination account. See FAQ.d/FAQ.Gmail.txt
|
||||||
|
34
ChangeLog
@ -1,17 +1,43 @@
|
|||||||
|
|
||||||
RCS file: RCS/imapsync,v
|
RCS file: RCS/imapsync,v
|
||||||
Working file: imapsync
|
Working file: imapsync
|
||||||
head: 1.678
|
head: 1.684
|
||||||
branch:
|
branch:
|
||||||
locks: strict
|
locks: strict
|
||||||
gilles: 1.678
|
gilles: 1.684
|
||||||
access list:
|
access list:
|
||||||
symbolic names:
|
symbolic names:
|
||||||
keyword substitution: kv
|
keyword substitution: kv
|
||||||
total revisions: 678; selected revisions: 678
|
total revisions: 684; selected revisions: 684
|
||||||
description:
|
description:
|
||||||
----------------------------
|
----------------------------
|
||||||
revision 1.678 locked by: gilles;
|
revision 1.684 locked by: gilles;
|
||||||
|
date: 2016/03/17 08:35:03; author: gilles; state: Exp; lines: +24 -16
|
||||||
|
Bugfix. No more warning about "Use of uninitialized value $sockargs[7] in join or string at"
|
||||||
|
in ssl or tls mode. Was due to "'SSL_version' => undef".
|
||||||
|
----------------------------
|
||||||
|
revision 1.683
|
||||||
|
date: 2016/03/07 02:41:11; author: gilles; state: Exp; lines: +22 -10
|
||||||
|
Added --sslargs1 in documentation.
|
||||||
|
----------------------------
|
||||||
|
revision 1.682
|
||||||
|
date: 2016/03/01 00:47:54; author: gilles; state: Exp; lines: +16 -11
|
||||||
|
*** empty log message ***
|
||||||
|
----------------------------
|
||||||
|
revision 1.681
|
||||||
|
date: 2016/02/04 03:34:49; author: gilles; state: Exp; lines: +12 -13
|
||||||
|
Bugfix. Syntax error!
|
||||||
|
----------------------------
|
||||||
|
revision 1.680
|
||||||
|
date: 2016/02/04 02:11:32; author: gilles; state: Exp; lines: +25 -27
|
||||||
|
Bugfix. Added --expungeaftereach in sub delete_message_on_host1().
|
||||||
|
Usability. Added "use --noexpungeaftereach to speed up" if --delete is used.
|
||||||
|
----------------------------
|
||||||
|
revision 1.679
|
||||||
|
date: 2016/01/25 01:57:54; author: gilles; state: Exp; lines: +11 -11
|
||||||
|
Bugfix. "Can't use an undefined value as a HASH reference at /usr/bin/imapsync line 1247."
|
||||||
|
----------------------------
|
||||||
|
revision 1.678
|
||||||
date: 2016/01/21 19:47:02; author: gilles; state: Exp; lines: +14 -21
|
date: 2016/01/21 19:47:02; author: gilles; state: Exp; lines: +14 -21
|
||||||
README part check.
|
README part check.
|
||||||
----------------------------
|
----------------------------
|
||||||
|
318
FAQ
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
# $Id: FAQ,v 1.216 2015/11/13 23:58:12 gilles Exp gilles $
|
# $Id: FAQ,v 1.221 2016/03/07 02:55:01 gilles Exp gilles $
|
||||||
|
|
||||||
+-------------------+
|
+-------------------+
|
||||||
| FAQs for imapsync |
|
| FAQs for imapsync |
|
||||||
@ -180,6 +180,7 @@ R. To know wether a newer imapsync exists or not imapsync does a http
|
|||||||
|
|
||||||
You can remove this behavior by adding option --noreleasecheck on the
|
You can remove this behavior by adding option --noreleasecheck on the
|
||||||
command line (or by setting $releasecheck = 0 in the source code)
|
command line (or by setting $releasecheck = 0 in the source code)
|
||||||
|
or by using github release.
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. I use --useuid which uses a cache in /tmp or --tmpdir, the hostnames
|
Q. I use --useuid which uses a cache in /tmp or --tmpdir, the hostnames
|
||||||
@ -359,17 +360,22 @@ Q. How can I try imapsync with latest Mail::IMAPClient 3.xx perl module?
|
|||||||
Three solutions at least.
|
Three solutions at least.
|
||||||
|
|
||||||
R1 - Look at the script named "i3" in the tarball, it can be used to
|
R1 - Look at the script named "i3" in the tarball, it can be used to
|
||||||
run imapsync with the included Mail-IMAPClient-3.37/ wherever you
|
run imapsync with the included Mail-IMAPClient-3.38/ wherever you
|
||||||
unpacked the imapsync tarball
|
unpacked the imapsync tarball
|
||||||
|
|
||||||
R2 Run:
|
R2 Run:
|
||||||
|
|
||||||
perl -MCPAN -e "install Mail::IMAPClient"
|
cpanm Mail::IMAPClient # this uses cpanminus
|
||||||
|
|
||||||
or
|
or
|
||||||
|
|
||||||
cpan -i Mail::IMAPClient
|
cpan -i Mail::IMAPClient
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
perl -MCPAN -e "install Mail::IMAPClient"
|
||||||
|
|
||||||
|
|
||||||
R3 If you want to install the Perl module locally in a directory
|
R3 If you want to install the Perl module locally in a directory
|
||||||
|
|
||||||
- Download latest Mail::IMAPClient 3.xx at
|
- Download latest Mail::IMAPClient 3.xx at
|
||||||
@ -383,10 +389,10 @@ R3 If you want to install the Perl module locally in a directory
|
|||||||
- run imapsync with perl and -I option tailing to use the perl
|
- run imapsync with perl and -I option tailing to use the perl
|
||||||
module Mail-IMAPClient-3.xx. Example:
|
module Mail-IMAPClient-3.xx. Example:
|
||||||
|
|
||||||
perl -I./Mail-IMAPClient-3.37/lib ./imapsync ...
|
perl -I./Mail-IMAPClient-3.38/lib ./imapsync ...
|
||||||
|
|
||||||
or if imapsync is in directory /path/
|
or if imapsync is in directory /path/
|
||||||
perl -I./Mail-IMAPClient-3.37/lib /path/imapsync ...
|
perl -I./Mail-IMAPClient-3.38/lib /path/imapsync ...
|
||||||
|
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
@ -438,88 +444,6 @@ two-ways sync.
|
|||||||
A better tool with this scenario is offlineimap,
|
A better tool with this scenario is offlineimap,
|
||||||
designed for this issue, and faster than imapsync.
|
designed for this issue, and faster than imapsync.
|
||||||
|
|
||||||
=======================================================================
|
|
||||||
Q. We have found that the time and date displayed have been changed to
|
|
||||||
the time at which the file was synchronized.
|
|
||||||
|
|
||||||
R. This is the case by default with some email readers like:
|
|
||||||
- Outlook 2003
|
|
||||||
- Ipad
|
|
||||||
|
|
||||||
but not with:
|
|
||||||
|
|
||||||
- Mutt
|
|
||||||
- Thunderbird
|
|
||||||
- Zimbra
|
|
||||||
- Gmail
|
|
||||||
|
|
||||||
|
|
||||||
A thing to keep in mind, imapsync does not touch any byte of messages
|
|
||||||
unless told to do so by option --regexmess.
|
|
||||||
Messages on both parts should be identical.
|
|
||||||
|
|
||||||
I explain the whole picture about dates of messages.
|
|
||||||
|
|
||||||
There are several different dates for any message.
|
|
||||||
First, there is the "Date:" header. Most of the time, this date is set
|
|
||||||
by the MUA. MUA means Mail User Agent; it is Outlook, Mutt
|
|
||||||
or Thunderbird. The Date header is usually the date the message was written
|
|
||||||
or sent the first time. It is never changed by any transfer or copy.
|
|
||||||
If an email reader uses the Date header for displaying the date of a
|
|
||||||
message then no problem should arise.
|
|
||||||
|
|
||||||
There is also the internal date. In IMAP the internal date is handled
|
|
||||||
and normally it corresponds to the arrival date in the mailbox. The
|
|
||||||
IMAP protocol allows the internal date to be set by a email client.
|
|
||||||
Imapsync synchronizes internal dates by default, internal dates on host2
|
|
||||||
should then be the same as the internal dates on host1.
|
|
||||||
If an email reader uses the internal date for displaying the date of a
|
|
||||||
message then the sync date problem only occurs when the host2 server software
|
|
||||||
ignores the internal date given by imapsync during the APPEND imap
|
|
||||||
command. It happens with some imap servers.
|
|
||||||
|
|
||||||
There are also the Received header lines. Each time a message travels
|
|
||||||
a SMTP server, this one adds a Received header line. Sometimes
|
|
||||||
some email clients use the last "Received" header date as the date of the
|
|
||||||
message. And some IMAP servers softwares add a Received line after
|
|
||||||
and imap transfer. If those both conditions are met then the date
|
|
||||||
displayed become the transfer date even if imapsync
|
|
||||||
has done its best to keep all the dates synchronized. Bad luck.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Solutions:
|
|
||||||
a) Use a better email client or configure it in order it sorts messages
|
|
||||||
by sent date, the Date header.
|
|
||||||
|
|
||||||
b) Use a imap server that respects the imap RFC and accepts
|
|
||||||
the internal date set by imapsync.
|
|
||||||
|
|
||||||
c) Try to understand why the reader shows another date.
|
|
||||||
For Exchange look at the next FAQ item.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
=======================================================================
|
|
||||||
Q. imapsync calculates 479 messages in a folder but only transfers 400
|
|
||||||
messages. What's happen?
|
|
||||||
|
|
||||||
R1. Unless --useuid is used, imapsync considers a header part
|
|
||||||
of a message to identify a message on both sides.
|
|
||||||
By default the header part used is lines "Message-Id:" "Message-ID:"
|
|
||||||
and "Received:" or specific lines depending on --useheader
|
|
||||||
--skipheader. Whole header can be set by --useheader ALL
|
|
||||||
|
|
||||||
Consequences:
|
|
||||||
|
|
||||||
1) Duplicate messages (identical header) are not transferred
|
|
||||||
several times.
|
|
||||||
|
|
||||||
The result is that you can have more messages on host1 than on host2.
|
|
||||||
|
|
||||||
R2. With option --useuid imapsync doesn't use headers to identify
|
|
||||||
messages on both sides but it uses their imap uid. In that case
|
|
||||||
duplicates on host1 are transferred on host2.
|
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. I need to log every output on a file named log.txt
|
Q. I need to log every output on a file named log.txt
|
||||||
@ -533,62 +457,6 @@ R2. To change this default name, use --logfile log.txt
|
|||||||
imapsync ... --logfile log.txt
|
imapsync ... --logfile log.txt
|
||||||
|
|
||||||
|
|
||||||
=======================================================================
|
|
||||||
Q. I need to log every output on a file named log.txt and also to the
|
|
||||||
screen in order to keep seeing what's going on during execution
|
|
||||||
|
|
||||||
R. Use the tee program (also available on Windows)
|
|
||||||
http://en.wikipedia.org/wiki/Tee_%28command%29
|
|
||||||
http://stackoverflow.com/questions/796476/displaying-windows-command-prompt-output-and-redirecting-it-to-a-file
|
|
||||||
http://code.google.com/p/wintee/
|
|
||||||
|
|
||||||
|
|
||||||
imapsync ... 2>&1 | tee log.txt
|
|
||||||
|
|
||||||
=======================================================================
|
|
||||||
Q. Can I run more instances of imapsync in parallel on a Windows host.
|
|
||||||
|
|
||||||
R. Yes!
|
|
||||||
|
|
||||||
Q. Any performance issue?
|
|
||||||
|
|
||||||
You have to try and check the transfer rates, sum them up to
|
|
||||||
have a uniq numeric criteria.
|
|
||||||
There is always a limit, depending on remote imap servers
|
|
||||||
and the one running imapsync;
|
|
||||||
CPU, memory, Inputs/Outputs are the classical bottlenecks,
|
|
||||||
the worst bottleneck is the winner that sets the limit.
|
|
||||||
|
|
||||||
examples/sync_loop_windows.bat says
|
|
||||||
...
|
|
||||||
REM ==== Parallel executions ====
|
|
||||||
REM If you want to do parallel runs of imapsync then this current script is a good start.
|
|
||||||
REM Just copy it several times and replace, on each copy, the csvfile variable value.
|
|
||||||
REM Instead of SET csvfile=file.txt write for example
|
|
||||||
REM SET csvfile=file01.txt in the first copy
|
|
||||||
REM then also
|
|
||||||
REM SET csvfile=file02.txt in the second copy etc.
|
|
||||||
REM Of course you also have to split the data contained in file.txt
|
|
||||||
REM into file01.txt file02.txt etc.
|
|
||||||
REM After that, just double-click on each batch file to launch each process
|
|
||||||
|
|
||||||
|
|
||||||
=======================================================================
|
|
||||||
Q. I run multiple imapsync applications at the same time then get a
|
|
||||||
warning "imapsync.pid already exists, overwriting it".
|
|
||||||
Is this a potential problem when trying to sync multiple
|
|
||||||
IMAP account in parallel?
|
|
||||||
|
|
||||||
R1. No issue with the file imapsync.pid if you don't use its content
|
|
||||||
by yourself.
|
|
||||||
|
|
||||||
This file can help you to manage multiple runs by sending signals
|
|
||||||
to the processes (sigterm or sigkill) using their PID.
|
|
||||||
Each run can have its own pid file with --pidfile option.
|
|
||||||
The file imapsync.pid contains the PID of the imapsync process.
|
|
||||||
This file is removed at the end of a normal run.
|
|
||||||
You can safely ignore the warning if you don't use imapsync.pid file.
|
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. Quantifier in {,} bigger than 32766 in regex; marked by <-- HERE in
|
Q. Quantifier in {,} bigger than 32766 in regex; marked by <-- HERE in
|
||||||
m/(.{ <-- HERE 1,49947})(?:,|$)/ at Mail/IMAPClient.pm line 2121.
|
m/(.{ <-- HERE 1,49947})(?:,|$)/ at Mail/IMAPClient.pm line 2121.
|
||||||
@ -697,134 +565,6 @@ R. May be spending too much time on the source server, the connection
|
|||||||
timed out on the destination server.
|
timed out on the destination server.
|
||||||
Try options --nofoldersizes
|
Try options --nofoldersizes
|
||||||
|
|
||||||
=======================================================================
|
|
||||||
Q. Does imapsync support IMAP TLS?
|
|
||||||
|
|
||||||
R. Use --tls1 and/or --tls2 options
|
|
||||||
|
|
||||||
--tls1 tells imapsync to use tls on host1.
|
|
||||||
--tls2 tells imapsync to use tls on host2.
|
|
||||||
|
|
||||||
|
|
||||||
=======================================================================
|
|
||||||
Q. Does imapsync support IMAP over SSL (IMAPS)?
|
|
||||||
|
|
||||||
R. Yes natively since release 1.161.
|
|
||||||
still, 2 ways, at least :
|
|
||||||
|
|
||||||
a) Use native --ssl1 and/or --ssl2 options
|
|
||||||
|
|
||||||
--ssl1 tells imapsync to use ssl on host1.
|
|
||||||
--ssl2 tells imapsync to use ssl on host2.
|
|
||||||
|
|
||||||
|
|
||||||
b) Use stunnel
|
|
||||||
http://www.stunnel.org/
|
|
||||||
Assuming there is an imaps (993) server on imap.foo.org,
|
|
||||||
on your localhost machine (or bar machine) run :
|
|
||||||
stunnel -c -d imap -r imap.foo.org:imaps
|
|
||||||
or using names instead of numbers
|
|
||||||
stunnel -c -d 143 -r imap.foo.org:993
|
|
||||||
then use imapsync on localhost (or bar machine) imap (143) port.
|
|
||||||
If the local port 143 is already taken then use a free one, 10143.
|
|
||||||
|
|
||||||
c) Other example for gmail with no root access to open port 143
|
|
||||||
|
|
||||||
stunnel -f -P '' -c -d 9993 -r imap.gmail.com:993
|
|
||||||
|
|
||||||
Then, to access gmail as host2 use:
|
|
||||||
|
|
||||||
imapsync ... --host2 localhost --port2 9993 --nossl2
|
|
||||||
|
|
||||||
=======================================================================
|
|
||||||
Q. How can I manually test a login via ssl?
|
|
||||||
|
|
||||||
R. Use ncat or telnet-ssl like in this example:
|
|
||||||
|
|
||||||
ncat --ssl -C imap.gmail.com 993
|
|
||||||
* OK Gimap ready for requests from 78.196.254.58 q1mb175739668wix
|
|
||||||
a LOGIN "gilles.lamiral@gmail.com" "secret"
|
|
||||||
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE ... ESEARCH
|
|
||||||
a OK gilles.lamiral@gmail.com Gilles Lamiral authenticated (Success)
|
|
||||||
b LOGOUT
|
|
||||||
* BYE LOGOUT Requested
|
|
||||||
b OK 73 good day (Success)
|
|
||||||
|
|
||||||
The client part to type is "a LOGIN ..." and "b LOGOUT" without
|
|
||||||
the double-quotes.
|
|
||||||
|
|
||||||
|
|
||||||
=======================================================================
|
|
||||||
Q: How to have an imaps server?
|
|
||||||
|
|
||||||
R.
|
|
||||||
a) Install one
|
|
||||||
|
|
||||||
b) or use stunnel :
|
|
||||||
Assuming there is an imap (143) server on localhost
|
|
||||||
stunnel -d 993 -r 143 -f
|
|
||||||
|
|
||||||
c) or use stunnel on inetd
|
|
||||||
imaps stream tcp nowait cyrus /usr/sbin/stunnel -s cyrus -p /etc/ssl/certs/imapd.pem -r localhost:imap2
|
|
||||||
|
|
||||||
======================================================================
|
|
||||||
Q. I am transferring mails from one IMAP server to another. I am using
|
|
||||||
an SSL connection. Transferring huge mails (>10MB) takes ages.
|
|
||||||
|
|
||||||
R. try to transfer the mails without SSL connection. SSL code outside
|
|
||||||
imapsync uses a memory buffer, which gets increased upon reading of
|
|
||||||
mails by 4096 bytes. This creates a huge load on the host imapsync
|
|
||||||
runs on by copying the memory buffers for every 4096 byte step.
|
|
||||||
This does not occur without SSL.
|
|
||||||
|
|
||||||
(Written by Stefan Schmidt)
|
|
||||||
|
|
||||||
======================================================================
|
|
||||||
Q. What are --subscribe and --subscribed for, and how can they be used?
|
|
||||||
|
|
||||||
R. In the IMAP protocol each user can subscribe to one or more folders.
|
|
||||||
Then he can configure its email software to just see his subscribed
|
|
||||||
folders list. That's an IMAP feature.
|
|
||||||
|
|
||||||
Knowing that, the imapsync help says:
|
|
||||||
|
|
||||||
imapsync --help
|
|
||||||
...
|
|
||||||
--subscribed : transfers subscribed folders.
|
|
||||||
--subscribe : subscribe to the folders transferred on the
|
|
||||||
host2 that are subscribed on host1.
|
|
||||||
--subscribe_all : subscribe to the folders transferred on the
|
|
||||||
host2 even if they are not subscribed on host1.
|
|
||||||
|
|
||||||
|
|
||||||
======================================================================
|
|
||||||
Q. I want to exclude a folder hierarchy like "public"
|
|
||||||
|
|
||||||
R. Use:
|
|
||||||
|
|
||||||
--exclude "^public\."
|
|
||||||
or maybe
|
|
||||||
--exclude '^"public\.'
|
|
||||||
|
|
||||||
In the example given the character "." is the folder separator, you
|
|
||||||
can omit it. Just take the string as it appears on the imapsync
|
|
||||||
output line :
|
|
||||||
|
|
||||||
From folders list : [INBOX] [public.dreams] [etc.]
|
|
||||||
|
|
||||||
|
|
||||||
======================================================================
|
|
||||||
Q. I want to exclude only INBOX
|
|
||||||
|
|
||||||
R. Use:
|
|
||||||
|
|
||||||
imapsync ... --exclude "^INBOX$"
|
|
||||||
|
|
||||||
A good way to see what will be done is to first use:
|
|
||||||
|
|
||||||
imapsync ... --exclude "^INBOX$" --justfolders --nofoldersizes --dry
|
|
||||||
|
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
Q. Can Imapsync filter Spam during the sync?
|
Q. Can Imapsync filter Spam during the sync?
|
||||||
|
|
||||||
@ -839,33 +579,6 @@ http://www.stearns.org/doc/spamassassin-setup.current.html#isbg
|
|||||||
http://euer.krebsco.de/using-spamassassin-on-a-remote-imap-host.html
|
http://euer.krebsco.de/using-spamassassin-on-a-remote-imap-host.html
|
||||||
https://github.com/ook/isbg
|
https://github.com/ook/isbg
|
||||||
|
|
||||||
======================================================================
|
|
||||||
Q. I want to exclude folders matching SPAM no matter the case,
|
|
||||||
aka how to be case insensitive
|
|
||||||
|
|
||||||
R. Use:
|
|
||||||
|
|
||||||
imapsync ... --exclude "(?i)spam"
|
|
||||||
|
|
||||||
A good way to see what will be done is to first use:
|
|
||||||
|
|
||||||
imapsync ... --exclude "(?i)spam" --justfolders --nofoldersizes --dry
|
|
||||||
|
|
||||||
|
|
||||||
======================================================================
|
|
||||||
Q. I want the --folder "MyFolder" option be recursive.
|
|
||||||
|
|
||||||
Two solutions:
|
|
||||||
|
|
||||||
R1. Use
|
|
||||||
|
|
||||||
--folderrec "MyFolder"
|
|
||||||
|
|
||||||
R2. Use --include "^MyFolder"
|
|
||||||
Then the folder "MyFolder" and all its subfolders will be handled
|
|
||||||
and only them.
|
|
||||||
|
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
Q. How to migrate from uw-imap with an admin/authuser account?
|
Q. How to migrate from uw-imap with an admin/authuser account?
|
||||||
|
|
||||||
@ -974,22 +687,19 @@ Q. I want to play with headers line and --regexmess but I want to leave
|
|||||||
R. The header/body separation is a blank line so an example:
|
R. The header/body separation is a blank line so an example:
|
||||||
--regexmess 's{\A(.*?(?! ^$))^Date:(.*?)$}{$1Date:$2\nX-Date:$2}gxms'
|
--regexmess 's{\A(.*?(?! ^$))^Date:(.*?)$}{$1Date:$2\nX-Date:$2}gxms'
|
||||||
|
|
||||||
Will replace (HeaderBegin and HeaderEnd are not part of the header)
|
Will replace the next three lines
|
||||||
|
|
||||||
HeaderBegin
|
|
||||||
Message-ID: <499EF800.4030002@blabla.fr>
|
Message-ID: <499EF800.4030002@blabla.fr>
|
||||||
Date: Fri, 20 Feb 2009 19:35:44 +0100
|
Date: Fri, 20 Feb 2009 19:35:44 +0100
|
||||||
From: Gilles LAMIRAL <lamiral@linux-france.org>
|
From: Gilles LAMIRAL <lamiral@linux-france.org>
|
||||||
HeaderEnd
|
|
||||||
|
|
||||||
by
|
by the next four lines
|
||||||
|
|
||||||
HeaderBegin
|
|
||||||
Message-ID: <499EF800.4030002@blabla.fr>
|
Message-ID: <499EF800.4030002@blabla.fr>
|
||||||
Date: Fri, 20 Feb 2009 19:35:44 +0100
|
Date: Fri, 20 Feb 2009 19:35:44 +0100
|
||||||
X-Date: Fri, 20 Feb 2009 19:35:44 +0100
|
X-Date: Fri, 20 Feb 2009 19:35:44 +0100
|
||||||
From: Gilles LAMIRAL <lamiral@linux-france.org>
|
From: Gilles LAMIRAL <lamiral@linux-france.org>
|
||||||
HeaderEnd
|
|
||||||
|
|
||||||
This example just add an header line "X-Date:" based on "Date:" line.
|
This example just add an header line "X-Date:" based on "Date:" line.
|
||||||
|
|
||||||
|
25
FAQ.d/FAQ.Connection.txt
Normal file
@ -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
|
#!/bin/cat
|
||||||
# $Id: FAQ.Domino.txt,v 1.5 2016/01/18 18:14:12 gilles Exp gilles $
|
# $Id: FAQ.Domino.txt,v 1.6 2016/01/28 14:34:15 gilles Exp gilles $
|
||||||
|
|
||||||
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
=============================
|
=============================
|
||||||
Imapsync tips for Domino.
|
Imapsync tips for Domino.
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Dovecot.txt,v 1.3 2016/01/18 18:14:12 gilles Exp gilles $
|
$Id: FAQ.Dovecot.txt,v 1.4 2016/01/28 14:34:15 gilles Exp gilles $
|
||||||
|
|
||||||
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Imapsync tips for Dovecot. Specific issues and solutions.
|
Imapsync tips for Dovecot. Specific issues and solutions.
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Duplicates.txt,v 1.6 2016/01/18 18:14:12 gilles Exp gilles $
|
$Id: FAQ.Duplicates.txt,v 1.9 2016/03/08 21:17:21 gilles Exp gilles $
|
||||||
|
|
||||||
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
Imapsync tips about duplicated messages issues.
|
Imapsync tips about duplicated messages issues.
|
||||||
@ -8,8 +10,8 @@ $Id: FAQ.Duplicates.txt,v 1.6 2016/01/18 18:14:12 gilles Exp gilles $
|
|||||||
=======================================================================
|
=======================================================================
|
||||||
Q. How can I remove duplicates in an lone account?
|
Q. How can I remove duplicates in an lone account?
|
||||||
|
|
||||||
R. Just run imapsync on the same account with option --delete2,
|
R. Just run imapsync on the same account with option --delete2duplicates,
|
||||||
ie with host1 == host2 and user1 == user2
|
ie, with host1 == host2 and user1 == user2
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q: Multiple copies, duplicates, when I run imapsync twice ore more.
|
Q: Multiple copies, duplicates, when I run imapsync twice ore more.
|
||||||
@ -29,7 +31,7 @@ Keep in mind it uses a local cache.
|
|||||||
imapsync ... --useuid
|
imapsync ... --useuid
|
||||||
|
|
||||||
A big issue with --useuid is that it doesn't generate duplicates if
|
A big issue with --useuid is that it doesn't generate duplicates if
|
||||||
used from the first time. But it does generate duplicates after a previous
|
used from the first time but it does generate duplicates after a previous
|
||||||
run without --useuid (because it uses a different method to identify
|
run without --useuid (because it uses a different method to identify
|
||||||
the messages). A solution? it depends. --delete2 solves this problem
|
the messages). A solution? it depends. --delete2 solves this problem
|
||||||
if you are permitted to use it.
|
if you are permitted to use it.
|
||||||
@ -53,11 +55,11 @@ want to forward me the output.
|
|||||||
A way to avoid this problem is by using option --useheader with
|
A way to avoid this problem is by using option --useheader with
|
||||||
a different set than the default ones used by imapsync.
|
a different set than the default ones used by imapsync.
|
||||||
|
|
||||||
The default set is like:
|
The default set is equivalent to:
|
||||||
|
|
||||||
imapsync ... --useheader "Message-Id" --useheader "Received"
|
imapsync ... --useheader "Message-Id" --useheader "Received"
|
||||||
|
|
||||||
The big problem is that what can be used instead of Message-Id
|
The problem now is that what can be used instead of Message-Id
|
||||||
and Received lines? Often standalone Message-Id works:
|
and Received lines? Often standalone Message-Id works:
|
||||||
|
|
||||||
imapsync ... --useheader "Message-Id"
|
imapsync ... --useheader "Message-Id"
|
||||||
@ -89,5 +91,25 @@ trick to keep the --useheader filtering behaviour is to use
|
|||||||
Read it as "skip every header except Message-Id".
|
Read it as "skip every header except Message-Id".
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
|
Q. imapsync calculates 479 messages in a folder but only transfers 400
|
||||||
|
messages. What's happen?
|
||||||
|
|
||||||
|
R1. Unless --useuid is used, imapsync considers a header part
|
||||||
|
of a message to identify a message on both sides.
|
||||||
|
By default the header part used is lines "Message-Id:" "Message-ID:"
|
||||||
|
and "Received:" or specific lines depending on --useheader
|
||||||
|
--skipheader. Whole header can be set by --useheader ALL
|
||||||
|
|
||||||
|
Consequences:
|
||||||
|
|
||||||
|
1) Duplicate messages on host1 (identical header) are not transferred.
|
||||||
|
|
||||||
|
The result is that you can have more messages on host1 than on host2.
|
||||||
|
|
||||||
|
R2. With option --useuid imapsync doesn't use headers to identify
|
||||||
|
messages on both sides but it uses their imap uid identifier.
|
||||||
|
In that case duplicates on host1 are also transferred on host2.
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Exchange.txt,v 1.17 2016/01/18 18:14:12 gilles Exp gilles $
|
$Id: FAQ.Exchange.txt,v 1.20 2016/03/03 15:44:17 gilles Exp gilles $
|
||||||
|
|
||||||
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
=================================================================================
|
=================================================================================
|
||||||
Imapsync tips for Exchange 20xx and Office365. Specific issues and solutions.
|
Imapsync tips for Exchange 20xx and Office365. Specific issues and solutions.
|
||||||
@ -18,6 +20,8 @@ Q. For Office365 I have double and triple checked the username and
|
|||||||
|
|
||||||
Q. Exchange fails with "User is authenticated but not connected".
|
Q. Exchange fails with "User is authenticated but not connected".
|
||||||
|
|
||||||
|
Q. Exchange fails with "BAD Command received in Invalid state".
|
||||||
|
|
||||||
Q. From XXX to Exchange 2013 or Office365, read receipts are all
|
Q. From XXX to Exchange 2013 or Office365, read receipts are all
|
||||||
resent again after a sync. Even for old messages. How can I fix that?
|
resent again after a sync. Even for old messages. How can I fix that?
|
||||||
|
|
||||||
@ -148,6 +152,13 @@ http://unix.stackexchange.com/questions/164823/user-is-authenticated-but-not-con
|
|||||||
Thanks to James Abbottsmith for this link and explanation at
|
Thanks to James Abbottsmith for this link and explanation at
|
||||||
https://github.com/imapsync/imapsync/issues/32#issuecomment-153561647
|
https://github.com/imapsync/imapsync/issues/32#issuecomment-153561647
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. Exchange fails with "BAD Command received in Invalid state".
|
||||||
|
|
||||||
|
R. This message might happens when authentication without ssl nor tls.
|
||||||
|
Add --tls1 or --ssl1 if this error message comes from host1.
|
||||||
|
Add --tls2 or --ssl2 if this error message comes from host1.
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. From XXX to Exchange 2013 or Office365, read receipts are all
|
Q. From XXX to Exchange 2013 or Office365, read receipts are all
|
||||||
resent again after a sync. Even for old messages. How can I fix that?
|
resent again after a sync. Even for old messages. How can I fix that?
|
||||||
@ -191,6 +202,8 @@ R. This error message comes from Exchange IMAP server when it
|
|||||||
|
|
||||||
* Some messages are bigger than the size limit. 10 MB by default
|
* Some messages are bigger than the size limit. 10 MB by default
|
||||||
on Exchange. It can be upped by configuration for Exchange.
|
on Exchange. It can be upped by configuration for Exchange.
|
||||||
|
Sometimes a reboot is needed to take configuration changes
|
||||||
|
into account.
|
||||||
If you can't fix this limit on Exchange then use option
|
If you can't fix this limit on Exchange then use option
|
||||||
--maxsize 10000000 for 10 MB, change it if needed) to tell
|
--maxsize 10000000 for 10 MB, change it if needed) to tell
|
||||||
imapsync to skip those messages.
|
imapsync to skip those messages.
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Flags.txt,v 1.6 2016/01/18 18:14:12 gilles Exp gilles $
|
$Id: FAQ.Flags.txt,v 1.7 2016/01/28 14:34:15 gilles Exp gilles $
|
||||||
|
|
||||||
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
===============================
|
===============================
|
||||||
Imapsync tips about flags.
|
Imapsync tips about flags.
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Folders_Mapping.txt,v 1.9 2016/01/18 18:14:12 gilles Exp gilles $
|
$Id: FAQ.Folders_Mapping.txt,v 1.10 2016/01/28 14:34:15 gilles Exp gilles $
|
||||||
|
|
||||||
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
===============================================
|
===============================================
|
||||||
Imapsync tips about changing folders names.
|
Imapsync tips about changing folders names.
|
||||||
|
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
|
#!/bin/cat
|
||||||
$Id: FAQ.Gmail.txt,v 1.18 2016/01/18 18:14:12 gilles Exp gilles $
|
$Id: FAQ.Gmail.txt,v 1.21 2016/03/17 20:14:14 gilles Exp gilles $
|
||||||
|
|
||||||
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
=====================================
|
=====================================
|
||||||
Imapsync tips for Gmail accounts.
|
Imapsync tips for Gmail accounts.
|
||||||
@ -108,9 +110,7 @@ when selecting this not used folder.
|
|||||||
=======================================================================
|
=======================================================================
|
||||||
Q. How to synchronize from XXX to Gmail?
|
Q. How to synchronize from XXX to Gmail?
|
||||||
|
|
||||||
R. There are some details to get the special [Gmail] sub-folders
|
R. Use the following example:
|
||||||
right. Here's an example of migrating an old "Sent" folder to
|
|
||||||
Gmail's structure:
|
|
||||||
|
|
||||||
imapsync --host1 mail.oldhost.com \
|
imapsync --host1 mail.oldhost.com \
|
||||||
--user1 my_email@oldhost.com \
|
--user1 my_email@oldhost.com \
|
||||||
@ -186,12 +186,6 @@ not accepted by gmail, character ^ to character _ underscore.
|
|||||||
--regextrans2 "s/['\"\\\\]/_/g" is optional. It converts
|
--regextrans2 "s/['\"\\\\]/_/g" is optional. It converts
|
||||||
characters ' or " or \ to character _ underscore.
|
characters ' or " or \ to character _ underscore.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
You can add --folder "INBOX.Sent" in the example in case
|
|
||||||
you want to sync only the "Sent" folder.
|
|
||||||
|
|
||||||
You can select folders exported to imap within the gmail preferences.
|
You can select folders exported to imap within the gmail preferences.
|
||||||
Select or unselect some "System labels", depending on your needs.
|
Select or unselect some "System labels", depending on your needs.
|
||||||
|
|
||||||
@ -324,7 +318,7 @@ Q. Can not open imap connection on [imap.gmail.com]:
|
|||||||
Unable to connect to imap.gmail.com
|
Unable to connect to imap.gmail.com
|
||||||
|
|
||||||
R0. It looks like this issue is related to ipv6. Both ipv4 and ipv6
|
R0. It looks like this issue is related to ipv6. Both ipv4 and ipv6
|
||||||
protocols should work with gmail and imapsync, I test that regurlarly,
|
protocols should work with gmail and imapsync, I test that regularly,
|
||||||
imapsync works fine for both ipv4 and ipv6.
|
imapsync works fine for both ipv4 and ipv6.
|
||||||
If you disable ipv6 then disable also ipv6 resolution!
|
If you disable ipv6 then disable also ipv6 resolution!
|
||||||
Or at least, make ipv4 answers be taken before ipv6 since the default
|
Or at least, make ipv4 answers be taken before ipv6 since the default
|
||||||
@ -332,10 +326,10 @@ names resolution order is to present ipv6 name resolutions first.
|
|||||||
|
|
||||||
R1. A first simple solution is to use directly gmail ipv4 ip address:
|
R1. A first simple solution is to use directly gmail ipv4 ip address:
|
||||||
|
|
||||||
imapsync ... --host1 74.125.133.108
|
imapsync ... --host1 64.233.184.108
|
||||||
|
|
||||||
In case it changes, get with any command showing the imap.gmail.com
|
In case it changes, get it with any command showing the imap.gmail.com
|
||||||
name resolution:
|
name resolution, try one of those:
|
||||||
|
|
||||||
nslookup imap.gmail.com
|
nslookup imap.gmail.com
|
||||||
host imap.gmail.com
|
host imap.gmail.com
|
||||||
@ -343,7 +337,7 @@ name resolution:
|
|||||||
|
|
||||||
Or go to http://ping.eu/nslookup/ to get the resolution.
|
Or go to http://ping.eu/nslookup/ to get the resolution.
|
||||||
|
|
||||||
R2. Fix imapsync with the line:
|
R2. Second solution. Fix imapsync with the line:
|
||||||
|
|
||||||
use IO::Socket::SSL 'inet4' ;
|
use IO::Socket::SSL 'inet4' ;
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.ISP.txt,v 1.3 2016/01/18 18:14:12 gilles Exp gilles $
|
$Id: FAQ.ISP.txt,v 1.4 2016/01/28 14:34:15 gilles Exp gilles $
|
||||||
|
|
||||||
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
=========================================================
|
=========================================================
|
||||||
Imapsync tips for ISP. Specific issues and solutions.
|
Imapsync tips for ISP. Specific issues and solutions.
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Massive.txt,v 1.6 2016/01/18 18:14:12 gilles Exp gilles $
|
$Id: FAQ.Massive.txt,v 1.8 2016/02/07 17:21:40 gilles Exp gilles $
|
||||||
|
|
||||||
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
==============================================
|
==============================================
|
||||||
Imapsync tips for massive/bulk migrations.
|
Imapsync tips for massive/bulk migrations.
|
||||||
@ -8,10 +10,20 @@ $Id: FAQ.Massive.txt,v 1.6 2016/01/18 18:14:12 gilles Exp gilles $
|
|||||||
Questions answered here are:
|
Questions answered here are:
|
||||||
|
|
||||||
Q. I need to migrate hundred accounts, how can I do?
|
Q. I need to migrate hundred accounts, how can I do?
|
||||||
|
|
||||||
Q. I have to migrate 500k users using 400 TB of disk space.
|
Q. I have to migrate 500k users using 400 TB of disk space.
|
||||||
How do I proceed?
|
How do I proceed?
|
||||||
|
|
||||||
Q. How to determine what is the bottleneck in my current imapsync process?
|
Q. How to determine what is the bottleneck in my current imapsync process?
|
||||||
|
|
||||||
|
Q. Can I run more instances of imapsync in parallel on a Windows host?
|
||||||
|
|
||||||
|
Q. I run multiple imapsync applications at the same time then get a
|
||||||
|
warning "imapsync.pid already exists, overwriting it".
|
||||||
|
Is this a potential problem when trying to sync multiple
|
||||||
|
IMAP account in parallel?
|
||||||
|
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. I need to migrate hundred accounts, how can I do?
|
Q. I need to migrate hundred accounts, how can I do?
|
||||||
|
|
||||||
@ -123,3 +135,50 @@ If performances increase a lot then host1/link1 is the bottleneck.
|
|||||||
If performances increase on both tests 1) and 2), I have no clue to explain that.
|
If performances increase on both tests 1) and 2), I have no clue to explain that.
|
||||||
Same thing if they both decrease!
|
Same thing if they both decrease!
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. Can I run more instances of imapsync in parallel on a Windows host?
|
||||||
|
|
||||||
|
R. Yes!
|
||||||
|
|
||||||
|
Q. Any performance issue?
|
||||||
|
|
||||||
|
You have to try and check the transfer rates, sum them up to
|
||||||
|
have a uniq numeric criteria.
|
||||||
|
There is always a limit, depending on remote imap servers
|
||||||
|
and the one running imapsync;
|
||||||
|
CPU, memory, Inputs/Outputs are the classical bottlenecks,
|
||||||
|
the worst bottleneck is the winner that sets the limit.
|
||||||
|
|
||||||
|
examples/sync_loop_windows.bat says
|
||||||
|
...
|
||||||
|
REM ==== Parallel executions ====
|
||||||
|
REM If you want to do parallel runs of imapsync then this current script is a good start.
|
||||||
|
REM Just copy it several times and replace, on each copy, the csvfile variable value.
|
||||||
|
REM Instead of SET csvfile=file.txt write for example
|
||||||
|
REM SET csvfile=file01.txt in the first copy
|
||||||
|
REM then also
|
||||||
|
REM SET csvfile=file02.txt in the second copy etc.
|
||||||
|
REM Of course you also have to split the data contained in file.txt
|
||||||
|
REM into file01.txt file02.txt etc.
|
||||||
|
REM After that, just double-click on each batch file to launch each process
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. I run multiple imapsync applications at the same time then get a
|
||||||
|
warning "imapsync.pid already exists, overwriting it".
|
||||||
|
Is this a potential problem when trying to sync multiple
|
||||||
|
IMAP account in parallel?
|
||||||
|
|
||||||
|
R1. No issue with the file imapsync.pid if you don't use its content
|
||||||
|
by yourself.
|
||||||
|
|
||||||
|
This file can help you to manage multiple runs by sending signals
|
||||||
|
to the processes (sigterm or sigkill) using their PID.
|
||||||
|
Each run can have its own pid file with --pidfile option.
|
||||||
|
The file imapsync.pid contains the PID of the current imapsync process.
|
||||||
|
This file is removed at the end of a normal run.
|
||||||
|
You can safely ignore the warning if you don't use imapsync.pid file
|
||||||
|
to manage imapsync processes.
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Messages_selection.txt,v 1.3 2016/01/18 18:14:12 gilles Exp gilles $
|
$Id: FAQ.Messages_Selection.txt,v 1.5 2016/02/05 08:22:26 gilles Exp gilles $
|
||||||
|
|
||||||
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
=====================================
|
=====================================
|
||||||
Imapsync tips to select messages.
|
Imapsync tips to select messages.
|
@ -1,5 +1,7 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Oracle-UCS.txt,v 1.2 2016/01/18 18:14:12 gilles Exp gilles $
|
$Id: FAQ.Oracle-UCS.txt,v 1.3 2016/01/28 14:34:15 gilles Exp gilles $
|
||||||
|
|
||||||
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
==================================================
|
==================================================
|
||||||
Imapsync tips for Oracle-UCS. Specific issues.
|
Imapsync tips for Oracle-UCS. Specific issues.
|
||||||
|
@ -1,10 +1,69 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
# $Id: FAQ.Security.txt,v 1.3 2016/01/18 18:14:12 gilles Exp gilles $
|
# $Id: FAQ.Security.txt,v 1.6 2016/02/07 21:49:52 gilles Exp gilles $
|
||||||
|
|
||||||
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
=======================================================
|
=======================================================
|
||||||
Imapsync tips about security. Issues and solutions.
|
Imapsync tips about security. Issues and solutions.
|
||||||
=======================================================
|
=======================================================
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. Does imapsync support IMAP TLS?
|
||||||
|
|
||||||
|
R. Use --tls1 and/or --tls2 options
|
||||||
|
|
||||||
|
--tls1 tells imapsync to use tls on host1.
|
||||||
|
--tls2 tells imapsync to use tls on host2.
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. Does imapsync support IMAP over SSL (IMAPS)?
|
||||||
|
|
||||||
|
R. Yes natively since release 1.161.
|
||||||
|
still, 2 ways, at least to use ssl:
|
||||||
|
|
||||||
|
a) Use native --ssl1 and/or --ssl2 options
|
||||||
|
|
||||||
|
--ssl1 tells imapsync to use ssl on host1.
|
||||||
|
--ssl2 tells imapsync to use ssl on host2.
|
||||||
|
|
||||||
|
|
||||||
|
b) Use stunnel
|
||||||
|
http://www.stunnel.org/
|
||||||
|
Assuming there is an imaps (993) server on imap.foo.org,
|
||||||
|
on your localhost machine (or bar machine) run :
|
||||||
|
stunnel -c -d imap -r imap.foo.org:imaps
|
||||||
|
or using names instead of numbers
|
||||||
|
stunnel -c -d 143 -r imap.foo.org:993
|
||||||
|
then use imapsync on localhost (or bar machine) imap (143) port.
|
||||||
|
If the local port 143 is already taken then use a free one, 10143.
|
||||||
|
|
||||||
|
c) Other example for gmail with no root access to open port 143
|
||||||
|
|
||||||
|
stunnel -f -P '' -c -d 9993 -r imap.gmail.com:993
|
||||||
|
|
||||||
|
Then, to access gmail as host2 use:
|
||||||
|
|
||||||
|
imapsync ... --host2 localhost --port2 9993 --nossl2
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. How can I manually test a login via ssl?
|
||||||
|
|
||||||
|
R. Use ncat or telnet-ssl like in this example:
|
||||||
|
|
||||||
|
ncat --ssl -C imap.gmail.com 993
|
||||||
|
* OK Gimap ready for requests from 78.196.254.58 q1mb175739668wix
|
||||||
|
a LOGIN "gilles.lamiral@gmail.com" "secret"
|
||||||
|
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE ... ESEARCH
|
||||||
|
a OK gilles.lamiral@gmail.com Gilles Lamiral authenticated (Success)
|
||||||
|
b LOGOUT
|
||||||
|
* BYE LOGOUT Requested
|
||||||
|
b OK 73 good day (Success)
|
||||||
|
|
||||||
|
The client part to type is "a LOGIN ..." and "b LOGOUT" without
|
||||||
|
the double-quotes.
|
||||||
|
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
Q. Imapsync used to use SSL_VERIFY_PEER now it uses SSL_VERIFY_NONE.
|
Q. Imapsync used to use SSL_VERIFY_PEER now it uses SSL_VERIFY_NONE.
|
||||||
@ -24,5 +83,42 @@ R2. After imapsync 1.673, for example
|
|||||||
--sslargs1 SSL_verify_mode=1 \
|
--sslargs1 SSL_verify_mode=1 \
|
||||||
--sslargs2 SSL_verify_mode=0 \
|
--sslargs2 SSL_verify_mode=0 \
|
||||||
|
|
||||||
C1. Don't do this in function "sub set_tls" since it won't work by principle,
|
See perldoc IO::Socket::SSL for all possibilities, also at
|
||||||
tls is done AFTER the application level connexion is established
|
http://search.cpan.org/perldoc?IO%3A%3ASocket%3A%3ASSL
|
||||||
|
|
||||||
|
C1. Don't do this manual change in function "sub set_tls",
|
||||||
|
it won't work by principle, because tls is done AFTER
|
||||||
|
the application level connexion is established.
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. How can I manually test a login via ssl?
|
||||||
|
|
||||||
|
R. Use ncat or telnet-ssl like in this example:
|
||||||
|
|
||||||
|
ncat --ssl -C imap.gmail.com 993
|
||||||
|
* OK Gimap ready for requests from 78.196.254.58 q1mb175739668wix
|
||||||
|
a LOGIN "gilles.lamiral@gmail.com" "secret"
|
||||||
|
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE ... ESEARCH
|
||||||
|
a OK gilles.lamiral@gmail.com Gilles Lamiral authenticated (Success)
|
||||||
|
b LOGOUT
|
||||||
|
* BYE LOGOUT Requested
|
||||||
|
b OK 73 good day (Success)
|
||||||
|
|
||||||
|
The client part to type is "a LOGIN ..." and "b LOGOUT" without
|
||||||
|
the double-quotes.
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q: How to have an imaps server?
|
||||||
|
|
||||||
|
R.
|
||||||
|
a) Install one
|
||||||
|
|
||||||
|
b) or use stunnel :
|
||||||
|
Assuming there is an imap (143) server on localhost
|
||||||
|
stunnel -d 993 -r 143 -f
|
||||||
|
|
||||||
|
c) or use stunnel on inetd
|
||||||
|
imaps stream tcp nowait cyrus /usr/sbin/stunnel -s cyrus -p /etc/ssl/certs/imapd.pem -r localhost:imap2
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.SmarterMail.txt,v 1.7 2016/01/18 18:14:12 gilles Exp gilles $
|
$Id: FAQ.SmarterMail.txt,v 1.8 2016/01/28 14:34:15 gilles Exp gilles $
|
||||||
|
|
||||||
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
=================================================================
|
=================================================================
|
||||||
Imapsync tips for SmarterMail. Specific issues and solutions.
|
Imapsync tips for SmarterMail. Specific issues and solutions.
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Various_Server_Softwares.txt,v 1.3 2016/01/18 18:14:12 gilles Exp gilles $
|
$Id: FAQ.Various_Server_Softwares.txt,v 1.4 2016/01/28 14:34:15 gilles Exp gilles $
|
||||||
|
|
||||||
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
====================================================
|
====================================================
|
||||||
Imapsync tips for various imap server softwares.
|
Imapsync tips for various imap server softwares.
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.XOAUTH2.txt,v 1.8 2016/01/18 18:14:12 gilles Exp gilles $
|
$Id: FAQ.XOAUTH2.txt,v 1.9 2016/01/28 14:34:15 gilles Exp gilles $
|
||||||
|
|
||||||
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
Imapsync tips to use XOAUTH2 authentication (Gmail) and old XOAUTH
|
Imapsync tips to use XOAUTH2 authentication (Gmail) and old XOAUTH
|
||||||
|
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
|
.PHONY: help usage all doc
|
||||||
|
|
||||||
@ -49,7 +49,7 @@ VERSION=$(shell perl -I$(IMAPClient) ./imapsync --version 2>/dev/null || cat VER
|
|||||||
VERSION_EXE=$(shell cat ./VERSION_EXE)
|
VERSION_EXE=$(shell cat ./VERSION_EXE)
|
||||||
|
|
||||||
HELLO=$(shell date;uname -a)
|
HELLO=$(shell date;uname -a)
|
||||||
IMAPClient_3xx=./W/Mail-IMAPClient-3.37/lib
|
IMAPClient_3xx=./W/Mail-IMAPClient-3.38/lib
|
||||||
IMAPClient=$(IMAPClient_3xx)
|
IMAPClient=$(IMAPClient_3xx)
|
||||||
|
|
||||||
HOSTNAME = $(shell hostname -s)
|
HOSTNAME = $(shell hostname -s)
|
||||||
@ -107,14 +107,14 @@ clean_test:
|
|||||||
rm -f .test_3xx
|
rm -f .test_3xx
|
||||||
|
|
||||||
clean_tilde:
|
clean_tilde:
|
||||||
rm -f *~ W/*~ FAQ.d/*~
|
rm -f *~ W/*~ FAQ.d/*~ S/*~ INSTALL.d/*~
|
||||||
|
|
||||||
clean_log:
|
clean_log:
|
||||||
rm -f LOG_imapsync/*.txt
|
rm -f LOG_imapsync/*.txt
|
||||||
rm -f examples/LOG_imapsync/*.txt
|
rm -f examples/LOG_imapsync/*.txt
|
||||||
|
|
||||||
clean_bak:
|
clean_bak:
|
||||||
rm -f index.shtml.bak ./W/style.css.bak
|
rm -f index.shtml.bak ./S/style.css.bak
|
||||||
|
|
||||||
.PHONY: install dist man
|
.PHONY: install dist man
|
||||||
|
|
||||||
@ -142,11 +142,11 @@ install: testp W/imapsync.1
|
|||||||
ci: cidone
|
ci: cidone
|
||||||
|
|
||||||
cidone:
|
cidone:
|
||||||
rcsdiff W/*.bat W/*.out W/*.txt W/*.htaccess W/*.shtml
|
rcsdiff W/*.bat W/*.out W/*.txt W/*.htaccess
|
||||||
rcsdiff S/*.txt S/*.shtml
|
rcsdiff S/*.txt S/*.shtml S/*.html
|
||||||
rcsdiff doc/*.t2t
|
rcsdiff doc/*.t2t
|
||||||
rcsdiff INSTALL.d/*.txt INSTALL.d/prerequisites_imapsync
|
rcsdiff INSTALL.d/*.txt INSTALL.d/prerequisites_imapsync
|
||||||
rcsdiff FAQ.d/*txt
|
rcsdiff FAQ.d/*.txt
|
||||||
rcsdiff examples/*.sh examples/*.bat examples/*.txt
|
rcsdiff examples/*.sh examples/*.bat examples/*.txt
|
||||||
rcsdiff RCS/*
|
rcsdiff RCS/*
|
||||||
|
|
||||||
@ -193,6 +193,8 @@ test_quick_3xx: imapsync tests.sh
|
|||||||
testv3: imapsync tests.sh
|
testv3: imapsync tests.sh
|
||||||
CMD_PERL='perl -I./$(IMAPClient_3xx)' /usr/bin/time sh tests.sh
|
CMD_PERL='perl -I./$(IMAPClient_3xx)' /usr/bin/time sh tests.sh
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
testv: testv3
|
testv: testv3
|
||||||
|
|
||||||
test: .test_3xx
|
test: .test_3xx
|
||||||
@ -269,7 +271,7 @@ W/test3_gmail.bat:
|
|||||||
scp imapsync W/test3_gmail.bat /g/var/pass/secret.gilles_gmail Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
|
scp imapsync W/test3_gmail.bat /g/var/pass/secret.gilles_gmail Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
|
||||||
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test3_gmail.bat'
|
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test3_gmail.bat'
|
||||||
|
|
||||||
test_imapsync_exe:
|
test_exe:
|
||||||
unix2dos W/test_exe.bat
|
unix2dos W/test_exe.bat
|
||||||
scp W/test_exe.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
|
scp W/test_exe.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
|
||||||
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test_exe.bat'
|
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test_exe.bat'
|
||||||
@ -371,15 +373,11 @@ tarball: ../prepa_dist/$(DIST_FILE)
|
|||||||
ls -l ../prepa_dist/$(DIST_FILE)
|
ls -l ../prepa_dist/$(DIST_FILE)
|
||||||
|
|
||||||
|
|
||||||
DO_IT := $(shell test -d dist && { test -f ./dist/path_$(VERSION).txt || makepasswd --chars 4 > ./dist/path_$(VERSION).txt ; } )
|
DIST_PATH := ./dist/
|
||||||
DIST_SECRET := $(shell test -d dist && cat ./dist/path_$(VERSION).txt)
|
|
||||||
DIST_PATH := ./dist/$(DIST_SECRET)
|
|
||||||
|
|
||||||
lalala:
|
|
||||||
echo $(DIST_SECRET)
|
|
||||||
|
|
||||||
dist: cidone test clean all perlcritic dist_prepa dist_zip README_dist.txt
|
dist: cidone test clean all perlcritic dist_prepa dist_zip README_dist.txt
|
||||||
|
|
||||||
|
|
||||||
md5:
|
md5:
|
||||||
cd $(DIST_PATH)/ && md5sum *
|
cd $(DIST_PATH)/ && md5sum *
|
||||||
|
|
||||||
@ -387,7 +385,7 @@ sha:
|
|||||||
cd $(DIST_PATH)/ && sha512sum *
|
cd $(DIST_PATH)/ && sha512sum *
|
||||||
|
|
||||||
|
|
||||||
dist_prepa: tarball dist_dir
|
dist_prepa: tarball
|
||||||
ln -f ../prepa_dist/$(DIST_FILE) $(DIST_PATH)/
|
ln -f ../prepa_dist/$(DIST_FILE) $(DIST_PATH)/
|
||||||
rcsdiff imapsync
|
rcsdiff imapsync
|
||||||
cp -a imapsync $(DIST_PATH)/
|
cp -a imapsync $(DIST_PATH)/
|
||||||
@ -395,22 +393,11 @@ dist_prepa: tarball dist_dir
|
|||||||
#cd $(DIST_PATH)/ && md5sum -c $(DIST_FILE).md5.txt
|
#cd $(DIST_PATH)/ && md5sum -c $(DIST_FILE).md5.txt
|
||||||
ls -l $(DIST_PATH)/
|
ls -l $(DIST_PATH)/
|
||||||
|
|
||||||
dist_dir:
|
|
||||||
@echo $(DIST_SECRET)
|
|
||||||
@echo $(DIST_PATH)
|
|
||||||
mkdir -p $(DIST_PATH)
|
|
||||||
ln -f ./dist/path_$(VERSION).txt ./dist/path_last.txt
|
|
||||||
|
|
||||||
|
|
||||||
dist_exe: imapsync.exe
|
|
||||||
cp -a ./imapsync.exe $(DIST_PATH)/
|
|
||||||
#cd $(DIST_PATH)/ && md5sum ./imapsync.exe > ./imapsync.exe.md5.txt
|
|
||||||
#cd $(DIST_PATH)/ && md5sum -c ./imapsync.exe.md5.txt
|
|
||||||
|
|
||||||
dist_zip: zip
|
dist_zip: zip
|
||||||
cp -a ../prepa_zip/imapsync_$(VERSION_EXE).zip $(DIST_PATH)/
|
cp -a ../prepa_zip/imapsync_$(VERSION_EXE).zip $(DIST_PATH)/
|
||||||
|
|
||||||
README_dist.txt: dist_dir
|
README_dist.txt:
|
||||||
sh W/tools/gen_README_dist > $(DIST_PATH)/README_dist.txt
|
sh W/tools/gen_README_dist > $(DIST_PATH)/README_dist.txt
|
||||||
unix2dos $(DIST_PATH)/README_dist.txt
|
unix2dos $(DIST_PATH)/README_dist.txt
|
||||||
|
|
||||||
@ -447,13 +434,11 @@ PUBLIC = ./ChangeLog ./NOLIMIT ./LICENSE ./CREDITS ./FAQ \
|
|||||||
./VERSION ./VERSION_EXE ./imapsync \
|
./VERSION ./VERSION_EXE ./imapsync \
|
||||||
./README ./OPTIONS ./TODO
|
./README ./OPTIONS ./TODO
|
||||||
|
|
||||||
PUBLIC_W = ./W/style.css ./W/tw-hash.html \
|
|
||||||
./W/TIME.txt \
|
|
||||||
./W/paypal.shtml ./W/paypal_return.shtml
|
|
||||||
|
|
||||||
PUBLIC_doc = ./doc/TUTORIAL_Unix.html ./doc/GOOD_PRACTICES.html
|
PUBLIC_doc = ./doc/TUTORIAL_Unix.html ./doc/GOOD_PRACTICES.html
|
||||||
|
|
||||||
ml: dist_dir
|
ml:
|
||||||
rcsdiff W/ml_announce.in
|
rcsdiff W/ml_announce.in
|
||||||
m4 -P W/ml_announce.in | mutt -H-
|
m4 -P W/ml_announce.in | mutt -H-
|
||||||
mailq
|
mailq
|
||||||
@ -491,9 +476,7 @@ checklinkext: S/news.shtml S/external.shtml S/imapservers.shtml S/template.shtm
|
|||||||
upload_index: .valid.index.shtml
|
upload_index: .valid.index.shtml
|
||||||
rcsdiff index.shtml S/*.shtml FAQ FAQ.d/*.txt INSTALL LICENSE CREDITS TODO W/*.bat examples/*.bat index.shtml INSTALL.d/*.txt imapsync
|
rcsdiff index.shtml S/*.shtml FAQ FAQ.d/*.txt INSTALL LICENSE CREDITS TODO W/*.bat examples/*.bat index.shtml INSTALL.d/*.txt imapsync
|
||||||
rsync -avH index.shtml FAQ INSTALL OPTIONS NOLIMIT LICENSE CREDITS TODO imapsync imapsync.exe $(BIN_NAME) imapsync_bin_Darwin ../imapsync_website/
|
rsync -avH index.shtml FAQ INSTALL OPTIONS NOLIMIT LICENSE CREDITS TODO imapsync imapsync.exe $(BIN_NAME) imapsync_bin_Darwin ../imapsync_website/
|
||||||
rsync -avH $(PUBLIC_W) ../imapsync_website/W/
|
|
||||||
rsync -avH S/ ../imapsync_website/S/
|
rsync -avH S/ ../imapsync_website/S/
|
||||||
rsync -avH W/images/ ../imapsync_website/W/images/
|
|
||||||
rsync -aHv --delete ./examples/ ../imapsync_website/examples/
|
rsync -aHv --delete ./examples/ ../imapsync_website/examples/
|
||||||
rsync -aHv --delete ./INSTALL.d/ ../imapsync_website/INSTALL.d/
|
rsync -aHv --delete ./INSTALL.d/ ../imapsync_website/INSTALL.d/
|
||||||
rsync -aHv --delete ./FAQ.d/ ../imapsync_website/FAQ.d/
|
rsync -aHv --delete ./FAQ.d/ ../imapsync_website/FAQ.d/
|
||||||
@ -513,11 +496,11 @@ upload_FAQ:
|
|||||||
upload_ks: ci tarball
|
upload_ks: ci tarball
|
||||||
rsync -aHv $(PUBLIC) ../imapsync_website/
|
rsync -aHv $(PUBLIC) ../imapsync_website/
|
||||||
rsync -aHv $(PUBLIC_W) ../imapsync_website/W/
|
rsync -aHv $(PUBLIC_W) ../imapsync_website/W/
|
||||||
rsync -aHv --delete ./W/images/ ../imapsync_website/W/images/
|
|
||||||
rsync -aHv --delete ./W/ks.htaccess ../imapsync_website/.htaccess
|
rsync -aHv --delete ./W/ks.htaccess ../imapsync_website/.htaccess
|
||||||
rsync -avH ./S/ ../imapsync_website/S/
|
rsync -avH ./S/ ../imapsync_website/S/
|
||||||
rsync -aHv --delete ./dist/ ../imapsync_website/dist/
|
rsync -aHv --delete ./dist/ ../imapsync_website/dist/
|
||||||
rsync -aHv --delete ./examples/ ../imapsync_website/examples/
|
rsync -aHv --delete ./examples/ ../imapsync_website/examples/
|
||||||
rsync -aHv --delete ./INSTALL.d/ ../imapsync_website/INSTALL.d/
|
rsync -aHv --delete ./INSTALL.d/ ../imapsync_website/INSTALL.d/
|
||||||
rsync -aHv --delete ./FAQ.d/ ../imapsync_website/FAQ.d/
|
rsync -aHv --delete ./FAQ.d/ ../imapsync_website/FAQ.d/
|
||||||
|
rsync -avH --delete ./doc/ ../imapsync_website/doc/
|
||||||
rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/
|
rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/
|
||||||
|
10
OPTIONS
@ -31,6 +31,12 @@
|
|||||||
--tls1 : Use a TLS connection on host1.
|
--tls1 : Use a TLS connection on host1.
|
||||||
--tls2 : Use a TLS connection on host2.
|
--tls2 : Use a TLS connection on host2.
|
||||||
--debugssl int : SSL debug mode from 0 to 4.
|
--debugssl int : SSL debug mode from 0 to 4.
|
||||||
|
--sslargs1 str : Pass any ssl parameter for host1 ssl or tls connection. Example:
|
||||||
|
--sslargs1 SSL_verify_mode=1 --sslargs1 SSL_version=SSLv3
|
||||||
|
See all possibilities in the new() method of IO::Socket::SSL
|
||||||
|
http://search.cpan.org/perldoc?IO::Socket::SSL#Description_Of_Methods
|
||||||
|
--sslargs2 str : Pass any ssl parameter for host2 ssl or tls connection.
|
||||||
|
See --sslargs1
|
||||||
|
|
||||||
--timeout1 int : Connection timeout in seconds for host1.
|
--timeout1 int : Connection timeout in seconds for host1.
|
||||||
Default is 120 and 0 means no timeout at all.
|
Default is 120 and 0 means no timeout at all.
|
||||||
@ -269,8 +275,8 @@
|
|||||||
--host2 test2.lamiral.info --user2 test2 --password2 secret2
|
--host2 test2.lamiral.info --user2 test2 --password2 secret2
|
||||||
|
|
||||||
Here is a [linux] system (Linux petite 3.2.0-97-generic #137-Ubuntu SMP Thu Dec 17 21:14:00 UTC 2015 i686)
|
Here is a [linux] system (Linux petite 3.2.0-97-generic #137-Ubuntu SMP Thu Dec 17 21:14:00 UTC 2015 i686)
|
||||||
With perl 5.14.2 Mail::IMAPClient 3.37
|
With perl 5.14.2 Mail::IMAPClient 3.38
|
||||||
$Id: imapsync,v 1.678 2016/01/21 19:47:02 gilles Exp gilles $
|
$Id: imapsync,v 1.684 2016/03/17 08:35:03 gilles Exp gilles $
|
||||||
This current imapsync is up to date
|
This current imapsync is up to date
|
||||||
|
|
||||||
Homepage: http://imapsync.lamiral.info/
|
Homepage: http://imapsync.lamiral.info/
|
||||||
|
10
README
@ -4,7 +4,7 @@ NAME
|
|||||||
More than 66 different IMAP server softwares supported with success, few
|
More than 66 different IMAP server softwares supported with success, few
|
||||||
failures.
|
failures.
|
||||||
|
|
||||||
$Revision: 1.678 $
|
$Revision: 1.684 $
|
||||||
|
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
To synchronize the source imap account
|
To synchronize the source imap account
|
||||||
@ -81,6 +81,12 @@ USAGE
|
|||||||
--tls1 : Use a TLS connection on host1.
|
--tls1 : Use a TLS connection on host1.
|
||||||
--tls2 : Use a TLS connection on host2.
|
--tls2 : Use a TLS connection on host2.
|
||||||
--debugssl int : SSL debug mode from 0 to 4.
|
--debugssl int : SSL debug mode from 0 to 4.
|
||||||
|
--sslargs1 str : Pass any ssl parameter for host1 ssl or tls connection. Example:
|
||||||
|
--sslargs1 SSL_verify_mode=1 --sslargs1 SSL_version=SSLv3
|
||||||
|
See all possibilities in the new() method of IO::Socket::SSL
|
||||||
|
http://search.cpan.org/perldoc?IO::Socket::SSL#Description_Of_Methods
|
||||||
|
--sslargs2 str : Pass any ssl parameter for host2 ssl or tls connection.
|
||||||
|
See --sslargs1
|
||||||
|
|
||||||
--timeout1 int : Connection timeout in seconds for host1.
|
--timeout1 int : Connection timeout in seconds for host1.
|
||||||
Default is 120 and 0 means no timeout at all.
|
Default is 120 and 0 means no timeout at all.
|
||||||
@ -592,5 +598,5 @@ SIMILAR SOFTWARES
|
|||||||
|
|
||||||
Feedback (good or bad) will often be welcome.
|
Feedback (good or bad) will often be welcome.
|
||||||
|
|
||||||
$Id: imapsync,v 1.678 2016/01/21 19:47:02 gilles Exp gilles $
|
$Id: imapsync,v 1.684 2016/03/17 08:35:03 gilles Exp gilles $
|
||||||
|
|
||||||
|
11
S/bc-payment.html
Executable file
@ -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-type" content="application/xhtml+xml; charset=UTF-8"/>
|
||||||
<meta http-equiv="content-style-type" content="text/css"/>
|
<meta http-equiv="content-style-type" content="text/css"/>
|
||||||
<meta http-equiv="expires" content="0"/>
|
<meta http-equiv="expires" content="0"/>
|
||||||
<link rel="icon" type="image/png" href="../W/images/logo_imapsync_s.png" />
|
<link rel="icon" type="image/png" href="../S/images/logo_imapsync_s.png" />
|
||||||
<link href="../W/style.css" rel="stylesheet" type="text/css"/>
|
<link href="../S/style.css" rel="stylesheet" type="text/css"/>
|
||||||
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
@ -76,19 +76,19 @@ Prices are given par mailbox and may be outdated (December 2011).</p>
|
|||||||
<div>
|
<div>
|
||||||
<a href="http://validator.w3.org/check?uri=referer">
|
<a href="http://validator.w3.org/check?uri=referer">
|
||||||
<img
|
<img
|
||||||
src="../W/images/valid-xhtml10"
|
src="../S/images/valid-xhtml10"
|
||||||
alt="Valid XHTML 1.0 Strict" height="31" width="88" />
|
alt="Valid XHTML 1.0 Strict" height="31" width="88" />
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a href="http://jigsaw.w3.org/css-validator/check/referer">
|
<a href="http://jigsaw.w3.org/css-validator/check/referer">
|
||||||
<img style="border:0;width:88px;height:31px"
|
<img style="border:0;width:88px;height:31px"
|
||||||
src="../W/images/vcss-blue"
|
src="../S/images/vcss-blue"
|
||||||
alt="CSS Valide !" />
|
alt="CSS Valide !" />
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a href="http://www.anybrowser.org/campaign/">
|
<a href="http://www.anybrowser.org/campaign/">
|
||||||
<img style="border:0;width:88px;height:31px"
|
<img style="border:0;width:88px;height:31px"
|
||||||
src="../W/images/ab_jlh.png"
|
src="../S/images/ab_jlh.png"
|
||||||
alt="Viewable With Any Browser" />
|
alt="Viewable With Any Browser" />
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@ -98,7 +98,7 @@ alt="Viewable With Any Browser" />
|
|||||||
<!--#config timefmt="%D" -->
|
<!--#config timefmt="%D" -->
|
||||||
<!--#config timefmt="%A %B %d, %Y" -->
|
<!--#config timefmt="%A %B %d, %Y" -->
|
||||||
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
||||||
($Id: external.shtml,v 1.5 2015/10/08 01:05:25 gilles Exp gilles $)<br/>
|
($Id: external.shtml,v 1.6 2016/03/03 22:36:57 gilles Exp gilles $)<br/>
|
||||||
<a href="#TOP">Top of the page</a>
|
<a href="#TOP">Top of the page</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
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-type" content="application/xhtml+xml; charset=UTF-8"/>
|
||||||
<meta http-equiv="content-style-type" content="text/css"/>
|
<meta http-equiv="content-style-type" content="text/css"/>
|
||||||
<meta http-equiv="expires" content="0"/>
|
<meta http-equiv="expires" content="0"/>
|
||||||
<link rel="icon" type="image/png" href="../W/images/logo_imapsync_s.png" />
|
<link rel="icon" type="image/png" href="../S/images/logo_imapsync_s.png" />
|
||||||
<link href="../W/style.css" rel="stylesheet" type="text/css"/>
|
<link href="../S/style.css" rel="stylesheet" type="text/css"/>
|
||||||
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
@ -63,6 +63,7 @@ Examples:</p>
|
|||||||
<li>Atmail 6.x [host1] <a href="https://www.atmail.com/">https://www.atmail.com/</a></li>
|
<li>Atmail 6.x [host1] <a href="https://www.atmail.com/">https://www.atmail.com/</a></li>
|
||||||
<li>Axigen Mail Server Version 8.0.0 (<a href="https://www.axigen.com/">https://www.axigen.com/</a>)</li>
|
<li>Axigen Mail Server Version 8.0.0 (<a href="https://www.axigen.com/">https://www.axigen.com/</a>)</li>
|
||||||
<li>BincImap 1.2.3 (GPL) (<a href="http://www.bincimap.org/">http://www.bincimap.org/</a>)</li>
|
<li>BincImap 1.2.3 (GPL) (<a href="http://www.bincimap.org/">http://www.bincimap.org/</a>)</li>
|
||||||
|
<li>ClearOS <a href="https://www.clearos.com/">https://www.clearos.com/</a> uses Cyrus as IMAP backend server.</li>
|
||||||
<li>CommuniGatePro server (Redhat 8.0) (Solaris), CommuniGate Pro 5.2.17[host2] (CentOS 5.4)
|
<li>CommuniGatePro server (Redhat 8.0) (Solaris), CommuniGate Pro 5.2.17[host2] (CentOS 5.4)
|
||||||
(<a href="http://www.communigate.com/">http://www.communigate.com/</a>) </li>
|
(<a href="http://www.communigate.com/">http://www.communigate.com/</a>) </li>
|
||||||
<li>Courier IMAP 1.5.1, 2.2.0, 2.1.1, 2.2.1, 3.0.8, 3.0.3, 4.1.1 (GPL)
|
<li>Courier IMAP 1.5.1, 2.2.0, 2.1.1, 2.2.1, 3.0.8, 3.0.3, 4.1.1 (GPL)
|
||||||
@ -180,19 +181,19 @@ that's my job.
|
|||||||
<div>
|
<div>
|
||||||
<a href="http://validator.w3.org/check?uri=referer">
|
<a href="http://validator.w3.org/check?uri=referer">
|
||||||
<img
|
<img
|
||||||
src="../W/images/valid-xhtml10"
|
src="../S/images/valid-xhtml10"
|
||||||
alt="Valid XHTML 1.0 Strict" height="31" width="88" />
|
alt="Valid XHTML 1.0 Strict" height="31" width="88" />
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a href="http://jigsaw.w3.org/css-validator/check/referer">
|
<a href="http://jigsaw.w3.org/css-validator/check/referer">
|
||||||
<img style="border:0;width:88px;height:31px"
|
<img style="border:0;width:88px;height:31px"
|
||||||
src="../W/images/vcss-blue"
|
src="../S/images/vcss-blue"
|
||||||
alt="CSS Valide !" />
|
alt="CSS Valide !" />
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a href="http://www.anybrowser.org/campaign/">
|
<a href="http://www.anybrowser.org/campaign/">
|
||||||
<img style="border:0;width:88px;height:31px"
|
<img style="border:0;width:88px;height:31px"
|
||||||
src="../W/images/ab_jlh.png"
|
src="../S/images/ab_jlh.png"
|
||||||
alt="Viewable With Any Browser" />
|
alt="Viewable With Any Browser" />
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@ -202,7 +203,7 @@ alt="Viewable With Any Browser" />
|
|||||||
<!--#config timefmt="%D" -->
|
<!--#config timefmt="%D" -->
|
||||||
<!--#config timefmt="%A %B %d, %Y" -->
|
<!--#config timefmt="%A %B %d, %Y" -->
|
||||||
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
||||||
($Id: imapservers.shtml,v 1.8 2015/11/04 18:21:08 gilles Exp gilles $)<br/>
|
($Id: imapservers.shtml,v 1.10 2016/03/03 22:36:57 gilles Exp gilles $)<br/>
|
||||||
<a href="#TOP">Top of the page</a>
|
<a href="#TOP">Top of the page</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -1,82 +1,83 @@
|
|||||||
1143 Etats-Unis_d'Amerique___ 25.84 % 25.84 % 1
|
1156 Etats-Unis_d'Amerique___ 25.47 % 25.47 % 1
|
||||||
811 Allemagne_______________ 18.34 % 44.18 % 2
|
832 Allemagne_______________ 18.33 % 43.81 % 2
|
||||||
413 Royaume-Uni_____________ 9.34 % 53.52 % 3
|
427 Royaume-Uni_____________ 9.41 % 53.22 % 3
|
||||||
212 France__________________ 4.79 % 58.31 % 4
|
220 Italie__________________ 4.85 % 58.07 % 4
|
||||||
209 Italie__________________ 4.73 % 63.03 % 5
|
219 France__________________ 4.83 % 62.89 % 5
|
||||||
201 Canada__________________ 4.54 % 67.58 % 6
|
202 Canada__________________ 4.45 % 67.34 % 6
|
||||||
179 Suisse__________________ 4.05 % 71.63 % 7
|
184 Suisse__________________ 4.05 % 71.40 % 7
|
||||||
154 Pays-Bas________________ 3.48 % 75.11 % 8
|
160 Pays-Bas________________ 3.53 % 74.92 % 8
|
||||||
151 Australie_______________ 3.41 % 78.52 % 9
|
158 Australie_______________ 3.48 % 78.40 % 9
|
||||||
90 Autriche________________ 2.03 % 80.56 % 10
|
92 Autriche________________ 2.03 % 80.43 % 10
|
||||||
80 Belgique________________ 1.81 % 82.36 % 11
|
83 Espagne_________________ 1.83 % 82.26 % 11
|
||||||
76 Espagne_________________ 1.72 % 84.08 % 12
|
83 Belgique________________ 1.83 % 84.09 % 12
|
||||||
65 Suede___________________ 1.47 % 85.55 % 13
|
65 Suede___________________ 1.43 % 85.52 % 13
|
||||||
52 Danemark________________ 1.18 % 86.73 % 14
|
56 Danemark________________ 1.23 % 86.76 % 14
|
||||||
48 Bresil__________________ 1.09 % 87.81 % 15
|
48 Bresil__________________ 1.06 % 87.81 % 15
|
||||||
41 Norvege_________________ 0.93 % 88.74 % 16
|
41 Norvege_________________ 0.90 % 88.72 % 16
|
||||||
31 Finlande________________ 0.70 % 89.44 % 17
|
31 Pologne_________________ 0.68 % 89.40 % 17
|
||||||
29 Pologne_________________ 0.66 % 90.10 % 18
|
31 Finlande________________ 0.68 % 90.08 % 18
|
||||||
25 Republique_tcheque______ 0.57 % 90.66 % 19
|
26 Japon___________________ 0.57 % 90.66 % 19
|
||||||
25 Japon___________________ 0.57 % 91.23 % 20
|
25 Republique_tcheque______ 0.55 % 91.21 % 20
|
||||||
25 ________________________ 0.57 % 91.79 % 21
|
25 ________________________ 0.55 % 91.76 % 21
|
||||||
22 Russie__________________ 0.50 % 92.29 % 22
|
23 Irlande_________________ 0.51 % 92.27 % 22
|
||||||
22 Irlande_________________ 0.50 % 92.79 % 23
|
22 Russie__________________ 0.48 % 92.75 % 23
|
||||||
21 Nouvelle-Zelande________ 0.47 % 93.26 % 24
|
21 Nouvelle-Zelande________ 0.46 % 93.21 % 24
|
||||||
18 Hongrie_________________ 0.41 % 93.67 % 25
|
20 Hongrie_________________ 0.44 % 93.65 % 25
|
||||||
15 Hong-Kong_______________ 0.34 % 94.01 % 26
|
16 Hong-Kong_______________ 0.35 % 94.01 % 26
|
||||||
15 Afrique_du_Sud__________ 0.34 % 94.35 % 27
|
15 Portugal________________ 0.33 % 94.34 % 27
|
||||||
14 Portugal________________ 0.32 % 94.66 % 28
|
15 Afrique_du_Sud__________ 0.33 % 94.67 % 28
|
||||||
13 Slovaquie_______________ 0.29 % 94.96 % 29
|
13 Slovaquie_______________ 0.29 % 94.95 % 29
|
||||||
13 Malaisie________________ 0.29 % 95.25 % 30
|
13 Malaisie________________ 0.29 % 95.24 % 30
|
||||||
12 Luxembourg______________ 0.27 % 95.52 % 31
|
13 Luxembourg______________ 0.29 % 95.53 % 31
|
||||||
12 Inde____________________ 0.27 % 95.79 % 32
|
13 Grece___________________ 0.29 % 95.81 % 32
|
||||||
12 Grece___________________ 0.27 % 96.07 % 33
|
12 Inde____________________ 0.26 % 96.08 % 33
|
||||||
12 Argentine_______________ 0.27 % 96.34 % 34
|
12 Argentine_______________ 0.26 % 96.34 % 34
|
||||||
11 Singapour_______________ 0.25 % 96.59 % 35
|
11 Singapour_______________ 0.24 % 96.58 % 35
|
||||||
11 Israel__________________ 0.25 % 96.83 % 36
|
11 Israel__________________ 0.24 % 96.83 % 36
|
||||||
11 Chine___________________ 0.25 % 97.08 % 37
|
11 Chine___________________ 0.24 % 97.07 % 37
|
||||||
11 Chili___________________ 0.25 % 97.33 % 38
|
11 Chili___________________ 0.24 % 97.31 % 38
|
||||||
10 Mexique_________________ 0.23 % 97.56 % 39
|
10 Roumanie________________ 0.22 % 97.53 % 39
|
||||||
9 Roumanie________________ 0.20 % 97.76 % 40
|
10 Mexique_________________ 0.22 % 97.75 % 40
|
||||||
8 Slovenie________________ 0.18 % 97.94 % 41
|
8 Slovenie________________ 0.18 % 97.93 % 41
|
||||||
8 Emirats_Arabes_Unis_____ 0.18 % 98.12 % 42
|
8 Emirats_Arabes_Unis_____ 0.18 % 98.10 % 42
|
||||||
7 Lettonie________________ 0.16 % 98.28 % 43
|
7 Lettonie________________ 0.15 % 98.26 % 43
|
||||||
5 Thailande_______________ 0.11 % 98.39 % 44
|
5 Thailande_______________ 0.11 % 98.37 % 44
|
||||||
5 Malte___________________ 0.11 % 98.51 % 45
|
5 Malte___________________ 0.11 % 98.48 % 45
|
||||||
5 Islande_________________ 0.11 % 98.62 % 46
|
5 Islande_________________ 0.11 % 98.59 % 46
|
||||||
4 Turquie_________________ 0.09 % 98.71 % 47
|
4 Turquie_________________ 0.09 % 98.68 % 47
|
||||||
4 Indonesie_______________ 0.09 % 98.80 % 48
|
4 Indonesie_______________ 0.09 % 98.77 % 48
|
||||||
4 Egypte__________________ 0.09 % 98.89 % 49
|
4 Egypte__________________ 0.09 % 98.85 % 49
|
||||||
4 Croatie_________________ 0.09 % 98.98 % 50
|
4 Croatie_________________ 0.09 % 98.94 % 50
|
||||||
4 Bulgarie________________ 0.09 % 99.07 % 51
|
4 Bulgarie________________ 0.09 % 99.03 % 51
|
||||||
3 Venezuela_______________ 0.07 % 99.14 % 52
|
3 Venezuela_______________ 0.07 % 99.10 % 52
|
||||||
3 Philippines_____________ 0.07 % 99.21 % 53
|
3 Serbie__________________ 0.07 % 99.16 % 53
|
||||||
3 Estonie_________________ 0.07 % 99.28 % 54
|
3 Philippines_____________ 0.07 % 99.23 % 54
|
||||||
2 Vietnam_________________ 0.05 % 99.32 % 55
|
3 Estonie_________________ 0.07 % 99.29 % 55
|
||||||
2 Uruguay_________________ 0.05 % 99.37 % 56
|
2 Vietnam_________________ 0.04 % 99.34 % 56
|
||||||
2 Lituanie________________ 0.05 % 99.41 % 57
|
2 Uruguay_________________ 0.04 % 99.38 % 57
|
||||||
2 Costa_Rica______________ 0.05 % 99.46 % 58
|
2 Lituanie________________ 0.04 % 99.43 % 58
|
||||||
2 Chypre__________________ 0.05 % 99.50 % 59
|
2 Costa_Rica______________ 0.04 % 99.47 % 59
|
||||||
1 Ukraine_________________ 0.02 % 99.53 % 60
|
2 Chypre__________________ 0.04 % 99.52 % 60
|
||||||
1 Trinite-et-Tobago_______ 0.02 % 99.55 % 61
|
1 Ukraine_________________ 0.02 % 99.54 % 61
|
||||||
1 Tanzanie________________ 0.02 % 99.57 % 62
|
1 Trinite-et-Tobago_______ 0.02 % 99.56 % 62
|
||||||
1 Taiwan__________________ 0.02 % 99.59 % 63
|
1 Tanzanie________________ 0.02 % 99.58 % 63
|
||||||
1 Serbie__________________ 0.02 % 99.62 % 64
|
1 Taiwan__________________ 0.02 % 99.60 % 64
|
||||||
1 Senegal_________________ 0.02 % 99.64 % 65
|
1 Senegal_________________ 0.02 % 99.63 % 65
|
||||||
1 Saint_Christophe-Nevis-Anguilla__ 0.02 % 99.66 % 66
|
1 Saint_Christophe-Nevis-Anguilla__ 0.02 % 99.65 % 66
|
||||||
1 Qatar___________________ 0.02 % 99.68 % 67
|
1 Qatar___________________ 0.02 % 99.67 % 67
|
||||||
1 Perou___________________ 0.02 % 99.71 % 68
|
1 Perou___________________ 0.02 % 99.69 % 68
|
||||||
1 Panama__________________ 0.02 % 99.73 % 69
|
1 Panama__________________ 0.02 % 99.71 % 69
|
||||||
1 Nouvelle-Caledonie______ 0.02 % 99.75 % 70
|
1 Nouvelle-Caledonie______ 0.02 % 99.74 % 70
|
||||||
1 Nigeria_________________ 0.02 % 99.77 % 71
|
1 Nigeria_________________ 0.02 % 99.76 % 71
|
||||||
1 Namibie_________________ 0.02 % 99.80 % 72
|
1 Namibie_________________ 0.02 % 99.78 % 72
|
||||||
1 Mongolie________________ 0.02 % 99.82 % 73
|
1 Mongolie________________ 0.02 % 99.80 % 73
|
||||||
1 Moldavie________________ 0.02 % 99.84 % 74
|
1 Moldavie________________ 0.02 % 99.82 % 74
|
||||||
1 Maldives________________ 0.02 % 99.86 % 75
|
1 Maldives________________ 0.02 % 99.85 % 75
|
||||||
1 Îles_Vierges_britanniques__ 0.02 % 99.89 % 76
|
1 Îles_Vierges_britanniques__ 0.02 % 99.87 % 76
|
||||||
1 Koweit__________________ 0.02 % 99.91 % 77
|
1 Koweit__________________ 0.02 % 99.89 % 77
|
||||||
1 Jordanie________________ 0.02 % 99.93 % 78
|
1 Jordanie________________ 0.02 % 99.91 % 78
|
||||||
1 Colombie________________ 0.02 % 99.95 % 79
|
1 Colombie________________ 0.02 % 99.93 % 79
|
||||||
1 Bahrein_________________ 0.02 % 99.98 % 80
|
1 Cameroun________________ 0.02 % 99.96 % 80
|
||||||
1 Antilles_neerlandaises__ 0.02 % 100.00 % 81
|
1 Bahrein_________________ 0.02 % 99.98 % 81
|
||||||
TOTAL = 4423 sales over 81 countries on Thu Jan 21 20:48:13 CET 2016
|
1 Antilles_neerlandaises__ 0.02 % 100.00 % 82
|
||||||
|
TOTAL = 4538 sales over 82 countries on Thu Mar 17 09:36:49 CET 2016
|
||||||
|
83
S/news.shtml
@ -1,37 +1,35 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html lang="en" id="TOP" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" id="TOP">
|
|
||||||
|
|
||||||
<head>
|
<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-type" content="application/xhtml+xml; charset=UTF-8" />
|
||||||
<meta http-equiv="content-style-type" content="text/css"/>
|
<title>Imapsync News</title>
|
||||||
<meta http-equiv="expires" content="0"/>
|
<meta content="Bluefish 2.2.2" name="generator" />
|
||||||
<link rel="icon" type="image/png" href="../W/images/logo_imapsync_s.png" />
|
<meta content="Gilles LAMIRAL" name="author" />
|
||||||
<link href="../W/style.css" rel="stylesheet" type="text/css"/>
|
<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>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
|
|
||||||
<h1>News about imapsync <!--#exec cmd="cat ../VERSION" --> and previous releases <a id="latest" href="../#TOP"><small>(back to menu)</small></a>
|
<h1>News about imapsync <!--#exec cmd="cat ../VERSION" --> and previous releases <a href="../#TOP" id="latest"><small>(back to menu)</small></a>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<p>imapsync <!--#exec cmd="cat ../VERSION" --> was written on <!--#flastmod file="VERSION" -->
|
<p>imapsync <!--#exec cmd="cat ../VERSION" --> was written on <!--#flastmod file="VERSION" -->
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="osw_imapsync"></div>
|
<div id="osw_imapsync"></div>
|
||||||
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script>
|
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
|
||||||
<script src="http://static.oswatershed.org/js/package_badge.js" type="text/javascript"></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>
|
<script type="text/javascript">$(document).ready(function(){ package_badge("imapsync", "#osw_imapsync"); });</script>
|
||||||
|
|
||||||
<p>See <b><a href="../ChangeLog">ChangeLog</a></b> to read what has been done in details since 2001.</p>
|
<p>See <b><a href="../ChangeLog">ChangeLog</a></b> to read what has been done in details since 2001.</p>
|
||||||
@ -40,7 +38,7 @@
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>1.677</b></li>
|
<li><b>1.683</b></li>
|
||||||
<li><b>Enhancement</b>: </li>
|
<li><b>Enhancement</b>: </li>
|
||||||
<li><b>Enhancement</b>: </li>
|
<li><b>Enhancement</b>: </li>
|
||||||
<li><b>Enhancement</b>: </li>
|
<li><b>Enhancement</b>: </li>
|
||||||
@ -59,6 +57,21 @@
|
|||||||
</ul>
|
</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>
|
||||||
|
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>1.678</b> <b>Improved website!</b> (I hope...)</li>
|
<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.
|
<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.
|
||||||
@ -79,13 +92,14 @@ without using <tt>PERL_LWP_ENV_PROXY=1</tt></li>
|
|||||||
|
|
||||||
|
|
||||||
<li><b>Refactoring</b>: Removed <tt>--allow3xx</tt> option.</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>
|
<li><b>Refactoring</b>: Continue to move to one global $sync-> in order to reduce number of parameters in routines.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>1.670</b> Folders <b>mapping made easy</b> with <b>--automap</b></li>
|
<li><b>1.670</b> Folders <b>mapping made easy</b> with <b>--automap</b></li>
|
||||||
<li><b>Enhancement</b>: Added option <b><tt>--automap</tt></b> that guesses folders mapping,
|
<li><b>Enhancement</b>: Added option <b><tt>--automap</tt></b> that guesses folders mapping,
|
||||||
for folders like "Sent", "Junk", "Drafts", "All", "Archive", "Flagged".
|
for folders like "Sent", "Junk", "Drafts", "All", "Archive", "Flagged".
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>IMAP Special-Use folders described in <a href="https://tools.ietf.org/html/rfc6154">rfc6154</a>
|
<li>IMAP Special-Use folders described in <a href="https://tools.ietf.org/html/rfc6154">rfc6154</a>
|
||||||
are supported and also well known names for Exchange and common clients. </li>
|
are supported and also well known names for Exchange and common clients. </li>
|
||||||
@ -94,6 +108,7 @@ without using <tt>PERL_LWP_ENV_PROXY=1</tt></li>
|
|||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><b>Enhancement</b>: Added <b><tt>--f1f2 str1=str2</tt></b> : Force folder str1 to be synced to str2.
|
<li><b>Enhancement</b>: Added <b><tt>--f1f2 str1=str2</tt></b> : Force folder str1 to be synced to str2.
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>Option <tt>--f1f2</tt> overrides any <tt>--automap</tt> mapping and any <tt>--regextrans2</tt> transformation. </li>
|
<li>Option <tt>--f1f2</tt> overrides any <tt>--automap</tt> mapping and any <tt>--regextrans2</tt> transformation. </li>
|
||||||
<li>Example <tt>--f1f2 Spam=Junk</tt> to map Spam folder to Junk.</li>
|
<li>Example <tt>--f1f2 Spam=Junk</tt> to map Spam folder to Junk.</li>
|
||||||
@ -106,6 +121,7 @@ without using <tt>PERL_LWP_ENV_PROXY=1</tt></li>
|
|||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li><b>Enhancement</b>: Added <a href="http://tools.ietf.org/html/rfc2971.html">IMAP4 ID extension</a>.
|
<li><b>Enhancement</b>: Added <a href="http://tools.ietf.org/html/rfc2971.html">IMAP4 ID extension</a>.
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>ID feature is on by default if supported by the IMAP servers,
|
<li>ID feature is on by default if supported by the IMAP servers,
|
||||||
use <b><tt>--noid</tt></b> to turn it off.</li>
|
use <b><tt>--noid</tt></b> to turn it off.</li>
|
||||||
@ -137,7 +153,7 @@ without using <tt>PERL_LWP_ENV_PROXY=1</tt></li>
|
|||||||
<li><b>Bug fix</b>: Changed "Host1: checking all wanted folders exist" not efficient algorithm in order
|
<li><b>Bug fix</b>: Changed "Host1: checking all wanted folders exist" not efficient algorithm in order
|
||||||
to allow efficiently a 2.4 million folders account. Yes, some accounts have this.</li>
|
to allow efficiently a 2.4 million folders account. Yes, some accounts have this.</li>
|
||||||
|
|
||||||
<li><b>Refactoring</b>: Started to use global $sync-> in order to reduce number of parameters in routines.</li>
|
<li><b>Refactoring</b>: Started to use global $sync-> in order to reduce number of parameters in routines.</li>
|
||||||
<li><b>Refactoring</b>: Some perlcritic fixes.</li>
|
<li><b>Refactoring</b>: Some perlcritic fixes.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
@ -229,10 +245,10 @@ because of case sensitivities and insensitivities.</li>
|
|||||||
<li><b>Usability</b>: Updated the code to easily switch on --noreleasecheck by default but allowing --releasecheck (some users want this feature).</li>
|
<li><b>Usability</b>: Updated the code to easily switch on --noreleasecheck by default but allowing --releasecheck (some users want this feature).</li>
|
||||||
<li><b>Usability</b>: Warn syncing messges will not be simulated when --dry mode is on and folder on host2 does not exist yet.</li>
|
<li><b>Usability</b>: Warn syncing messges will not be simulated when --dry mode is on and folder on host2 does not exist yet.</li>
|
||||||
|
|
||||||
<li><b>Bug fix</b>: Make TLS works with last IO::Socket::SSL default value (Added SSL_verify_mode => 'SSL_VERIFY_NONE') in --tls mode.</li>
|
<li><b>Bug fix</b>: Make TLS works with last IO::Socket::SSL default value (Added SSL_verify_mode => 'SSL_VERIFY_NONE') in --tls mode.</li>
|
||||||
<li><b>Bug fix</b>: Fixed bug when creating folders on host2 with --sep2=\\ (Lotus Notes).</li>
|
<li><b>Bug fix</b>: Fixed bug when creating folders on host2 with --sep2=\\ (Lotus Notes).</li>
|
||||||
<li><b>Bug fix</b>: Try to get folder size when a folder on host2 has the same name but with a different case
|
<li><b>Bug fix</b>: Try to get folder size when a folder on host2 has the same name but with a different case
|
||||||
like OLD_MAIL -> old_mail. This avoids "does not exist" output.</li>
|
like OLD_MAIL -> old_mail. This avoids "does not exist" output.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
@ -370,21 +386,15 @@ by ignoring PERMANENTFLAGS (Exchange tests)</li>
|
|||||||
<hr />
|
<hr />
|
||||||
<div>
|
<div>
|
||||||
<a href="http://validator.w3.org/check?uri=referer">
|
<a href="http://validator.w3.org/check?uri=referer">
|
||||||
<img
|
<img width="88" height="31" alt="Valid XHTML 1.0 Strict" src="../S/images/valid-xhtml10" />
|
||||||
src="../W/images/valid-xhtml10"
|
|
||||||
alt="Valid XHTML 1.0 Strict" height="31" width="88" />
|
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a href="http://jigsaw.w3.org/css-validator/check/referer">
|
<a href="http://jigsaw.w3.org/css-validator/check/referer">
|
||||||
<img style="border:0;width:88px;height:31px"
|
<img alt="CSS Valide !" src="../S/images/vcss-blue" style="border:0;width:88px;height:31px" />
|
||||||
src="../W/images/vcss-blue"
|
|
||||||
alt="CSS Valide !" />
|
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a href="http://www.anybrowser.org/campaign/">
|
<a href="http://www.anybrowser.org/campaign/">
|
||||||
<img style="border:0;width:88px;height:31px"
|
<img alt="Viewable With Any Browser" src="../S/images/ab_jlh.png" style="border:0;width:88px;height:31px" />
|
||||||
src="../W/images/ab_jlh.png"
|
|
||||||
alt="Viewable With Any Browser" />
|
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -393,10 +403,7 @@ alt="Viewable With Any Browser" />
|
|||||||
<!--#config timefmt="%D" -->
|
<!--#config timefmt="%D" -->
|
||||||
<!--#config timefmt="%A %B %d, %Y" -->
|
<!--#config timefmt="%A %B %d, %Y" -->
|
||||||
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
||||||
($Id: news.shtml,v 1.10 2016/01/22 01:04:15 gilles Exp gilles $)<br/>
|
($Id: news.shtml,v 1.15 2016/03/17 19:59:00 gilles Exp gilles $)<br />
|
||||||
<a href="#TOP">Top of the page</a>
|
<a href="#TOP">Top of the page</a>
|
||||||
</p>
|
</p>
|
||||||
|
</body></html>
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -63,7 +63,7 @@ border:0px;
|
|||||||
<!--#config timefmt="%D" -->
|
<!--#config timefmt="%D" -->
|
||||||
<!--#config timefmt="%A %B %d, %Y" -->
|
<!--#config timefmt="%A %B %d, %Y" -->
|
||||||
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
||||||
($Id: paypal.shtml,v 1.8 2015/09/19 08:21:46 gilles Exp gilles $)
|
($Id: paypal.shtml,v 1.9 2016/03/03 15:57:41 gilles Exp gilles $)
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
</body>
|
</body>
|
@ -14,7 +14,7 @@
|
|||||||
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/>
|
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/>
|
||||||
<meta http-equiv="content-style-type" content="text/css"/>
|
<meta http-equiv="content-style-type" content="text/css"/>
|
||||||
<meta http-equiv="expires" content="0"/>
|
<meta http-equiv="expires" content="0"/>
|
||||||
<link rel="icon" type="image/png" href="W/images/logo_imapsync_s.png" />
|
<link rel="icon" type="image/png" href="S/images/logo_imapsync_s.png" />
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
body {
|
body {
|
||||||
color: black;
|
color: black;
|
||||||
@ -44,12 +44,12 @@ to view details of this transaction (if you have a Paypal account).
|
|||||||
|
|
||||||
<p>You will find the latest <b>imapsync.exe binary</b> release <!--#exec cmd="cat ../VERSION_EXE" --><br/>
|
<p>You will find the latest <b>imapsync.exe binary</b> release <!--#exec cmd="cat ../VERSION_EXE" --><br/>
|
||||||
and the latest <b>imapsync source code</b> release <!--#exec cmd="cat ../VERSION" --> at this
|
and the latest <b>imapsync source code</b> release <!--#exec cmd="cat ../VERSION" --> at this
|
||||||
<a href="../dist/<!--#exec cmd="cat ../dist/path_last.txt" -->/"><b>download page</b></a>.
|
<a href="../dist/"><b>download page</b></a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Next steps are the imapsync <a href="../#install" >installation</a>
|
Next steps are the imapsync <a href="../#install" >installation</a>
|
||||||
and then your first runs following the <a href="../#doc" >tutorial</</a>.
|
and then your first runs following the <a href="../#doc" >tutorial</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>You will receive an invoice soon, in a couple of weeks at the worst.
|
<p>You will receive an invoice soon, in a couple of weeks at the worst.
|
||||||
@ -96,7 +96,7 @@ gilles.lamiral@laposte.net</p>
|
|||||||
<!--#config timefmt="%D" -->
|
<!--#config timefmt="%D" -->
|
||||||
<!--#config timefmt="%A %B %d, %Y" -->
|
<!--#config timefmt="%A %B %d, %Y" -->
|
||||||
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b><br/>
|
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b><br/>
|
||||||
($Id: paypal_return.shtml,v 1.19 2016/01/21 02:37:53 gilles Exp gilles $)
|
($Id: paypal_return.shtml,v 1.23 2016/03/03 22:36:57 gilles Exp gilles $)
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
@ -15,8 +15,8 @@
|
|||||||
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/>
|
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/>
|
||||||
<meta http-equiv="content-style-type" content="text/css"/>
|
<meta http-equiv="content-style-type" content="text/css"/>
|
||||||
<meta http-equiv="expires" content="0"/>
|
<meta http-equiv="expires" content="0"/>
|
||||||
<link rel="icon" type="image/png" href="../W/images/logo_imapsync_s.png" />
|
<link rel="icon" type="image/png" href="../S/images/logo_imapsync_s.png" />
|
||||||
<link href="../W/style.css" rel="stylesheet" type="text/css"/>
|
<link href="../S/style.css" rel="stylesheet" type="text/css"/>
|
||||||
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
@ -37,19 +37,19 @@
|
|||||||
<div>
|
<div>
|
||||||
<a href="http://validator.w3.org/check?uri=referer">
|
<a href="http://validator.w3.org/check?uri=referer">
|
||||||
<img
|
<img
|
||||||
src="../W/images/valid-xhtml10"
|
src="../S/images/valid-xhtml10"
|
||||||
alt="Valid XHTML 1.0 Strict" height="31" width="88" />
|
alt="Valid XHTML 1.0 Strict" height="31" width="88" />
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a href="http://jigsaw.w3.org/css-validator/check/referer">
|
<a href="http://jigsaw.w3.org/css-validator/check/referer">
|
||||||
<img style="border:0;width:88px;height:31px"
|
<img style="border:0;width:88px;height:31px"
|
||||||
src="../W/images/vcss-blue"
|
src="../S/images/vcss-blue"
|
||||||
alt="CSS Valide !" />
|
alt="CSS Valide !" />
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a href="http://www.anybrowser.org/campaign/">
|
<a href="http://www.anybrowser.org/campaign/">
|
||||||
<img style="border:0;width:88px;height:31px"
|
<img style="border:0;width:88px;height:31px"
|
||||||
src="../W/images/ab_jlh.png"
|
src="../S/images/ab_jlh.png"
|
||||||
alt="Viewable With Any Browser" />
|
alt="Viewable With Any Browser" />
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@ -59,7 +59,7 @@ alt="Viewable With Any Browser" />
|
|||||||
<!--#config timefmt="%D" -->
|
<!--#config timefmt="%D" -->
|
||||||
<!--#config timefmt="%A %B %d, %Y" -->
|
<!--#config timefmt="%A %B %d, %Y" -->
|
||||||
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
||||||
($Id: template.shtml,v 1.3 2015/11/05 17:38:18 gilles Exp gilles $)<br/>
|
($Id: template.shtml,v 1.4 2016/03/03 22:36:57 gilles Exp gilles $)<br/>
|
||||||
<a href="#TOP">Top of the page</a>
|
<a href="#TOP">Top of the page</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
34
TODO
@ -1,9 +1,35 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
# $Id: TODO,v 1.149 2016/01/21 15:21:17 gilles Exp gilles $
|
# $Id: TODO,v 1.155 2016/03/13 13:01:26 gilles Exp gilles $
|
||||||
|
|
||||||
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
TODO file for imapsync
|
TODO file for imapsync
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
|
Try to act as --tls if CAPABILITY allows it and if there is no --notls.
|
||||||
|
Fallback without --tls if --tls fails.
|
||||||
|
|
||||||
|
WANTED 2016_03_11
|
||||||
|
Add a FAQ about Authentication failures and quoting.
|
||||||
|
|
||||||
|
|
||||||
|
WANTED 2016_02_10
|
||||||
|
Add stats about "Messages found crossduplicate on host1"
|
||||||
|
|
||||||
|
WANTED 2016_01_28 Stephen Sookdeo
|
||||||
|
Able to send email without attachment (in case size is the problem) and maybe note in main body that attachment was removed...
|
||||||
|
See http://unix.stackexchange.com/questions/174707/remove-delete-attachments-from-email-server-imap
|
||||||
|
http://unix.stackexchange.com/a/174726/89270
|
||||||
|
|
||||||
|
imapsync ... --pipemess 'remove_attachments --sizemin 10MB --addnote "Attachment was removed" '
|
||||||
|
|
||||||
|
WANTED 2016_03_06
|
||||||
|
Add a real test to authenticate with a ssl certificate.
|
||||||
|
|
||||||
|
WANTED 2016_03_08
|
||||||
|
Check if --ssl1 and --tls1 are used together and warn abort and abort in that case.
|
||||||
|
Same for --ssl2 and --tls2
|
||||||
|
|
||||||
Start a wiki for imapsync.
|
Start a wiki for imapsync.
|
||||||
|
|
||||||
Write a Windows tutorial, TUTORIAL_Windows.html.
|
Write a Windows tutorial, TUTORIAL_Windows.html.
|
||||||
@ -26,6 +52,10 @@ Add "df -i" with usecache and abort if the number of messages
|
|||||||
to transfer will exhaust empty inodes used by the cache.
|
to transfer will exhaust empty inodes used by the cache.
|
||||||
Looks like module Filesys::DfPortable will help for Unix and Win32.
|
Looks like module Filesys::DfPortable will help for Unix and Win32.
|
||||||
|
|
||||||
|
==== Similar skip/error messages ====
|
||||||
|
WANTED 2016_01_28 Stephen Sookdeo
|
||||||
|
List all emails that gives errors so you know exactly which. List with detailed info.
|
||||||
|
Then ability to perform action on these specific emails like delete or ignore per email.
|
||||||
|
|
||||||
WANTED 2015_06_02 Karen F Bath.
|
WANTED 2015_06_02 Karen F Bath.
|
||||||
Add skipped messages in the final dump.
|
Add skipped messages in the final dump.
|
||||||
@ -57,7 +87,7 @@ Folder [Inbox] already exists,"Error"
|
|||||||
|
|
||||||
WANTED Add a well described problem for each problem detected
|
WANTED Add a well described problem for each problem detected
|
||||||
and counted in error counter statistics.
|
and counted in error counter statistics.
|
||||||
|
==== End Similar skip/error messages ====
|
||||||
|
|
||||||
|
|
||||||
WANTED 2015_05_18
|
WANTED 2015_05_18
|
||||||
|
@ -1 +1 @@
|
|||||||
1.678
|
1.684
|
||||||
|
@ -370,3 +370,13 @@
|
|||||||
1453217776 END 1.677 : mardi 19 janvier 2016, 16:36:16 (UTC+0100)
|
1453217776 END 1.677 : mardi 19 janvier 2016, 16:36:16 (UTC+0100)
|
||||||
1453407595 BEGIN 1.678 : jeudi 21 janvier 2016, 21:19:55 (UTC+0100)
|
1453407595 BEGIN 1.678 : jeudi 21 janvier 2016, 21:19:55 (UTC+0100)
|
||||||
1453408277 END 1.678 : jeudi 21 janvier 2016, 21:31:17 (UTC+0100)
|
1453408277 END 1.678 : jeudi 21 janvier 2016, 21:31:17 (UTC+0100)
|
||||||
|
1457139168 BEGIN 1.682 : samedi 5 mars 2016, 01:52:48 (UTC+0100)
|
||||||
|
1457139341 END 1.682 : samedi 5 mars 2016, 01:55:41 (UTC+0100)
|
||||||
|
1457318569 BEGIN 1.683 : lundi 7 mars 2016, 03:42:49 (UTC+0100)
|
||||||
|
1457318753 END 1.683 : lundi 7 mars 2016, 03:45:53 (UTC+0100)
|
||||||
|
1457903122 BEGIN 1.683 : dimanche 13 mars 2016, 22:05:22 (UTC+0100)
|
||||||
|
1457903935 END 1.683 : dimanche 13 mars 2016, 22:18:55 (UTC+0100)
|
||||||
|
1458205761 BEGIN 1.684 : jeudi 17 mars 2016, 10:09:21 (UTC+0100)
|
||||||
|
1458206536 END 1.684 : jeudi 17 mars 2016, 10:22:16 (UTC+0100)
|
||||||
|
1458216703 BEGIN 1.684 : jeudi 17 mars 2016, 13:11:43 (UTC+0100)
|
||||||
|
1458217520 END 1.684 : jeudi 17 mars 2016, 13:25:20 (UTC+0100)
|
||||||
|
@ -5,6 +5,20 @@ Changes from 2.99_01 to 3.16 made by Mark Overmeer
|
|||||||
Changes from 0.09 to 2.99_01 made by David Kernen
|
Changes from 0.09 to 2.99_01 made by David Kernen
|
||||||
- Potential compatibility issues from 3.17+ highlighted with '*'
|
- Potential compatibility issues from 3.17+ highlighted with '*'
|
||||||
|
|
||||||
|
version 3.38: Tue Feb 9 02:48:21 UTC 2016
|
||||||
|
- rt.cpan.org#107592: redact credentials via debug if !Showcredentials
|
||||||
|
[Gilles Lamiral]
|
||||||
|
- rt.cpan.org#110273: failure to quote password values
|
||||||
|
(regression introduced in 3.36 via fix for rt.cpan.org#100601)
|
||||||
|
[Gilles Lamiral]
|
||||||
|
- rt.cpan.org#107593: allow getquota("")
|
||||||
|
- *Quote() now returns qq("") for defined but empty values
|
||||||
|
- rt.cpan.org#107011: fix folders_hash() docs and usage in is_parent()
|
||||||
|
[Gilles Lamiral]
|
||||||
|
- rt.cpan.org#106500: split UID EXPUNGE with a large sequence set
|
||||||
|
- added t/quota.t and t/lib/MyTest.pm for testing
|
||||||
|
- updated copyright for 2016
|
||||||
|
|
||||||
version 3.37: Fri Aug 14 11:04:53 EDT 2015
|
version 3.37: Fri Aug 14 11:04:53 EDT 2015
|
||||||
- regex fix in rt.cpan.org#96575 required Perl 5.10
|
- regex fix in rt.cpan.org#96575 required Perl 5.10
|
||||||
updated regex to be backwards compatible with Perl 5.8
|
updated regex to be backwards compatible with Perl 5.8
|
@ -31,8 +31,10 @@ t/basic.t
|
|||||||
t/body_string.t
|
t/body_string.t
|
||||||
t/bodystructure.t
|
t/bodystructure.t
|
||||||
t/fetch_hash.t
|
t/fetch_hash.t
|
||||||
|
t/lib/MyTest.pm
|
||||||
t/messageset.t
|
t/messageset.t
|
||||||
t/pod.t
|
t/pod.t
|
||||||
|
t/quota.t
|
||||||
t/simple.t
|
t/simple.t
|
||||||
t/thread.t
|
t/thread.t
|
||||||
test_template.txt
|
test_template.txt
|
@ -52,5 +52,5 @@
|
|||||||
"resources" : {
|
"resources" : {
|
||||||
"homepage" : "http://sourceforge.net/projects/mail-imapclient/"
|
"homepage" : "http://sourceforge.net/projects/mail-imapclient/"
|
||||||
},
|
},
|
||||||
"version" : "3.37"
|
"version" : "3.38"
|
||||||
}
|
}
|
@ -33,4 +33,4 @@ requires:
|
|||||||
perl: 5.008
|
perl: 5.008
|
||||||
resources:
|
resources:
|
||||||
homepage: http://sourceforge.net/projects/mail-imapclient/
|
homepage: http://sourceforge.net/projects/mail-imapclient/
|
||||||
version: 3.37
|
version: 3.38
|
@ -84,7 +84,7 @@ COPYRIGHT AND LICENSE
|
|||||||
=====================
|
=====================
|
||||||
Copyright (C) 1999-2003 The Kernen Group, Inc.
|
Copyright (C) 1999-2003 The Kernen Group, Inc.
|
||||||
Copyright (C) 2007-2009 Mark Overmeer
|
Copyright (C) 2007-2009 Mark Overmeer
|
||||||
Copyright (C) 2010-2015 Phil Pearl (Lobbes)
|
Copyright (C) 2010-2016 Phil Pearl (Lobbes)
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or modify
|
This library is free software; you can redistribute it and/or modify
|
@ -7,7 +7,7 @@ use strict;
|
|||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
package Mail::IMAPClient;
|
package Mail::IMAPClient;
|
||||||
our $VERSION = '3.37';
|
our $VERSION = '3.38';
|
||||||
|
|
||||||
use Mail::IMAPClient::MessageSet;
|
use Mail::IMAPClient::MessageSet;
|
||||||
|
|
||||||
@ -571,13 +571,14 @@ sub login {
|
|||||||
# if user is passed as a literal:
|
# if user is passed as a literal:
|
||||||
# 1. send passwd as a literal
|
# 1. send passwd as a literal
|
||||||
# 2. empty literal passwd are sent as an blank line ($CRLF)
|
# 2. empty literal passwd are sent as an blank line ($CRLF)
|
||||||
$user = ( $user eq "" ) ? qq("") : $self->Quote($user);
|
$user = $self->Quote($user);
|
||||||
if ( $user =~ /^{/ ) {
|
if ( $user =~ /^{/ ) {
|
||||||
|
my $nopasswd = ( $passwd eq "" ) ? 1 : 0;
|
||||||
$passwd = $self->Quote( $passwd, 1 ); # force literal
|
$passwd = $self->Quote( $passwd, 1 ); # force literal
|
||||||
$passwd .= $CRLF if ( $passwd eq "{0}$CRLF" ); # blank line
|
$passwd .= $CRLF if ($nopasswd); # blank line
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$passwd = qq("") if ( $passwd eq "" );
|
$passwd = $self->Quote($passwd);
|
||||||
}
|
}
|
||||||
|
|
||||||
$self->_imap_command("LOGIN $user $passwd")
|
$self->_imap_command("LOGIN $user $passwd")
|
||||||
@ -598,7 +599,7 @@ sub noop {
|
|||||||
|
|
||||||
sub proxyauth {
|
sub proxyauth {
|
||||||
my ( $self, $user ) = @_;
|
my ( $self, $user ) = @_;
|
||||||
$user = ( $user eq "" ) ? qq("") : $self->Quote($user);
|
$user = $self->Quote($user);
|
||||||
$self->_imap_command("PROXYAUTH $user") ? $self->Results : undef;
|
$self->_imap_command("PROXYAUTH $user") ? $self->Results : undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -764,7 +765,7 @@ sub subscribed {
|
|||||||
sub deleteacl {
|
sub deleteacl {
|
||||||
my ( $self, $target, $user ) = @_;
|
my ( $self, $target, $user ) = @_;
|
||||||
$target = $self->Quote($target);
|
$target = $self->Quote($target);
|
||||||
$user = ( $user eq "" ) ? qq("") : $self->Quote($user);
|
$user = $self->Quote($user);
|
||||||
|
|
||||||
$self->_imap_command(qq(DELETEACL $target $user))
|
$self->_imap_command(qq(DELETEACL $target $user))
|
||||||
or return undef;
|
or return undef;
|
||||||
@ -778,8 +779,8 @@ sub setacl {
|
|||||||
$target = $self->Quote($target);
|
$target = $self->Quote($target);
|
||||||
|
|
||||||
$user ||= $self->User;
|
$user ||= $self->User;
|
||||||
$user = ( $user eq "" ) ? qq("") : $self->Quote($user);
|
$user = $self->Quote($user);
|
||||||
$acl = ( $acl eq "" ) ? qq("") : $self->Quote($acl);
|
$acl = $self->Quote($acl);
|
||||||
|
|
||||||
$self->_imap_command(qq(SETACL $target $user $acl))
|
$self->_imap_command(qq(SETACL $target $user $acl))
|
||||||
or return undef;
|
or return undef;
|
||||||
@ -823,7 +824,7 @@ sub listrights {
|
|||||||
$target = $self->Quote($target);
|
$target = $self->Quote($target);
|
||||||
|
|
||||||
$user ||= $self->User;
|
$user ||= $self->User;
|
||||||
$user = ( $user eq "" ) ? qq("") : $self->Quote($user);
|
$user = $self->Quote($user);
|
||||||
|
|
||||||
$self->_imap_command(qq(LISTRIGHTS $target $user))
|
$self->_imap_command(qq(LISTRIGHTS $target $user))
|
||||||
or return undef;
|
or return undef;
|
||||||
@ -1312,7 +1313,6 @@ sub _imap_command_do {
|
|||||||
# for APPEND (append_string) only log first line of command
|
# for APPEND (append_string) only log first line of command
|
||||||
my $logstr = ( $string =~ /^($tag\s+APPEND\s+.*?)$CR?$LF/ ) ? $1 : $string;
|
my $logstr = ( $string =~ /^($tag\s+APPEND\s+.*?)$CR?$LF/ ) ? $1 : $string;
|
||||||
|
|
||||||
|
|
||||||
# BUG? use $self->_next_index($tag) ? or 0 ???
|
# BUG? use $self->_next_index($tag) ? or 0 ???
|
||||||
# $self->_record($tag, [$self->_next_index($tag), "INPUT", $logstr] );
|
# $self->_record($tag, [$self->_next_index($tag), "INPUT", $logstr] );
|
||||||
$self->_record( $count, [ 0, "INPUT", $logstr ] );
|
$self->_record( $count, [ 0, "INPUT", $logstr ] );
|
||||||
@ -1466,6 +1466,44 @@ sub _record {
|
|||||||
push @{ $self->{History}{$count} }, $array;
|
push @{ $self->{History}{$count} }, $array;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# try to avoid exposing auth info via debug unless Showcredentials is true
|
||||||
|
sub _redact_line {
|
||||||
|
my ( $self, $string ) = @_;
|
||||||
|
$self->Showcredentials and return undef;
|
||||||
|
|
||||||
|
my ( $tag, $cmd ) = ( $self->Count, undef );
|
||||||
|
my $retext = "[Redact: Count=$tag Showcredentials=OFF]";
|
||||||
|
my $show = $retext;
|
||||||
|
|
||||||
|
# tagged command?
|
||||||
|
if ( $string =~ s/^($tag\s+(\S+)\s+)// ) {
|
||||||
|
( $show, $cmd ) = ( $1, $2 );
|
||||||
|
|
||||||
|
# login <username|literal> <password|literal>
|
||||||
|
if ( $cmd =~ /login/i ) {
|
||||||
|
|
||||||
|
# username as literal
|
||||||
|
if ( $string =~ /^{/ ) {
|
||||||
|
$show .= $string;
|
||||||
|
}
|
||||||
|
|
||||||
|
# username (possibly quoted) string, then literal? password
|
||||||
|
elsif ( $string =~ s/^((?:"(?>(?:(?>[^"\\]+)|\\.)*)"|\S+)\s*)// ) {
|
||||||
|
$show .= $1;
|
||||||
|
$show .= ( $string =~ /^{/ ) ? $string : $retext;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elsif ( $cmd =~ /^auth/i ) {
|
||||||
|
$show .= $string;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return undef; # show it all
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $show;
|
||||||
|
}
|
||||||
|
|
||||||
# _send_line handles literal data and supports the Prewritemethod
|
# _send_line handles literal data and supports the Prewritemethod
|
||||||
sub _send_line {
|
sub _send_line {
|
||||||
my ( $self, $string, $suppress ) = @_;
|
my ( $self, $string, $suppress ) = @_;
|
||||||
@ -1476,7 +1514,13 @@ sub _send_line {
|
|||||||
# handle case where string contains a literal
|
# handle case where string contains a literal
|
||||||
if ( $string =~ s/^([^$LF\{]*\{\d+\}$CRLF)(?=.)//o ) {
|
if ( $string =~ s/^([^$LF\{]*\{\d+\}$CRLF)(?=.)//o ) {
|
||||||
my $first = $1;
|
my $first = $1;
|
||||||
$self->_debug("Sending literal: $first\tthen: $string");
|
if ( $self->Debug ) {
|
||||||
|
my $dat =
|
||||||
|
( $self->IsConnected and !$self->IsAuthenticated )
|
||||||
|
? $self->_redact_line($string)
|
||||||
|
: undef;
|
||||||
|
$self->_debug( "Sending literal: $first\tthen: ", $dat || $string );
|
||||||
|
}
|
||||||
$self->_send_line($first) or return undef;
|
$self->_send_line($first) or return undef;
|
||||||
|
|
||||||
# look for "$tag NO" or "+ ..."
|
# look for "$tag NO" or "+ ..."
|
||||||
@ -1489,15 +1533,14 @@ sub _send_line {
|
|||||||
$string = $prew->( $self, $string );
|
$string = $prew->( $self, $string );
|
||||||
}
|
}
|
||||||
|
|
||||||
my $debug ;
|
if ( $self->Debug ) {
|
||||||
if ( !$self->Showcredentials && $string =~ /^(\d+\s+LOGIN\s+).*/ ) {
|
my $dat =
|
||||||
$debug = "$1 XXXXXXXX XXXXXXXX_Showcredentials_is_off" ;
|
( $self->IsConnected and !$self->IsAuthenticated )
|
||||||
$debug = $string ;
|
? $self->_redact_line($string)
|
||||||
}else{
|
: undef;
|
||||||
$debug = $string ;
|
$self->_debug( "Sending: ", $dat || $string );
|
||||||
}
|
}
|
||||||
|
|
||||||
$self->_debug("Sending: $debug");
|
|
||||||
unless ( $self->IsConnected ) {
|
unless ( $self->IsConnected ) {
|
||||||
$self->LastError("NO not connected");
|
$self->LastError("NO not connected");
|
||||||
return undef;
|
return undef;
|
||||||
@ -2207,7 +2250,9 @@ sub fetch_hash {
|
|||||||
$l = shift @$output;
|
$l = shift @$output;
|
||||||
next ATTR;
|
next ATTR;
|
||||||
}
|
}
|
||||||
elsif ( $l=~ m/\G(?:"((?>(?:(?>[^"\\]+)|\\.)*))"|([^()\s]+))\s*/gc ) {
|
elsif (
|
||||||
|
$l =~ m/\G(?:"((?>(?:(?>[^"\\]+)|\\.)*))"|([^()\s]+))\s*/gc )
|
||||||
|
{
|
||||||
$value = defined $1 ? $1 : $2;
|
$value = defined $1 ? $1 : $2;
|
||||||
$entry->{$key} = $value;
|
$entry->{$key} = $value;
|
||||||
next ATTR;
|
next ATTR;
|
||||||
@ -2215,7 +2260,9 @@ sub fetch_hash {
|
|||||||
elsif ( $l =~ m/\G\(/gc ) {
|
elsif ( $l =~ m/\G\(/gc ) {
|
||||||
my $depth = 1;
|
my $depth = 1;
|
||||||
$value = "";
|
$value = "";
|
||||||
while ( $l =~ m/\G("((?>(?:(?>[^"\\]+)|\\.)*))"\s*|[()]|[^()"]+)/gc ) {
|
while ( $l =~
|
||||||
|
m/\G("((?>(?:(?>[^"\\]+)|\\.)*))"\s*|[()]|[^()"]+)/gc )
|
||||||
|
{
|
||||||
my $stuff = $1;
|
my $stuff = $1;
|
||||||
if ( $stuff eq "(" ) {
|
if ( $stuff eq "(" ) {
|
||||||
$depth++;
|
$depth++;
|
||||||
@ -2326,6 +2373,10 @@ sub uidexpunge {
|
|||||||
my ( $self, $msgspec ) = ( shift, shift );
|
my ( $self, $msgspec ) = ( shift, shift );
|
||||||
|
|
||||||
return undef unless $self->has_capability("UIDPLUS");
|
return undef unless $self->has_capability("UIDPLUS");
|
||||||
|
unless ( $self->Uid ) {
|
||||||
|
$self->LastError("Uid must be enabled for uidexpunge");
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
|
||||||
my $msg =
|
my $msg =
|
||||||
UNIVERSAL::isa( $msgspec, 'Mail::IMAPClient::MessageSet' )
|
UNIVERSAL::isa( $msgspec, 'Mail::IMAPClient::MessageSet' )
|
||||||
@ -2334,23 +2385,35 @@ sub uidexpunge {
|
|||||||
|
|
||||||
$msg->cat(@_) if @_;
|
$msg->cat(@_) if @_;
|
||||||
|
|
||||||
if ( $self->Uid ) {
|
my ( @data, $cmd );
|
||||||
$self->_imap_command("UID EXPUNGE $msg")
|
my ($seq_set) = $self->_split_sequence( $msg, "UID EXPUNGE" );
|
||||||
|
|
||||||
|
for ( my $x = 0 ; $x <= $#$seq_set ; $x++ ) {
|
||||||
|
my $seq = $seq_set->[$x];
|
||||||
|
$self->_imap_uid_command( "EXPUNGE" => $seq )
|
||||||
or return undef;
|
or return undef;
|
||||||
}
|
my $res = $self->Results;
|
||||||
else {
|
|
||||||
$self->LastError("Uid must be enabled for uidexpunge");
|
# only keep last command and last response (* OK ...)
|
||||||
return undef;
|
$cmd = shift(@$res);
|
||||||
|
pop(@$res) if ( $x != $#{$seq_set} );
|
||||||
|
push( @data, @$res );
|
||||||
}
|
}
|
||||||
|
|
||||||
return wantarray ? $self->History : $self->Results;
|
if ( $cmd and !wantarray ) {
|
||||||
|
$cmd =~ s/^(\d+\s+.*?EXPUNGE\s+)\S+(\s*)/$1$msg$2/;
|
||||||
|
unshift( @data, $cmd );
|
||||||
|
}
|
||||||
|
|
||||||
|
#wantarray ? $self->History : $self->Results;
|
||||||
|
return wantarray ? @data : \@data;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub rename {
|
sub rename {
|
||||||
my ( $self, $from, $to ) = @_;
|
my ( $self, $from, $to ) = @_;
|
||||||
|
|
||||||
$from = ( $from eq "" ) ? qq("") : $self->Quote($from);
|
$from = $self->Quote($from);
|
||||||
$to = ( $to eq "" ) ? qq("") : $self->Quote($to);
|
$to = $self->Quote($to);
|
||||||
|
|
||||||
$self->_imap_command(qq(RENAME $from $to)) ? $self : undef;
|
$self->_imap_command(qq(RENAME $from $to)) ? $self : undef;
|
||||||
}
|
}
|
||||||
@ -2842,13 +2905,13 @@ sub is_parent {
|
|||||||
my $rec = $self->_list_or_lsub_response_parse($resp);
|
my $rec = $self->_list_or_lsub_response_parse($resp);
|
||||||
next unless defined $rec->{attrs};
|
next unless defined $rec->{attrs};
|
||||||
$self->_debug("unexpected attrs data: @$list\n") if $attrs;
|
$self->_debug("unexpected attrs data: @$list\n") if $attrs;
|
||||||
$attrs = $rec->{attrs}->[0];
|
$attrs = $rec->{attrs};
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($attrs) {
|
if ($attrs) {
|
||||||
return undef if $attrs =~ /\\NoInferiors/i;
|
return undef if grep { /\A\\NoInferiors\Z/i } @$attrs;
|
||||||
return 1 if $attrs =~ /\\HasChildren/i;
|
return 1 if grep { /\A\\HasChildren\Z/i } @$attrs;
|
||||||
return 0 if $attrs =~ /\\HasNoChildren/i;
|
return 0 if grep { /\A\\HasNoChildren\Z/i } @$attrs;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$self->_debug( join( "\n\t", "no attrs for '$folder' in:", @$list ) );
|
$self->_debug( join( "\n\t", "no attrs for '$folder' in:", @$list ) );
|
||||||
@ -3327,21 +3390,21 @@ sub size {
|
|||||||
|
|
||||||
sub getquotaroot {
|
sub getquotaroot {
|
||||||
my ( $self, $what ) = @_;
|
my ( $self, $what ) = @_;
|
||||||
my $who = $what ? $self->Quote($what) : "INBOX";
|
my $who = defined $what ? $self->Quote($what) : "INBOX";
|
||||||
return $self->_imap_command("GETQUOTAROOT $who") ? $self->Results : undef;
|
return $self->_imap_command("GETQUOTAROOT $who") ? $self->Results : undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
# BUG? using user/$User here and INBOX in quota/quota_usage
|
# BUG? using user/$User here and INBOX in quota/quota_usage
|
||||||
sub getquota {
|
sub getquota {
|
||||||
my ( $self, $what ) = @_;
|
my ( $self, $what ) = @_;
|
||||||
my $who = $what ? $self->Quote($what) : "user/" . $self->User;
|
my $who = defined $what ? $self->Quote($what) : "user/" . $self->User;
|
||||||
return $self->_imap_command("GETQUOTA $who") ? $self->Results : undef;
|
return $self->_imap_command("GETQUOTA $who") ? $self->Results : undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
# usage: $self->setquota($quotaroot, storage => 512, ...)
|
# usage: $self->setquota($quotaroot, storage => 512, ...)
|
||||||
sub setquota(@) {
|
sub setquota(@) {
|
||||||
my ( $self, $what ) = ( shift, shift );
|
my ( $self, $what ) = ( shift, shift );
|
||||||
my $who = $what ? $self->Quote($what) : "user/" . $self->User;
|
my $who = defined $what ? $self->Quote($what) : "user/" . $self->User;
|
||||||
my @limits;
|
my @limits;
|
||||||
while (@_) {
|
while (@_) {
|
||||||
my ( $k, $v ) = ( $self->Quote( uc( shift @_ ) ), shift @_ );
|
my ( $k, $v ) = ( $self->Quote( uc( shift @_ ) ), shift @_ );
|
||||||
@ -3380,7 +3443,7 @@ sub Quote($;$) {
|
|||||||
if ( $force or $name =~ /["\\[:^ascii:][:cntrl:]]/s ) {
|
if ( $force or $name =~ /["\\[:^ascii:][:cntrl:]]/s ) {
|
||||||
return "{" . length($name) . "}" . $CRLF . $name;
|
return "{" . length($name) . "}" . $CRLF . $name;
|
||||||
}
|
}
|
||||||
elsif ( $name =~ /[(){}\s%*\[\]]/s ) {
|
elsif ( $name =~ /[(){}\s%*\[\]]/s or $name eq "" ) {
|
||||||
return qq("$name");
|
return qq("$name");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
@ -1196,17 +1196,18 @@ and looks like the following:
|
|||||||
|
|
||||||
{
|
{
|
||||||
name => 'Mail/Box/Name',
|
name => 'Mail/Box/Name',
|
||||||
attrs => '\Marked \HasNoChildren',
|
attrs => [ '\Marked', '\HasNoChildren' ],
|
||||||
delim => '/',
|
delim => '/',
|
||||||
}
|
}
|
||||||
|
|
||||||
IMAP servers implementing RFC6154 return attributes to be used to
|
IMAP servers implementing RFC6154 return attributes to be used to
|
||||||
identify special-use mailboxes (folders).
|
identify special-use mailboxes (folders).
|
||||||
|
|
||||||
my $sattr_re = /\b\\(?:All|Archive|Drafts|Flagged|Junk|Sent|Trash)\b/;
|
my $sattr_re = /\A\\(?:All|Archive|Drafts|Flagged|Junk|Sent|Trash)\Z/;
|
||||||
foreach my $fhash (@fhashes) {
|
foreach my $fhash (@fhashes) {
|
||||||
next unless ( $fhash->{attrs} =~ $sattr_re );
|
next unless defined $fhash->{name};
|
||||||
print("special: $fhash->{name} : $fhash->{attrs}\n");
|
my @special = grep { $sattr_re } @{ $fhash->{attrs} };
|
||||||
|
print("special: $fhash->{name} : @special\n") if (@special);
|
||||||
}
|
}
|
||||||
|
|
||||||
Version note: method added in Mail::IMAPClient 3.34
|
Version note: method added in Mail::IMAPClient 3.34
|
||||||
@ -3968,7 +3969,7 @@ http://rt.cpan.org/Public/Dist/Display.html?Name=Mail-IMAPClient
|
|||||||
|
|
||||||
Copyright (C) 1999-2003 The Kernen Group, Inc.
|
Copyright (C) 1999-2003 The Kernen Group, Inc.
|
||||||
Copyright (C) 2007-2009 Mark Overmeer
|
Copyright (C) 2007-2009 Mark Overmeer
|
||||||
Copyright (C) 2010-2015 Phil Pearl (Lobbes)
|
Copyright (C) 2010-2016 Phil Pearl (Lobbes)
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or modify
|
This library is free software; you can redistribute it and/or modify
|
@ -6,52 +6,31 @@ use IO::File qw();
|
|||||||
use Test::More;
|
use Test::More;
|
||||||
use File::Temp qw(tempfile);
|
use File::Temp qw(tempfile);
|
||||||
|
|
||||||
my $debug = $ARGV[0];
|
use lib "t/lib";
|
||||||
|
use MyTest;
|
||||||
my %parms;
|
my $params;
|
||||||
my $range = 0;
|
|
||||||
my $uidplus = 0;
|
|
||||||
my $fast = 1;
|
|
||||||
|
|
||||||
BEGIN {
|
BEGIN {
|
||||||
open TST, 'test.txt'
|
eval { $params = MyTest->new; };
|
||||||
or plan skip_all => 'test parameters not provided in test.txt';
|
$@
|
||||||
|
? plan skip_all => $@
|
||||||
while ( my $l = <TST> ) {
|
|
||||||
chomp $l;
|
|
||||||
my ( $p, $v ) = split /\=/, $l, 2;
|
|
||||||
s/^\s+//, s/\s+$// for $p, $v;
|
|
||||||
$parms{$p} = $v if $v;
|
|
||||||
}
|
|
||||||
|
|
||||||
close TST;
|
|
||||||
|
|
||||||
my @missing;
|
|
||||||
foreach my $p (qw/server user passed/) {
|
|
||||||
push( @missing, $p ) unless defined $parms{$p};
|
|
||||||
}
|
|
||||||
|
|
||||||
@missing
|
|
||||||
? plan skip_all => "missing value for: @missing"
|
|
||||||
: plan tests => 104;
|
: plan tests => 104;
|
||||||
}
|
}
|
||||||
|
|
||||||
BEGIN { use_ok('Mail::IMAPClient') or exit; }
|
BEGIN { use_ok('Mail::IMAPClient') or exit; }
|
||||||
|
|
||||||
|
my $debug = $ARGV[0];
|
||||||
|
my $range = 0;
|
||||||
|
my $uidplus = 0;
|
||||||
|
|
||||||
my %new_args = (
|
my %new_args = (
|
||||||
Server => delete $parms{server},
|
|
||||||
Port => delete $parms{port},
|
|
||||||
User => delete $parms{user},
|
|
||||||
Password => delete $parms{passed},
|
|
||||||
Authmechanism => delete $parms{authmech},
|
|
||||||
Clear => 0,
|
Clear => 0,
|
||||||
Fast_IO => $fast,
|
|
||||||
Uid => $uidplus,
|
Uid => $uidplus,
|
||||||
Debug => $debug,
|
Debug => $debug,
|
||||||
);
|
);
|
||||||
|
|
||||||
# allow other options to be placed in test.txt
|
# allow other options to be placed in test.txt
|
||||||
%new_args = ( %new_args, %parms );
|
%new_args = ( %new_args, %${params} );
|
||||||
|
|
||||||
my $imap = Mail::IMAPClient->new(
|
my $imap = Mail::IMAPClient->new(
|
||||||
%new_args,
|
%new_args,
|
||||||
@ -113,7 +92,7 @@ ok( $imap->select('inbox'), "select inbox" );
|
|||||||
[ sort keys %{ $fh[0] } ],
|
[ sort keys %{ $fh[0] } ],
|
||||||
[ sort @fh_keys ],
|
[ sort @fh_keys ],
|
||||||
"folders eq folders_hash"
|
"folders eq folders_hash"
|
||||||
)
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
# test append_file
|
# test append_file
|
||||||
@ -190,6 +169,17 @@ SKIP: {
|
|||||||
ok( $imap->delete_message($uid), "delete_message $uid" );
|
ok( $imap->delete_message($uid), "delete_message $uid" );
|
||||||
ok( $imap->uidexpunge($uid), "uidexpunge $uid" );
|
ok( $imap->uidexpunge($uid), "uidexpunge $uid" );
|
||||||
|
|
||||||
|
=begin comment
|
||||||
|
|
||||||
|
my $ol = $imap->Maxcommandlength();
|
||||||
|
$imap->Maxcommandlength(64);
|
||||||
|
my $exp = $imap->uidexpunge($uid . "," . join(",", map{$_*2} 2..40) );
|
||||||
|
$imap->Maxcommandlength($ol);
|
||||||
|
is( $exp->[0], $imap->Count . " UID EXPUNGE $uid", "UID EXPUNGE $uid" );
|
||||||
|
is( grep( /^\* $uid EXPUNGE/, @$exp ), !undef, "found EXPUNGE response" );
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
# multiple args joined internally in append()
|
# multiple args joined internally in append()
|
||||||
$uid = $imap->append( $target, $testmsg, "Some extra text too" );
|
$uid = $imap->append( $target, $testmsg, "Some extra text too" );
|
||||||
ok( defined $uid, "append test message to $target with date (uid=$uid)" );
|
ok( defined $uid, "append test message to $target with date (uid=$uid)" );
|
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"
|
.IX Title "IMAPSYNC 1"
|
||||||
.TH IMAPSYNC 1 "2016-01-21" "perl v5.14.2" "User Contributed Perl Documentation"
|
.TH IMAPSYNC 1 "2016-03-17" "perl v5.14.2" "User Contributed Perl Documentation"
|
||||||
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
|
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
|
||||||
.\" way too many mistakes in technical documents.
|
.\" way too many mistakes in technical documents.
|
||||||
.if n .ad l
|
.if n .ad l
|
||||||
@ -135,7 +135,7 @@ Synchronises mailboxes between two imap servers.
|
|||||||
Good at IMAP migration. More than 66 different IMAP server softwares
|
Good at IMAP migration. More than 66 different IMAP server softwares
|
||||||
supported with success, few failures.
|
supported with success, few failures.
|
||||||
.PP
|
.PP
|
||||||
$Revision: 1.678 $
|
$Revision: 1.684 $
|
||||||
.SH "SYNOPSIS"
|
.SH "SYNOPSIS"
|
||||||
.IX Header "SYNOPSIS"
|
.IX Header "SYNOPSIS"
|
||||||
.Vb 5
|
.Vb 5
|
||||||
@ -220,6 +220,12 @@ reproduced here:
|
|||||||
\& \-\-tls1 : Use a TLS connection on host1.
|
\& \-\-tls1 : Use a TLS connection on host1.
|
||||||
\& \-\-tls2 : Use a TLS connection on host2.
|
\& \-\-tls2 : Use a TLS connection on host2.
|
||||||
\& \-\-debugssl int : SSL debug mode from 0 to 4.
|
\& \-\-debugssl int : SSL debug mode from 0 to 4.
|
||||||
|
\& \-\-sslargs1 str : Pass any ssl parameter for host1 ssl or tls connection. Example:
|
||||||
|
\& \-\-sslargs1 SSL_verify_mode=1 \-\-sslargs1 SSL_version=SSLv3
|
||||||
|
\& See all possibilities in the new() method of IO::Socket::SSL
|
||||||
|
\& http://search.cpan.org/perldoc?IO::Socket::SSL#Description_Of_Methods
|
||||||
|
\& \-\-sslargs2 str : Pass any ssl parameter for host2 ssl or tls connection.
|
||||||
|
\& See \-\-sslargs1
|
||||||
\&
|
\&
|
||||||
\& \-\-timeout1 int : Connection timeout in seconds for host1.
|
\& \-\-timeout1 int : Connection timeout in seconds for host1.
|
||||||
\& Default is 120 and 0 means no timeout at all.
|
\& Default is 120 and 0 means no timeout at all.
|
||||||
@ -767,4 +773,4 @@ https://web.archive.org/web/20070202005121/http://www.imap.org/products/showall.
|
|||||||
.PP
|
.PP
|
||||||
Feedback (good or bad) will often be welcome.
|
Feedback (good or bad) will often be welcome.
|
||||||
.PP
|
.PP
|
||||||
\&\f(CW$Id:\fR imapsync,v 1.678 2016/01/21 19:47:02 gilles Exp gilles $
|
\&\f(CW$Id:\fR imapsync,v 1.684 2016/03/17 08:35:03 gilles Exp gilles $
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
|
|
||||||
RewriteEngine on
|
RewriteEngine on
|
||||||
RewriteRule "^paypal_return.shtml" "/W/paypal_return.shtml"
|
RewriteRule "^paypal_return.shtml" "/S/paypal_return.shtml"
|
||||||
RewriteRule "^paypal_return_support.shtml" "/W/paypal_return_support.shtml"
|
|
||||||
|
|
||||||
|
@ -1,54 +1,54 @@
|
|||||||
1143 Etats-Unis_d'Amerique___ 25.84 % 25.84 % 1
|
1145 Etats-Unis_d'Amerique___ 25.78 % 25.78 % 1
|
||||||
811 Allemagne_______________ 18.34 % 44.18 % 2
|
813 Allemagne_______________ 18.30 % 44.08 % 2
|
||||||
413 Royaume-Uni_____________ 9.34 % 53.52 % 3
|
418 Royaume-Uni_____________ 9.41 % 53.49 % 3
|
||||||
212 France__________________ 4.79 % 58.31 % 4
|
213 France__________________ 4.80 % 58.28 % 4
|
||||||
209 Italie__________________ 4.73 % 63.03 % 5
|
212 Italie__________________ 4.77 % 63.06 % 5
|
||||||
201 Canada__________________ 4.54 % 67.58 % 6
|
202 Canada__________________ 4.55 % 67.60 % 6
|
||||||
179 Suisse__________________ 4.05 % 71.63 % 7
|
180 Suisse__________________ 4.05 % 71.66 % 7
|
||||||
154 Pays-Bas________________ 3.48 % 75.11 % 8
|
156 Pays-Bas________________ 3.51 % 75.17 % 8
|
||||||
151 Australie_______________ 3.41 % 78.52 % 9
|
151 Australie_______________ 3.40 % 78.57 % 9
|
||||||
90 Autriche________________ 2.03 % 80.56 % 10
|
90 Autriche________________ 2.03 % 80.59 % 10
|
||||||
80 Belgique________________ 1.81 % 82.36 % 11
|
80 Belgique________________ 1.80 % 82.40 % 11
|
||||||
76 Espagne_________________ 1.72 % 84.08 % 12
|
76 Espagne_________________ 1.71 % 84.11 % 12
|
||||||
65 Suede___________________ 1.47 % 85.55 % 13
|
65 Suede___________________ 1.46 % 85.57 % 13
|
||||||
52 Danemark________________ 1.18 % 86.73 % 14
|
53 Danemark________________ 1.19 % 86.76 % 14
|
||||||
48 Bresil__________________ 1.09 % 87.81 % 15
|
48 Bresil__________________ 1.08 % 87.84 % 15
|
||||||
41 Norvege_________________ 0.93 % 88.74 % 16
|
41 Norvege_________________ 0.92 % 88.77 % 16
|
||||||
31 Finlande________________ 0.70 % 89.44 % 17
|
31 Finlande________________ 0.70 % 89.46 % 17
|
||||||
29 Pologne_________________ 0.66 % 90.10 % 18
|
29 Pologne_________________ 0.65 % 90.12 % 18
|
||||||
25 Republique_tcheque______ 0.57 % 90.66 % 19
|
26 Japon___________________ 0.59 % 90.70 % 19
|
||||||
25 Japon___________________ 0.57 % 91.23 % 20
|
25 Republique_tcheque______ 0.56 % 91.27 % 20
|
||||||
25 ________________________ 0.57 % 91.79 % 21
|
25 ________________________ 0.56 % 91.83 % 21
|
||||||
22 Russie__________________ 0.50 % 92.29 % 22
|
22 Russie__________________ 0.50 % 92.32 % 22
|
||||||
22 Irlande_________________ 0.50 % 92.79 % 23
|
22 Irlande_________________ 0.50 % 92.82 % 23
|
||||||
21 Nouvelle-Zelande________ 0.47 % 93.26 % 24
|
21 Nouvelle-Zelande________ 0.47 % 93.29 % 24
|
||||||
18 Hongrie_________________ 0.41 % 93.67 % 25
|
18 Hongrie_________________ 0.41 % 93.70 % 25
|
||||||
15 Hong-Kong_______________ 0.34 % 94.01 % 26
|
15 Hong-Kong_______________ 0.34 % 94.03 % 26
|
||||||
15 Afrique_du_Sud__________ 0.34 % 94.35 % 27
|
15 Afrique_du_Sud__________ 0.34 % 94.37 % 27
|
||||||
14 Portugal________________ 0.32 % 94.66 % 28
|
14 Portugal________________ 0.32 % 94.69 % 28
|
||||||
13 Slovaquie_______________ 0.29 % 94.96 % 29
|
13 Slovaquie_______________ 0.29 % 94.98 % 29
|
||||||
13 Malaisie________________ 0.29 % 95.25 % 30
|
13 Malaisie________________ 0.29 % 95.27 % 30
|
||||||
12 Luxembourg______________ 0.27 % 95.52 % 31
|
12 Luxembourg______________ 0.27 % 95.54 % 31
|
||||||
12 Inde____________________ 0.27 % 95.79 % 32
|
12 Inde____________________ 0.27 % 95.81 % 32
|
||||||
12 Grece___________________ 0.27 % 96.07 % 33
|
12 Grece___________________ 0.27 % 96.08 % 33
|
||||||
12 Argentine_______________ 0.27 % 96.34 % 34
|
12 Argentine_______________ 0.27 % 96.35 % 34
|
||||||
11 Singapour_______________ 0.25 % 96.59 % 35
|
11 Singapour_______________ 0.25 % 96.60 % 35
|
||||||
11 Israel__________________ 0.25 % 96.83 % 36
|
11 Israel__________________ 0.25 % 96.85 % 36
|
||||||
11 Chine___________________ 0.25 % 97.08 % 37
|
11 Chine___________________ 0.25 % 97.10 % 37
|
||||||
11 Chili___________________ 0.25 % 97.33 % 38
|
11 Chili___________________ 0.25 % 97.34 % 38
|
||||||
10 Mexique_________________ 0.23 % 97.56 % 39
|
10 Mexique_________________ 0.23 % 97.57 % 39
|
||||||
9 Roumanie________________ 0.20 % 97.76 % 40
|
9 Roumanie________________ 0.20 % 97.77 % 40
|
||||||
8 Slovenie________________ 0.18 % 97.94 % 41
|
8 Slovenie________________ 0.18 % 97.95 % 41
|
||||||
8 Emirats_Arabes_Unis_____ 0.18 % 98.12 % 42
|
8 Emirats_Arabes_Unis_____ 0.18 % 98.13 % 42
|
||||||
7 Lettonie________________ 0.16 % 98.28 % 43
|
7 Lettonie________________ 0.16 % 98.29 % 43
|
||||||
5 Thailande_______________ 0.11 % 98.39 % 44
|
5 Thailande_______________ 0.11 % 98.40 % 44
|
||||||
5 Malte___________________ 0.11 % 98.51 % 45
|
5 Malte___________________ 0.11 % 98.51 % 45
|
||||||
5 Islande_________________ 0.11 % 98.62 % 46
|
5 Islande_________________ 0.11 % 98.63 % 46
|
||||||
4 Turquie_________________ 0.09 % 98.71 % 47
|
4 Turquie_________________ 0.09 % 98.72 % 47
|
||||||
4 Indonesie_______________ 0.09 % 98.80 % 48
|
4 Indonesie_______________ 0.09 % 98.81 % 48
|
||||||
4 Egypte__________________ 0.09 % 98.89 % 49
|
4 Egypte__________________ 0.09 % 98.90 % 49
|
||||||
4 Croatie_________________ 0.09 % 98.98 % 50
|
4 Croatie_________________ 0.09 % 98.99 % 50
|
||||||
4 Bulgarie________________ 0.09 % 99.07 % 51
|
4 Bulgarie________________ 0.09 % 99.08 % 51
|
||||||
3 Venezuela_______________ 0.07 % 99.14 % 52
|
3 Venezuela_______________ 0.07 % 99.14 % 52
|
||||||
3 Philippines_____________ 0.07 % 99.21 % 53
|
3 Philippines_____________ 0.07 % 99.21 % 53
|
||||||
3 Estonie_________________ 0.07 % 99.28 % 54
|
3 Estonie_________________ 0.07 % 99.28 % 54
|
||||||
@ -79,4 +79,4 @@
|
|||||||
1 Colombie________________ 0.02 % 99.95 % 79
|
1 Colombie________________ 0.02 % 99.95 % 79
|
||||||
1 Bahrein_________________ 0.02 % 99.98 % 80
|
1 Bahrein_________________ 0.02 % 99.98 % 80
|
||||||
1 Antilles_neerlandaises__ 0.02 % 100.00 % 81
|
1 Antilles_neerlandaises__ 0.02 % 100.00 % 81
|
||||||
TOTAL = 4423 sales over 81 countries on Wed Jan 20 18:35:17 CET 2016
|
TOTAL = 4442 sales over 81 countries on Sat Jan 23 10:46:48 CET 2016
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
|
|
||||||
# $Id: paypal_bilan,v 1.80 2015/11/01 01:13:59 gilles Exp gilles $
|
# $Id: paypal_bilan,v 1.81 2016/01/23 09:37:19 gilles Exp gilles $
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
@ -13,7 +13,7 @@ use Test::More 'no_plan' ;
|
|||||||
|
|
||||||
die unless (utf8_supported_charset('ISO-8859-1'));
|
die unless (utf8_supported_charset('ISO-8859-1'));
|
||||||
|
|
||||||
my $rcs = '$Id: paypal_bilan,v 1.80 2015/11/01 01:13:59 gilles Exp gilles $ ' ;
|
my $rcs = '$Id: paypal_bilan,v 1.81 2016/01/23 09:37:19 gilles Exp gilles $ ' ;
|
||||||
$rcs =~ m/,v (\d+\.\d+)/ ;
|
$rcs =~ m/,v (\d+\.\d+)/ ;
|
||||||
my $VERSION = ($1) ? $1: "UNKNOWN" ;
|
my $VERSION = ($1) ? $1: "UNKNOWN" ;
|
||||||
|
|
||||||
@ -891,6 +891,9 @@ First of all, I'm sorry for the delay in getting back to you.
|
|||||||
Last imapsync release is available from the page
|
Last imapsync release is available from the page
|
||||||
http://imapsync.lamiral.info/paypal_return.shtml
|
http://imapsync.lamiral.info/paypal_return.shtml
|
||||||
|
|
||||||
|
Help me improving imapsync and its services by voting at
|
||||||
|
http://imapsync.lamiral.info/#poll
|
||||||
|
|
||||||
You'll find in the attachment the invoice of imapsync
|
You'll find in the attachment the invoice of imapsync
|
||||||
$F->{object_type} you bought and paid (dd/mm/yyyy $F->{Date}).
|
$F->{object_type} you bought and paid (dd/mm/yyyy $F->{Date}).
|
||||||
The invoice file is named facture_imapsync-${invoice}.pdf
|
The invoice file is named facture_imapsync-${invoice}.pdf
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# $Id: paypal_build_invoices,v 1.101 2016/01/14 15:57:04 gilles Exp gilles $
|
# $Id: paypal_build_invoices,v 1.103 2016/03/17 20:37:06 gilles Exp gilles $
|
||||||
|
|
||||||
# usage: sh paypal_build_invoices /g/var/paypal_invoices/????
|
# usage: sh paypal_build_invoices /g/var/paypal_invoices/????
|
||||||
|
|
||||||
@ -72,9 +72,11 @@ cp /home/gilles/public_html/AGIL/factures/000/facture_imapsync-000.tex /g/var/pa
|
|||||||
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4383 /g/paypal/paypal_2015_10_complet.csv
|
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4383 /g/paypal/paypal_2015_10_complet.csv
|
||||||
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4451 /g/paypal/paypal_2015_11_complet.csv
|
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4451 /g/paypal/paypal_2015_11_complet.csv
|
||||||
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4506 /g/paypal/paypal_2015_12_complet.csv
|
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4506 /g/paypal/paypal_2015_12_complet.csv
|
||||||
|
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4575 /g/paypal/paypal_2016_01_complet.csv
|
||||||
|
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4642 /g/paypal/paypal_2016_02_complet.csv
|
||||||
|
|
||||||
set -x
|
set -x
|
||||||
/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4575 /g/paypal/paypal_2016_01_complet.csv
|
/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4695 /g/paypal/paypal_2016_03_complet.csv
|
||||||
set +x
|
set +x
|
||||||
|
|
||||||
|
|
||||||
@ -142,9 +144,11 @@ set +x
|
|||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4383 /g/paypal/paypal_2015_10_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4383 /g/paypal/paypal_2015_10_complet.csv
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4451 /g/paypal/paypal_2015_11_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4451 /g/paypal/paypal_2015_11_complet.csv
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4506 /g/paypal/paypal_2015_12_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4506 /g/paypal/paypal_2015_12_complet.csv
|
||||||
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4575 /g/paypal/paypal_2016_01_complet.csv
|
||||||
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4642 /g/paypal/paypal_2016_02_complet.csv
|
||||||
|
|
||||||
set -x
|
set -x
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4575 /g/paypal/paypal_2016_01_complet.csv
|
: g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4695 /g/paypal/paypal_2016_03_complet.csv
|
||||||
set +x
|
set +x
|
||||||
|
|
||||||
# La totale
|
# La totale
|
||||||
@ -155,7 +159,7 @@ set +x
|
|||||||
2295 2296 2297 2298 2625 2626 2970 2971 2972
|
2295 2296 2297 2298 2625 2626 2970 2971 2972
|
||||||
3093 3296 3411 3412 3450 3451 3614 3615 3616 3617
|
3093 3296 3411 3412 3450 3451 3614 3615 3616 3617
|
||||||
3807 3808 3957 3958 4030 4194 4195 4381 4382 4449 4450
|
3807 3808 3957 3958 4030 4194 4195 4381 4382 4449 4450
|
||||||
4574' \
|
4574 4641' \
|
||||||
/g/paypal/paypal_201?_??_complet.csv
|
/g/paypal/paypal_201?_??_complet.csv
|
||||||
|
|
||||||
#set -v
|
#set -v
|
||||||
@ -165,14 +169,14 @@ set +x
|
|||||||
2295 2296 2297 2298 2625 2626 2970 2971 2972
|
2295 2296 2297 2298 2625 2626 2970 2971 2972
|
||||||
3093 3296 3411 3412 3450 3451 3614 3615 3616 3617
|
3093 3296 3411 3412 3450 3451 3614 3615 3616 3617
|
||||||
3807 3808 3957 3958 4030 4194 4195 4381 4382 4449 4450
|
3807 3808 3957 3958 4030 4194 4195 4381 4382 4449 4450
|
||||||
4574' \
|
4574 4641' \
|
||||||
/g/paypal/paypal_201?_??_complet.csv
|
/g/paypal/paypal_201?_??_complet.csv
|
||||||
#set +v
|
#set +v
|
||||||
|
|
||||||
#echo 2016 : ( from 4574 to ???? ) EUR
|
#echo 2016 : ( from 4574 to ???? ) EUR
|
||||||
#set -v
|
#set -v
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan \
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan \
|
||||||
--first_in 4575 --avoid_numbers '4574 ' \
|
--first_in 4575 --avoid_numbers '4574 4641' \
|
||||||
/g/paypal/paypal_2016_??_complet.csv
|
/g/paypal/paypal_2016_??_complet.csv
|
||||||
#set +v
|
#set +v
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
|
|
||||||
# $Id: paypal_build_reply,v 1.26 2014/05/22 10:35:33 gilles Exp gilles $
|
# $Id: paypal_build_reply,v 1.28 2016/03/03 13:36:18 gilles Exp gilles $
|
||||||
|
|
||||||
use warnings;
|
use warnings;
|
||||||
use strict;
|
use strict;
|
||||||
@ -30,9 +30,9 @@ $msg_id = firstline($msg_id_file);
|
|||||||
|
|
||||||
$release = firstline( '/g/public_html/imapsync/VERSION' ) ;
|
$release = firstline( '/g/public_html/imapsync/VERSION' ) ;
|
||||||
$release_exe = firstline( '/g/public_html/imapsync/VERSION_EXE' ) ;
|
$release_exe = firstline( '/g/public_html/imapsync/VERSION_EXE' ) ;
|
||||||
my $path_last = firstline( '/g/public_html/imapsync/dist/path_last.txt' ) ;
|
#my $path_last = firstline( '/g/public_html/imapsync/dist/path_last.txt' ) ;
|
||||||
|
|
||||||
$url = "http://ks.lamiral.info/imapsync/dist/$path_last/" ;
|
$url = "http://ks.lamiral.info/imapsync/dist/" ;
|
||||||
|
|
||||||
|
|
||||||
$debug and print "Hi!\n" ;
|
$debug and print "Hi!\n" ;
|
||||||
@ -107,7 +107,7 @@ while( my $line = shift @input ) {
|
|||||||
|
|
||||||
my $address = 'gilles.lamiral@laposte.net';
|
my $address = 'gilles.lamiral@laposte.net';
|
||||||
my $address2 = 'gilles@lamiral.info';
|
my $address2 = 'gilles@lamiral.info';
|
||||||
my $rcstag = '$Id: paypal_build_reply,v 1.26 2014/05/22 10:35:33 gilles Exp gilles $';
|
my $rcstag = '$Id: paypal_build_reply,v 1.28 2016/03/03 13:36:18 gilles Exp gilles $';
|
||||||
|
|
||||||
my $download_info = "You will find the latest imapsync.exe binary (release $release_exe)
|
my $download_info = "You will find the latest imapsync.exe binary (release $release_exe)
|
||||||
and the latest imapsync source code (release $release) at the following link:
|
and the latest imapsync source code (release $release) at the following link:
|
||||||
@ -210,3 +210,7 @@ sub firstline {
|
|||||||
$line = ($line) ? $line: "error !EMPTY! [$file]";
|
$line = ($line) ? $line: "error !EMPTY! [$file]";
|
||||||
return $line;
|
return $line;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub usage {
|
||||||
|
print "$0\n" ;
|
||||||
|
}
|
||||||
|
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)
|
Main code has high complexity score (400) at line 1, column 1. Consider refactoring. (Severity: 3)
|
||||||
"$ssl1_SSL_version" is declared but not used at line 706, column 1. Unused variables clutter code and make it harder to read. (Severity: 3)
|
"$ssl1_SSL_version" is declared but not used at line 712, column 1. Unused variables clutter code and make it harder to read. (Severity: 3)
|
||||||
"$ssl2_SSL_version" is declared but not used at line 706, column 1. Unused variables clutter code and make it harder to read. (Severity: 3)
|
"$ssl2_SSL_version" is declared but not used at line 712, column 1. Unused variables clutter code and make it harder to read. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 1333, column 33. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 1341, column 33. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 1342, column 33. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 1350, column 33. See page 236 of PBP. (Severity: 3)
|
||||||
Code structure is deeply nested at line 1867, column 41. Consider refactoring. (Severity: 3)
|
Code structure is deeply nested at line 1875, column 41. Consider refactoring. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $sync at line 2039, column 2. Invent unique variable names. (Severity: 3)
|
Reused variable name in lexical scope: $sync at line 2040, column 2. Invent unique variable names. (Severity: 3)
|
||||||
Hard tabs used at line 2065, column 22. See page 20 of PBP. (Severity: 3)
|
Hard tabs used at line 2066, column 22. See page 20 of PBP. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $sync at line 2149, column 2. Invent unique variable names. (Severity: 3)
|
Reused variable name in lexical scope: $sync at line 2150, column 2. Invent unique variable names. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 2198, column 29. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 2199, column 29. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 2220, column 31. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 2221, column 31. See page 236 of PBP. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $sync at line 2229, column 2. Invent unique variable names. (Severity: 3)
|
Reused variable name in lexical scope: $sync at line 2230, column 2. Invent unique variable names. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $sync at line 2252, column 2. Invent unique variable names. (Severity: 3)
|
Reused variable name in lexical scope: $sync at line 2253, column 2. Invent unique variable names. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 2285, column 30. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 2286, column 30. See page 236 of PBP. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $sync at line 2296, column 53. Invent unique variable names. (Severity: 3)
|
Reused variable name in lexical scope: $sync at line 2297, column 53. Invent unique variable names. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $sync at line 2304, column 2. Invent unique variable names. (Severity: 3)
|
Reused variable name in lexical scope: $sync at line 2305, column 2. Invent unique variable names. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $sync at line 2352, column 2. Invent unique variable names. (Severity: 3)
|
Reused variable name in lexical scope: $sync at line 2353, column 2. Invent unique variable names. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 2388, column 26. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 2389, column 26. See page 236 of PBP. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $nb_errors at line 2436, column 2. Invent unique variable names. (Severity: 3)
|
Reused variable name in lexical scope: $nb_errors at line 2437, column 2. Invent unique variable names. (Severity: 3)
|
||||||
Too many arguments at line 2472, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 2473, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Too many arguments at line 2490, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 2491, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Too many arguments at line 2500, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 2501, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Subroutine "modules_VERSION" with high complexity score (26) at line 2618, column 1. Consider refactoring. (Severity: 3)
|
Subroutine "modules_VERSION" with high complexity score (26) at line 2619, column 1. Consider refactoring. (Severity: 3)
|
||||||
Too many arguments at line 2781, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 2782, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Subroutine "authenticate_imap" with high complexity score (21) at line 2850, column 1. Consider refactoring. (Severity: 3)
|
Subroutine "authenticate_imap" with high complexity score (21) at line 2851, column 1. Consider refactoring. (Severity: 3)
|
||||||
Too many arguments at line 2850, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 2851, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Too many arguments at line 2972, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 2981, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3048, column 62. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3057, column 62. See page 236 of PBP. (Severity: 3)
|
||||||
Backtick operator used at line 3056, column 19. Use IPC::Open3 instead. (Severity: 3)
|
Backtick operator used at line 3065, column 19. Use IPC::Open3 instead. (Severity: 3)
|
||||||
Return value of eval not tested at line 3194, column 2. You can't depend upon the value of $@/$EVAL_ERROR to tell whether an eval failed. (Severity: 3)
|
Return value of eval not tested at line 3203, column 2. You can't depend upon the value of $@/$EVAL_ERROR to tell whether an eval failed. (Severity: 3)
|
||||||
"die" used instead of "croak" at line 3239, column 2. See page 283 of PBP. (Severity: 3)
|
"die" used instead of "croak" at line 3248, column 2. See page 283 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3347, column 15. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3356, column 15. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3348, column 15. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3357, column 15. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3349, column 15. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3358, column 15. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3358, column 8. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3367, column 8. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3359, column 8. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3368, column 8. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3360, column 8. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3369, column 8. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3386, column 31. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3395, column 31. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3463, column 25. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3477, column 25. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3466, column 20. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3480, column 20. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3667, column 24. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3681, column 24. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3668, column 19. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3682, column 19. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3672, column 19. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3686, column 19. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3742, column 39. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3756, column 39. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3743, column 39. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3757, column 39. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3744, column 41. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3758, column 41. See page 236 of PBP. (Severity: 3)
|
||||||
Hard tabs used at line 3758, column 106. See page 20 of PBP. (Severity: 3)
|
Hard tabs used at line 3772, column 106. See page 20 of PBP. (Severity: 3)
|
||||||
Expression form of "eval" at line 3998, column 13. See page 161 of PBP. (Severity: 5)
|
Expression form of "eval" at line 4012, column 13. See page 161 of PBP. (Severity: 5)
|
||||||
Expression form of "eval" at line 4228, column 13. See page 161 of PBP. (Severity: 5)
|
Expression form of "eval" at line 4242, column 13. See page 161 of PBP. (Severity: 5)
|
||||||
Subroutine "copy_message" with high complexity score (25) at line 4589, column 1. Consider refactoring. (Severity: 3)
|
Subroutine "copy_message" with high complexity score (25) at line 4603, column 1. Consider refactoring. (Severity: 3)
|
||||||
Too many arguments at line 4589, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 4603, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Too many arguments at line 4665, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 4679, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Too many arguments at line 4699, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 4713, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Too many arguments at line 4888, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 4902, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $total_bytes_transferred at line 4949, column 2. Invent unique variable names. (Severity: 3)
|
Reused variable name in lexical scope: $total_bytes_transferred at line 4963, column 2. Invent unique variable names. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $nb_msg_transferred at line 4949, column 2. Invent unique variable names. (Severity: 3)
|
Reused variable name in lexical scope: $nb_msg_transferred at line 4963, column 2. Invent unique variable names. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $nb_msg_transferred at line 4962, column 9. Invent unique variable names. (Severity: 3)
|
Reused variable name in lexical scope: $nb_msg_transferred at line 4976, column 9. Invent unique variable names. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $maxmessagespersecond at line 4962, column 9. Invent unique variable names. (Severity: 3)
|
Reused variable name in lexical scope: $maxmessagespersecond at line 4976, column 9. Invent unique variable names. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $total_bytes_transferred at line 4983, column 9. Invent unique variable names. (Severity: 3)
|
Reused variable name in lexical scope: $total_bytes_transferred at line 4997, column 9. Invent unique variable names. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $maxbytespersecond at line 4983, column 9. Invent unique variable names. (Severity: 3)
|
Reused variable name in lexical scope: $maxbytespersecond at line 4997, column 9. Invent unique variable names. (Severity: 3)
|
||||||
Expression form of "eval" at line 6170, column 13. See page 161 of PBP. (Severity: 5)
|
Expression form of "eval" at line 6186, column 13. See page 161 of PBP. (Severity: 5)
|
||||||
Regular expression without "/x" flag at line 6405, column 22. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 6421, column 22. See page 236 of PBP. (Severity: 3)
|
||||||
Expression form of "eval" at line 6410, column 13. See page 161 of PBP. (Severity: 5)
|
Expression form of "eval" at line 6426, column 13. See page 161 of PBP. (Severity: 5)
|
||||||
Too many arguments at line 6573, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 6589, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Backtick operator used at line 6740, column 4. Use IPC::Open3 instead. (Severity: 3)
|
Backtick operator used at line 6756, column 4. Use IPC::Open3 instead. (Severity: 3)
|
||||||
Backtick operator used at line 6947, column 12. Use IPC::Open3 instead. (Severity: 3)
|
Backtick operator used at line 6963, column 12. Use IPC::Open3 instead. (Severity: 3)
|
||||||
Backtick operator used at line 6967, column 11. Use IPC::Open3 instead. (Severity: 3)
|
Backtick operator used at line 6983, column 11. Use IPC::Open3 instead. (Severity: 3)
|
||||||
Split long regexps into smaller qr// chunks at line 7129, column 12. See page 261 of PBP. (Severity: 3)
|
Split long regexps into smaller qr// chunks at line 7145, column 12. See page 261 of PBP. (Severity: 3)
|
||||||
Split long regexps into smaller qr// chunks at line 7155, column 12. See page 261 of PBP. (Severity: 3)
|
Split long regexps into smaller qr// chunks at line 7171, column 12. See page 261 of PBP. (Severity: 3)
|
||||||
Split long regexps into smaller qr// chunks at line 7196, column 12. See page 261 of PBP. (Severity: 3)
|
Split long regexps into smaller qr// chunks at line 7212, column 12. See page 261 of PBP. (Severity: 3)
|
||||||
Split long regexps into smaller qr// chunks at line 7208, column 12. See page 261 of PBP. (Severity: 3)
|
Split long regexps into smaller qr// chunks at line 7224, column 12. See page 261 of PBP. (Severity: 3)
|
||||||
Expression form of "eval" at line 7314, column 43. See page 161 of PBP. (Severity: 5)
|
Expression form of "eval" at line 7330, column 43. See page 161 of PBP. (Severity: 5)
|
||||||
Expression form of "eval" at line 7318, column 45. See page 161 of PBP. (Severity: 5)
|
Expression form of "eval" at line 7334, column 45. See page 161 of PBP. (Severity: 5)
|
||||||
Split long regexps into smaller qr// chunks at line 7523, column 20. See page 261 of PBP. (Severity: 3)
|
Split long regexps into smaller qr// chunks at line 7539, column 20. See page 261 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 7690, column 19. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 7706, column 19. See page 236 of PBP. (Severity: 3)
|
||||||
Close filehandles as soon as possible after opening them at line 7734, column 2. See page 209 of PBP. (Severity: 4)
|
Close filehandles as soon as possible after opening them at line 7750, column 2. See page 209 of PBP. (Severity: 4)
|
||||||
Magic variable "*STDERR" should be assigned as "local" at line 7737, column 10. See pages 81,82 of PBP. (Severity: 4)
|
Magic variable "*STDERR" should be assigned as "local" at line 7753, column 10. See pages 81,82 of PBP. (Severity: 4)
|
||||||
One-argument "select" used at line 7738, column 2. See page 224 of PBP. (Severity: 4)
|
One-argument "select" used at line 7754, column 2. See page 224 of PBP. (Severity: 4)
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
Expression form of "eval" at line 3998, column 13. See page 161 of PBP. (Severity: 5)
|
Expression form of "eval" at line 4012, column 13. See page 161 of PBP. (Severity: 5)
|
||||||
Expression form of "eval" at line 4228, column 13. See page 161 of PBP. (Severity: 5)
|
Expression form of "eval" at line 4242, column 13. See page 161 of PBP. (Severity: 5)
|
||||||
Expression form of "eval" at line 6170, column 13. See page 161 of PBP. (Severity: 5)
|
Expression form of "eval" at line 6186, column 13. See page 161 of PBP. (Severity: 5)
|
||||||
Expression form of "eval" at line 6410, column 13. See page 161 of PBP. (Severity: 5)
|
Expression form of "eval" at line 6426, column 13. See page 161 of PBP. (Severity: 5)
|
||||||
Expression form of "eval" at line 7314, column 43. See page 161 of PBP. (Severity: 5)
|
Expression form of "eval" at line 7330, column 43. See page 161 of PBP. (Severity: 5)
|
||||||
Expression form of "eval" at line 7318, column 45. See page 161 of PBP. (Severity: 5)
|
Expression form of "eval" at line 7334, column 45. See page 161 of PBP. (Severity: 5)
|
||||||
Close filehandles as soon as possible after opening them at line 7734, column 2. See page 209 of PBP. (Severity: 4)
|
Close filehandles as soon as possible after opening them at line 7750, column 2. See page 209 of PBP. (Severity: 4)
|
||||||
Magic variable "*STDERR" should be assigned as "local" at line 7737, column 10. See pages 81,82 of PBP. (Severity: 4)
|
Magic variable "*STDERR" should be assigned as "local" at line 7753, column 10. See pages 81,82 of PBP. (Severity: 4)
|
||||||
One-argument "select" used at line 7738, column 2. See page 224 of PBP. (Severity: 4)
|
One-argument "select" used at line 7754, column 2. See page 224 of PBP. (Severity: 4)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
$SHELL says /bin/bash
|
$SHELL says /bin/bash
|
||||||
$0 gives ./INSTALL.d/prerequisites_imapsync
|
$0 gives ./INSTALL.d/prerequisites_imapsync
|
||||||
ps -ef gives gilles 21682 21681 0 20:55 pts/22 00:00:00 /bin/sh ./INSTALL.d/prerequisites_imapsync
|
ps -ef gives gilles 1314 1313 0 09:43 pts/31 00:00:00 /bin/sh ./INSTALL.d/prerequisites_imapsync
|
||||||
Distributor ID: Ubuntu
|
Distributor ID: Ubuntu
|
||||||
Description: Ubuntu 12.04.5 LTS
|
Description: Ubuntu 12.04.5 LTS
|
||||||
Release: 12.04
|
Release: 12.04
|
||||||
|
@ -31,6 +31,12 @@
|
|||||||
--tls1 : Use a TLS connection on host1.
|
--tls1 : Use a TLS connection on host1.
|
||||||
--tls2 : Use a TLS connection on host2.
|
--tls2 : Use a TLS connection on host2.
|
||||||
--debugssl int : SSL debug mode from 0 to 4.
|
--debugssl int : SSL debug mode from 0 to 4.
|
||||||
|
--sslargs1 str : Pass any ssl parameter for host1 ssl or tls connection. Example:
|
||||||
|
--sslargs1 SSL_verify_mode=1 --sslargs1 SSL_version=SSLv3
|
||||||
|
See all possibilities in the new() method of IO::Socket::SSL
|
||||||
|
http://search.cpan.org/perldoc?IO::Socket::SSL#Description_Of_Methods
|
||||||
|
--sslargs2 str : Pass any ssl parameter for host2 ssl or tls connection.
|
||||||
|
See --sslargs1
|
||||||
|
|
||||||
--timeout1 int : Connection timeout in seconds for host1.
|
--timeout1 int : Connection timeout in seconds for host1.
|
||||||
Default is 120 and 0 means no timeout at all.
|
Default is 120 and 0 means no timeout at all.
|
||||||
@ -270,7 +276,7 @@
|
|||||||
|
|
||||||
Here is a [linux] system (Linux petite 3.2.0-97-generic #137-Ubuntu SMP Thu Dec 17 21:14:00 UTC 2015 i686)
|
Here is a [linux] system (Linux petite 3.2.0-97-generic #137-Ubuntu SMP Thu Dec 17 21:14:00 UTC 2015 i686)
|
||||||
With perl 5.14.2 Mail::IMAPClient 3.30
|
With perl 5.14.2 Mail::IMAPClient 3.30
|
||||||
$Id: imapsync,v 1.678 2016/01/21 19:47:02 gilles Exp gilles $
|
$Id: imapsync,v 1.684 2016/03/17 08:35:03 gilles Exp gilles $
|
||||||
This current imapsync is up to date
|
This current imapsync is up to date
|
||||||
|
|
||||||
Homepage: http://imapsync.lamiral.info/
|
Homepage: http://imapsync.lamiral.info/
|
||||||
@ -283,8 +289,8 @@ Homepage: http://imapsync.lamiral.info/
|
|||||||
'Authen::NTLM::MD4' => '1.02',
|
'Authen::NTLM::MD4' => '1.02',
|
||||||
'IO::Compress::Gzip' => '2.048',
|
'IO::Compress::Gzip' => '2.048',
|
||||||
'IO::Uncompress::Gunzip' => '2.048',
|
'IO::Uncompress::Gunzip' => '2.048',
|
||||||
'IO::Compress::Base::Common' => '2.048',
|
|
||||||
'IO::Compress::Gzip::Constants' => '2.048',
|
'IO::Compress::Gzip::Constants' => '2.048',
|
||||||
|
'IO::Compress::Base::Common' => '2.048',
|
||||||
'Compress::Raw::Zlib' => '2.048',
|
'Compress::Raw::Zlib' => '2.048',
|
||||||
'Convert::ASN1::IO' => 'undef',
|
'Convert::ASN1::IO' => 'undef',
|
||||||
'Convert::ASN1::_decode' => 'undef',
|
'Convert::ASN1::_decode' => 'undef',
|
||||||
@ -307,7 +313,6 @@ Homepage: http://imapsync.lamiral.info/
|
|||||||
'File::GlobMapper' => '1.000',
|
'File::GlobMapper' => '1.000',
|
||||||
'IO::Compress::Base' => '2.048',
|
'IO::Compress::Base' => '2.048',
|
||||||
'IO::Compress::Adapter::Bzip2' => '2.048',
|
'IO::Compress::Adapter::Bzip2' => '2.048',
|
||||||
'IO::Compress::Zlib::Constants' => '2.048',
|
|
||||||
'IO::Compress::RawDeflate' => '2.048',
|
'IO::Compress::RawDeflate' => '2.048',
|
||||||
'IO::Compress::Adapter::Deflate' => '2.048',
|
'IO::Compress::Adapter::Deflate' => '2.048',
|
||||||
'IO::Compress::Zlib::Extra' => '2.048',
|
'IO::Compress::Zlib::Extra' => '2.048',
|
||||||
@ -317,6 +322,7 @@ Homepage: http://imapsync.lamiral.info/
|
|||||||
'Compress::Raw::Bzip2' => '2.048',
|
'Compress::Raw::Bzip2' => '2.048',
|
||||||
'IO::Uncompress::Adapter::Bunzip2' => '2.048',
|
'IO::Uncompress::Adapter::Bunzip2' => '2.048',
|
||||||
'IO::Uncompress::Base' => '2.048',
|
'IO::Uncompress::Base' => '2.048',
|
||||||
|
'IO::Compress::Zlib::Constants' => '2.048',
|
||||||
'IO::Uncompress::Adapter::Inflate' => '2.048',
|
'IO::Uncompress::Adapter::Inflate' => '2.048',
|
||||||
'JSON::WebToken::Constants' => 'undef',
|
'JSON::WebToken::Constants' => 'undef',
|
||||||
'JSON::WebToken::Exception' => 'undef',
|
'JSON::WebToken::Exception' => 'undef',
|
||||||
|
7
W/tools/addFromIfMissing
Executable file
@ -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
|
||||||
|
|