mirror of
https://github.com/imapsync/imapsync.git
synced 2024-11-16 15:52:47 +01:00
2.229
This commit is contained in:
parent
e2c23d57d6
commit
399651d088
129
ChangeLog
129
ChangeLog
@ -1,17 +1,138 @@
|
|||||||
|
|
||||||
RCS file: RCS/imapsync,v
|
RCS file: RCS/imapsync,v
|
||||||
Working file: imapsync
|
Working file: imapsync
|
||||||
head: 2.200
|
head: 2.229
|
||||||
branch:
|
branch:
|
||||||
locks: strict
|
locks: strict
|
||||||
gilles: 2.200
|
gilles: 2.229
|
||||||
access list:
|
access list:
|
||||||
symbolic names:
|
symbolic names:
|
||||||
keyword substitution: kv
|
keyword substitution: kv
|
||||||
total revisions: 1100; selected revisions: 1100
|
total revisions: 1129; selected revisions: 1129
|
||||||
description:
|
description:
|
||||||
----------------------------
|
----------------------------
|
||||||
revision 2.200 locked by: gilles;
|
revision 2.229 locked by: gilles;
|
||||||
|
date: 2022/09/14 18:08:24; author: gilles; state: Exp; lines: +16 -16
|
||||||
|
Make pass "make linuxtests win32tests win64tests mactests"
|
||||||
|
----------------------------
|
||||||
|
revision 2.228
|
||||||
|
date: 2022/09/13 12:14:02; author: gilles; state: Exp; lines: +10 -9
|
||||||
|
Doc. --oauthaccesstoken1 needs --password1 presence. This is a bug.
|
||||||
|
----------------------------
|
||||||
|
revision 2.227
|
||||||
|
date: 2022/07/28 15:59:38; author: gilles; state: Exp; lines: +347 -112
|
||||||
|
Bugfix. Fixed memory measurement on MacOS and Win32 Win64
|
||||||
|
----------------------------
|
||||||
|
revision 2.226
|
||||||
|
date: 2022/07/15 12:02:47; author: gilles; state: Exp; lines: +30 -26
|
||||||
|
1966 unit tests
|
||||||
|
----------------------------
|
||||||
|
revision 2.225
|
||||||
|
date: 2022/07/14 16:56:11; author: gilles; state: Exp; lines: +14 -11
|
||||||
|
*** empty log message ***
|
||||||
|
----------------------------
|
||||||
|
revision 2.224
|
||||||
|
date: 2022/07/13 17:33:42; author: gilles; state: Exp; lines: +8 -8
|
||||||
|
typo connexions connections
|
||||||
|
----------------------------
|
||||||
|
revision 2.223
|
||||||
|
date: 2022/07/03 10:39:30; author: gilles; state: Exp; lines: +48 -11
|
||||||
|
Default is now like --noemailreport1 --noemailreport2, no final email report. Popular demand.
|
||||||
|
Added a stat value: memory footprint times time spent during the sync. Unity MiB * hour. Line "Memory consumption at the end".
|
||||||
|
----------------------------
|
||||||
|
revision 2.222
|
||||||
|
date: 2022/06/29 12:13:58; author: gilles; state: Exp; lines: +9 -10
|
||||||
|
Remove --memorystress from CGI options.
|
||||||
|
----------------------------
|
||||||
|
revision 2.221
|
||||||
|
date: 2022/06/28 23:12:01; author: gilles; state: Exp; lines: +72 -63
|
||||||
|
CGI context. Refuse to serve when the cpu load is greater than 1 per cpu. A load of 3.9 with 4 cores is ok.
|
||||||
|
----------------------------
|
||||||
|
revision 2.220
|
||||||
|
date: 2022/06/28 19:01:18; author: gilles; state: Exp; lines: +8 -8
|
||||||
|
CGI context. Refuse to server when memory left is less than 1 GB.
|
||||||
|
----------------------------
|
||||||
|
revision 2.219
|
||||||
|
date: 2022/06/25 21:33:30; author: gilles; state: Exp; lines: +24 -19
|
||||||
|
heavy load by cpu limit from 6 to 3. Because 6 is too big on ks6
|
||||||
|
----------------------------
|
||||||
|
revision 2.218
|
||||||
|
date: 2022/06/25 06:38:24; author: gilles; state: Exp; lines: +12 -9
|
||||||
|
Typo. memory_consumption_all_pids_percent with only 2 decimals.
|
||||||
|
----------------------------
|
||||||
|
revision 2.217
|
||||||
|
date: 2022/06/25 06:16:42; author: gilles; state: Exp; lines: +148 -52
|
||||||
|
CGI context. Bring back to exit on heavy load by cpu. limit is a load of 6 per core, roughly the number of processes running constantly per core.
|
||||||
|
----------------------------
|
||||||
|
revision 2.216
|
||||||
|
date: 2022/06/22 18:49:55; author: gilles; state: Exp; lines: +9 -9
|
||||||
|
typo seconde second
|
||||||
|
----------------------------
|
||||||
|
revision 2.215
|
||||||
|
date: 2022/06/22 01:44:01; author: gilles; state: Exp; lines: +34 -21
|
||||||
|
Added --exitonload option. Only available in CGI context for now.
|
||||||
|
----------------------------
|
||||||
|
revision 2.214
|
||||||
|
date: 2022/06/08 21:28:34; author: gilles; state: Exp; lines: +11 -11
|
||||||
|
load_percent_threshold is now room for two average imapsync processes.
|
||||||
|
----------------------------
|
||||||
|
revision 2.213
|
||||||
|
date: 2022/05/20 11:57:22; author: gilles; state: Exp; lines: +48 -33
|
||||||
|
Filtering buggy flags is now case insensitive. \Junk or \JUNK or \jUnK etc.
|
||||||
|
Refactoring. Added sub tests_filterbuggyflags()
|
||||||
|
----------------------------
|
||||||
|
revision 2.212
|
||||||
|
date: 2022/05/19 11:18:09; author: gilles; state: Exp; lines: +67 -16
|
||||||
|
Bugfix. Do not crash when Proc::ProcessTable field pctmem does not exist.
|
||||||
|
----------------------------
|
||||||
|
revision 2.211
|
||||||
|
date: 2022/05/19 08:37:14; author: gilles; state: Exp; lines: +10 -10
|
||||||
|
Last commit 2.210 did not pass the unit tests. Fixed.
|
||||||
|
----------------------------
|
||||||
|
revision 2.210
|
||||||
|
date: 2022/05/19 08:09:57; author: gilles; state: Exp; lines: +10 -10
|
||||||
|
Added filtering \JUNK flag in cgi context or with --filterbuggyflags
|
||||||
|
----------------------------
|
||||||
|
revision 2.209
|
||||||
|
date: 2022/05/15 11:03:02; author: gilles; state: Exp; lines: +37 -9
|
||||||
|
Enhancement. heavy_load_percent_threshold now based on memory_footprint_average_bytes 300 MB
|
||||||
|
----------------------------
|
||||||
|
revision 2.208
|
||||||
|
date: 2022/05/13 20:14:25; author: gilles; state: Exp; lines: +8 -8
|
||||||
|
90%
|
||||||
|
----------------------------
|
||||||
|
revision 2.207
|
||||||
|
date: 2022/05/12 16:31:10; author: gilles; state: Exp; lines: +21 -21
|
||||||
|
memory limit to quit from 100% to 50%. Quick fix.
|
||||||
|
----------------------------
|
||||||
|
revision 2.206
|
||||||
|
date: 2022/05/12 11:07:07; author: gilles; state: Exp; lines: +139 -54
|
||||||
|
Added dependency. Perl module Proc::ProcessTable. Not mandatory anyway. For now.
|
||||||
|
CGI context. Exit when 100% of RAM memory is used by processes. Exit with status value 69 and message "EX_UNAVAILABLE: service unavailable".
|
||||||
|
Added the % of RAM used by all processes in the memory infi line.
|
||||||
|
----------------------------
|
||||||
|
revision 2.205
|
||||||
|
date: 2022/05/09 21:29:07; author: gilles; state: Exp; lines: +264 -247
|
||||||
|
perlcritic. Change all "= shift ;" to " = shift @ARG ;"
|
||||||
|
----------------------------
|
||||||
|
revision 2.204
|
||||||
|
date: 2022/05/03 22:28:53; author: gilles; state: Exp; lines: +34 -9
|
||||||
|
Do not report final emails when --dry or --justfolders
|
||||||
|
----------------------------
|
||||||
|
revision 2.203
|
||||||
|
date: 2022/04/26 22:57:46; author: gilles; state: Exp; lines: +42 -17
|
||||||
|
Bugfix. Allow quota like: QUOTA "user-defined quota (konsoleH)" (STORAGE 988 48829 MESSAGE 20 20)
|
||||||
|
Enhancement. Added --memorystress to check memory crunching in normal run.
|
||||||
|
----------------------------
|
||||||
|
revision 2.202
|
||||||
|
date: 2022/04/18 23:40:20; author: gilles; state: Exp; lines: +89 -20
|
||||||
|
CGI context. Do not append the log file name to ../list_all_logs_auto.txt when there is no parameters.
|
||||||
|
----------------------------
|
||||||
|
revision 2.201
|
||||||
|
date: 2022/04/09 08:45:27; author: gilles; state: Exp; lines: +12 -12
|
||||||
|
Moved all getppid to mygetppid (it adds a comment on Windows, where ppid is too complicated to get.
|
||||||
|
----------------------------
|
||||||
|
revision 2.200
|
||||||
date: 2022/04/04 16:05:55; author: gilles; state: Exp; lines: +14 -10
|
date: 2022/04/04 16:05:55; author: gilles; state: Exp; lines: +14 -10
|
||||||
typo. "check the certificate server" => "check the server certificate."
|
typo. "check the certificate server" => "check the server certificate."
|
||||||
----------------------------
|
----------------------------
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Archiving.txt,v 1.26 2022/01/11 12:55:53 gilles Exp gilles $
|
$Id: FAQ.Archiving.txt,v 1.27 2022/05/19 08:56:06 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also available online at
|
This documentation is also available online at
|
||||||
https://imapsync.lamiral.info/FAQ.d/
|
https://imapsync.lamiral.info/FAQ.d/
|
||||||
@ -110,7 +110,7 @@ Q. How to move emails from one IMAP folder to another, either on the
|
|||||||
|
|
||||||
R1. Solution:
|
R1. Solution:
|
||||||
|
|
||||||
imapsync ... --minage 365 --folder Inbox --f1f2 INBOX=Archive --delete1 --noexpungeaftereach
|
imapsync ... --minage 365 --folder INBOX --f1f2 INBOX=Archive --delete1 --noexpungeaftereach
|
||||||
|
|
||||||
Use the option --noexpungeaftereach if speed is a concern.
|
Use the option --noexpungeaftereach if speed is a concern.
|
||||||
Use the option --delete1 if you want to move messages, instead of just copy/sync them.
|
Use the option --delete1 if you want to move messages, instead of just copy/sync them.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Authentication_failure.txt,v 1.15 2022/03/03 11:43:55 gilles Exp gilles $
|
$Id: FAQ.Authentication_failure.txt,v 1.16 2022/08/17 09:18:17 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also available online at
|
This documentation is also available online at
|
||||||
https://imapsync.lamiral.info/FAQ.d/
|
https://imapsync.lamiral.info/FAQ.d/
|
||||||
@ -25,17 +25,17 @@ Q. Imapsync fails with the following error, what can I do?
|
|||||||
Host1 failure: Error login on [imap.example.com] with user [foo] auth [LOGIN]: 2 NO [AUTHENTICATIONFAILED] Authentication failed
|
Host1 failure: Error login on [imap.example.com] with user [foo] auth [LOGIN]: 2 NO [AUTHENTICATIONFAILED] Authentication failed
|
||||||
|
|
||||||
|
|
||||||
R. One over four imapsync syncs ends up quickly with the error message
|
R. One over four imapsync synchronizations end up quickly with the error message
|
||||||
"Authentication failed" or "NO LOGIN failed" or a similar message.
|
"Authentication failed" or "NO LOGIN failed" or a similar message.
|
||||||
Authentication failure is the primary failure with imapsync
|
Authentication failure is the primary failure with imapsync
|
||||||
and since nothing tangible can be done without authentication,
|
and since nothing tangible can be done without authentication,
|
||||||
this stage must succeed to go further.
|
this stage must succeed to go further.
|
||||||
|
|
||||||
Here are some advices to get you pass this difficult stage of authentication:
|
Here is some advice to get you to pass this difficult stage of authentication:
|
||||||
|
|
||||||
* Triple check each credential parameter. It's not always a password problem,
|
* Triple-check each credential parameter. It's not always a password problem,
|
||||||
it can be the wrong host or the wrong user.
|
it can be the wrong host or the wrong user.
|
||||||
There are three parameters at each side:
|
There are three parameters on each side:
|
||||||
* triple check --host1
|
* triple check --host1
|
||||||
* triple check --user1
|
* triple check --user1
|
||||||
* triple check --password1
|
* triple check --password1
|
||||||
@ -43,7 +43,7 @@ Here are some advices to get you pass this difficult stage of authentication:
|
|||||||
* triple check --user2
|
* triple check --user2
|
||||||
* triple check --password2
|
* triple check --password2
|
||||||
|
|
||||||
* If you can authenticate successfully with an other imap client software
|
* If you can authenticate successfully with another imap client software
|
||||||
like Thunderbird or Outlook or Sparrow then it is a very good sign to
|
like Thunderbird or Outlook or Sparrow then it is a very good sign to
|
||||||
authenticate successfully with imapsync. Examine the parameters of
|
authenticate successfully with imapsync. Examine the parameters of
|
||||||
this other imap client and copy them as is for imapsync.
|
this other imap client and copy them as is for imapsync.
|
||||||
@ -52,7 +52,7 @@ Here are some advices to get you pass this difficult stage of authentication:
|
|||||||
At the beginning of the output, imapsync dumps all its command
|
At the beginning of the output, imapsync dumps all its command
|
||||||
line parameters; it's the line after "Command line used:".
|
line parameters; it's the line after "Command line used:".
|
||||||
With --showpasswords, imapsync prints the passwords received
|
With --showpasswords, imapsync prints the passwords received
|
||||||
instead of the string MASKED. It helps for debugging quoting issues.
|
instead of the string MASKED. It helps with debugging quoting issues.
|
||||||
Option --showpasswords shows passwords again when the IMAP dialog
|
Option --showpasswords shows passwords again when the IMAP dialog
|
||||||
is dumped by --debugimap option. Search for a line like
|
is dumped by --debugimap option. Search for a line like
|
||||||
"Sending: 2 LOGIN test1 secret1" (secret1 is the password here).
|
"Sending: 2 LOGIN test1 secret1" (secret1 is the password here).
|
||||||
@ -64,18 +64,18 @@ Here are some advices to get you pass this difficult stage of authentication:
|
|||||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Passwords_on_Mac.txt
|
https://imapsync.lamiral.info/FAQ.d/FAQ.Passwords_on_Mac.txt
|
||||||
|
|
||||||
The quickest trick may be to change the password temporally
|
The quickest trick may be to change the password temporally
|
||||||
with easy characters like the classical alphabet, a long
|
with easy characters like the classical alphabet, one long
|
||||||
string still ensure strong security.
|
string still ensures strong security.
|
||||||
|
|
||||||
* Sometimes some servers announce they support LOGIN but it
|
* Sometimes some servers announce they support LOGIN but it
|
||||||
actually fails because the authentication mechanism
|
fails because the authentication mechanism
|
||||||
working is something else like CRAM-MD5 or PLAIN.
|
working is something else like CRAM-MD5 or PLAIN.
|
||||||
So:
|
So:
|
||||||
* Try --authmech1 CRAM-MD5 (or --authmech2 CRAM-MD5)
|
* Try --authmech1 CRAM-MD5 (or --authmech2 CRAM-MD5)
|
||||||
* Try --authmech1 PLAIN (or --authmech2 PLAIN)
|
* Try --authmech1 PLAIN (or --authmech2 PLAIN)
|
||||||
|
|
||||||
* Manually test a login via ssl.
|
* Manually test a login via ssl.
|
||||||
Use either ncat or telnet-ssl or openssl commands like in the
|
Use either ncat or telnet-ssl or openssl commands, like in the
|
||||||
following examples with imap.gmail.com server:
|
following examples with imap.gmail.com server:
|
||||||
|
|
||||||
ncat --ssl -C imap.gmail.com 993
|
ncat --ssl -C imap.gmail.com 993
|
||||||
@ -85,7 +85,7 @@ Here are some advices to get you pass this difficult stage of authentication:
|
|||||||
Replace imap.gmail.com by your imap server.
|
Replace imap.gmail.com by your imap server.
|
||||||
The three commands do the same work here.
|
The three commands do the same work here.
|
||||||
|
|
||||||
Tipical dialog for an imap LOGIN command:
|
Typical dialog for an imap LOGIN command:
|
||||||
|
|
||||||
* OK Gimap ready for requests from 78.196.254.58 q1mb175739668wix
|
* OK Gimap ready for requests from 78.196.254.58 q1mb175739668wix
|
||||||
a LOGIN "gilles.lamiral@gmail.com" "secret"
|
a LOGIN "gilles.lamiral@gmail.com" "secret"
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Big_Mailbox.txt,v 1.7 2021/02/01 21:47:41 gilles Exp gilles $
|
$Id: FAQ.Big_Mailbox.txt,v 1.8 2022/04/23 13:45:48 gilles Exp gilles $
|
||||||
|
|
||||||
This document is also available online at
|
This document is also available online at
|
||||||
https://imapsync.lamiral.info/FAQ.d/
|
https://imapsync.lamiral.info/FAQ.d/
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
$Id: FAQ.Capacity_Planning.txt,v 1.3 2022/03/22 11:12:25 gilles Exp gilles $
|
$Id: FAQ.Capacity_Planning.txt,v 1.6 2022/04/23 13:45:59 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also available online at
|
This documentation is also available online at
|
||||||
https://imapsync.lamiral.info/FAQ.d/
|
https://imapsync.lamiral.info/FAQ.d/
|
||||||
@ -19,18 +19,49 @@ My current question is: Shall I use
|
|||||||
* N/2 4GB hosts
|
* N/2 4GB hosts
|
||||||
* N/4 8GB hosts
|
* N/4 8GB hosts
|
||||||
|
|
||||||
Let's do some maths
|
Let's do some observations and maths
|
||||||
|
|
||||||
|
The observations are done on the standalone imapsync online which
|
||||||
|
characteristics are:
|
||||||
|
|
||||||
|
CPU: Intel i5-2300 with 4 cores
|
||||||
|
|
||||||
|
RAM: 16 GB
|
||||||
|
|
||||||
|
NET: 100 Mbps symetrical, 12.5 MBytes/s symetrical,
|
||||||
|
so 25 MBytes/s max for a global imapsync rate.
|
||||||
|
|
||||||
|
Disks: I don't know.
|
||||||
|
|
||||||
|
System: FreeBSD 11.4
|
||||||
|
|
||||||
|
===== CPU =====
|
||||||
|
|
||||||
The CPU can be an issue. On average, an imapsync run takes 5% of the
|
The CPU can be an issue. On average, an imapsync run takes 5% of the
|
||||||
overall cpu time for a Intel i5-2300 with 4 cores. It implies 20
|
overall cpu time for a Intel i5-2300 with 4 cores. It implies 20
|
||||||
imapsync runs is ok on the current online host before the cpus become
|
imapsync runs is ok on the current online host before the cpus become
|
||||||
the bottleneck. As a rule of thumb, imapsync takes 20% of a cpu core.
|
the bottleneck. As a rule of thumb, imapsync takes 20% of a cpu core.
|
||||||
|
|
||||||
|
In the Intel i5-2300 4 cores, so far, the maximum number of imapsync
|
||||||
|
processes has been 68, which is 3 times what the system should
|
||||||
|
support in a standard imapsync workload. For this workload, the
|
||||||
|
imapsync performamces were not good, the server could not handle the load
|
||||||
|
and was even out of order for a while. For 40 imapsync processes, the
|
||||||
|
the performances are ok.
|
||||||
|
|
||||||
|
===== RAM =====
|
||||||
|
|
||||||
The RAM can be an issue. On average, an imapsync run takes 250 MB. So
|
The RAM can be an issue. On average, an imapsync run takes 250 MB. So
|
||||||
4 imapsync processes per GB is the limit before swapping to disk,
|
4 imapsync processes per GB is the limit before swapping to disk,
|
||||||
which is a known phenomenum telling when memory becomes the bottleneck.
|
which is a known phenomenum telling when memory becomes the bottleneck.
|
||||||
16 GB allows 64 imapsync processes.
|
16 GB allows 64 imapsync processes.
|
||||||
|
|
||||||
|
On the 16GB, so far, the maximum memory usage taken by imapsync processes was
|
||||||
|
13 GB. For that value, the one minute load was 10 or more, the number of
|
||||||
|
imapsync processes was around 40, the total bandwidth was around 19 MiB/s.
|
||||||
|
|
||||||
|
===== LINK =====
|
||||||
|
|
||||||
The Bandwidth I/O can be an issue. The "Average bandwidth rate" value
|
The Bandwidth I/O can be an issue. The "Average bandwidth rate" value
|
||||||
given by imapsync at the end of a transfer, and also the bandwidth
|
given by imapsync at the end of a transfer, and also the bandwidth
|
||||||
rate given during the sync on the ETA line, is the total size of all
|
rate given during the sync on the ETA line, is the total size of all
|
||||||
@ -43,13 +74,30 @@ On average, an imapsync runs at 3 Mbps both ways, rx and tx, so 6 Mbps
|
|||||||
in total. So a 100 Mbps symetric link allows 33 imapsync processes
|
in total. So a 100 Mbps symetric link allows 33 imapsync processes
|
||||||
before the link becomes the bottleneck.
|
before the link becomes the bottleneck.
|
||||||
|
|
||||||
The best minutes observed so far are a global 187 Mpbs rate (23 MiB/s)
|
The best minutes observed so far are a global 187 Mpbs rate (~23 MiB/s)
|
||||||
on a 100 Mbps symetrical link done by 28 imapsync processes in parallel,
|
on a 100 Mbps symetrical link done by 28 imapsync processes in parallel,
|
||||||
6.7 Mbps per process at that minute. But the best minutes observed for a
|
6.7 Mbps per process at that minute. But the best minutes observed for a
|
||||||
single imapsync process is at 103 Mbps, the rx/tx link limit.
|
single imapsync process is at 103 Mbps (~13 MiB/s), the rx/tx link limit.
|
||||||
|
|
||||||
|
===== DISKS =====
|
||||||
|
|
||||||
The harddisk I/O can be an issue. I don't measure it yet because
|
The harddisk I/O can be an issue. I don't measure it yet because
|
||||||
imapsync doesn't perform heavy I/0 where it runs. Well, I don't know,
|
imapsync doesn't perform heavy I/0 where it runs. Well, I don't know,
|
||||||
no measure is no knowledge, just guesses.
|
no measure is no knowledge, just guesses.
|
||||||
|
|
||||||
|
|
||||||
|
===== Repartition ======
|
||||||
|
|
||||||
|
|
||||||
|
Let's consider we have a bunch of different hosts able to run imapsync
|
||||||
|
processes. How should we distribute imapsync jobs among them?
|
||||||
|
|
||||||
|
A simple rule is "do not add more load to a host when one of the ressources
|
||||||
|
has reached its maximal. The ressources are memory, bandwidth, cpu, disk.
|
||||||
|
I ignore the disk part for now.
|
||||||
|
|
||||||
|
maximum number of imapsync processes for a host
|
||||||
|
= min( 4 * RAM_in_GB, 10 * nb_cores, bandwidth_in_mbps / 3 )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Contacts_Calendars.txt,v 1.16 2022/04/05 13:48:52 gilles Exp gilles $
|
$Id: FAQ.Contacts_Calendars.txt,v 1.17 2022/05/31 22:21:55 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also available online at
|
This documentation is also available online at
|
||||||
https://imapsync.lamiral.info/FAQ.d/
|
https://imapsync.lamiral.info/FAQ.d/
|
||||||
@ -21,10 +21,10 @@ Now the questions again with their answers.
|
|||||||
Q. Can I copy or sync Contacts, Calendars, Tasks or Chat messages with imapsync?
|
Q. Can I copy or sync Contacts, Calendars, Tasks or Chat messages with imapsync?
|
||||||
|
|
||||||
R. No, Imapsync can't migrate Contacts, Calendars, Tasks nor Chat messages.
|
R. No, Imapsync can't migrate Contacts, Calendars, Tasks nor Chat messages.
|
||||||
It's because most IMAP servers don't get contacts and calendars
|
It's because most IMAP servers don't get Contacts and Calendar
|
||||||
events via IMAP. In other words, messages synced by imapsync from
|
events via IMAP. In other words, messages synced by imapsync from
|
||||||
Contacts/Calendars/Tasks/Chat folders are not used by email servers to set
|
Contacts/Calendars/Tasks/Chat folders are not used by email servers to set
|
||||||
or get the contacts, calendars, tasks or chat messages.
|
or get the contacts, calendars, tasks, or chat messages.
|
||||||
No way via IMAP, no way via imapsync.
|
No way via IMAP, no way via imapsync.
|
||||||
|
|
||||||
So it's a good idea to avoid syncing contacts and calendars when
|
So it's a good idea to avoid syncing contacts and calendars when
|
||||||
@ -55,20 +55,20 @@ b) From Gmail to Gmail, export and import calendars in ical format,
|
|||||||
c) For Outlook, use caldavsynchronizer.
|
c) For Outlook, use caldavsynchronizer.
|
||||||
Homepage: http://caldavsynchronizer.org/
|
Homepage: http://caldavsynchronizer.org/
|
||||||
Outlook CalDav Synchronizer is a free Outlook Plugin, which synchronizes
|
Outlook CalDav Synchronizer is a free Outlook Plugin, which synchronizes
|
||||||
events, tasks and contacts between Outlook and Google, SOGo, Nextcloud or
|
events, tasks, and contacts between Outlook and Google, SOGo, Nextcloud or
|
||||||
any other CalDAV or CardDAV server.
|
any other CalDAV or CardDAV server.
|
||||||
Supported Outlook versions are Office 365, 2019, 2016, 2013, 2010 and 2007.
|
Supported Outlook versions are Office 365, 2019, 2016, 2013, 2010, and 2007.
|
||||||
Free and Open Source software tool.
|
Free and Open Source software tool.
|
||||||
|
|
||||||
|
|
||||||
d) Etc. Search the web. There's also specific tools and paid services.
|
d) Etc. Search the web. There are also specific tools and paid services.
|
||||||
There's no silver bullet to migrate Calendars and Contacts,
|
There's no silver bullet to migrate Calendars and Contacts,
|
||||||
if you find one, tell me!
|
if you find one, tell me!
|
||||||
Also consider asking experts at Sumatra company
|
Also, consider asking experts at the Sumatra company
|
||||||
https://twitter.com/sumatra_dev
|
https://twitter.com/sumatra_dev
|
||||||
http://sumatra.com/
|
http://sumatra.com/
|
||||||
|
|
||||||
e) I plan to make tools for that but so far nothing has began
|
e) I plan to make tools for that but so far nothing has begun
|
||||||
more than this discussion:
|
more than this discussion:
|
||||||
http://linux-france.tk/prj/imapsync_list/msg01797.html
|
http://linux-france.tk/prj/imapsync_list/msg01797.html
|
||||||
http://linux-france.tk/prj/imapsync_list/msg01811.html
|
http://linux-france.tk/prj/imapsync_list/msg01811.html
|
||||||
@ -77,10 +77,10 @@ http://linux-france.tk/prj/imapsync_list/msg01811.html
|
|||||||
Q. How can I avoid copying Calendar or Contacts folders?
|
Q. How can I avoid copying Calendar or Contacts folders?
|
||||||
|
|
||||||
R. You can avoid synchronizing Calendar or Contacts folders with
|
R. You can avoid synchronizing Calendar or Contacts folders with
|
||||||
the --exclude option. First you have to search what is their
|
the --exclude option. First, you have to search what is their
|
||||||
exact name. The folders listing printed by imapsync at the
|
exact name. The listing of folders printed by imapsync at the
|
||||||
beginning of a run will surely help to find their names.
|
beginning of a run will surely help to find their names.
|
||||||
Assuming their names are "Calendars" and "Contacts" use then:
|
Assuming their names are "Calendars" and "Contacts", use:
|
||||||
|
|
||||||
imapsync ... --exclude "Calendar" --exclude "Contacts"
|
imapsync ... --exclude "Calendar" --exclude "Contacts"
|
||||||
|
|
||||||
@ -89,7 +89,7 @@ R. You can avoid synchronizing Calendar or Contacts folders with
|
|||||||
like "MyCalendarZ" or "TheContactsImDoneWith".
|
like "MyCalendarZ" or "TheContactsImDoneWith".
|
||||||
Also, case matters: "calendar" does not match "Calendar".
|
Also, case matters: "calendar" does not match "Calendar".
|
||||||
|
|
||||||
To stritly avoid only "Calendar" or "Contacts" use
|
To strictly avoid only "Calendar" or "Contacts" use
|
||||||
the following
|
the following
|
||||||
|
|
||||||
On windows:
|
On windows:
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Dovecot.txt,v 1.13 2021/12/03 12:51:23 gilles Exp gilles $
|
$Id: FAQ.Dovecot.txt,v 1.14 2022/06/16 09:06:34 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also available online at
|
This documentation is also available online at
|
||||||
https://imapsync.lamiral.info/FAQ.d/
|
https://imapsync.lamiral.info/FAQ.d/
|
||||||
@ -15,6 +15,10 @@ Questions answered in this FAQ are:
|
|||||||
|
|
||||||
Q. Is there imapsync specific options to deal with Dovecot?
|
Q. Is there imapsync specific options to deal with Dovecot?
|
||||||
|
|
||||||
|
Q. The login fails with the error:
|
||||||
|
Err 1/1: Host2 failure: Error login on [...] with user [...] auth [LOGIN]: timeout waiting 120s for data from server (5x)
|
||||||
|
What can it be?
|
||||||
|
|
||||||
Q. Subfolders are not created by imapsync and the error is
|
Q. Subfolders are not created by imapsync and the error is
|
||||||
"Mailbox doesn't allow inferior mailboxes"
|
"Mailbox doesn't allow inferior mailboxes"
|
||||||
|
|
||||||
@ -34,7 +38,15 @@ Now the questions again with their answers.
|
|||||||
Q. Is there imapsync specific options to deal with Dovecot?
|
Q. Is there imapsync specific options to deal with Dovecot?
|
||||||
|
|
||||||
R. Dovecot is ok with imapsync, nothing special is needed, just the
|
R. Dovecot is ok with imapsync, nothing special is needed, just the
|
||||||
basic option, the credentials, are needed.
|
basic options, ie, the credentials, are needed.
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. The login fails with the error:
|
||||||
|
Err 1/1: Host2 failure: Error login on [...] with user [...] auth [LOGIN]: timeout waiting 120s for data from server (5x)
|
||||||
|
What can it be?
|
||||||
|
|
||||||
|
R. It can be special characters in the password. Change it with only
|
||||||
|
normal characters, characters from a-z A-Z 0-9
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. How to migrate to Dovecot with an admin/MasterUser account?
|
Q. How to migrate to Dovecot with an admin/MasterUser account?
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Emptying.txt,v 1.12 2021/09/09 11:53:53 gilles Exp gilles $
|
$Id: FAQ.Emptying.txt,v 1.14 2022/06/08 11:08:39 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also available online at
|
This documentation is also available online at
|
||||||
https://imapsync.lamiral.info/FAQ.d/
|
https://imapsync.lamiral.info/FAQ.d/
|
||||||
@ -7,7 +7,7 @@ https://imapsync.lamiral.info/FAQ.d/
|
|||||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Emptying.txt
|
https://imapsync.lamiral.info/FAQ.d/FAQ.Emptying.txt
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Imapsync tip to empty an account.
|
Imapsync tips about deletions.
|
||||||
=======================================================================
|
=======================================================================
|
||||||
|
|
||||||
Questions answered in this FAQ are:
|
Questions answered in this FAQ are:
|
||||||
@ -24,6 +24,8 @@ Q. How to delete emails older than 90 days with imapsync?
|
|||||||
|
|
||||||
Q. How to delete emails matching a certain criterium with imapsync?
|
Q. How to delete emails matching a certain criterium with imapsync?
|
||||||
|
|
||||||
|
Q. Is there a way to delete the destination folders when the source
|
||||||
|
folders are no longer there?
|
||||||
|
|
||||||
Now the questions again with their answers.
|
Now the questions again with their answers.
|
||||||
|
|
||||||
@ -128,5 +130,24 @@ Example:
|
|||||||
--host2 test.lamiral.info --user2 foo --password2 secret \
|
--host2 test.lamiral.info --user2 foo --password2 secret \
|
||||||
--delete1 --noexpungeaftereach --search "SENTBEFORE 31-Dec-2010"
|
--delete1 --noexpungeaftereach --search "SENTBEFORE 31-Dec-2010"
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
Q. Is there a way to delete the destination folders when the source
|
||||||
|
folders are no longer there?
|
||||||
|
|
||||||
|
R. Yes, use --delete2folders
|
||||||
|
|
||||||
|
--delete2folders : Delete folders in host2 that are not in host1.
|
||||||
|
For safety, first try it like this, it is safe:
|
||||||
|
--delete2folders --dry --justfolders --nofoldersizes
|
||||||
|
and see what folders will be deleted.
|
||||||
|
|
||||||
|
--delete2foldersonly reg : Delete only folders matching the regex reg.
|
||||||
|
Example: --delete2foldersonly "/^Junk$|^INBOX.Junk$/"
|
||||||
|
This option activates --delete2folders
|
||||||
|
|
||||||
|
--delete2foldersbutnot reg : Do not delete folders matching the regex rex.
|
||||||
|
Example: --delete2foldersbutnot "/Tasks$|Contacts$|Foo$/"
|
||||||
|
This option activates --delete2folders
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
=======================================================================
|
=======================================================================
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Flags.txt,v 1.26 2021/04/25 20:47:05 gilles Exp gilles $
|
$Id: FAQ.Flags.txt,v 1.28 2022/06/22 17:07:35 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also available online at
|
This documentation is also available online at
|
||||||
https://imapsync.lamiral.info/FAQ.d/
|
https://imapsync.lamiral.info/FAQ.d/
|
||||||
@ -22,6 +22,9 @@ Q. Exchange sends an email to any sender whose email is deleted
|
|||||||
without reading. It's called "unread notifications".
|
without reading. It's called "unread notifications".
|
||||||
How to set the \Seen flag on host1 (source system) before syncing?
|
How to set the \Seen flag on host1 (source system) before syncing?
|
||||||
|
|
||||||
|
Q. Every single mail synced to exchange online owns the
|
||||||
|
category $MDNSent after migration. How can I avoid this?
|
||||||
|
|
||||||
Q. Does imapsync retain the \Answered and $Forwarded flags?
|
Q. Does imapsync retain the \Answered and $Forwarded flags?
|
||||||
|
|
||||||
Q. How to fix this error: BAD Invalid system flag \FORWARDED
|
Q. How to fix this error: BAD Invalid system flag \FORWARDED
|
||||||
@ -174,6 +177,18 @@ https://translate.google.com/translate?sl=auto&tl=en&u=https%3A%2F%2Fwww.ci-solu
|
|||||||
German original:
|
German original:
|
||||||
https://www.ci-solution.com/blog/artikel/ungelesen-geloescht-verhindern.html
|
https://www.ci-solution.com/blog/artikel/ungelesen-geloescht-verhindern.html
|
||||||
(Link from Oliver B.)
|
(Link from Oliver B.)
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
Q. Every single mail synced to exchange online owns the
|
||||||
|
category $MDNSent after migration. How can I avoid this?
|
||||||
|
|
||||||
|
R. To remove the flag $MDNSent from all messages, use:
|
||||||
|
|
||||||
|
imapsync ... --regexflag "s/\$MDNSent//g"
|
||||||
|
|
||||||
|
See also the document
|
||||||
|
https://imapsync.lamiral.info/FAQ.d/FAQ.Flags.txt
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. Does imapsync retain the \Answered and $Forwarded flags?
|
Q. Does imapsync retain the \Answered and $Forwarded flags?
|
||||||
|
|
||||||
@ -305,7 +320,8 @@ You can try --nofilterflags straightaway without the
|
|||||||
"other thunderbird" proposal.
|
"other thunderbird" proposal.
|
||||||
|
|
||||||
There is also the possibility to map flags across servers
|
There is also the possibility to map flags across servers
|
||||||
with --regexflags
|
with the option --regexflag. See some --regexflag examples
|
||||||
|
above.
|
||||||
|
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Folders_Sizes.txt,v 1.5 2021/07/04 23:02:32 gilles Exp gilles $
|
$Id: FAQ.Folders_Sizes.txt,v 1.7 2022/04/23 13:45:15 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also available online at
|
This documentation is also available online at
|
||||||
https://imapsync.lamiral.info/FAQ.d/
|
https://imapsync.lamiral.info/FAQ.d/
|
||||||
@ -61,11 +61,16 @@ R. There are several reasons to explain the different counts between
|
|||||||
found at the end on the line "Messages found duplicate on host1".
|
found at the end on the line "Messages found duplicate on host1".
|
||||||
To sync duplicates, use the option --syncduplicates
|
To sync duplicates, use the option --syncduplicates
|
||||||
|
|
||||||
5) There are duplicate messages on host2 so host2 is
|
5) There are cross-duplicate messages on host1, same messages in different
|
||||||
|
folders, and you use --gmail1 or --skipcrossduplicates, which avoid
|
||||||
|
copying cross-duplicate messages in more than one folder on host2.
|
||||||
|
Use --noskipcrossduplicates if you want imapsync to sync cross-duplicates.
|
||||||
|
|
||||||
|
6) There are duplicate messages on host2 so host2 is
|
||||||
bigger than host1. Solution: use --delete2duplicates to delete
|
bigger than host1. Solution: use --delete2duplicates to delete
|
||||||
the host2 duplicates.
|
the host2 duplicates.
|
||||||
|
|
||||||
6) Cosmic rays...
|
7) Cosmic rays...
|
||||||
|
|
||||||
The important part to take into account for a good and well done sync
|
The important part to take into account for a good and well done sync
|
||||||
is the last lines of imapsync. A good sync is when you encounter the
|
is the last lines of imapsync. A good sync is when you encounter the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
# $Id: FAQ.General.txt,v 1.245 2022/04/05 13:55:47 gilles Exp gilles $
|
# $Id: FAQ.General.txt,v 1.246 2022/06/08 10:57:52 gilles Exp gilles $
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
General FAQ for imapsync
|
General FAQ for imapsync
|
||||||
@ -570,20 +570,6 @@ In imapsync, you can achieve this by using the following options:
|
|||||||
--proxyauth1 \
|
--proxyauth1 \
|
||||||
--passfile admin.txt
|
--passfile admin.txt
|
||||||
|
|
||||||
======================================================================
|
|
||||||
Q. Is there a way to delete the destination folder when the source
|
|
||||||
folder is no longer there?
|
|
||||||
|
|
||||||
R. Yes, use --delete2folders
|
|
||||||
|
|
||||||
--delete2folders : Delete folders in host2 that are not in host1 server.
|
|
||||||
For safety, first try it like this (it is safe):
|
|
||||||
--delete2folders --dry --justfolders --nofoldersizes
|
|
||||||
--delete2foldersonly <regex>: Deleted only folders matching regex.
|
|
||||||
Example: --delete2foldersonly "/^Junk$|^INBOX.Junk$/"
|
|
||||||
--delete2foldersbutnot <regex>: Do not delete folders matching regex.
|
|
||||||
Example: --delete2foldersbutnot "/Tasks$|Contacts$|Foo$/"
|
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. I would love to have a function to inject lines in the header.
|
Q. I would love to have a function to inject lines in the header.
|
||||||
Things like "X-migrated-from-foo: 20100617"
|
Things like "X-migrated-from-foo: 20100617"
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Gmail.txt,v 1.87 2022/02/10 12:42:52 gilles Exp gilles $
|
$Id: FAQ.Gmail.txt,v 1.92 2022/06/28 11:03:40 gilles Exp gilles $
|
||||||
|
|
||||||
This document is also available online at
|
This document is also available online at
|
||||||
https://imapsync.lamiral.info/FAQ.d/
|
https://imapsync.lamiral.info/FAQ.d/
|
||||||
@ -56,7 +56,9 @@ Q. What are the Gmail imap names of the folders
|
|||||||
|
|
||||||
Q. Can I transfer Gmail "Chat" messages with imapsync?
|
Q. Can I transfer Gmail "Chat" messages with imapsync?
|
||||||
|
|
||||||
Q. Can I safely use --useuid for Gmail transfers?
|
Q. Can I safely use --useuid or --usecache for Gmail transfers?
|
||||||
|
|
||||||
|
Q. Can I use --syncduplicates Gmail transfers?
|
||||||
|
|
||||||
Q. Gmail does not really delete messages in folder [Gmail]/All Mail
|
Q. Gmail does not really delete messages in folder [Gmail]/All Mail
|
||||||
What happens? What can I do?
|
What happens? What can I do?
|
||||||
@ -95,77 +97,22 @@ it has to be allowed in the Gmail configuration part:
|
|||||||
-> Click on the button "Save changes" at the bottom of the page.
|
-> Click on the button "Save changes" at the bottom of the page.
|
||||||
|
|
||||||
That's not finished, there is also the authentication issue to consider.
|
That's not finished, there is also the authentication issue to consider.
|
||||||
There are three different ways to authenticate to Gmail with Imapsync,
|
There are two different ways to authenticate to Gmail with Imapsync,
|
||||||
either:
|
either:
|
||||||
|
|
||||||
1) "Access for less secure apps"
|
1) "App password with 2-step verification"
|
||||||
2) "2-step verification"
|
|
||||||
3) XOauth2 ready for groups on any OS or
|
or
|
||||||
|
|
||||||
|
2) XOauth2 ready for groups on any OS or
|
||||||
for individual Gmail authentication on Linux.
|
for individual Gmail authentication on Linux.
|
||||||
|
|
||||||
For the last one, XOauth2, see the document
|
For the second one, XOauth2, see the document
|
||||||
https://imapsync.lamiral.info/FAQ.d/FAQ.XOAUTH2.txt
|
https://imapsync.lamiral.info/FAQ.d/FAQ.XOAUTH2.txt
|
||||||
|
|
||||||
|
|
||||||
1) "Access for less secure apps", the first way to authenticate
|
1) "App password with 2-step verification" is the first way to
|
||||||
to Gmail with Imapsync. This is the easiest way because
|
authenticate to Gmail with Imapsync.
|
||||||
you just have to turn one button on.
|
|
||||||
|
|
||||||
Go to https://myaccount.google.com/
|
|
||||||
Click on the Security tab on the left menu or go directly to
|
|
||||||
https://myaccount.google.com/security?gar=1
|
|
||||||
|
|
||||||
-> Verify 2-step verification is OFF
|
|
||||||
https://myaccount.google.com/security?hl=en&pli=1&nlr=1#signin
|
|
||||||
|
|
||||||
Near the end of the page,
|
|
||||||
-> Turn ON "Access for less secure apps"
|
|
||||||
https://www.google.com/settings/security/lesssecureapps
|
|
||||||
https://support.google.com/accounts/answer/6010255?hl=en
|
|
||||||
|
|
||||||
Here is what Google add on this "Access for less secure apps":
|
|
||||||
"Some apps and devices use less secure sign-in technology, which makes your
|
|
||||||
account vulnerable. You can turn off access for these apps, which we recommend,
|
|
||||||
or turn it on if you want to use them despite the risks.
|
|
||||||
Google will automatically turn this setting OFF if it’s not being used."
|
|
||||||
|
|
||||||
So after a while, this button will be turned off again.
|
|
||||||
I suggest to turn it off once the job with imapsync is finished.
|
|
||||||
|
|
||||||
If you forgot to also enable imap you end up with login failure like this one:
|
|
||||||
"Host failure: Error login on [imap.gmail.com] with user [xxxx@gmail.com] auth [LOGIN]:
|
|
||||||
NO [ALERT] Your account is not enabled for IMAP use. Please visit your Gmail
|
|
||||||
settings page and enable your account for IMAP access. (Failure)"
|
|
||||||
|
|
||||||
After using imapsync on a Gmail account, sometimes you may encounter an email
|
|
||||||
with the title "Critical security alert for your linked Google Account"
|
|
||||||
and the body
|
|
||||||
"Sign-in attempt was blocked for your linked Google Account
|
|
||||||
xxxx@gmail.com
|
|
||||||
Someone just used your password to try to sign in to your account from
|
|
||||||
a non-Google app. Google blocked them, but you should check what happened.
|
|
||||||
Review your account activity to make sure that no one else has access."
|
|
||||||
Click on the button "Check Activity" and let Gmail know you were the author
|
|
||||||
of the sign in.
|
|
||||||
|
|
||||||
|
|
||||||
Sometimes, with Gsuite, the login for the users are ok with imapsync
|
|
||||||
for a while then they become forbidden with
|
|
||||||
"failure: Error login on [imap.gmail.com] with user [xxx] auth [LOGIN]:
|
|
||||||
2 NO [AUTHENTICATIONFAILED] Invalid credentials (Failure)"
|
|
||||||
|
|
||||||
In that case, use:
|
|
||||||
https://admin.google.com/AdminHome?hl=fr#ServiceSettings/notab=1&service=securitysetting&subtab=lesssecureappsaccess
|
|
||||||
to allow "Access for less secure apps to all users"
|
|
||||||
(Thanks to Sébastien R. for this input)
|
|
||||||
Remark: even if the user has enabled less secure apps at Super Admin
|
|
||||||
and reseller level, it still needs amended at
|
|
||||||
https://myaccount.google.com/security
|
|
||||||
(Thanks Tony@gle for this last tip!)
|
|
||||||
|
|
||||||
|
|
||||||
2) "2-step verification" the second way to authenticate
|
|
||||||
to Gmail with Imapsync.
|
|
||||||
|
|
||||||
Go to
|
Go to
|
||||||
https://myaccount.google.com/security
|
https://myaccount.google.com/security
|
||||||
@ -795,6 +742,12 @@ message, and Gmail will always accept and throw away the new copy. It
|
|||||||
ends up with no duplicates on Gmail but a waste of bandwidth and time,
|
ends up with no duplicates on Gmail but a waste of bandwidth and time,
|
||||||
which is the opposite goal of --usecache implied by --useuid.
|
which is the opposite goal of --usecache implied by --useuid.
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. Can I use --syncduplicates Gmail transfers?
|
||||||
|
|
||||||
|
R. Yes, but Gmail will accept the new duplicate message and
|
||||||
|
throw away the new copy. It ends up with no duplicates on Gmail but
|
||||||
|
a waste of bandwidth and time.
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. Gmail does not really delete messages in folder [Gmail]/All Mail
|
Q. Gmail does not really delete messages in folder [Gmail]/All Mail
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.ISP.txt,v 1.13 2021/12/06 20:02:39 gilles Exp gilles $
|
$Id: FAQ.ISP.txt,v 1.14 2022/05/22 08:04:05 gilles Exp gilles $
|
||||||
|
|
||||||
This document is also available online at
|
This document is also available online at
|
||||||
https://imapsync.lamiral.info/FAQ.d/
|
https://imapsync.lamiral.info/FAQ.d/
|
||||||
@ -9,7 +9,8 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.ISP.txt
|
|||||||
Imapsync tips for ISP. Specific issues and solutions.
|
Imapsync tips for ISP. Specific issues and solutions.
|
||||||
=======================================================================
|
=======================================================================
|
||||||
|
|
||||||
* IMAPSync - usage scenario with ISP - by Flavio Zarur Lucarelli (https://www.lucanet.com.br)
|
* IMAPSync - usage scenario with ISP - by Flavio Zarur Lucarelli
|
||||||
|
(https://www.lucanet.com.br)
|
||||||
|
|
||||||
I thought I had to write a quick step by step on my attempts to learn
|
I thought I had to write a quick step by step on my attempts to learn
|
||||||
the imapsync features that matter the most, so it works as we expected
|
the imapsync features that matter the most, so it works as we expected
|
||||||
@ -20,9 +21,10 @@ Lamiral for all his help and hard work.
|
|||||||
First of all, remember to use --dry to test things first always and
|
First of all, remember to use --dry to test things first always and
|
||||||
check the log file to see what would actually happen.
|
check the log file to see what would actually happen.
|
||||||
|
|
||||||
This type of copy keeps destination exactly like source (except, it doesn't
|
This type of copy keeps destination exactly like source (except, it
|
||||||
copy duplicates), so use it ONLY before changing your MX to the new server,
|
doesn't copy duplicates), so use it ONLY before changing your MX to
|
||||||
as it will delete whatever is in destination which isn't in source.
|
the new server, as it will delete whatever is in destination which
|
||||||
|
isn't in source.
|
||||||
|
|
||||||
imapsync --host1 imap.myisp.com --user1 user@domain.com --password1 pwd \
|
imapsync --host1 imap.myisp.com --user1 user@domain.com --password1 pwd \
|
||||||
--host2 imap.myisp.com --user2 user@domain.com --password2 pwd \
|
--host2 imap.myisp.com --user2 user@domain.com --password2 pwd \
|
||||||
@ -119,8 +121,9 @@ If your last full sync was 2 days ago, then use --maxage 2
|
|||||||
Goal is to get all the new emails (2 last days) from source.
|
Goal is to get all the new emails (2 last days) from source.
|
||||||
|
|
||||||
Another alternative for syncing after the MX change, which Lamiral
|
Another alternative for syncing after the MX change, which Lamiral
|
||||||
suggests, involves deleting emails from source from the last day.
|
suggests, involves deleting emails from source from the last day. I
|
||||||
I prefer the method explained above. Anyway, here is this other cenario...
|
prefer the method explained above. Anyway, here is this other
|
||||||
|
scenario...
|
||||||
|
|
||||||
Something like this:
|
Something like this:
|
||||||
|
|
||||||
@ -186,17 +189,50 @@ Option --automap is also good to do most of the translate job.
|
|||||||
|
|
||||||
3) Folders to exclude, to speed up syncs, etc.
|
3) Folders to exclude, to speed up syncs, etc.
|
||||||
|
|
||||||
--exclude "^Backups" --exclude "(?i)spam" --exclude "(?i)junk" --exclude "(?i)trash" --exclude "(?i)lixeira" --exclude "(?i)Deleted Items"
|
imapsync ... --exclude "^Backups" --exclude "(?i)spam" --exclude "(?i)junk" --exclude "(?i)trash" --exclude "(?i)lixeira" --exclude "(?i)Deleted Items"
|
||||||
|
|
||||||
4) Delete older than 1 year from an account.
|
4) Delete older than 1 year from an account.
|
||||||
|
|
||||||
Use the account itself as source and destination and use:
|
Use the account itself as source and destination and use:
|
||||||
|
|
||||||
--minage 365 --delete1
|
imapsync ... --minage 365 --delete1
|
||||||
|
|
||||||
5) Check size of folders in an account. Use Imapsync with same account as source and destination, with this parameter:
|
5) Check size of folders in an account. Use Imapsync with same account
|
||||||
|
as source and destination, with this parameter:
|
||||||
|
|
||||||
|
imapsync ... --justfoldersizes
|
||||||
|
|
||||||
|
|
||||||
|
6) If you have problems copying messages that have labels which are
|
||||||
|
not supported, there are a few ways out.
|
||||||
|
|
||||||
|
We use Dovecot and it doesn't support a series of labels, except the
|
||||||
|
standard ones. By default, imapsync won't copy messages that have
|
||||||
|
labels not supported by the recipient server. For that reason, I now
|
||||||
|
always use --filterbuggyflags and tell customers that not all labels
|
||||||
|
are copied.
|
||||||
|
|
||||||
|
There are other alternatives, such as replacing problematic flags with
|
||||||
|
other names or copying just standard flags, detailing which ones to
|
||||||
|
copy, however, --filterbuggyflags was the easiest solution, which
|
||||||
|
worked fine for us.
|
||||||
|
|
||||||
|
7) Definitely worth reading about dupes, here
|
||||||
|
https://imapsync.lamiral.info/FAQ.d/FAQ.Duplicates.txt, if you have
|
||||||
|
problems. Always try to check, even if by sampling, if dupes
|
||||||
|
occur. In a big migration, when you do several passes, try to check a
|
||||||
|
few accounts.
|
||||||
|
|
||||||
|
The one issue we had with many duplicated emals in the destinatio, was
|
||||||
|
solved with the first solution in the above FAQ, using this syntax,
|
||||||
|
when copying from source to the destination, hence effectively
|
||||||
|
removing the dupes.
|
||||||
|
|
||||||
|
imapsync ... --useheader "Message-Id" --delete2duplicates
|
||||||
|
|
||||||
|
Note that --delete2duplicates is on when --delete2 is used, unless
|
||||||
|
--syncduplicates is used or --nodelete2duplicates is used.
|
||||||
|
|
||||||
--justfoldersizes
|
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
=======================================================================
|
=======================================================================
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Massive.txt,v 1.32 2021/11/01 11:30:48 gilles Exp gilles $
|
$Id: FAQ.Massive.txt,v 1.34 2022/07/14 16:00:23 gilles Exp gilles $
|
||||||
|
|
||||||
This document is also available online at
|
This document is also available online at
|
||||||
https://imapsync.lamiral.info/FAQ.d/
|
https://imapsync.lamiral.info/FAQ.d/
|
||||||
@ -14,7 +14,7 @@ Questions answered here are:
|
|||||||
|
|
||||||
Q. How long will take the whole migration?
|
Q. How long will take the whole migration?
|
||||||
|
|
||||||
Q. I need to migrate hundred accounts, how can I do?
|
Q. I need to migrate hundreds of accounts, how can I do that?
|
||||||
|
|
||||||
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 about speed?
|
How do I proceed? How about speed?
|
||||||
@ -23,7 +23,7 @@ Q. How to determine where is the bottleneck in an imapsync process?
|
|||||||
|
|
||||||
Q. Can I run several instances of imapsync in parallel on a Windows host?
|
Q. Can I run several instances of imapsync in parallel on a Windows host?
|
||||||
|
|
||||||
Q. I run multiple imapsync applications at the same time then get a
|
Q. I run multiple imapsync applications at the same time and then get a
|
||||||
warning "imapsync.pid already exists, overwriting it".
|
warning "imapsync.pid already exists, overwriting it".
|
||||||
Is this a potential problem when trying to sync multiple
|
Is this a potential problem when trying to sync multiple
|
||||||
IMAP account in parallel?
|
IMAP account in parallel?
|
||||||
@ -31,17 +31,18 @@ Q. I run multiple imapsync applications at the same time then get a
|
|||||||
=======================================================================
|
=======================================================================
|
||||||
Q. How long will take the whole migration?
|
Q. How long will take the whole migration?
|
||||||
|
|
||||||
R1. First you have to consider several periods. There is the global
|
R1. First, you have to consider several periods. There is the global
|
||||||
period, from when the migration process is decided to the final end
|
period, from when the migration process is decided to the end,
|
||||||
where all mailboxes are migrated. This global period can be divided
|
where all mailboxes are migrated. This global period can be divided
|
||||||
into three smaller periods.
|
into three smaller periods.
|
||||||
|
|
||||||
The first period is the analyse period: you play with the tools
|
The first period is the analysis period: you play with the tools
|
||||||
available, you estimate the volume to be transferred, the number of
|
available, you estimate the volume to be transferred, the number of
|
||||||
accounts, you measure how long it takes for one account under
|
accounts, you measure how long it takes for one account under
|
||||||
your context.
|
your context.
|
||||||
|
|
||||||
The second period is the presync period. The users are still using
|
The second period is what I call the presyncing period.
|
||||||
|
The users are still using
|
||||||
the old accounts but nothing prevents you from starting to sync
|
the old accounts but nothing prevents you from starting to sync
|
||||||
the old accounts, as they are, to the new accounts.
|
the old accounts, as they are, to the new accounts.
|
||||||
With tons of gigabytes to transfer, this period may be the longest one.
|
With tons of gigabytes to transfer, this period may be the longest one.
|
||||||
@ -49,15 +50,15 @@ R1. First you have to consider several periods. There is the global
|
|||||||
until the round is finished.
|
until the round is finished.
|
||||||
|
|
||||||
The last period is the final sync period where only the last
|
The last period is the final sync period where only the last
|
||||||
changes of the mailboxes need to be synced in order to switch
|
mailboxes' changes need to be synced before switching
|
||||||
the users to their new mailboxes.
|
the users to their new mailboxes.
|
||||||
|
|
||||||
R2. To estimate the presync period, consider the mean imapsync transfer
|
R2. To estimate the presyncing period, consider the mean imapsync transfer
|
||||||
rate to be around 340 Kbytes/s, ie, 2.8 Mbps, no matter the local
|
rate to be around 340 Kbytes/s, ie, 2.8 Mbps, no matter the local
|
||||||
link bandwidth.
|
link bandwidth.
|
||||||
It's a mean, measured upon various different syncs, coming from
|
It's a mean, measured upon various syncs, coming from
|
||||||
the online service /X where the network card flow rate is 200 Mbps
|
the online service /X where the network card flow rate is 200 Mbps
|
||||||
(Rx 100 Mps, Tx 100 Mps) and the provider bandwidth is also 200 Mbps.
|
(Rx 100 Mbps, Tx 100 Mbps) and the provider bandwidth is also 200 Mbps.
|
||||||
The maximum global rate seen is 22 MiB/s (176 Mbps).
|
The maximum global rate seen is 22 MiB/s (176 Mbps).
|
||||||
|
|
||||||
At 340 Kbytes/s,
|
At 340 Kbytes/s,
|
||||||
@ -65,15 +66,15 @@ R2. To estimate the presync period, consider the mean imapsync transfer
|
|||||||
At 10 transfers at a time, 1 TB will take 3.5 days.
|
At 10 transfers at a time, 1 TB will take 3.5 days.
|
||||||
At 100 transfers at a time, 1 TB will take 8 hours.
|
At 100 transfers at a time, 1 TB will take 8 hours.
|
||||||
Double the time because the best scenario never happens.
|
Double the time because the best scenario never happens.
|
||||||
Triple the time because, well, real world is like that.
|
Triple the time because, well, the real world is like that.
|
||||||
|
|
||||||
R3. An other way to better evaluate the end of the presync period can
|
R3. Another way to better evaluate the end of the presyncing period can
|
||||||
be based on your actual data. Just apply a simple rule of three
|
be based on your actual data. Just apply a simple rule of three
|
||||||
on the mailboxes already migrated to estimate the global end.
|
on the mailboxes already migrated to estimate the global end.
|
||||||
If it took X hours to finish Y% of the mailboxes, then it
|
If it took X hours to finish Y% of the mailboxes, then it
|
||||||
will take 100*X/Y hours to finish 100% of the mailboxes.
|
will take 100*X/Y hours to finish 100% of the mailboxes.
|
||||||
|
|
||||||
Following the same idea but using matematical garbage,
|
Following the same idea but using mathematical garbage,
|
||||||
the ETA can be estimated like this:
|
the ETA can be estimated like this:
|
||||||
t_0 = time of global start (the start of the first presync)
|
t_0 = time of global start (the start of the first presync)
|
||||||
t_now = time of now.
|
t_now = time of now.
|
||||||
@ -90,11 +91,11 @@ R4. To estimate the last period, the final sync, just rerun a complete
|
|||||||
the same amount of time.
|
the same amount of time.
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. I need to migrate hundred accounts, how can I do?
|
Q. I need to migrate hundreds of accounts, how can I do that?
|
||||||
|
|
||||||
R. If you have many mailboxes to migrate, think about a little
|
R. If you have many mailboxes to migrate, think about a little
|
||||||
script program. Write a file called file.txt (for example)
|
script program. Write a file called file.txt (for example)
|
||||||
containing hosts, users and passwords on both sides.
|
containing hosts, users, and passwords on both sides.
|
||||||
The separator used in this example is ";"
|
The separator used in this example is ";"
|
||||||
|
|
||||||
The file.txt file contains for example:
|
The file.txt file contains for example:
|
||||||
@ -105,8 +106,8 @@ host003_1;user003_1;password003_1;host003_2;user003_2;password003_2;
|
|||||||
host004_1;user004_1;password004_1;host004_2;user004_2;password004_2;
|
host004_1;user004_1;password004_1;host004_2;user004_2;password004_2;
|
||||||
etc.
|
etc.
|
||||||
|
|
||||||
Most of the times, the first column (host001_1, host002_1 ...) will
|
Most of the time, the first column (host001_1, host002_1 ...) will
|
||||||
contains the same value, the value of --host1 parameter. Same
|
contain the same value, the value of --host1 parameter. Same
|
||||||
thing for the third column (host001_2, host002_2).
|
thing for the third column (host001_2, host002_2).
|
||||||
|
|
||||||
On Unix the shell script can be:
|
On Unix the shell script can be:
|
||||||
@ -147,7 +148,7 @@ becomes
|
|||||||
host001_1;user001_1;password001_1;host001_2;user001_2;password001_2; --automap --addheader
|
host001_1;user001_1;password001_1;host001_2;user001_2;password001_2; --automap --addheader
|
||||||
host002_1;user002_1;password002_1;host002_2;user002_2;password002_2; --automap --addheader
|
host002_1;user002_1;password002_1;host002_2;user002_2;password002_2; --automap --addheader
|
||||||
|
|
||||||
With this solution, options can be added, changed or removed per account.
|
With this solution, options can be added, changed, or removed per account.
|
||||||
Technically those options will go in %%M in the loop body
|
Technically those options will go in %%M in the loop body
|
||||||
|
|
||||||
Here is a complete Windows example ready to use:
|
Here is a complete Windows example ready to use:
|
||||||
@ -169,11 +170,11 @@ Q. I have to migrate 500k users using 400 TB of disk space.
|
|||||||
|
|
||||||
R. A good solution to this issue is two words: parallelism and measurements.
|
R. A good solution to this issue is two words: parallelism and measurements.
|
||||||
|
|
||||||
Since all mailboxes are functionnaly independent, they can be processed
|
Since all mailboxes are functionally independent, they can be processed
|
||||||
independently, here comes the parallelism, ie, lunching several imapsync
|
independently, here comes the parallelism, ie, lunching several imapsync
|
||||||
processes in parallel.
|
processes in parallel.
|
||||||
|
|
||||||
Meanwhile, mailboxes usually belong to the same server and the syncs
|
Meanwhile, mailboxes usually belong to the same server, and the syncs
|
||||||
share the same imapsync host via the same bandwidth, here come
|
share the same imapsync host via the same bandwidth, here come
|
||||||
some limitations and bottlenecks.
|
some limitations and bottlenecks.
|
||||||
|
|
||||||
@ -184,7 +185,7 @@ Here comes some measurements.
|
|||||||
Since adding this way is not so easy, just look at the overall
|
Since adding this way is not so easy, just look at the overall
|
||||||
network rate of the imapsync host.
|
network rate of the imapsync host.
|
||||||
|
|
||||||
On Linux and FreeBSD, nload is a good candidate to measure this overall
|
On Linux and FreeBSD, the command "nload" is a good candidate to measure this overall
|
||||||
network rate. For example, to measure the rate every 6 seconds (-t 6000),
|
network rate. For example, to measure the rate every 6 seconds (-t 6000),
|
||||||
on eth0 or em0 interface, with values in Kbytes (-u K), use:
|
on eth0 or em0 interface, with values in Kbytes (-u K), use:
|
||||||
|
|
||||||
@ -195,24 +196,26 @@ Here comes some measurements.
|
|||||||
|
|
||||||
dstat -n -N eth0 6 # Linux only (in 2018)
|
dstat -n -N eth0 6 # Linux only (in 2018)
|
||||||
|
|
||||||
Another excellent tool to measure the network trafic is iftop.
|
Another excellent tool to measure the network traffic is iftop.
|
||||||
The following command will monitor imap and imaps connexions
|
The following command will monitor imap and imaps connections
|
||||||
on interfce eth0, only them, and sum them up:
|
on interface eth0, only them, and sum them up:
|
||||||
|
|
||||||
iftop -i eth0 -f 'port imap or port imaps' -B # Linux
|
iftop -i eth0 -f 'port imap or port imaps' -B # Linux
|
||||||
iftop -i em0 -f 'port imap or port imaps' -B # FreeBSD
|
iftop -i em0 -f 'port imap or port imaps' -B # FreeBSD
|
||||||
|
|
||||||
During iftop, press the h to see the display commands available,
|
During iftop, press the h to see the display commands available,
|
||||||
every single feature is useful! Press h again and try each one.
|
every single feature is useful! Press h again and try each one.
|
||||||
My preferred display combination is by typing
|
My preferred display combination is by typing the keys
|
||||||
t p >
|
t p >
|
||||||
meaning: one line per connection, show port numbers, sort by destination.
|
t means "one line per connection"
|
||||||
|
p means "show port numbers"
|
||||||
|
> means "sort by destination"
|
||||||
|
|
||||||
|
|
||||||
On Windows 8.1 Windows 10 Windows 2012 R2 Windows 2016,
|
On Windows 8.1 Windows 10 Windows 2012 R2 Windows 2016,
|
||||||
get the overall network rate with the classical
|
get the overall network rate with the classical
|
||||||
task manager (Ctrl-Shift-Esc), there is a Performance tab
|
task manager (Ctrl-Shift-Esc), there is a Performance tab
|
||||||
in it where resides a Network grap monitor.
|
in it, where resides a Network monitor.
|
||||||
|
|
||||||
On Windows 7, get the overall network rate with the classical
|
On Windows 7, get the overall network rate with the classical
|
||||||
task manager (Ctrl-Shift-Esc), there is a Network tab in it.
|
task manager (Ctrl-Shift-Esc), there is a Network tab in it.
|
||||||
@ -224,7 +227,7 @@ Here comes some measurements.
|
|||||||
transfer rate increase.
|
transfer rate increase.
|
||||||
|
|
||||||
3) When the total transfer rate starts to diminish, stop new launches.
|
3) When the total transfer rate starts to diminish, stop new launches.
|
||||||
Note N as the number of parallel runs you got until then.
|
Note N as the number of runs in parallel you got until then.
|
||||||
|
|
||||||
4) Only keep N-2 parallel runs for the future.
|
4) Only keep N-2 parallel runs for the future.
|
||||||
|
|
||||||
@ -234,15 +237,15 @@ Q. How to determine where is the bottleneck in an imapsync process?
|
|||||||
|
|
||||||
R1. Divide and conquer.
|
R1. Divide and conquer.
|
||||||
|
|
||||||
In order to detect whether host1/link1 is the bottleneck or
|
To detect whether host1/link1 is the bottleneck or
|
||||||
host2/link2, we have several tests to explore:
|
host2/link2, we have several tests to explore:
|
||||||
|
|
||||||
1) run a sync from host1 to host1, with a host1 test account as destination.
|
1) run a sync from host1 to host1, with a host1 test account as the destination.
|
||||||
This way, only host1+link1 are tested, host2 is not directly concerned.
|
This way, only host1 and link1 are tested, host2 is not directly concerned.
|
||||||
If performances increase a lot then host2/link2 is the bottleneck.
|
If performances increase a lot then host2/link2 is the bottleneck.
|
||||||
|
|
||||||
2) run a sync from host2 to host2, with a host2 test account as destination.
|
2) run a sync from host2 to host2, with a host2 test account as the destination.
|
||||||
This way, only host2+link2 are tested, host1 is not concerned.
|
This way, only host2 and link2 are tested, host1 is not concerned.
|
||||||
If performances increase a lot then host1/link1 is the bottleneck.
|
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.
|
||||||
@ -250,39 +253,39 @@ Same thing if they both decrease!
|
|||||||
|
|
||||||
R2. Isolating and overcoming bottlenecks
|
R2. Isolating and overcoming bottlenecks
|
||||||
|
|
||||||
On any process involving several mechanisms, among all elements taking
|
In any process involving several mechanisms, among all elements taking
|
||||||
part on the process, there is always a bottleneck. No one knows in
|
part in the process, there is always a bottleneck. No one knows in
|
||||||
advance what is the first bottleneck. The first bottleneck has to be
|
advance what is the first bottleneck. The first bottleneck has to be
|
||||||
determined, by measurements, not by guesses. Once this first
|
determined, by measurements, not by guesses. Once this first
|
||||||
bottleneck is known and overcome then the next bottleneck has to be
|
bottleneck is known and overcome then the next bottleneck has to be
|
||||||
determined and overcome too, if needed. Repeat the process of looking
|
determined and overcome too, if needed. Repeat the process of looking
|
||||||
for the next bottleneck and its elimination until you estimate the
|
for the next bottleneck and its elimination until you estimate the
|
||||||
transfer rates, money costs, time spent on this, and final dates
|
transfer rates, money costs, time spent on this, and final dates
|
||||||
are good enough to proceed the whole huge migration.
|
are good enough to proceed with the whole huge migration.
|
||||||
|
|
||||||
Possible bottlenecks:
|
Possible bottlenecks:
|
||||||
|
|
||||||
- Throttles.
|
- Throttles.
|
||||||
IMAP servers have artificial limits.
|
IMAP servers have artificial limits.
|
||||||
For example Gmail, Office365, Exchange have throttle limits.
|
For example, Gmail, Office365, and Exchange have throttle limits.
|
||||||
|
|
||||||
- Bandwidth.
|
- Bandwidth.
|
||||||
Usually available bandwidth is NOT a bottleneck.
|
Usually, the available bandwidth is not a bottleneck.
|
||||||
Meanwhile, it can be a bottleneck on small Internet connexions.
|
Meanwhile, it can be a bottleneck on small Internet connections.
|
||||||
Imapsync downloads messages from host1 and upload messages to host2,
|
Imapsync downloads messages from host1 and upload messages to host2,
|
||||||
consider this in case the connexion are asymmetric.
|
consider this in case the connection is asymmetric.
|
||||||
|
|
||||||
- I/O on disks.
|
- I/O, aka "Input/Output" on the disks of the imap servers.
|
||||||
I/O are a classical bottleneck, almost always forgotten.
|
The I/O on disks are a classical bottleneck, almost always forgotten.
|
||||||
Unlike CPU and RAM, Input/Output performances don't improve
|
Unlike CPU and RAM, Input/Output performances don't improve
|
||||||
very much as time goes on so it's often a bottleneck.
|
very much as time goes on so it's often a bottleneck.
|
||||||
To measure and overcome an I/O disk bottleneck, you need
|
To measure and overcome an I/O disk bottleneck, you need
|
||||||
usually a direct access to host1 and host2.
|
usually direct access to host1 and host2.
|
||||||
An I/O bottleneck where imapsync runs is possible if
|
An I/O bottleneck where imapsync runs is possible if
|
||||||
--usecache or --useuid is used or with very big messages.
|
--usecache or --useuid is used or with very big messages.
|
||||||
|
|
||||||
|
|
||||||
- RAM memory.
|
- RAM.
|
||||||
On all sides, monitor that your systems don't swap its
|
On all sides, monitor that your systems don't swap its
|
||||||
running processes on disk, because swapping running processes
|
running processes on disk, because swapping running processes
|
||||||
on disks decreases performance by a factor of 20, at least.
|
on disks decreases performance by a factor of 20, at least.
|
||||||
@ -291,9 +294,8 @@ Possible bottlenecks:
|
|||||||
|
|
||||||
- CPU.
|
- CPU.
|
||||||
100% CPU during a whole transfer means the system is busy.
|
100% CPU during a whole transfer means the system is busy.
|
||||||
Usually CPU is not a problem with imapsync but it can be a problem
|
CPU can be a problem with imapsync but it can also be a problem
|
||||||
with one of the imap servers.
|
with one or both of the imap servers.
|
||||||
Most often CPU is not the real bottleneck, I/O are.
|
|
||||||
|
|
||||||
Other possible bottlenecks:
|
Other possible bottlenecks:
|
||||||
- Number of hosts available to run imapsync processes.
|
- Number of hosts available to run imapsync processes.
|
||||||
@ -312,10 +314,10 @@ Q. Can I run several instances of imapsync in parallel on a Windows host?
|
|||||||
|
|
||||||
R. Yes!
|
R. Yes!
|
||||||
|
|
||||||
Q. Any performance issue?
|
Q. Any performance issues?
|
||||||
|
|
||||||
You have to try and check the transfer rates, sum them up to
|
You have to try and check the transfer rates, sum them up to
|
||||||
have a uniq numeric criteria.
|
have a unique numeric criterion.
|
||||||
There is always a limit, depending on remote imap servers
|
There is always a limit, depending on remote imap servers
|
||||||
and the one running imapsync.
|
and the one running imapsync.
|
||||||
CPU, memory, Inputs/Outputs are the classical bottlenecks,
|
CPU, memory, Inputs/Outputs are the classical bottlenecks,
|
||||||
@ -336,7 +338,7 @@ 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
|
Q. I run multiple imapsync applications at the same time and then get a
|
||||||
warning "imapsync.pid already exists, overwriting it".
|
warning "imapsync.pid already exists, overwriting it".
|
||||||
Is this a potential problem when trying to sync multiple
|
Is this a potential problem when trying to sync multiple
|
||||||
IMAP account in parallel?
|
IMAP account in parallel?
|
||||||
@ -346,7 +348,7 @@ by yourself.
|
|||||||
|
|
||||||
This file can help you to manage multiple runs by sending signals
|
This file can help you to manage multiple runs by sending signals
|
||||||
to the processes (sigterm or sigkill) using their PID.
|
to the processes (sigterm or sigkill) using their PID.
|
||||||
Each run can have its own pid file with --pidfile option.
|
Each run can have its pid file with --pidfile option.
|
||||||
The file imapsync.pid contains the PID of the current imapsync process.
|
The file imapsync.pid contains the PID of the current imapsync process.
|
||||||
This file is removed at the end of a normal run.
|
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
|
You can safely ignore the warning if you don't use imapsync.pid file
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
$Id: FAQ.Office365.txt,v 1.37 2022/04/06 09:58:39 gilles Exp gilles $
|
$Id: FAQ.Office365.txt,v 1.38 2022/06/22 17:07:35 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also available online at
|
This documentation is also available online at
|
||||||
https://imapsync.lamiral.info/FAQ.d/
|
https://imapsync.lamiral.info/FAQ.d/
|
||||||
@ -36,6 +36,9 @@ Q. Office365 fails with "User is authenticated but not connected".
|
|||||||
Q. I see "NO Maximum size of appendable message has been exceeded"
|
Q. I see "NO Maximum size of appendable message has been exceeded"
|
||||||
What can I do with that?
|
What can I do with that?
|
||||||
|
|
||||||
|
Q. Every single mail synced to exchange online owns the
|
||||||
|
category $MDNSent after migration. How can I avoid this?
|
||||||
|
|
||||||
Q. The imap connection to Office365 is not working very efficiently,
|
Q. The imap connection to Office365 is not working very efficiently,
|
||||||
is there a solution to fix that?
|
is there a solution to fix that?
|
||||||
|
|
||||||
@ -334,6 +337,17 @@ values on the migration accounts in the source and target tenants.
|
|||||||
Thanks to Sean McDougall, Ian Thomas & Matt Wilks from Toronto
|
Thanks to Sean McDougall, Ian Thomas & Matt Wilks from Toronto
|
||||||
for this FAQ item.
|
for this FAQ item.
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
Q. Every single mail synced to exchange online owns the
|
||||||
|
category $MDNSent after migration. How can I avoid this?
|
||||||
|
|
||||||
|
R. To remove the flag $MDNSent from all messages, use:
|
||||||
|
|
||||||
|
imapsync ... --regexflag "s/\$MDNSent//g"
|
||||||
|
|
||||||
|
See also the document
|
||||||
|
https://imapsync.lamiral.info/FAQ.d/FAQ.Flags.txt
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
Q. The imap connection to Office365 is not working very efficiently,
|
Q. The imap connection to Office365 is not working very efficiently,
|
||||||
is there a solution to fix that?
|
is there a solution to fix that?
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.OnlineUI.txt,v 1.32 2022/03/23 11:00:27 gilles Exp gilles $
|
$Id: FAQ.OnlineUI.txt,v 1.36 2022/09/14 11:18:05 gilles Exp gilles $
|
||||||
|
|
||||||
This document is also available online at
|
This document is also available online at
|
||||||
https://imapsync.lamiral.info/FAQ.d/
|
https://imapsync.lamiral.info/FAQ.d/
|
||||||
@ -35,23 +35,26 @@ Q. The sync stalls at the beginning, just after a line like:
|
|||||||
"Host1: xxx says it has CAPABILITY for AUTHENTICATE LOGIN"
|
"Host1: xxx says it has CAPABILITY for AUTHENTICATE LOGIN"
|
||||||
What is the problem?
|
What is the problem?
|
||||||
|
|
||||||
|
Q. The synchronization fails with the error message like:
|
||||||
|
Err 1/1: Host1 failure: Error login on [10.1.161.155] with user [webmaster@truc.com] auth [LOGIN]: 2 NO [ALERT] LOGIN DENIED -- COUNTRY IS BLACKLISTED
|
||||||
|
|
||||||
Now the questions again with their answers.
|
Now the questions again with their answers.
|
||||||
|
|
||||||
=====================================================================
|
=====================================================================
|
||||||
Q. Can I launch several imap synchronizations on the visual
|
Q. Can I launch several imap synchronizations on the visual
|
||||||
user interface /X?
|
user interface /X?
|
||||||
|
|
||||||
R. Yes. Open several tabs/windows on your browser and fill each one
|
A. Yes. Open several tabs/windows on your browser and fill each one
|
||||||
with different credentials.
|
with different credentials.
|
||||||
|
|
||||||
=====================================================================
|
=====================================================================
|
||||||
Q. How secure is the online visual user interface /X?
|
Q. How secure is the online visual user interface /X?
|
||||||
|
|
||||||
R0. Well, I don't know if asking the provider whether his online
|
A0. Well, I don't know if asking the provider whether his online
|
||||||
service is secure or not would be of any interest.
|
service is secure or not would be of any interest.
|
||||||
Let's do it anyway, you'll be the judge.
|
Let's do it anyway, you'll be the judge.
|
||||||
|
|
||||||
R1. Some figures
|
A1. Some figures
|
||||||
|
|
||||||
Date of this report: 24 December 2021. Happy Christmas!
|
Date of this report: 24 December 2021. Happy Christmas!
|
||||||
|
|
||||||
@ -64,7 +67,7 @@ On average, /X has 51 users per day, each user lunches on average
|
|||||||
The total volume /X transferred so far is around 240 TiB coming
|
The total volume /X transferred so far is around 240 TiB coming
|
||||||
from nearly 520 000 imap account migrations and 810 million email messages.
|
from nearly 520 000 imap account migrations and 810 million email messages.
|
||||||
|
|
||||||
R2. Pros & Cons
|
A2. Pros & Cons
|
||||||
|
|
||||||
The online imapsync service /X runs on HTTPS only, with a letsencrypt
|
The online imapsync service /X runs on HTTPS only, with a letsencrypt
|
||||||
certificate, an up to date certificate overall rated "A+" at
|
certificate, an up to date certificate overall rated "A+" at
|
||||||
@ -148,7 +151,7 @@ Q. I want to switch from the visual interface /X to the
|
|||||||
https://imapsync.lamiral.info/#DOC_BASIC
|
https://imapsync.lamiral.info/#DOC_BASIC
|
||||||
What should I know?
|
What should I know?
|
||||||
|
|
||||||
R. Let's do some ascii art.
|
A. Let's do some ascii art.
|
||||||
The visual interface looks roughly like this, for the textfields input part:
|
The visual interface looks roughly like this, for the textfields input part:
|
||||||
|
|
||||||
+------------------------------------------+------------------------------------------+
|
+------------------------------------------+------------------------------------------+
|
||||||
@ -203,7 +206,7 @@ https://imapsync.lamiral.info/examples/imapsync_example.sh
|
|||||||
Q. Shall I have issues with the browser timing out?
|
Q. Shall I have issues with the browser timing out?
|
||||||
What happens if the browser connection is closed for whatever reason?
|
What happens if the browser connection is closed for whatever reason?
|
||||||
|
|
||||||
R. A browser connection closed closes also the imapsync process,
|
A. A browser connection closed closes also the imapsync process,
|
||||||
ie, the sync is ended right away.
|
ie, the sync is ended right away.
|
||||||
|
|
||||||
Further comments on this behavior.
|
Further comments on this behavior.
|
||||||
@ -240,7 +243,7 @@ the logfile running the sync like a "tail -f" command (isn't that magic?).
|
|||||||
Q. Shall I have issues when the webserver times out? What happens
|
Q. Shall I have issues when the webserver times out? What happens
|
||||||
if the web server closes the connection for whatever reason?
|
if the web server closes the connection for whatever reason?
|
||||||
|
|
||||||
R. If the webserver closes the connection then usually it also
|
A. If the webserver closes the connection then usually it also
|
||||||
kills the imapsync process and the imap connections as well.
|
kills the imapsync process and the imap connections as well.
|
||||||
|
|
||||||
The current webserver timeout at
|
The current webserver timeout at
|
||||||
@ -252,12 +255,46 @@ Q. The sync stalls at the beginning, just after a line like:
|
|||||||
"Host1: xxx says it has CAPABILITY for AUTHENTICATE LOGIN"
|
"Host1: xxx says it has CAPABILITY for AUTHENTICATE LOGIN"
|
||||||
What is the problem?
|
What is the problem?
|
||||||
|
|
||||||
R. I've seen this issue on /X with the imap server
|
A. I've seen this issue on /X with the imap server
|
||||||
CommuniGate Pro IMAP Server 6.0.11
|
CommuniGate Pro IMAP Server 6.0.11
|
||||||
|
|
||||||
The issue looks related to special characters in the password.
|
The issue looks related to special characters in the password.
|
||||||
Solution for now: change the password, keep only standard (ASCII)
|
Solution for now: change the password, keep only standard (ASCII)
|
||||||
alphanumeric characters ABC-YZ abc-yz 012-89.
|
alphanumeric characters ABC-YZ abc-yz 012-89.
|
||||||
|
|
||||||
|
=====================================================================
|
||||||
|
Q. The synchronization fails with the error message like:
|
||||||
|
Err 1/1: Host1 failure: Error login on [10.1.161.155] with user [webmaster@truc.com] auth [LOGIN]: 2 NO [ALERT] LOGIN DENIED -- COUNTRY IS BLACKLISTED
|
||||||
|
|
||||||
|
A. The message "[ALERT] LOGIN DENIED -- COUNTRY IS BLACKLISTED" comes directly
|
||||||
|
from the IMAP server at 10.1.161.155
|
||||||
|
|
||||||
|
It looks like that the 10.1.161.155 imap server filters incoming
|
||||||
|
connexions based on their IPS. In that case, here are the current
|
||||||
|
IPs of the imapsync online service (September 2022):
|
||||||
|
|
||||||
|
ks5.lamiral.info has address 91.121.221.224
|
||||||
|
ks5ipv6.lamiral.info has IPv6 address 2001:41d0:2:84e0::1
|
||||||
|
ks6.lamiral.info has address 5.39.87.81
|
||||||
|
ks6ipv6.lamiral.info has IPv6 address 2001:41d0:8:9951::1
|
||||||
|
ks7.lamiral.info has address 5.135.177.225
|
||||||
|
ks7ipv6.lamiral.info has IPv6 address 2001:41d0:8:b8e1::1
|
||||||
|
i050.lamiral.info has address 213.32.72.139
|
||||||
|
i050ipv6.lamiral.info has IPv6 address 2001:41d0:302:1000::155d
|
||||||
|
vp3.lamiral.info has address 51.178.81.27
|
||||||
|
vp3ipv6.lamiral.info has IPv6 address 2001:41d0:404:200::4d81
|
||||||
|
vp4.lamiral.info has address 51.38.34.201
|
||||||
|
vp4ipv6.lamiral.info has IPv6 address 2001:41d0:305:2100::4c46
|
||||||
|
|
||||||
|
The imapsync online service may contact your imap server with one
|
||||||
|
or more of those IP addresses.
|
||||||
|
|
||||||
|
CPhulk of Cpannel has a buildin country block that can cause this behavior.
|
||||||
|
Later on you may encountered issues with maximum sessions per ip.
|
||||||
|
You can change that within cPannel.
|
||||||
|
|
||||||
|
https://support.cpanel.net/hc/en-us/articles/4406663082519-What-is-cPHulk-
|
||||||
|
https://docs.cpanel.net/whm/security-center/cphulk-brute-force-protection/
|
||||||
|
|
||||||
=====================================================================
|
=====================================================================
|
||||||
=====================================================================
|
=====================================================================
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Release_Checklist.txt,v 1.22 2022/01/14 12:46:38 gilles Exp gilles $
|
$Id: FAQ.Release_Checklist.txt,v 1.27 2022/09/16 05:35:27 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also available online at
|
This documentation is also available online at
|
||||||
https://imapsync.lamiral.info/FAQ.d/
|
https://imapsync.lamiral.info/FAQ.d/
|
||||||
@ -17,14 +17,28 @@ Checklist before release a new release:
|
|||||||
- Make "imapsync --tests" pass on Windows 32 bits
|
- Make "imapsync --tests" pass on Windows 32 bits
|
||||||
- Make "imapsync --tests" pass on Windows 64 bits
|
- Make "imapsync --tests" pass on Windows 64 bits
|
||||||
|
|
||||||
|
make linuxtests
|
||||||
|
make win32tests
|
||||||
|
make win64tests
|
||||||
|
make mactests
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
make -j linuxtests win32tests win64tests mactests
|
||||||
|
|
||||||
- Make "imapsync --testslive" pass on Linux
|
- Make "imapsync --testslive" pass on Linux
|
||||||
- Make "imapsync --testslive" pass on Mac
|
- Make "imapsync --testslive" pass on Mac
|
||||||
- Make "imapsync --testslive" pass on Windows 32 bits
|
|
||||||
- Make "imapsync --testslive" pass on Windows 64 bits
|
|
||||||
|
make linuxtestslive mactestslive mactestslive6
|
||||||
|
|
||||||
|
|
||||||
- Add a new section in S/news.shtml reading "rlog imapsync"
|
- Add a new section in S/news.shtml reading "rlog imapsync"
|
||||||
- In case of a new dependency, add it to all the INSTALL/* files.
|
- In case of a new dependency, add it to all the INSTALL/* files.
|
||||||
- Generate the README
|
- Generate the README
|
||||||
|
|
||||||
|
make doc
|
||||||
|
|
||||||
- Run a spell checker on the README
|
- Run a spell checker on the README
|
||||||
- Read the README again slowly. Fix all issues, all.
|
- Read the README again slowly. Fix all issues, all.
|
||||||
- Read the OPTIONS section of README and read it very slowly
|
- Read the OPTIONS section of README and read it very slowly
|
||||||
@ -38,8 +52,8 @@ Checklist before release a new release:
|
|||||||
- Review the newsletter by running:
|
- Review the newsletter by running:
|
||||||
m4 -P W/ml_announce.in.txt
|
m4 -P W/ml_announce.in.txt
|
||||||
|
|
||||||
- Update W/rsync_exclude_dist.txt
|
- Update the file W/rsync_exclude_dist.txt
|
||||||
- Update .gitignore
|
- Update the file .gitignore
|
||||||
|
|
||||||
- Review the TODO file and mark done what is done.
|
- Review the TODO file and mark done what is done.
|
||||||
- Review the general FAQ.d/FAQ.General.txt
|
- Review the general FAQ.d/FAQ.General.txt
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
$Id: FAQ.Two_Ways_Sync.txt,v 1.6 2022/02/22 15:16:16 gilles Exp gilles $
|
$Id: FAQ.Two_Ways_Sync.txt,v 1.8 2022/07/25 14:03:49 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also available online at
|
This documentation is also available online at
|
||||||
https://imapsync.lamiral.info/FAQ.d/
|
https://imapsync.lamiral.info/FAQ.d/
|
||||||
@ -21,14 +21,15 @@ stateless.
|
|||||||
Each time imapsync runs, it considers messages and folders as if it
|
Each time imapsync runs, it considers messages and folders as if it
|
||||||
were the first time it encounters them. Imapsync looks at messages,
|
were the first time it encounters them. Imapsync looks at messages,
|
||||||
flags, and folders as they are now, not considering what they were
|
flags, and folders as they are now, not considering what they were
|
||||||
before. Imapsync has no memory outside the current running sync.
|
before the current. Imapsync has no memory outside the current running
|
||||||
|
sync.
|
||||||
|
|
||||||
So now, why a stateless behavior cannot handle well a two ways sync
|
So now, why a stateless behavior cannot handle well a two ways sync
|
||||||
between an account A and an account B?
|
between an account A and an account B?
|
||||||
|
|
||||||
The problem arises with deletions, messages deletions, folders
|
The problem arises with deletions, messages deletions, folders
|
||||||
deletions, or movings, messages movings across folders, folders
|
deletions, or with moves, messages moves across folders, folders
|
||||||
movings, and also folders renamings. Deletions and moves are ambiguous
|
moves, and also folders renamings. Deletions and moves are ambiguous
|
||||||
changes when combined with creations on the opposite side.
|
changes when combined with creations on the opposite side.
|
||||||
|
|
||||||
For example, if a message is deleted from A by a user, then imapsync
|
For example, if a message is deleted from A by a user, then imapsync
|
||||||
@ -38,18 +39,64 @@ that has to be copied from B.
|
|||||||
|
|
||||||
But if you know the answer yourself, that missing messages on one side
|
But if you know the answer yourself, that missing messages on one side
|
||||||
A are deleted messages that have to be deleted on the other side then
|
A are deleted messages that have to be deleted on the other side then
|
||||||
run a sync with the --delete2 option from A to B.
|
run a sync with the --delete2 option from A to B. This assumes there
|
||||||
|
is no new messages on B because --delete2 will delete them.
|
||||||
|
|
||||||
If you know that the missing messages on A are missing messages from B
|
If you know that the missing messages on A are messages from B
|
||||||
that has to be copied to A then run a sync from B to A.
|
that has to be copied to A, then run a sync from B to A.
|
||||||
|
|
||||||
If you know it's a mixed scenario, that there are some deletions/moves
|
If you know it's a mixed scenario, that there are some deletions/moves
|
||||||
on A, and there are some deletions/moves on B, but not the same, then
|
on A, and there are some deletions/moves on B, but not the same, then
|
||||||
you are in trouble and it ends up with a not very good "two ways"
|
you are in trouble and it ends up with a not very good "two ways"
|
||||||
sync. In that case, two runs of imapsync, one from A to B, one from B
|
sync. In that case, two runs of imapsync, one from A to B, one from B
|
||||||
to A, put the two accounts in a synchronized state. But deletions on
|
to A, put the two accounts in a synchronized state. The deletions of
|
||||||
either side get cancelled and folder renamings on either side bring
|
messages on either side get cancelled, deleted messages come back. A
|
||||||
messages duplicates.
|
folder renaming on either side brings back the old folder. It's not a
|
||||||
|
good two ways synchronization.
|
||||||
|
|
||||||
|
|
||||||
|
My suggestion is:
|
||||||
|
|
||||||
|
a) Use a single active imap account that fits all your needs,
|
||||||
|
available from anywhere, at any time. Access it from both your
|
||||||
|
laptop and your iphone.
|
||||||
|
|
||||||
|
b) Feed this active account with foreign and passive accounts with any
|
||||||
|
tool that can handle the transfer, imapsync being one of them.
|
||||||
|
|
||||||
|
c) Have a slave imap backup account of the active one, available also
|
||||||
|
from anywhere, at any time. Use it only as a failsafe account, when
|
||||||
|
the active one is broken or to bring back misguidely deleted
|
||||||
|
messages to the active account. Use any tool that can handle the
|
||||||
|
synchronization, imapsync being a good one of them.
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. What can I do instead of having two ways synchronizations?
|
||||||
|
|
||||||
|
R. My suggestion is:
|
||||||
|
|
||||||
|
a) Use only one single active imap account that fits all your needs,
|
||||||
|
available from anywhere, at any time. Access it from all your
|
||||||
|
devices, laptops, phones, tablets.
|
||||||
|
|
||||||
|
b) Feed this active account with foreign and passive accounts with any
|
||||||
|
tool that can handle the transfer, imapsync being one of them.
|
||||||
|
|
||||||
|
c) Have a slave imap backup account of the active one, available also
|
||||||
|
from anywhere, at any time. Use it only as a failsafe account, when
|
||||||
|
the active one is broken or to bring back misguidely deleted
|
||||||
|
messages to the active account. Use any tool that can handle the
|
||||||
|
synchronization, imapsync being a good one of them.
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. What tools can I use to handle two ways synchronizations?
|
||||||
|
|
||||||
|
R. There are offlineimap and mbsync/isync tools:
|
||||||
|
|
||||||
|
offlineimap is located at http://www.offlineimap.org/
|
||||||
|
mbsync/isync is located at https://isync.sourceforge.io/
|
||||||
|
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.User_Concurrent_Access.txt,v 1.5 2018/05/24 11:34:30 gilles Exp gilles $
|
$Id: FAQ.User_Concurrent_Access.txt,v 1.6 2022/05/05 13:18:29 gilles Exp gilles $
|
||||||
|
|
||||||
This document is also available online at
|
This document is also available online at
|
||||||
https://imapsync.lamiral.info/FAQ.d/
|
https://imapsync.lamiral.info/FAQ.d/
|
||||||
@ -35,6 +35,23 @@ Details:
|
|||||||
so --delete2 is needed to sync the deletion.
|
so --delete2 is needed to sync the deletion.
|
||||||
* message flag change => will need a resync
|
* message flag change => will need a resync
|
||||||
|
|
||||||
|
Let's more precise about timing.
|
||||||
|
Imapsync works per folder, one folder at a time.
|
||||||
|
|
||||||
|
If imapsync has already synced a folder during a run,
|
||||||
|
what happens to this folder now won't be synced by the current run.
|
||||||
|
|
||||||
|
If imapsync has not already synced a folder during a run,
|
||||||
|
what happens to this folder now will be synced by the current run.
|
||||||
|
|
||||||
|
If imapsync is syncing a folder during a run,
|
||||||
|
what happens to this folder now depends on when things happen.
|
||||||
|
Imapsync starts by listing messages and getting meta data about them,
|
||||||
|
Message-Id, Date, Size.
|
||||||
|
A message deleted just after the listing, won't be synced.
|
||||||
|
A new message arriving just after the listing, won't be synced.
|
||||||
|
|
||||||
|
|
||||||
* Writing at destination/host2:
|
* Writing at destination/host2:
|
||||||
* adding folder => no problem, unless --delete2folders is used
|
* adding folder => no problem, unless --delete2folders is used
|
||||||
* deleting folder => will reappear by a new sync
|
* deleting folder => will reappear by a new sync
|
||||||
@ -42,5 +59,7 @@ Details:
|
|||||||
* deleting message => might reappear by a new sync.
|
* deleting message => might reappear by a new sync.
|
||||||
* message flag change => will be reseted by a new sync.
|
* message flag change => will be reseted by a new sync.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
=======================================================================
|
=======================================================================
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
$Id: FAQ.Yahoo.txt,v 1.13 2021/12/03 12:38:58 gilles Exp gilles $
|
$Id: FAQ.Yahoo.txt,v 1.15 2022/05/05 14:17:22 gilles Exp gilles $
|
||||||
|
|
||||||
This document is also available online at
|
This document is also available online at
|
||||||
https://imapsync.lamiral.info/FAQ.d/
|
https://imapsync.lamiral.info/FAQ.d/
|
||||||
@ -64,7 +64,18 @@ Q. Synchronizing from XXX to Yahoo
|
|||||||
|
|
||||||
R. Example:
|
R. Example:
|
||||||
|
|
||||||
|
On Linux:
|
||||||
./imapsync \
|
./imapsync \
|
||||||
|
--host1 XXX \
|
||||||
|
--user1 Billy@other.com \
|
||||||
|
--password1 billysecreta \
|
||||||
|
--host2 imap.mail.yahoo.com \
|
||||||
|
--user2 Billy@yahoo.com \
|
||||||
|
--password2 billysecretb \
|
||||||
|
--regexmess 's{(?<![\n])\z}{\r\n}gxms'
|
||||||
|
|
||||||
|
On Windows:
|
||||||
|
imapsync.exe \
|
||||||
--host1 XXX \
|
--host1 XXX \
|
||||||
--user1 Billy@other.com \
|
--user1 Billy@other.com \
|
||||||
--password1 billysecreta \
|
--password1 billysecreta \
|
||||||
@ -73,6 +84,8 @@ R. Example:
|
|||||||
--password2 billysecretb \
|
--password2 billysecretb \
|
||||||
--regexmess "s{(?<![\n])\z}{\r\n}gxms"
|
--regexmess "s{(?<![\n])\z}{\r\n}gxms"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
You wonder why there is this ugly regex, what it does and where does it
|
You wonder why there is this ugly regex, what it does and where does it
|
||||||
come from?
|
come from?
|
||||||
|
|
||||||
|
24
FAQ.d/FAQ.iCloud.txt
Normal file
24
FAQ.d/FAQ.iCloud.txt
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#!/bin/cat
|
||||||
|
# $Id: FAQ.iCloud.txt,v 1.1 2022/04/13 11:44:19 gilles Exp gilles $
|
||||||
|
|
||||||
|
This documentation is also available online at
|
||||||
|
https://imapsync.lamiral.info/FAQ.d/
|
||||||
|
https://imapsync.lamiral.info/FAQ.d/FAQ.iCloud.txt
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Imapsync tips for iCloud accounts.
|
||||||
|
=======================================================================
|
||||||
|
|
||||||
|
|
||||||
|
Q. How to migrate from or to an iCloud account?
|
||||||
|
|
||||||
|
R. From https://support.apple.com/en-us/HT202304
|
||||||
|
|
||||||
|
Use "imap.mail.me.com" as the imap server and use an app password.
|
||||||
|
|
||||||
|
How to generate an app password is described at
|
||||||
|
https://support.apple.com/kb/HT204397
|
||||||
|
|
||||||
|
It's not necessary to precise the port and the ssl thing, imapsync
|
||||||
|
auto-detect this.
|
@ -1,6 +1,6 @@
|
|||||||
## Dockerfile for building a docker imapsync image
|
## Dockerfile for building a docker imapsync image
|
||||||
|
|
||||||
# $Id: Dockerfile,v 1.42 2022/04/04 19:16:50 gilles Exp gilles $
|
# $Id: Dockerfile,v 1.43 2022/05/17 14:29:36 gilles Exp gilles $
|
||||||
# I use the following command to build the image:
|
# I use the following command to build the image:
|
||||||
#
|
#
|
||||||
# docker build -t gilleslamiral/imapsync .
|
# docker build -t gilleslamiral/imapsync .
|
||||||
@ -64,6 +64,7 @@ RUN set -xe && \
|
|||||||
libparse-recdescent-perl \
|
libparse-recdescent-perl \
|
||||||
libmodule-scandeps-perl \
|
libmodule-scandeps-perl \
|
||||||
libpar-packer-perl \
|
libpar-packer-perl \
|
||||||
|
libproc-processtable-perl \
|
||||||
libreadonly-perl \
|
libreadonly-perl \
|
||||||
libregexp-common-perl \
|
libregexp-common-perl \
|
||||||
libsys-meminfo-perl \
|
libsys-meminfo-perl \
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
# $Id: INSTALL.AWS_EC2.txt,v 1.8 2020/04/14 20:56:47 gilles Exp gilles $
|
# $Id: INSTALL.AWS_EC2.txt,v 1.9 2022/05/17 14:32:47 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also located online at
|
This documentation is also located online at
|
||||||
https://imapsync.lamiral.info/INSTALL.d/
|
https://imapsync.lamiral.info/INSTALL.d/
|
||||||
@ -43,7 +43,8 @@ To install a more recent imapsync
|
|||||||
perl-Test-NoWarnings \
|
perl-Test-NoWarnings \
|
||||||
perl-Test-Simple \
|
perl-Test-Simple \
|
||||||
perl-Test-Warn \
|
perl-Test-Warn \
|
||||||
perl-Sub-Uplevel
|
perl-Sub-Uplevel \
|
||||||
|
perl-Proc-ProcessTable
|
||||||
|
|
||||||
sudo cpanm Encode::IMAPUTF7
|
sudo cpanm Encode::IMAPUTF7
|
||||||
wget -N https://imapsync.lamiral.info/imapsync
|
wget -N https://imapsync.lamiral.info/imapsync
|
||||||
@ -96,6 +97,7 @@ perl-Test-Requires \
|
|||||||
perl-Try-Tiny \
|
perl-Try-Tiny \
|
||||||
perl-Unicode-String \
|
perl-Unicode-String \
|
||||||
perl-URI \
|
perl-URI \
|
||||||
|
perl-Proc-ProcessTable \
|
||||||
cpanminus
|
cpanminus
|
||||||
|
|
||||||
sudo cpanm Authen::NTLM Data::Uniqid IO::Tee \
|
sudo cpanm Authen::NTLM Data::Uniqid IO::Tee \
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
# $Id: INSTALL.ArchLinux.txt,v 1.5 2019/11/28 14:37:59 gilles Exp gilles $
|
# $Id: INSTALL.ArchLinux.txt,v 1.6 2022/05/17 14:31:44 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also located online at
|
This documentation is also located online at
|
||||||
https://imapsync.lamiral.info/INSTALL.d/
|
https://imapsync.lamiral.info/INSTALL.d/
|
||||||
@ -88,7 +88,8 @@ Other Perl modules, needed sometimes:
|
|||||||
JSON::WebToken::Crypt::RSA \
|
JSON::WebToken::Crypt::RSA \
|
||||||
Test::Mock::Guard \
|
Test::Mock::Guard \
|
||||||
Test::Warn \
|
Test::Warn \
|
||||||
PAR::Packer
|
PAR::Packer \
|
||||||
|
Proc::ProcessTable
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
# $Id: INSTALL.Centos.txt,v 1.31 2022/02/19 20:28:13 gilles Exp gilles $
|
# $Id: INSTALL.Centos.txt,v 1.32 2022/05/17 14:32:47 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also located online at
|
This documentation is also located online at
|
||||||
https://imapsync.lamiral.info/INSTALL.d/
|
https://imapsync.lamiral.info/INSTALL.d/
|
||||||
@ -61,7 +61,9 @@ Install the powertools imapsync 1.977 release via dnf like mentioned above.
|
|||||||
It will install the needed packages, Perl itself and Perl modules
|
It will install the needed packages, Perl itself and Perl modules
|
||||||
for release 1.977.
|
for release 1.977.
|
||||||
|
|
||||||
The latest imapsync 2.174 needs no more Perl modules.
|
The imapsync 2.206 and next ones needs the Perl module:
|
||||||
|
|
||||||
|
dnf install perl-Proc-ProcessTable
|
||||||
|
|
||||||
wget -N https://imapsync.lamiral.info/imapsync
|
wget -N https://imapsync.lamiral.info/imapsync
|
||||||
chmod +x imapsync
|
chmod +x imapsync
|
||||||
@ -132,6 +134,7 @@ Then:
|
|||||||
perl-Test-Simple \
|
perl-Test-Simple \
|
||||||
perl-Test-Warn \
|
perl-Test-Warn \
|
||||||
perl-Sub-Uplevel \
|
perl-Sub-Uplevel \
|
||||||
|
perl-Proc-ProcessTable \
|
||||||
ca-certificates
|
ca-certificates
|
||||||
|
|
||||||
Also, run the following commands:
|
Also, run the following commands:
|
||||||
@ -215,7 +218,8 @@ Then:
|
|||||||
perl-Test-Requires \
|
perl-Test-Requires \
|
||||||
perl-Test-Deep \
|
perl-Test-Deep \
|
||||||
perl-File-Tail \
|
perl-File-Tail \
|
||||||
perl-Unicode-String
|
perl-Unicode-String \
|
||||||
|
install perl-Proc-ProcessTable
|
||||||
|
|
||||||
wget https://imapsync.lamiral.info/imapsync
|
wget https://imapsync.lamiral.info/imapsync
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
# $Id: INSTALL.Darwin.txt,v 1.38 2022/04/05 19:44:30 gilles Exp gilles $
|
# $Id: INSTALL.Darwin.txt,v 1.39 2022/05/17 14:31:44 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also located online at
|
This documentation is also located online at
|
||||||
https://imapsync.lamiral.info/INSTALL.d/
|
https://imapsync.lamiral.info/INSTALL.d/
|
||||||
@ -208,6 +208,7 @@ helps to verify what is needed to install on your system
|
|||||||
cpanm Unicode::String
|
cpanm Unicode::String
|
||||||
cpanm Sys::MemInfo
|
cpanm Sys::MemInfo
|
||||||
cpanm File::Tail
|
cpanm File::Tail
|
||||||
|
cpanm Proc::ProcessTable
|
||||||
|
|
||||||
cpanm Test::MockObject
|
cpanm Test::MockObject
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
# $Id: INSTALL.Debian.txt,v 1.37 2022/03/29 11:03:55 gilles Exp gilles $
|
# $Id: INSTALL.Debian.txt,v 1.38 2022/05/17 14:29:36 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also located online at
|
This documentation is also located online at
|
||||||
https://imapsync.lamiral.info/INSTALL.d/
|
https://imapsync.lamiral.info/INSTALL.d/
|
||||||
@ -81,6 +81,7 @@ apt install -y \
|
|||||||
libjson-webtoken-perl \
|
libjson-webtoken-perl \
|
||||||
libmail-imapclient-perl \
|
libmail-imapclient-perl \
|
||||||
libparse-recdescent-perl \
|
libparse-recdescent-perl \
|
||||||
|
libproc-processtable-perl \
|
||||||
libmodule-scandeps-perl \
|
libmodule-scandeps-perl \
|
||||||
libreadonly-perl \
|
libreadonly-perl \
|
||||||
libregexp-common-perl \
|
libregexp-common-perl \
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
# $Id: INSTALL.Docker_build.txt,v 1.16 2022/04/05 13:20:24 gilles Exp gilles $
|
# $Id: INSTALL.Docker_build.txt,v 1.17 2022/05/17 14:29:36 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also located online at
|
This documentation is also located online at
|
||||||
https://imapsync.lamiral.info/INSTALL.d/
|
https://imapsync.lamiral.info/INSTALL.d/
|
||||||
@ -78,6 +78,7 @@ RUN set -xe && \
|
|||||||
libparse-recdescent-perl \
|
libparse-recdescent-perl \
|
||||||
libmodule-scandeps-perl \
|
libmodule-scandeps-perl \
|
||||||
libpar-packer-perl \
|
libpar-packer-perl \
|
||||||
|
libproc-processtable-perl \
|
||||||
libreadonly-perl \
|
libreadonly-perl \
|
||||||
libregexp-common-perl \
|
libregexp-common-perl \
|
||||||
libsys-meminfo-perl \
|
libsys-meminfo-perl \
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
# $Id: INSTALL.FreeBSD.txt,v 1.11 2019/11/28 14:38:42 gilles Exp gilles $
|
# $Id: INSTALL.FreeBSD.txt,v 1.12 2022/05/17 14:31:44 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also located online at
|
This documentation is also located online at
|
||||||
https://imapsync.lamiral.info/INSTALL.d/
|
https://imapsync.lamiral.info/INSTALL.d/
|
||||||
@ -32,5 +32,8 @@ p5-Test-MockObject
|
|||||||
p5-CGI
|
p5-CGI
|
||||||
p5-Encode-IMAPUTF7
|
p5-Encode-IMAPUTF7
|
||||||
|
|
||||||
Call to FreeBSD developer: It's also the new dependencies to add
|
|
||||||
for next the imapsync package 1.882
|
Call to FreeBSD developer: It's also the new Perl modules dependencies to add
|
||||||
|
for imapsync 2.206 and next ones:
|
||||||
|
|
||||||
|
Proc::ProcessTable
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
# $Id: INSTALL.OnlineUI.txt,v 1.52 2022/03/23 11:02:05 gilles Exp gilles $
|
# $Id: INSTALL.OnlineUI.txt,v 1.56 2022/05/19 08:55:50 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also located online at
|
This documentation is also located online at
|
||||||
https://imapsync.lamiral.info/INSTALL.d/
|
https://imapsync.lamiral.info/INSTALL.d/
|
||||||
@ -22,7 +22,6 @@ Average_bandwidth_rate: 345 KiB/s ~ 2.8 Mbps.
|
|||||||
Load mean: 0.8 on a CPU 4 cores "Intel(R) i5-2320 3.00GHz K8-class"
|
Load mean: 0.8 on a CPU 4 cores "Intel(R) i5-2320 3.00GHz K8-class"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Installation
|
Installation
|
||||||
|
|
||||||
@ -154,7 +153,11 @@ shouldn't install this imapsync service at all.
|
|||||||
=============================================================================
|
=============================================================================
|
||||||
A) Concrete example on a Debian server with Apache:
|
A) Concrete example on a Debian server with Apache:
|
||||||
|
|
||||||
Imapsync script place on the server disk is
|
First, install Apache on your Debian system:
|
||||||
|
|
||||||
|
apt install apache2
|
||||||
|
|
||||||
|
Imapsync script place on the server disk will be
|
||||||
/usr/lib/cgi-bin/imapsync
|
/usr/lib/cgi-bin/imapsync
|
||||||
|
|
||||||
This classical /cgi-bin directory is usually already configured
|
This classical /cgi-bin directory is usually already configured
|
||||||
@ -165,7 +168,9 @@ or
|
|||||||
|
|
||||||
This configuration file contains the following section
|
This configuration file contains the following section
|
||||||
somewhere, maybe in comments for now, ie, with
|
somewhere, maybe in comments for now, ie, with
|
||||||
some # characters at the beginning to make them ignored:
|
some # characters at the beginning to make them ignored.
|
||||||
|
If you don't find the following section, keep reading,
|
||||||
|
the solution is below.
|
||||||
|
|
||||||
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
|
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
|
||||||
<Directory "/usr/lib/cgi-bin">
|
<Directory "/usr/lib/cgi-bin">
|
||||||
@ -191,7 +196,7 @@ stuff with the following commands:
|
|||||||
|
|
||||||
a2enmod cgi
|
a2enmod cgi
|
||||||
a2enconf serve-cgi-bin
|
a2enconf serve-cgi-bin
|
||||||
/etc/init.d/apache2 reload
|
/etc/init.d/apache2 restart
|
||||||
|
|
||||||
If the cgi mode and the cgi-bin configuration are not activated then
|
If the cgi mode and the cgi-bin configuration are not activated then
|
||||||
you may encounter a 404 error when, later, you will run the command
|
you may encounter a 404 error when, later, you will run the command
|
||||||
@ -216,6 +221,9 @@ it will work under Apache with this command:
|
|||||||
|
|
||||||
su -s /bin/sh -c 'SERVER_SOFTWARE=foo /usr/lib/cgi-bin/imapsync' www-data
|
su -s /bin/sh -c 'SERVER_SOFTWARE=foo /usr/lib/cgi-bin/imapsync' www-data
|
||||||
|
|
||||||
|
You should end with something like:
|
||||||
|
Exiting with return value 0 (EX_OK: successful termination)
|
||||||
|
|
||||||
Test that imapsync is considered a cgi with:
|
Test that imapsync is considered a cgi with:
|
||||||
|
|
||||||
wget -nv -S -O- http://localhost/cgi-bin/imapsync?testslive=1
|
wget -nv -S -O- http://localhost/cgi-bin/imapsync?testslive=1
|
||||||
@ -223,8 +231,9 @@ Test that imapsync is considered a cgi with:
|
|||||||
The last command should print something like:
|
The last command should print something like:
|
||||||
Status: 200 OK to sync IMAP boxes. Load on bar is ...
|
Status: 200 OK to sync IMAP boxes. Load on bar is ...
|
||||||
...
|
...
|
||||||
|
Exiting with return value 0 (EX_OK: successful termination)
|
||||||
|
|
||||||
If you get a 404 here then review the cgi installation and
|
If you get a 404 or a 5xx here then review the cgi installation and
|
||||||
configuration part.
|
configuration part.
|
||||||
|
|
||||||
|
|
||||||
@ -264,6 +273,12 @@ Check
|
|||||||
or the safer
|
or the safer
|
||||||
https://yourhost/X/imapsync_form_extra.html
|
https://yourhost/X/imapsync_form_extra.html
|
||||||
|
|
||||||
|
Let's encrypt your site because crendentials should never travel in
|
||||||
|
clear form. Go to https://certbot.eff.org/instructions
|
||||||
|
|
||||||
|
See the Troubleshooting section to fix the systemd Apache
|
||||||
|
PrivateTmp=true issue.
|
||||||
|
|
||||||
That's all for installing a /X service on a Debian family system.
|
That's all for installing a /X service on a Debian family system.
|
||||||
|
|
||||||
=============================================================================
|
=============================================================================
|
||||||
@ -352,15 +367,19 @@ while maintaining SELinux in enforcing mode.
|
|||||||
|
|
||||||
Quick solution:
|
Quick solution:
|
||||||
|
|
||||||
sestatus
|
getsebool httpd_can_network_connect # should show --> off
|
||||||
setenforce 0
|
setsebool -P httpd_can_network_connect=1
|
||||||
sestatus
|
getsebool httpd_can_network_connect # should show --> on
|
||||||
|
wget -nv -S -O- http://localhost/cgi-bin/imapsync?testslive=1 # no more "Permission denied"
|
||||||
|
|
||||||
|
The -P option installs the rule permanently, even after a reboot
|
||||||
|
|
||||||
To go back to the previous state:
|
To go back to the previous state:
|
||||||
|
|
||||||
setenforce 1
|
getsebool httpd_can_network_connect # should show --> on
|
||||||
sestatus
|
setsebool -P httpd_can_network_connect=0
|
||||||
|
getsebool httpd_can_network_connect # should show --> off
|
||||||
|
|
||||||
|
|
||||||
Nota bene
|
Nota bene
|
||||||
=========
|
=========
|
||||||
@ -387,16 +406,18 @@ https://humdi.net/vnstat/
|
|||||||
Vnstat is already available as a package in most Linux distros.
|
Vnstat is already available as a package in most Linux distros.
|
||||||
|
|
||||||
The images are generated by the following commands, every minute:
|
The images are generated by the following commands, every minute:
|
||||||
vnstati -s -o /var/www/vnstat/vnstat_s.png
|
vnstati -s -o /var/www/html/vnstat/vnstat_s.png
|
||||||
vnstati -h -o /var/www/vnstat/vnstat_h.png
|
vnstati -h -o /var/www/html/vnstat/vnstat_h.png
|
||||||
vnstati -hg -o /var/www/vnstat/vnstat_hg.png
|
vnstati -hg -o /var/www/html/vnstat/vnstat_hg.png
|
||||||
vnstati -hs -o /var/www/vnstat/vnstat_hs.png
|
vnstati -hs -o /var/www/html/vnstat/vnstat_hs.png
|
||||||
vnstati -d -o /var/www/vnstat/vnstat_d.png
|
vnstati -d -o /var/www/html/vnstat/vnstat_d.png
|
||||||
vnstati -m -o /var/www/vnstat/vnstat_m.png
|
vnstati -m -o /var/www/html/vnstat/vnstat_m.png
|
||||||
vnstati -y -o /var/www/vnstat/vnstat_y.png
|
vnstati -y -o /var/www/html/vnstat/vnstat_y.png
|
||||||
vnstati -t -o /var/www/vnstat/vnstat_t.png
|
vnstati -t -o /var/www/html/vnstat/vnstat_t.png
|
||||||
vnstati -vs -o /var/www/vnstat/vnstat_vs.png
|
vnstati -vs -o /var/www/html/vnstat/vnstat_vs.png
|
||||||
vnstati -5 -o /var/www/vnstat/vnstat_5.png
|
vnstati -5 -o /var/www/html/vnstat/vnstat_5.png
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
@ -441,14 +462,22 @@ be canceled the next time the apache package is updated.
|
|||||||
|
|
||||||
Debian:
|
Debian:
|
||||||
systemctl edit apache2
|
systemctl edit apache2
|
||||||
|
|
||||||
cat /etc/systemd/system/apache2.service.d/override.conf
|
cat /etc/systemd/system/apache2.service.d/override.conf
|
||||||
|
[Service]
|
||||||
|
PrivateTmp=false
|
||||||
|
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
systemctl restart apache2
|
systemctl restart apache2
|
||||||
systemctl status apache2
|
systemctl status apache2
|
||||||
|
|
||||||
Centos:
|
Centos:
|
||||||
systemctl edit httpd
|
systemctl edit httpd
|
||||||
|
|
||||||
cat /etc/systemd/system/httpd.service.d/override.conf
|
cat /etc/systemd/system/httpd.service.d/override.conf
|
||||||
|
[Service]
|
||||||
|
PrivateTmp=false
|
||||||
|
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
systemctl restart httpd
|
systemctl restart httpd
|
||||||
systemctl status httpd
|
systemctl status httpd
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
# $Id: INSTALL.Ubuntu.txt,v 1.18 2021/07/30 15:06:43 gilles Exp gilles $
|
# $Id: INSTALL.Ubuntu.txt,v 1.21 2022/06/03 16:58:47 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also located online at
|
This documentation is also located online at
|
||||||
https://imapsync.lamiral.info/INSTALL.d/
|
https://imapsync.lamiral.info/INSTALL.d/
|
||||||
@ -17,6 +17,7 @@ This command installs standard Ubuntu packages:
|
|||||||
sudo apt-get install \
|
sudo apt-get install \
|
||||||
libauthen-ntlm-perl \
|
libauthen-ntlm-perl \
|
||||||
libclass-load-perl \
|
libclass-load-perl \
|
||||||
|
libcrypt-openssl-rsa-perl \
|
||||||
libcrypt-ssleay-perl \
|
libcrypt-ssleay-perl \
|
||||||
libdata-uniqid-perl \
|
libdata-uniqid-perl \
|
||||||
libdigest-hmac-perl \
|
libdigest-hmac-perl \
|
||||||
@ -28,11 +29,13 @@ libio-compress-perl \
|
|||||||
libio-socket-inet6-perl \
|
libio-socket-inet6-perl \
|
||||||
libio-socket-ssl-perl \
|
libio-socket-ssl-perl \
|
||||||
libio-tee-perl \
|
libio-tee-perl \
|
||||||
|
libjson-webtoken-perl \
|
||||||
libmail-imapclient-perl \
|
libmail-imapclient-perl \
|
||||||
libmodule-scandeps-perl \
|
libmodule-scandeps-perl \
|
||||||
libnet-dbus-perl \
|
libnet-dbus-perl \
|
||||||
libnet-ssleay-perl \
|
libnet-ssleay-perl \
|
||||||
libpar-packer-perl \
|
libpar-packer-perl \
|
||||||
|
libproc-processtable-perl \
|
||||||
libreadonly-perl \
|
libreadonly-perl \
|
||||||
libregexp-common-perl \
|
libregexp-common-perl \
|
||||||
libsys-meminfo-perl \
|
libsys-meminfo-perl \
|
||||||
@ -58,11 +61,6 @@ the following command installs it "manually":
|
|||||||
|
|
||||||
sudo cpanm Mail::IMAPClient
|
sudo cpanm Mail::IMAPClient
|
||||||
|
|
||||||
In case you need to use XOAUTH2 authentication you have to install
|
|
||||||
the module JSON::WebToken with the command:
|
|
||||||
|
|
||||||
sudo cpanm JSON::WebToken
|
|
||||||
|
|
||||||
After installing the dependencies, imapsync should be working.
|
After installing the dependencies, imapsync should be working.
|
||||||
|
|
||||||
You don't have to be root to test and use imapsync.
|
You don't have to be root to test and use imapsync.
|
||||||
|
18
INSTALL.d/INSTALL.webserver.txt
Normal file
18
INSTALL.d/INSTALL.webserver.txt
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/cat
|
||||||
|
# $Id: INSTALL.webserver.txt,v 1.6 2022/06/15 12:09:39 gilles Exp gilles $
|
||||||
|
|
||||||
|
This documentation is also located online at
|
||||||
|
https://imapsync.lamiral.info/INSTALL.d/
|
||||||
|
https://imapsync.lamiral.info/INSTALL.d/INSTALL.webserver.txt
|
||||||
|
|
||||||
|
|
||||||
|
The script named webserver in the top directory is a small web server
|
||||||
|
dedicated to offer the visual interface. It is experimental and it is
|
||||||
|
for now a plain text HTTP server (ie, not https).
|
||||||
|
|
||||||
|
|
||||||
|
Dependencies to run webserver on Debian/Ubuntu distributions:
|
||||||
|
|
||||||
|
sudo apt install libnet-server-perl
|
||||||
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# $Id: prerequisites_imapsync,v 1.35 2019/11/27 15:58:46 gilles Exp gilles $
|
# $Id: prerequisites_imapsync,v 1.36 2022/05/17 13:46:16 gilles Exp gilles $
|
||||||
|
|
||||||
MODULES_MANDATORY='
|
MODULES_MANDATORY='
|
||||||
App::cpanminus
|
App::cpanminus
|
||||||
@ -39,6 +39,7 @@ Package::Stash::XS
|
|||||||
PAR::Packer
|
PAR::Packer
|
||||||
Parse::RecDescent
|
Parse::RecDescent
|
||||||
Pod::Usage
|
Pod::Usage
|
||||||
|
Proc::ProcessTable
|
||||||
Readonly
|
Readonly
|
||||||
Regexp::Common
|
Regexp::Common
|
||||||
Sys::MemInfo
|
Sys::MemInfo
|
||||||
|
238
Makefile
238
Makefile
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
# $Id: Makefile,v 1.345 2022/04/06 10:00:39 gilles Exp gilles $
|
# $Id: Makefile,v 1.349 2022/09/15 08:43:25 gilles Exp gilles $
|
||||||
|
|
||||||
.PHONY: help usage all doc
|
.PHONY: help usage all doc
|
||||||
|
|
||||||
@ -109,8 +109,6 @@ VERSION: imapsync
|
|||||||
touch -r ./imapsync ./VERSION
|
touch -r ./imapsync ./VERSION
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
doc/GOOD_PRACTICES.html: doc/GOOD_PRACTICES.t2t
|
doc/GOOD_PRACTICES.html: doc/GOOD_PRACTICES.t2t
|
||||||
txt2tags -i doc/GOOD_PRACTICES.t2t -t html --toc -o doc/GOOD_PRACTICES.html
|
txt2tags -i doc/GOOD_PRACTICES.t2t -t html --toc -o doc/GOOD_PRACTICES.html
|
||||||
./W/tools/validate_html4 doc/GOOD_PRACTICES.html
|
./W/tools/validate_html4 doc/GOOD_PRACTICES.html
|
||||||
@ -172,18 +170,32 @@ install: testp W/imapsync.1
|
|||||||
install W/imapsync.1 $(DESTDIR)$(PREFIX)/share/man/man1/imapsync.1
|
install W/imapsync.1 $(DESTDIR)$(PREFIX)/share/man/man1/imapsync.1
|
||||||
chmod 644 $(DESTDIR)$(PREFIX)/share/man/man1/imapsync.1
|
chmod 644 $(DESTDIR)$(PREFIX)/share/man/man1/imapsync.1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# Local goals
|
# Local goals
|
||||||
###############
|
###############
|
||||||
|
|
||||||
.PHONY: prereq test tests unitests testp testf test3xx perlcritic allcritic crit compok dev cover tidy nytprof functree
|
.PHONY: dailybuild dailytests prereq test tests unitests testp testf test3xx perlcritic allcritic crit compok dev cover tidy nytprof functree
|
||||||
|
|
||||||
dev: test functree crit cover nytprof bin
|
dev: test functree crit cover nytprof bin
|
||||||
|
|
||||||
|
|
||||||
|
dailytests: linuxtests win32tests win64tests mactests
|
||||||
|
|
||||||
|
dailybuild: linuxbuild win32build win64build macbuild
|
||||||
|
|
||||||
|
linuxtests:
|
||||||
|
./imapsync --tests
|
||||||
|
|
||||||
|
linuxtestsdebug:
|
||||||
|
./imapsync --testsdebug
|
||||||
|
|
||||||
|
testsdebug: linuxtestsdebug win64testsdebug win32testsdebug mactestsdebug
|
||||||
|
|
||||||
|
testslive: mactestslive
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
docker:
|
docker:
|
||||||
@echo "make docker_copy_to_vp3 # copy imapsync Dockerfile memo_docker to vp3"
|
@echo "make docker_copy_to_vp3 # copy imapsync Dockerfile memo_docker to vp3"
|
||||||
@echo "make docker_build # build the imapsync docker image"
|
@echo "make docker_build # build the imapsync docker image"
|
||||||
@ -258,7 +270,7 @@ perlcritic: W/perlcritic_3.txt W/perlcritic_2.txt
|
|||||||
allcritic: W/perlcritic_4.txt W/perlcritic_3.txt W/perlcritic_2.txt W/perlcritic_1.txt
|
allcritic: W/perlcritic_4.txt W/perlcritic_3.txt W/perlcritic_2.txt W/perlcritic_1.txt
|
||||||
|
|
||||||
W/perlcritic_1.txt: imapsync W/.compok
|
W/perlcritic_1.txt: imapsync W/.compok
|
||||||
perlcritic --statistics-only -1 imapsync > W/perlcritic_1.txt.tmp || :
|
perlcritic --statistics -1 imapsync > W/perlcritic_1.txt.tmp || :
|
||||||
mv W/perlcritic_1.txt.tmp W/perlcritic_1.txt
|
mv W/perlcritic_1.txt.tmp W/perlcritic_1.txt
|
||||||
echo | ci -l W/perlcritic_1.txt
|
echo | ci -l W/perlcritic_1.txt
|
||||||
|
|
||||||
@ -331,6 +343,7 @@ win32testsdebug:
|
|||||||
./W/check_winerr test_testsdebug.bat
|
./W/check_winerr test_testsdebug.bat
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.PHONY: W/*.bat examples/*
|
.PHONY: W/*.bat examples/*
|
||||||
|
|
||||||
|
|
||||||
@ -451,35 +464,48 @@ imapsync_32bit.exe: imapsync
|
|||||||
chmod a+r+x imapsync_32bit.exe
|
chmod a+r+x imapsync_32bit.exe
|
||||||
(date "+%s"| tr "\n" " "; echo -n "END 32bit " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
|
(date "+%s"| tr "\n" " "; echo -n "END 32bit " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
|
||||||
|
|
||||||
|
win64tests: win64tests_p26
|
||||||
|
|
||||||
|
win64tests_p24:
|
||||||
win64tests:
|
|
||||||
unix2dos W/test_tests.bat
|
unix2dos W/test_tests.bat
|
||||||
scp imapsync W/test_tests.bat pc_HP_DV7_p24:'Desktop/imapsync_build'
|
scp imapsync W/test_tests.bat pc_HP_DV7_p24:'Desktop/imapsync_build'
|
||||||
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/test_tests.bat'
|
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/test_tests.bat'
|
||||||
./W/check_win64err test_tests.bat
|
./W/check_win64err test_tests.bat
|
||||||
|
|
||||||
win64testsdebug:
|
win64testsdebug_p24:
|
||||||
unix2dos W/test_testsdebug.bat
|
unix2dos W/test_testsdebug.bat
|
||||||
scp imapsync W/test_testsdebug.bat pc_HP_DV7_p24:'Desktop/imapsync_build'
|
scp imapsync W/test_testsdebug.bat pc_HP_DV7_p24:'Desktop/imapsync_build'
|
||||||
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/test_testsdebug.bat'
|
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/test_testsdebug.bat'
|
||||||
./W/check_win64err test_testsdebug.bat
|
./W/check_win64err test_testsdebug.bat
|
||||||
|
|
||||||
|
win64testsdebug: win64testsdebug_p26
|
||||||
|
|
||||||
win64testsdebug_p26:
|
win64testsdebug_p26:
|
||||||
unix2dos W/test_testsdebug.bat
|
unix2dos W/test_testsdebug.bat
|
||||||
scp imapsync W/test_testsdebug.bat gille@p26:'Desktop\imapsync_build'
|
scp imapsync W/test_testsdebug.bat gille@p26:'OneDrive\Bureau\imapsync_build'
|
||||||
ssh gille@p26 'Desktop\imapsync_build\test_testsdebug.bat'
|
ssh gille@p26 'OneDrive\Bureau\imapsync_build\test_testsdebug.bat'
|
||||||
./W/check_p26err test_testsdebug.bat
|
./W/check_p26err test_testsdebug.bat
|
||||||
|
|
||||||
|
|
||||||
win64tests_p26:
|
win64tests_p26:
|
||||||
unix2dos W/test_tests.bat
|
unix2dos W/test_tests.bat
|
||||||
scp imapsync W/test_tests.bat gille@p26:'Desktop\imapsync_build'
|
scp imapsync W/test_tests.bat gille@p26:'OneDrive\Bureau\imapsync_build'
|
||||||
ssh gille@p26 'Desktop\imapsync_build\test_tests.bat'
|
ssh gille@p26 'OneDrive\Bureau\imapsync_build\test_tests.bat'
|
||||||
./W/check_p26err test_tests.bat
|
./W/check_p26err test_tests.bat
|
||||||
|
|
||||||
|
|
||||||
|
win64_test_exe_always_fail_p26:
|
||||||
|
unix2dos W/test_exe_always_fail.bat
|
||||||
|
scp W/test_exe_always_fail.bat gille@p26:'OneDrive\Bureau\imapsync_build'
|
||||||
|
ssh gille@p26 'OneDrive\Bureau\imapsync_build\test_exe_always_fail.bat'
|
||||||
|
./W/check_p26err test_exe_always_fail.bat
|
||||||
|
|
||||||
|
win64_test_always_fail_p26:
|
||||||
|
unix2dos W/test_exe_always_fail.bat
|
||||||
|
scp imapsync W/test_always_fail.bat gille@p26:'OneDrive\Bureau\imapsync_build'
|
||||||
|
ssh gille@p26 'OneDrive\Bureau\imapsync_build\test_always_fail.bat'
|
||||||
|
./W/check_p26err test_always_fail.bat
|
||||||
|
|
||||||
zzz:
|
zzz:
|
||||||
unix2dos W/build_exe.bat W/install_module_one.bat
|
unix2dos W/build_exe.bat W/install_module_one.bat
|
||||||
scp imapsync W/build_exe.bat W/install_module_one.bat W/test_exe_testsdebug.bat pc_HP_DV7_p24:'Desktop/imapsync_build'
|
scp imapsync W/build_exe.bat W/install_module_one.bat W/test_exe_testsdebug.bat pc_HP_DV7_p24:'Desktop/imapsync_build'
|
||||||
@ -543,19 +569,46 @@ win64prepa: winprepalocal
|
|||||||
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/build_exe.bat'
|
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/build_exe.bat'
|
||||||
./W/check_win64err build_exe.bat
|
./W/check_win64err build_exe.bat
|
||||||
|
|
||||||
win64build: winprepalocal
|
win64build_p24: winprepalocal
|
||||||
scp imapsync W/build_exe.bat W/install_modules.bat pc_HP_DV7_p24:'Desktop/imapsync_build'
|
scp imapsync W/build_exe.bat W/install_modules.bat pc_HP_DV7_p24:'Desktop/imapsync_build'
|
||||||
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/build_exe.bat'
|
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/build_exe.bat'
|
||||||
./W/check_win64err build_exe.bat
|
./W/check_win64err build_exe.bat
|
||||||
|
|
||||||
imapsync.exe: imapsync_64bit.exe_p26
|
imapsync.exe: imapsync_64bit.exe_p26
|
||||||
cp -a imapsync_64bit.exe imapsync.exe
|
cp -a imapsync_64bit.exe_p26 imapsync.exe
|
||||||
|
|
||||||
|
win64build: imapsync_64bit.exe_p26
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
win64build_p26: winprepalocal
|
||||||
|
scp imapsync W/build_exe.bat W/install_modules.bat gille@p26:'OneDrive\Bureau\imapsync_build'
|
||||||
|
ssh gille@p26 'OneDrive\Bureau\imapsync_build\build_exe.bat'
|
||||||
|
./W/check_win64err build_exe.bat
|
||||||
|
|
||||||
|
|
||||||
.PHONY: imapsync_64bit.exe_p24 imapsync_64bit.exe_p26
|
.PHONY: imapsync_64bit.exe_p24 imapsync_64bit.exe_p26
|
||||||
|
|
||||||
|
64exe: imapsync_64bit.exe_p26
|
||||||
|
|
||||||
|
imapsync_64bit.exe_p26: imapsync
|
||||||
|
(date "+%s"| tr "\n" " "; echo -n "BEGIN 64bit " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
|
||||||
|
unix2dos W/build_exe.bat W/test_exe.bat W/install_modules.bat W/install_module_one.bat
|
||||||
|
ssh gille@p26 'perl -V'
|
||||||
|
ssh gille@p26 'if not exist OneDrive\Bureau\imapsync_build mkdir OneDrive\Bureau\imapsync_build'
|
||||||
|
scp imapsync W/build_exe.bat W/install_modules.bat W/install_module_one.bat \
|
||||||
|
W/test_exe_tests.bat W/test_exe_testsdebug.bat W/test_exe.bat \
|
||||||
|
gille@p26:'OneDrive\Bureau\imapsync_build'
|
||||||
|
ssh gille@p26 'OneDrive\Bureau\imapsync_build\build_exe.bat'
|
||||||
|
./W/check_p26err build_exe.bat
|
||||||
|
scp ../../var/pass/secret.tata ../../var/pass/secret.titi gille@p26:'OneDrive\Bureau\imapsync_build'
|
||||||
|
ssh gille@p26 'OneDrive\Bureau\imapsync_build\test_exe.bat'
|
||||||
|
./W/check_p26err test_exe.bat
|
||||||
|
rm -f imapsync_64bit.exe
|
||||||
|
scp -T gille@p26:'OneDrive\Bureau\imapsync_build\imapsync_64bit.exe' .
|
||||||
|
chmod a+r+x imapsync_64bit.exe
|
||||||
|
(date "+%s"| tr "\n" " "; echo -n "END 64bit " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
|
||||||
|
|
||||||
|
|
||||||
imapsync_64bit.exe_p24: imapsync
|
imapsync_64bit.exe_p24: imapsync
|
||||||
(date "+%s"| tr "\n" " "; echo -n "BEGIN 64bit " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
|
(date "+%s"| tr "\n" " "; echo -n "BEGIN 64bit " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
|
||||||
@ -573,26 +626,8 @@ imapsync_64bit.exe_p24: imapsync
|
|||||||
chmod a+r+x imapsync_64bit.exe
|
chmod a+r+x imapsync_64bit.exe
|
||||||
(date "+%s"| tr "\n" " "; echo -n "END 64bit " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
|
(date "+%s"| tr "\n" " "; echo -n "END 64bit " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
|
||||||
|
|
||||||
imapsync_64bit.exe: imapsync
|
|
||||||
(date "+%s"| tr "\n" " "; echo -n "BEGIN 64bit " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
|
|
||||||
unix2dos W/build_exe.bat W/test_exe.bat W/install_modules.bat W/install_module_one.bat
|
|
||||||
ssh gille@p26 'perl -V'
|
|
||||||
ssh gille@p26 'if not exist Desktop\imapsync_build mkdir Desktop\imapsync_build'
|
|
||||||
scp imapsync W/build_exe.bat W/install_modules.bat W/install_module_one.bat \
|
|
||||||
W/test_exe_tests.bat W/test_exe_testsdebug.bat W/test_exe.bat \
|
|
||||||
gille@p26:'Desktop\imapsync_build'
|
|
||||||
ssh gille@p26 'Desktop\imapsync_build\build_exe.bat'
|
|
||||||
./W/check_p26err build_exe.bat
|
|
||||||
scp ../../var/pass/secret.tata ../../var/pass/secret.titi gille@p26:'Desktop\imapsync_build'
|
|
||||||
ssh gille@p26 'Desktop\imapsync_build\test_exe.bat'
|
|
||||||
./W/check_p26err test_exe.bat
|
|
||||||
rm -f imapsync_64bit.exe
|
|
||||||
scp -T gille@p26:'Desktop\imapsync_build\imapsync_64bit.exe' .
|
|
||||||
chmod a+r+x imapsync_64bit.exe
|
|
||||||
(date "+%s"| tr "\n" " "; echo -n "END 64bit " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
|
|
||||||
|
|
||||||
|
zip: dosify_bat cidone
|
||||||
zip: dosify_bat
|
|
||||||
rm -rfv ../prepa_zip/imapsync_$(VERSION)/
|
rm -rfv ../prepa_zip/imapsync_$(VERSION)/
|
||||||
mkdir -p ../prepa_zip/imapsync_$(VERSION)/FAQ.d/ ../prepa_zip/imapsync_$(VERSION)/Cook/
|
mkdir -p ../prepa_zip/imapsync_$(VERSION)/FAQ.d/ ../prepa_zip/imapsync_$(VERSION)/Cook/
|
||||||
cp -av examples/imapsync_example.bat examples/sync_loop_windows.bat examples/file.txt ../prepa_zip/imapsync_$(VERSION)/
|
cp -av examples/imapsync_example.bat examples/sync_loop_windows.bat examples/file.txt ../prepa_zip/imapsync_$(VERSION)/
|
||||||
@ -614,9 +649,9 @@ zip: dosify_bat
|
|||||||
mac: imapsync_bin_Darwin
|
mac: imapsync_bin_Darwin
|
||||||
|
|
||||||
macstadiumcopy:
|
macstadiumcopy:
|
||||||
rsync -v imapsync W/build_mac.sh INSTALL.d/prerequisites_imapsync webserver administrator@macstadium.lamiral.info:
|
rsync -pv imapsync W/build_mac.sh INSTALL.d/prerequisites_imapsync webserver administrator@macstadium.lamiral.info:
|
||||||
rsync -v examples/file.txt examples/sync_loop_darwin.sh administrator@macstadium.lamiral.info:examples/
|
rsync -pv examples/file.txt examples/sync_loop_darwin.sh administrator@macstadium.lamiral.info:examples/
|
||||||
rsync -v X/ administrator@macstadium.lamiral.info:X/
|
rsync -pv X/ administrator@macstadium.lamiral.info:X/
|
||||||
|
|
||||||
maccopy:
|
maccopy:
|
||||||
rsync -v -p -e 'ssh -4 -p 995' imapsync W/build_mac.sh INSTALL.d/prerequisites_imapsync webserver \
|
rsync -v -p -e 'ssh -4 -p 995' imapsync W/build_mac.sh INSTALL.d/prerequisites_imapsync webserver \
|
||||||
@ -648,6 +683,16 @@ mactestslive6:
|
|||||||
rsync -p -e 'ssh -4 -p 995' imapsync gilleslamira@gate.polarhome.com:
|
rsync -p -e 'ssh -4 -p 995' imapsync gilleslamira@gate.polarhome.com:
|
||||||
ssh -4 -p 995 gilleslamira@gate.polarhome.com '. .bash_profile; perl imapsync --testslive6'
|
ssh -4 -p 995 gilleslamira@gate.polarhome.com '. .bash_profile; perl imapsync --testslive6'
|
||||||
|
|
||||||
|
macstests:
|
||||||
|
rsync -pv imapsync administrator@macstadium.lamiral.info:
|
||||||
|
ssh administrator@macstadium.lamiral.info '. .bash_profile; perl imapsync --tests'
|
||||||
|
|
||||||
|
macstestsdebug:
|
||||||
|
rsync -pv imapsync administrator@macstadium.lamiral.info:
|
||||||
|
ssh administrator@macstadium.lamiral.info '. .bash_profile; perl imapsync --testsdebug'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.PHONY: bin win lin win32 win64
|
.PHONY: bin win lin win32 win64
|
||||||
|
|
||||||
bin: mac win
|
bin: mac win
|
||||||
@ -660,6 +705,10 @@ win32: imapsync_32bit.exe
|
|||||||
|
|
||||||
win64: imapsync_64bit.exe
|
win64: imapsync_64bit.exe
|
||||||
|
|
||||||
|
win32build: imapsync_32bit.exe
|
||||||
|
|
||||||
|
linuxbuild: lin
|
||||||
|
|
||||||
|
|
||||||
$(BIN_NAME): imapsync
|
$(BIN_NAME): imapsync
|
||||||
rcsdiff imapsync
|
rcsdiff imapsync
|
||||||
@ -893,15 +942,19 @@ upload_latest: unitests ci_imapsync bin
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
.PHONY: upload_cgi upload_cgi_ks5 upload_cgi_memo upload_cgi_vp3 upload_cgi_vp4 upload_cgi_ks6
|
.PHONY: upload_cgi upload_cgi_ks5 upload_cgi_memo upload_cgi_vp3 upload_cgi_vp4 upload_cgi_ks6 upload_tmphash_all
|
||||||
|
|
||||||
upload_cgi: upload_cgi_ks5 upload_cgi_vp3 upload_cgi_vp4 upload_cgi_ks6
|
|
||||||
|
|
||||||
upload_cgi_ks5: ci_imapsync unitests ks5tests
|
upload_proximapsync:
|
||||||
rsync -P imapsync root@ks5.lamiral.info:/home/www/apache24/cgi-bin/imapsync_new
|
rcsdiff W/learn/proximapsync
|
||||||
curl -v --data 'testslive=1' https://imapsync.lamiral.info/cgi-bin/imapsync_new | grep 'Exiting with return value 0'
|
W/learn/proximapsync --tests
|
||||||
rsync -P imapsync root@ks5.lamiral.info:/home/www/apache24/cgi-bin/imapsync
|
W/learn/proximapsync --testslive | grep 'Exiting with return value 0'
|
||||||
curl -v --data 'testslive=1' https://imapsync.lamiral.info/cgi-bin/imapsync | grep 'Exiting with return value 0'
|
rsync -P W/learn/proximapsync root@ks5.lamiral.info:/home/www/apache24/cgi-bin/proximapsync_new
|
||||||
|
ssh root@ks5.lamiral.info '/home/www/apache24/cgi-bin/proximapsync_new --tests'
|
||||||
|
ssh root@ks5.lamiral.info '/home/www/apache24/cgi-bin/proximapsync_new --testslive' | grep 'Exiting with return value 0'
|
||||||
|
curl -v --data 'testslive=1' https://imapsync.lamiral.info/cgi-bin/proximapsync_new 2>/dev/null | grep 'Exiting with return value 0'
|
||||||
|
rsync -P W/learn/proximapsync root@ks5.lamiral.info:/home/www/apache24/cgi-bin/proximapsync
|
||||||
|
curl -v --data 'testslive=1' https://imapsync.lamiral.info/cgi-bin/proximapsync 2>/dev/null | grep 'Exiting with return value 0'
|
||||||
|
|
||||||
upload_cgi_memo:
|
upload_cgi_memo:
|
||||||
dos2unix X/stat_patterns.txt X/server_survey_patterns.txt
|
dos2unix X/stat_patterns.txt X/server_survey_patterns.txt
|
||||||
@ -909,31 +962,73 @@ upload_cgi_memo:
|
|||||||
rsync -av X/cgi_memo X/stat_patterns.txt X/server_survey_patterns.txt root@ks5:/var/tmp/imapsync_cgi/
|
rsync -av X/cgi_memo X/stat_patterns.txt X/server_survey_patterns.txt root@ks5:/var/tmp/imapsync_cgi/
|
||||||
|
|
||||||
upload_cgi_memo_all:
|
upload_cgi_memo_all:
|
||||||
rsync -av X/cgi_memo root@ks5:/var/tmp/imapsync_cgi/
|
rsync -av X/cgi_memo X/stat_patterns.txt X/server_survey_patterns.txt root@ks5:/var/tmp/imapsync_cgi/
|
||||||
rsync -av X/cgi_memo root@ks6:/var/tmp/imapsync_cgi/
|
rsync -av X/cgi_memo X/stat_patterns.txt X/server_survey_patterns.txt root@ks6:/var/tmp/imapsync_cgi/
|
||||||
rsync -av X/cgi_memo root@vp3:/var/tmp/imapsync_cgi/
|
rsync -av X/cgi_memo X/stat_patterns.txt X/server_survey_patterns.txt root@ks7:/var/tmp/imapsync_cgi/
|
||||||
rsync -av X/cgi_memo root@vp4:/var/tmp/imapsync_cgi/
|
rsync -av X/cgi_memo X/stat_patterns.txt X/server_survey_patterns.txt root@vp3:/var/tmp/imapsync_cgi/
|
||||||
|
rsync -av X/cgi_memo X/stat_patterns.txt X/server_survey_patterns.txt root@vp4:/var/tmp/imapsync_cgi/
|
||||||
|
! ping -c1 -W1 cl1 || rsync -av X/cgi_memo X/stat_patterns.txt X/server_survey_patterns.txt root@cl1:/var/tmp/imapsync_cgi/
|
||||||
|
|
||||||
|
upload_tmphash_all:
|
||||||
|
scp /var/tmp/imapsync_hash root@ks5:/var/tmp/imapsync_hash && ssh root@ks5 chgrp www /var/tmp/imapsync_hash
|
||||||
|
scp /var/tmp/imapsync_hash root@ks6:/var/tmp/imapsync_hash && ssh root@ks6 chgrp www-data /var/tmp/imapsync_hash
|
||||||
|
scp /var/tmp/imapsync_hash root@vp3:/var/tmp/imapsync_hash && ssh root@vp3 chgrp www-data /var/tmp/imapsync_hash
|
||||||
|
scp /var/tmp/imapsync_hash root@vp4:/var/tmp/imapsync_hash && ssh root@vp4 chgrp apache /var/tmp/imapsync_hash
|
||||||
|
scp /var/tmp/imapsync_hash root@i050:/var/tmp/imapsync_hash && ssh root@i050 chgrp www-data /var/tmp/imapsync_hash
|
||||||
|
|
||||||
|
test_cgi_all:
|
||||||
|
curl -v --data 'testslive=1;exitonload=0' https://imapsync.lamiral.info/cgi-bin/imapsync 2>/dev/null | grep 'Exiting with return value 0' # ks5
|
||||||
|
curl -v --data 'testslive=1;exitonload=0' https://i006.lamiral.info/cgi-bin/imapsync 2>/dev/null | grep 'Exiting with return value 0'
|
||||||
|
curl -v --data 'testslive=1;exitonload=0' https://i007.lamiral.info/cgi-bin/imapsync 2>/dev/null | grep 'Exiting with return value 0'
|
||||||
|
curl -v --data 'testslive=1;exitonload=0' https://i013.lamiral.info/cgi-bin/imapsync 2>/dev/null | grep 'Exiting with return value 0'
|
||||||
|
curl -v --data 'testslive=1;exitonload=0' https://i014.lamiral.info/cgi-bin/imapsync 2>/dev/null | grep 'Exiting with return value 0'
|
||||||
|
|
||||||
|
upload_cgi: upload_cgi_ks5 upload_cgi_vp3 upload_cgi_vp4 upload_cgi_ks6 upload_cgi_ks7
|
||||||
|
|
||||||
|
# FreeBSD
|
||||||
|
upload_cgi_ks5: ci_imapsync unitests ks5tests
|
||||||
|
rsync -P imapsync root@ks5.lamiral.info:/home/www/apache24/cgi-bin/imapsync_new
|
||||||
|
curl -v --data 'testslive=1;exitonload=0' https://imapsync.lamiral.info/cgi-bin/imapsync_new 2>/dev/null | grep 'Exiting with return value 0'
|
||||||
|
rsync -P imapsync root@ks5.lamiral.info:/home/www/apache24/cgi-bin/imapsync
|
||||||
|
curl -v --data 'testslive=1;exitonload=0' https://imapsync.lamiral.info/cgi-bin/imapsync 2>/dev/null | grep 'Exiting with return value 0'
|
||||||
|
|
||||||
|
|
||||||
# Debian
|
# Debian
|
||||||
upload_cgi_vp3: ci_imapsync vp3tests
|
upload_cgi_vp3: ci_imapsync vp3tests
|
||||||
rsync -P imapsync root@vp3.lamiral.info:/usr/lib/cgi-bin/imapsync_new
|
rsync -P imapsync root@vp3.lamiral.info:/usr/lib/cgi-bin/imapsync_new
|
||||||
curl -v --data 'testslive=1' https://vp3.lamiral.info/cgi-bin/imapsync_new | grep 'Exiting with return value 0'
|
curl -v --data 'testslive=1;exitonload=0' https://vp3.lamiral.info/cgi-bin/imapsync_new 2>/dev/null | grep 'Exiting with return value 0'
|
||||||
rsync -P imapsync root@vp3.lamiral.info:/usr/lib/cgi-bin/imapsync
|
rsync -P imapsync root@vp3.lamiral.info:/usr/lib/cgi-bin/imapsync
|
||||||
curl -v --data 'testslive=1' https://vp3.lamiral.info/cgi-bin/imapsync | grep 'Exiting with return value 0'
|
curl -v --data 'testslive=1;exitonload=0' https://vp3.lamiral.info/cgi-bin/imapsync 2>/dev/null | grep 'Exiting with return value 0'
|
||||||
|
|
||||||
# Centos
|
# Centos
|
||||||
upload_cgi_vp4: ci_imapsync vp4tests
|
upload_cgi_vp4: ci_imapsync vp4tests
|
||||||
rsync -P imapsync root@vp4.lamiral.info:/var/www/cgi-bin/imapsync_new
|
rsync -P imapsync root@vp4.lamiral.info:/var/www/cgi-bin/imapsync_new
|
||||||
curl -v --data 'testslive=1' https://vp4.lamiral.info/cgi-bin/imapsync_new | grep 'Exiting with return value 0'
|
curl -v --data 'testslive=1;exitonload=0' https://vp4.lamiral.info/cgi-bin/imapsync_new 2>/dev/null | grep 'Exiting with return value 0'
|
||||||
rsync -P imapsync root@vp4.lamiral.info:/var/www/cgi-bin/imapsync
|
rsync -P imapsync root@vp4.lamiral.info:/var/www/cgi-bin/imapsync
|
||||||
curl -v --data 'testslive=1' https://vp4.lamiral.info/cgi-bin/imapsync | grep 'Exiting with return value 0'
|
curl -v --data 'testslive=1;exitonload=0' https://vp4.lamiral.info/cgi-bin/imapsync 2>/dev/null | grep 'Exiting with return value 0'
|
||||||
|
|
||||||
# Debian
|
# Debian
|
||||||
upload_cgi_ks6: ci_imapsync ks6tests
|
upload_cgi_ks6: ci_imapsync ks6tests
|
||||||
rsync -P imapsync root@ks6.lamiral.info:/usr/lib/cgi-bin/imapsync_new
|
rsync -P imapsync root@ks6.lamiral.info:/usr/lib/cgi-bin/imapsync_new
|
||||||
curl -v --data 'testslive=1' https://ks6.lamiral.info/cgi-bin/imapsync_new | grep 'Exiting with return value 0'
|
curl -v --data 'testslive=1;exitonload=0' https://ks6.lamiral.info/cgi-bin/imapsync_new 2>/dev/null | grep 'Exiting with return value 0'
|
||||||
rsync -P imapsync root@ks6.lamiral.info:/usr/lib/cgi-bin/imapsync
|
rsync -P imapsync root@ks6.lamiral.info:/usr/lib/cgi-bin/imapsync
|
||||||
curl -v --data 'testslive=1' https://ks6.lamiral.info/cgi-bin/imapsync | grep 'Exiting with return value 0'
|
curl -v --data 'testslive=1;exitonload=0' https://ks6.lamiral.info/cgi-bin/imapsync 2>/dev/null | grep 'Exiting with return value 0'
|
||||||
|
|
||||||
|
# Promox/Debian
|
||||||
|
upload_cgi_ks7: ci_imapsync ks7tests
|
||||||
|
rsync -P imapsync root@ks7.lamiral.info:/usr/lib/cgi-bin/imapsync_new
|
||||||
|
curl -v --data 'testslive=1;exitonload=0' https://ks7.lamiral.info/cgi-bin/imapsync_new 2>/dev/null | grep 'Exiting with return value 0'
|
||||||
|
rsync -P imapsync root@ks7.lamiral.info:/usr/lib/cgi-bin/imapsync
|
||||||
|
curl -v --data 'testslive=1;exitonload=0' https://ks7.lamiral.info/cgi-bin/imapsync 2>/dev/null | grep 'Exiting with return value 0'
|
||||||
|
|
||||||
|
# Debian
|
||||||
|
upload_cgi_cl1: ci_imapsync cl1tests
|
||||||
|
rsync -P imapsync root@cl1.lamiral.info:/usr/lib/cgi-bin/imapsync_new
|
||||||
|
curl -v --data 'testslive=1;exitonload=0' https://cl1.lamiral.info/cgi-bin/imapsync_new 2>/dev/null | grep 'Exiting with return value 0'
|
||||||
|
rsync -P imapsync root@cl1.lamiral.info:/usr/lib/cgi-bin/imapsync
|
||||||
|
curl -v --data 'testslive=1;exitonload=0' https://cl1.lamiral.info/cgi-bin/imapsync 2>/dev/null | grep 'Exiting with return value 0'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.PHONY: vp3tests vp4tests ks6tests
|
.PHONY: vp3tests vp4tests ks6tests
|
||||||
|
|
||||||
@ -952,10 +1047,29 @@ ks6tests:
|
|||||||
ssh root@ks6.lamiral.info ./imapsync --tests
|
ssh root@ks6.lamiral.info ./imapsync --tests
|
||||||
ssh root@ks6.lamiral.info ./imapsync --testslive6
|
ssh root@ks6.lamiral.info ./imapsync --testslive6
|
||||||
|
|
||||||
|
ks7tests:
|
||||||
|
rsync -P imapsync root@ks7.lamiral.info:imapsync
|
||||||
|
ssh root@ks7.lamiral.info ./imapsync --tests
|
||||||
|
ssh root@ks7.lamiral.info ./imapsync --testslive6
|
||||||
|
|
||||||
|
cl1tests:
|
||||||
|
rsync -P imapsync root@cl1.lamiral.info:imapsync
|
||||||
|
ssh root@cl1.lamiral.info ./imapsync --tests
|
||||||
|
ssh root@cl1.lamiral.info ./imapsync --testslive6
|
||||||
|
|
||||||
|
|
||||||
|
upload_imapsync_all:
|
||||||
|
scp imapsync INSTALL.d/prerequisites_imapsync W/learn/processtable root@i005.lamiral.info:
|
||||||
|
scp imapsync INSTALL.d/prerequisites_imapsync W/learn/processtable root@i006.lamiral.info:
|
||||||
|
scp imapsync INSTALL.d/prerequisites_imapsync W/learn/processtable root@i013.lamiral.info:
|
||||||
|
scp imapsync INSTALL.d/prerequisites_imapsync W/learn/processtable root@i014.lamiral.info:
|
||||||
|
|
||||||
|
|
||||||
upload_X:
|
upload_X:
|
||||||
./W/tools/validate_xml_html5 X/index.html X/imapsync_form.html X/imapsync_form_extra.html X/imapsync_form_extra_free.html X/imapsync_form_wrapper.html
|
./W/tools/validate_xml_html5 X/imapsync_form.html X/imapsync_form_extra.html X/imapsync_form_extra_free.html X/imapsync_form_wrapper.html X/proximapsync_form_extra_free.html
|
||||||
rcsdiff X/imapsync_form.html X/imapsync_form_extra.html X/imapsync_form_extra_free.html X/imapsync_form_wrapper.html X/imapsync_form.css X/noscript.css
|
rcsdiff X/imapsync_form.html X/imapsync_form_extra.html X/imapsync_form_extra_free.html X/imapsync_form_wrapper.html X/proximapsync_form_extra_free.html
|
||||||
rcsdiff X/imapsync_form.js X/imapsync_form_wrapper.js
|
rcsdiff X/imapsync_form.css X/noscript.css
|
||||||
|
rcsdiff X/imapsync_form.js X/imapsync_form_wrapper.js X/proximapsync_form.js
|
||||||
rcsdiff INSTALL.d/INSTALL.OnlineUI.txt
|
rcsdiff INSTALL.d/INSTALL.OnlineUI.txt
|
||||||
rsync -a ./INSTALL.d/INSTALL.OnlineUI.txt ../imapsync_website/INSTALL.d/INSTALL.OnlineUI.txt
|
rsync -a ./INSTALL.d/INSTALL.OnlineUI.txt ../imapsync_website/INSTALL.d/INSTALL.OnlineUI.txt
|
||||||
rsync -av --delete X/ ../imapsync_website/X/
|
rsync -av --delete X/ ../imapsync_website/X/
|
||||||
@ -977,6 +1091,10 @@ upload_FAQ:
|
|||||||
rsync -avH --delete ./doc/ ../imapsync_website/doc/
|
rsync -avH --delete ./doc/ ../imapsync_website/doc/
|
||||||
rsync -aHvz --delete ../imapsync_website/ root@ks5.lamiral.info:/usr/local/www/apache24/data/imapsync/
|
rsync -aHvz --delete ../imapsync_website/ root@ks5.lamiral.info:/usr/local/www/apache24/data/imapsync/
|
||||||
|
|
||||||
|
upload_oauth2:
|
||||||
|
rm -f oauth2/D_oauth2_*
|
||||||
|
rsync -aHv --delete ./oauth2/ ../imapsync_website/oauth2/
|
||||||
|
rsync -aHvz --delete ../imapsync_website/ root@ks5.lamiral.info:/usr/local/www/apache24/data/imapsync/
|
||||||
|
|
||||||
upload_ks_W_memo:
|
upload_ks_W_memo:
|
||||||
rsync -av W/memo gilles@ks.lamiral.info:public_html/imapsync/W/memo
|
rsync -av W/memo gilles@ks.lamiral.info:public_html/imapsync/W/memo
|
||||||
|
17
README
17
README
@ -6,7 +6,7 @@ NAME
|
|||||||
|
|
||||||
VERSION
|
VERSION
|
||||||
|
|
||||||
This documentation refers to Imapsync $Revision: 2.200 $
|
This documentation refers to Imapsync $Revision: 2.229 $
|
||||||
|
|
||||||
USAGE
|
USAGE
|
||||||
|
|
||||||
@ -225,7 +225,7 @@ OPTIONS
|
|||||||
It will be combined with the --user1 value to form the
|
It will be combined with the --user1 value to form the
|
||||||
string to pass with XOAUTH2 authentication.
|
string to pass with XOAUTH2 authentication.
|
||||||
The password given by --password1 or --passfile1
|
The password given by --password1 or --passfile1
|
||||||
is ignored.
|
is ignored but needed on the command line.
|
||||||
Instead of the access token itself, the value can be a
|
Instead of the access token itself, the value can be a
|
||||||
file containing the access token on the first line.
|
file containing the access token on the first line.
|
||||||
If the value is a file, imapsync reads its first line
|
If the value is a file, imapsync reads its first line
|
||||||
@ -239,7 +239,8 @@ OPTIONS
|
|||||||
|
|
||||||
--oauthdirect1 str : The direct string to pass with XOAUTH2 authentication.
|
--oauthdirect1 str : The direct string to pass with XOAUTH2 authentication.
|
||||||
The password given by --password1 or --passfile1 and
|
The password given by --password1 or --passfile1 and
|
||||||
the user given by --user1 are ignored.
|
the user given by --user1 are ignored but they are
|
||||||
|
needed to be on the command line. Consider it a bug.
|
||||||
|
|
||||||
--oauthdirect2 str : same thing as oauthdirect1
|
--oauthdirect2 str : same thing as oauthdirect1
|
||||||
|
|
||||||
@ -368,7 +369,7 @@ OPTIONS
|
|||||||
|
|
||||||
2019_12_22_23_57_59_532 is nearly the date of the start
|
2019_12_22_23_57_59_532 is nearly the date of the start
|
||||||
YYYY_MM_DD_HH_MM_SS_mmm
|
YYYY_MM_DD_HH_MM_SS_mmm
|
||||||
year_month_day_hour_minute_seconde_millisecond
|
year_month_day_hour_minute_second_millisecond
|
||||||
|
|
||||||
and user1 user2 are the --user1 --user2 values.
|
and user1 user2 are the --user1 --user2 values.
|
||||||
|
|
||||||
@ -617,7 +618,7 @@ OPTIONS
|
|||||||
Default is 120 and 0 means no timeout at all.
|
Default is 120 and 0 means no timeout at all.
|
||||||
|
|
||||||
Caveat, under CGI context, you may encounter a timeout
|
Caveat, under CGI context, you may encounter a timeout
|
||||||
from the webserver, killing imapsync and the imap connexions.
|
from the webserver, killing imapsync and the imap connections.
|
||||||
See the document INSTALL.OnlineUI.txt and search
|
See the document INSTALL.OnlineUI.txt and search
|
||||||
for "Timeout" for how to deal with this issue.
|
for "Timeout" for how to deal with this issue.
|
||||||
|
|
||||||
@ -653,6 +654,12 @@ OPTIONS
|
|||||||
it's an http request to
|
it's an http request to
|
||||||
http://imapsync.lamiral.info/prj/imapsync/VERSION
|
http://imapsync.lamiral.info/prj/imapsync/VERSION
|
||||||
|
|
||||||
|
--emailreport1 : Put the email final report in host1 INBOX
|
||||||
|
--emailreport2 : Put the email final report in host2 INBOX
|
||||||
|
|
||||||
|
--noemailreport1 : Do not put the email final report in host1 INBOX
|
||||||
|
--noemailreport2 : Do not put the email final report in host2 INBOX
|
||||||
|
|
||||||
--noid : Do not send/receive IMAP "ID" command to imap servers.
|
--noid : Do not send/receive IMAP "ID" command to imap servers.
|
||||||
|
|
||||||
--justconnect : Just connect to both servers and print useful
|
--justconnect : Just connect to both servers and print useful
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" id="TOP">
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" id="TOP">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title>Imapsync list of the 86 imap server software applications supported</title>
|
<title>Imapsync list of the 88 imap server software applications supported</title>
|
||||||
<meta name="generator" content="Bluefish 2.2.2" />
|
<meta name="generator" content="Bluefish 2.2.2" />
|
||||||
<meta name="author" content="Gilles LAMIRAL" />
|
<meta name="author" content="Gilles LAMIRAL" />
|
||||||
<meta name="date" content="2016-04-10T00:24:15+0200" />
|
<meta name="date" content="2016-04-10T00:24:15+0200" />
|
||||||
@ -27,12 +27,13 @@
|
|||||||
<body>
|
<body>
|
||||||
|
|
||||||
|
|
||||||
<h1>Imapsync list of the 86 imap server software applications supported (and the broken ones)
|
<h1>Imapsync list of the 88 imap server software applications supported (and the broken ones)
|
||||||
<a id="imap_server_success" href="../#TOP"><small>(back to menu)</small></a>
|
<a id="imap_server_success" href="../#TOP"><small>(back to menu)</small></a>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<p>To know whether your IMAP server is a widespread choice,
|
<p>To know whether your IMAP server is a widespread choice,
|
||||||
take a look at <a href="http://openemailsurvey.org/">http://openemailsurvey.org/</a><br/>
|
take a look at <a href="http://openemailsurvey.org/">http://openemailsurvey.org/</a> or
|
||||||
|
the <a href="https://www.shodan.io/search/facet?query=imap&facet=product">Shodan imap query result</a>.<br/>
|
||||||
The short answer is that if you're not using the famous <b>Dovecot</b> then you're in a niche!
|
The short answer is that if you're not using the famous <b>Dovecot</b> then you're in a niche!
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@ -128,6 +129,9 @@ imapsync --host1 imap.gmail.com
|
|||||||
<li>GMX IMAP4 StreamProxy. (<a href="http://www.gmx.com/">http://www.gmx.com/</a>) </li>
|
<li>GMX IMAP4 StreamProxy. (<a href="http://www.gmx.com/">http://www.gmx.com/</a>) </li>
|
||||||
<li>Godaddy IMAP (since Godaddy runs Courier) (<a href="https://www.godaddy.com/">https://www.godaddy.com/</a>) </li>
|
<li>Godaddy IMAP (since Godaddy runs Courier) (<a href="https://www.godaddy.com/">https://www.godaddy.com/</a>) </li>
|
||||||
<li>Gromox/Grammm IMAP server (<a href="https://docs.grammm.com/">https://docs.grammm.com/</a>)</li>
|
<li>Gromox/Grammm IMAP server (<a href="https://docs.grammm.com/">https://docs.grammm.com/</a>)</li>
|
||||||
|
|
||||||
|
<li>Grommunio (<a href="https://grommunio.com/">https://grommunio.com/</a>)</li>
|
||||||
|
|
||||||
<li>Groupwise IMAP (Novell) 6.x and 7.0. Buggy so see the <a href="../FAQ.d/FAQ.Various_Software_Servers.txt">FAQ item about Groupwise</a>
|
<li>Groupwise IMAP (Novell) 6.x and 7.0. Buggy so see the <a href="../FAQ.d/FAQ.Various_Software_Servers.txt">FAQ item about Groupwise</a>
|
||||||
(<a href="http://www.novell.com/products/groupwise/">http://www.novell.com/products/groupwise/</a>) </li>
|
(<a href="http://www.novell.com/products/groupwise/">http://www.novell.com/products/groupwise/</a>) </li>
|
||||||
<li>hMailServer 5.40-B1950 [host12], 5.3.3 [host2], 4.4.1 [host1], 5.3.2-B1769 [host2], 5.6 [host2]
|
<li>hMailServer 5.40-B1950 [host12], 5.3.3 [host2], 4.4.1 [host1], 5.3.2-B1769 [host2], 5.6 [host2]
|
||||||
@ -185,6 +189,8 @@ imapsync --host1 imap.gmail.com
|
|||||||
<li>SunONE Messaging server 5.2, 6.0 (SUN JES - Java Enterprise System) (<a href="http://www.oracle.com/">http://www.oracle.com/</a>) </li>
|
<li>SunONE Messaging server 5.2, 6.0 (SUN JES - Java Enterprise System) (<a href="http://www.oracle.com/">http://www.oracle.com/</a>) </li>
|
||||||
<li>Sun Java(tm) System Messaging Server 6.2-2.05, 6.2-7.05, 6.3 (<a href="http://www.oracle.com/">http://www.oracle.com/</a>) </li>
|
<li>Sun Java(tm) System Messaging Server 6.2-2.05, 6.2-7.05, 6.3 (<a href="http://www.oracle.com/">http://www.oracle.com/</a>) </li>
|
||||||
<li>Surgemail 3.6f5-5, 6.3d-72 [host2] (<a href="http://netwinsite.com/surgemail/">http://netwinsite.com/surgemail/</a>) </li>
|
<li>Surgemail 3.6f5-5, 6.3d-72 [host2] (<a href="http://netwinsite.com/surgemail/">http://netwinsite.com/surgemail/</a>) </li>
|
||||||
|
|
||||||
|
<li>Tegu mail server (<a href="https://mbk-lab.ru/">https://mbk-lab.ru/</a>)</li>
|
||||||
<li>UW-imap servers (imap-2000b) rijkkramer IMAP4rev1 2000.287
|
<li>UW-imap servers (imap-2000b) rijkkramer IMAP4rev1 2000.287
|
||||||
(RedHat uses UW like 2003.338rh), v12.264 Solaris 5.7 (OSI Approved)
|
(RedHat uses UW like 2003.338rh), v12.264 Solaris 5.7 (OSI Approved)
|
||||||
(<a href="http://www.washington.edu/imap/">http://www.washington.edu/imap/</a>) </li>
|
(<a href="http://www.washington.edu/imap/">http://www.washington.edu/imap/</a>) </li>
|
||||||
@ -246,7 +252,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.56 2021/06/08 09:56:54 gilles Exp gilles $)<br/>
|
($Id: imapservers.shtml,v 1.59 2022/06/02 10:45:27 gilles Exp gilles $)<br/>
|
||||||
<a href="#TOP">Top of the page</a>
|
<a href="#TOP">Top of the page</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
35
S/news.shtml
35
S/news.shtml
@ -58,11 +58,11 @@ If you are very interrested in those projects, don't hesitate to solicit me!
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>2.xxx</b></li>
|
<li><b>2.230</b></li>
|
||||||
<li><b>General</b>: </li>
|
<li><b>General</b>: </li>
|
||||||
|
|
||||||
<li><b>Dependencies removed</b>: None </li>
|
|
||||||
<li><b>Dependencies added</b>: None </li>
|
<li><b>Dependencies added</b>: None </li>
|
||||||
|
<li><b>Dependencies removed</b>: None </li>
|
||||||
|
|
||||||
<li><b>Enhancement</b>: </li>
|
<li><b>Enhancement</b>: </li>
|
||||||
<li><b>Enhancement</b>: </li>
|
<li><b>Enhancement</b>: </li>
|
||||||
@ -82,9 +82,38 @@ If you are very interrested in those projects, don't hesitate to solicit me!
|
|||||||
<li><b>Portability</b>: </li>
|
<li><b>Portability</b>: </li>
|
||||||
<li><b>Portability</b>: </li>
|
<li><b>Portability</b>: </li>
|
||||||
|
|
||||||
|
<li><b>CGI context</b>: </li>
|
||||||
|
<li><b>CGI context</b>: </li>
|
||||||
|
<li><b>CGI context</b>: </li>
|
||||||
|
<li><b>CGI context</b>: </li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><b>2.229</b></li>
|
||||||
|
<li><b>General</b>: </li>
|
||||||
|
|
||||||
|
<li><b>Dependencies added</b>: Proc::ProcessTable </li>
|
||||||
|
<li><b>Dependencies removed</b>: None </li>
|
||||||
|
|
||||||
|
<li><b>Enhancement</b>: Added a stat value: memory footprint times time spent during the sync. The unity is MiB * hour. The stat line is "Memory consumption at the end".</li>
|
||||||
|
<li><b>Enhancement</b>: Filtering buggy flags is now case insensitive. \Junk or \JUNK or \jUnK etc. (sub tests_filterbuggyflags)</li>
|
||||||
|
<li><b>Enhancement</b>: Added --memorystress to check memory crunching in normal run.</li>
|
||||||
|
|
||||||
|
<li><b>Usability</b>: Do not email final reports by default. Use --emailreport1 and --emailreport2 to add final emails reports in each INBOX.</li>
|
||||||
|
|
||||||
|
<li><b>CGI context</b>:
|
||||||
|
<ul>
|
||||||
|
<li>Refuse to serve when the cpu load is greater than 1 per cpu. A load of 3.9 with 4 cores is ok, 4.1 is not. (sub heavy_load_reached_by_cpu)</li>
|
||||||
|
<li>Refuse to serve when the RAM memory available for imapsync processes is less than 1 GB, presented by percentage on the first line like "64.80% used by processes". (sub heavy_load_percent_threshold)</li>
|
||||||
|
<li>When refuse to serve, exits with value 69 EX_UNAVAILABLE</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><b>Testing</b>: 1992 unit tests</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>2.200</b></li>
|
<li><b>2.200</b></li>
|
||||||
<li><b>Dependencies removed</b>: None </li>
|
<li><b>Dependencies removed</b>: None </li>
|
||||||
@ -1039,7 +1068,7 @@ by ignoring PERMANENTFLAGS (Exchange tests)</li>
|
|||||||
<!--#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.84 2022/04/04 16:11:25 gilles Exp gilles $)<br />
|
($Id: news.shtml,v 1.87 2022/09/15 08:42:40 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>
|
||||||
|
@ -41,7 +41,7 @@ to view details of this transaction (if you have a Paypal account).
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>Now you have access to the <b>full unlimited imapsync
|
<p>Now you have access to the <b>full unlimited imapsync
|
||||||
<a href="https://imapsync.lamiral.info/X/imapsync_form_extra.html">online service /X</a></b>.
|
<a href="https://imapsync.lamiral.info/X/u.html">online service /X</a></b>.
|
||||||
This online imapsync service doesn't require any installation on your side, just use it as it is.</p>
|
This online imapsync service doesn't require any installation on your side, just use it as it is.</p>
|
||||||
|
|
||||||
<p>Also, in case you want to <b>run imapsync by yourself</b>, you will find <b>imapsync</b>
|
<p>Also, in case you want to <b>run imapsync by yourself</b>, you will find <b>imapsync</b>
|
||||||
@ -112,7 +112,7 @@ src="S/images/ab_jlh.png"
|
|||||||
<!--#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_return.shtml,v 1.39 2020/10/13 16:25:09 gilles Exp gilles $)
|
($Id: paypal_return.shtml,v 1.40 2022/05/04 10:23:52 gilles Exp gilles $)
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<script type="text/javascript" src="S/conversion_data.js">
|
<script type="text/javascript" src="S/conversion_data.js">
|
||||||
|
28
TODO
28
TODO
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
# $Id: TODO,v 1.265 2022/02/22 15:16:48 gilles Exp gilles $
|
# $Id: TODO,v 1.269 2022/07/22 09:51:06 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also at http://imapsync.lamiral.info/#doc
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
@ -9,6 +9,24 @@ TODO file for imapsync
|
|||||||
|
|
||||||
https://imapsync.lamiral.info/TODO
|
https://imapsync.lamiral.info/TODO
|
||||||
|
|
||||||
|
SUGGESTED 2022_07_22 by Flavio
|
||||||
|
Have a parameter to reconnect in case of failure
|
||||||
|
Exiting with return value 102 (EXIT_CONNECTION_FAILURE_HOST2)
|
||||||
|
|
||||||
|
SUGGESTED 2022_01_04 by Franck
|
||||||
|
It might be even more efficient if at the end there was a summary in
|
||||||
|
categories for mails that did not transfer, e.g.:
|
||||||
|
xx number of mails not transferred due to missing header: use --addheader to transfer
|
||||||
|
xx number of duplicate mails not transferred: use ... to force transfer
|
||||||
|
... etc
|
||||||
|
Thus one would not have to scroll through the log unless there
|
||||||
|
were particular mails to be inspected as to problems.
|
||||||
|
|
||||||
|
|
||||||
|
SUGGESTED 2022_05_05 by mao13820
|
||||||
|
https://github.com/imapsync/imapsync/issues/330#issuecomment-1118190081
|
||||||
|
Try IO::Socket::Socks::Wrapper
|
||||||
|
on Socks server.
|
||||||
|
|
||||||
SUGGESTED 2022_02_19
|
SUGGESTED 2022_02_19
|
||||||
Talk about size discrepencies.
|
Talk about size discrepencies.
|
||||||
@ -76,7 +94,7 @@ to sync only the Sent folder.
|
|||||||
|
|
||||||
SUGGESTED 2020_11_30 by Gilles
|
SUGGESTED 2020_11_30 by Gilles
|
||||||
Add a FAQ.Invalid_Argument.txt
|
Add a FAQ.Invalid_Argument.txt
|
||||||
This error is a low level connexion issue, either ipv6 or dns resolution of
|
This error is a low level connection issue, either ipv6 or dns resolution of
|
||||||
the name.
|
the name.
|
||||||
|
|
||||||
|
|
||||||
@ -727,7 +745,7 @@ See https://metacpan.org/pod/Mail::IMAPClient#Keepalive
|
|||||||
|
|
||||||
DONE revision 2.159 date: 2021/11/19 14:29:31
|
DONE revision 2.159 date: 2021/11/19 14:29:31
|
||||||
SUGGESTED 2021_11_18 by Justas Umbrasas
|
SUGGESTED 2021_11_18 by Justas Umbrasas
|
||||||
Add COMPRESS to imap connexions
|
Add COMPRESS to imap connections
|
||||||
--compress1 --compress2
|
--compress1 --compress2
|
||||||
|
|
||||||
DONE 2021/04/30 revision 2.111 by Gilles
|
DONE 2021/04/30 revision 2.111 by Gilles
|
||||||
@ -896,7 +914,7 @@ Inline help when Ctrl-c is hit
|
|||||||
|
|
||||||
SUGGESTED 2016_07_15 by Alan Williams
|
SUGGESTED 2016_07_15 by Alan Williams
|
||||||
DONE 2016_07_20 for IO::Socket::SSL
|
DONE 2016_07_20 for IO::Socket::SSL
|
||||||
Add --inet4 --inet6 to force AF_INET or AF_INET6 ip connexion,
|
Add --inet4 --inet6 to force AF_INET or AF_INET6 ip connection,
|
||||||
aka ipv4 or ipv6.
|
aka ipv4 or ipv6.
|
||||||
|
|
||||||
SUGGESTED 2016_06_24 by Jean-Dominique Delyon
|
SUGGESTED 2016_06_24 by Jean-Dominique Delyon
|
||||||
@ -981,7 +999,7 @@ Option name: --pipemess "command arg1 arg2 ..."
|
|||||||
|
|
||||||
|
|
||||||
DONE. Transform messages with too long linelength.
|
DONE. Transform messages with too long linelength.
|
||||||
Office365 and Exchange abort connexion
|
Office365 and Exchange abort connection
|
||||||
when they encounter a message with more than 10000 characters on a single line.
|
when they encounter a message with more than 10000 characters on a single line.
|
||||||
Could be done with the previous --pipemess with reformime.
|
Could be done with the previous --pipemess with reformime.
|
||||||
Thanks to Larry Moore for suggesting reformime tool!
|
Thanks to Larry Moore for suggesting reformime tool!
|
||||||
|
864
X/cgi_memo
864
X/cgi_memo
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// $Id: imapsync_form.js,v 1.27 2022/01/30 20:57:46 gilles Exp gilles $
|
// $Id: imapsync_form.js,v 1.28 2022/04/16 16:51:07 gilles Exp gilles $
|
||||||
|
|
||||||
/*jslint browser: true*/ /*global $*/
|
/*jslint browser: true*/ /*global $*/
|
||||||
|
|
||||||
@ -751,9 +751,6 @@ $(document).ready(
|
|||||||
|
|
||||||
if ( "imapsync.lamiral.info" === location.hostname )
|
if ( "imapsync.lamiral.info" === location.hostname )
|
||||||
{
|
{
|
||||||
// $( "#status_24h" ).attr('src', 'https://lstu.fr/imapsync_online_status_24h_1200x70') ;
|
|
||||||
// $( "#status_7d" ).attr('src', 'https://lstu.fr/imapsync_online_status_7d') ;
|
|
||||||
// $( "#status_2m" ).attr('src', 'https://lstu.fr/imapsync_online_status_2months_1200x70') ;
|
|
||||||
$( "#local_bandwidth" ).collapse( "show" ) ;
|
$( "#local_bandwidth" ).collapse( "show" ) ;
|
||||||
$( "#local_status_dbmon" ).collapse( "show" ) ;
|
$( "#local_status_dbmon" ).collapse( "show" ) ;
|
||||||
$( "#local_status_hetrix" ).collapse( "show" ) ;
|
$( "#local_status_hetrix" ).collapse( "show" ) ;
|
||||||
@ -762,7 +759,6 @@ $(document).ready(
|
|||||||
}
|
}
|
||||||
else if ( "lamiral.info" === location.hostname )
|
else if ( "lamiral.info" === location.hostname )
|
||||||
{
|
{
|
||||||
|
|
||||||
$( "#local_bandwidth" ).collapse( "show" ) ;
|
$( "#local_bandwidth" ).collapse( "show" ) ;
|
||||||
$( "#local_status_dbmon" ).collapse( "show" ) ;
|
$( "#local_status_dbmon" ).collapse( "show" ) ;
|
||||||
$( "#local_status_hetrix" ).collapse( "show" ) ;
|
$( "#local_status_hetrix" ).collapse( "show" ) ;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
|
|
||||||
<!-- $Id: imapsync_form_extra.html,v 1.25 2022/02/18 17:06:24 gilles Exp gilles $ -->
|
<!-- $Id: imapsync_form_extra.html,v 1.28 2022/05/07 13:51:28 gilles Exp gilles $ -->
|
||||||
|
|
||||||
<html lang="en" id="top">
|
<html lang="en" id="top">
|
||||||
|
|
||||||
@ -323,8 +323,8 @@
|
|||||||
|
|
||||||
<div class="row scripton" id="consoles" >
|
<div class="row scripton" id="consoles" >
|
||||||
|
|
||||||
<span id="imapsync_current" class="center-block text-center"></span>
|
<pre id="imapsync_current" class="center-block text-center"></pre>
|
||||||
|
|
||||||
<span id="imapsync_advice_hours" class="text-center collapse">
|
<span id="imapsync_advice_hours" class="text-center collapse">
|
||||||
Best <a href="#local_bandwidth"><b>bandwidth available hours</b></a> are from <b>11h PM to 11h AM UTC</b> on Mondays to Fridays, <b>all hours</b> on Saturdays and <b>Sundays</b>.
|
Best <a href="#local_bandwidth"><b>bandwidth available hours</b></a> are from <b>11h PM to 11h AM UTC</b> on Mondays to Fridays, <b>all hours</b> on Saturdays and <b>Sundays</b>.
|
||||||
</span>
|
</span>
|
||||||
@ -418,8 +418,8 @@
|
|||||||
<p class="text-center">
|
<p class="text-center">
|
||||||
|
|
||||||
The service is down? For how long? How often? Take also a look at the
|
The service is down? For how long? How often? Take also a look at the
|
||||||
<a href="https://hetrixtools.com/report/uptime/7908dea8f3ff86eabdef6146307afd5f/414322.html">Imapsync Online Status</a>
|
<a href="https://hetrixtools.com/report/uptime/873a2356aea43055204b59f562b5ad52/414322.html">Imapsync Online Status</a>
|
||||||
monitor page powered by the <a href="https://hetrixtools.com/uptime-monitor/414322.html">HetrixTools</a> company.
|
monitor page powered by the <a href="https://hetrixtools.com/414322.html">HetrixTools</a> company.
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@ -442,7 +442,7 @@ monitor page powered by the <a href="https://hetrixtools.com/uptime-monitor/4143
|
|||||||
<!-- <a href="#buttons" class="btn btn-info scripton" role="button">Consoles</a> -->
|
<!-- <a href="#buttons" class="btn btn-info scripton" role="button">Consoles</a> -->
|
||||||
<a href="#bottom" title="Bottom of the page" class="btn btn-info active" role="button">Bottom</a>
|
<a href="#bottom" title="Bottom of the page" class="btn btn-info active" role="button">Bottom</a>
|
||||||
<br>
|
<br>
|
||||||
<small> ($Id: imapsync_form_extra.html,v 1.25 2022/02/18 17:06:24 gilles Exp gilles $) </small><br>
|
<small> ($Id: imapsync_form_extra.html,v 1.28 2022/05/07 13:51:28 gilles Exp gilles $) </small><br>
|
||||||
Terms and conditions for anything: <a href="https://imapsync.lamiral.info/LICENSE">No limits to do anything with this work and this license!</a><br>
|
Terms and conditions for anything: <a href="https://imapsync.lamiral.info/LICENSE">No limits to do anything with this work and this license!</a><br>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
|
|
||||||
<!-- $Id: imapsync_form_extra_free.html,v 1.27 2022/02/20 09:37:45 gilles Exp gilles $ -->
|
<!-- $Id: imapsync_form_extra_free.html,v 1.30 2022/05/07 13:51:28 gilles Exp gilles $ -->
|
||||||
|
|
||||||
<html lang="en" id="top">
|
<html lang="en" id="top">
|
||||||
|
|
||||||
@ -382,7 +382,7 @@ It's <b>ok</b> if you <b>don't</b> have a VAT number.<br />
|
|||||||
|
|
||||||
<div class="row scripton" id="consoles" >
|
<div class="row scripton" id="consoles" >
|
||||||
|
|
||||||
<span id="imapsync_current" class="center-block text-center"></span>
|
<pre id="imapsync_current" class="center-block text-center"></pre>
|
||||||
|
|
||||||
<span id="imapsync_advice_hours" class="text-center collapse">
|
<span id="imapsync_advice_hours" class="text-center collapse">
|
||||||
Best <a href="#local_bandwidth"><b>bandwidth available hours</b></a> are from <b>11h PM to 11h AM UTC</b> on Mondays to Fridays, <b>all hours</b> on Saturdays and <b>Sundays</b>.
|
Best <a href="#local_bandwidth"><b>bandwidth available hours</b></a> are from <b>11h PM to 11h AM UTC</b> on Mondays to Fridays, <b>all hours</b> on Saturdays and <b>Sundays</b>.
|
||||||
@ -477,8 +477,8 @@ It's <b>ok</b> if you <b>don't</b> have a VAT number.<br />
|
|||||||
<p class="text-center">
|
<p class="text-center">
|
||||||
|
|
||||||
The service is down? For how long? How often? Take also a look at the
|
The service is down? For how long? How often? Take also a look at the
|
||||||
<a href="https://hetrixtools.com/report/uptime/7908dea8f3ff86eabdef6146307afd5f/414322.html">Imapsync Online Status</a>
|
<a href="https://hetrixtools.com/report/uptime/873a2356aea43055204b59f562b5ad52/414322.html">Imapsync Online Status</a>
|
||||||
monitor page powered by the <a href="https://hetrixtools.com/uptime-monitor/414322.html">HetrixTools</a> company.
|
monitor page powered by the <a href="https://hetrixtools.com/414322.html">HetrixTools</a> company.
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@ -501,7 +501,7 @@ monitor page powered by the <a href="https://hetrixtools.com/uptime-monitor/4143
|
|||||||
<!-- <a href="#buttons" class="btn btn-info scripton" role="button">Consoles</a> -->
|
<!-- <a href="#buttons" class="btn btn-info scripton" role="button">Consoles</a> -->
|
||||||
<a href="#bottom" title="Bottom of the page" class="btn btn-info active" role="button">Bottom</a>
|
<a href="#bottom" title="Bottom of the page" class="btn btn-info active" role="button">Bottom</a>
|
||||||
<br>
|
<br>
|
||||||
<small> ($Id: imapsync_form_extra_free.html,v 1.27 2022/02/20 09:37:45 gilles Exp gilles $) </small><br>
|
<small> ($Id: imapsync_form_extra_free.html,v 1.30 2022/05/07 13:51:28 gilles Exp gilles $) </small><br>
|
||||||
Terms and conditions for anything: <a href="https://imapsync.lamiral.info/LICENSE">No limits to do anything with this work and this license!</a><br>
|
Terms and conditions for anything: <a href="https://imapsync.lamiral.info/LICENSE">No limits to do anything with this work and this license!</a><br>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 17 KiB |
Binary file not shown.
Before Width: | Height: | Size: 19 KiB |
Binary file not shown.
Before Width: | Height: | Size: 19 KiB |
@ -1 +1 @@
|
|||||||
imapsync_form_extra_free.html
|
proximapsync_form_extra_free.html
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// $Id: imapsync_form_new.js,v 1.12 2019/07/29 22:42:19 gilles Exp gilles $
|
// $Id: proximapsync_form.js,v 1.2 2022/05/04 00:40:46 gilles Exp gilles $
|
||||||
|
|
||||||
/*jslint browser: true*/ /*global $*/
|
/*jslint browser: true*/ /*global $*/
|
||||||
|
|
||||||
@ -19,7 +19,7 @@ $(document).ready(
|
|||||||
"4": "Finished and response is ready"
|
"4": "Finished and response is ready"
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
var refresh_interval_ms = 5000 ;
|
var refresh_interval_ms = 6000 ;
|
||||||
var refresh_interval_s = refresh_interval_ms / 1000 ;
|
var refresh_interval_s = refresh_interval_ms / 1000 ;
|
||||||
var test = {
|
var test = {
|
||||||
counter_all : 0 ,
|
counter_all : 0 ,
|
||||||
@ -51,8 +51,36 @@ $(document).ready(
|
|||||||
}
|
}
|
||||||
$("#tests").append( message ) ;
|
$("#tests").append( message ) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
var note = function note( message )
|
||||||
|
{
|
||||||
|
$("#tests").append( message ) ;
|
||||||
|
} ;
|
||||||
|
|
||||||
function last_eta( string )
|
|
||||||
|
var tests_last_x_lines = function tests_last_x_lines()
|
||||||
|
{
|
||||||
|
is( "", last_x_lines(), "last_x_lines: no args => empty string" ) ;
|
||||||
|
is( "", last_x_lines(""), "last_x_lines: empty string => empty string" ) ;
|
||||||
|
is( "abc", last_x_lines("abc"), "last_x_lines: abc => abc" ) ;
|
||||||
|
is( "abc\ndef", last_x_lines("abc\ndef"), "last_x_lines: abc\ndef => abc\ndef" ) ;
|
||||||
|
is( "def", last_x_lines("abc\ndef", -1), "last_x_lines: abc\ndef -1 => def\n" ) ;
|
||||||
|
is( "", last_x_lines("abc\ndef", 0), "last_x_lines: abc\ndef 0 => empty string" ) ;
|
||||||
|
is( "abc\ndef", last_x_lines("abc\ndef", -10), "last_x_lines: last 10 of 2 lines => 2 lines" ) ;
|
||||||
|
is( "4\n5\n", last_x_lines("1\n2\n3\n4\n5\n", -3), "last_x_lines: last 3 lines of 5 lines" ) ;
|
||||||
|
is( "3\n4\n5", last_x_lines("1\n2\n3\n4\n5", -3), "last_x_lines: last 3 lines of 5 lines" ) ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
var last_x_lines = function last_x_lines( string, num )
|
||||||
|
{
|
||||||
|
if ( undefined === string || 0 === num )
|
||||||
|
{
|
||||||
|
return "" ;
|
||||||
|
}
|
||||||
|
return string.split(/\r?\n/).slice(num).join("\n") ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
var last_eta = function last_eta( string )
|
||||||
{
|
{
|
||||||
// return the last occurrence of the substring "ETA: ...\n"
|
// return the last occurrence of the substring "ETA: ...\n"
|
||||||
// or "ETA: unknown" or ""
|
// or "ETA: unknown" or ""
|
||||||
@ -77,8 +105,10 @@ $(document).ready(
|
|||||||
return "ETA: unknown" ;
|
return "ETA: unknown" ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function tests_last_eta()
|
var tests_last_eta = function tests_last_eta()
|
||||||
{
|
{
|
||||||
is( "", last_eta( ), "last_eta: no args => empty string" ) ;
|
is( "", last_eta( ), "last_eta: no args => empty string" ) ;
|
||||||
|
|
||||||
@ -252,7 +282,7 @@ $(document).ready(
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
slice_length = -240 ;
|
slice_length = -2400 ;
|
||||||
}
|
}
|
||||||
slice_log = xhr.responseText.slice( slice_length ) ;
|
slice_log = xhr.responseText.slice( slice_length ) ;
|
||||||
eta_str = last_eta( slice_log ) ;
|
eta_str = last_eta( slice_log ) ;
|
||||||
@ -278,11 +308,13 @@ $(document).ready(
|
|||||||
return ;
|
return ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
function refreshLog( xhr )
|
var refreshLog = function refreshLog( xhr )
|
||||||
{
|
{
|
||||||
var eta_obj ;
|
var eta_obj ;
|
||||||
var eta_str ;
|
var eta_str ;
|
||||||
|
|
||||||
|
$( "#imapsync_current" ).load( "imapsync_current.txt" ) ;
|
||||||
|
|
||||||
eta_obj = extract_eta( xhr ) ;
|
eta_obj = extract_eta( xhr ) ;
|
||||||
|
|
||||||
progress_bar_update( eta_obj ) ;
|
progress_bar_update( eta_obj ) ;
|
||||||
@ -290,25 +322,25 @@ $(document).ready(
|
|||||||
if ( xhr.readyState === 4 )
|
if ( xhr.readyState === 4 )
|
||||||
{
|
{
|
||||||
// end of sync
|
// end of sync
|
||||||
$("#progress-txt").text(
|
$("#progress-txt").text(
|
||||||
"Ended. It remains "
|
"Ended. It remains "
|
||||||
+ eta_obj.msgs_left + " messages to be synced" ) ;
|
+ eta_obj.msgs_left + " messages to be synced" ) ;
|
||||||
|
|
||||||
|
$( "#output" ).text( xhr.responseText ) ;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
eta_str = eta_obj.str + " (refresh every " + refresh_interval_s + " s)" ;
|
eta_str = eta_obj.str + " (refresh every " + refresh_interval_s + " s)" ;
|
||||||
eta_str = eta_str.replace(/(\r\n|\n|\r)/gm, "") ; // trim newline
|
eta_str = eta_str.replace(/(\r\n|\n|\r)/gm, "") ; // trim newlines
|
||||||
//$("#tests").append( "refreshLog eta_str: " + eta_str + "\n" ) ;
|
//$("#tests").append( "refreshLog eta_str: " + eta_str + "\n" ) ;
|
||||||
$("#progress-txt").text( eta_str ) ;
|
$( "#progress-txt" ).text( eta_str ) ;
|
||||||
|
var last_lines = last_x_lines( xhr.responseText.slice(-2000), -10)
|
||||||
|
$( "#output" ).text( last_lines ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
$( "#output" ).text( xhr.responseText ) ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var handleRun = function handleRun(xhr, timerRefreshLog)
|
||||||
function handleRun(xhr, timerRefreshLog)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
$("#console").text(
|
$("#console").text(
|
||||||
@ -319,15 +351,17 @@ $(document).ready(
|
|||||||
// var headers = xhr.getAllResponseHeaders();
|
// var headers = xhr.getAllResponseHeaders();
|
||||||
// $("#console").append(headers);
|
// $("#console").append(headers);
|
||||||
// $("#console").append("See the completed log\n");
|
// $("#console").append("See the completed log\n");
|
||||||
$("#link_to_bottom").show() ;
|
|
||||||
clearInterval( timerRefreshLog ) ;
|
clearInterval( timerRefreshLog ) ;
|
||||||
refreshLog( xhr ) ; // a last time
|
refreshLog( xhr ) ; // a last time
|
||||||
// back to enable state for next run
|
// back to enable state for next run
|
||||||
$("#bt-sync").prop("disabled", false) ;
|
$("#bt-sync").prop("disabled", false) ;
|
||||||
|
|
||||||
|
$( "#imapsync_current" ).load( "imapsync_current.txt" ) ;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function imapsync()
|
var imapsync = function imapsync()
|
||||||
{
|
{
|
||||||
var querystring = $("#form").serialize() ;
|
var querystring = $("#form").serialize() ;
|
||||||
$("#abort").text("\n\n") ; // clean abort console
|
$("#abort").text("\n\n") ; // clean abort console
|
||||||
@ -351,6 +385,8 @@ $(document).ready(
|
|||||||
{
|
{
|
||||||
querystring = querystring + "&office2=on" ;
|
querystring = querystring + "&office2=on" ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// querystring = querystring + "&tmphash=" + tmphash( ) ;
|
||||||
|
|
||||||
|
|
||||||
var xhr ;
|
var xhr ;
|
||||||
@ -366,14 +402,14 @@ $(document).ready(
|
|||||||
handleRun( xhr, timerRefreshLog ) ;
|
handleRun( xhr, timerRefreshLog ) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
xhr.open( "POST", "/cgi-bin/imapsync", true ) ;
|
xhr.open( "POST", "/cgi-bin/proximapsync", true ) ;
|
||||||
xhr.setRequestHeader( "Content-type",
|
xhr.setRequestHeader( "Content-type",
|
||||||
"application/x-www-form-urlencoded" ) ;
|
"application/x-www-form-urlencoded" ) ;
|
||||||
xhr.send( querystring ) ;
|
xhr.send( querystring ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function handleAbort( xhr )
|
var handleAbort = function handleAbort( xhr )
|
||||||
{
|
{
|
||||||
|
|
||||||
$( "#abort" ).text(
|
$( "#abort" ).text(
|
||||||
@ -388,7 +424,7 @@ $(document).ready(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function abort()
|
var abort = function abort()
|
||||||
{
|
{
|
||||||
var querystring = $("#form").serialize() + "&abort=on";
|
var querystring = $("#form").serialize() + "&abort=on";
|
||||||
var xhr;
|
var xhr;
|
||||||
@ -397,12 +433,12 @@ $(document).ready(
|
|||||||
{
|
{
|
||||||
handleAbort(xhr);
|
handleAbort(xhr);
|
||||||
};
|
};
|
||||||
xhr.open("POST", "/cgi-bin/imapsync", true);
|
xhr.open("POST", "/cgi-bin/proximapsync", true);
|
||||||
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
|
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
|
||||||
xhr.send(querystring);
|
xhr.send(querystring);
|
||||||
}
|
}
|
||||||
|
|
||||||
function store( id )
|
var store = function store( id )
|
||||||
{
|
{
|
||||||
var stored ;
|
var stored ;
|
||||||
//$( "#tests" ).append( "Eco: " + id + " type is " + $( id ).attr( "type" ) + "\n" ) ;
|
//$( "#tests" ).append( "Eco: " + id + " type is " + $( id ).attr( "type" ) + "\n" ) ;
|
||||||
@ -420,7 +456,7 @@ $(document).ready(
|
|||||||
return stored ;
|
return stored ;
|
||||||
}
|
}
|
||||||
|
|
||||||
function retrieve( id )
|
var retrieve = function retrieve( id )
|
||||||
{
|
{
|
||||||
var retrieved ;
|
var retrieved ;
|
||||||
//$( "#tests" ).append( "Eco: " + id + " type is " + $( id ).attr( "type" ) + " length is " + $( id ).length + "\n" ) ;
|
//$( "#tests" ).append( "Eco: " + id + " type is " + $( id ).attr( "type" ) + " length is " + $( id ).length + "\n" ) ;
|
||||||
@ -438,7 +474,7 @@ $(document).ready(
|
|||||||
return retrieved ;
|
return retrieved ;
|
||||||
}
|
}
|
||||||
|
|
||||||
function tests_store_retrieve()
|
var tests_store_retrieve = function tests_store_retrieve()
|
||||||
{
|
{
|
||||||
if ( $("#tests").length !== 0 )
|
if ( $("#tests").length !== 0 )
|
||||||
{
|
{
|
||||||
@ -479,7 +515,7 @@ $(document).ready(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function store_form()
|
var store_form = function store_form()
|
||||||
{
|
{
|
||||||
if ( Storage !== "undefined")
|
if ( Storage !== "undefined")
|
||||||
{
|
{
|
||||||
@ -506,7 +542,7 @@ $(document).ready(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function show_extra_if_needed()
|
var show_extra_if_needed = function show_extra_if_needed()
|
||||||
{
|
{
|
||||||
if ( $("#subfolder1").length && $("#subfolder1").val().length > 0 )
|
if ( $("#subfolder1").length && $("#subfolder1").val().length > 0 )
|
||||||
{
|
{
|
||||||
@ -518,7 +554,7 @@ $(document).ready(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function retrieve_form()
|
var retrieve_form = function retrieve_form()
|
||||||
{
|
{
|
||||||
if ( Storage !== "undefined" )
|
if ( Storage !== "undefined" )
|
||||||
{
|
{
|
||||||
@ -555,14 +591,14 @@ $(document).ready(
|
|||||||
localStorage.account2_background_color ) ;
|
localStorage.account2_background_color ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show the extra parameters if they are not empty because it would be dangerous
|
// Show the extra parameters if they are not empty because it would
|
||||||
// to retrieve them without knowing
|
// be dangerous to retrieve them without showing them
|
||||||
show_extra_if_needed() ;
|
show_extra_if_needed() ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function showpassword( id, button )
|
var showpassword = function showpassword( id, button )
|
||||||
{
|
{
|
||||||
var x = document.getElementById( id );
|
var x = document.getElementById( id );
|
||||||
if ( button.checked )
|
if ( button.checked )
|
||||||
@ -573,16 +609,73 @@ $(document).ready(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function init()
|
|
||||||
|
|
||||||
|
var tests_cryptojs = function tests_cryptojs()
|
||||||
|
{
|
||||||
|
if ( $("#tests").length !== 0 )
|
||||||
|
{
|
||||||
|
if (typeof CryptoJS === 'undefined')
|
||||||
|
{
|
||||||
|
is( true, typeof CryptoJS !== 'undefined', "CryptoJS is available" ) ;
|
||||||
|
note( "CryptoJS is not available on this site. Ask the admin to fix this.\n" ) ;
|
||||||
|
}
|
||||||
|
else if (typeof CryptoJS.SHA256 !== "function")
|
||||||
|
{
|
||||||
|
is( "function", typeof CryptoJS.SHA256, "CryptoJS.SHA256 is a function" ) ;
|
||||||
|
note( "CryptoJS.SHA256 function is not available on this site. Ask the admin to fix this.\n" ) ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// safe to use the function
|
||||||
|
is( "function", typeof CryptoJS.SHA256, "CryptoJS.SHA256 is a function" ) ;
|
||||||
|
is( "2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91", sha256("Message"), "sha256 Message" ) ;
|
||||||
|
is( "26429a356b1d25b7d57c0f9a6d5fed8a290cb42374185887dcd2874548df0779", sha256("caca"), "sha256 caca" ) ;
|
||||||
|
is( "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", sha256(""), "sha256 ''" ) ;
|
||||||
|
is( tmphash(), tmphash(), "tmphash" ) ;
|
||||||
|
|
||||||
|
$("#user1").val("test1") ;
|
||||||
|
$("#password1").val("secret1") ;
|
||||||
|
$("#host1").val("test1.lamiral.info") ;
|
||||||
|
$("#user2").val("test2") ;
|
||||||
|
$("#password2").val("secret2") ;
|
||||||
|
$("#host2").val("test2.lamiral.info") ;
|
||||||
|
is( "20d2b4917cf69114876b4c8779af543e89c5871c6ada68107619722e55af1101", tmphash(), "tmphash like testslive" ) ;
|
||||||
|
$("#user1").val("") ;
|
||||||
|
$("#password1").val("") ;
|
||||||
|
$("#host1").val("") ;
|
||||||
|
$("#user2").val("") ;
|
||||||
|
$("#password2").val("") ;
|
||||||
|
$("#host2").val("") ;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var sha256 = function sha256( string )
|
||||||
|
{
|
||||||
|
var hash = CryptoJS.SHA256( string ) ;
|
||||||
|
var hash_hex = hash.toString( CryptoJS.enc.Hex ) ;
|
||||||
|
return( hash_hex ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
var tmphash = function tmphash()
|
||||||
|
{
|
||||||
|
var string = "" ;
|
||||||
|
string = string.concat(
|
||||||
|
$("#user1").val(), $("#password1").val(), $("#host1").val(),
|
||||||
|
$("#user2").val(), $("#password2").val(), $("#host2").val(),
|
||||||
|
)
|
||||||
|
return( sha256( string ) ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
var init = function init()
|
||||||
{
|
{
|
||||||
// in case of a manual refresh, start with
|
// in case of a manual refresh, start with
|
||||||
$("#bt-sync").prop("disabled", false);
|
$("#bt-sync").prop("disabled", false);
|
||||||
$("#bt-abort").prop("disabled", false);
|
$("#bt-abort").prop("disabled", false);
|
||||||
$("#link_to_bottom").hide();
|
|
||||||
$("#progress-bar-left").css( "width", 100 + "%" ).attr( "aria-valuenow", 100 ) ;
|
$("#progress-bar-left").css( "width", 100 + "%" ).attr( "aria-valuenow", 100 ) ;
|
||||||
|
|
||||||
retrieve_form();
|
|
||||||
|
|
||||||
$("#showpassword1").click(
|
$("#showpassword1").click(
|
||||||
function ( event )
|
function ( event )
|
||||||
{
|
{
|
||||||
@ -605,9 +698,9 @@ $(document).ready(
|
|||||||
$("#bt-sync").click(
|
$("#bt-sync").click(
|
||||||
function ()
|
function ()
|
||||||
{
|
{
|
||||||
|
$( "#imapsync_current" ).load( "imapsync_current.txt" ) ;
|
||||||
$("#bt-sync").prop("disabled", true) ;
|
$("#bt-sync").prop("disabled", true) ;
|
||||||
$("#bt-abort").prop("disabled", false) ;
|
$("#bt-abort").prop("disabled", false) ;
|
||||||
$("#link_to_bottom").hide() ;
|
|
||||||
$("#progress-txt").text( "ETA: coming soon" ) ;
|
$("#progress-txt").text( "ETA: coming soon" ) ;
|
||||||
store_form() ;
|
store_form() ;
|
||||||
imapsync() ;
|
imapsync() ;
|
||||||
@ -617,9 +710,11 @@ $(document).ready(
|
|||||||
$("#bt-abort").click(
|
$("#bt-abort").click(
|
||||||
function ()
|
function ()
|
||||||
{
|
{
|
||||||
|
$( "#imapsync_current" ).load( "imapsync_current.txt" ) ;
|
||||||
$("#bt-sync").prop("disabled", true);
|
$("#bt-sync").prop("disabled", true);
|
||||||
$("#bt-abort").prop("disabled", true);
|
$("#bt-abort").prop("disabled", true);
|
||||||
abort();
|
abort();
|
||||||
|
$( "#imapsync_current" ).load( "imapsync_current.txt" ) ;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -653,12 +748,29 @@ $(document).ready(
|
|||||||
showpassword( "password2", $("#showpassword2")[0] ) ;
|
showpassword( "password2", $("#showpassword2")[0] ) ;
|
||||||
}
|
}
|
||||||
) ;
|
) ;
|
||||||
|
|
||||||
|
if ( "imapsync.lamiral.info" === location.hostname )
|
||||||
|
{
|
||||||
|
$( "#local_bandwidth" ).collapse( "show" ) ;
|
||||||
|
$( "#local_status_dbmon" ).collapse( "show" ) ;
|
||||||
|
$( "#local_status_hetrix" ).collapse( "show" ) ;
|
||||||
|
$( "#imapsync_advice_hours" ).collapse( "show" ) ;
|
||||||
|
$( "#imapsync_current" ).load( "imapsync_current.txt" ) ;
|
||||||
|
}
|
||||||
|
else if ( "lamiral.info" === location.hostname )
|
||||||
|
{
|
||||||
|
$( "#local_bandwidth" ).collapse( "show" ) ;
|
||||||
|
$( "#local_status_dbmon" ).collapse( "show" ) ;
|
||||||
|
$( "#local_status_hetrix" ).collapse( "show" ) ;
|
||||||
|
$( "#imapsync_advice_hours" ).collapse( "show" ) ;
|
||||||
|
$( "#imapsync_current" ).load( "imapsync_current.txt" ) ;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var tests_bilan = function tests_bilan()
|
var tests_bilan = function tests_bilan( nb_attended_test )
|
||||||
{
|
{
|
||||||
// attended number of tests
|
// attended number of tests: nb_attended_test
|
||||||
var nb_attended_test = 29 ;
|
|
||||||
$("#tests").append( "1.." + test.counter_all + "\n" ) ;
|
$("#tests").append( "1.." + test.counter_all + "\n" ) ;
|
||||||
if ( test.counter_nok > 0 )
|
if ( test.counter_nok > 0 )
|
||||||
{
|
{
|
||||||
@ -681,22 +793,32 @@ $(document).ready(
|
|||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
function tests()
|
var tests = function tests( nb_attended_test )
|
||||||
{
|
{
|
||||||
if ( $("#tests").length !== 0 )
|
if ( $("#tests").length !== 0 )
|
||||||
{
|
{
|
||||||
tests_store_retrieve( ) ;
|
tests_store_retrieve( ) ;
|
||||||
tests_last_eta( ) ;
|
tests_last_eta( ) ;
|
||||||
tests_decompose_eta_line( ) ;
|
tests_decompose_eta_line( ) ;
|
||||||
|
tests_last_x_lines( ) ;
|
||||||
|
// tests_cryptojs( ) ;
|
||||||
|
|
||||||
|
// The following test can be used to check that if a test fails
|
||||||
|
// then all the tests are shown to the user.
|
||||||
//is( 0, 1, "this test always fails" ) ;
|
//is( 0, 1, "this test always fails" ) ;
|
||||||
tests_bilan( ) ;
|
|
||||||
|
tests_bilan( nb_attended_test ) ;
|
||||||
|
|
||||||
|
// If you want to always see the tests, uncomment the following
|
||||||
|
// line
|
||||||
//$("#tests").collapse("show") ;
|
//$("#tests").collapse("show") ;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
init( ) ;
|
init( ) ;
|
||||||
tests( ) ;
|
tests( 38 ) ;
|
||||||
|
retrieve_form( ) ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
476
X/proximapsync_form_extra.html
Normal file
476
X/proximapsync_form_extra.html
Normal file
@ -0,0 +1,476 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
<!-- $Id: proximapsync_form_extra.html,v 1.2 2022/05/07 13:53:00 gilles Exp gilles $ -->
|
||||||
|
|
||||||
|
<html lang="en" id="top">
|
||||||
|
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!--
|
||||||
|
<script
|
||||||
|
data-ad-client="ca-pub-3325993554161060"
|
||||||
|
async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
|
||||||
|
</script>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<title>Imapsync Online Unlimited</title>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
|
||||||
|
integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css"
|
||||||
|
integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="imapsync_form.css">
|
||||||
|
<link rel="stylesheet" href="../S/style.css" type="text/css" />
|
||||||
|
|
||||||
|
<link rel="license" href="https://imapsync.lamiral.info/NOLIMIT">
|
||||||
|
|
||||||
|
<noscript>
|
||||||
|
<link rel="stylesheet" href="noscript.css">
|
||||||
|
</noscript>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="scripton">
|
||||||
|
<!-- will appear if some tests fail -->
|
||||||
|
<pre id="tests" class="collapse"></pre>
|
||||||
|
<!-- hidden stuff that must exit for the tests -->
|
||||||
|
<div class="hidden">
|
||||||
|
<input type="checkbox" id="test_checkbox">
|
||||||
|
<input type="text" id="test_text">
|
||||||
|
<input type="radio" id="test_radio1" name="test_radio" value="first" >
|
||||||
|
<input type="radio" id="test_radio2" name="test_radio" value="second" >
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="container-fluid" >
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="text-center">
|
||||||
|
<a href="https://imapsync.lamiral.info/">
|
||||||
|
<img alt="Imapsync home" title="Imapsync home page" src="https://imapsync.lamiral.info/X/logo_imapsync_Xn.png" height="38" width="60">
|
||||||
|
</a>
|
||||||
|
<a href="#top" title="Top of the page" class="btn btn-info " role="button">Top</a>
|
||||||
|
<a href="#bottom" title="Bottom of the page" class="btn btn-info active" role="button">Bottom</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h1 class="text-center">Imapsync Online Unlimited</h1>
|
||||||
|
|
||||||
|
<p class="text-center larger"> <strong>Copy</strong>/synchronize a <strong>complete</strong> Mailbox to another, without <strong>duplicates!</strong></p>
|
||||||
|
|
||||||
|
|
||||||
|
<form id="form" action="/cgi-bin/proximapsync" method="post" autocomplete="on">
|
||||||
|
<div id="form_row" class="row">
|
||||||
|
<div id="account1" class="col-md-5" >
|
||||||
|
<fieldset>
|
||||||
|
<legend class="text-center h2">IMAP source Mailbox</legend>
|
||||||
|
|
||||||
|
<label for="user1">Login</label> (usually an email address)
|
||||||
|
<div class="input-group form-group">
|
||||||
|
<span class="input-group-addon"><i class="glyphicon glyphicon-user"> </i></span>
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="It is usually an email address or its left part before @"
|
||||||
|
type="text" class="form-control input-lg" id="user1" name="user1" tabindex="1"
|
||||||
|
placeholder="Enter login name">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label for="password1">Password</label>
|
||||||
|
<label class="checkbox-inline out">
|
||||||
|
<input type="checkbox" id="showpassword1"> show password
|
||||||
|
</label>
|
||||||
|
<div class="input-group form-group">
|
||||||
|
<span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span>
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="Passwords are not stored on the server"
|
||||||
|
type="password" class="form-control input-lg" id="password1" name="password1" tabindex="2"
|
||||||
|
placeholder="Enter password">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label for="host1">IMAP Server hostname</label> (or its IP address)
|
||||||
|
<div class="input-group form-group">
|
||||||
|
<span class="input-group-addon"><i class="glyphicon glyphicon-cloud"></i></span>
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="IMAP transfers are done with encryption if the servers support it."
|
||||||
|
list="servers1" type="text" class="form-control input-lg" id="host1" name="host1" tabindex="3"
|
||||||
|
placeholder="Enter IMAP source server name or IP address">
|
||||||
|
<datalist id="servers1">
|
||||||
|
<option value="imap.gmail.com">
|
||||||
|
<option value="outlook.office365.com">
|
||||||
|
<option value="imap.hostinger.com">
|
||||||
|
<option value="ssl0.ovh.net">
|
||||||
|
<option value="email-ssl.com.br">
|
||||||
|
<option value="imap.mail.yahoo.com">
|
||||||
|
</datalist>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group collapse extra_param">
|
||||||
|
<label class="checkbox-inline">
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="Be careful with this option"
|
||||||
|
type="checkbox" id="delete1" name="delete1">Move sync. Deletes messages on source mailbox after a successful transfer.
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group collapse extra_param" >
|
||||||
|
<label for="subfolder1">Sub-folder</label>
|
||||||
|
<div class="input-group form-group">
|
||||||
|
<span class="input-group-addon"><i class="glyphicon glyphicon-folder-open"></i></span>
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="A subfolder where all the source mailbox comes from."
|
||||||
|
type="text" class="form-control input-lg" id="subfolder1" name="subfolder1"
|
||||||
|
placeholder="Enter sub-folder name">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="parameters" class="col-md-2" >
|
||||||
|
<div>
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label class="checkbox-inline">
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="Shows what would be done without really doing it."
|
||||||
|
type="checkbox" id="dry" name="dry" >Just verbose, no real sync.
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label class="checkbox-inline">
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="Checks credentials without syncing anything."
|
||||||
|
type="checkbox" id="justlogin" name="justlogin" >Just checks credentials.
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label class="checkbox-inline">
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="Shows folders sizes and exits."
|
||||||
|
type="checkbox" id="justfoldersizes" name="justfoldersizes" >Just presents folders sizes.
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label class="checkbox-inline">
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="Just create the folder hierarchy, messages are not synced."
|
||||||
|
type="checkbox" id="justfolders" name="justfolders" >Just create folders.
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="button_extra_param" class="text-center scripton">
|
||||||
|
<button type="button" class="btn btn-default btn-block" data-toggle="collapse"
|
||||||
|
data-target=".extra_param">Show / Hide extra parameters</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="button_swap" class="text-center scripton">
|
||||||
|
<button type="button" class="btn btn-default btn-block" id="swap">
|
||||||
|
Swap Source <span class="glyphicon glyphicon-transfer"></span> Destination
|
||||||
|
</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="account2" class="col-md-5" >
|
||||||
|
<fieldset>
|
||||||
|
<legend class="text-center h2">IMAP destination Mailbox</legend>
|
||||||
|
|
||||||
|
<label for="user2">Login</label> (usually an email address)
|
||||||
|
<div class="input-group form-group">
|
||||||
|
<span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="It is usually an email address or its left part before @"
|
||||||
|
type="text" class="form-control input-lg" id="user2" name="user2" tabindex="6"
|
||||||
|
placeholder="Enter login name">
|
||||||
|
</div>
|
||||||
|
<label for="password2">Password</label>
|
||||||
|
<label class="checkbox-inline out">
|
||||||
|
<input type="checkbox" id="showpassword2"> show password
|
||||||
|
</label>
|
||||||
|
<div class="input-group form-group">
|
||||||
|
<span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span>
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="Passwords are not stored on the server"
|
||||||
|
type="password" class="form-control input-lg" id="password2" name="password2" tabindex="7"
|
||||||
|
placeholder="Enter password">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label for="host2">IMAP Server hostname</label> (or its IP address)
|
||||||
|
<div class="input-group form-group">
|
||||||
|
<span class="input-group-addon"><i class="glyphicon glyphicon-cloud"></i></span>
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="IMAP transfers are done with encryption if the servers support it."
|
||||||
|
list="servers2" type="text" class="form-control input-lg" id="host2" name="host2" tabindex="8"
|
||||||
|
placeholder="Enter IMAP destination server name or IP address">
|
||||||
|
<datalist id="servers2">
|
||||||
|
<option value="imap.gmail.com">
|
||||||
|
<option value="outlook.office365.com">
|
||||||
|
<option value="imap.hostinger.com">
|
||||||
|
<option value="ssl0.ovh.net">
|
||||||
|
<option value="email-ssl.com.br">
|
||||||
|
<option value="imap.mail.yahoo.com">
|
||||||
|
</datalist>
|
||||||
|
</div>
|
||||||
|
<!-- -->
|
||||||
|
<div class="form-group collapse extra_param">
|
||||||
|
<label class="checkbox-inline">
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="Be careful with this option"
|
||||||
|
type="checkbox" id="delete2" name="delete2" tabindex="9">Strict sync. Deletes messages on destination mailbox that are not at the source mailbox.
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group collapse extra_param" id="extra_subfolder2" >
|
||||||
|
<label for="subfolder2">Sub-folder</label>
|
||||||
|
<div class="input-group form-group">
|
||||||
|
<span class="input-group-addon"><i class="glyphicon glyphicon-folder-open"></i></span>
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="A subfolder where all the source mailbox will go."
|
||||||
|
type="text" class="form-control input-lg" id="subfolder2" name="subfolder2"
|
||||||
|
placeholder="Enter sub-folder name">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- -->
|
||||||
|
<div>
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<input type="hidden" name="automap" value="on">
|
||||||
|
<input type="hidden" name="addheader" value="on">
|
||||||
|
<!-- -#->
|
||||||
|
<input type="hidden" name="simulong" value="360">
|
||||||
|
<!-#- -->
|
||||||
|
|
||||||
|
<a id="buttons"></a>
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<div class="text-center center-block">
|
||||||
|
If you <b>close</b> this <b>window</b> (or tab) <b>during</b> the synchronization,
|
||||||
|
it will <b>abort</b> the synchronization, it's like <b>hitting</b> the red button <b>"Abort!"</b> below.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Classical button to go to the log only, when javascript is turned off -->
|
||||||
|
<noscript>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12 padd0" >
|
||||||
|
<button type="submit" class="btn btn-success btn-lg center-block btn-block">Go sync!</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</noscript>
|
||||||
|
|
||||||
|
<!-- Javascript buttons using xhr -->
|
||||||
|
<div class="row scripton">
|
||||||
|
<div class="col-sm-6 padd0" >
|
||||||
|
<button id="bt-sync" type="button"
|
||||||
|
class="btn btn-success btn-lg center-block btn-block"
|
||||||
|
tabindex="11"
|
||||||
|
data-toggle="tooltip" data-placement="top"
|
||||||
|
title="Launch the sync! You can abort the sync with the red Abort button nearby or by closing the tab/window."
|
||||||
|
>
|
||||||
|
Sync or resync!<br>
|
||||||
|
<span class="glyphicon glyphicon-envelope"></span>
|
||||||
|
<span class="glyphicon glyphicon-arrow-right"></span>
|
||||||
|
<span class="glyphicon glyphicon-envelope"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 padd0" >
|
||||||
|
<button id="bt-abort" type="button"
|
||||||
|
class="btn btn-danger btn-lg center-block btn-block" tabindex="12"
|
||||||
|
data-toggle="tooltip" data-placement="top"
|
||||||
|
title="Abort the sync! You can restart the sync later, no duplicates should happen."
|
||||||
|
>
|
||||||
|
Abort!<br>
|
||||||
|
<span class="glyphicon glyphicon-scissors"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<div class="row scripton" id="consoles" >
|
||||||
|
|
||||||
|
<pre id="imapsync_current" class="center-block text-center"></pre>
|
||||||
|
|
||||||
|
<span id="imapsync_advice_hours" class="text-center collapse">
|
||||||
|
Best <a href="#local_bandwidth"><b>bandwidth available hours</b></a> are from <b>11h PM to 11h AM UTC</b> on Mondays to Fridays, <b>all hours</b> on Saturdays and <b>Sundays</b>.
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<pre id="progress-txt">ETA: Estimation Time of Arrival</pre>
|
||||||
|
|
||||||
|
<div class="progress">
|
||||||
|
<div id="progress-bar-done" class="progress-bar progress-bar-success" role="progressbar">
|
||||||
|
Progress bar
|
||||||
|
</div>
|
||||||
|
<div id="progress-bar-left" class="progress-bar progress-bar-info" role="progressbar">
|
||||||
|
Progress bar
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-sm-6 well">
|
||||||
|
<h2 class="text-center">Console of imapsync launch</h2>
|
||||||
|
<pre id="console">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-sm-6 well">
|
||||||
|
<h2 class="text-center">Console of abort</h2>
|
||||||
|
<pre id="abort">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2 id="imapsync_log_beginning" class="text-center scripton">Log of imapsync run</h2>
|
||||||
|
<div class="text-center scripton">
|
||||||
|
<a href="#imapsync_log_bottom">Link to the <b>bottom</b> of the imapsync log file</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<pre id="output" class="scripton">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<div id="imapsync_log_bottom" class="text-center scripton">
|
||||||
|
<a href="#imapsync_log_beginning">Link to the <b>beginning</b> of the imapsync log file</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="local_bandwidth" class="collapse">
|
||||||
|
<hr>
|
||||||
|
<p class="text-center">
|
||||||
|
<b>Local bandwidth statistics</b><br>
|
||||||
|
|
||||||
|
<a href="/vnstat/vnstati.html">
|
||||||
|
<img alt="Local bandwidth statistics" src="/vnstat/vnstat_vs.png" >
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="local_status_dbmon" class="collapse">
|
||||||
|
<hr>
|
||||||
|
<p class="text-center">
|
||||||
|
Imapsync <b>Online Status</b> over the <b>last 24h</b><br>
|
||||||
|
<a href="imapsync_online_status.html"><img id="status_24h" class="img-responsive center-block" alt="Imapsync Online Status over the last 24h" src="https://sup.lamiral.info/dbmon/cgi-bin/rrdview.cgi?child=yes&rrdfile=%2Fvar%2Ftmp%2Fdbmon%2Ftests%2Frrdbases%2Flocalhost~2583~LAMIRAL~Imapsync_Online~LAMIRAL%2CImapsync_Online~opstatus~300~.rrd;interval_vue=p86400;date_given_by=now;date_means=end;dsname=opstatus;width=1200;hight=70;lower=0;upper=100;rigid=on;Beautiful%20Image%21.x=128;Beautiful%20Image%21.y=30;title=Service%20Status;owner=Imapsync_Online;caption=Status%20in%20%25;monitor=https.rrdrt.monitor%20--rrdrt%20imapsync.lamiral.info%2Fcgi-bin%2Fimapsync%20%3B%3B">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="local_status_hetrix" class="collapse">
|
||||||
|
<hr>
|
||||||
|
<p class="text-center">
|
||||||
|
|
||||||
|
The service is down? For how long? How often? Take also a look at the
|
||||||
|
<a href="https://hetrixtools.com/report/uptime/873a2356aea43055204b59f562b5ad52/414322.html">Imapsync Online Status</a>
|
||||||
|
monitor page powered by the <a href="https://hetrixtools.com/414322.html">HetrixTools</a> company.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a id="bottom"></a>
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<p class="text-center">Feel free to contact
|
||||||
|
<strong><a href="https://imapsync.lamiral.info/#AUTHOR" target="_blank">Gilles LAMIRAL</a></strong>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="container-fluid" >
|
||||||
|
<div class="row">
|
||||||
|
<div class="text-center">
|
||||||
|
<a href="https://imapsync.lamiral.info/">
|
||||||
|
<img alt="Imapsync home page" src="https://imapsync.lamiral.info/X/logo_imapsync_Xn.png" height="38" width="60">
|
||||||
|
</a>
|
||||||
|
<a href="#top" title="Top of the page" class="btn btn-info " role="button">Top</a>
|
||||||
|
<!-- <a href="#buttons" class="btn btn-info scripton" role="button">Consoles</a> -->
|
||||||
|
<a href="#bottom" title="Bottom of the page" class="btn btn-info active" role="button">Bottom</a>
|
||||||
|
<br>
|
||||||
|
<small> ($Id: proximapsync_form_extra.html,v 1.2 2022/05/07 13:53:00 gilles Exp gilles $) </small><br>
|
||||||
|
Terms and conditions for anything: <a href="https://imapsync.lamiral.info/LICENSE">No limits to do anything with this work and this license!</a><br>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script
|
||||||
|
src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"
|
||||||
|
integrity="sha384-xBuQ/xzmlsLoJpyjoggmTEz8OWUFM0/RC5BsqQBDX2v5cMvDHcMakNTNrHIW2I5f"
|
||||||
|
crossorigin="anonymous"
|
||||||
|
>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script
|
||||||
|
src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
|
||||||
|
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
|
||||||
|
crossorigin="anonymous"
|
||||||
|
>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<script src="crypto-js/core.js"></script>
|
||||||
|
<script src="crypto-js/sha256.js"></script>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<script
|
||||||
|
src="proximapsync_form.js"
|
||||||
|
>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
536
X/proximapsync_form_extra_free.html
Normal file
536
X/proximapsync_form_extra_free.html
Normal file
@ -0,0 +1,536 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
<!-- $Id: proximapsync_form_extra_free.html,v 1.3 2022/05/07 13:53:00 gilles Exp gilles $ -->
|
||||||
|
|
||||||
|
<html lang="en" id="top">
|
||||||
|
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!--
|
||||||
|
<script
|
||||||
|
data-ad-client="ca-pub-3325993554161060"
|
||||||
|
async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
|
||||||
|
</script>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<title>Mailbox Imapsync Online</title>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
|
||||||
|
integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css"
|
||||||
|
integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="imapsync_form.css">
|
||||||
|
<link rel="stylesheet" href="../S/style.css" type="text/css" />
|
||||||
|
|
||||||
|
<link rel="license" href="https://imapsync.lamiral.info/NOLIMIT">
|
||||||
|
|
||||||
|
<noscript>
|
||||||
|
<link rel="stylesheet" href="noscript.css">
|
||||||
|
</noscript>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="scripton">
|
||||||
|
<!-- will appear if some tests fail -->
|
||||||
|
<pre id="tests" class="collapse"></pre>
|
||||||
|
<!-- hidden stuff that must exit for the tests -->
|
||||||
|
<div class="hidden">
|
||||||
|
<input type="checkbox" id="test_checkbox">
|
||||||
|
<input type="text" id="test_text">
|
||||||
|
<input type="radio" id="test_radio1" name="test_radio" value="first" >
|
||||||
|
<input type="radio" id="test_radio2" name="test_radio" value="second" >
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="container-fluid" >
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="text-center">
|
||||||
|
<a href="https://imapsync.lamiral.info/">
|
||||||
|
<img alt="Imapsync home" title="Imapsync home page" src="https://imapsync.lamiral.info/X/logo_imapsync_Xn.png" height="38" width="60">
|
||||||
|
</a>
|
||||||
|
<a href="#top" title="Top of the page" class="btn btn-info " role="button">Top</a>
|
||||||
|
<a href="#payment" class="btn btn-success" data-toggle="collapse">Pricing</a>
|
||||||
|
<!-- <a href="#buttons" class="btn btn-info scripton" role="button">Consoles</a> -->
|
||||||
|
<a href="#bottom" title="Bottom of the page" class="btn btn-info active" role="button">Bottom</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h1 class="text-center">Mailbox Imapsync Online</h1>
|
||||||
|
|
||||||
|
<p class="text-center larger"><strong>Copy/synchronize</strong> a <strong>Mailbox</strong> (below 3 GB) to another,
|
||||||
|
without <strong>duplicates!</strong><br>
|
||||||
|
<strong>Buying</strong> gives <strong>unlimited</strong> syncs of <strong>any size</strong>.</p>
|
||||||
|
|
||||||
|
<!-- Paypal part start
|
||||||
|
new: NDGMR6TLFZ926
|
||||||
|
old: H2YTURNFT4XT4
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- A button above the pricing form, not very beautiful...
|
||||||
|
I should give it a try anyway because nearly no one buy this service...
|
||||||
|
<div class="text-center">
|
||||||
|
<a href="#payment" class="btn btn-warning btn-lg" data-toggle="collapse">Pricing</a>
|
||||||
|
</div>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- the "in" makes the form not collapsed by default
|
||||||
|
Remove the "in" in order to mask the pricing section
|
||||||
|
<div id="payment" class="well text-center collapse in" >
|
||||||
|
<div id="payment" class="well text-center collapse out" > -->
|
||||||
|
<div id="payment" class="well text-center collapse out" >
|
||||||
|
<p class="lead">Pay by usage type</p>
|
||||||
|
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
|
||||||
|
<input type="hidden" name="cmd" value="_s-xclick" />
|
||||||
|
<input type="hidden" name="hosted_button_id" value="H2YTURNFT4XT4" />
|
||||||
|
<input type="hidden" name="on0" value="imapsync choice" />
|
||||||
|
<fieldset>
|
||||||
|
<!--
|
||||||
|
<label data-toggle="tooltip" data-placement="top" title="Fair enough"
|
||||||
|
class="radio-inline"><input type="radio" name="os0" value="Tiny" > €1,00 </label>
|
||||||
|
<label data-toggle="tooltip" data-placement="top" title="A big mailbox"
|
||||||
|
class="radio-inline"><input type="radio" name="os0" value="Small" checked > €6,00 </label>
|
||||||
|
-->
|
||||||
|
<label data-toggle="tooltip" data-placement="top" title="Many mailboxes to migrate"
|
||||||
|
class="radio-inline"><input type="radio" name="os0" value="High" checked > €120,00 </label>
|
||||||
|
<label data-toggle="tooltip" data-placement="top" title="Some big mailboxes to migrate"
|
||||||
|
class="radio-inline"><input type="radio" name="os0" value="Normal" > €30,00 </label>
|
||||||
|
<br>
|
||||||
|
<input type="hidden" name="currency_code" value="EUR" />
|
||||||
|
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynowCC_LG.gif" name="submit" alt="PayPal - A safe, easy way to pay online!" />
|
||||||
|
</fieldset>
|
||||||
|
<p>
|
||||||
|
<strong>30-day money back guarantee!</strong> <br>
|
||||||
|
<em><b>No question</b> nor condition to get a <b>refund</b>, really, <b>just request</b> it and you'll <b>sure</b> get a refund!</em>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<input type="hidden" value="VAT if professional in Europe" name="on1" />
|
||||||
|
If you're a <b>European professional</b> buyer, please enter your <b>VAT number</b>:
|
||||||
|
<input type="text" maxlength="17" size="17" name="os1" />
|
||||||
|
|
||||||
|
It's for the <b>invoice</b> and customs declaration.<br />
|
||||||
|
It's <b>ok</b> if you <b>don't</b> have a VAT number.<br />
|
||||||
|
</p>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<!-- Paypal part end -->
|
||||||
|
|
||||||
|
|
||||||
|
<form id="form" action="/cgi-bin/proximapsync" method="post" autocomplete="on">
|
||||||
|
<div id="form_row" class="row">
|
||||||
|
<div id="account1" class="col-md-5" >
|
||||||
|
<fieldset>
|
||||||
|
<legend class="text-center h2">IMAP source Mailbox</legend>
|
||||||
|
|
||||||
|
<label for="user1">Login</label> (usually an email address)
|
||||||
|
<div class="input-group form-group">
|
||||||
|
<span class="input-group-addon"><i class="glyphicon glyphicon-user"> </i></span>
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="It is usually an email address or its left part before @"
|
||||||
|
type="text" class="form-control input-lg" id="user1" name="user1" tabindex="1"
|
||||||
|
placeholder="Enter login name">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label for="password1">Password</label>
|
||||||
|
<label class="checkbox-inline out">
|
||||||
|
<input type="checkbox" id="showpassword1"> show password
|
||||||
|
</label>
|
||||||
|
<div class="input-group form-group">
|
||||||
|
<span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span>
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="Passwords are not stored on the server"
|
||||||
|
type="password" class="form-control input-lg" id="password1" name="password1" tabindex="2"
|
||||||
|
placeholder="Enter password">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label for="host1">IMAP Server hostname</label> (or its IP address)
|
||||||
|
<div class="input-group form-group">
|
||||||
|
<span class="input-group-addon"><i class="glyphicon glyphicon-cloud"></i></span>
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="IMAP transfers are done with encryption if the servers support it."
|
||||||
|
list="servers1" type="text" class="form-control input-lg" id="host1" name="host1" tabindex="3"
|
||||||
|
placeholder="Enter IMAP source server name or IP address">
|
||||||
|
<datalist id="servers1">
|
||||||
|
<option value="imap.gmail.com">
|
||||||
|
<option value="outlook.office365.com">
|
||||||
|
<option value="imap.hostinger.com">
|
||||||
|
<option value="ssl0.ovh.net">
|
||||||
|
<option value="email-ssl.com.br">
|
||||||
|
<option value="imap.mail.yahoo.com">
|
||||||
|
</datalist>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group collapse extra_param">
|
||||||
|
<label class="checkbox-inline">
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="Be careful with this option"
|
||||||
|
type="checkbox" id="delete1" name="delete1">Move sync. Deletes messages on source mailbox after a successful transfer.
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group collapse extra_param" >
|
||||||
|
<label for="subfolder1">Sub-folder</label>
|
||||||
|
<div class="input-group form-group">
|
||||||
|
<span class="input-group-addon"><i class="glyphicon glyphicon-folder-open"></i></span>
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="A subfolder where all the source mailbox comes from."
|
||||||
|
type="text" class="form-control input-lg" id="subfolder1" name="subfolder1"
|
||||||
|
placeholder="Enter sub-folder name">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="parameters" class="col-md-2" >
|
||||||
|
<div>
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label class="checkbox-inline">
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="Shows what would be done without really doing it."
|
||||||
|
type="checkbox" id="dry" name="dry" >Just verbose, no real sync.
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label class="checkbox-inline">
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="Checks credentials without syncing anything."
|
||||||
|
type="checkbox" id="justlogin" name="justlogin" >Just checks credentials.
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label class="checkbox-inline">
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="Shows folders sizes and exits."
|
||||||
|
type="checkbox" id="justfoldersizes" name="justfoldersizes" >Just presents folders sizes.
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label class="checkbox-inline">
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="Just create the folder hierarchy, messages are not synced."
|
||||||
|
type="checkbox" id="justfolders" name="justfolders" >Just create folders.
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="button_extra_param" class="text-center scripton">
|
||||||
|
<button type="button" class="btn btn-default btn-block" data-toggle="collapse"
|
||||||
|
data-target=".extra_param">Show / Hide extra parameters</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="button_swap" class="text-center scripton">
|
||||||
|
<button type="button" class="btn btn-default btn-block" id="swap">
|
||||||
|
Swap Source <span class="glyphicon glyphicon-transfer"></span> Destination
|
||||||
|
</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="account2" class="col-md-5" >
|
||||||
|
<fieldset>
|
||||||
|
<legend class="text-center h2">IMAP destination Mailbox</legend>
|
||||||
|
|
||||||
|
<label for="user2">Login</label> (usually an email address)
|
||||||
|
<div class="input-group form-group">
|
||||||
|
<span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="It is usually an email address or its left part before @"
|
||||||
|
type="text" class="form-control input-lg" id="user2" name="user2" tabindex="6"
|
||||||
|
placeholder="Enter login name">
|
||||||
|
</div>
|
||||||
|
<label for="password2">Password</label>
|
||||||
|
<label class="checkbox-inline out">
|
||||||
|
<input type="checkbox" id="showpassword2"> show password
|
||||||
|
</label>
|
||||||
|
<div class="input-group form-group">
|
||||||
|
<span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span>
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="Passwords are not stored on the server"
|
||||||
|
type="password" class="form-control input-lg" id="password2" name="password2" tabindex="7"
|
||||||
|
placeholder="Enter password">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label for="host2">IMAP Server hostname</label> (or its IP address)
|
||||||
|
<div class="input-group form-group">
|
||||||
|
<span class="input-group-addon"><i class="glyphicon glyphicon-cloud"></i></span>
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="IMAP transfers are done with encryption if the servers support it."
|
||||||
|
list="servers2" type="text" class="form-control input-lg" id="host2" name="host2" tabindex="8"
|
||||||
|
placeholder="Enter IMAP destination server name or IP address">
|
||||||
|
<datalist id="servers2">
|
||||||
|
<option value="imap.gmail.com">
|
||||||
|
<option value="outlook.office365.com">
|
||||||
|
<option value="imap.hostinger.com">
|
||||||
|
<option value="ssl0.ovh.net">
|
||||||
|
<option value="email-ssl.com.br">
|
||||||
|
<option value="imap.mail.yahoo.com">
|
||||||
|
</datalist>
|
||||||
|
</div>
|
||||||
|
<!-- -->
|
||||||
|
<div class="form-group collapse extra_param">
|
||||||
|
<label class="checkbox-inline">
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="Be careful with this option"
|
||||||
|
type="checkbox" id="delete2" name="delete2" tabindex="9">Strict sync. Deletes messages on destination mailbox that are not at the source mailbox.
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group collapse extra_param" id="extra_subfolder2" >
|
||||||
|
<label for="subfolder2">Sub-folder</label>
|
||||||
|
<div class="input-group form-group">
|
||||||
|
<span class="input-group-addon"><i class="glyphicon glyphicon-folder-open"></i></span>
|
||||||
|
<input
|
||||||
|
data-toggle="tooltip" data-placement="bottom" title="A subfolder where all the source mailbox will go."
|
||||||
|
type="text" class="form-control input-lg" id="subfolder2" name="subfolder2"
|
||||||
|
placeholder="Enter sub-folder name">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- -->
|
||||||
|
<div>
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<input type="hidden" name="automap" value="on">
|
||||||
|
<input type="hidden" name="addheader" value="on">
|
||||||
|
<input type="hidden" name="exitwhenover" value="3000000000">
|
||||||
|
<!-- -#->
|
||||||
|
<input type="hidden" name="simulong" value="360">
|
||||||
|
<!-#- -->
|
||||||
|
|
||||||
|
<a id="buttons"></a>
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<div class="text-center center-block">
|
||||||
|
If you <b>close</b> this <b>window</b> (or tab) <b>during</b> the synchronization,
|
||||||
|
it will <b>abort</b> the synchronization, it's like <b>hitting</b> the red button <b>"Abort!"</b> below.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Classical button to go to the log only, when javascript is turned off -->
|
||||||
|
<noscript>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12 padd0" >
|
||||||
|
<button type="submit" class="btn btn-success btn-lg center-block btn-block">Go sync!</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</noscript>
|
||||||
|
|
||||||
|
<!-- Javascript buttons using xhr -->
|
||||||
|
<div class="row scripton">
|
||||||
|
<div class="col-sm-6 padd0" >
|
||||||
|
<button id="bt-sync" type="button"
|
||||||
|
class="btn btn-success btn-lg center-block btn-block"
|
||||||
|
tabindex="11"
|
||||||
|
data-toggle="tooltip" data-placement="top"
|
||||||
|
title="Launch the sync! You can abort the sync with the red Abort button nearby or by closing the tab/window."
|
||||||
|
>
|
||||||
|
Sync or resync!<br>
|
||||||
|
<span class="glyphicon glyphicon-envelope"></span>
|
||||||
|
<span class="glyphicon glyphicon-arrow-right"></span>
|
||||||
|
<span class="glyphicon glyphicon-envelope"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 padd0" >
|
||||||
|
<button id="bt-abort" type="button"
|
||||||
|
class="btn btn-danger btn-lg center-block btn-block" tabindex="12"
|
||||||
|
data-toggle="tooltip" data-placement="top"
|
||||||
|
title="Abort the sync! You can restart the sync later, no duplicates should happen."
|
||||||
|
>
|
||||||
|
Abort!<br>
|
||||||
|
<span class="glyphicon glyphicon-scissors"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<div class="row scripton" id="consoles" >
|
||||||
|
|
||||||
|
<pre id="imapsync_current" class="center-block text-center"></pre>
|
||||||
|
|
||||||
|
<span id="imapsync_advice_hours" class="text-center collapse">
|
||||||
|
Best <a href="#local_bandwidth"><b>bandwidth available hours</b></a> are from <b>11h PM to 11h AM UTC</b> on Mondays to Fridays, <b>all hours</b> on Saturdays and <b>Sundays</b>.
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<pre id="progress-txt">ETA: Estimation Time of Arrival</pre>
|
||||||
|
|
||||||
|
<div class="progress">
|
||||||
|
<div id="progress-bar-done" class="progress-bar progress-bar-success" role="progressbar">
|
||||||
|
Progress bar
|
||||||
|
</div>
|
||||||
|
<div id="progress-bar-left" class="progress-bar progress-bar-info" role="progressbar">
|
||||||
|
Progress bar
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-sm-6 well">
|
||||||
|
<h2 class="text-center">Console of imapsync launch</h2>
|
||||||
|
<pre id="console">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-sm-6 well">
|
||||||
|
<h2 class="text-center">Console of abort</h2>
|
||||||
|
<pre id="abort">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2 id="imapsync_log_beginning" class="text-center scripton">Log of imapsync run</h2>
|
||||||
|
<div class="text-center scripton">
|
||||||
|
<a href="#imapsync_log_bottom">Link to the <b>bottom</b> of the imapsync log file</a>
|
||||||
|
</div>
|
||||||
|
<pre id="output" class="scripton">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<div id="imapsync_log_bottom" class="text-center scripton">
|
||||||
|
<a href="#imapsync_log_beginning">Link to the <b>beginning</b> of the imapsync log file</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="local_bandwidth" class="collapse">
|
||||||
|
<hr>
|
||||||
|
<p class="text-center">
|
||||||
|
<b>Local bandwidth statistics</b><br>
|
||||||
|
|
||||||
|
<a href="/vnstat/vnstati.html">
|
||||||
|
<img alt="Local bandwidth statistics" src="/vnstat/vnstat_vs.png" >
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="local_status_dbmon" class="collapse">
|
||||||
|
<hr>
|
||||||
|
<p class="text-center">
|
||||||
|
Imapsync <b>Online Status</b> over the <b>last 24h</b><br>
|
||||||
|
<a href="imapsync_online_status.html"><img id="status_24h" class="img-responsive center-block" alt="Imapsync Online Status over the last 24h" src="https://sup.lamiral.info/dbmon/cgi-bin/rrdview.cgi?child=yes&rrdfile=%2Fvar%2Ftmp%2Fdbmon%2Ftests%2Frrdbases%2Flocalhost~2583~LAMIRAL~Imapsync_Online~LAMIRAL%2CImapsync_Online~opstatus~300~.rrd;interval_vue=p86400;date_given_by=now;date_means=end;dsname=opstatus;width=1200;hight=70;lower=0;upper=100;rigid=on;Beautiful%20Image%21.x=128;Beautiful%20Image%21.y=30;title=Service%20Status;owner=Imapsync_Online;caption=Status%20in%20%25;monitor=https.rrdrt.monitor%20--rrdrt%20imapsync.lamiral.info%2Fcgi-bin%2Fimapsync%20%3B%3B">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="local_status_hetrix" class="collapse">
|
||||||
|
<hr>
|
||||||
|
<p class="text-center">
|
||||||
|
|
||||||
|
The service is down? For how long? How often? Take also a look at the
|
||||||
|
<a href="https://hetrixtools.com/report/uptime/873a2356aea43055204b59f562b5ad52/414322.html">Imapsync Online Status</a>
|
||||||
|
monitor page powered by the <a href="https://hetrixtools.com/414322.html">HetrixTools</a> company.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a id="bottom"></a>
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<p class="text-center">Feel free to contact
|
||||||
|
<strong><a href="https://imapsync.lamiral.info/#AUTHOR" target="_blank">Gilles LAMIRAL</a></strong>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="container-fluid" >
|
||||||
|
<div class="row">
|
||||||
|
<div class="text-center">
|
||||||
|
<a href="https://imapsync.lamiral.info/">
|
||||||
|
<img alt="Imapsync home page" src="https://imapsync.lamiral.info/X/logo_imapsync_Xn.png" height="38" width="60">
|
||||||
|
</a>
|
||||||
|
<a href="#top" title="Top of the page" class="btn btn-info " role="button">Top</a>
|
||||||
|
<!-- <a href="#buttons" class="btn btn-info scripton" role="button">Consoles</a> -->
|
||||||
|
<a href="#bottom" title="Bottom of the page" class="btn btn-info active" role="button">Bottom</a>
|
||||||
|
<br>
|
||||||
|
<small> ($Id: proximapsync_form_extra_free.html,v 1.3 2022/05/07 13:53:00 gilles Exp gilles $) </small><br>
|
||||||
|
Terms and conditions for anything: <a href="https://imapsync.lamiral.info/LICENSE">No limits to do anything with this work and this license!</a><br>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script
|
||||||
|
src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"
|
||||||
|
integrity="sha384-xBuQ/xzmlsLoJpyjoggmTEz8OWUFM0/RC5BsqQBDX2v5cMvDHcMakNTNrHIW2I5f"
|
||||||
|
crossorigin="anonymous"
|
||||||
|
>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script
|
||||||
|
src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
|
||||||
|
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
|
||||||
|
crossorigin="anonymous"
|
||||||
|
>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<script src="crypto-js/core.js"></script>
|
||||||
|
<script src="crypto-js/sha256.js"></script>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<script
|
||||||
|
src="proximapsync_form.js"
|
||||||
|
>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -1,6 +1,5 @@
|
|||||||
^Here is imapsync
|
^Here is imapsync
|
||||||
^Load end is
|
^Load .*is
|
||||||
^Load is
|
|
||||||
^Server is on heavy load
|
^Server is on heavy load
|
||||||
^Temp directory is
|
^Temp directory is
|
||||||
^Current directory is
|
^Current directory is
|
||||||
|
249
index.shtml
249
index.shtml
@ -54,7 +54,7 @@
|
|||||||
<li><a rel="help" href="#install">Installation</a></li>
|
<li><a rel="help" href="#install">Installation</a></li>
|
||||||
<li><a rel="help" href="#doc" class="larger" >Documentation</a></li>
|
<li><a rel="help" href="#doc" class="larger" >Documentation</a></li>
|
||||||
<li><a href="S/news.shtml">News about imapsync <!--#exec cmd="cat ./VERSION| tr -d '\n'" -->, previous and next releases</a></li>
|
<li><a href="S/news.shtml">News about imapsync <!--#exec cmd="cat ./VERSION| tr -d '\n'" -->, previous and next releases</a></li>
|
||||||
<li><a href="S/imapservers.shtml">List of the 86 imap software server applications <b>supported</b></a> by imapsync</li>
|
<li><a href="S/imapservers.shtml">List of the 88 imap software server applications <b>supported</b></a> by imapsync</li>
|
||||||
<li><a href="S/external.shtml">Similar software tools and external services</a></li>
|
<li><a href="S/external.shtml">Similar software tools and external services</a></li>
|
||||||
<li><a href="S/mailing_list.shtml">Discuss or search on the mailing-list</a></li>
|
<li><a href="S/mailing_list.shtml">Discuss or search on the mailing-list</a></li>
|
||||||
<li><a href="S/terms_and_conditions.shtml">Imapsync Terms and Conditions</a></li>
|
<li><a href="S/terms_and_conditions.shtml">Imapsync Terms and Conditions</a></li>
|
||||||
@ -294,7 +294,7 @@ but <b>without</b> the 3 GB limit.
|
|||||||
<li>Imapsync Perl <b>source code</b> for any operating system, Unix, Windows, OS X.</li>
|
<li>Imapsync Perl <b>source code</b> for any operating system, Unix, Windows, OS X.</li>
|
||||||
|
|
||||||
<li>The <b>visual interface</b>, similar to <b><a href="https://imapsync.lamiral.info/X/">/X</a></b>,
|
<li>The <b>visual interface</b>, similar to <b><a href="https://imapsync.lamiral.info/X/">/X</a></b>,
|
||||||
to install the service on your own <b>Linux server</b> (not working on Windows yet).</li>
|
to <a href="INSTALL.d/INSTALL.OnlineUI.txt">install the service</a> on your own <b>Linux server</b> (not working on Windows yet).</li>
|
||||||
|
|
||||||
<li><b>Lifetime</b> of imapsync <b>updates</b> without extra payment.</li>
|
<li><b>Lifetime</b> of imapsync <b>updates</b> without extra payment.</li>
|
||||||
|
|
||||||
@ -470,88 +470,139 @@ Maybe one day those little crypto coins will be like gold? (I will like that!)
|
|||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
gilles@i005:~/imapsync_stats 14$ date
|
gilles@i005:~/imapsync_stats 43$ date
|
||||||
Tue Jan 12 12:01:08 CET 2021
|
Mon Apr 11 14:56:10 UTC 2022
|
||||||
|
gilles@i005:~/imapsync_stats 44$
|
||||||
|
gilles@i005:~/imapsync_stats 44$ statistics_VERSION_synthesis 2021
|
||||||
|
|
||||||
|
==== Nb users each month in 2021
|
||||||
|
7443 stats_imapsync_2021_01.ip
|
||||||
|
7007 stats_imapsync_2021_02.ip
|
||||||
|
7231 stats_imapsync_2021_03.ip
|
||||||
|
7877 stats_imapsync_2021_04.ip
|
||||||
|
6379 stats_imapsync_2021_05.ip
|
||||||
|
6124 stats_imapsync_2021_06.ip
|
||||||
|
6130 stats_imapsync_2021_07.ip
|
||||||
|
6849 stats_imapsync_2021_08.ip
|
||||||
|
6434 stats_imapsync_2021_09.ip
|
||||||
|
6487 stats_imapsync_2021_10.ip
|
||||||
|
6774 stats_imapsync_2021_11.ip
|
||||||
|
6547 stats_imapsync_2021_12.ip
|
||||||
|
81282 total
|
||||||
|
|
||||||
gilles@i005:~/imapsync_stats 13$ statistics_VERSION_synthesis 2020
|
==== Nb runs each month in 2021
|
||||||
|
stats_imapsync_2021_01.runs : 13000556 total
|
||||||
|
stats_imapsync_2021_02.runs : 10554624 total
|
||||||
|
stats_imapsync_2021_03.runs : 11580320 total
|
||||||
|
stats_imapsync_2021_04.runs : 9887130 total
|
||||||
|
stats_imapsync_2021_05.runs : 10969660 total
|
||||||
|
stats_imapsync_2021_06.runs : 11696577 total
|
||||||
|
stats_imapsync_2021_07.runs : 12015972 total
|
||||||
|
stats_imapsync_2021_08.runs : 18112580 total
|
||||||
|
stats_imapsync_2021_09.runs : 18364370 total
|
||||||
|
stats_imapsync_2021_10.runs : 16272699 total
|
||||||
|
stats_imapsync_2021_11.runs : 15176645 total
|
||||||
|
stats_imapsync_2021_12.runs : 13599796 total
|
||||||
|
|
||||||
==== Nb users each month in 2020
|
==== % Operating systems in 2021
|
||||||
6261 stats_imapsync_2020_01.ip
|
Linux 66.70 %
|
||||||
6660 stats_imapsync_2020_02.ip
|
Win32 19.05 %
|
||||||
6727 stats_imapsync_2020_03.ip
|
Darwin 10.98 %
|
||||||
6362 stats_imapsync_2020_04.ip
|
FreeBSD 3.19 %
|
||||||
6841 stats_imapsync_2020_05.ip
|
Solaris .03 %
|
||||||
6195 stats_imapsync_2020_06.ip
|
OpenBSD .01 %
|
||||||
7025 stats_imapsync_2020_07.ip
|
|
||||||
6221 stats_imapsync_2020_08.ip
|
|
||||||
6450 stats_imapsync_2020_09.ip
|
|
||||||
6686 stats_imapsync_2020_10.ip
|
|
||||||
6929 stats_imapsync_2020_11.ip
|
|
||||||
6902 stats_imapsync_2020_12.ip
|
|
||||||
79259 total
|
|
||||||
|
|
||||||
==== Nb runs each month in 2020
|
|
||||||
stats_imapsync_2020_01.runs : 11844697 total
|
|
||||||
stats_imapsync_2020_02.runs : 10658279 total
|
|
||||||
stats_imapsync_2020_03.runs : 10691171 total
|
|
||||||
stats_imapsync_2020_04.runs : 9902899 total
|
|
||||||
stats_imapsync_2020_05.runs : 9389412 total
|
|
||||||
stats_imapsync_2020_06.runs : 10841772 total
|
|
||||||
stats_imapsync_2020_07.runs : 11650852 total
|
|
||||||
stats_imapsync_2020_08.runs : 10138316 total
|
|
||||||
stats_imapsync_2020_10.runs : 11040092 total
|
|
||||||
stats_imapsync_2020_11.runs : 15849476 total
|
|
||||||
stats_imapsync_2020_12.runs : 12920080 total
|
|
||||||
|
|
||||||
==== % Operating systems in 2020
|
|
||||||
Linux 67.96 %
|
|
||||||
Win32 18.15 %
|
|
||||||
Darwin 12.38 %
|
|
||||||
FreeBSD 1.43 %
|
|
||||||
Solaris .02 %
|
|
||||||
OpenBSD .03 %
|
|
||||||
Cygwin 0.00 %
|
Cygwin 0.00 %
|
||||||
Unknown 0.00 %
|
Unknown 0.00 %
|
||||||
Other .01 %
|
Other .01 %
|
||||||
|
|
||||||
==== Perl releases in 2020
|
==== Perl releases in 2021
|
||||||
statistics_perl_from_files_cumul_percentage 48786 stats_imapsync_2020.ip
|
5.10 1%
|
||||||
5.10 2%
|
|
||||||
5.12 3%
|
5.12 3%
|
||||||
5.14 0%
|
5.14 0%
|
||||||
5.16 35%
|
5.16 27%
|
||||||
5.18 9%
|
5.18 3%
|
||||||
5.20 0%
|
5.20 0%
|
||||||
5.22 1%
|
5.22 1%
|
||||||
5.24 6%
|
5.24 3%
|
||||||
5.26 15%
|
5.26 17%
|
||||||
5.28 11%
|
5.28 15%
|
||||||
5.30 12%
|
5.30 16%
|
||||||
5.31 0%
|
5.31 0%
|
||||||
5.32 0%
|
5.32 8%
|
||||||
|
5.34 0%
|
||||||
5.8 0%
|
5.8 0%
|
||||||
|
|
||||||
|
==== Biggest users in 2021
|
||||||
|
1930148 static.113.204.47.78.clients.your-server.de "imapsync/1.945 (linux perl 5.28.1, 3.42 imapsync)"
|
||||||
|
2004486 al.cloud.ec "imapsync/1.983 (linux perl 5.28.1, 3.42 imapsync Docker)"
|
||||||
|
2029974 host246-57-234-109.static.ehiweb.it "imapsync/1.727 (linux perl 5.16.3, 3.37 imapsync)"
|
||||||
|
2202168 185.241.64.162 "imapsync/1.945 (MSWin32 perl 5.26.0, 3.42 imapsync.exe)"
|
||||||
|
2560648 130.61.71.204 "imapsync/1.727 (linux perl 5.16.3, 3.37 imapsync)"
|
||||||
|
2686078 90.188.4-135.xdsl.ab.ru "imapsync/1.727 (linux perl 5.16.3, 3.37 imapsync)"
|
||||||
|
3953406 v2202011133577132761.hotsrv.de "imapsync/1.983 (linux perl 5.28.1, 3.42 imapsync Docker)"
|
||||||
|
3954493 srv.saiu.it "imapsync/1.727 (linux perl 5.16.3, 3.37 imapsync)"
|
||||||
|
4984373 imap.datacom.eu "imapsync/1.977 (freebsd perl 5.32.1, 3.42 imapsync Standard)"
|
||||||
|
5539904 mail.kami.ru.com "imapsync/1.727 (linux perl 5.16.3, 3.37 imapsync)"
|
||||||
|
6384848 ip185.ip-137-74-211.eu "imapsync/1.957 (linux perl 5.24.1, 3.38 imapsync Docker)"
|
||||||
|
7918261 90.188.4-135.xdsl.ab.ru "imapsync/2.107 (linux perl 5.26.3, 3.43 imapsync Standard)"
|
||||||
|
9556282 mz-liberec.onice.io "imapsync/2.148 (linux perl 5.16.3, 3.37 imapsync Standard)"
|
||||||
|
11809945 41.72.193.38.liquidtelecom.net "imapsync/1.727 (linux perl 5.16.3, 3.37 imapsync)"
|
||||||
|
12144716 62.94.96.164 "imapsync/1.727 (linux perl 5.16.3, 3.37 imapsync)"
|
||||||
|
|
||||||
|
==== Biggest users this month
|
||||||
|
254561 srv.saiu.it "imapsync/1.727 (linux perl 5.16.3, 3.37 imapsync)"
|
||||||
|
259123 130.136.151.203.sta.inet.co.th "imapsync/2.148 (linux perl 5.26.3, 3.43 imapsync Standard)"
|
||||||
|
290133 41.72.193.38.liquidtelecom.net "imapsync/1.727 (linux perl 5.16.3, 3.37 imapsync)"
|
||||||
|
306768 62.94.96.164 "imapsync/1.727 (linux perl 5.16.3, 3.37 imapsync)"
|
||||||
|
308055 90.188.4-135.xdsl.ab.ru "imapsync/2.107 (linux perl 5.26.3, 3.43 imapsync Standard)"
|
||||||
|
|
||||||
==== Most releases used in 2020
|
==== Biggest users previous month
|
||||||
230 1.957
|
875457 130.136.151.203.sta.inet.co.th "imapsync/2.148 (linux perl 5.26.3, 3.43 imapsync Standard)"
|
||||||
301 1.644
|
994371 90.188.4-135.xdsl.ab.ru "imapsync/2.107 (linux perl 5.26.3, 3.43 imapsync Standard)"
|
||||||
361 1.484
|
999072 41.72.193.38.liquidtelecom.net "imapsync/1.727 (linux perl 5.16.3, 3.37 imapsync)"
|
||||||
450 1.979
|
1040081 62.94.96.164 "imapsync/1.727 (linux perl 5.16.3, 3.37 imapsync)"
|
||||||
745 1.997
|
1098073 srv.saiu.it "imapsync/1.727 (linux perl 5.16.3, 3.37 imapsync)"
|
||||||
887 1.684
|
|
||||||
1092 1.998
|
|
||||||
1175 1.921
|
|
||||||
1563 1.967
|
|
||||||
1871 1.836
|
|
||||||
2273 1.983
|
|
||||||
2629 1.882
|
|
||||||
3483 1.945
|
|
||||||
11019 1.977
|
|
||||||
17660 1.727
|
|
||||||
|
|
||||||
|
==== Most releases used in 2021
|
||||||
|
103 1.979
|
||||||
|
119 1.957
|
||||||
|
122 1.637
|
||||||
|
132 1.678
|
||||||
|
187 1.644
|
||||||
|
427 1.921
|
||||||
|
434 1.684
|
||||||
|
602 1.997
|
||||||
|
726 1.998
|
||||||
|
1084 1.945
|
||||||
|
1098 1.836
|
||||||
|
1909 1.882
|
||||||
|
3111 1.983
|
||||||
|
11368 1.977
|
||||||
|
16062 1.727
|
||||||
|
|
||||||
|
==== Most releases used the previous month
|
||||||
|
53 1.921
|
||||||
|
57 1.684
|
||||||
|
69 1.997
|
||||||
|
71 1.836
|
||||||
|
77 1.998
|
||||||
|
113 1.945
|
||||||
|
130 1.983
|
||||||
|
196 1.882
|
||||||
|
762 1.977
|
||||||
|
2363 1.727
|
||||||
|
|
||||||
|
==== Most releases used this month
|
||||||
|
15 1.997
|
||||||
|
25 1.921
|
||||||
|
29 1.644
|
||||||
|
34 1.836
|
||||||
|
52 1.945
|
||||||
|
52 1.998
|
||||||
|
58 1.983
|
||||||
|
66 1.882
|
||||||
|
276 1.977
|
||||||
|
1153 1.727
|
||||||
|
|
||||||
==== Nb users each year
|
==== Nb users each year
|
||||||
9640 stats_imapsync_2011.ip
|
9640 stats_imapsync_2011.ip
|
||||||
@ -564,8 +615,9 @@ statistics_perl_from_files_cumul_percentage 48786 stats_imapsync_2020.ip
|
|||||||
44116 stats_imapsync_2018.ip
|
44116 stats_imapsync_2018.ip
|
||||||
48103 stats_imapsync_2019.ip
|
48103 stats_imapsync_2019.ip
|
||||||
49562 stats_imapsync_2020.ip
|
49562 stats_imapsync_2020.ip
|
||||||
3273 stats_imapsync_2021.ip
|
51639 stats_imapsync_2021.ip
|
||||||
390881 total
|
19442 stats_imapsync_2022.ip
|
||||||
|
458689 total
|
||||||
|
|
||||||
==== Nb runs each year :
|
==== Nb runs each year :
|
||||||
2010: 0
|
2010: 0
|
||||||
@ -579,37 +631,35 @@ statistics_perl_from_files_cumul_percentage 48786 stats_imapsync_2020.ip
|
|||||||
2018: 108047481
|
2018: 108047481
|
||||||
2019: 158971132
|
2019: 158971132
|
||||||
2020: 135913391
|
2020: 135913391
|
||||||
2021: 4428153
|
2021: 161230929
|
||||||
|
2022: 47853753
|
||||||
2021~~134689380
|
|
||||||
|
|
||||||
Done 2021/01/18
|
|
||||||
|
|
||||||
|
2022~~172936635
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>There are <b>6000 to 7000 </b> imapsync users per month (50 000 users for the year 2021).
|
<li>There are <b>6000 to 8000</b> imapsync users per month (52 000 users for the year 2021).
|
||||||
Well, if all users could be buyers!
|
Well, if all users could be buyers!
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>9 M to 16 M mailboxes transfers per month during 2020.</li>
|
<li>10 M to 18 M mailboxes transfers per month during 2021.</li>
|
||||||
<li><b>136 M</b> transfers for 2020,
|
<li><b>161 M</b> transfers for 2021,
|
||||||
that is <b>4 whole mailboxes completely synced each second</b> on average (136*10^6/365/24/3600 ~ 4),
|
that is <b>5 whole mailboxes completely synced each second</b> on average (161*10^6/365/24/3600 ~ 5),
|
||||||
and an estimation of <b>60 Petabytes transferred in 2020</b> ( 1 PiB = 2^50 bytes = 1024^5 ~ 10^15),
|
and an estimation of <b>69 Petabytes transferred in 2021</b> ( 1 PiB = 2^50 bytes = 1024^5 ~ 10^15),
|
||||||
taking a mean of 500 Megabytes per transfer (an estimated mean given by online /X real stats).
|
taking a mean of 500 Megabytes per transfer (an estimated mean given by online /X real stats).
|
||||||
60 Petabytes = 500*10^6*136*10^6. The 2020 global internet traffic was 2580 Exabytes
|
69 Petabytes = 480*10^6*161*10^6. The 2021 global internet traffic was 2580 Exabytes
|
||||||
(2580 ~ <a href="https://en.wikipedia.org/wiki/Internet_traffic#Global_Internet_traffic">(174+41)</a> * 12 )
|
(3312 ~ <a href="https://en.wikipedia.org/wiki/Internet_traffic#Global_Internet_traffic">(219+57)</a> * 12 )
|
||||||
(1 EiB = 2^60 bytes = 1024^6 ~ 10^18) so imapsync is a very very tiny thing (23 per million, 60/2580000).
|
(1 EiB = 2^60 bytes = 1024^6 ~ 10^18) so imapsync is a very very tiny thing (21 per million, 69/3312000).
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
Let's see it another way, imapsync did 136 M transfers for 2020,
|
Let's see it another way, imapsync did 161 M transfers for 2021,
|
||||||
that's nearly <b>492 M email messages transferred every day</b> (136*1325/366)
|
that's nearly <b>611 M email messages transferred every day</b> (161*1388/366)
|
||||||
taking a mean of 1325 messages per transfer (an estimated mean given by online /X real stats).
|
taking a mean of 1388 messages per transfer (an estimated mean given by online /X 2021 real stats).
|
||||||
|
|
||||||
The internet global estimated number of messages sent every day is
|
The internet global estimated number of messages sent every day is
|
||||||
<a href="https://www.statista.com/statistics/456500/daily-number-of-e-mails-worldwide/">306 billions</a> in 2020
|
<a href="https://www.statista.com/statistics/456500/daily-number-of-e-mails-worldwide/">320 billions</a> in 2021
|
||||||
(55% being spam but that's another story...).
|
(55% being spam but that's another story...).
|
||||||
So imapsync does 0.16% (492/306000*100) of all email traffic, not that bad for a command-line tool!
|
So imapsync does 0.19% (611/320000*100) of all email traffic, not that bad for a command-line tool!
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
@ -617,16 +667,16 @@ See the Wikipedia <a href="https://en.wikipedia.org/wiki/Byte#Multiple-byte_unit
|
|||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li><b>Operating systems</b> run by command line imapsync users (in 2020):
|
<li><b>Operating systems</b> run by command line imapsync users (in 2021):
|
||||||
|
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>Linux: 68%</b></li>
|
<li><b>Linux: 67%</b></li>
|
||||||
<li><b>Win32: 18%</b></li>
|
<li><b>Win32: 19%</b></li>
|
||||||
<li><b>Darwin: 12%</b></li>
|
<li><b>Darwin: 11%</b></li>
|
||||||
<li><b>FreeBSD: 1.43%</b></li>
|
<li><b>FreeBSD: 3.19%</b></li>
|
||||||
<li>Solaris: 0.02%</li>
|
<li>Solaris: 0.03%</li>
|
||||||
<li>OpenBSD: 0.03%</li>
|
<li>OpenBSD: 0.01%</li>
|
||||||
<li>Other: 0.01%</li>
|
<li>Other: 0.01%</li>
|
||||||
<li>Cygwin: 0%</li>
|
<li>Cygwin: 0%</li>
|
||||||
<li>Unknown: 0%</li>
|
<li>Unknown: 0%</li>
|
||||||
@ -636,12 +686,16 @@ See the Wikipedia <a href="https://en.wikipedia.org/wiki/Byte#Multiple-byte_unit
|
|||||||
<li><b>Highest use rate</b>: about <b>56 M</b> IMAP mailbox transfers by just one host (it was in 2014).</li>
|
<li><b>Highest use rate</b>: about <b>56 M</b> IMAP mailbox transfers by just one host (it was in 2014).</li>
|
||||||
<li><b>Biggest known account</b> migrated: <b>2.4 M folders</b> (figure independently reported).</li>
|
<li><b>Biggest known account</b> migrated: <b>2.4 M folders</b> (figure independently reported).</li>
|
||||||
|
|
||||||
<li><b>Operating systems</b> run by the visual /X online imapsync users:
|
<li><b>Operating systems</b> run by the visual /X online imapsync users in 2021:
|
||||||
|
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>Windows 70%</b></li>
|
<li><b>Windows 71%</b></li>
|
||||||
<li><b>Macintosh 23%</b></li>
|
<li><b>Macintosh 22%</b></li>
|
||||||
<li><b>Linux 7%</b></li>
|
<li><b>Linux 7%</b></li>
|
||||||
|
<li><b>iPhone 0.22%</b></li>
|
||||||
|
<li><b>iPad 0.03%</b></li>
|
||||||
|
<li><b>Android 0.02%</b></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
@ -869,6 +923,7 @@ you some struggling hours later</b>, believe me. So read the three columns main
|
|||||||
</li>
|
</li>
|
||||||
<li> <a href="FAQ.d/FAQ.Office365.txt">Office365</a>. </li>
|
<li> <a href="FAQ.d/FAQ.Office365.txt">Office365</a>. </li>
|
||||||
<li> <a href="FAQ.d/FAQ.Exchange.txt">Exchange 20xx</a>. </li>
|
<li> <a href="FAQ.d/FAQ.Exchange.txt">Exchange 20xx</a>. </li>
|
||||||
|
<li> <a href="FAQ.d/FAQ.iCloud.txt">iCloud</a>. </li>
|
||||||
<li> <a href="FAQ.d/FAQ.Yahoo.txt">Yahoo</a>. </li>
|
<li> <a href="FAQ.d/FAQ.Yahoo.txt">Yahoo</a>. </li>
|
||||||
<li> <a href="FAQ.d/FAQ.Domino.txt">Domino</a>. </li>
|
<li> <a href="FAQ.d/FAQ.Domino.txt">Domino</a>. </li>
|
||||||
<li> <a href="FAQ.d/FAQ.Zimbra.txt">Zimbra</a>. </li>
|
<li> <a href="FAQ.d/FAQ.Zimbra.txt">Zimbra</a>. </li>
|
||||||
@ -989,7 +1044,7 @@ like written in the <a href="LICENSE">https://imapsync.lamiral.info/LICENSE</a>
|
|||||||
<!--#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: index.shtml,v 1.511 2022/04/06 10:38:35 gilles Exp gilles $)<br />
|
($Id: index.shtml,v 1.516 2022/05/24 11:58:23 gilles Exp gilles $)<br />
|
||||||
<a href="#TOP">Top of the page</a>
|
<a href="#TOP">Top of the page</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
5
oauth2/README_OAUTH2.txt
Executable file → Normal file
5
oauth2/README_OAUTH2.txt
Executable file → Normal file
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
# $Id: README_OAUTH2.txt,v 1.1 2021/07/06 01:45:43 gilles Exp gilles $
|
# $Id: README_OAUTH2.txt,v 1.2 2022/07/25 16:44:43 gilles Exp gilles $
|
||||||
|
|
||||||
1) Do you have a refresh_token?
|
1) Do you have a refresh_token?
|
||||||
Yes: Good!
|
Yes: Good!
|
||||||
@ -12,8 +12,7 @@ No: Get one. How? Run the commands:
|
|||||||
You will be asked to go to a long url with a browser, like this:
|
You will be asked to go to a long url with a browser, like this:
|
||||||
|
|
||||||
To authorize token, visit this url and follow the directions:
|
To authorize token, visit this url and follow the directions:
|
||||||
https://accounts.google.com/o/oauth2/auth?client_id=108687549524-86sjq07f3ch8otl9fnr56mjnniltdrvn.apps.googleusercontent.com&redirect_uri=urn%3Aietf%
|
https://accounts.google.com/o/oauth2/auth?client_id=108687549524-86sjq07f3ch8otl9fnr56mjnniltdrvn.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=https%3A%2F%2Fmail.google.com%2F
|
||||||
3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=https%3A%2F%2Fmail.google.com%2F
|
|
||||||
|
|
||||||
|
|
||||||
Go to this url, the url above should be the same as presented by the script.
|
Go to this url, the url above should be the same as presented by the script.
|
||||||
|
62
tests.sh
62
tests.sh
@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# $Id: tests.sh,v 1.372 2022/04/06 10:07:32 gilles Exp gilles $
|
# $Id: tests.sh,v 1.374 2022/09/15 08:43:20 gilles Exp gilles $
|
||||||
|
|
||||||
# To run these tests, you need a running imap server somewhere
|
# To run these tests, you need a running imap server somewhere
|
||||||
# with several accounts. And be on Linux or Unix.
|
# with several accounts. And be on Linux or Unix.
|
||||||
@ -3604,7 +3604,7 @@ ll_useheader_noheader()
|
|||||||
--passfile2 ../../var/pass/secret.titi \
|
--passfile2 ../../var/pass/secret.titi \
|
||||||
--folder INBOX.yop.yap \
|
--folder INBOX.yop.yap \
|
||||||
--useheader 'NoExist' \
|
--useheader 'NoExist' \
|
||||||
--debug --delete2
|
--debug --delete2 --addheader
|
||||||
echo 'rm /home/vmail/titi/.yop.yap/cur/*'
|
echo 'rm /home/vmail/titi/.yop.yap/cur/*'
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5528,11 +5528,12 @@ easygmail_gmail1_gmail2() {
|
|||||||
--justfolders
|
--justfolders
|
||||||
}
|
}
|
||||||
|
|
||||||
easygmail_gmail2() {
|
easygmail_gmail2()
|
||||||
|
{
|
||||||
$CMD_PERL ./imapsync \
|
$CMD_PERL ./imapsync \
|
||||||
--user1 gilles.lamiral@gmail.com \
|
--user1 gilles.lamiral@gmail.com \
|
||||||
--passfile1 ../../var/pass/secret.gilles_gmail \
|
--passfile1 ../../var/pass/secret.gilles_gmail \
|
||||||
--host1 imap.gmail.com --ssl1 \
|
--host1 imap.gmail.com \
|
||||||
--gmail2 \
|
--gmail2 \
|
||||||
--user2 imapsync.gl@gmail.com \
|
--user2 imapsync.gl@gmail.com \
|
||||||
--passfile2 ../../var/pass/secret.imapsync.gl_gmail \
|
--passfile2 ../../var/pass/secret.imapsync.gl_gmail \
|
||||||
@ -5611,7 +5612,6 @@ all_login_tests()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
gmail_glX_all_justlogin()
|
gmail_glX_all_justlogin()
|
||||||
{
|
{
|
||||||
error_list=""
|
error_list=""
|
||||||
@ -5626,9 +5626,29 @@ test "X$error_list" = X;
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
gmail_glX_all_justfolderlist()
|
||||||
|
{
|
||||||
|
error_list=""
|
||||||
|
for X in "" 0 1 2 3; do
|
||||||
|
$CMD_PERL ./imapsync \
|
||||||
|
--gmail1 --user1 imapsync.gl${X}@gmail.com --passfile1 ../../var/pass/secret.imapsync.gl${X}_gmail \
|
||||||
|
--gmail2 --user2 imapsync.gl${X}@gmail.com --passfile2 ../../var/pass/secret.imapsync.gl${X}_gmail \
|
||||||
|
--no-modulesversion --justfolderlists --nocheckfoldersexist || { error_list="${error_list}[imapsync.gl${X}@gmail.com] " ; }
|
||||||
|
done
|
||||||
|
echo3 "error_list=$error_list"
|
||||||
|
test "X$error_list" = X;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
gmail_gmail() {
|
gmail_gmail_slash_in_foldername()
|
||||||
|
{
|
||||||
|
./imapsync --gmail1 --user1 imapsync.gl1@gmail.com --passfile1 ../../var/pass/secret.imapsync.gl1_gmail \
|
||||||
|
--gmail2 --user2 imapsync.gl2@gmail.com --passfile2 ../../var/pass/secret.imapsync.gl2_gmail \
|
||||||
|
--no-modulesversion --dry --justfolders
|
||||||
|
}
|
||||||
|
|
||||||
|
gmail_gmail()
|
||||||
|
{
|
||||||
! ping -c1 imap.gmail.com || $CMD_PERL ./imapsync \
|
! ping -c1 imap.gmail.com || $CMD_PERL ./imapsync \
|
||||||
--host1 imap.gmail.com \
|
--host1 imap.gmail.com \
|
||||||
--user1 gilles.lamiral@gmail.com \
|
--user1 gilles.lamiral@gmail.com \
|
||||||
@ -5636,9 +5656,37 @@ gmail_gmail() {
|
|||||||
--host2 imap.gmail.com \
|
--host2 imap.gmail.com \
|
||||||
--user2 imapsync.gl@gmail.com \
|
--user2 imapsync.gl@gmail.com \
|
||||||
--passfile2 ../../var/pass/secret.imapsync.gl_gmail \
|
--passfile2 ../../var/pass/secret.imapsync.gl_gmail \
|
||||||
--justfolders --exclude Gmail --exclude "blanc\ $"
|
--justfolders --exclude Gmail --exclude "blanc\ $"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gmail_gmail_exclude()
|
||||||
|
{
|
||||||
|
! ping -c1 imap.gmail.com || $CMD_PERL ./imapsync \
|
||||||
|
--host1 imap.gmail.com \
|
||||||
|
--user1 gilles.lamiral@gmail.com \
|
||||||
|
--passfile1 ../../var/pass/secret.gilles_gmail \
|
||||||
|
--host2 imap.gmail.com \
|
||||||
|
--user2 imapsync.gl@gmail.com \
|
||||||
|
--passfile2 ../../var/pass/secret.imapsync.gl_gmail \
|
||||||
|
--justfolders --exclude "/Trash"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
gmail_gmail_inet4() {
|
||||||
|
! ping -c1 imap.gmail.com || $CMD_PERL ./imapsync \
|
||||||
|
--host1 imap.gmail.com \
|
||||||
|
--user1 gilles.lamiral@gmail.com \
|
||||||
|
--passfile1 ../../var/pass/secret.gilles_gmail \
|
||||||
|
--host2 imap.gmail.com \
|
||||||
|
--user2 imapsync.gl@gmail.com \
|
||||||
|
--passfile2 ../../var/pass/secret.imapsync.gl_gmail \
|
||||||
|
--justlogin --inet4
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
gmail_gmail_ipv6() {
|
gmail_gmail_ipv6() {
|
||||||
|
|
||||||
! ping6 -c1 imap.gmail.com || $CMD_PERL ./imapsync \
|
! ping6 -c1 imap.gmail.com || $CMD_PERL ./imapsync \
|
||||||
|
Loading…
Reference in New Issue
Block a user