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
|
||||
Working file: imapsync
|
||||
head: 2.200
|
||||
head: 2.229
|
||||
branch:
|
||||
locks: strict
|
||||
gilles: 2.200
|
||||
gilles: 2.229
|
||||
access list:
|
||||
symbolic names:
|
||||
keyword substitution: kv
|
||||
total revisions: 1100; selected revisions: 1100
|
||||
total revisions: 1129; selected revisions: 1129
|
||||
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
|
||||
typo. "check the certificate server" => "check the server certificate."
|
||||
----------------------------
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/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
|
||||
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:
|
||||
|
||||
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 --delete1 if you want to move messages, instead of just copy/sync them.
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/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
|
||||
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
|
||||
|
||||
|
||||
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 failure is the primary failure with imapsync
|
||||
and since nothing tangible can be done without authentication,
|
||||
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.
|
||||
There are three parameters at each side:
|
||||
There are three parameters on each side:
|
||||
* triple check --host1
|
||||
* triple check --user1
|
||||
* 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 --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
|
||||
authenticate successfully with imapsync. Examine the parameters of
|
||||
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
|
||||
line parameters; it's the line after "Command line used:".
|
||||
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
|
||||
is dumped by --debugimap option. Search for a line like
|
||||
"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
|
||||
|
||||
The quickest trick may be to change the password temporally
|
||||
with easy characters like the classical alphabet, a long
|
||||
string still ensure strong security.
|
||||
with easy characters like the classical alphabet, one long
|
||||
string still ensures strong security.
|
||||
|
||||
* 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.
|
||||
So:
|
||||
* Try --authmech1 CRAM-MD5 (or --authmech2 CRAM-MD5)
|
||||
* Try --authmech1 PLAIN (or --authmech2 PLAIN)
|
||||
|
||||
* 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:
|
||||
|
||||
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.
|
||||
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
|
||||
a LOGIN "gilles.lamiral@gmail.com" "secret"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/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
|
||||
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
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -19,18 +19,49 @@ My current question is: Shall I use
|
||||
* N/2 4GB 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
|
||||
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
|
||||
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
|
||||
4 imapsync processes per GB is the limit before swapping to disk,
|
||||
which is a known phenomenum telling when memory becomes the bottleneck.
|
||||
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
|
||||
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
|
||||
@ -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
|
||||
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,
|
||||
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
|
||||
imapsync doesn't perform heavy I/0 where it runs. Well, I don't know,
|
||||
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
|
||||
$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
|
||||
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?
|
||||
|
||||
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
|
||||
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.
|
||||
|
||||
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.
|
||||
Homepage: http://caldavsynchronizer.org/
|
||||
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.
|
||||
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.
|
||||
|
||||
|
||||
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,
|
||||
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
|
||||
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:
|
||||
http://linux-france.tk/prj/imapsync_list/msg01797.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?
|
||||
|
||||
R. You can avoid synchronizing Calendar or Contacts folders with
|
||||
the --exclude option. First you have to search what is their
|
||||
exact name. The folders listing printed by imapsync at the
|
||||
the --exclude option. First, you have to search what is their
|
||||
exact name. The listing of folders printed by imapsync at the
|
||||
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"
|
||||
|
||||
@ -89,7 +89,7 @@ R. You can avoid synchronizing Calendar or Contacts folders with
|
||||
like "MyCalendarZ" or "TheContactsImDoneWith".
|
||||
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
|
||||
|
||||
On windows:
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/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
|
||||
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. 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
|
||||
"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?
|
||||
|
||||
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?
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/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
|
||||
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
|
||||
|
||||
=======================================================================
|
||||
Imapsync tip to empty an account.
|
||||
Imapsync tips about deletions.
|
||||
=======================================================================
|
||||
|
||||
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. Is there a way to delete the destination folders when the source
|
||||
folders are no longer there?
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
@ -128,5 +130,24 @@ Example:
|
||||
--host2 test.lamiral.info --user2 foo --password2 secret \
|
||||
--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
|
||||
$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
|
||||
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".
|
||||
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. 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:
|
||||
https://www.ci-solution.com/blog/artikel/ungelesen-geloescht-verhindern.html
|
||||
(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?
|
||||
|
||||
@ -305,7 +320,8 @@ You can try --nofilterflags straightaway without the
|
||||
"other thunderbird" proposal.
|
||||
|
||||
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
|
||||
$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
|
||||
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".
|
||||
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
|
||||
the host2 duplicates.
|
||||
|
||||
6) Cosmic rays...
|
||||
7) Cosmic rays...
|
||||
|
||||
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
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/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
|
||||
@ -570,20 +570,6 @@ In imapsync, you can achieve this by using the following options:
|
||||
--proxyauth1 \
|
||||
--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.
|
||||
Things like "X-migrated-from-foo: 20100617"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/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
|
||||
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 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
|
||||
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.
|
||||
|
||||
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:
|
||||
|
||||
1) "Access for less secure apps"
|
||||
2) "2-step verification"
|
||||
3) XOauth2 ready for groups on any OS or
|
||||
1) "App password with 2-step verification"
|
||||
|
||||
or
|
||||
|
||||
2) XOauth2 ready for groups on any OS or
|
||||
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
|
||||
|
||||
|
||||
1) "Access for less secure apps", the first way to authenticate
|
||||
to Gmail with Imapsync. This is the easiest way because
|
||||
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.
|
||||
1) "App password with 2-step verification" is the first way to
|
||||
authenticate to Gmail with Imapsync.
|
||||
|
||||
Go to
|
||||
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,
|
||||
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
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/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
|
||||
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 - 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
|
||||
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
|
||||
check the log file to see what would actually happen.
|
||||
|
||||
This type of copy keeps destination exactly like source (except, it doesn't
|
||||
copy duplicates), so use it ONLY before changing your MX to the new server,
|
||||
as it will delete whatever is in destination which isn't in source.
|
||||
This type of copy keeps destination exactly like source (except, it
|
||||
doesn't copy duplicates), so use it ONLY before changing your MX to
|
||||
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 \
|
||||
--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.
|
||||
|
||||
Another alternative for syncing after the MX change, which Lamiral
|
||||
suggests, involves deleting emails from source from the last day.
|
||||
I prefer the method explained above. Anyway, here is this other cenario...
|
||||
suggests, involves deleting emails from source from the last day. I
|
||||
prefer the method explained above. Anyway, here is this other
|
||||
scenario...
|
||||
|
||||
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.
|
||||
|
||||
--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.
|
||||
|
||||
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
|
||||
$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
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -14,7 +14,7 @@ Questions answered here are:
|
||||
|
||||
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.
|
||||
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. 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".
|
||||
Is this a potential problem when trying to sync multiple
|
||||
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?
|
||||
|
||||
R1. First you have to consider several periods. There is the global
|
||||
period, from when the migration process is decided to the final end
|
||||
R1. First, you have to consider several periods. There is the global
|
||||
period, from when the migration process is decided to the end,
|
||||
where all mailboxes are migrated. This global period can be divided
|
||||
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
|
||||
accounts, you measure how long it takes for one account under
|
||||
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, as they are, to the new accounts.
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
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
|
||||
(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).
|
||||
|
||||
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 100 transfers at a time, 1 TB will take 8 hours.
|
||||
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
|
||||
on the mailboxes already migrated to estimate the global end.
|
||||
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.
|
||||
|
||||
Following the same idea but using matematical garbage,
|
||||
Following the same idea but using mathematical garbage,
|
||||
the ETA can be estimated like this:
|
||||
t_0 = time of global start (the start of the first presync)
|
||||
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.
|
||||
|
||||
=======================================================================
|
||||
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
|
||||
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 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;
|
||||
etc.
|
||||
|
||||
Most of the times, the first column (host001_1, host002_1 ...) will
|
||||
contains the same value, the value of --host1 parameter. Same
|
||||
Most of the time, the first column (host001_1, host002_1 ...) will
|
||||
contain the same value, the value of --host1 parameter. Same
|
||||
thing for the third column (host001_2, host002_2).
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
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
|
||||
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
|
||||
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),
|
||||
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)
|
||||
|
||||
Another excellent tool to measure the network trafic is iftop.
|
||||
The following command will monitor imap and imaps connexions
|
||||
on interfce eth0, only them, and sum them up:
|
||||
Another excellent tool to measure the network traffic is iftop.
|
||||
The following command will monitor imap and imaps connections
|
||||
on interface eth0, only them, and sum them up:
|
||||
|
||||
iftop -i eth0 -f 'port imap or port imaps' -B # Linux
|
||||
iftop -i em0 -f 'port imap or port imaps' -B # FreeBSD
|
||||
|
||||
During iftop, press the h to see the display commands available,
|
||||
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 >
|
||||
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,
|
||||
get the overall network rate with the classical
|
||||
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
|
||||
task manager (Ctrl-Shift-Esc), there is a Network tab in it.
|
||||
@ -224,7 +227,7 @@ Here comes some measurements.
|
||||
transfer rate increase.
|
||||
|
||||
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.
|
||||
|
||||
@ -234,15 +237,15 @@ Q. How to determine where is the bottleneck in an imapsync process?
|
||||
|
||||
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:
|
||||
|
||||
1) run a sync from host1 to host1, with a host1 test account as destination.
|
||||
This way, only host1+link1 are tested, host2 is not directly concerned.
|
||||
1) run a sync from host1 to host1, with a host1 test account as the destination.
|
||||
This way, only host1 and link1 are tested, host2 is not directly concerned.
|
||||
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.
|
||||
This way, only host2+link2 are tested, host1 is not concerned.
|
||||
2) run a sync from host2 to host2, with a host2 test account as the destination.
|
||||
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 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
|
||||
|
||||
On any process involving several mechanisms, among all elements taking
|
||||
part on the process, there is always a bottleneck. No one knows in
|
||||
In any process involving several mechanisms, among all elements taking
|
||||
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
|
||||
determined, by measurements, not by guesses. Once this first
|
||||
bottleneck is known and overcome then the next bottleneck has to be
|
||||
determined and overcome too, if needed. Repeat the process of looking
|
||||
for the next bottleneck and its elimination until you estimate the
|
||||
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:
|
||||
|
||||
- Throttles.
|
||||
IMAP servers have artificial limits.
|
||||
For example Gmail, Office365, Exchange have throttle limits.
|
||||
For example, Gmail, Office365, and Exchange have throttle limits.
|
||||
|
||||
- Bandwidth.
|
||||
Usually available bandwidth is NOT a bottleneck.
|
||||
Meanwhile, it can be a bottleneck on small Internet connexions.
|
||||
Usually, the available bandwidth is not a bottleneck.
|
||||
Meanwhile, it can be a bottleneck on small Internet connections.
|
||||
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 are a classical bottleneck, almost always forgotten.
|
||||
- I/O, aka "Input/Output" on the disks of the imap servers.
|
||||
The I/O on disks are a classical bottleneck, almost always forgotten.
|
||||
Unlike CPU and RAM, Input/Output performances don't improve
|
||||
very much as time goes on so it's often a bottleneck.
|
||||
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
|
||||
--usecache or --useuid is used or with very big messages.
|
||||
|
||||
|
||||
- RAM memory.
|
||||
- RAM.
|
||||
On all sides, monitor that your systems don't swap its
|
||||
running processes on disk, because swapping running processes
|
||||
on disks decreases performance by a factor of 20, at least.
|
||||
@ -291,9 +294,8 @@ Possible bottlenecks:
|
||||
|
||||
- CPU.
|
||||
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
|
||||
with one of the imap servers.
|
||||
Most often CPU is not the real bottleneck, I/O are.
|
||||
CPU can be a problem with imapsync but it can also be a problem
|
||||
with one or both of the imap servers.
|
||||
|
||||
Other possible bottlenecks:
|
||||
- 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!
|
||||
|
||||
Q. Any performance issue?
|
||||
Q. Any performance issues?
|
||||
|
||||
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
|
||||
and the one running imapsync.
|
||||
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".
|
||||
Is this a potential problem when trying to sync multiple
|
||||
IMAP account in parallel?
|
||||
@ -346,7 +348,7 @@ by yourself.
|
||||
|
||||
This file can help you to manage multiple runs by sending signals
|
||||
to the processes (sigterm or sigkill) using their PID.
|
||||
Each run can have its own pid file with --pidfile option.
|
||||
Each run can have its pid file with --pidfile option.
|
||||
The file imapsync.pid contains the PID of the current imapsync process.
|
||||
This file is removed at the end of a normal run.
|
||||
You can safely ignore the warning if you don't use imapsync.pid file
|
||||
|
@ -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
|
||||
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"
|
||||
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,
|
||||
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
|
||||
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,
|
||||
is there a solution to fix that?
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/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
|
||||
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"
|
||||
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.
|
||||
|
||||
=====================================================================
|
||||
Q. Can I launch several imap synchronizations on the visual
|
||||
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.
|
||||
|
||||
=====================================================================
|
||||
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.
|
||||
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!
|
||||
|
||||
@ -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
|
||||
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
|
||||
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
|
||||
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:
|
||||
|
||||
+------------------------------------------+------------------------------------------+
|
||||
@ -203,7 +206,7 @@ https://imapsync.lamiral.info/examples/imapsync_example.sh
|
||||
Q. Shall I have issues with the browser timing out?
|
||||
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.
|
||||
|
||||
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
|
||||
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.
|
||||
|
||||
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"
|
||||
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
|
||||
|
||||
The issue looks related to special characters in the password.
|
||||
Solution for now: change the password, keep only standard (ASCII)
|
||||
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
|
||||
$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
|
||||
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 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 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"
|
||||
- In case of a new dependency, add it to all the INSTALL/* files.
|
||||
- Generate the README
|
||||
|
||||
make doc
|
||||
|
||||
- Run a spell checker on the README
|
||||
- Read the README again slowly. Fix all issues, all.
|
||||
- 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:
|
||||
m4 -P W/ml_announce.in.txt
|
||||
|
||||
- Update W/rsync_exclude_dist.txt
|
||||
- Update .gitignore
|
||||
- Update the file W/rsync_exclude_dist.txt
|
||||
- Update the file .gitignore
|
||||
|
||||
- Review the TODO file and mark done what is done.
|
||||
- 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
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -21,14 +21,15 @@ stateless.
|
||||
Each time imapsync runs, it considers messages and folders as if it
|
||||
were the first time it encounters them. Imapsync looks at messages,
|
||||
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
|
||||
between an account A and an account B?
|
||||
|
||||
The problem arises with deletions, messages deletions, folders
|
||||
deletions, or movings, messages movings across folders, folders
|
||||
movings, and also folders renamings. Deletions and moves are ambiguous
|
||||
deletions, or with moves, messages moves across folders, folders
|
||||
moves, and also folders renamings. Deletions and moves are ambiguous
|
||||
changes when combined with creations on the opposite side.
|
||||
|
||||
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
|
||||
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
|
||||
that has to be copied to A then run a sync from B to A.
|
||||
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.
|
||||
|
||||
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
|
||||
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
|
||||
to A, put the two accounts in a synchronized state. But deletions on
|
||||
either side get cancelled and folder renamings on either side bring
|
||||
messages duplicates.
|
||||
to A, put the two accounts in a synchronized state. The deletions of
|
||||
messages on either side get cancelled, deleted messages come back. A
|
||||
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
|
||||
$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
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -35,6 +35,23 @@ Details:
|
||||
so --delete2 is needed to sync the deletion.
|
||||
* 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:
|
||||
* adding folder => no problem, unless --delete2folders is used
|
||||
* deleting folder => will reappear by a new sync
|
||||
@ -42,5 +59,7 @@ Details:
|
||||
* deleting message => might reappear 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
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -64,7 +64,18 @@ Q. Synchronizing from XXX to Yahoo
|
||||
|
||||
R. Example:
|
||||
|
||||
On Linux:
|
||||
./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 \
|
||||
--user1 Billy@other.com \
|
||||
--password1 billysecreta \
|
||||
@ -73,6 +84,8 @@ R. Example:
|
||||
--password2 billysecretb \
|
||||
--regexmess "s{(?<![\n])\z}{\r\n}gxms"
|
||||
|
||||
|
||||
|
||||
You wonder why there is this ugly regex, what it does and where does it
|
||||
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
|
||||
|
||||
# $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:
|
||||
#
|
||||
# docker build -t gilleslamiral/imapsync .
|
||||
@ -64,6 +64,7 @@ RUN set -xe && \
|
||||
libparse-recdescent-perl \
|
||||
libmodule-scandeps-perl \
|
||||
libpar-packer-perl \
|
||||
libproc-processtable-perl \
|
||||
libreadonly-perl \
|
||||
libregexp-common-perl \
|
||||
libsys-meminfo-perl \
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/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
|
||||
https://imapsync.lamiral.info/INSTALL.d/
|
||||
@ -43,7 +43,8 @@ To install a more recent imapsync
|
||||
perl-Test-NoWarnings \
|
||||
perl-Test-Simple \
|
||||
perl-Test-Warn \
|
||||
perl-Sub-Uplevel
|
||||
perl-Sub-Uplevel \
|
||||
perl-Proc-ProcessTable
|
||||
|
||||
sudo cpanm Encode::IMAPUTF7
|
||||
wget -N https://imapsync.lamiral.info/imapsync
|
||||
@ -96,6 +97,7 @@ perl-Test-Requires \
|
||||
perl-Try-Tiny \
|
||||
perl-Unicode-String \
|
||||
perl-URI \
|
||||
perl-Proc-ProcessTable \
|
||||
cpanminus
|
||||
|
||||
sudo cpanm Authen::NTLM Data::Uniqid IO::Tee \
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/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
|
||||
https://imapsync.lamiral.info/INSTALL.d/
|
||||
@ -88,7 +88,8 @@ Other Perl modules, needed sometimes:
|
||||
JSON::WebToken::Crypt::RSA \
|
||||
Test::Mock::Guard \
|
||||
Test::Warn \
|
||||
PAR::Packer
|
||||
PAR::Packer \
|
||||
Proc::ProcessTable
|
||||
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/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
|
||||
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
|
||||
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
|
||||
chmod +x imapsync
|
||||
@ -132,6 +134,7 @@ Then:
|
||||
perl-Test-Simple \
|
||||
perl-Test-Warn \
|
||||
perl-Sub-Uplevel \
|
||||
perl-Proc-ProcessTable \
|
||||
ca-certificates
|
||||
|
||||
Also, run the following commands:
|
||||
@ -215,7 +218,8 @@ Then:
|
||||
perl-Test-Requires \
|
||||
perl-Test-Deep \
|
||||
perl-File-Tail \
|
||||
perl-Unicode-String
|
||||
perl-Unicode-String \
|
||||
install perl-Proc-ProcessTable
|
||||
|
||||
wget https://imapsync.lamiral.info/imapsync
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/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
|
||||
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 Sys::MemInfo
|
||||
cpanm File::Tail
|
||||
cpanm Proc::ProcessTable
|
||||
|
||||
cpanm Test::MockObject
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/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
|
||||
https://imapsync.lamiral.info/INSTALL.d/
|
||||
@ -81,6 +81,7 @@ apt install -y \
|
||||
libjson-webtoken-perl \
|
||||
libmail-imapclient-perl \
|
||||
libparse-recdescent-perl \
|
||||
libproc-processtable-perl \
|
||||
libmodule-scandeps-perl \
|
||||
libreadonly-perl \
|
||||
libregexp-common-perl \
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/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
|
||||
https://imapsync.lamiral.info/INSTALL.d/
|
||||
@ -78,6 +78,7 @@ RUN set -xe && \
|
||||
libparse-recdescent-perl \
|
||||
libmodule-scandeps-perl \
|
||||
libpar-packer-perl \
|
||||
libproc-processtable-perl \
|
||||
libreadonly-perl \
|
||||
libregexp-common-perl \
|
||||
libsys-meminfo-perl \
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/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
|
||||
https://imapsync.lamiral.info/INSTALL.d/
|
||||
@ -32,5 +32,8 @@ p5-Test-MockObject
|
||||
p5-CGI
|
||||
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
|
||||
# $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
|
||||
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"
|
||||
|
||||
|
||||
|
||||
=======================================================================
|
||||
Installation
|
||||
|
||||
@ -154,7 +153,11 @@ shouldn't install this imapsync service at all.
|
||||
=============================================================================
|
||||
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
|
||||
|
||||
This classical /cgi-bin directory is usually already configured
|
||||
@ -165,7 +168,9 @@ or
|
||||
|
||||
This configuration file contains the following section
|
||||
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/
|
||||
<Directory "/usr/lib/cgi-bin">
|
||||
@ -191,7 +196,7 @@ stuff with the following commands:
|
||||
|
||||
a2enmod cgi
|
||||
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
|
||||
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
|
||||
|
||||
You should end with something like:
|
||||
Exiting with return value 0 (EX_OK: successful termination)
|
||||
|
||||
Test that imapsync is considered a cgi with:
|
||||
|
||||
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:
|
||||
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.
|
||||
|
||||
|
||||
@ -264,6 +273,12 @@ Check
|
||||
or the safer
|
||||
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.
|
||||
|
||||
=============================================================================
|
||||
@ -352,15 +367,19 @@ while maintaining SELinux in enforcing mode.
|
||||
|
||||
Quick solution:
|
||||
|
||||
sestatus
|
||||
setenforce 0
|
||||
sestatus
|
||||
getsebool httpd_can_network_connect # should show --> off
|
||||
setsebool -P httpd_can_network_connect=1
|
||||
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:
|
||||
|
||||
setenforce 1
|
||||
sestatus
|
||||
|
||||
getsebool httpd_can_network_connect # should show --> on
|
||||
setsebool -P httpd_can_network_connect=0
|
||||
getsebool httpd_can_network_connect # should show --> off
|
||||
|
||||
|
||||
Nota bene
|
||||
=========
|
||||
@ -387,16 +406,18 @@ https://humdi.net/vnstat/
|
||||
Vnstat is already available as a package in most Linux distros.
|
||||
|
||||
The images are generated by the following commands, every minute:
|
||||
vnstati -s -o /var/www/vnstat/vnstat_s.png
|
||||
vnstati -h -o /var/www/vnstat/vnstat_h.png
|
||||
vnstati -hg -o /var/www/vnstat/vnstat_hg.png
|
||||
vnstati -hs -o /var/www/vnstat/vnstat_hs.png
|
||||
vnstati -d -o /var/www/vnstat/vnstat_d.png
|
||||
vnstati -m -o /var/www/vnstat/vnstat_m.png
|
||||
vnstati -y -o /var/www/vnstat/vnstat_y.png
|
||||
vnstati -t -o /var/www/vnstat/vnstat_t.png
|
||||
vnstati -vs -o /var/www/vnstat/vnstat_vs.png
|
||||
vnstati -5 -o /var/www/vnstat/vnstat_5.png
|
||||
vnstati -s -o /var/www/html/vnstat/vnstat_s.png
|
||||
vnstati -h -o /var/www/html/vnstat/vnstat_h.png
|
||||
vnstati -hg -o /var/www/html/vnstat/vnstat_hg.png
|
||||
vnstati -hs -o /var/www/html/vnstat/vnstat_hs.png
|
||||
vnstati -d -o /var/www/html/vnstat/vnstat_d.png
|
||||
vnstati -m -o /var/www/html/vnstat/vnstat_m.png
|
||||
vnstati -y -o /var/www/html/vnstat/vnstat_y.png
|
||||
vnstati -t -o /var/www/html/vnstat/vnstat_t.png
|
||||
vnstati -vs -o /var/www/html/vnstat/vnstat_vs.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:
|
||||
systemctl edit apache2
|
||||
|
||||
cat /etc/systemd/system/apache2.service.d/override.conf
|
||||
[Service]
|
||||
PrivateTmp=false
|
||||
|
||||
systemctl daemon-reload
|
||||
systemctl restart apache2
|
||||
systemctl status apache2
|
||||
|
||||
Centos:
|
||||
systemctl edit httpd
|
||||
|
||||
cat /etc/systemd/system/httpd.service.d/override.conf
|
||||
[Service]
|
||||
PrivateTmp=false
|
||||
|
||||
systemctl daemon-reload
|
||||
systemctl restart httpd
|
||||
systemctl status httpd
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/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
|
||||
https://imapsync.lamiral.info/INSTALL.d/
|
||||
@ -17,6 +17,7 @@ This command installs standard Ubuntu packages:
|
||||
sudo apt-get install \
|
||||
libauthen-ntlm-perl \
|
||||
libclass-load-perl \
|
||||
libcrypt-openssl-rsa-perl \
|
||||
libcrypt-ssleay-perl \
|
||||
libdata-uniqid-perl \
|
||||
libdigest-hmac-perl \
|
||||
@ -28,11 +29,13 @@ libio-compress-perl \
|
||||
libio-socket-inet6-perl \
|
||||
libio-socket-ssl-perl \
|
||||
libio-tee-perl \
|
||||
libjson-webtoken-perl \
|
||||
libmail-imapclient-perl \
|
||||
libmodule-scandeps-perl \
|
||||
libnet-dbus-perl \
|
||||
libnet-ssleay-perl \
|
||||
libpar-packer-perl \
|
||||
libproc-processtable-perl \
|
||||
libreadonly-perl \
|
||||
libregexp-common-perl \
|
||||
libsys-meminfo-perl \
|
||||
@ -58,11 +61,6 @@ the following command installs it "manually":
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
|
||||
# $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='
|
||||
App::cpanminus
|
||||
@ -39,6 +39,7 @@ Package::Stash::XS
|
||||
PAR::Packer
|
||||
Parse::RecDescent
|
||||
Pod::Usage
|
||||
Proc::ProcessTable
|
||||
Readonly
|
||||
Regexp::Common
|
||||
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
|
||||
|
||||
@ -109,8 +109,6 @@ VERSION: imapsync
|
||||
touch -r ./imapsync ./VERSION
|
||||
|
||||
|
||||
|
||||
|
||||
doc/GOOD_PRACTICES.html: doc/GOOD_PRACTICES.t2t
|
||||
txt2tags -i doc/GOOD_PRACTICES.t2t -t html --toc -o 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
|
||||
chmod 644 $(DESTDIR)$(PREFIX)/share/man/man1/imapsync.1
|
||||
|
||||
|
||||
|
||||
|
||||
###############
|
||||
# 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
|
||||
|
||||
|
||||
dailytests: linuxtests win32tests win64tests mactests
|
||||
|
||||
dailybuild: linuxbuild win32build win64build macbuild
|
||||
|
||||
linuxtests:
|
||||
./imapsync --tests
|
||||
|
||||
linuxtestsdebug:
|
||||
./imapsync --testsdebug
|
||||
|
||||
testsdebug: linuxtestsdebug win64testsdebug win32testsdebug mactestsdebug
|
||||
|
||||
testslive: mactestslive
|
||||
|
||||
|
||||
|
||||
|
||||
docker:
|
||||
@echo "make docker_copy_to_vp3 # copy imapsync Dockerfile memo_docker to vp3"
|
||||
@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
|
||||
|
||||
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
|
||||
echo | ci -l W/perlcritic_1.txt
|
||||
|
||||
@ -331,6 +343,7 @@ win32testsdebug:
|
||||
./W/check_winerr test_testsdebug.bat
|
||||
|
||||
|
||||
|
||||
.PHONY: W/*.bat examples/*
|
||||
|
||||
|
||||
@ -451,35 +464,48 @@ imapsync_32bit.exe: imapsync
|
||||
chmod a+r+x imapsync_32bit.exe
|
||||
(date "+%s"| tr "\n" " "; echo -n "END 32bit " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
|
||||
|
||||
win64tests: win64tests_p26
|
||||
|
||||
|
||||
win64tests:
|
||||
win64tests_p24:
|
||||
unix2dos W/test_tests.bat
|
||||
scp imapsync W/test_tests.bat pc_HP_DV7_p24:'Desktop/imapsync_build'
|
||||
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/test_tests.bat'
|
||||
./W/check_win64err test_tests.bat
|
||||
|
||||
win64testsdebug:
|
||||
win64testsdebug_p24:
|
||||
unix2dos W/test_testsdebug.bat
|
||||
scp imapsync W/test_testsdebug.bat pc_HP_DV7_p24:'Desktop/imapsync_build'
|
||||
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/test_testsdebug.bat'
|
||||
./W/check_win64err test_testsdebug.bat
|
||||
|
||||
|
||||
win64testsdebug: win64testsdebug_p26
|
||||
|
||||
win64testsdebug_p26:
|
||||
unix2dos W/test_testsdebug.bat
|
||||
scp imapsync W/test_testsdebug.bat gille@p26:'Desktop\imapsync_build'
|
||||
ssh gille@p26 'Desktop\imapsync_build\test_testsdebug.bat'
|
||||
scp imapsync W/test_testsdebug.bat gille@p26:'OneDrive\Bureau\imapsync_build'
|
||||
ssh gille@p26 'OneDrive\Bureau\imapsync_build\test_testsdebug.bat'
|
||||
./W/check_p26err test_testsdebug.bat
|
||||
|
||||
|
||||
win64tests_p26:
|
||||
unix2dos W/test_tests.bat
|
||||
scp imapsync W/test_tests.bat gille@p26:'Desktop\imapsync_build'
|
||||
ssh gille@p26 'Desktop\imapsync_build\test_tests.bat'
|
||||
scp imapsync W/test_tests.bat gille@p26:'OneDrive\Bureau\imapsync_build'
|
||||
ssh gille@p26 'OneDrive\Bureau\imapsync_build\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:
|
||||
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'
|
||||
@ -543,19 +569,46 @@ win64prepa: winprepalocal
|
||||
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/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'
|
||||
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/build_exe.bat'
|
||||
./W/check_win64err build_exe.bat
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
(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
|
||||
(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
|
||||
zip: dosify_bat cidone
|
||||
rm -rfv ../prepa_zip/imapsync_$(VERSION)/
|
||||
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)/
|
||||
@ -614,9 +649,9 @@ zip: dosify_bat
|
||||
mac: imapsync_bin_Darwin
|
||||
|
||||
macstadiumcopy:
|
||||
rsync -v 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 -v X/ administrator@macstadium.lamiral.info:X/
|
||||
rsync -pv imapsync W/build_mac.sh INSTALL.d/prerequisites_imapsync webserver administrator@macstadium.lamiral.info:
|
||||
rsync -pv examples/file.txt examples/sync_loop_darwin.sh administrator@macstadium.lamiral.info:examples/
|
||||
rsync -pv X/ administrator@macstadium.lamiral.info:X/
|
||||
|
||||
maccopy:
|
||||
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:
|
||||
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
|
||||
|
||||
bin: mac win
|
||||
@ -660,6 +705,10 @@ win32: imapsync_32bit.exe
|
||||
|
||||
win64: imapsync_64bit.exe
|
||||
|
||||
win32build: imapsync_32bit.exe
|
||||
|
||||
linuxbuild: lin
|
||||
|
||||
|
||||
$(BIN_NAME): 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
|
||||
rsync -P imapsync root@ks5.lamiral.info:/home/www/apache24/cgi-bin/imapsync_new
|
||||
curl -v --data 'testslive=1' https://imapsync.lamiral.info/cgi-bin/imapsync_new | grep 'Exiting with return value 0'
|
||||
rsync -P imapsync root@ks5.lamiral.info:/home/www/apache24/cgi-bin/imapsync
|
||||
curl -v --data 'testslive=1' https://imapsync.lamiral.info/cgi-bin/imapsync | grep 'Exiting with return value 0'
|
||||
upload_proximapsync:
|
||||
rcsdiff W/learn/proximapsync
|
||||
W/learn/proximapsync --tests
|
||||
W/learn/proximapsync --testslive | 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:
|
||||
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/
|
||||
|
||||
upload_cgi_memo_all:
|
||||
rsync -av X/cgi_memo root@ks5:/var/tmp/imapsync_cgi/
|
||||
rsync -av X/cgi_memo root@ks6:/var/tmp/imapsync_cgi/
|
||||
rsync -av X/cgi_memo root@vp3:/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@ks5:/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 X/stat_patterns.txt X/server_survey_patterns.txt root@ks7:/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
|
||||
upload_cgi_vp3: ci_imapsync vp3tests
|
||||
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
|
||||
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
|
||||
upload_cgi_vp4: ci_imapsync vp4tests
|
||||
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
|
||||
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
|
||||
upload_cgi_ks6: ci_imapsync ks6tests
|
||||
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
|
||||
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
|
||||
|
||||
@ -952,10 +1047,29 @@ ks6tests:
|
||||
ssh root@ks6.lamiral.info ./imapsync --tests
|
||||
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:
|
||||
./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
|
||||
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.js X/imapsync_form_wrapper.js
|
||||
./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/proximapsync_form_extra_free.html
|
||||
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
|
||||
rsync -a ./INSTALL.d/INSTALL.OnlineUI.txt ../imapsync_website/INSTALL.d/INSTALL.OnlineUI.txt
|
||||
rsync -av --delete X/ ../imapsync_website/X/
|
||||
@ -977,6 +1091,10 @@ upload_FAQ:
|
||||
rsync -avH --delete ./doc/ ../imapsync_website/doc/
|
||||
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:
|
||||
rsync -av W/memo gilles@ks.lamiral.info:public_html/imapsync/W/memo
|
||||
|
17
README
17
README
@ -6,7 +6,7 @@ NAME
|
||||
|
||||
VERSION
|
||||
|
||||
This documentation refers to Imapsync $Revision: 2.200 $
|
||||
This documentation refers to Imapsync $Revision: 2.229 $
|
||||
|
||||
USAGE
|
||||
|
||||
@ -225,7 +225,7 @@ OPTIONS
|
||||
It will be combined with the --user1 value to form the
|
||||
string to pass with XOAUTH2 authentication.
|
||||
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
|
||||
file containing the access token on the 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.
|
||||
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
|
||||
|
||||
@ -368,7 +369,7 @@ OPTIONS
|
||||
|
||||
2019_12_22_23_57_59_532 is nearly the date of the start
|
||||
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.
|
||||
|
||||
@ -617,7 +618,7 @@ OPTIONS
|
||||
Default is 120 and 0 means no timeout at all.
|
||||
|
||||
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
|
||||
for "Timeout" for how to deal with this issue.
|
||||
|
||||
@ -653,6 +654,12 @@ OPTIONS
|
||||
it's an http request to
|
||||
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.
|
||||
|
||||
--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">
|
||||
|
||||
<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="author" content="Gilles LAMIRAL" />
|
||||
<meta name="date" content="2016-04-10T00:24:15+0200" />
|
||||
@ -27,12 +27,13 @@
|
||||
<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>
|
||||
</h1>
|
||||
|
||||
<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!
|
||||
</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>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>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>
|
||||
(<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]
|
||||
@ -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>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>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
|
||||
(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>
|
||||
@ -246,7 +252,7 @@ alt="Viewable With Any Browser" />
|
||||
<!--#config timefmt="%D" -->
|
||||
<!--#config timefmt="%A %B %d, %Y" -->
|
||||
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
||||
($Id: imapservers.shtml,v 1.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>
|
||||
</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>
|
||||
<li><b>2.xxx</b></li>
|
||||
<li><b>2.230</b></li>
|
||||
<li><b>General</b>: </li>
|
||||
|
||||
<li><b>Dependencies removed</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>
|
||||
@ -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>CGI context</b>: </li>
|
||||
<li><b>CGI context</b>: </li>
|
||||
<li><b>CGI context</b>: </li>
|
||||
<li><b>CGI context</b>: </li>
|
||||
|
||||
</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>
|
||||
<li><b>2.200</b></li>
|
||||
<li><b>Dependencies removed</b>: None </li>
|
||||
@ -1039,7 +1068,7 @@ by ignoring PERMANENTFLAGS (Exchange tests)</li>
|
||||
<!--#config timefmt="%D" -->
|
||||
<!--#config timefmt="%A %B %d, %Y" -->
|
||||
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
||||
($Id: news.shtml,v 1.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>
|
||||
</p>
|
||||
</body></html>
|
||||
|
@ -41,7 +41,7 @@ to view details of this transaction (if you have a Paypal account).
|
||||
</p>
|
||||
|
||||
<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>
|
||||
|
||||
<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="%A %B %d, %Y" -->
|
||||
<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>
|
||||
|
||||
<script type="text/javascript" src="S/conversion_data.js">
|
||||
|
28
TODO
28
TODO
@ -1,5 +1,5 @@
|
||||
#!/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
|
||||
|
||||
@ -9,6 +9,24 @@ TODO file for imapsync
|
||||
|
||||
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
|
||||
Talk about size discrepencies.
|
||||
@ -76,7 +94,7 @@ to sync only the Sent folder.
|
||||
|
||||
SUGGESTED 2020_11_30 by Gilles
|
||||
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.
|
||||
|
||||
|
||||
@ -727,7 +745,7 @@ See https://metacpan.org/pod/Mail::IMAPClient#Keepalive
|
||||
|
||||
DONE revision 2.159 date: 2021/11/19 14:29:31
|
||||
SUGGESTED 2021_11_18 by Justas Umbrasas
|
||||
Add COMPRESS to imap connexions
|
||||
Add COMPRESS to imap connections
|
||||
--compress1 --compress2
|
||||
|
||||
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
|
||||
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.
|
||||
|
||||
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.
|
||||
Office365 and Exchange abort connexion
|
||||
Office365 and Exchange abort connection
|
||||
when they encounter a message with more than 10000 characters on a single line.
|
||||
Could be done with the previous --pipemess with reformime.
|
||||
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 $*/
|
||||
|
||||
@ -751,9 +751,6 @@ $(document).ready(
|
||||
|
||||
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_status_dbmon" ).collapse( "show" ) ;
|
||||
$( "#local_status_hetrix" ).collapse( "show" ) ;
|
||||
@ -762,7 +759,6 @@ $(document).ready(
|
||||
}
|
||||
else if ( "lamiral.info" === location.hostname )
|
||||
{
|
||||
|
||||
$( "#local_bandwidth" ).collapse( "show" ) ;
|
||||
$( "#local_status_dbmon" ).collapse( "show" ) ;
|
||||
$( "#local_status_hetrix" ).collapse( "show" ) ;
|
||||
|
@ -1,6 +1,6 @@
|
||||
<!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">
|
||||
|
||||
@ -323,8 +323,8 @@
|
||||
|
||||
<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">
|
||||
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>
|
||||
@ -418,8 +418,8 @@
|
||||
<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/7908dea8f3ff86eabdef6146307afd5f/414322.html">Imapsync Online Status</a>
|
||||
monitor page powered by the <a href="https://hetrixtools.com/uptime-monitor/414322.html">HetrixTools</a> company.
|
||||
<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>
|
||||
@ -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="#bottom" title="Bottom of the page" class="btn btn-info active" role="button">Bottom</a>
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<!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">
|
||||
|
||||
@ -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" >
|
||||
|
||||
<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">
|
||||
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">
|
||||
|
||||
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>
|
||||
monitor page powered by the <a href="https://hetrixtools.com/uptime-monitor/414322.html">HetrixTools</a> company.
|
||||
<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>
|
||||
@ -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="#bottom" title="Bottom of the page" class="btn btn-info active" role="button">Bottom</a>
|
||||
<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>
|
||||
</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 $*/
|
||||
|
||||
@ -19,7 +19,7 @@ $(document).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 test = {
|
||||
counter_all : 0 ,
|
||||
@ -51,8 +51,36 @@ $(document).ready(
|
||||
}
|
||||
$("#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"
|
||||
// or "ETA: unknown" or ""
|
||||
@ -77,8 +105,10 @@ $(document).ready(
|
||||
return "ETA: unknown" ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
function tests_last_eta()
|
||||
var tests_last_eta = function tests_last_eta()
|
||||
{
|
||||
is( "", last_eta( ), "last_eta: no args => empty string" ) ;
|
||||
|
||||
@ -252,7 +282,7 @@ $(document).ready(
|
||||
}
|
||||
else
|
||||
{
|
||||
slice_length = -240 ;
|
||||
slice_length = -2400 ;
|
||||
}
|
||||
slice_log = xhr.responseText.slice( slice_length ) ;
|
||||
eta_str = last_eta( slice_log ) ;
|
||||
@ -278,11 +308,13 @@ $(document).ready(
|
||||
return ;
|
||||
} ;
|
||||
|
||||
function refreshLog( xhr )
|
||||
var refreshLog = function refreshLog( xhr )
|
||||
{
|
||||
var eta_obj ;
|
||||
var eta_str ;
|
||||
|
||||
$( "#imapsync_current" ).load( "imapsync_current.txt" ) ;
|
||||
|
||||
eta_obj = extract_eta( xhr ) ;
|
||||
|
||||
progress_bar_update( eta_obj ) ;
|
||||
@ -290,25 +322,25 @@ $(document).ready(
|
||||
if ( xhr.readyState === 4 )
|
||||
{
|
||||
// end of sync
|
||||
$("#progress-txt").text(
|
||||
$("#progress-txt").text(
|
||||
"Ended. It remains "
|
||||
+ eta_obj.msgs_left + " messages to be synced" ) ;
|
||||
|
||||
$( "#output" ).text( xhr.responseText ) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
eta_str = eta_obj.str + " (refresh every " + refresh_interval_s + " s)" ;
|
||||
eta_str = eta_str.replace(/(\r\n|\n|\r)/gm, "") ; // trim newline
|
||||
//$("#tests").append( "refreshLog eta_str: " + eta_str + "\n" ) ;
|
||||
$("#progress-txt").text( eta_str ) ;
|
||||
|
||||
eta_str = eta_obj.str + " (refresh every " + refresh_interval_s + " s)" ;
|
||||
eta_str = eta_str.replace(/(\r\n|\n|\r)/gm, "") ; // trim newlines
|
||||
//$("#tests").append( "refreshLog eta_str: " + eta_str + "\n" ) ;
|
||||
$( "#progress-txt" ).text( eta_str ) ;
|
||||
var last_lines = last_x_lines( xhr.responseText.slice(-2000), -10)
|
||||
$( "#output" ).text( last_lines ) ;
|
||||
}
|
||||
|
||||
$( "#output" ).text( xhr.responseText ) ;
|
||||
}
|
||||
|
||||
|
||||
|
||||
function handleRun(xhr, timerRefreshLog)
|
||||
var handleRun = function handleRun(xhr, timerRefreshLog)
|
||||
{
|
||||
|
||||
$("#console").text(
|
||||
@ -319,15 +351,17 @@ $(document).ready(
|
||||
// var headers = xhr.getAllResponseHeaders();
|
||||
// $("#console").append(headers);
|
||||
// $("#console").append("See the completed log\n");
|
||||
$("#link_to_bottom").show() ;
|
||||
clearInterval( timerRefreshLog ) ;
|
||||
refreshLog( xhr ) ; // a last time
|
||||
// back to enable state for next run
|
||||
$("#bt-sync").prop("disabled", false) ;
|
||||
|
||||
$( "#imapsync_current" ).load( "imapsync_current.txt" ) ;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function imapsync()
|
||||
var imapsync = function imapsync()
|
||||
{
|
||||
var querystring = $("#form").serialize() ;
|
||||
$("#abort").text("\n\n") ; // clean abort console
|
||||
@ -351,6 +385,8 @@ $(document).ready(
|
||||
{
|
||||
querystring = querystring + "&office2=on" ;
|
||||
}
|
||||
|
||||
// querystring = querystring + "&tmphash=" + tmphash( ) ;
|
||||
|
||||
|
||||
var xhr ;
|
||||
@ -366,14 +402,14 @@ $(document).ready(
|
||||
handleRun( xhr, timerRefreshLog ) ;
|
||||
} ;
|
||||
|
||||
xhr.open( "POST", "/cgi-bin/imapsync", true ) ;
|
||||
xhr.open( "POST", "/cgi-bin/proximapsync", true ) ;
|
||||
xhr.setRequestHeader( "Content-type",
|
||||
"application/x-www-form-urlencoded" ) ;
|
||||
xhr.send( querystring ) ;
|
||||
}
|
||||
|
||||
|
||||
function handleAbort( xhr )
|
||||
var handleAbort = function handleAbort( xhr )
|
||||
{
|
||||
|
||||
$( "#abort" ).text(
|
||||
@ -388,7 +424,7 @@ $(document).ready(
|
||||
}
|
||||
}
|
||||
|
||||
function abort()
|
||||
var abort = function abort()
|
||||
{
|
||||
var querystring = $("#form").serialize() + "&abort=on";
|
||||
var xhr;
|
||||
@ -397,12 +433,12 @@ $(document).ready(
|
||||
{
|
||||
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.send(querystring);
|
||||
}
|
||||
|
||||
function store( id )
|
||||
var store = function store( id )
|
||||
{
|
||||
var stored ;
|
||||
//$( "#tests" ).append( "Eco: " + id + " type is " + $( id ).attr( "type" ) + "\n" ) ;
|
||||
@ -420,7 +456,7 @@ $(document).ready(
|
||||
return stored ;
|
||||
}
|
||||
|
||||
function retrieve( id )
|
||||
var retrieve = function retrieve( id )
|
||||
{
|
||||
var retrieved ;
|
||||
//$( "#tests" ).append( "Eco: " + id + " type is " + $( id ).attr( "type" ) + " length is " + $( id ).length + "\n" ) ;
|
||||
@ -438,7 +474,7 @@ $(document).ready(
|
||||
return retrieved ;
|
||||
}
|
||||
|
||||
function tests_store_retrieve()
|
||||
var tests_store_retrieve = function tests_store_retrieve()
|
||||
{
|
||||
if ( $("#tests").length !== 0 )
|
||||
{
|
||||
@ -479,7 +515,7 @@ $(document).ready(
|
||||
}
|
||||
|
||||
|
||||
function store_form()
|
||||
var store_form = function store_form()
|
||||
{
|
||||
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 )
|
||||
{
|
||||
@ -518,7 +554,7 @@ $(document).ready(
|
||||
}
|
||||
}
|
||||
|
||||
function retrieve_form()
|
||||
var retrieve_form = function retrieve_form()
|
||||
{
|
||||
if ( Storage !== "undefined" )
|
||||
{
|
||||
@ -555,14 +591,14 @@ $(document).ready(
|
||||
localStorage.account2_background_color ) ;
|
||||
}
|
||||
|
||||
// Show the extra parameters if they are not empty because it would be dangerous
|
||||
// to retrieve them without knowing
|
||||
// Show the extra parameters if they are not empty because it would
|
||||
// be dangerous to retrieve them without showing them
|
||||
show_extra_if_needed() ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function showpassword( id, button )
|
||||
var showpassword = function showpassword( id, button )
|
||||
{
|
||||
var x = document.getElementById( id );
|
||||
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
|
||||
$("#bt-sync").prop("disabled", false);
|
||||
$("#bt-abort").prop("disabled", false);
|
||||
$("#link_to_bottom").hide();
|
||||
$("#progress-bar-left").css( "width", 100 + "%" ).attr( "aria-valuenow", 100 ) ;
|
||||
|
||||
retrieve_form();
|
||||
|
||||
$("#showpassword1").click(
|
||||
function ( event )
|
||||
{
|
||||
@ -605,9 +698,9 @@ $(document).ready(
|
||||
$("#bt-sync").click(
|
||||
function ()
|
||||
{
|
||||
$( "#imapsync_current" ).load( "imapsync_current.txt" ) ;
|
||||
$("#bt-sync").prop("disabled", true) ;
|
||||
$("#bt-abort").prop("disabled", false) ;
|
||||
$("#link_to_bottom").hide() ;
|
||||
$("#progress-txt").text( "ETA: coming soon" ) ;
|
||||
store_form() ;
|
||||
imapsync() ;
|
||||
@ -617,9 +710,11 @@ $(document).ready(
|
||||
$("#bt-abort").click(
|
||||
function ()
|
||||
{
|
||||
$( "#imapsync_current" ).load( "imapsync_current.txt" ) ;
|
||||
$("#bt-sync").prop("disabled", true);
|
||||
$("#bt-abort").prop("disabled", true);
|
||||
abort();
|
||||
$( "#imapsync_current" ).load( "imapsync_current.txt" ) ;
|
||||
}
|
||||
);
|
||||
|
||||
@ -653,12 +748,29 @@ $(document).ready(
|
||||
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
|
||||
var nb_attended_test = 29 ;
|
||||
// attended number of tests: nb_attended_test
|
||||
|
||||
$("#tests").append( "1.." + test.counter_all + "\n" ) ;
|
||||
if ( test.counter_nok > 0 )
|
||||
{
|
||||
@ -681,22 +793,32 @@ $(document).ready(
|
||||
}
|
||||
} ;
|
||||
|
||||
function tests()
|
||||
var tests = function tests( nb_attended_test )
|
||||
{
|
||||
if ( $("#tests").length !== 0 )
|
||||
{
|
||||
tests_store_retrieve( ) ;
|
||||
tests_last_eta( ) ;
|
||||
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" ) ;
|
||||
tests_bilan( ) ;
|
||||
|
||||
tests_bilan( nb_attended_test ) ;
|
||||
|
||||
// If you want to always see the tests, uncomment the following
|
||||
// line
|
||||
//$("#tests").collapse("show") ;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
^Load end is
|
||||
^Load is
|
||||
^Load .*is
|
||||
^Server is on heavy load
|
||||
^Temp 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="#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/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/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>
|
||||
@ -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>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>
|
||||
|
||||
@ -470,88 +470,139 @@ Maybe one day those little crypto coins will be like gold? (I will like that!)
|
||||
</h2>
|
||||
|
||||
<!--
|
||||
gilles@i005:~/imapsync_stats 14$ date
|
||||
Tue Jan 12 12:01:08 CET 2021
|
||||
gilles@i005:~/imapsync_stats 43$ date
|
||||
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
|
||||
6261 stats_imapsync_2020_01.ip
|
||||
6660 stats_imapsync_2020_02.ip
|
||||
6727 stats_imapsync_2020_03.ip
|
||||
6362 stats_imapsync_2020_04.ip
|
||||
6841 stats_imapsync_2020_05.ip
|
||||
6195 stats_imapsync_2020_06.ip
|
||||
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 %
|
||||
==== % Operating systems in 2021
|
||||
Linux 66.70 %
|
||||
Win32 19.05 %
|
||||
Darwin 10.98 %
|
||||
FreeBSD 3.19 %
|
||||
Solaris .03 %
|
||||
OpenBSD .01 %
|
||||
Cygwin 0.00 %
|
||||
Unknown 0.00 %
|
||||
Other .01 %
|
||||
|
||||
==== Perl releases in 2020
|
||||
statistics_perl_from_files_cumul_percentage 48786 stats_imapsync_2020.ip
|
||||
5.10 2%
|
||||
==== Perl releases in 2021
|
||||
5.10 1%
|
||||
5.12 3%
|
||||
5.14 0%
|
||||
5.16 35%
|
||||
5.18 9%
|
||||
5.16 27%
|
||||
5.18 3%
|
||||
5.20 0%
|
||||
5.22 1%
|
||||
5.24 6%
|
||||
5.26 15%
|
||||
5.28 11%
|
||||
5.30 12%
|
||||
5.24 3%
|
||||
5.26 17%
|
||||
5.28 15%
|
||||
5.30 16%
|
||||
5.31 0%
|
||||
5.32 0%
|
||||
5.32 8%
|
||||
5.34 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
|
||||
230 1.957
|
||||
301 1.644
|
||||
361 1.484
|
||||
450 1.979
|
||||
745 1.997
|
||||
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
|
||||
==== Biggest users previous month
|
||||
875457 130.136.151.203.sta.inet.co.th "imapsync/2.148 (linux perl 5.26.3, 3.43 imapsync Standard)"
|
||||
994371 90.188.4-135.xdsl.ab.ru "imapsync/2.107 (linux perl 5.26.3, 3.43 imapsync Standard)"
|
||||
999072 41.72.193.38.liquidtelecom.net "imapsync/1.727 (linux perl 5.16.3, 3.37 imapsync)"
|
||||
1040081 62.94.96.164 "imapsync/1.727 (linux perl 5.16.3, 3.37 imapsync)"
|
||||
1098073 srv.saiu.it "imapsync/1.727 (linux perl 5.16.3, 3.37 imapsync)"
|
||||
|
||||
==== 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
|
||||
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
|
||||
48103 stats_imapsync_2019.ip
|
||||
49562 stats_imapsync_2020.ip
|
||||
3273 stats_imapsync_2021.ip
|
||||
390881 total
|
||||
51639 stats_imapsync_2021.ip
|
||||
19442 stats_imapsync_2022.ip
|
||||
458689 total
|
||||
|
||||
==== Nb runs each year :
|
||||
2010: 0
|
||||
@ -579,37 +631,35 @@ statistics_perl_from_files_cumul_percentage 48786 stats_imapsync_2020.ip
|
||||
2018: 108047481
|
||||
2019: 158971132
|
||||
2020: 135913391
|
||||
2021: 4428153
|
||||
|
||||
2021~~134689380
|
||||
|
||||
Done 2021/01/18
|
||||
2021: 161230929
|
||||
2022: 47853753
|
||||
|
||||
2022~~172936635
|
||||
-->
|
||||
|
||||
<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!
|
||||
</li>
|
||||
|
||||
<li>9 M to 16 M mailboxes transfers per month during 2020.</li>
|
||||
<li><b>136 M</b> transfers for 2020,
|
||||
that is <b>4 whole mailboxes completely synced each second</b> on average (136*10^6/365/24/3600 ~ 4),
|
||||
and an estimation of <b>60 Petabytes transferred in 2020</b> ( 1 PiB = 2^50 bytes = 1024^5 ~ 10^15),
|
||||
<li>10 M to 18 M mailboxes transfers per month during 2021.</li>
|
||||
<li><b>161 M</b> transfers for 2021,
|
||||
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>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).
|
||||
60 Petabytes = 500*10^6*136*10^6. The 2020 global internet traffic was 2580 Exabytes
|
||||
(2580 ~ <a href="https://en.wikipedia.org/wiki/Internet_traffic#Global_Internet_traffic">(174+41)</a> * 12 )
|
||||
(1 EiB = 2^60 bytes = 1024^6 ~ 10^18) so imapsync is a very very tiny thing (23 per million, 60/2580000).
|
||||
69 Petabytes = 480*10^6*161*10^6. The 2021 global internet traffic was 2580 Exabytes
|
||||
(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 (21 per million, 69/3312000).
|
||||
</li>
|
||||
<li>
|
||||
Let's see it another way, imapsync did 136 M transfers for 2020,
|
||||
that's nearly <b>492 M email messages transferred every day</b> (136*1325/366)
|
||||
taking a mean of 1325 messages per transfer (an estimated mean given by online /X real stats).
|
||||
Let's see it another way, imapsync did 161 M transfers for 2021,
|
||||
that's nearly <b>611 M email messages transferred every day</b> (161*1388/366)
|
||||
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
|
||||
<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...).
|
||||
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>
|
||||
@ -617,16 +667,16 @@ See the Wikipedia <a href="https://en.wikipedia.org/wiki/Byte#Multiple-byte_unit
|
||||
</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>
|
||||
<li><b>Linux: 68%</b></li>
|
||||
<li><b>Win32: 18%</b></li>
|
||||
<li><b>Darwin: 12%</b></li>
|
||||
<li><b>FreeBSD: 1.43%</b></li>
|
||||
<li>Solaris: 0.02%</li>
|
||||
<li>OpenBSD: 0.03%</li>
|
||||
<li><b>Linux: 67%</b></li>
|
||||
<li><b>Win32: 19%</b></li>
|
||||
<li><b>Darwin: 11%</b></li>
|
||||
<li><b>FreeBSD: 3.19%</b></li>
|
||||
<li>Solaris: 0.03%</li>
|
||||
<li>OpenBSD: 0.01%</li>
|
||||
<li>Other: 0.01%</li>
|
||||
<li>Cygwin: 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>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>
|
||||
<li><b>Windows 70%</b></li>
|
||||
<li><b>Macintosh 23%</b></li>
|
||||
<li><b>Windows 71%</b></li>
|
||||
<li><b>Macintosh 22%</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>
|
||||
</li>
|
||||
|
||||
@ -869,6 +923,7 @@ you some struggling hours later</b>, believe me. So read the three columns main
|
||||
</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.iCloud.txt">iCloud</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.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="%A %B %d, %Y" -->
|
||||
<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>
|
||||
</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?
|
||||
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:
|
||||
|
||||
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%
|
||||
3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=https%3A%2F%2Fmail.google.com%2F
|
||||
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
|
||||
|
||||
|
||||
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
|
||||
|
||||
# $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
|
||||
# with several accounts. And be on Linux or Unix.
|
||||
@ -3604,7 +3604,7 @@ ll_useheader_noheader()
|
||||
--passfile2 ../../var/pass/secret.titi \
|
||||
--folder INBOX.yop.yap \
|
||||
--useheader 'NoExist' \
|
||||
--debug --delete2
|
||||
--debug --delete2 --addheader
|
||||
echo 'rm /home/vmail/titi/.yop.yap/cur/*'
|
||||
}
|
||||
|
||||
@ -5528,11 +5528,12 @@ easygmail_gmail1_gmail2() {
|
||||
--justfolders
|
||||
}
|
||||
|
||||
easygmail_gmail2() {
|
||||
easygmail_gmail2()
|
||||
{
|
||||
$CMD_PERL ./imapsync \
|
||||
--user1 gilles.lamiral@gmail.com \
|
||||
--passfile1 ../../var/pass/secret.gilles_gmail \
|
||||
--host1 imap.gmail.com --ssl1 \
|
||||
--host1 imap.gmail.com \
|
||||
--gmail2 \
|
||||
--user2 imapsync.gl@gmail.com \
|
||||
--passfile2 ../../var/pass/secret.imapsync.gl_gmail \
|
||||
@ -5611,7 +5612,6 @@ all_login_tests()
|
||||
}
|
||||
|
||||
|
||||
|
||||
gmail_glX_all_justlogin()
|
||||
{
|
||||
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 \
|
||||
--host1 imap.gmail.com \
|
||||
--user1 gilles.lamiral@gmail.com \
|
||||
@ -5636,9 +5656,37 @@ gmail_gmail() {
|
||||
--host2 imap.gmail.com \
|
||||
--user2 imapsync.gl@gmail.com \
|
||||
--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() {
|
||||
|
||||
! ping6 -c1 imap.gmail.com || $CMD_PERL ./imapsync \
|
||||
|
Loading…
Reference in New Issue
Block a user