diff --git a/CREDITS b/CREDITS index bbf7e08..fe82a83 100644 --- a/CREDITS +++ b/CREDITS @@ -1,5 +1,5 @@ #!/bin/cat -# $Id: CREDITS,v 1.190 2017/01/25 23:58:21 gilles Exp gilles $ +# $Id: CREDITS,v 1.191 2018/04/08 17:27:58 gilles Exp gilles $ If you want to make a donation to me, imapsync author, Gilles LAMIRAL, use any of the following ways: @@ -8,12 +8,12 @@ b) If you can read french, please use the following wishlist : http://amazon.fr/gp/registry/wishlist/37RZF7PPCD7YL (books will be send with free postal cost) -c) my paypal account is gilles.lamiral@laposte.net +c) my paypal account is gilles@lamiral.info http://imapsync.lamiral.info/S/paypal.shtml My postal address is: Gilles LAMIRAL -La Billais +22 La Billais 35580 Baulon FRANCE diff --git a/ChangeLog b/ChangeLog index a4c54b6..0d937e6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,17 +1,237 @@ RCS file: RCS/imapsync,v Working file: imapsync -head: 1.836 +head: 1.882 branch: locks: strict - gilles: 1.836 + gilles: 1.882 access list: symbolic names: keyword substitution: kv -total revisions: 836; selected revisions: 836 +total revisions: 882; selected revisions: 882 description: ---------------------------- -revision 1.836 locked by: gilles; +revision 1.882 locked by: gilles; +date: 2018/05/05 21:10:43; author: gilles; state: Exp; lines: +8 -8 +typo +---------------------------- +revision 1.881 +date: 2018/05/05 20:43:36; author: gilles; state: Exp; lines: +96 -61 +proofread the doc part. ispell on README. +---------------------------- +revision 1.880 +date: 2018/05/05 12:44:21; author: gilles; state: Exp; lines: +26 -21 +Splitted sub usage() with call to sub mypod2usage(). Crit level 4 on open/close not far away. +---------------------------- +revision 1.879 +date: 2018/04/20 13:02:13; author: gilles; state: Exp; lines: +20 -13 +Back to `` because of backtick() does not work always on Darwin +---------------------------- +revision 1.878 +date: 2018/04/19 00:51:45; author: gilles; state: Exp; lines: +76 -40 +Perlcrit. Removed the select in teelaunch() +Perlcrit. *STDERR change is now localized. +Perlcrit. Hard 'LOG_imapsync' is now $DEFAULT_LOGDIR +Proxy mode. Log file will be named with a suffix "_remote.txt" +Refactor. sub logfile() is deglobalized. (removed $debug lines) +---------------------------- +revision 1.877 +date: 2018/04/18 22:00:46; author: gilles; state: Exp; lines: +31 -13 +Changed sub myprint and sub myprintf in order to suppress the select in teelaunch +---------------------------- +revision 1.876 +date: 2018/04/18 03:02:32; author: gilles; state: Exp; lines: +20 -17 +Bugfix. ARRAY ref not defined with --subscribed +---------------------------- +revision 1.875 +date: 2018/04/18 02:27:18; author: gilles; state: Exp; lines: +32 -25 +Refactor. $tmpdir unglobalized +Win32. No USR1 on Windows so skip signals tests on Win32 +---------------------------- +revision 1.874 +date: 2018/04/18 00:46:46; author: gilles; state: Exp; lines: +53 -40 +Perlcrit. Use IPC::Open3::open3 instead of backticks `` +---------------------------- +revision 1.873 +date: 2018/04/17 00:24:54; author: gilles; state: Exp; lines: +9 -9 +Added SERVER_SOFTWARE +Added SERVER_PORT +---------------------------- +revision 1.872 +date: 2018/04/16 23:10:03; author: gilles; state: Exp; lines: +17 -11 +Bugfix to pass --tests under root user. +---------------------------- +revision 1.871 +date: 2018/04/13 18:00:06; author: gilles; state: Exp; lines: +71 -12 +Added toggle sleep from 2s to 0s with signal USR1 +---------------------------- +revision 1.870 +date: 2018/04/08 17:25:54; author: gilles; state: Exp; lines: +46 -46 +Changed gilles.lamiral@laposte.net => gilles@lamiral.info +---------------------------- +revision 1.869 +date: 2018/04/08 17:21:15; author: gilles; state: Exp; lines: +29 -30 +https://imapsync.lamiral.info/ instead of http://imapsync.lamiral.info/ in ID support-url +Removed uname info from banner, adder ram info. +Change utf8 char ° to nb in tests summary +---------------------------- +revision 1.868 +date: 2018/04/03 01:55:24; author: gilles; state: Exp; lines: +13 -12 +Renamed total_ram_memory() => ram_memory_info() +---------------------------- +revision 1.867 +date: 2018/04/03 00:35:58; author: gilles; state: Exp; lines: +21 -18 +Refactor. sub under_cgi_context() uses $mysync. +---------------------------- +revision 1.866 +date: 2018/03/29 04:58:11; author: gilles; state: Exp; lines: +10 -9 +Changed inline signal message +---------------------------- +revision 1.865 +date: 2018/03/29 04:50:26; author: gilles; state: Exp; lines: +98 -86 +Moved the inline help "I am asked to stop immediately" after the final stats. +Tidied up sub myGetOptions() +---------------------------- +revision 1.864 +date: 2018/03/28 21:33:28; author: gilles; state: Exp; lines: +12 -18 +Before tidy up sub myGetOptions +---------------------------- +revision 1.863 +date: 2018/03/28 16:57:22; author: gilles; state: Exp; lines: +10 -8 +Added inline advice to resync after an end commanded by a TERM or QUIT signal. +---------------------------- +revision 1.862 +date: 2018/03/28 14:48:37; author: gilles; state: Exp; lines: +21 -20 +Reduced the loadavg ingo in the header status in CGI context. +Added the hostname in in the header status in CGI context. +---------------------------- +revision 1.861 +date: 2018/03/27 03:04:03; author: gilles; state: Exp; lines: +41 -48 +Refactor. Use of debugmemory() +Moved the hostname printing at first line. The goal is for clarity when in proxy mode. +Added free RAM info in the banner +Added free RAM and total RAM in the status in CGI context. +---------------------------- +revision 1.860 +date: 2018/03/26 21:14:01; author: gilles; state: Exp; lines: +97 -67 +Reviewed tests_get_options_cgi(), renamed to tests_get_options_cgi_context() +Reviewed tests_get_options +---------------------------- +revision 1.859 +date: 2018/03/22 12:55:34; author: gilles; state: Exp; lines: +13 -8 +Bugfix. Predeclare $sync->{folder} as ARRAY ref. $sync->{folder} = [] ; +---------------------------- +revision 1.858 +date: 2018/03/21 07:53:26; author: gilles; state: Exp; lines: +14 -11 +Refactoring. Deglobalized $justconnect +---------------------------- +revision 1.857 +date: 2018/03/21 07:40:12; author: gilles; state: Exp; lines: +80 -31 +Refactor. Changed how --f1f2 is handled. Was a hash, now a list. +---------------------------- +revision 1.856 +date: 2018/03/20 02:24:52; author: gilles; state: Exp; lines: +31 -19 +Refactoring. Deglobalized @folder +---------------------------- +revision 1.855 +date: 2018/03/19 14:15:53; author: gilles; state: Exp; lines: +18 -21 +Refactoring. Deglobalized $addheader +Refactoring. Deglobalized $justlogin +---------------------------- +revision 1.854 +date: 2018/03/19 13:45:31; author: gilles; state: Exp; lines: +32 -25 +Unglobalized $version +Unglobalized $releasecheck +Added sub debugmemory() +---------------------------- +revision 1.853 +date: 2018/03/12 13:43:11; author: gilles; state: Exp; lines: +9 -9 +Back to default signals. INT => reconnect. TERM or QUIT => stats and exit. (cgicontext ignored TERM) +---------------------------- +revision 1.852 +date: 2018/03/12 03:11:04; author: gilles; state: Exp; lines: +132 -29 +Added --sigexit; For example --sigexit QUIT --sigexit TERM to exit when receiving QUIT or TERM signals. +Added --sigreconnect. For example --sigreconnect INT to reconnect to both imap servers when receiving INT signal. +Added --sigignore. For example --sigignore TERM to "ignore" the TERM signal. In fact print stats during the sync. +Default is like: --sigexit QUIT --sigexit TERM --sigreconnect INT + +Added sub sig_install() to install any behavior with any signal (the ones actually received in Unix). +Number of tests with --tests is 1137 +---------------------------- +revision 1.851 +date: 2018/03/04 15:19:04; author: gilles; state: Exp; lines: +10 -10 +Inline help. Clarified --errorsmax inline help. +---------------------------- +revision 1.850 +date: 2018/02/21 04:15:32; author: gilles; state: Exp; lines: +66 -41 +Option --abort now creates a log too, in order to see if imapsync ends by signal come from --abort or something else. +---------------------------- +revision 1.849 +date: 2018/02/18 18:45:36; author: gilles; state: Exp; lines: +14 -10 +Added \t\r\n characters replaced by _ in sub filter_forbidden_characters() +---------------------------- +revision 1.848 +date: 2018/02/07 00:58:59; author: gilles; state: Exp; lines: +50 -28 +Cleaned up --releasecheck stuff. +Clarified SSL_VERIFY_NONE default. +---------------------------- +revision 1.847 +date: 2017/12/18 11:04:26; author: gilles; state: Exp; lines: +56 -33 +Bugfix. Fixed sub epoch() to allow that kind of silly INTERNALDATE 00-Jan-0000 00:00:00 +0000 +(Thanks to IBM Domino...) +Added inline documentation about --releasecheck and --noreleasecheck +Default upstream is still --releasecheck. Just a line to change to have --noreleasecheck by default (as before) +Bugfix. --releasecheck on was hardcoded in cgi context. Now it depends on the default behavior chosen. +Bug pending. Still have to fix --releasecheck on with --help +---------------------------- +revision 1.846 +date: 2017/11/30 02:00:12; author: gilles; state: Exp; lines: +34 -12 +Added sub memory_stress +Added sub tests_memory_stress +memory_stress() crunch 3/4 of the RAM. +tests_memory_stress() is the associated test. +---------------------------- +revision 1.845 +date: 2017/11/28 23:36:43; author: gilles; state: Exp; lines: +51 -29 +Added --noresyncflags : Do not resync flags for already transfered messages. +May be useful when a user has already started to play with its host2 account. +---------------------------- +revision 1.844 +date: 2017/11/16 14:38:38; author: gilles; state: Exp; lines: +107 -43 +Crit. Removed 4 "Warnings disabled". crit level 4 +---------------------------- +revision 1.843 +date: 2017/11/05 22:23:57; author: gilles; state: Exp; lines: +38 -30 +Added --nocheckfoldersexist ( Default is like --checkfoldersexist ) +---------------------------- +revision 1.842 +date: 2017/10/30 18:47:37; author: gilles; state: Exp; lines: +246 -115 +Refactoring. Removed global variables $h1_prefix and $h2_prefix +Bugfix. cpu_number() returns always an integer >= 1. +---------------------------- +revision 1.841 +date: 2017/10/27 12:37:39; author: gilles; state: Exp; lines: +55 -41 +Detect extra arguments. Meaning usually a quoting issue in the command line, options not well parsed. +---------------------------- +revision 1.840 +date: 2017/10/22 14:28:00; author: gilles; state: Exp; lines: +9 -9 +No limitssssss +---------------------------- +revision 1.839 +date: 2017/10/04 17:50:29; author: gilles; state: Exp; lines: +132 -39 +In case the pidfile already exists, remove it if no process match its content. +Do nothing if the pidfile doesn't content a pid number 0 +email at Put a useful title with word "imapsync" in it: my spam filters won't filter it. diff --git a/FAQ.d/FAQ.SSL_errors.txt b/FAQ.d/FAQ.SSL_errors.txt index 64fa665..1602ea3 100644 --- a/FAQ.d/FAQ.SSL_errors.txt +++ b/FAQ.d/FAQ.SSL_errors.txt @@ -1,5 +1,5 @@ #!/bin/cat -$Id: FAQ.SSL_errors.txt,v 1.1 2017/05/24 19:16:40 gilles Exp gilles $ +$Id: FAQ.SSL_errors.txt,v 1.5 2018/04/25 17:58:12 gilles Exp gilles $ This documentation is also at http://imapsync.lamiral.info/#doc @@ -7,23 +7,26 @@ This documentation is also at http://imapsync.lamiral.info/#doc Imapsync SSL errors ===================================================== -Questions anwswered in this FAQ are: +Questions answered in this FAQ are: Q. What are the errors DEBUG: .../IO/Socket/SSL.pm:1165: local error: SSL write error or DEBUG: .../IO/Socket/SSL.pm:1088: local error: SSL read error - Q. What can I do to avoid those "SSL read/write errors"? +Q. SSL connect attempt failed SSL + routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure + ======================================================================= Q. What are the errors DEBUG: .../IO/Socket/SSL.pm:1165: local error: SSL write error or DEBUG: .../IO/Socket/SSL.pm:1088: local error: SSL read error -R. Like they claim, those errors are SSL errors. SSL is not directly + +R1.Like they claim, those errors are SSL errors. SSL is not directly done by imapsync but by an underlying Perl module called IO::Socket::SSL. Those errors arise sometimes and sometimes they form a serie that ends with imapsync auto-abortion. @@ -35,6 +38,9 @@ R. Like they claim, those errors are SSL errors. SSL is not directly ======================================================================= Q. What can I do to avoid those "SSL read/write errors"? +R0. Windows users: upgrade to imapsync.exe release 1.836 (or next ones) + Those errors don't appear with recent releases, post 1.836 + R1. Remove all ssl/tls encryption imapsync ... --nossl1 --notls1 --nossl2 --notls2 @@ -48,9 +54,28 @@ R3. Run imapsync on a Linux machine, a VM is ok, there are less SSL errors on Unix. R4. Use https://imapsync.lamiral.info/X/ - It's a Linux host so R3 applies there. + It's a Linux host so response R3 applies there. R5. Set up a ssltunnel proxy to the host. - Read the file FAQ.Security.txt + Read the file FAQ.Security.txt for an example to set up + a ssltunnel proxy. + +======================================================================= +Q. SSL connect attempt failed SSL + routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure + +R. Use: + + imapsync ... --sslargs1 'SSL_cipher_list=DEFAULT' + or + imapsync ... --sslargs2 'SSL_cipher_list=DEFAULT' + + depending on where the error occurs, host1 or host2 or both. + +======================================================================= +======================================================================= +======================================================================= + + + -======================================================================= \ No newline at end of file diff --git a/FAQ.d/FAQ.Use_cache.txt b/FAQ.d/FAQ.Use_cache.txt index ef77939..05edd38 100644 --- a/FAQ.d/FAQ.Use_cache.txt +++ b/FAQ.d/FAQ.Use_cache.txt @@ -1,5 +1,5 @@ -$Id: FAQ.Use_cache.txt,v 1.4 2017/02/14 17:35:22 gilles Exp gilles $ +$Id: FAQ.Use_cache.txt,v 1.6 2018/03/07 04:12:37 gilles Exp gilles $ This documentation is also at http://imapsync.lamiral.info/#doc @@ -7,13 +7,13 @@ This documentation is also at http://imapsync.lamiral.info/#doc Imapsync --usecache option ============================================ -Questions anwswered in this FAQ are: +Questions answered in this FAQ are: Q. On Windows, with --useuid or --usecache a problem occurs with long nested folder names. The error message is: "No such file or directory; The filename or extension is too long" -Q. Inode problem with --usecache on Linux +Q. Inode problem with --usecache or --useuid on Linux Questions and their answers: @@ -68,7 +68,7 @@ Fixing this long path problem directly in imapsync is in the TODO file for a very long time. ======================================================================= -Q. Inode problem with --usecache on Linux +Q. Inode problem with --usecache or --useuid on Linux R. You may run out of inodes using --usecache, especially with large migration. Option --usecache creates a empty file per email message diff --git a/FAQ.d/FAQ.User_Concurrent_Access.txt b/FAQ.d/FAQ.User_Concurrent_Access.txt index 34ef0eb..a7bff9c 100644 --- a/FAQ.d/FAQ.User_Concurrent_Access.txt +++ b/FAQ.d/FAQ.User_Concurrent_Access.txt @@ -1,5 +1,5 @@ #!/bin/cat -$Id: FAQ.User_Concurrent_Access.txt,v 1.2 2017/01/06 14:11:13 gilles Exp gilles $ +$Id: FAQ.User_Concurrent_Access.txt,v 1.4 2017/12/19 14:55:36 gilles Exp gilles $ This documentation is also at http://imapsync.lamiral.info/#doc @@ -14,23 +14,30 @@ R. Think all potential problems with a sync between a master/source/host1 and a slave/destination/host2 What happens when a user access syncing accounts depends -on what he does, where he does and when: +on what he does, where he does and when. -* Reading: no problem anywhere, anytime. +As a summary, reading is safe, writing/deleting is not. + +Details: + +* Reading: no problem anywhere, at source/host1 or at destination/host2, + anytime. Reading is safe. * Writing at source/host1: - * adding folder => will need a resync after - * deleting folder => deletion not synced unless --delete2folders - * deleting message => deletion not synced unless --delete2 - * adding message => will need a resync + * adding folder => will need a resync after + * deleting folder => folders deletions are not synced unless --delete2folders + * deleting message => messages deletions are not synced unless --delete2 + * adding message => will need a resync + * moving message => will need a resync. Moving is like adding + deleting + so --delete2 is needed to sync the deletion. * message flag change => will need a resync * Writing at destination/host2: - * adding folder => no problem, unless --delete2folders is used - * deleting folder => might reappear by the sync - * adding message => no problem, unless --delete2 is used - * deleting message => might reappear by the sync - * message flag change => might be canceled by the sync + * adding folder => no problem, unless --delete2folders is used + * deleting folder => will reappear by a new sync + * adding message => no problem, unless --delete2 is used on next sync. + * deleting message => might reappear by a new sync. + * message flag change => will be reseted by a new sync. ======================================================================= ======================================================================= \ No newline at end of file diff --git a/FAQ.d/FAQ.Virus.txt b/FAQ.d/FAQ.Virus.txt index 6932aed..c69fc0a 100644 --- a/FAQ.d/FAQ.Virus.txt +++ b/FAQ.d/FAQ.Virus.txt @@ -1,5 +1,5 @@ -$Id: FAQ.Virus.txt,v 1.2 2017/07/03 19:30:19 gilles Exp gilles $ +$Id: FAQ.Virus.txt,v 1.4 2018/03/21 16:18:53 gilles Exp gilles $ This documentation is also at http://imapsync.lamiral.info/#doc @@ -11,7 +11,7 @@ This documentation is also at http://imapsync.lamiral.info/#doc Q. My virus scanner claims imapsync.exe is a virus/malware/trojan etc. What the hell? -R. Yes, I found the same. Two antivirus, Baidu and Jiangmin, report that +R1. Yes, I found the same. Two antivirus, Baidu and Jiangmin, report that imapsync might have a trojan in it. All others virus scanner say imapsync.exe is ok. I've done this test on imapsync.exe release 1.727 on the two following @@ -26,9 +26,18 @@ R2. Explanation: https://imapsync.lamiral.info/#NUMBERS Any other explanation is welcome! - + + R3. There is no virus alerts reported for the Perl script imapsync itself. The binary imapsync.exe is just a compiled version of the script imapsync, with perl interpreter itself and all modules - needed by imapsync in order to make imapsync.exe a standalone software. + needed by imapsync in order to make imapsync.exe a standalone software. +R4. imapsync.exe release 1.836 is reported as totally clean by both + https://www.virustotal.com/ + https://www.virustotal.com/#/file/2a33eb93198da77677a4013a5dfb4868cb6aa8f4513e2102a55884b258d19043/detection + + and https://metadefender.opswat.com/ + https://metadefender.opswat.com/results#!/file/ZTE4MDMxN1MxZTk4aGhxdEdCSlpxVTJoOVlN/regular/information + + \ No newline at end of file diff --git a/FAQ.d/FAQ.Yahoo.txt b/FAQ.d/FAQ.Yahoo.txt index 392f395..be84bbc 100644 --- a/FAQ.d/FAQ.Yahoo.txt +++ b/FAQ.d/FAQ.Yahoo.txt @@ -1,5 +1,5 @@ -$Id: FAQ.Yahoo.txt,v 1.6 2017/06/17 14:42:01 gilles Exp gilles $ +$Id: FAQ.Yahoo.txt,v 1.7 2017/12/18 10:45:00 gilles Exp gilles $ This documentation is also at http://imapsync.lamiral.info/#doc @@ -20,10 +20,28 @@ R. Use --host1 imap.mail.yahoo.com --ssl1 --ssl1 \ --host2 XXX \ --user2 billy \ - --password2 secret + --password2 secret \ + --noabletosearch --errorsmax 10000 SSL is mandatory for yahoo since November 2011. +Why increasing --errorsmax to 10000? +Because during the sync you may encounter several lines like this one: +- msg Inbox/12600 {0} S[36012] F[] I[27-Nov-2015 07:08:35 +0000] could not be fetched: 190 NO [UNAVAILABLE] UID FETCH Server error while fetching messages +- msg Inbox/12600 skipped. +I don't know why it happens, why Yahoo server says +"NO [UNAVAILABLE] UID FETCH Server error while fetching messages" +Usually another run syncs the message successfully. + +Why --noabletosearch option? +Yahoo IMAP does not honor well the SEARCH imap command (Dec 2017). +So don't use the --search option. +You can use --minage or/and --maxage but then add also --noabletosearch + +Yahoo bandwidth per connexion is relatively low, 50 KiB/s to 500 KiB/s max, usually 100 KiB/s. +Consider using --useuid to speed up large accounts. + + You also need to go to Yahoo, security and enable "Allow less secure apps to login", otherwise the login will not work. diff --git a/FAQ.d/htaccess.txt b/FAQ.d/htaccess.txt index 283af7b..d863a81 100644 --- a/FAQ.d/htaccess.txt +++ b/FAQ.d/htaccess.txt @@ -1,5 +1,5 @@ -# $Id: htaccess.txt,v 1.18 2017/09/03 03:14:48 gilles Exp gilles $ +# $Id: htaccess.txt,v 1.20 2018/03/17 16:12:54 gilles Exp gilles $ AddDescription "Back to Imapsync main page." .. @@ -16,22 +16,32 @@ AddDescription "Emptying an account." FAQ.Emptying. AddDescription "Exchange 20xx and Office365." FAQ.Exchange.txt AddDescription "Changing folders names." FAQ.Folders_Mapping.txt AddDescription "Selecting folders." FAQ.Folders_Selection.txt +AddDescription "Folders sizes with Imapsync." FAQ.Folders_Sizes.txt + + AddDescription "Flags." FAQ.Flags.txt AddDescription "General and pot-pourri issues" FAQ.General.txt AddDescription "Gmail accounts." FAQ.Gmail.txt AddDescription "ISP tips." FAQ.ISP.txt AddDescription "Massive/bulk migrations." FAQ.Massive.txt AddDescription "Memory issues." FAQ.Memory.txt +AddDescription "Migration Plan." FAQ.Migration_Plan.txt +AddDescription "The Online UI service Q&R." FAQ.OnlineUI.txt AddDescription "Password & special characters on Windows." FAQ.Passwords_on_Windows.txt AddDescription "Password & special characters on Unix." FAQ.Passwords_on_Unix.txt +AddDescription "POP3 issues." FAQ.POP3.txt AddDescription "Selecting messages." FAQ.Messages_Selection.txt AddDescription "Oracle-UCS." FAQ.Oracle-UCS.txt +AddDescription "Checklist before release a new release." FAQ.Release_Checklist.txt AddDescription "Guidelines to report bugs." FAQ.Reporting_Bugs.txt AddDescription "Security." FAQ.Security.txt AddDescription "SSL errors." FAQ.SSL_errors.txt AddDescription "SmarterMail." FAQ.SmarterMail.txt + +AddDescription "TTL (Time To Live) delay in DNS configuration." FAQ.TTL.txt AddDescription "Option --usecache and inodes." FAQ.Use_cache.txt AddDescription "User concurrent access." FAQ.User_Concurrent_Access.txt +AddDescription "Virus scanners on Imapsync." FAQ.Virus.txt AddDescription "Why use --addheader?." FAQ.Use_addheader.txt AddDescription "Various imap server softwares." FAQ.Various_Server_Softwares.txt AddDescription "XOAUTH2 (Gmail)." FAQ.XOAUTH2.txt diff --git a/FAQ.d/memo b/FAQ.d/memo new file mode 100644 index 0000000..7b84a9e --- /dev/null +++ b/FAQ.d/memo @@ -0,0 +1,4 @@ + + +( cd .. && make upload_FAQ ) + diff --git a/INSTALL.d/INSTALL.ANY.txt b/INSTALL.d/INSTALL.ANY.txt index 6a29d62..08ceaf9 100644 --- a/INSTALL.d/INSTALL.ANY.txt +++ b/INSTALL.d/INSTALL.ANY.txt @@ -1,4 +1,4 @@ -# $Id: INSTALL.ANY.txt,v 1.55 2017/04/18 15:11:29 gilles Exp gilles $ +# $Id: INSTALL.ANY.txt,v 1.57 2018/02/11 13:35:14 gilles Exp gilles $ # # This is the main INSTALL file for imapsync. # imapsync : IMAP sync and migrate tool. @@ -23,7 +23,7 @@ https://imapsync.lamiral.info/README_Windows.txt ================================= There are specific INSTALL files in the imapsync directory INSTALL.d/ -also available at https://imapsync.lamiral.info/INSTALL.d/ +Those documents are also available at https://imapsync.lamiral.info/INSTALL.d/ - Mac OS X - FreeBSD @@ -32,6 +32,7 @@ also available at https://imapsync.lamiral.info/INSTALL.d/ - Debian - Ubuntu - AWS EC2 +- Online UI like /X If you are not on one of these systems then read the section below called "Installing imapsync on other Unixes". @@ -42,7 +43,7 @@ below called "Installing imapsync on other Unixes". Easy. Read the file INSTALL.d/INSTALL.Darwin.txt -Also available at +This document is also available at https://imapsync.lamiral.info/INSTALL.d/INSTALL.Darwin.txt ===================================== @@ -51,7 +52,7 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.Darwin.txt Easy. Read the file INSTALL.d/INSTALL.FreeBSD.txt -Also available at +This document is also available at https://imapsync.lamiral.info/INSTALL.d/INSTALL.FreeBSD.txt @@ -61,7 +62,7 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.FreeBSD.txt Easy. Read the file INSTALL.d/INSTALL.Centos.txt -Also available at +This document is also available at https://imapsync.lamiral.info/INSTALL.d/INSTALL.Centos.txt @@ -71,7 +72,7 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.Centos.txt Easy. Read the file INSTALL.d/INSTALL.CPanel.txt -Also available at +This document is also available at https://imapsync.lamiral.info/INSTALL.d/INSTALL.CPanel.txt @@ -81,7 +82,7 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.CPanel.txt Not so easy. See the file INSTALL.d/INSTALL.Debian.txt -Also available at +This document is also available at https://imapsync.lamiral.info/INSTALL.d/INSTALL.Debian.txt ============================================ @@ -90,7 +91,7 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.Debian.txt Not so easy. See the file INSTALL.d/INSTALL.Ubuntu.txt -Also available at +This document is also available at https://imapsync.lamiral.info/INSTALL.d/INSTALL.Ubuntu.txt ================================== @@ -99,9 +100,17 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.Ubuntu.txt Not so easy. See the file INSTALL.d/INSTALL.AWS_EC2.txt -Also available at +This document is also available at https://imapsync.lamiral.info/INSTALL.d/INSTALL.AWS_EC2.txt +====================================== += Installing imapsync online like /X = +====================================== + +Follow the document INSTALL.d/INSTALL.OnlineUI.txt +This document is also available at +https://imapsync.lamiral.info/INSTALL.d/INSTALL.OnlineUI.txt + ========================================= == Installing imapsync on other Unixes == diff --git a/INSTALL.d/INSTALL.AWS_EC2.txt b/INSTALL.d/INSTALL.AWS_EC2.txt index 7b9c276..8722b2c 100644 --- a/INSTALL.d/INSTALL.AWS_EC2.txt +++ b/INSTALL.d/INSTALL.AWS_EC2.txt @@ -1,5 +1,5 @@ #!/bin/cat -# $Id: INSTALL.AWS_EC2.txt,v 1.3 2017/04/18 15:06:35 gilles Exp gilles $ +# $Id: INSTALL.AWS_EC2.txt,v 1.4 2017/11/19 07:50:24 gilles Exp gilles $ ================================== = Installing imapsync on AWS EC2 = @@ -12,37 +12,38 @@ Amazon Linux AMI release 2017.03 sudo yum install \ -perl-Class-Load-0.20-3.6.amzn1.noarch \ -perl-IO-Compress-2.061-2.12.amzn1.noarch \ -perl-Crypt-OpenSSL-RSA-0.28-7.8.amzn1.x86_64 \ -perl-Data-Dumper-2.145-3.5.amzn1.x86_64 \ -perl-Dist-CheckConflicts-0.06-2.5.amzn1.noarch \ -perl-File-Copy-Recursive-0.38-14.8.amzn1.noarch \ -perl-IO-Socket-INET6-2.69-5.8.amzn1.noarch \ -perl-IO-Socket-SSL-1.94-3.13.amzn1.noarch \ -perl-JSON-2.59-2.8.amzn1.noarch \ -perl-HTML-Parser-3.71-4.7.amzn1.x86_64 \ -perl-libwww-perl-6.05-2.17.amzn1.noarch \ -perl-Mail-IMAPClient-3.34-1.2.amzn1.noarch \ -perl-Module-Implementation-0.06-6.6.amzn1.noarch \ -perl-Module-Runtime-0.013-4.5.amzn1.noarch \ -perl-Module-ScanDeps-1.10-3.7.amzn1.noarch \ -perl-Net-SSLeay-1.65-2.10.amzn1.x86_64 \ -perl-Package-Stash-0.34-2.6.amzn1.noarch \ -perl-Package-Stash-XS-0.26-3.7.amzn1.x86_64 \ -perl-Parse-RecDescent-1.967009-5.13.amzn1.noarch \ -perl-Readonly-1.03-22.8.amzn1.noarch \ -perl-Sys-MemInfo-0.91-7.5.amzn1.x86_64 \ -perl-TermReadKey-2.30-20.9.amzn1.x86_64 \ -perl-Test-Fatal-0.010-5.5.amzn1.noarch \ -perl-Test-MockObject-1.20120301-3.8.amzn1.noarch \ -perl-Test-Simple-0.98-243.6.amzn1.noarch \ -perl-Test-Pod-1.48-3.9.amzn1.noarch \ -perl-Test-Requires-0.06-10.6.amzn1.noarch \ -perl-Try-Tiny-0.12-2.5.amzn1.noarch \ -perl-Unicode-String-2.09-29.7.amzn1.x86_64 \ -perl-URI-1.60-9.8.amzn1.noarch \ -perl-ExtUtils-Embed-1.30-286.38.amzn1.noarch \ +perl-Class-Load \ +perl-IO-Compress \ +perl-Crypt-OpenSSL-RSA \ +perl-Data-Dumper \ +perl-Dist-CheckConflicts \ +perl-File-Copy-Recursive \ +perl-IO-Socket-INET6 \ +perl-IO-Socket-SSL \ +perl-JSON \ +perl-HTML-Parser \ +perl-libwww-perl \ +perl-Mail-IMAPClient \ +perl-Module-Implementation \ +perl-Module-Runtime \ +perl-Module-ScanDeps \ +perl-Net-SSLeay \ +perl-Package-Stash \ +perl-Package-Stash-XS \ +perl-Parse-RecDescent \ +perl-Readonly \ +perl-Regexp-Common \ +perl-Sys-MemInfo \ +perl-TermReadKey \ +perl-Test-Fatal \ +perl-Test-MockObject \ +perl-Test-Simple \ +perl-Test-Pod \ +perl-Test-Requires \ +perl-Try-Tiny \ +perl-Unicode-String \ +perl-URI \ +perl-ExtUtils-Embed \ cpanminus sudo cpanm Authen::NTLM Data::Uniqid IO::Tee JSON::WebToken JSON::WebToken::Crypt::RSA Test::Mock::Guard diff --git a/INSTALL.d/INSTALL.Centos.txt b/INSTALL.d/INSTALL.Centos.txt index c44b228..05a9a34 100644 --- a/INSTALL.d/INSTALL.Centos.txt +++ b/INSTALL.d/INSTALL.Centos.txt @@ -1,5 +1,5 @@ #!/bin/cat -# $Id: INSTALL.Centos.txt,v 1.6 2016/11/07 10:40:53 gilles Exp gilles $ +# $Id: INSTALL.Centos.txt,v 1.7 2018/04/24 00:15:32 gilles Exp gilles $ ================================= = Installing imapsync on CentOS = @@ -32,6 +32,48 @@ Unit tests: imapsync --tests +================================== +== Centos 7 and latest imapsync == +================================== + +At the time of this writing (April 2018), the epel repository contains +imapsync release 1.727, which is not the latest available release. + +In order to install the latest imapsync I suggest the following process: + +Install the epel imapsync 1.727 release via yum like mentioned above. +It will install many needed packages, Perl itself and Perl modules +for release 1.727. The latest imapsync needs more Perl modules. + +Then: + + yum install perl-App-cpanminus \ + perl-Dist-CheckConflicts \ + perl-HTML-Parser \ + perl-libwww-perl \ + perl-Module-Implementation \ + perl-Module-ScanDeps \ + perl-Package-Stash \ + perl-Package-Stash-XS \ + perl-PAR-Packer \ + perl-Regexp-Common \ + perl-Sys-MemInfo \ + perl-Test-Fatal \ + perl-Test-Mock-Guard \ + perl-Test-Requires \ + perl-Test-NoWarnings \ + perl-Test-Deep \ + perl-Test-Warn \ + perl-Try-Tiny + + wget https://imapsync.lamiral.info/imapsync + + chmod +x imapsync + ./imapsync --testslive + +Now you have the latest imapsync on Centos 7. + + ============== == Centos 6 == ============== diff --git a/INSTALL.d/INSTALL.Darwin.txt b/INSTALL.d/INSTALL.Darwin.txt index 2268152..52a5a67 100644 --- a/INSTALL.d/INSTALL.Darwin.txt +++ b/INSTALL.d/INSTALL.Darwin.txt @@ -1,5 +1,5 @@ #!/bin/cat -# $Id: INSTALL.Darwin.txt,v 1.16 2016/11/07 05:06:34 gilles Exp gilles $ +# $Id: INSTALL.Darwin.txt,v 1.17 2017/11/30 02:10:27 gilles Exp gilles $ =================================================== = Installing imapsync binary on Darwin / Mac OS X = @@ -117,7 +117,6 @@ Now imapsync should work on your system. = Building imapsync binary on Darwin / Mac OS X = ================================================= -cpanm Module::ScanDeps cpanm Module::ScanDeps cpanm PAR::Packer diff --git a/INSTALL.d/INSTALL.Debian.txt b/INSTALL.d/INSTALL.Debian.txt index 87d2f85..0fa211f 100644 --- a/INSTALL.d/INSTALL.Debian.txt +++ b/INSTALL.d/INSTALL.Debian.txt @@ -1,5 +1,5 @@ #!/bin/cat -# $Id: INSTALL.Debian.txt,v 1.15 2017/04/05 02:03:04 gilles Exp gilles $ +# $Id: INSTALL.Debian.txt,v 1.21 2018/05/06 15:03:04 gilles Exp gilles $ There is three install sections in this document, one for Debian 9 Stretch @@ -13,7 +13,6 @@ It could be in Debian nowadays, as always, my last words on this discussion were "Do what you want, I promise I won't complain anymore about the fact imapsync is on Debian or not." https://lists.debian.org/debian-legal/2011/01/msg00058.html The license is now "No limits to do anything with this work and this license". -and full dist/ is back to https://imapsync.lamiral.info/dist/ Feel free. See also a more detailed story at https://lists.debian.org/debian-user/2016/11/msg00849.html @@ -24,31 +23,43 @@ https://lists.debian.org/debian-user/2016/11/msg00849.html =========================================== Here is the command to install imapsync dependencies. -You need root priviledge to run it. +The repositories are the classical ones, ie, a +sources.list file with: -apt install -y \ - libjson-webtoken-perl \ - libauthen-ntlm-perl \ - libcgi-pm-perl \ - libcrypt-openssl-rsa-perl \ - libdata-uniqid-perl \ +deb http://deb.debian.org/debian stretch main contrib + +You need root privilege to run it, be root or use sudo. + +apt install -y \ + libjson-webtoken-perl \ + libauthen-ntlm-perl \ + libcgi-pm-perl \ + libcrypt-openssl-rsa-perl \ + libdata-uniqid-perl \ libfile-copy-recursive-perl \ - libio-socket-inet6-perl \ - libio-socket-ssl-perl \ - libio-tee-perl \ - libhtml-parser-perl \ - libjson-webtoken-perl \ - libmail-imapclient-perl \ + libio-socket-inet6-perl \ + libio-socket-ssl-perl \ + libio-tee-perl \ + libhtml-parser-perl \ + libjson-webtoken-perl \ + libmail-imapclient-perl \ libparse-recdescent-perl \ - libmodule-scandeps-perl \ - libreadonly-perl \ - libsys-meminfo-perl \ - libterm-readkey-perl \ - libtest-mockobject-perl \ - libtest-pod-perl \ - libunicode-string-perl \ - liburi-perl \ - libwww-perl + libmodule-scandeps-perl \ + libreadonly-perl \ + libregexp-common-perl \ + libsys-meminfo-perl \ + libterm-readkey-perl \ + libtest-mockobject-perl \ + libtest-pod-perl \ + libunicode-string-perl \ + liburi-perl \ + libwww-perl \ + libtest-nowarnings-perl \ + libtest-deep-perl \ + libtest-warn-perl \ + make \ + cpanminus + After installing the dependencies, imapsync should be working, go to the section "After installing the dependencies" below. @@ -62,32 +73,48 @@ Here are the commands to install imapsync dependencies. You need root priviledge to run them. The first command installs standard Debian packages: -apt install \ -libauthen-ntlm-perl \ -libcgi-pm-perl \ -libcrypt-openssl-rsa-perl \ -libdata-uniqid-perl \ -libfile-copy-recursive-perl \ -libio-socket-inet6-perl \ -libio-socket-ssl-perl \ -libio-tee-perl \ -libhtml-parser-perl \ -libmail-imapclient-perl \ -libparse-recdescent-perl \ -libmodule-scandeps-perl \ -libreadonly-perl \ -libterm-readkey-perl \ -libtest-mockobject-perl \ -libtest-pod-perl \ -libunicode-string-perl \ -liburi-perl \ -libwww-perl \ -make \ -cpanminus +apt install \ + libauthen-ntlm-perl \ + libcgi-pm-perl \ + libcrypt-openssl-rsa-perl \ + libdata-uniqid-perl \ + libfile-copy-recursive-perl \ + libio-socket-inet6-perl \ + libio-socket-ssl-perl \ + libio-tee-perl \ + libhtml-parser-perl \ + libmail-imapclient-perl \ + libparse-recdescent-perl \ + libmodule-scandeps-perl \ + libreadonly-perl \ + libterm-readkey-perl \ + libtest-mockobject-perl \ + libtest-pod-perl \ + libunicode-string-perl \ + liburi-perl \ + libwww-perl \ + libregexp-common-perl \ + libtest-nowarnings-perl \ + libtest-deep-perl \ + libtest-warn-perl \ + make \ + cpanminus +The package libdata-uniqid-perl is in the jessie-backports repository +https://packages.debian.org/fr/jessie-backports/libdata-uniqid-perl + +Here is how to add jessie-backports repository in /etc/apt/sources.list + +https://backports.debian.org/Instructions/ + +If you can't add the jessie-backports repository in /etc/apt/sources.list you +have to install Perl module Data::Uniqid with cpanm: + + cpanm Data::Uniqid The following second command installs "manually" the Perl module Sys::MemInfo -because Debian hasn't made it available via a package yet. +because Debian 8 Jessie doesn't have this Perl module available via a package +(but Debian 9 Stretch does): cpanm Sys::MemInfo @@ -176,9 +203,7 @@ After installing the dependencies, imapsync should be working. You don't have to be root to test and use imapsync. -Take imapsync either on github or at the upstream site: - - wget -N https://imapsync.lamiral.info/dist/imapsync +Take imapsync either on github or at the upstream site. Add execution permission to the downloaded script: diff --git a/INSTALL.d/INSTALL.Docker.txt b/INSTALL.d/INSTALL.Docker.txt index 8064b82..6ef7895 100644 --- a/INSTALL.d/INSTALL.Docker.txt +++ b/INSTALL.d/INSTALL.Docker.txt @@ -1,5 +1,5 @@ #!/bin/cat -# $Id: INSTALL.Docker.txt,v 1.1 2017/09/03 03:23:54 gilles Exp gilles $ +# $Id: INSTALL.Docker.txt,v 1.2 2017/10/22 14:21:46 gilles Exp gilles $ ======================================= = Installing imapsync docker image @@ -14,4 +14,8 @@ docker run gilleslamiral/imapsync imapsync +== Docker hub location == + +https://hub.docker.com/r/gilleslamiral/imapsync/ + diff --git a/INSTALL.d/INSTALL.Docker_build.txt b/INSTALL.d/INSTALL.Docker_build.txt index 355a173..391438e 100644 --- a/INSTALL.d/INSTALL.Docker_build.txt +++ b/INSTALL.d/INSTALL.Docker_build.txt @@ -1,5 +1,5 @@ #!/bin/cat -# $Id: INSTALL.Docker_build.txt,v 1.5 2017/04/07 08:45:20 gilles Exp gilles $ +# $Id: INSTALL.Docker_build.txt,v 1.7 2018/04/10 00:16:18 gilles Exp gilles $ ================================================= = Building an imapsync docker image from Debian = @@ -10,7 +10,7 @@ FROM debian:stretch -LABEL maintainer "gilles.lamiral@laposte.net" +LABEL maintainer "gilles@lamiral.info" RUN apt-get update \ && apt-get install -y \ @@ -29,6 +29,7 @@ RUN apt-get update \ libmodule-scandeps-perl \ libpar-packer-perl \ libreadonly-perl \ + libregexp-common-perl \ libsys-meminfo-perl \ libterm-readkey-perl \ libtest-mockobject-perl \ diff --git a/INSTALL.d/INSTALL.FreeBSD.txt b/INSTALL.d/INSTALL.FreeBSD.txt index fc8f331..c6dec1a 100644 --- a/INSTALL.d/INSTALL.FreeBSD.txt +++ b/INSTALL.d/INSTALL.FreeBSD.txt @@ -1,5 +1,5 @@ #!/bin/cat -# $Id: INSTALL.FreeBSD.txt,v 1.7 2016/11/07 10:40:53 gilles Exp gilles $ +# $Id: INSTALL.FreeBSD.txt,v 1.8 2018/04/10 00:16:52 gilles Exp gilles $ ================================== = Installing imapsync on FreeBSD = diff --git a/INSTALL.d/INSTALL.OnlineUI.txt b/INSTALL.d/INSTALL.OnlineUI.txt index 5370158..8204f55 100644 --- a/INSTALL.d/INSTALL.OnlineUI.txt +++ b/INSTALL.d/INSTALL.OnlineUI.txt @@ -1,21 +1,46 @@ #!/bin/cat -# $Id: INSTALL.OnlineUI.txt,v 1.8 2017/09/01 22:50:06 gilles Exp gilles $ +# $Id: INSTALL.OnlineUI.txt,v 1.14 2018/04/24 00:14:51 gilles Exp gilles $ ============================== = Installing imapsync online = ============================== Please consider this as relatively new and experimental. -I add I'm begining to be confident with /X since the /X service -is up and running quite well since january 2017. +I add I'm beginning to be confident with /X since the /X service +is up and running quite well since January 2017. -You have to be a little familiar with what is a CGI script -and how to activate it on an Apache (or any other) HTTP server. +You have to be a little familiar with what a CGI script is +and how to activate a CGI script on an the Apache (or any other) +HTTP server. -The web visual user interface frontend is the file -https://imapsync.lamiral.info/X/imapsync_form.html -You can do a "view source" to see it as it is written, -and a "save" to get it locally. +The web visual user interface frontend is compounded in three +files, a html5 file, a css file, and a javascript file: + +* https://imapsync.lamiral.info/X/imapsync_form.html +* https://imapsync.lamiral.info/X/imapsync_form.js +* https://imapsync.lamiral.info/X/imapsync_form.css + +You can do a "view source" to see the html file as +it is written, and a "save" to get it locally. +The two other files called imapsync_form.js and +imapsync_form.css can be saved the same way. + +Those three files can be put anywhere on a web server, +as long as they stand in the same directory. If you +want to put them in different directories, just change +the content of imapsync_form.html to reflect the change, +ie, change the two lines referencing imapsync_form.css and imapsync_form.js + href="imapsync_form.css" (near the beginning of imapsync_form.html) + src="imapsync_form.js" (near the end of imapsync_form.html) + +The actual imap syncing work is done by imapsync acting as a CGI, +the visual interface is only there to give imapsync the parameters +needed for the sync. + +In order to make imapsync work as a cgi, there is two conditions. +First it has to work by itself on the web host. If imapsync +doesn't work by itself, on a command line, then it won't +work as a cgi. This imapsync_form.html file in action calls the CGI location /cgi-bin/imapsync @@ -26,33 +51,42 @@ https://imapsync.lamiral.info/imapsync It is the program file used verbatim for the service given at https://imapsync.lamiral.info/X/ -So copy both imapsync_form.html and imapsync on a HTTP server -allowing CGIs and you'll have your own imapsync visual interface. +Copy imapsync_form.* on a directory that is visible by your HTTP server. +Copy the imapsync script on the cgi-bin/ directory +allowing CGIs and you'll have your own imapsync visual interface +and service. + +I haven't tested yet this visual interface on Windows nor Mac, +feedback is welcome from successes or failures on those platforms. Example on a Debian server with Apache: -Imapsync place on the server disk: +Imapsync script place on the server disk: /usr/lib/cgi-bin/imapsync -This classical /cgi-bin directory is configured in Apache -configuration file +This classical /cgi-bin directory is already configured +in the Apache configuration file /etc/apache2/sites-available/default-ssl or /etc/apache2/sites-available/default -It contains somewhere (maybe in comments for now, -with some # characters to make them ignored): +The configuration file contains somewhere, +maybe in comments for now, with some # characters +at the beginning to make them ignored: ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ AllowOverride None + # Next line "no-gzip 1" is to avoid output buffering, + # clients can then see the log along the sync + SetEnv no-gzip 1 Options +ExecCGI -MultiViews Order allow,deny Allow from all -The UI frontend file place on the server disk is +The UI front-end file place on the server disk is /var/www/X/imapsync_form.html but it can be placed it anywhere on disk, the important thing is that it has to be served by the web server. @@ -60,11 +94,77 @@ thing is that it has to be served by the web server. The imapsync working directory in cgi mode is /var/tmp/imapsync_cgi/ it is not configurable unless changing it in -imapsync directly, it is hardcoded in imapsync. +imapsync directly, it is hard-coded in imapsync. In this directory will go the log files and the pid files. Use at least CGI.pm release 4.08 (2014-10-18) to avoid the bug "Undefined subroutine CGI::multi_param" +You can use the command cpanm to upgrade CGI.pm to its last version, +it's the easiest way. +Example on a Centos 7 server with httpd Apache: + + mkdir /var/www/html/X/ + cp imapsync_form.html imapsync_form.js imapsync_form.css /var/www/html/X/ + + cp imapsync /var/www/cgi-bin/ + +Check + http://yourhost/X/imapsync_form.html +or the safer + https://yourhost/X/imapsync_form.html + +That's all for installing a /X service on Centos 7. + +====== mod_perl ====== + +The script imapsync doesn't work under Modperl::Registry +nor under ModPerl::PerlRun so read on if you think you +are better than me. + +I've try the standard way, telling how any cgi perl script +can be run under mod_perl perlrun, but it fails with imapsync. +Any hint welcome! + +# This is a Debian example + +# install mod-perl with + + apt-get install libapache2-mod-perl2 + +# edit the file /etc/apache2/mods-available/perl.conf +# with the following lines + more /etc/apache2/mods-available/perl.conf + + + PerlModule ModPerl::PerlRun + Alias /perl-run/ /usr/lib/cgi-bin/ + + SetHandler perl-script + PerlResponseHandler ModPerl::PerlRun + PerlOptions +ParseHeaders + Options +ExecCGI + + + +# Enable the Apache perl module + + a2enmod perl + +# Verify perl.conf and perl.load are in directory mods-enabled/ + + ls mods-enabled/perl.* + +# Reload Apache + + apachectl graceful + +# Verify imapsync works under perl-run + + curl http://localhost/perl-run/imapsync + + + +====================== diff --git a/INSTALL.d/INSTALL.Ubuntu.txt b/INSTALL.d/INSTALL.Ubuntu.txt index 744285f..0d60125 100644 --- a/INSTALL.d/INSTALL.Ubuntu.txt +++ b/INSTALL.d/INSTALL.Ubuntu.txt @@ -1,5 +1,5 @@ #!/bin/cat -# $Id: INSTALL.Ubuntu.txt,v 1.10 2017/03/30 11:23:37 gilles Exp gilles $ +# $Id: INSTALL.Ubuntu.txt,v 1.12 2018/05/06 15:03:29 gilles Exp gilles $ ================================================= = Installing imapsync on Ubuntu 16.04 or higher = @@ -27,6 +27,7 @@ libmodule-scandeps-perl \ libnet-ssleay-perl \ libpar-packer-perl \ libreadonly-perl \ +libregexp-common-perl \ libsys-meminfo-perl \ libterm-readkey-perl \ libtest-fatal-perl \ @@ -36,6 +37,9 @@ libtest-requires-perl \ libtest-simple-perl \ libunicode-string-perl \ liburi-perl \ +libtest-nowarnings-perl \ +libtest-deep-perl \ +libtest-warn-perl \ make \ cpanminus diff --git a/INSTALL.d/prerequisites_imapsync b/INSTALL.d/prerequisites_imapsync index 9604e9a..27b5c85 100755 --- a/INSTALL.d/prerequisites_imapsync +++ b/INSTALL.d/prerequisites_imapsync @@ -1,10 +1,11 @@ #!/bin/sh -# $Id: prerequisites_imapsync,v 1.21 2017/08/31 02:12:36 gilles Exp gilles $ +# $Id: prerequisites_imapsync,v 1.25 2018/04/24 00:14:23 gilles Exp gilles $ MODULES_MANDATORY=' +App::cpanminus Authen::NTLM -Class::Load +CGI Compress::Zlib Crypt::OpenSSL::RSA Data::Dumper @@ -28,7 +29,6 @@ Mail::IMAPClient Module::Implementation Module::Runtime Module::ScanDeps -Net::Ping Net::SSLeay Package::Stash Package::Stash::XS @@ -36,6 +36,7 @@ PAR::Packer Parse::RecDescent Pod::Usage Readonly +Regexp::Common Sys::MemInfo Term::ReadKey Test::Fatal @@ -44,6 +45,9 @@ Test::MockObject Test::More Test::Pod Test::Requires +Test::NoWarnings +Test::Deep +Test::Warn Try::Tiny Unicode::String URI::Escape @@ -187,4 +191,6 @@ EXIT=$? # Help the user to install missing modules search_modules_any $LIST_TO_INSTALL + +test "$1" = "MODULES_MANDATORY" && search_modules_any $MODULES_MANDATORY exit $EXIT diff --git a/LOG_imapsync/imapsync_abortme.log b/LOG_imapsync/imapsync_abortme.log new file mode 100644 index 0000000..3d6896c --- /dev/null +++ b/LOG_imapsync/imapsync_abortme.log @@ -0,0 +1,40 @@ +Here is imapsync 1.882 on host petite, a linux system with 0.1/2.0 free GiB of RAM +with Perl 5.22.1 and Mail::IMAPClient 3.39 +Transfer started at Sun May 6 01:19:07 2018 +PID is 8751 +Log file is LOG_imapsync/imapsync_abortme.log ( to change it, use --logfile path ; or use --nolog to turn off logging ) +Load is 0.60 0.56 0.79 2/503 on 2 cores +Current directory is /home/gilles/public_html/imapsync +Real user id is gilles (uid 1000) +Effective user id is gilles (euid 1000) +$RCSfile: imapsync,v $ $Revision: 1.882 $ $Date: 2018/05/05 21:10:43 $ +Command line used: +./imapsync --host1 localhost --user1 tata --passfile1 ../../var/pass/secret.tata --host2 localhost --user2 titi --passfile2 ../../var/pass/secret.titi --pidfile /tmp/imapsync_abortme.pid --logfile imapsync_abortme.log --simulong 4 +Temp directory is /tmp ( to change it use --tmpdir dirpath ) +kill -QUIT 8751 # special behavior +kill -TERM 8751 # special behavior +kill -INT 8751 # special behavior +kill -USR1 8751 # special behavior +PID file is /tmp/imapsync_abortme.pid ( to change it use --pidfile filepath ; to avoid it use --pidfile "" ) +Writing my PID 8751 in /tmp/imapsync_abortme.pid +Are you still here 1/20 +Are you still here 2/20 +Are you still here 3/20 +Are you still here 4/20 +Are you still here 5/20 +Are you still here 6/20 +Are you still here 7/20 +Are you still here 8/20 +Are you still here 9/20 +Are you still here 10/20 +Are you still here 11/20 +Are you still here 12/20 +Are you still here 13/20 + +Got a signal QUIT (my PID is 8751). Asked to terminate +Here are the final stats of this sync not completely finished so far +Ended by a signal QUIT (my PID is 8751). I am asked to terminate immediately. +You should resynchronize those accounts by running a sync again, +since some messages and entire folders might still be missing on host2. +Exiting with return value 6 +Log file is LOG_imapsync/imapsync_abortme.log ( to change it, use --logfile filepath ; or use --nolog to turn off logging ) diff --git a/Makefile b/Makefile index f07ab3d..7178858 100644 --- a/Makefile +++ b/Makefile @@ -1,29 +1,29 @@ -# $Id: Makefile,v 1.257 2017/09/11 11:11:18 gilles Exp gilles $ +# $Id: Makefile,v 1.269 2018/05/06 15:09:09 gilles Exp gilles $ .PHONY: help usage all doc help: usage usage: - @echo " imapsync $(VERSION), You can do :" + @echo " this is imapsync $(VERSION), You can do :" @echo "make testp # it shows needed Perl modules from your distro or CPAN" @echo "make install # as root" @echo "" @echo "All other goals are for the upstream developper" - @echo "make testf # run tests" - @echo "make testv # run tests verbosely" + @echo "make testf # run tests" + @echo "make testv # run tests verbosely" @echo "make test_quick # few tests verbosely" - @echo "make W/test.bat # run --tests and W/test.bat on win32" - @echo "make W/test_tests.bat # run --tests on win32" - @echo "make W/test_testsdebug.bat # run --testsdebug on win32" - @echo "make W/test2.bat # run W/test2.bat on win32" - @echo "make W/test3.bat # run W/test3.bat on win32" - @echo "make W/test_reg.bat # run W/test_reg.bat on win32" - @echo "make W/test_exe.bat # run W/test_exe.bat on win32" + @echo "make W/test.bat # run --tests and W/test.bat on win32" + @echo "make W/test_tests.bat # run --tests on win32" + @echo "make W/test_testsdebug.bat # run --testsdebug on win32" + @echo "make W/test2.bat # run W/test2.bat on win32" + @echo "make W/test3.bat # run W/test3.bat on win32" + @echo "make W/test_reg.bat # run W/test_reg.bat on win32" + @echo "make W/test_exe.bat # run W/test_exe.bat on win32" @echo "make W/test_exe_tests.bat # run W/test_exe_tests.bat on win32" - @echo "make W/test_exe_2.bat # run W/test_exe_2.bat on win32" + @echo "make W/test_exe_2.bat # run W/test_exe_2.bat on win32" @echo "make examples/sync_loop_windows.bat # run examples/sync_loop_windows.bat on win32" @echo "make win32_prereq # run W/install_modules.bat on win32" @@ -34,7 +34,7 @@ usage: @echo "make upload_FAQ # upload FAQs and documentation" @echo "make upload_X # upload online UI" @echo "make upload_latest # upload latest imapsync and binaries (dev)" - @echo "make upload_cgi # upload latest imapsync" + @echo "make upload_cgi # upload latest imapsync online, after local and remote --tests success." @echo "make valid_index # check index.shtml for good syntax" @echo "make upload_ks" @echo "make imapsync.exe" @@ -49,34 +49,42 @@ usage: @echo "make cle # Check links of S/*.shtml" @echo "make mactestsdebug # run ./imapsync --testsdebug on Mac" @echo "make mactests # run ./imapsync --tests on Mac" + @echo "make mactestslive # run ./imapsync --testslive on Mac" @echo "make ks2testsdebug # run ./imapsync --testsdebug on ks2" @echo "make ks2tests # run ./imapsync --tests on ks2" + @echo "make ks2testslive # run ./imapsync --testslive on ks2" PREFIX ?= /usr -DIST_NAME=imapsync-$(VERSION) -DIST_FILE=$(DIST_NAME).tgz -DEB_FILE=$(DIST_NAME).deb +DIST_PATH ::= dist2/ +VERSION ::= $(shell perl ./imapsync --version 2>/dev/null || cat VERSION) +VERSION_PREVIOUS ::= $(shell perl ./$(DIST_PATH)/imapsync --version 2>/dev/null || echo ERROR) +VERSION_EXE ::= $(shell cat ./VERSION_EXE) -VERSION=$(shell perl -I$(IMAPClient) ./imapsync --version 2>/dev/null || cat VERSION) -VERSION_PREVIOUS=$(shell perl -I$(IMAPClient) ./dist/imapsync --version 2>/dev/null || echo ERROR) -VERSION_EXE=$(shell cat ./VERSION_EXE) +IMAPClient_3xx ::= ./W/Mail-IMAPClient-3.39/lib +IMAPClient ::= $(IMAPClient_3xx) -HELLO=$(shell date;uname -a) -IMAPClient_3xx=./W/Mail-IMAPClient-3.39/lib -IMAPClient=$(IMAPClient_3xx) -HOSTNAME = $(shell hostname -s) -ARCH = $(shell uname -m) -KERNEL = $(shell uname -s) -BIN_NAME = imapsync_bin_$(KERNEL)_$(ARCH) -DISTRO_NAME = $(shell lsb_release -i -s || echo Unknown) -DISTRO_RELEASE = $(shell lsb_release -r -s || echo 0.0) -DISTRO_CODE = $(shell lsb_release -c -s || echo Unknown) -DISTRO = $(DISTRO_NAME)_$(DISTRO_RELEASE)_$(DISTRO_CODE) +DIST_NAME ::= imapsync-$(VERSION) +DIST_FILE ::= $(DIST_NAME).tgz +DEB_FILE ::= $(DIST_NAME).deb + +HELLO ::= $(shell date;uname -a) + +HOSTNAME ::= $(shell hostname -s) +ARCH ::= $(shell uname -m) +KERNEL ::= $(shell uname -s) +BIN_NAME ::= imapsync_bin_$(KERNEL)_$(ARCH) +DISTRO_NAME ::= $(shell lsb_release -i -s || echo Unknown) +DISTRO_RELEASE ::= $(shell lsb_release -r -s || echo 0.0) +DISTRO_CODE ::= $(shell lsb_release -c -s || echo Unknown) +DISTRO ::= $(DISTRO_NAME)_$(DISTRO_RELEASE)_$(DISTRO_CODE) hello: @echo "$(VERSION)" + @echo "$(DIST_NAME)" + @echo "$(VERSION_PREVIOUS)" + @echo "$(VERSION_EXE)" @echo "$(IMAPClient)" @echo "$(HOSTNAME)" @echo "$(ARCH)" @@ -128,10 +136,11 @@ clean: clean_tilde clean_man clean_log clean_bak clean_permissions clean_permissions: chmod a-x Makefile FAQ.d/FAQ.*.txt README_Windows.txt + chmod a-x FAQ.d/RCS/FAQ.*.txt,v chmod a-x INSTALL.d/INSTALL.*.txt chmod a-x X/progress.html X/imapsync_form.html - chmod a-x S/*.shtml S/*.html - chmod a-x doc/*.t2t dist/*.txt + chmod a-x S/*.shtml S/*.html index.shtml S/RCS/*.shtml,v S/RCS/*.html,v + chmod a-x doc/*.t2t $(DIST_PATH)/*.txt clean_test: rm -f .test_3xx @@ -166,71 +175,70 @@ install: testp W/imapsync.1 -.PHONY: cidone ci - -ci: cidone - -cidone: - rcsdiff W/*.bat W/*.sh W/*.out W/*.txt W/*.htaccess - rcsdiff doc/*.t2t - rcsdiff INSTALL.d/*.txt INSTALL.d/prerequisites_imapsync - rcsdiff FAQ.d/*.txt - rcsdiff examples/*.sh examples/*.bat examples/*.txt - rcsdiff RCS/* - rcsdiff W/tools/backup_old_dist W/tools/gen_README_dist W/tools/validate_html4 W/tools/validate_xml_html5 W/tools/fix_email_for_exchange.py - rcsdiff S/*.txt S/*.shtml S/*.html ############### # Local goals ############### -.PHONY: prereq test tests unitests testp testf test3xx testv3 perlcritic allcritic crit compok dev +.PHONY: prereq test tests unitests testp testf test3xx testv3 perlcritic allcritic crit compok dev cover tidy dev: test crit bin docker: ssh ks3 'cd docker/imapsync && . memo' +cover: + perl -MDevel::Cover ./imapsync --tests + +tidy: W/imapsync.tdy + + +W/imapsync.tdy: imapsync + perltidy -i=8 -sts -pt=0 -l=0 -o W/imapsync.tdy imapsync + compok: W/.compok W/.compok: imapsync perl -c imapsync - touch W/.compok + date >> W/.compok -prereq: W/prereq.scandeps.$(DISTRO).txt +prereq: W/prereq.scandeps.$(DISTRO).txt W/prereq.$(DISTRO).txt W/prereq.scandeps.$(DISTRO).txt: INSTALL.d/prerequisites_imapsync imapsync scandeps -c -x imapsync | tee W/prereq.scandeps.$(DISTRO).txt rcsdiff W/prereq.scandeps.$(DISTRO).txt || { echo 'rcsdiff detected a diff' | ci -l W/prereq.scandeps.$(DISTRO).txt ; } + +W/prereq.$(DISTRO).txt: INSTALL.d/prerequisites_imapsync imapsync ./INSTALL.d/prerequisites_imapsync | tee W/prereq.$(DISTRO).txt + rcsdiff W/prereq.$(DISTRO).txt || { echo 'rcsdiff detected a diff' | ci -l W/prereq.$(DISTRO).txt ; } crit: allcritic -perlcritic: W/perlcritic_3.out W/perlcritic_2.out +perlcritic: W/perlcritic_3.txt W/perlcritic_2.txt -allcritic: W/perlcritic_4.out W/perlcritic_3.out W/perlcritic_2.out W/perlcritic_1.out +allcritic: W/perlcritic_4.txt W/perlcritic_3.txt W/perlcritic_2.txt W/perlcritic_1.txt -W/perlcritic_1.out: imapsync W/.compok - perlcritic --statistics -1 imapsync > W/perlcritic_1.out.tmp || : - mv W/perlcritic_1.out.tmp W/perlcritic_1.out - echo | ci -l W/perlcritic_1.out +W/perlcritic_1.txt: imapsync W/.compok + 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 -W/perlcritic_2.out: imapsync W/.compok - perlcritic --statistics -2 imapsync > W/perlcritic_2.out.tmp || : - mv W/perlcritic_2.out.tmp W/perlcritic_2.out - echo | ci -l W/perlcritic_2.out +W/perlcritic_2.txt: imapsync W/.compok + perlcritic --statistics -2 imapsync > W/perlcritic_2.txt.tmp || : + mv W/perlcritic_2.txt.tmp W/perlcritic_2.txt + echo | ci -l W/perlcritic_2.txt -W/perlcritic_3.out: imapsync W/.compok - perlcritic --statistics -3 imapsync > W/perlcritic_3.out.tmp || : - mv W/perlcritic_3.out.tmp W/perlcritic_3.out - echo | ci -l W/perlcritic_3.out +W/perlcritic_3.txt: imapsync W/.compok + perlcritic --statistics -3 imapsync > W/perlcritic_3.txt.tmp || : + mv W/perlcritic_3.txt.tmp W/perlcritic_3.txt + echo | ci -l W/perlcritic_3.txt -W/perlcritic_4.out: imapsync W/.compok - perlcritic --statistics -4 imapsync > W/perlcritic_4.out.tmp || : - mv W/perlcritic_4.out.tmp W/perlcritic_4.out - echo | ci -l W/perlcritic_4.out +W/perlcritic_4.txt: imapsync W/.compok + perlcritic --statistics -4 imapsync > W/perlcritic_4.txt.tmp || : + mv W/perlcritic_4.txt.tmp W/perlcritic_4.txt + echo | ci -l W/perlcritic_4.txt test_quick : test_quick_3xx @@ -297,7 +305,12 @@ examples/sync_loop_windows.bat: unix2dos examples/sync_loop_windows.bat scp imapsync examples/file.txt examples/sync_loop_windows.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/' ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/sync_loop_windows.bat --nodry --dry --nodry' -# ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/sync_loop_windows.bat ' + + +examples/infinite_loop_windows.bat: + unix2dos examples/infinite_loop_windows.bat + scp examples/infinite_loop_windows.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/' + ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/infinite_loop_windows.bat' W/test2.bat: unix2dos W/test2.bat @@ -442,6 +455,11 @@ mactestsdebug: rsync -p -e 'ssh -p 995' imapsync gilleslamira@gate.polarhome.com: ssh -p 995 gilleslamira@gate.polarhome.com '. .bash_profile; perl imapsync --testsdebug --debug' +mactestslive: + rsync -p -e 'ssh -p 995' imapsync gilleslamira@gate.polarhome.com: + ssh -p 995 gilleslamira@gate.polarhome.com '. .bash_profile; perl imapsync --testslive' + + bin: lin mac win lin: $(BIN_NAME) @@ -468,24 +486,32 @@ $(BIN_NAME): imapsync lfo: upload_lfo -.PHONY: tarball +.PHONY: tarball cidone ci -tarball: +tarball: cidone echo making tarball ../prepa_dist/$(DIST_FILE) - rcsdiff RCS/* - cd W && rcsdiff RCS/* - cd examples && rcsdiff RCS/* mkdir -p dist mkdir -p ../prepa_dist/$(DIST_NAME) - rsync -aCvH --delete --omit-dir-times --exclude dist/ --exclude imapsync.exe ./ ../prepa_dist/$(DIST_NAME)/ + rsync -aCvH --delete --omit-dir-times --exclude $(DIST_PATH) --exclude imapsync.exe ./ ../prepa_dist/$(DIST_NAME)/ cd ../prepa_dist && tar czfv $(DIST_FILE) $(DIST_NAME) cd ../prepa_dist && md5sum $(DIST_FILE) > $(DIST_FILE).md5.txt cd ../prepa_dist && md5sum -c $(DIST_FILE).md5.txt ls -l ../prepa_dist/$(DIST_FILE) +ci: cidone +cidone: + rcsdiff RCS/* + rcsdiff W/*.bat W/*.sh W/*.txt W/*.txt W/*.htaccess + cd W && rcsdiff RCS/* + rcsdiff doc/*.t2t + rcsdiff INSTALL.d/*.txt INSTALL.d/prerequisites_imapsync + rcsdiff FAQ.d/*.txt + rcsdiff examples/*.sh examples/*.bat examples/*.txt + cd examples && rcsdiff RCS/* + rcsdiff W/tools/backup_old_dist W/tools/gen_README_dist W/tools/validate_html4 W/tools/validate_xml_html5 W/tools/fix_email_for_exchange.py + rcsdiff S/*.txt S/*.shtml S/*.html -DIST_PATH := ./dist/ dist: cidone test clean all perlcritic dist_prepa dist_zip README_dist @@ -499,7 +525,7 @@ sha: .PHONY: moveoldrelease ks2testsdebug ks2tests README_dist moveoldrelease: - ./W/tools/backup_old_dist + ./W/tools/backup_old_dist $(DIST_PATH) dist_prepa: tarball moveoldrelease @@ -519,7 +545,7 @@ README_dist: sh W/tools/gen_README_dist > $(DIST_PATH)/README.txt unix2dos $(DIST_PATH)/README.txt -.PHONY: publish upload_ks ks valid_index biz +.PHONY: publish upload_ks ks valid_index biz ks2tests ks2tests_gilles ks2tests_root biz: S/imapsync_sold_by_country.txt @@ -530,10 +556,12 @@ S/imapsync_sold_by_country.txt: imapsync ks: rsync -avHz --delete --exclude imapsync.exe \ . gilles@ks.lamiral.info:public_html/imapsync/ + ssh root@ks.lamiral.info 'apachectl configtest && /etc/init.d/apache2 reload' ksa: rsync -avHz --delete -P \ . gilles@ks.lamiral.info:public_html/imapsync/ + ssh root@ks.lamiral.info 'apachectl configtest && /etc/init.d/apache2 reload' ks3: rsync -avHz --delete -P \ @@ -549,13 +577,34 @@ ks2testsdebug: rsync -aP imapsync gilles@ks.lamiral.info:public_html/imapsync/imapsync ssh gilles@ks.lamiral.info 'public_html/imapsync/imapsync --testsdebug' -ks2tests: +ks2tests: ks2tests_gilles ks2tests_root + + +ks2tests_gilles: rsync -aP imapsync gilles@ks.lamiral.info:public_html/imapsync/imapsync ssh gilles@ks.lamiral.info 'public_html/imapsync/imapsync --tests' +ks2tests_root: + rsync -aP imapsync root@ks.lamiral.info: + ssh root@ks.lamiral.info './imapsync --tests' + +ks2testslive: + rsync -aP imapsync gilles@ks.lamiral.info:public_html/imapsync/imapsync + ssh gilles@ks.lamiral.info 'public_html/imapsync/imapsync --testslive' + publish: dist upload_ks ksa echo Now ou can do make ml +centos: + scp imapsync INSTALL.d/prerequisites_imapsync root@vp1: + ssh root@vp1 sh prerequisites_imapsync + + + + + + + PUBLIC = ./ChangeLog ./NOLIMIT ./LICENSE ./CREDITS ./FAQ \ ./index.shtml ./INSTALL ./README_Windows.txt \ ./VERSION ./VERSION_EXE ./imapsync \ @@ -598,8 +647,8 @@ cle: ./W/checklinkext.txt http://lamiral.info/~gilles/imapsync/S/imapservers.shtml \ | tee ./W/checklinkext.txt -W/.valid.index.shtml: index.shtml S/*.shtml - for f in index.shtml S/*.shtml; do echo tidy -q $$f; tidy -q $$f > /dev/null; done +W/.valid.index.shtml: index.shtml + for f in index.shtml S/*.shtml; do echo tidy -e -q $$f; tidy -e -q $$f ; done ./W/tools/validate_xml_html5 index.shtml S/*.shtml touch W/.valid.index.shtml @@ -609,9 +658,9 @@ upload_bin: rsync -a imapsync.exe imapsync_bin_Darwin imapsync_bin_Linux_i686 imapsync ../imapsync_website/ rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/ -upload_index: W/.valid.index.shtml - rcsdiff index.shtml S/style.css S/*.shtml FAQ.d/*.txt LICENSE CREDITS TODO examples/*.bat index.shtml INSTALL.d/*.txt - rsync -avH index.shtml FAQ INSTALL NOLIMIT LICENSE CREDITS TODO S/robots.txt S/favicon.ico ../imapsync_website/ +upload_index: W/.valid.index.shtml clean_permissions + rcsdiff index.shtml README_Windows.txt S/style.css S/*.shtml FAQ.d/*.txt LICENSE CREDITS TODO examples/*.bat index.shtml INSTALL.d/*.txt + rsync -avH index.shtml README_Windows.txt FAQ INSTALL NOLIMIT LICENSE CREDITS TODO S/robots.txt S/favicon.ico ../imapsync_website/ rsync -aHv --delete ./W/ks.htaccess ../imapsync_website/.htaccess rsync -aHv --delete S/ ../imapsync_website/S/ rsync -aHv --delete ./examples/ ../imapsync_website/examples/ @@ -625,17 +674,18 @@ ci_imapsync: rcsdiff imapsync upload_latest: unitests ci_imapsync bin - rsync -a imapsync imapsync_bin_Linux_i686 imapsync_bin_Darwin imapsync.exe ../imapsync_website/ + rsync -a imapsync imapsync_bin_Linux_i686 imapsync_bin_Darwin imapsync.exe ./INSTALL.d/prerequisites_imapsync ../imapsync_website/ rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/ + ssh root@ks.lamiral.info 'apachectl configtest && /etc/init.d/apache2 reload' upload_cgi: unitests ks2tests ci_imapsync rsync -a imapsync ../imapsync_website/ rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/ - upload_X: ./W/tools/validate_xml_html5 X/imapsync_form.html rcsdiff X/imapsync_form.html + rcsdiff X/imapsync_form.js rsync -av --delete X/ ../imapsync_website/X/ rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/ @@ -652,9 +702,10 @@ upload_ks: ci tarball rsync -aHv $(PUBLIC) ../imapsync_website/ rsync -aHv --delete ./W/ks.htaccess ../imapsync_website/.htaccess rsync -avH ./S/ ../imapsync_website/S/ - rsync -aHv --delete ./dist/ ../imapsync_website/dist/ + rsync -aHv --delete ./$(DIST_PATH)/ ../imapsync_website/$(DIST_PATH)/ rsync -aHv --delete ./examples/ ../imapsync_website/examples/ - rsync -aHv --delete ./INSTALL.d/ ../imapsync_website/INSTALL.d/ - rsync -aHv --delete ./FAQ.d/ ../imapsync_website/FAQ.d/ - rsync -avH --delete ./doc/ ../imapsync_website/doc/ + rsync -aHv --delete ./INSTALL.d/ ../imapsync_website/INSTALL.d/ + rsync -aHv --delete ./FAQ.d/ ../imapsync_website/FAQ.d/ + rsync -avH --delete ./doc/ ../imapsync_website/doc/ rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/ + ssh root@ks.lamiral.info 'apachectl configtest && /etc/init.d/apache2 reload' \ No newline at end of file diff --git a/README b/README index 7f36b99..4085053 100644 --- a/README +++ b/README @@ -5,7 +5,7 @@ NAME VERSION - This documentation refers to Imapsync $Revision: 1.4 $ + This documentation refers to Imapsync $Revision: 1.882 $ USAGE @@ -21,7 +21,8 @@ USAGE DESCRIPTION - We sometimes need to transfer mailboxes from one imap server to another. + We sometimes need to transfer mailboxes from one imap server to one + another. Imapsync command is a tool allowing incremental and recursive imap transfers from one mailbox to another. @@ -31,28 +32,37 @@ DESCRIPTION (\Seen \Answered \Flagged etc.) are synced too. Imapsync reduces the amount of data transferred by not transferring a - given message if it resides already on both sides. Same specific headers - and the transfer is done only once (by default it's "Message-Id:" and - "Received:" lines but it can be changed with --useheader option). + given message if it resides already on both sides. - All flags are preserved, unread will stay unread, read will stay read, - deleted will stay deleted. + Same specific headers and the transfer is done only once. By default, + the identification headers are "Message-Id:" and "Received:" lines but + this choice can be changed with the --useheader option. + + All flags are preserved, unread messages will stay unread, read ones + will stay read, deleted will stay deleted. You can stop the transfer at any time and restart it later, imapsync - works well with bad connections and interruptions. + works well with bad connections and interruptions, by design. You can decide to delete the messages from the source mailbox after a successful transfer, it can be a good feature when migrating live - mailboxes since messages will be only on one side. In that case, use the - --delete1 option. Option --delete1 implies also option --expunge1 so all - messages marked deleted on host1 will be really deleted. + mailboxes since messages will be only on one side. + + In that case, use the --delete1 option. Option --delete1 implies also + option --expunge1 so all messages marked deleted on host1 will be really + deleted. + + You can also decide to remove empty folders once all of their messages + have been transferred. Add --delete1emptyfolders to obtain this + behavior. A different scenario is synchronizing a mailbox B from another mailbox A - in case you just want to keep a "live" copy of A in B. In that case - --delete2 has to be used, it deletes messages in host2 folder B that are - not in host1 folder A. If you also need to destroy host2 folders that - are not in host1 then use --delete2folders (see also - --delete2foldersonly and --delete2foldersbutnot). + in case you just want to keep a "live" copy of A in B. + + For this, option --delete2 has to be used, it deletes messages in host2 + folder B that are not in host1 folder A. If you also need to destroy + host2 folders that are not in host1 then use --delete2folders. See also + --delete2foldersonly and --delete2foldersbutnot. Imapsync is not adequate for maintaining two active imap accounts in synchronization when the user plays independently on both sides. Use @@ -80,11 +90,14 @@ OPTIONS OPTIONS/credentials --host1 str : Source or "from" imap server. Mandatory. - --port1 int : Port to connect on host1. Default is 143, 993 if --ssl1 + --port1 int : Port to connect on host1. + Optional since default port is 143 or 993 if --ssl1 --user1 str : User to login on host1. Mandatory. --password1 str : Password for the user1. + --host2 str : "destination" imap server. Mandatory. - --port2 int : Port to connect on host2. Default is 143, 993 if --ssl2 + --port2 int : Port to connect on host2. + Optional since default port is 143 or 993 if --ssl2 --user2 str : User to login on host2. Mandatory. --password2 str : Password for the user2. @@ -101,13 +114,18 @@ OPTIONS --nossl1 : Do not use a SSL connection on host1. --ssl1 : Use a SSL connection on host1. On by default if possible. + --nossl2 : Do not use a SSL connection on host2. --ssl2 : Use a SSL connection on host2. On by default if possible. + --notls1 : Do not use a TLS connection on host1. --tls1 : Use a TLS connection on host1. On by default if possible. + --notls2 : Do not use a TLS connection on host2. --tls2 : Use a TLS connection on host2. On by default if possible. + --debugssl int : SSL debug mode from 0 to 4. + --sslargs1 str : Pass any ssl parameter for host1 ssl or tls connection. Example: --sslargs1 SSL_verify_mode=1 --sslargs1 SSL_version=SSLv3 See all possibilities in the new() method of IO::Socket::SSL @@ -153,7 +171,8 @@ OPTIONS --nomixfolders : Do not merge folders when host1 is case-sensitive while host2 is not (like Exchange). Only the first - similar folder is synced (ex: Sent SENT sent -> Sent). + similar folder is synced (ex: with Sent SENT sent + on host1 only Sent will be synced to host2). --skipemptyfolders : Empty host1 folders are not created on host2. @@ -166,20 +185,17 @@ OPTIONS --exclude 'fold1|fold2|f3' skips fold1, fold2 and f3. --exclude reg : or this one, etc. + --automap : guesses folders mapping, for folders well known as + "Sent", "Junk", "Drafts", "All", "Archive", "Flagged". + + --f1f2 str1=str2 : Force folder str1 to be synced to str2, + --f1f2 overrides --automap and --regextrans2. + --subfolder2 str : Move whole host1 folders hierarchy under this host2 folder str . It does it by adding two --regextrans2 options before all others. Add --debug to see what's really going on. - --automap : guesses folders mapping, for folders like - "Sent", "Junk", "Drafts", "All", "Archive", "Flagged". - --f1f2 str1=str2 : Force folder str1 to be synced to str2, - --f1f2 overrides --automap and --regextrans2. - - --nomixfolders : Avoid merging folders that are considered different on - host1 but the same on destination host2 because of - case sensitivities and insensitivities. - --subscribed : Transfers subscribed folders. --subscribe : Subscribe to the folders transferred on the host2 that are subscribed on host1. On by default. @@ -202,7 +218,7 @@ OPTIONS Then, when happy, remove --dry, remove --justfolders. Have in mind that --regextrans2 is applied after prefix and separator inversion. For examples see - http://imapsync.lamiral.info/FAQ.d/FAQ.Folders_Mapping.txt + https://imapsync.lamiral.info/FAQ.d/FAQ.Folders_Mapping.txt OPTIONS/folders sizes @@ -254,6 +270,12 @@ OPTIONS Example: 's/"Junk"//g' # to remove "Junk" flag. --regexflag reg : then this one, etc. + --resyncflags : Resync flags for already transferred messages. + On by default. + --noresyncflags : Do not resync flags for already transferred messages. + May be useful when a user has already started to play + with its host2 account. + OPTIONS/deletions --delete1 : Deletes messages on host1 server after a successful @@ -298,6 +320,8 @@ OPTIONS a message arrived on a host (mtime). --idatefromheader : Sets the internal dates on host2 same as the "Date:" headers. + If you encounter problems with dates see also + https://imapsync.lamiral.info/FAQ.d/FAQ.Dates.txt OPTIONS/message selection @@ -316,8 +340,11 @@ OPTIONS --search str : Selects only messages returned by this IMAP SEARCH command. Applied on both sides. - --search1 str : Same as --search for selecting host1 messages only. - --search2 str : Same as --search for selecting host2 messages only. + For a complete of what can be search see + https://imapsync.lamiral.info/FAQ.d/FAQ.Messages_Selection.txt + + --search1 str : Same as --search but for selecting host1 messages only. + --search2 str : Same as --search but for selecting host2 messages only. --search CRIT equals --search1 CRIT --search2 CRIT --maxlinelength int : skip messages with a line length longer than int bytes. @@ -331,11 +358,11 @@ OPTIONS --usecache : Use cache to speed up the sync. --nousecache : Do not use cache. Caveat: --useuid --nousecache creates duplicates on multiple runs. - --useuid : Use uid instead of header as a criterium to recognize + --useuid : Use UIDs instead of headers as a criterium to recognize messages. Option --usecache is then implied unless --nousecache is used. - OPTIONS/miscelaneous + OPTIONS/miscellaneous --syncacls : Synchronizes acls (Access Control Lists). --nosyncacls : Does not synchronize acls. This is the default. @@ -349,14 +376,14 @@ OPTIONS --debugflags : Debug mode for flags. --debugimap1 : IMAP debug mode for host1. Very verbose. --debugimap2 : IMAP debug mode for host2. Very verbose. - --debugimap : IMAP debug mode for host1 and host2. + --debugimap : IMAP debug mode for host1 and host2. Twice very verbose. --debugmemory : Debug mode showing memory consumption after each copy. --errorsmax int : Exit when int number of errors is reached. Default is 50. --tests : Run local non-regression tests. Exit code 0 means all ok. --testslive : Run a live test with test1.lamiral.info imap server. - Useful to check the basics. Needs internet connexion. + Useful to check the basics. Needs internet connection. --testslive6 : Run a live test with ks2ipv6.lamiral.info imap server. Useful to check the ipv6 connectivity. Needs internet. @@ -386,7 +413,7 @@ OPTIONS On by default, 2 seconds max, like --maxsleep 2 --abort : terminates a previous call still running. - It uses the pidfile to know what processus to abort. + It uses the pidfile to know what process to abort. --exitwhenover int : Stop syncing when total bytes transferred reached. @@ -414,22 +441,24 @@ OPTIONS SECURITY You can use --passfile1 instead of --password1 to give the password - since it is safer. With --password1 option any user on your host can see - the password by using the 'ps auxwwww' command. Using a variable (like - $PASSWORD1) is also dangerous because of the 'ps auxwwwwe' command. So, - saving the password in a well protected file (600 or rw-------) is the - best solution. + since it is safer. With --password1 option, any user on your host can + see the password by using the 'ps auxwwww' command. Using a variable + (like $PASSWORD1) is also dangerous because of the 'ps auxwwwwe' + command. So, saving the password in a well protected file (600 or + rw-------) is the best solution. Imapsync activates ssl or tls encryption by default, if possible. What - details are under this "if possible"? Imapsync activates ssl if the well - known port imaps port (993) is open on the imap servers. If the imaps - port is closed then it open a normal (clear) connection on port 143 but - it looks for TLS support in the CAPABILITY list of the servers. If TLS - is supported then imapsync goes to encryption. + detailed behavior is under this "if possible"? Imapsync activates ssl if + the well known port imaps port (993) is open on the imap servers. If the + imaps port is closed then it open a normal (clear) connection on port + 143 but it looks for TLS support in the CAPABILITY list of the servers. + If TLS is supported then imapsync goes to encryption. If the automatic ssl/tls detection fails then imapsync will not protect against sniffing activities on the network, especially for passwords. + If you want to force ssl or tls just use --ssl1 --ssl2 or --tls1 --tls2 + See also the document FAQ.Security.txt in the FAQ.d/ directory or at https://imapsync.lamiral.info/FAQ.d/FAQ.Security.txt @@ -445,17 +474,17 @@ LICENSE AND COPYRIGHT distribution or just read this simple sentence as it IS the licence text: - "No limit to do anything with this work and this license." + "No limits to do anything with this work and this license." In case it is not long enough, I repeat: - "No limit to do anything with this work and this license." + "No limits to do anything with this work and this license." https://imapsync.lamiral.info/LICENSE AUTHOR - Gilles LAMIRAL + Gilles LAMIRAL Feedback good or bad is very often welcome. @@ -476,8 +505,8 @@ IMAP SERVERS supported HUGE MIGRATION Pay special attention to options --subscribed --subscribe --delete1 - --delete2 --delete2folders --maxage --minage --maxsize --useuid - --usecache + --delete1emptyfolders --delete2 --delete2folders --maxage --minage + --maxsize --useuid --usecache If you have many mailboxes to migrate think about a little shell program. Write a file called file.txt (for example) containing users and @@ -508,31 +537,36 @@ HUGE MIGRATION in shell or batch programming ! You will find already written scripts at - http://imapsync.lamiral.info/examples/ + https://imapsync.lamiral.info/examples/ INSTALL Imapsync works under any Unix with perl. - Imapsync works under Windows (2000, XP, Vista, Seven) - as a standalone binary software called imapsync.exe + + Imapsync works under most Windows (2000, XP, Vista, Seven, Eight, Ten + and all Server releases 2000, 2003, 2008 and R2, 2012 and R2) + as a standalone binary software called imapsync.exe, + usually launched from a batch file in order to avoid always typing + the options. + Imapsync works under OS X as a standalone binary - software called imapsync_bin_Darwin. + software called imapsync_bin_Darwin Purchase latest imapsync at - http://imapsync.lamiral.info/ + https://imapsync.lamiral.info/ You'll receive a link to a compressed tarball called imapsync-x.xx.tgz where x.xx is the version number. Untar the tarball where you want (on Unix): - tar xzvf imapsync-x.xx.tgz + tar xzvf imapsync-x.xx.tgz Go into the directory imapsync-x.xx and read the INSTALL file. - As mentioned at http://imapsync.lamiral.info/#install + As mentioned at https://imapsync.lamiral.info/#install the INSTALL file can also be found at - http://imapsync.lamiral.info/INSTALL + https://imapsync.lamiral.info/INSTALL.d/INSTALL.ANY.txt It is now split in several files for each system - http://imapsync.lamiral.info/INSTALL.d/ + https://imapsync.lamiral.info/INSTALL.d/ CONFIGURATION @@ -543,17 +577,22 @@ HACKING Feel free to hack imapsync as the NOLIMIT license permits it. -SIMILAR SOFTWARES +SIMILAR SOFTWARE - imap_tools : http://www.athensfbc.com/imap_tools + See also https://imapsync.lamiral.info/S/external.shtml + for a better up to date list. + + imap_tools : https://github.com/andrewnimmo/rick-sanders-imap-tools offlineimap : https://github.com/nicolas33/offlineimap + Doveadm-Sync : http://wiki2.dovecot.org/Tools/Doveadm/Sync + ( Dovecot sync tool ) mbsync : http://isync.sourceforge.net/ mailsync : http://mailsync.sourceforge.net/ mailutil : http://www.washington.edu/imap/ part of the UW IMAP tookit. imaprepl : http://www.bl0rg.net/software/ http://freecode.com/projects/imap-repl/ - imapcopy : http://home.arcor.de/armin.diehl/imapcopy/imapcopy.html + imapcopy : http://www.ardiehl.de/imapcopy/ migrationtool : http://sourceforge.net/projects/migrationtool/ imapmigrate : http://sourceforge.net/projects/cyrus-utils/ wonko_imapsync: http://wonko.com/article/554 @@ -567,11 +606,13 @@ HISTORY I wrote imapsync because an enterprise (basystemes) paid me to install a new imap server without losing huge old mailboxes located in a far away - remote imap server, accessible by a low-bandwidth link. The tool imapcp - (written in python) could not help me because I had to verify every - mailbox was well transferred, and then delete it after a good transfer. - Imapsync started its life as a patch of the copy_folder.pl script. The - script copy_folder.pl comes from the Mail-IMAPClient-2.1.3 perl module - tarball source (more precisely in the examples/ directory of the - Mail-IMAPClient tarball). + remote imap server, accessible by a low-bandwidth often broken link. The + tool imapcp (written in python) could not help me because I had to + verify every mailbox was well transferred, and then delete it after a + good transfer. Imapsync started its life as a patch of the + copy_folder.pl script. The script copy_folder.pl comes from the + Mail-IMAPClient-2.1.3 perl module tarball source (more precisely in the + examples/ directory of the Mail-IMAPClient tarball). So many happened + since then that I wonder if it remains any lines of the original + copy_folder.pl in imapsync source code. diff --git a/README_Windows.txt b/README_Windows.txt index e5c790b..83d6056 100644 --- a/README_Windows.txt +++ b/README_Windows.txt @@ -1,4 +1,4 @@ -# $Id: README_Windows.txt,v 1.9 2017/09/11 02:57:38 gilles Exp gilles $ +# $Id: README_Windows.txt,v 1.11 2018/05/05 22:46:01 gilles Exp gilles $ # # This is the README_Windows.txt file for imapsync # imapsync : IMAP sync and migrate tool. @@ -8,21 +8,21 @@ WINDOWS There is two ways to install and use imapsync on Windows systems: A) or B). -Standard users should only take the A) way. +Standard users should take the A) way, the simplest way. Developers, or powerful users that want to build their own imapsync.exe -or modify it, have to consider the B) way. +or modify it, have to consider the B) way, the complex but powerful way. A) Simplest way --------------- A.1) Get imapsync. -Get imapsync at https://imapsync.lamiral.info/dist/ +Get imapsync at https://imapsync.lamiral.info/ You'll then have access to a zip archive file named imapsync_1.xxx.zip where 1.xxx is the imapsync release number. -A.2) Extract the zip file in a folder where you'll work with imapsync +A.2) Extract the zip file in a folder where you will work with imapsync. You can work on the Desktop since the zip file extraction creates a unique folder named imapsync_1.xxx (where 1.xxx is the imapsync @@ -32,33 +32,36 @@ A.3) Check the folder In the folder extracted imapsync_1.xxx you see 6 files and 2 directories: -* README_Windows.txt is the current file you are reading +* README_Windows.txt is the current file you are reading. * README.txt is the imapsync general document. -* FAQ.d/* FAQs are a must read when something goes wrong. -* imapsync_example.bat is a batch file example you will copy and edit -* sync_loop_windows.bat is a batch file example for syncing many accounts -* file.txt is an input file example for syncing many accounts +* FAQ.d/* FAQs are a good read when something goes wrong. +* imapsync_example.bat is a simple batch file example you will copy and edit. +* sync_loop_windows.bat is a batch file example for syncing many accounts. +* file.txt is an input file example for syncing many accounts. * imapsync.exe is the imapsync binary. You don't have to run it directly. -* Cook/ is the directory to build imapsync.exe from its source. +* Cook/ is the directory to build imapsync.exe from its source, + for the B) way and expert users. You can copy or rename imapsync_example.bat as you wish as long as its extension remains ".bat". On Windows systems .bat extension means "I'm a batch script". Same thing for sync_loop_windows.bat. -The batch scripts have to stay with imapsync.exe because -of the way they call it, they use ".\imapsync.exe", so -let them be in the same directory (or change the path .\ -to whatever you want if you understand what you're doing). +The batch scripts have to stay in the same directory than +imapsync.exe because of the way they call imapsync.exe, +they use ".\imapsync.exe", so let them be in the same directory. +Or change the path .\ to whatever you want if you understand what +you're doing. For the rest of this documentation I assume you copied imapsync_example.bat to a file named imapsync_stuff.bat -A.4) Edit the batch file +A.4) Edit the batch file Edit imapsync_stuff.bat and change the values with yours. In order to edit it you have do a right click on it and select "modify" in the list presented in the small window menu. -Notepad or Notepadd++ are good editors to modify it. -Office Word is not good for that job, don't use it! +Notepad or Notepadd++ are very good editors to modify it. +Office Word or any powerful text processor are not good for that job, +don't use them! Files FAQ.txt and FAQ.d/* contain many tips and special options sometimes needed by specific imap server softwares like Exchange or Gmail. @@ -66,12 +69,12 @@ needed by specific imap server softwares like Exchange or Gmail. A.5) Run the batch file -To run imapsync with your values just double-clic on +To run imapsync with your values just double-click on the batch file imapsync_stuff.bat -You do not need to have administrator privilege to run imapsync. +You do not need to have administrator privileges to run imapsync. -A.6) Loop on A.5) A.6) +A.6) Loop on A.5) A.6) edit, run, edit, run etc. Loop the process of editing and running imapsync until you solve all issues and all values suit your needs. diff --git a/S/bc-payment.html b/S/bc-payment.html old mode 100755 new mode 100644 index 9b1f122..2e1ac98 --- a/S/bc-payment.html +++ b/S/bc-payment.html @@ -1,13 +1,21 @@ - + + + +Pay with Bitcoins -Pay with bitcoins - - + diff --git a/S/button.js b/S/button.js new file mode 100644 index 0000000..9cf5e69 --- /dev/null +++ b/S/button.js @@ -0,0 +1 @@ +(function(){var e,n,t,o;t=function(e,n){var t,o,a,r,i,s,c,d,u,m;return c=[null,null,!1],a=c[0],o=c[1],s=c[2],(a=window.jQuery)&&(u=parseInt(e.split(".")[0])||0,m=parseInt(e.split(".")[1])||0,r=parseInt(a.fn.jquery.split(".")[0])||0,i=parseInt(a.fn.jquery.split(".")[1])||0,t=r>u||r===u&&i>=m),a&&t?n(a):(d=document.createElement("script"),d.type="text/javascript",d.src="https://code.jquery.com/jquery-1.8.3.min.js",d.onload=d.onreadystatechange=function(){return s||(o=this.readyState)&&"loaded"!==o&&"complete"!==o?void 0:(n((a=window.jQuery).noConflict(1)),a(d).remove())},(document.getElementsByTagName("head")[0]||document.documentElement).appendChild(d))},e=function(e){return"development"===e||"test"===e?document.location.protocol+"//"+document.location.host:"https://www.coinbase.com"},n=function(t,o){var a,r;return window.coinbaseCookieLoaded?o(t):window.coinbaseCookieLoading?setTimeout(function(){return n(t,o)},200):(a=e(t("body").data("env")),window.coinbaseCookieLoading=!0,r=document.createElement("script"),r.src=a+"/checkouts/get_cookie.js",r.onload=r.onreadystatechange=function(){return window.coinbaseCookieLoaded=!0,window.coinbaseCookieLoading=!1,t(r).remove(),o(t)},(document.getElementsByTagName("head")[0]||document.documentElement).appendChild(r))},o=function(n){var t,o,a,r,i,s;return t=!1,o=!1,i=e(n("body").data("env")),s=function(e){var a,r,s;if(s=e.data.split("|"),r=s[0],a=s[1],a=escape(a),e.origin===i){if("show modal iframe"===r)return n("#coinbase_modal_iframe_"+a).show();if("coinbase_payment_complete"===r)return n("#coinbase_button_iframe_"+a).attr("src",i+"/buttons/paid"),n(document).trigger("coinbase_payment_complete",a);if("coinbase_payment_mispaid"===r)return n(document).trigger("coinbase_payment_mispaid",a);if("coinbase_payment_expired"===r)return n(document).trigger("coinbase_payment_expired",a);if("hide modal"===r)return n("#coinbase_modal_iframe_"+a).hide(),n(document).trigger("coinbase_modal_closed",a);if("signup redirect"===r)return document.location=i+"/users/verify";if("button frame loaded"===r){if(t=!0,o)return n(document).trigger("coinbase_button_loaded",a)}else if("checkouts frame loaded"===r&&(o=!0,t))return n(document).trigger("coinbase_button_loaded",a)}},r=function(e){switch(e){case"custom_large":return 276;case"custom_small":return 210;case"subscription_large":return 263;case"subscription_small":return 210;case"donation_large":return 189;case"donation_small":return 148;case"buy_now_large":return 211;case"buy_now_small":return 170;default:return 211}},a=function(e){switch(e){case"custom_large":return 62;case"custom_small":return 48;default:return 46}},window.addEventListener("message",s,!1),n(".coinbase-button").each(function(o){return function(o,s){var c,d,u,m,l,_,p,f;return c=n(s),m=c.data(),m.referrer=document.domain,p=n.param(m),u=c.data("code"),f=c.data("width")||r(c.data("button-style")),l=c.data("height")||a(c.data("button-style")),i=e(c.data("env")),d="",_="","none"===c.data("button-style")?t=!0:c.replaceWith(d),n("body").append(_)}}(this)),n(document).on("coinbase_show_modal",function(e,t){return n("#coinbase_modal_iframe_"+t).length>0?(n("#coinbase_modal_iframe_"+t).show(),frames["coinbase_modal_iframe_"+t].postMessage("show modal|"+t,i)):void 0})},t("1.7",function(e){return n(e,o)})}).call(this); \ No newline at end of file diff --git a/S/external.shtml b/S/external.shtml old mode 100755 new mode 100644 index bbb30de..a009794 --- a/S/external.shtml +++ b/S/external.shtml @@ -32,8 +32,9 @@

External online IMAP migration services (back to menu) @@ -65,16 +67,16 @@ I don't think they use Imapsync. Prices are given par mailbox and may be outdated (December 2011).

@@ -105,7 +107,7 @@ alt="Viewable With Any Browser" /> This document last modified on -($Id: external.shtml,v 1.20 2017/09/11 03:04:46 gilles Exp gilles $)
+($Id: external.shtml,v 1.24 2018/05/05 22:51:15 gilles Exp gilles $)
Top of the page

diff --git a/S/guestbook.shtml b/S/guestbook.shtml old mode 100755 new mode 100644 index fbd5742..1b7990a --- a/S/guestbook.shtml +++ b/S/guestbook.shtml @@ -1,7 +1,7 @@ - + Imapsync Guestbook @@ -34,13 +34,13 @@ http://www.w3schools.com/html/html5_browsers.asp

Imapsync Guestbook

Your name is mandatory to post but don't hesitate to use a pseudonym! -Email address is optional, only needed if you want a personnal reply. +Email address is optional, only needed if you want a personal reply. Have fun!

Feedback can also be done via: - + @@ -50,7 +50,35 @@ Feedback can also be done via: -