mirror of
https://github.com/imapsync/imapsync.git
synced 2024-11-17 00:02:29 +01:00
1.584
This commit is contained in:
parent
6a0efa6bc8
commit
7d2043f95f
28
ChangeLog
28
ChangeLog
@ -1,17 +1,37 @@
|
|||||||
|
|
||||||
RCS file: RCS/imapsync,v
|
RCS file: RCS/imapsync,v
|
||||||
Working file: imapsync
|
Working file: imapsync
|
||||||
head: 1.580
|
head: 1.584
|
||||||
branch:
|
branch:
|
||||||
locks: strict
|
locks: strict
|
||||||
gilles: 1.580
|
gilles: 1.584
|
||||||
access list:
|
access list:
|
||||||
symbolic names:
|
symbolic names:
|
||||||
keyword substitution: kv
|
keyword substitution: kv
|
||||||
total revisions: 580; selected revisions: 580
|
total revisions: 584; selected revisions: 584
|
||||||
description:
|
description:
|
||||||
----------------------------
|
----------------------------
|
||||||
revision 1.580 locked by: gilles;
|
revision 1.584 locked by: gilles;
|
||||||
|
date: 2014/02/05 00:40:59; author: gilles; state: Exp; lines: +77 -50
|
||||||
|
Debug. Print separator given by NAMESPACE even when --sep1 oe --sep2 is used.
|
||||||
|
Debug. Prints prefix given by NAMESPACE even when --prefix1 or --prefix2 is used.
|
||||||
|
(Preparation for advising not to use --prefix unless suggested)
|
||||||
|
----------------------------
|
||||||
|
revision 1.583
|
||||||
|
date: 2014/02/04 03:04:35; author: gilles; state: Exp; lines: +15 -11
|
||||||
|
Bug fix. --ssl1 --tls2 was buggy because of default SSL_VERIFY_PEER. "Can not go to tls encryption on [localhost]:Unable to start TLS: Cannot determine peer hostname for verificationerror:00000000:lib(0):func(0):reason(0)"
|
||||||
|
----------------------------
|
||||||
|
revision 1.582
|
||||||
|
date: 2014/01/24 01:43:19; author: gilles; state: Exp; lines: +20 -12
|
||||||
|
Bugfix. Check if going to tls is ok, exit otherwise with explicit error message.
|
||||||
|
Thanks to Dennis Schridde for reporting this ugly bug.
|
||||||
|
----------------------------
|
||||||
|
revision 1.581
|
||||||
|
date: 2014/01/15 02:42:06; author: gilles; state: Exp; lines: +41 -15
|
||||||
|
Added --debugmaxlinelength
|
||||||
|
Added --minmaxlinelength to select messages with long lines only.
|
||||||
|
----------------------------
|
||||||
|
revision 1.580
|
||||||
date: 2013/12/25 02:52:36; author: gilles; state: Exp; lines: +51 -27
|
date: 2013/12/25 02:52:36; author: gilles; state: Exp; lines: +51 -27
|
||||||
Added --skipcrossduplicates to avoid copying messages that are already copied in another folder.
|
Added --skipcrossduplicates to avoid copying messages that are already copied in another folder.
|
||||||
Added --debugcrossduplicates to print which messages (UIDs) are skipped with --skipcrossduplicates (and in what other folders they are).
|
Added --debugcrossduplicates to print which messages (UIDs) are skipped with --skipcrossduplicates (and in what other folders they are).
|
||||||
|
205
FAQ
205
FAQ
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
# $Id: FAQ,v 1.161 2013/12/25 03:25:18 gilles Exp gilles $
|
# $Id: FAQ,v 1.166 2014/01/27 02:23:30 gilles Exp gilles $
|
||||||
|
|
||||||
+------------------+
|
+------------------+
|
||||||
| FAQ for imapsync |
|
| FAQ for imapsync |
|
||||||
@ -1601,11 +1601,15 @@ R. This error message comes from Exchange IMAP server when it
|
|||||||
encounters any problem. Most of the time it is one of the following:
|
encounters any problem. Most of the time it is one of the following:
|
||||||
|
|
||||||
* Some messages are bigger than the size limit. 10 MB by default
|
* Some messages are bigger than the size limit. 10 MB by default
|
||||||
on Exchange. It can be upped by configuration.
|
on Exchange. It can be upped by configuration for Exchange.
|
||||||
Or use option --maxsize 10000000 (for 10 MB, change it if needed)
|
If you configure this limit then use option --maxsize 10000000
|
||||||
to tell imapsync to skip those messages.
|
for 10 MB, change it if needed) to tell imapsync to skip those messages.
|
||||||
|
This value is 25 MB for Office365 --maxsize 25000000
|
||||||
|
|
||||||
imapsync ... --maxsize 10000000
|
imapsync ... --maxsize 10000000 # 10 MB for Exchange
|
||||||
|
|
||||||
|
imapsync ... --maxsize 25000000 # 25 MB for Office365
|
||||||
|
|
||||||
|
|
||||||
* Quota reached. The whole account is full.
|
* Quota reached. The whole account is full.
|
||||||
It can be upped by configuration.
|
It can be upped by configuration.
|
||||||
@ -1645,45 +1649,7 @@ Thanks to Dave Murray and Simon Savva for reporting and solving
|
|||||||
this issue.
|
this issue.
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. From Zimbra to XXX
|
Q. Synchronizing from XXX to Gmail
|
||||||
|
|
||||||
imapsync ... \
|
|
||||||
--exclude "Conversation Action Settings" \
|
|
||||||
--exclude "Quick Step Settings" \
|
|
||||||
--exclude "News Feed"
|
|
||||||
|
|
||||||
=======================================================================
|
|
||||||
Q. From or to HMailServer version 4.4.1.
|
|
||||||
|
|
||||||
R. You have to add prefix and separator manually because 4.4.1 doesn't
|
|
||||||
honor the NAMESPACE imap command.
|
|
||||||
|
|
||||||
Example for host1:
|
|
||||||
|
|
||||||
imapsync ... \
|
|
||||||
--prefix1 "" --sep1 .
|
|
||||||
|
|
||||||
No specific option for HMailServer 5.3.3 since NAMESPACE is supported.
|
|
||||||
|
|
||||||
Maybe --subscribe_all will help you to see all migrated folders.
|
|
||||||
|
|
||||||
|
|
||||||
=======================================================================
|
|
||||||
Q. Synchronizing from SmarterMail to XXX
|
|
||||||
|
|
||||||
imapsync --host1 imap.d1.org --user1 joe --password1 secret1 --sep1 "/" \
|
|
||||||
--host2 imap.d2.org --user2 joe --password2 secret2 \
|
|
||||||
--noauthmd5 \
|
|
||||||
--prefix1 "" \
|
|
||||||
--regextrans2 's#^Inbox$#INBOX#' \
|
|
||||||
--regextrans2 's#Sent Items$#Sent#' \
|
|
||||||
--dry --justfolders
|
|
||||||
|
|
||||||
Maybe add other --regextrans2 to change folder names and see the result.
|
|
||||||
When satisfied, run without --dry --justfolders
|
|
||||||
|
|
||||||
=======================================================================
|
|
||||||
Q. Synchronizing from XXX to Gmail
|
|
||||||
|
|
||||||
R. There are some details to get the special [Gmail] sub-folders
|
R. There are some details to get the special [Gmail] sub-folders
|
||||||
right. Here's an example of migrating an old "Sent" folder to
|
right. Here's an example of migrating an old "Sent" folder to
|
||||||
@ -1692,37 +1658,36 @@ R. There are some details to get the special [Gmail] sub-folders
|
|||||||
imapsync --host1 mail.oldhost.com \
|
imapsync --host1 mail.oldhost.com \
|
||||||
--user1 my_email@oldhost.com \
|
--user1 my_email@oldhost.com \
|
||||||
--password1 password \
|
--password1 password \
|
||||||
--host2 imap.gmail.com --ssl2 \
|
--host2 imap.gmail.com \
|
||||||
--user2 my_email@gmail.com \
|
--user2 my_email@gmail.com \
|
||||||
--password2 password \
|
--password2 password \
|
||||||
|
--ssl2 \
|
||||||
--exitwhenover 500000000 \
|
--exitwhenover 500000000 \
|
||||||
--exclude "\[Gmail\]$" \
|
|
||||||
--addheader \
|
--addheader \
|
||||||
--regextrans2 "s,^Sent$,[Gmail]/Sent Mail," \
|
--exclude "\[Gmail\]$" \
|
||||||
--regextrans2 "s/[ ]+/_/g" \
|
--regextrans2 "s/[ ]+/_/g" \
|
||||||
--regextrans2 "s/[\^]/_/g" \
|
--regextrans2 "s/[\^]/_/g" \
|
||||||
--regextrans2 "s/['\"\\\\]/_/g"
|
--regextrans2 "s/['\"\\\\]/_/g" \
|
||||||
|
--regextrans2 "s,^Sent$,[Gmail]/Sent Mail,"
|
||||||
|
|
||||||
|
Explanations:
|
||||||
|
|
||||||
If you're using a different language in Gmail you might adapt
|
--ssl2 is mandatory since Gmail only supports imap ssl connections.
|
||||||
this example with the folder name translated, an example in French:
|
|
||||||
|
|
||||||
imapsync ...
|
--exitwhenover 500000000 option is here to avoid locking when
|
||||||
--regextrans2 "s,^Messages envoy&AOk-s$,[Gmail]/Messages envoy&AOk-s," \
|
transfers exceed maximum limit.
|
||||||
|
See http://support.google.com/a/bin/answer.py?hl=en&answer=1071518
|
||||||
|
--exitwhenover is not mandatory in the sense you may be able to
|
||||||
|
use an upper value than 500 MB without disconnections; I don't
|
||||||
|
know the hard value, it seems to vary, so just have some tries
|
||||||
|
and report me what you discover in case you detect something.
|
||||||
|
|
||||||
The --addheader option is there because "Sent" folder messages
|
The --addheader option is there because "Sent" folder messages
|
||||||
sometimes lack the "Message-Id" header needed by imapsync
|
sometimes lack the "Message-Id:" and "Received:" headers needed
|
||||||
to identify messages (only when --useuid is not used).
|
by imapsync to identify messages (only when --useuid is not used).
|
||||||
So option --addheader adds a "Message-Id" header.
|
So option --addheader adds a "Message-Id" header consiting fo
|
||||||
|
the imap UID of the message on the host1 folder, like
|
||||||
You can add --folder "INBOX.Sent" in the example in case
|
"Message-Id: 12345@imapsync".
|
||||||
you want to sync only the "Sent" folder.
|
|
||||||
|
|
||||||
The "All Mail" archive pseudo-folder should be updated automaticaly.
|
|
||||||
|
|
||||||
--exitwhenover option is here to avoid locking when transfers
|
|
||||||
exceed maximum limit.
|
|
||||||
See http://support.google.com/a/bin/answer.py?hl=en&answer=1071518
|
|
||||||
|
|
||||||
--exclude "\[Gmail\]$" is there to avoid a small examine/select error:
|
--exclude "\[Gmail\]$" is there to avoid a small examine/select error:
|
||||||
"Could not examine: 43 NO [NONEXISTENT] Unknown Mailbox: [Gmail]
|
"Could not examine: 43 NO [NONEXISTENT] Unknown Mailbox: [Gmail]
|
||||||
@ -1740,9 +1705,25 @@ not accepted by gmail, character ^ to character _ underscore.
|
|||||||
--regextrans2 "s/['\"\\\\]/_/g" is optional. It converts
|
--regextrans2 "s/['\"\\\\]/_/g" is optional. It converts
|
||||||
characters ' or " or \ to character _ underscore.
|
characters ' or " or \ to character _ underscore.
|
||||||
|
|
||||||
|
--regextrans2 "s,^Sent$,[Gmail]/Sent Mail," is to transform the
|
||||||
|
folder name "Sent" and adapt it to Gmail "Sent Mail" folder.
|
||||||
|
If you're using a different language in Gmail you might adapt
|
||||||
|
this example with the folder name translated, an example in French:
|
||||||
|
|
||||||
|
imapsync ...
|
||||||
|
--regextrans2 "s,^Messages envoy&AOk-s$,[Gmail]/Messages envoy&AOk-s," \
|
||||||
|
|
||||||
|
|
||||||
|
You can add --folder "INBOX.Sent" in the example in case
|
||||||
|
you want to sync only the "Sent" folder.
|
||||||
|
|
||||||
You can select folders exported to imap within the gmail preferences,
|
You can select folders exported to imap within the gmail preferences,
|
||||||
unselect all "System labels" depending on your needs.
|
unselect all "System labels" depending on your needs.
|
||||||
|
|
||||||
|
The "All Mail" archive pseudo-folder should be updated automaticaly.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. Some of the folders are getting created with [IMAP] prefix on Google
|
Q. Some of the folders are getting created with [IMAP] prefix on Google
|
||||||
side. How to stop creating folder with this prefix?
|
side. How to stop creating folder with this prefix?
|
||||||
@ -1752,21 +1733,47 @@ R. No switch in imapsync since [IMAP]/ prefix is done by Gmail,
|
|||||||
it might be configurable with Gmail parameters.
|
it might be configurable with Gmail parameters.
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. Synchronizing from Gmail to XXX
|
Q. Synchronizing from Gmail to XXX
|
||||||
|
|
||||||
R. Gmail needs SSL
|
R. Gmail needs SSL
|
||||||
|
|
||||||
./imapsync \
|
./imapsync \
|
||||||
--host1 imap.gmail.com \
|
--host1 imap.gmail.com \
|
||||||
--ssl1 \
|
|
||||||
--user1 gilles.lamiral@gmail.com \
|
--user1 gilles.lamiral@gmail.com \
|
||||||
--password1 gmailsecret \
|
--password1 gmailsecret \
|
||||||
--exitwhenover 2500000000 \
|
|
||||||
--host2 localhost
|
--host2 localhost
|
||||||
--user2 tata \
|
--user2 tata \
|
||||||
--password2 tatasecret \
|
--password2 tatasecret \
|
||||||
|
--ssl1 \
|
||||||
|
--exitwhenover 2500000000 \
|
||||||
--useheader="X-Gmail-Received" \
|
--useheader="X-Gmail-Received" \
|
||||||
--useheader 'Message-Id'
|
--useheader "Message-Id" \
|
||||||
|
--skipcrossduplicates \
|
||||||
|
--folderfirst "Work" \
|
||||||
|
--folderfirst "Friends" \
|
||||||
|
--folderlast "CanWait" \
|
||||||
|
--folderlast "[Gmail]/All Mail"
|
||||||
|
|
||||||
|
|
||||||
|
Explanations:
|
||||||
|
|
||||||
|
--ssl1 is mandatory since Gmail only supports imap ssl connections.
|
||||||
|
|
||||||
|
--exitwhenover 2500000000 option is here to avoid locking when
|
||||||
|
transfers exceed maximum limit.
|
||||||
|
See http://support.google.com/a/bin/answer.py?hl=en&answer=1071518
|
||||||
|
--exitwhenover is not mandatory in the sense you may be able to
|
||||||
|
use an upper value than 2.5 GB without disconnections; I don't
|
||||||
|
know the hard value, it seems to vary, so just have some tries
|
||||||
|
and report me what you discover in case you detect something.
|
||||||
|
|
||||||
|
--useheader="X-Gmail-Received" --useheader "Message-Id" are not
|
||||||
|
mandatory. I use them because I found (several years ago, it may
|
||||||
|
have changed) that Gmail always adds a different header
|
||||||
|
"X-Gmail-Received:" to all messages it gets. So the identification
|
||||||
|
by imapsync can not fall using this header. "Message-Id" is there
|
||||||
|
for safety about this Gmail rule.
|
||||||
|
|
||||||
|
|
||||||
If your destination imap server doesn't like "[Gmail]" name, just add
|
If your destination imap server doesn't like "[Gmail]" name, just add
|
||||||
option:
|
option:
|
||||||
@ -1779,6 +1786,27 @@ unselect all "System labels".
|
|||||||
exceed maximum limit.
|
exceed maximum limit.
|
||||||
See http://support.google.com/a/bin/answer.py?hl=en&answer=1071518
|
See http://support.google.com/a/bin/answer.py?hl=en&answer=1071518
|
||||||
|
|
||||||
|
--skipcrossduplicates is optional but it can save Gigabytes of hard
|
||||||
|
disk memory. Within imap protocol, Gmail presents Gmail labels as
|
||||||
|
folders so a message labeled "Work" "ProjectX" "Urgent" ends up
|
||||||
|
in three different imap folders "Work" "ProjectX" and "Urgent"
|
||||||
|
after an imap sync. --skipcrossduplicates prevent this behavior.
|
||||||
|
|
||||||
|
An issue with --skipcrossduplicates is that the first label synced
|
||||||
|
by imapsync goes to its corresponding folder and other labels are
|
||||||
|
ignored. This way, at least you can choose what labels have the
|
||||||
|
priority by using the --folderfirst option. For example
|
||||||
|
--folderfirst "Work" will sync messages labeled "Work" before
|
||||||
|
messages labeled "CanWait" or "Urgent". By default imapsync
|
||||||
|
syncs folders (Gmail labels) using the classical alphanumeric order.
|
||||||
|
|
||||||
|
--folderlast "CanWait" will sync only messages that have the
|
||||||
|
label CanWait and only it.
|
||||||
|
|
||||||
|
--folderlast "[Gmail]/All Mail", in conjonction with option
|
||||||
|
--skipcrossduplicates, will only put in "[Gmail]/All Mail"
|
||||||
|
the messages that are not labeled at all.
|
||||||
|
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. How to use XOAUTH to globally authenticate gmail users?
|
Q. How to use XOAUTH to globally authenticate gmail users?
|
||||||
@ -1826,6 +1854,43 @@ http://www.linux-france.org/prj/imapsync_list/msg00639.html
|
|||||||
http://biasecurities.com/blog/2009/migrate-email-from-gmail-to-google-apps/
|
http://biasecurities.com/blog/2009/migrate-email-from-gmail-to-google-apps/
|
||||||
http://www.thamtech.com/blog/2008/03/29/gmail-to-google-apps-email-migration/
|
http://www.thamtech.com/blog/2008/03/29/gmail-to-google-apps-email-migration/
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. From Zimbra to XXX
|
||||||
|
|
||||||
|
imapsync ... \
|
||||||
|
--exclude "Conversation Action Settings" \
|
||||||
|
--exclude "Quick Step Settings" \
|
||||||
|
--exclude "News Feed"
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. From or to HMailServer version 4.4.1.
|
||||||
|
|
||||||
|
R. You have to add prefix and separator manually because 4.4.1 doesn't
|
||||||
|
honor the NAMESPACE imap command.
|
||||||
|
|
||||||
|
Example for host1:
|
||||||
|
|
||||||
|
imapsync ... \
|
||||||
|
--prefix1 "" --sep1 .
|
||||||
|
|
||||||
|
No specific option for HMailServer 5.3.3 since NAMESPACE is supported.
|
||||||
|
|
||||||
|
Maybe --subscribe_all will help you to see all migrated folders.
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. Synchronizing from SmarterMail to XXX
|
||||||
|
|
||||||
|
imapsync --host1 imap.d1.org --user1 joe --password1 secret1 --sep1 "/" \
|
||||||
|
--host2 imap.d2.org --user2 joe --password2 secret2 \
|
||||||
|
--prefix1 "" \
|
||||||
|
--regextrans2 "s#Sent Items$#Sent#" \
|
||||||
|
--dry --justfolders
|
||||||
|
|
||||||
|
Maybe add other --regextrans2 to change folder names and see the result.
|
||||||
|
When satisfied, run without --dry --justfolders
|
||||||
|
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. Synchronizing from Yahoo to XXX
|
Q. Synchronizing from Yahoo to XXX
|
||||||
|
|
||||||
|
10
Makefile
10
Makefile
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
# $Id: Makefile,v 1.139 2013/12/25 11:36:53 gilles Exp gilles $
|
# $Id: Makefile,v 1.141 2014/02/13 03:18:50 gilles Exp gilles $
|
||||||
|
|
||||||
.PHONY: help usage all
|
.PHONY: help usage all
|
||||||
|
|
||||||
@ -8,6 +8,10 @@ help: usage
|
|||||||
usage:
|
usage:
|
||||||
@echo " imapsync $(VERSION), You can do :"
|
@echo " imapsync $(VERSION), You can do :"
|
||||||
@echo "make install # as root"
|
@echo "make install # as root"
|
||||||
|
@echo "make install_dependencies # it installs needed Perl modules from CPAN"
|
||||||
|
@echo ""
|
||||||
|
@echo "All other goals are for the upstream developper"
|
||||||
|
|
||||||
@echo "make testf # run tests"
|
@echo "make testf # run tests"
|
||||||
@echo "make testv # run tests verbosely"
|
@echo "make testv # run tests verbosely"
|
||||||
@echo "make test_quick # few tests verbosely"
|
@echo "make test_quick # few tests verbosely"
|
||||||
@ -92,6 +96,9 @@ install: testp imapsync.1
|
|||||||
install imapsync.1 $(DESTDIR)$(PREFIX)/share/man/man1/imapsync.1
|
install imapsync.1 $(DESTDIR)$(PREFIX)/share/man/man1/imapsync.1
|
||||||
chmod 644 $(DESTDIR)$(PREFIX)/share/man/man1/imapsync.1
|
chmod 644 $(DESTDIR)$(PREFIX)/share/man/man1/imapsync.1
|
||||||
|
|
||||||
|
install_dependencies:
|
||||||
|
sh examples/install_modules_linux.sh
|
||||||
|
|
||||||
.PHONY: cidone ci
|
.PHONY: cidone ci
|
||||||
|
|
||||||
ci: cidone
|
ci: cidone
|
||||||
@ -345,6 +352,7 @@ upload_lfo:
|
|||||||
|
|
||||||
|
|
||||||
.valid.index.shtml: index.shtml
|
.valid.index.shtml: index.shtml
|
||||||
|
tidy -q index.shtml> /dev/null
|
||||||
validate --verbose index.shtml
|
validate --verbose index.shtml
|
||||||
touch .valid.index.shtml
|
touch .valid.index.shtml
|
||||||
|
|
||||||
|
7
README
7
README
@ -4,7 +4,7 @@ NAME
|
|||||||
More than 52 different IMAP server softwares supported with success, few
|
More than 52 different IMAP server softwares supported with success, few
|
||||||
failures.
|
failures.
|
||||||
|
|
||||||
$Revision: 1.580 $
|
$Revision: 1.584 $
|
||||||
|
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
To synchronize imap account "foo" on "imap.truc.org" to imap account
|
To synchronize imap account "foo" on "imap.truc.org" to imap account
|
||||||
@ -383,7 +383,8 @@ IMAP SERVERS
|
|||||||
- Samsung Contact IMAP server 8.5.0
|
- Samsung Contact IMAP server 8.5.0
|
||||||
- Scalix v10.1, 10.0.1.3, 11.0.0.431, 11.4.6
|
- Scalix v10.1, 10.0.1.3, 11.0.0.431, 11.4.6
|
||||||
- Sendmail Mail Store IMAP4rev1 (5.5.6/mstore-5-5-build-1874 [host1].
|
- Sendmail Mail Store IMAP4rev1 (5.5.6/mstore-5-5-build-1874 [host1].
|
||||||
- SmarterMail, Smarter Mail 5.0 Enterprise, Smarter Mail 5.5 [host1], SmarterMail Professional 10.2 [host1].
|
- SmarterMail, Smarter Mail 5.0 Enterprise, Smarter Mail 5.5 [host1],
|
||||||
|
SmarterMail Professional 10.2 [host1], Smarter Mail 11.7 [host1][host2].
|
||||||
- Softalk Workgroup Mail 7.6.4 [host1].
|
- Softalk Workgroup Mail 7.6.4 [host1].
|
||||||
- SunONE Messaging server 5.2, 6.0 (SUN JES - Java Enterprise System)
|
- SunONE Messaging server 5.2, 6.0 (SUN JES - Java Enterprise System)
|
||||||
- Sun Java(tm) System Messaging Server 6.2-2.05, 6.2-7.05, 6.3
|
- Sun Java(tm) System Messaging Server 6.2-2.05, 6.2-7.05, 6.3
|
||||||
@ -471,5 +472,5 @@ SIMILAR SOFTWARES
|
|||||||
|
|
||||||
Feedback (good or bad) will often be welcome.
|
Feedback (good or bad) will often be welcome.
|
||||||
|
|
||||||
$Id: imapsync,v 1.580 2013/12/25 02:52:36 gilles Exp gilles $
|
$Id: imapsync,v 1.584 2014/02/05 00:40:59 gilles Exp gilles $
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
1.580
|
1.584
|
||||||
|
@ -263,3 +263,9 @@
|
|||||||
1387941690 BEGIN 1.580 : mercredi 25 décembre 2013, 04:21:30 (UTC+0100)
|
1387941690 BEGIN 1.580 : mercredi 25 décembre 2013, 04:21:30 (UTC+0100)
|
||||||
1387967067 BEGIN 1.580 : mercredi 25 décembre 2013, 11:24:28 (UTC+0100)
|
1387967067 BEGIN 1.580 : mercredi 25 décembre 2013, 11:24:28 (UTC+0100)
|
||||||
1387967901 END 1.580 : mercredi 25 décembre 2013, 11:38:21 (UTC+0100)
|
1387967901 END 1.580 : mercredi 25 décembre 2013, 11:38:21 (UTC+0100)
|
||||||
|
1390615061 BEGIN 1.582 : samedi 25 janvier 2014, 02:57:41 (UTC+0100)
|
||||||
|
1390685504 END 1.582 : samedi 25 janvier 2014, 22:31:44 (UTC+0100)
|
||||||
|
1390874372 BEGIN 1.582 : mardi 28 janvier 2014, 02:59:33 (UTC+0100)
|
||||||
|
1390875240 END 1.582 : mardi 28 janvier 2014, 03:14:00 (UTC+0100)
|
||||||
|
1391561330 BEGIN 1.584 : mercredi 5 février 2014, 01:48:50 (UTC+0100)
|
||||||
|
1391562789 END 1.584 : mercredi 5 février 2014, 02:13:09 (UTC+0100)
|
||||||
|
Binary file not shown.
3
W/learn/imap_tcpdump
Normal file
3
W/learn/imap_tcpdump
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
|
||||||
|
tcpdump -s0 -A -i lo port imap
|
||||||
|
|
10
W/learn/longline
Executable file
10
W/learn/longline
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
|
||||||
|
# Generate messages with line lenght of 10000 11000 ... up to 99000 characters
|
||||||
|
for M in `count 10 99`; do
|
||||||
|
echo $M
|
||||||
|
{ echo Hello Guys; echo ; perl -e "print 'L' x ${M}000" ; echo; echo END; } \
|
||||||
|
| mail.mailutils -s "line of ${M}000 char" tata@localhost.
|
||||||
|
done
|
||||||
|
|
12
W/learn/longline_10000_11000
Executable file
12
W/learn/longline_10000_11000
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# $Id: longline_10000_11000,v 1.2 2014/01/15 02:21:38 gilles Exp gilles $
|
||||||
|
|
||||||
|
# Test Exchange limit for maxlinelenght
|
||||||
|
# Generate messages with line lenght of 10000 10100 ... up to 10990 characters
|
||||||
|
for M in `count 10 99`; do
|
||||||
|
echo $M
|
||||||
|
{ echo Hello Guys; echo ; perl -e "print 'L' x 10${M}0" ; echo; echo END; } \
|
||||||
|
| mail.mailutils -s "line of 10${M}0 characters" tata@localhost.
|
||||||
|
done
|
||||||
|
|
@ -28,7 +28,35 @@ Europe a un autre assujetti : Article 262 ter => Exoneration
|
|||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
echo paypal_bilan_bncexport2
|
|
||||||
|
echo paypal_bilan_tva_taux_20
|
||||||
|
paypal_bilan_tva_taux_20() {
|
||||||
|
# DID output diff between paypal_bilan_1.70 and 1.71
|
||||||
|
(
|
||||||
|
#set -x
|
||||||
|
perl -c /g/public_html/imapsync/W/paypal_reply/paypal_bilan || return 1
|
||||||
|
/g/public_html/imapsync/W/paypal_reply/paypal_bilan_1.70 --bnc --debug --details --debug_invoice --first_in 147 \
|
||||||
|
--avoid_numbers '292 293 643 644 731 732 1093
|
||||||
|
1330 1331 1332 1333 1334 1652 1653 2131 2132 2295 2296 2297 2298
|
||||||
|
2625 2626 2970 2971 2972 3093' \
|
||||||
|
/g/paypal/paypal_201[01234]_??_complet.csv \
|
||||||
|
> /g/var/paypal_bilan/tests/paypal_invoice.out1 2>&1
|
||||||
|
|
||||||
|
/g/public_html/imapsync/W/paypal_reply/paypal_bilan --bnc --debug --details --debug_invoice --first_in 147 \
|
||||||
|
--avoid_numbers '292 293 643 644 731 732 1093
|
||||||
|
1330 1331 1332 1333 1334 1652 1653 2131 2132 2295 2296 2297 2298
|
||||||
|
2625 2626 2970 2971 2972 3093' \
|
||||||
|
/g/paypal/paypal_201[01234]_??_complet.csv \
|
||||||
|
> /g/var/paypal_bilan/tests/paypal_invoice.out2 2>&1
|
||||||
|
|
||||||
|
echo diff /g/var/paypal_bilan/tests/paypal_invoice.out1 /g/var/paypal_bilan/tests/paypal_invoice.out2
|
||||||
|
diff /g/var/paypal_bilan/tests/paypal_invoice.out1 /g/var/paypal_bilan/tests/paypal_invoice.out2
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#echo paypal_bilan_bncexport2
|
||||||
paypal_bilan_bncexport2() {
|
paypal_bilan_bncexport2() {
|
||||||
# DID output diff between paypal_bilan_1.66 and 1.67
|
# DID output diff between paypal_bilan_1.66 and 1.67
|
||||||
(
|
(
|
||||||
@ -54,7 +82,7 @@ echo diff /g/var/paypal_bilan/tests/paypal_invoice.out1 /g/var/paypal_bilan/test
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
echo paypal_bilan_bncexport
|
#echo paypal_bilan_bncexport
|
||||||
paypal_bilan_bncexport() {
|
paypal_bilan_bncexport() {
|
||||||
# DID output diff between paypal_bilan_1.66 and 1.67
|
# DID output diff between paypal_bilan_1.66 and 1.67
|
||||||
(
|
(
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
|
|
||||||
# $Id: paypal_bilan,v 1.68 2013/06/07 06:59:41 gilles Exp gilles $
|
# $Id: paypal_bilan,v 1.72 2014/01/18 01:38:35 gilles Exp gilles $
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
@ -13,7 +13,7 @@ use Test::More 'no_plan' ;
|
|||||||
|
|
||||||
die unless (utf8_supported_charset('ISO-8859-1'));
|
die unless (utf8_supported_charset('ISO-8859-1'));
|
||||||
|
|
||||||
my $rcs = '$Id: paypal_bilan,v 1.68 2013/06/07 06:59:41 gilles Exp gilles $ ' ;
|
my $rcs = '$Id: paypal_bilan,v 1.72 2014/01/18 01:38:35 gilles Exp gilles $ ' ;
|
||||||
$rcs =~ m/,v (\d+\.\d+)/ ;
|
$rcs =~ m/,v (\d+\.\d+)/ ;
|
||||||
my $VERSION = ($1) ? $1: "UNKNOWN" ;
|
my $VERSION = ($1) ? $1: "UNKNOWN" ;
|
||||||
|
|
||||||
@ -140,7 +140,7 @@ foreach my $invoice ( @invoices_wanted ) {
|
|||||||
|
|
||||||
if ( $invoice_sent ) {
|
if ( $invoice_sent ) {
|
||||||
$invoice_sent{ $invoice }++ ;
|
$invoice_sent{ $invoice }++ ;
|
||||||
#build_invoice( $invoice ) ;
|
build_invoice( $invoice ) if ( $debug_invoice or $debug_invoice_utf8 ) ;
|
||||||
}elsif( not ( $invoice_canceled{ $invoice } or $invoice_refund{ $invoice } ) ) {
|
}elsif( not ( $invoice_canceled{ $invoice } or $invoice_refund{ $invoice } ) ) {
|
||||||
$invoice_not_sent{ $invoice }++ ;
|
$invoice_not_sent{ $invoice }++ ;
|
||||||
build_invoice( $invoice ) ;
|
build_invoice( $invoice ) ;
|
||||||
@ -371,10 +371,11 @@ sub tests_exportbnc {
|
|||||||
|
|
||||||
sub tests {
|
sub tests {
|
||||||
tests_next_invoice( ) ;
|
tests_next_invoice( ) ;
|
||||||
#tests_half( ) ;
|
|
||||||
tests_cut( ) ;
|
tests_cut( ) ;
|
||||||
tests_invoice_00000( ) ;
|
tests_invoice_00000( ) ;
|
||||||
tests_exportbnc( ) ;
|
#tests_exportbnc( ) ;
|
||||||
|
tests_tva_rate( ) ;
|
||||||
|
tests_tva_rate_str( ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub compute_line {
|
sub compute_line {
|
||||||
@ -677,7 +678,7 @@ sub build_invoice {
|
|||||||
$priceTTCusd,
|
$priceTTCusd,
|
||||||
$HTorTTC
|
$HTorTTC
|
||||||
)
|
)
|
||||||
= tva_stuff( $clientTypeEN, $Pays, $Hors_taxe, $Devise, $Titre_de_l_objet ) ;
|
= tva_stuff( $clientTypeEN, $Pays, $Hors_taxe, $Devise, $Titre_de_l_objet, $Date ) ;
|
||||||
|
|
||||||
my $object_type = object_type( $Titre_de_l_objet ) ;
|
my $object_type = object_type( $Titre_de_l_objet ) ;
|
||||||
|
|
||||||
@ -1058,6 +1059,62 @@ sub date_aaaa_mm_jj {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub tva_rate {
|
||||||
|
my $date_aaaa_mm_jj = shift ;
|
||||||
|
|
||||||
|
if ( '2014_01_01' gt $date_aaaa_mm_jj ) {
|
||||||
|
#print "tva_rate 0.196\n" ;
|
||||||
|
#return( 0 ) ;
|
||||||
|
return( 0.196 ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( '2014_01_01' le $date_aaaa_mm_jj ) {
|
||||||
|
#print "tva_rate 0.2\n" ;
|
||||||
|
return( 0.2 ) ;
|
||||||
|
}
|
||||||
|
#print "tva_rate 0\n" ;
|
||||||
|
return( 0 ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub tests_tva_rate {
|
||||||
|
ok( 0.196 == tva_rate( '2013_01_01' ), 'tva_rate: old 0.196' ) ;
|
||||||
|
ok( 0.196 == tva_rate( '2013_12_31' ), 'tva_rate: old 0.196' ) ;
|
||||||
|
ok( 0.2 == tva_rate( '2014_01_01' ), 'tva_rate: new 0.2' ) ;
|
||||||
|
ok( 0.2 == tva_rate( '2014_12_31' ), 'tva_rate: new 0.2' ) ;
|
||||||
|
ok( 0.2 == tva_rate( '2050_01_01' ), 'tva_rate: new 0.2' ) ;
|
||||||
|
ok( 0.2 == tva_rate( '2050_12_31' ), 'tva_rate: new 0.2' ) ;
|
||||||
|
return( 0 ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub tva_rate_str {
|
||||||
|
my $date_aaaa_mm_jj = shift ;
|
||||||
|
|
||||||
|
if ( '2014_01_01' gt $date_aaaa_mm_jj ) {
|
||||||
|
#print "tva_rate 0.196\n" ;
|
||||||
|
return( '19,60\%' ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( '2014_01_01' le $date_aaaa_mm_jj ) {
|
||||||
|
return( '20\%' ) ;
|
||||||
|
}
|
||||||
|
#print "tva_rate 0\n" ;
|
||||||
|
return( '' ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub tests_tva_rate_str {
|
||||||
|
ok( '19,60\%' eq tva_rate_str( '2013_01_01' ), 'tva_rate_str: old 0.196' ) ;
|
||||||
|
ok( '19,60\%' eq tva_rate_str( '2013_12_31' ), 'tva_rate_str: old 0.196' ) ;
|
||||||
|
ok( '20,00\%' eq tva_rate_str( '2014_01_01' ), 'tva_rate_str: new 0.2' ) ;
|
||||||
|
ok( '20,00\%' eq tva_rate_str( '2014_12_31' ), 'tva_rate_str: new 0.2' ) ;
|
||||||
|
ok( '20,00\%' eq tva_rate_str( '2050_01_01' ), 'tva_rate_str: new 0.2' ) ;
|
||||||
|
ok( '20,00\%' eq tva_rate_str( '2050_12_31' ), 'tva_rate_str: new 0.2' ) ;
|
||||||
|
return( 0 ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sub tva_line {
|
sub tva_line {
|
||||||
my( $Devise, $Montant2, $Pays, $Nom_Option_1, $Valeur_Option_1, $Titre_de_l_objet, $Date ) = @_ ;
|
my( $Devise, $Montant2, $Pays, $Nom_Option_1, $Valeur_Option_1, $Titre_de_l_objet, $Date ) = @_ ;
|
||||||
my( $montant_HT_EUR_exo, $montant_HT_EUR_ass, $montant_TVA_EUR ) = ( 0, 0, 0 ) ;
|
my( $montant_HT_EUR_exo, $montant_HT_EUR_ass, $montant_TVA_EUR ) = ( 0, 0, 0 ) ;
|
||||||
@ -1080,8 +1137,8 @@ sub tva_line {
|
|||||||
or
|
or
|
||||||
( 'France' eq $Pays )
|
( 'France' eq $Pays )
|
||||||
) {
|
) {
|
||||||
$montant_HT_EUR_ass = $Montant2 / 1.196 ;
|
$montant_HT_EUR_ass = $Montant2 / ( 1 + tva_rate( $date_aaaa_mm_jj ) ) ;
|
||||||
$montant_TVA_EUR = $Montant2 / 1.196 * 0.196 ;
|
$montant_TVA_EUR = $Montant2 / ( 1 + tva_rate( $date_aaaa_mm_jj ) ) * tva_rate( $date_aaaa_mm_jj ) ;
|
||||||
$debug_dev and print "$Montant2 $Pays $Valeur_Option_1\n" ;
|
$debug_dev and print "$Montant2 $Pays $Valeur_Option_1\n" ;
|
||||||
}else{
|
}else{
|
||||||
$montant_HT_EUR_exo = $Montant2 ;
|
$montant_HT_EUR_exo = $Montant2 ;
|
||||||
@ -1096,8 +1153,8 @@ sub tva_line {
|
|||||||
or
|
or
|
||||||
( '2013_02_19' gt $date_aaaa_mm_jj )
|
( '2013_02_19' gt $date_aaaa_mm_jj )
|
||||||
) {
|
) {
|
||||||
$montant_HT_EUR_sup = $Montant2 / 1.196 ;
|
$montant_HT_EUR_sup = $Montant2 / ( 1 + tva_rate( $date_aaaa_mm_jj ) ) ;
|
||||||
$montant_TVA_EUR_sup = $Montant2 / 1.196 * 0.196 ;
|
$montant_TVA_EUR_sup = $Montant2 / ( 1 + tva_rate( $date_aaaa_mm_jj ) ) * tva_rate( $date_aaaa_mm_jj ) ;
|
||||||
}else{
|
}else{
|
||||||
$montant_HT_EUR_sup_exo = $Montant2 ;
|
$montant_HT_EUR_sup_exo = $Montant2 ;
|
||||||
}
|
}
|
||||||
@ -1109,10 +1166,12 @@ sub tva_line {
|
|||||||
|
|
||||||
|
|
||||||
sub tva_stuff {
|
sub tva_stuff {
|
||||||
my( $clientTypeEN, $Pays, $Hors_taxe, $Devise, $Titre_de_l_objet ) = @_ ;
|
my( $clientTypeEN, $Pays, $Hors_taxe, $Devise, $Titre_de_l_objet, $Date ) = @_ ;
|
||||||
|
|
||||||
my $priceTTCusd = '' ;
|
my $priceTTCusd = '' ;
|
||||||
$Hors_taxe =~ s{,}{.} ;
|
$Hors_taxe =~ s{,}{.} ;
|
||||||
|
|
||||||
|
my $date_aaaa_mm_jj = date_aaaa_mm_jj( $Date ) ;
|
||||||
|
|
||||||
if ( $Devise eq 'USD' ) {
|
if ( $Devise eq 'USD' ) {
|
||||||
$priceTTCusd = "(usd $Hors_taxe)" ;
|
$priceTTCusd = "(usd $Hors_taxe)" ;
|
||||||
@ -1134,10 +1193,10 @@ sub tva_stuff {
|
|||||||
or
|
or
|
||||||
( 'France' eq $Pays )
|
( 'France' eq $Pays )
|
||||||
) {
|
) {
|
||||||
$priceHT = sprintf('%2.2f', $Hors_taxe/1.196) ;
|
$priceHT = sprintf('%2.2f', $Hors_taxe / ( 1 + tva_rate( $date_aaaa_mm_jj ) ) ) ;
|
||||||
$tvaFR = '19,60\%';
|
$tvaFR = tva_rate_str( $date_aaaa_mm_jj ) ;
|
||||||
$tvaEN = '';
|
$tvaEN = '' ;
|
||||||
$priceTVA = sprintf('%2.2f', $Hors_taxe/1.196*0.196) ;
|
$priceTVA = sprintf('%2.2f', $Hors_taxe / ( 1 + tva_rate( $date_aaaa_mm_jj ) ) * tva_rate( $date_aaaa_mm_jj ) ) ;
|
||||||
$priceTTC = sprintf('%2.2f', $Hors_taxe) ;
|
$priceTTC = sprintf('%2.2f', $Hors_taxe) ;
|
||||||
$HTorTTC = 'TTC' ;
|
$HTorTTC = 'TTC' ;
|
||||||
$messageTVAFR = '' ;
|
$messageTVAFR = '' ;
|
||||||
@ -1246,19 +1305,6 @@ $addr = "
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
sub half {
|
|
||||||
my $string = shift ;
|
|
||||||
my $half = int( lenght( $string ) / 2 ) ;
|
|
||||||
# TO BE DONE
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
sub tests_half {
|
|
||||||
my( $aa, $bb ) = half( 'aa bb' ) ;
|
|
||||||
ok( 'aa' eq $aa, 'half: aa' ) ;
|
|
||||||
ok( 'bb' eq $bb, 'half: bb' ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub cut {
|
sub cut {
|
||||||
my $string = shift ;
|
my $string = shift ;
|
||||||
my $offset = shift ;
|
my $offset = shift ;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
|
|
||||||
# $Id: paypal_bilan,v 1.66 2013/03/26 19:50:20 gilles Exp gilles $
|
# $Id: paypal_bilan,v 1.70 2014/01/17 15:27:11 gilles Exp gilles $
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
@ -13,7 +13,7 @@ use Test::More 'no_plan' ;
|
|||||||
|
|
||||||
die unless (utf8_supported_charset('ISO-8859-1'));
|
die unless (utf8_supported_charset('ISO-8859-1'));
|
||||||
|
|
||||||
my $rcs = '$Id: paypal_bilan,v 1.66 2013/03/26 19:50:20 gilles Exp gilles $ ' ;
|
my $rcs = '$Id: paypal_bilan,v 1.70 2014/01/17 15:27:11 gilles Exp gilles $ ' ;
|
||||||
$rcs =~ m/,v (\d+\.\d+)/ ;
|
$rcs =~ m/,v (\d+\.\d+)/ ;
|
||||||
my $VERSION = ($1) ? $1: "UNKNOWN" ;
|
my $VERSION = ($1) ? $1: "UNKNOWN" ;
|
||||||
|
|
||||||
@ -87,10 +87,9 @@ if ( $tests ) {
|
|||||||
|
|
||||||
|
|
||||||
my @files = @ARGV ;
|
my @files = @ARGV ;
|
||||||
my %action_of_invoice ;
|
my %action_invoice ;
|
||||||
|
|
||||||
my %invoice_paypal ;
|
my %invoice_paypal ;
|
||||||
#$invoice_paypal{ $first_invoice } = 1 ;
|
|
||||||
|
|
||||||
my @invoices_wanted = split( /\s+/, $invoices ) if $invoices ;
|
my @invoices_wanted = split( /\s+/, $invoices ) if $invoices ;
|
||||||
|
|
||||||
@ -100,41 +99,24 @@ my %avoid_numbers ;
|
|||||||
|
|
||||||
#print "@invoices\n" ;
|
#print "@invoices\n" ;
|
||||||
|
|
||||||
|
my @actions ;
|
||||||
|
|
||||||
foreach my $file ( @files ) {
|
foreach my $file ( @files ) {
|
||||||
|
|
||||||
my @actions = parse_file( $file ) ;
|
my @actions_file = parse_file( $file ) ;
|
||||||
|
push( @actions, @actions_file ) ;
|
||||||
foreach my $action (@actions) {
|
|
||||||
my %action = %$action ;
|
|
||||||
#print $action->{ Nom }, "\n" ;
|
|
||||||
my( $Date, $Heure, $Fuseau_horaire, $Nom, $Type, $Etat,
|
|
||||||
$Devise, $Montant, $Numero_davis_de_reception, $Solde,
|
|
||||||
$Pays, $Nom_Option_1, $Valeur_Option_1, $Hors_taxe, $Titre_de_l_objet, $Nom_Option_2, $Option_2_Valeur,
|
|
||||||
$Impact_sur_le_solde )
|
|
||||||
= @action{ ( 'Date', 'Heure', 'Fuseau horaire', 'Nom', 'Type', 'Etat',
|
|
||||||
'Devise', 'Montant', "Numéro d'avis de réception", 'Solde',
|
|
||||||
'Pays', 'Nom Option 1', 'Valeur Option 1', 'Hors taxe', "Titre de l'objet", 'Nom Option 2', 'Option 2 Valeur',
|
|
||||||
'Impact sur le solde') } ;
|
|
||||||
#print "[$Option_2_Valeur] [$Impact_sur_le_solde]\n" ;
|
|
||||||
#next;
|
|
||||||
( $Etat ) = @action{ ( 'Etat' ) } || @action{ ( 'État' ) } ;
|
|
||||||
( $Hors_taxe ) = @action{ ( 'Hors taxe' ) } || @action{ ( 'Avant commission' ) } ;
|
|
||||||
$Impact_sur_le_solde ||= '' ;
|
|
||||||
|
|
||||||
my $invoice = 'NONE' ;
|
|
||||||
$Montant = $action->{ 'Net' } if not defined $Montant;
|
|
||||||
# compute_line() adds $action->{ 'invoice' } if needed
|
|
||||||
compute_line( $action, $invoice, $Date, $Heure, $Fuseau_horaire, $Nom, $Type, $Etat,
|
|
||||||
$Devise, $Montant, $Numero_davis_de_reception, $Solde,
|
|
||||||
$Pays, $Nom_Option_1, $Valeur_Option_1, $Hors_taxe, $Titre_de_l_objet,
|
|
||||||
$Impact_sur_le_solde ) ;
|
|
||||||
|
|
||||||
# index by invoice number
|
|
||||||
$action_of_invoice{ $action->{ 'invoice' } } = $action ;
|
|
||||||
}
|
|
||||||
delete $action_of_invoice{ 'NONE' } ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach my $action (@actions) {
|
||||||
|
# compute_line() adds $action->{ 'invoice' } if needed
|
||||||
|
compute_line( $action ) ;
|
||||||
|
|
||||||
|
# index by invoice number
|
||||||
|
$action_invoice{ $action->{ 'invoice' } } = $action ;
|
||||||
|
}
|
||||||
|
delete $action_invoice{ 'NONE' } ;
|
||||||
|
|
||||||
|
|
||||||
my $last_invoice ;
|
my $last_invoice ;
|
||||||
my @invoice_paypal = sort { $a <=> $b } keys %invoice_paypal ;
|
my @invoice_paypal = sort { $a <=> $b } keys %invoice_paypal ;
|
||||||
$last_invoice = $invoice_paypal[-1] || 0 ;
|
$last_invoice = $invoice_paypal[-1] || 0 ;
|
||||||
@ -149,7 +131,7 @@ my %invoice_not_sent ;
|
|||||||
|
|
||||||
foreach my $invoice ( @invoices_wanted ) {
|
foreach my $invoice ( @invoices_wanted ) {
|
||||||
|
|
||||||
my $action = $action_of_invoice{ $invoice } ;
|
my $action = $action_invoice{ $invoice } ;
|
||||||
next if ! $action ;
|
next if ! $action ;
|
||||||
my $email_address = $action->{ "De l'adresse email" } ;
|
my $email_address = $action->{ "De l'adresse email" } ;
|
||||||
|
|
||||||
@ -158,7 +140,7 @@ foreach my $invoice ( @invoices_wanted ) {
|
|||||||
|
|
||||||
if ( $invoice_sent ) {
|
if ( $invoice_sent ) {
|
||||||
$invoice_sent{ $invoice }++ ;
|
$invoice_sent{ $invoice }++ ;
|
||||||
#build_invoice( $invoice ) ;
|
build_invoice( $invoice ) if ( $debug_invoice or $debug_invoice_utf8 ) ;
|
||||||
}elsif( not ( $invoice_canceled{ $invoice } or $invoice_refund{ $invoice } ) ) {
|
}elsif( not ( $invoice_canceled{ $invoice } or $invoice_refund{ $invoice } ) ) {
|
||||||
$invoice_not_sent{ $invoice }++ ;
|
$invoice_not_sent{ $invoice }++ ;
|
||||||
build_invoice( $invoice ) ;
|
build_invoice( $invoice ) ;
|
||||||
@ -385,18 +367,38 @@ sub tests_exportbnc {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sub tests {
|
sub tests {
|
||||||
tests_next_invoice( ) ;
|
tests_next_invoice( ) ;
|
||||||
#tests_half( ) ;
|
|
||||||
tests_cut( ) ;
|
tests_cut( ) ;
|
||||||
tests_invoice_00000( ) ;
|
tests_invoice_00000( ) ;
|
||||||
tests_exportbnc( ) ;
|
#tests_exportbnc( ) ;
|
||||||
|
tests_tva_rate( ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub compute_line {
|
sub compute_line {
|
||||||
my( $action, $invoice, $Date, $Heure, $Fuseau_horaire, $Nom, $Type, $Etat,
|
|
||||||
$Devise, $Montant, $Numero_davis_de_reception, $Solde,
|
my $action = shift ;
|
||||||
$Pays, $Nom_Option_1, $Valeur_Option_1, $Hors_taxe_paypal, $Titre_de_l_objet, $Impact_sur_le_solde ) = @_ ;
|
my %action = %$action ;
|
||||||
|
|
||||||
|
my( $Date, $Heure, $Fuseau_horaire, $Nom, $Type, $Etat,
|
||||||
|
$Devise, $Montant, $Numero_davis_de_reception, $Solde,
|
||||||
|
$Pays, $Nom_Option_1, $Valeur_Option_1, $Hors_taxe_paypal, $Titre_de_l_objet, $Nom_Option_2, $Option_2_Valeur,
|
||||||
|
$Impact_sur_le_solde )
|
||||||
|
= @action{ ( 'Date', 'Heure', 'Fuseau horaire', 'Nom', 'Type', 'Etat',
|
||||||
|
'Devise', 'Montant', "Numéro d'avis de réception", 'Solde',
|
||||||
|
'Pays', 'Nom Option 1', 'Valeur Option 1', 'Hors taxe', "Titre de l'objet", 'Nom Option 2', 'Option 2 Valeur',
|
||||||
|
'Impact sur le solde') } ;
|
||||||
|
#print "[$Option_2_Valeur] [$Impact_sur_le_solde]\n" ;
|
||||||
|
#next;
|
||||||
|
( $Etat ) = @action{ ( 'Etat' ) } || @action{ ( 'État' ) } ;
|
||||||
|
( $Hors_taxe_paypal ) = @action{ ( 'Hors taxe' ) } || @action{ ( 'Avant commission' ) } ;
|
||||||
|
$Impact_sur_le_solde ||= '' ;
|
||||||
|
|
||||||
|
my $invoice = 'NONE' ;
|
||||||
|
$Montant = $action->{ 'Net' } if not defined $Montant;
|
||||||
|
|
||||||
|
|
||||||
$debug and print( "#" x 78, "\n",
|
$debug and print( "#" x 78, "\n",
|
||||||
"[$Date] [$Heure] [$Fuseau_horaire] [$Nom] [$Type] [$Etat] ",
|
"[$Date] [$Heure] [$Fuseau_horaire] [$Nom] [$Type] [$Etat] ",
|
||||||
@ -437,7 +439,7 @@ sub compute_line {
|
|||||||
$total_HT_EUR_exo += $montant_HT_EUR_exo ;
|
$total_HT_EUR_exo += $montant_HT_EUR_exo ;
|
||||||
$total_HT_EUR_ass += $montant_HT_EUR_ass ;
|
$total_HT_EUR_ass += $montant_HT_EUR_ass ;
|
||||||
$total_TVA_EUR += $montant_TVA_EUR ;
|
$total_TVA_EUR += $montant_TVA_EUR ;
|
||||||
#$invoice = $first_invoice + $nb_invoice ;
|
|
||||||
$invoice = next_invoice( ) ;
|
$invoice = next_invoice( ) ;
|
||||||
$nb_invoice++ ;
|
$nb_invoice++ ;
|
||||||
$print_details and print ( "[$invoice] [$Date] [$Heure] [$Fuseau_horaire] [$Nom] [$Type] [$Etat] [$Devise] [$Montant] [$Numero_davis_de_reception] [$Solde] [$Impact_sur_le_solde]\n" ) ;
|
$print_details and print ( "[$invoice] [$Date] [$Heure] [$Fuseau_horaire] [$Nom] [$Type] [$Etat] [$Devise] [$Montant] [$Numero_davis_de_reception] [$Solde] [$Impact_sur_le_solde]\n" ) ;
|
||||||
@ -465,8 +467,6 @@ sub compute_line {
|
|||||||
$total_TVA_EUR_sup += $montant_TVA_EUR_sup ;
|
$total_TVA_EUR_sup += $montant_TVA_EUR_sup ;
|
||||||
$total_HT_EUR_sup_exo += $montant_HT_EUR_sup_exo ;
|
$total_HT_EUR_sup_exo += $montant_HT_EUR_sup_exo ;
|
||||||
|
|
||||||
|
|
||||||
#$invoice = $first_invoice + $nb_invoice ;
|
|
||||||
$invoice = next_invoice( ) ;
|
$invoice = next_invoice( ) ;
|
||||||
$nb_invoice++ ;
|
$nb_invoice++ ;
|
||||||
$print_details and print ( "[$invoice] [$Date] [$Heure] [$Fuseau_horaire] [$Nom] [$Type] [$Etat] [$Devise] [$Montant] [$Numero_davis_de_reception] [$Solde] [$Impact_sur_le_solde]\n" ) ;
|
$print_details and print ( "[$invoice] [$Date] [$Heure] [$Fuseau_horaire] [$Nom] [$Type] [$Etat] [$Devise] [$Montant] [$Numero_davis_de_reception] [$Solde] [$Impact_sur_le_solde]\n" ) ;
|
||||||
@ -576,7 +576,7 @@ sub build_invoice {
|
|||||||
|
|
||||||
return if ! $invoice ;
|
return if ! $invoice ;
|
||||||
|
|
||||||
my $action = $action_of_invoice{ $invoice } ;
|
my $action = $action_invoice{ $invoice } ;
|
||||||
my $refund = '' ;
|
my $refund = '' ;
|
||||||
$refund = 'REFUND ' if $invoice_refund{ $invoice } ;
|
$refund = 'REFUND ' if $invoice_refund{ $invoice } ;
|
||||||
my %action = %$action if $action ;
|
my %action = %$action if $action ;
|
||||||
@ -677,7 +677,7 @@ sub build_invoice {
|
|||||||
$priceTTCusd,
|
$priceTTCusd,
|
||||||
$HTorTTC
|
$HTorTTC
|
||||||
)
|
)
|
||||||
= tva_stuff( $clientTypeEN, $Pays, $Hors_taxe, $Devise, $Titre_de_l_objet ) ;
|
= tva_stuff( $clientTypeEN, $Pays, $Hors_taxe, $Devise, $Titre_de_l_objet, $Date ) ;
|
||||||
|
|
||||||
my $object_type = object_type( $Titre_de_l_objet ) ;
|
my $object_type = object_type( $Titre_de_l_objet ) ;
|
||||||
|
|
||||||
@ -813,6 +813,9 @@ Hello $name,
|
|||||||
|
|
||||||
First of all, I'm sorry for the delay in getting back to you.
|
First of all, I'm sorry for the delay in getting back to you.
|
||||||
|
|
||||||
|
Last imapsync release is available from the page
|
||||||
|
http://imapsync.lamiral.info/paypal_return.shtml
|
||||||
|
|
||||||
You'll find in the attachment the invoice of imapsync
|
You'll find in the attachment the invoice of imapsync
|
||||||
software you bought and paid (dd/mm/yyyy $date).
|
software you bought and paid (dd/mm/yyyy $date).
|
||||||
The invoice file is named facture_imapsync-${invoice}.pdf
|
The invoice file is named facture_imapsync-${invoice}.pdf
|
||||||
@ -851,6 +854,9 @@ Hello $name,
|
|||||||
|
|
||||||
First of all, I'm sorry for the delay in getting back to you.
|
First of all, I'm sorry for the delay in getting back to you.
|
||||||
|
|
||||||
|
Last imapsync release is available from the page
|
||||||
|
http://imapsync.lamiral.info/paypal_return.shtml
|
||||||
|
|
||||||
You'll find in the attachment the invoice of imapsync
|
You'll find in the attachment the invoice of imapsync
|
||||||
support you bought and paid (dd/mm/yyyy $date).
|
support you bought and paid (dd/mm/yyyy $date).
|
||||||
The invoice file is named facture_imapsync-${invoice}.pdf
|
The invoice file is named facture_imapsync-${invoice}.pdf
|
||||||
@ -1052,6 +1058,34 @@ sub date_aaaa_mm_jj {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub tva_rate {
|
||||||
|
my $date_aaaa_mm_jj = shift ;
|
||||||
|
|
||||||
|
if ( '2014_01_01' gt $date_aaaa_mm_jj ) {
|
||||||
|
#print "tva_rate 0.196\n" ;
|
||||||
|
#return( 0 ) ;
|
||||||
|
return( 0.196 ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( '2014_01_01' le $date_aaaa_mm_jj ) {
|
||||||
|
#print "tva_rate 0.2\n" ;
|
||||||
|
return( 0.2 ) ;
|
||||||
|
}
|
||||||
|
#print "tva_rate 0\n" ;
|
||||||
|
return( 0 ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub tests_tva_rate {
|
||||||
|
ok( 0.196 == tva_rate( '2013_01_01' ), 'tva_rate: old 0.196' ) ;
|
||||||
|
ok( 0.196 == tva_rate( '2013_12_31' ), 'tva_rate: old 0.196' ) ;
|
||||||
|
ok( 0.2 == tva_rate( '2014_01_01' ), 'tva_rate: new 0.2' ) ;
|
||||||
|
ok( 0.2 == tva_rate( '2014_12_31' ), 'tva_rate: new 0.2' ) ;
|
||||||
|
ok( 0.2 == tva_rate( '2050_01_01' ), 'tva_rate: new 0.2' ) ;
|
||||||
|
ok( 0.2 == tva_rate( '2050_12_31' ), 'tva_rate: new 0.2' ) ;
|
||||||
|
return( 0 ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
sub tva_line {
|
sub tva_line {
|
||||||
my( $Devise, $Montant2, $Pays, $Nom_Option_1, $Valeur_Option_1, $Titre_de_l_objet, $Date ) = @_ ;
|
my( $Devise, $Montant2, $Pays, $Nom_Option_1, $Valeur_Option_1, $Titre_de_l_objet, $Date ) = @_ ;
|
||||||
my( $montant_HT_EUR_exo, $montant_HT_EUR_ass, $montant_TVA_EUR ) = ( 0, 0, 0 ) ;
|
my( $montant_HT_EUR_exo, $montant_HT_EUR_ass, $montant_TVA_EUR ) = ( 0, 0, 0 ) ;
|
||||||
@ -1074,8 +1108,8 @@ sub tva_line {
|
|||||||
or
|
or
|
||||||
( 'France' eq $Pays )
|
( 'France' eq $Pays )
|
||||||
) {
|
) {
|
||||||
$montant_HT_EUR_ass = $Montant2 / 1.196 ;
|
$montant_HT_EUR_ass = $Montant2 / ( 1 + tva_rate( $date_aaaa_mm_jj ) ) ;
|
||||||
$montant_TVA_EUR = $Montant2 / 1.196 * 0.196 ;
|
$montant_TVA_EUR = $Montant2 / ( 1 + tva_rate( $date_aaaa_mm_jj ) ) * tva_rate( $date_aaaa_mm_jj ) ;
|
||||||
$debug_dev and print "$Montant2 $Pays $Valeur_Option_1\n" ;
|
$debug_dev and print "$Montant2 $Pays $Valeur_Option_1\n" ;
|
||||||
}else{
|
}else{
|
||||||
$montant_HT_EUR_exo = $Montant2 ;
|
$montant_HT_EUR_exo = $Montant2 ;
|
||||||
@ -1090,8 +1124,8 @@ sub tva_line {
|
|||||||
or
|
or
|
||||||
( '2013_02_19' gt $date_aaaa_mm_jj )
|
( '2013_02_19' gt $date_aaaa_mm_jj )
|
||||||
) {
|
) {
|
||||||
$montant_HT_EUR_sup = $Montant2 / 1.196 ;
|
$montant_HT_EUR_sup = $Montant2 / ( 1 + tva_rate( $date_aaaa_mm_jj ) ) ;
|
||||||
$montant_TVA_EUR_sup = $Montant2 / 1.196 * 0.196 ;
|
$montant_TVA_EUR_sup = $Montant2 / ( 1 + tva_rate( $date_aaaa_mm_jj ) ) * tva_rate( $date_aaaa_mm_jj ) ;
|
||||||
}else{
|
}else{
|
||||||
$montant_HT_EUR_sup_exo = $Montant2 ;
|
$montant_HT_EUR_sup_exo = $Montant2 ;
|
||||||
}
|
}
|
||||||
@ -1103,10 +1137,12 @@ sub tva_line {
|
|||||||
|
|
||||||
|
|
||||||
sub tva_stuff {
|
sub tva_stuff {
|
||||||
my( $clientTypeEN, $Pays, $Hors_taxe, $Devise, $Titre_de_l_objet ) = @_ ;
|
my( $clientTypeEN, $Pays, $Hors_taxe, $Devise, $Titre_de_l_objet, $Date ) = @_ ;
|
||||||
|
|
||||||
my $priceTTCusd = '' ;
|
my $priceTTCusd = '' ;
|
||||||
$Hors_taxe =~ s{,}{.} ;
|
$Hors_taxe =~ s{,}{.} ;
|
||||||
|
|
||||||
|
my $date_aaaa_mm_jj = date_aaaa_mm_jj( $Date ) ;
|
||||||
|
|
||||||
if ( $Devise eq 'USD' ) {
|
if ( $Devise eq 'USD' ) {
|
||||||
$priceTTCusd = "(usd $Hors_taxe)" ;
|
$priceTTCusd = "(usd $Hors_taxe)" ;
|
||||||
@ -1128,10 +1164,10 @@ sub tva_stuff {
|
|||||||
or
|
or
|
||||||
( 'France' eq $Pays )
|
( 'France' eq $Pays )
|
||||||
) {
|
) {
|
||||||
$priceHT = sprintf('%2.2f', $Hors_taxe/1.196) ;
|
$priceHT = sprintf('%2.2f', $Hors_taxe / ( 1 + tva_rate( $date_aaaa_mm_jj ) ) ) ;
|
||||||
$tvaFR = '19,60\%';
|
$tvaFR = '19,60\%';
|
||||||
$tvaEN = '';
|
$tvaEN = '';
|
||||||
$priceTVA = sprintf('%2.2f', $Hors_taxe/1.196*0.196) ;
|
$priceTVA = sprintf('%2.2f', $Hors_taxe / ( 1 + tva_rate( $date_aaaa_mm_jj ) ) * tva_rate( $date_aaaa_mm_jj ) ) ;
|
||||||
$priceTTC = sprintf('%2.2f', $Hors_taxe) ;
|
$priceTTC = sprintf('%2.2f', $Hors_taxe) ;
|
||||||
$HTorTTC = 'TTC' ;
|
$HTorTTC = 'TTC' ;
|
||||||
$messageTVAFR = '' ;
|
$messageTVAFR = '' ;
|
||||||
@ -1240,19 +1276,6 @@ $addr = "
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
sub half {
|
|
||||||
my $string = shift ;
|
|
||||||
my $half = int( lenght( $string ) / 2 ) ;
|
|
||||||
# TO BE DONE
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
sub tests_half {
|
|
||||||
my( $aa, $bb ) = half( 'aa bb' ) ;
|
|
||||||
ok( 'aa' eq $aa, 'half: aa' ) ;
|
|
||||||
ok( 'bb' eq $bb, 'half: bb' ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub cut {
|
sub cut {
|
||||||
my $string = shift ;
|
my $string = shift ;
|
||||||
my $offset = shift ;
|
my $offset = shift ;
|
@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# $Id: paypal_build_invoices,v 1.60 2013/12/14 17:30:04 gilles Exp gilles $
|
# $Id: paypal_build_invoices,v 1.63 2014/01/18 01:26:53 gilles Exp gilles $
|
||||||
|
|
||||||
# usage: sh paypal_build_invoices /g/var/paypal_invoices/????
|
# usage: sh paypal_build_invoices /g/var/paypal_invoices/????
|
||||||
|
|
||||||
@ -44,7 +44,9 @@ cp /home/gilles/public_html/AGIL/factures/000/facture_imapsync-000.tex /g/var/pa
|
|||||||
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 2820 /g/paypal/paypal_2013_09_complet.csv
|
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 2820 /g/paypal/paypal_2013_09_complet.csv
|
||||||
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 2891 /g/paypal/paypal_2013_10_complet.csv
|
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 2891 /g/paypal/paypal_2013_10_complet.csv
|
||||||
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 2973 /g/paypal/paypal_2013_11_complet.csv
|
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 2973 /g/paypal/paypal_2013_11_complet.csv
|
||||||
/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 3040 /g/paypal/paypal_2013_12_complet.csv
|
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 3040 /g/paypal/paypal_2013_12_complet.csv
|
||||||
|
|
||||||
|
/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 3094 /g/paypal/paypal_2014_01_complet.csv
|
||||||
|
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 147 /g/paypal/paypal_2010_11_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 147 /g/paypal/paypal_2010_11_complet.csv
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 214 /g/paypal/paypal_2010_12_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 214 /g/paypal/paypal_2010_12_complet.csv
|
||||||
@ -82,22 +84,26 @@ cp /home/gilles/public_html/AGIL/factures/000/facture_imapsync-000.tex /g/var/pa
|
|||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 2741 /g/paypal/paypal_2013_08_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 2741 /g/paypal/paypal_2013_08_complet.csv
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 2820 /g/paypal/paypal_2013_09_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 2820 /g/paypal/paypal_2013_09_complet.csv
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 2891 /g/paypal/paypal_2013_10_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 2891 /g/paypal/paypal_2013_10_complet.csv
|
||||||
|
|
||||||
set -x
|
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 2973 /g/paypal/paypal_2013_11_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 2973 /g/paypal/paypal_2013_11_complet.csv
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 3040 /g/paypal/paypal_2013_12_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 3040 /g/paypal/paypal_2013_12_complet.csv
|
||||||
|
|
||||||
|
set -x
|
||||||
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 3094 /g/paypal/paypal_2014_01_complet.csv
|
||||||
set +x
|
set +x
|
||||||
|
|
||||||
# La totale
|
# La totale
|
||||||
|
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --bnc --debug \
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --bnc --debug \
|
||||||
--first_in 147 --avoid_numbers '292 293 643 644 731 732 1093 1330 1331 1332 1333 1334 1652 1653 2131 2132 2295 2296 2297 2298 2625 2626 2970 2971 2972' \
|
--first_in 147 --avoid_numbers '292 293 643 644 731 732 1093
|
||||||
|
1330 1331 1332 1333 1334 1652 1653 2131 2132 2295 2296 2297 2298
|
||||||
|
2625 2626 2970 2971 2972 3093' \
|
||||||
/g/paypal/paypal_201?_??_complet.csv
|
/g/paypal/paypal_201?_??_complet.csv
|
||||||
|
|
||||||
set -v
|
set -v
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan \
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan \
|
||||||
--first_in 147 --avoid_numbers '292 293 643 644 731 732 1093 1330 1331 1332 1333 1334 1652 1653 2131 2132 2295 2296 2297 2298 2625 2626 2970 2971 2972' \
|
--first_in 147 --avoid_numbers '292 293 643 644 731 732 1093
|
||||||
|
1330 1331 1332 1333 1334 1652 1653 2131 2132 2295 2296 2297 2298
|
||||||
|
2625 2626 2970 2971 2972 3093' \
|
||||||
/g/paypal/paypal_201?_??_complet.csv
|
/g/paypal/paypal_201?_??_complet.csv
|
||||||
set +v
|
set +v
|
||||||
|
|
||||||
|
10
examples/imapsync_example.sh
Normal file
10
examples/imapsync_example.sh
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# imapsync example shell for Unix users
|
||||||
|
# lines beginning with # are just comments
|
||||||
|
|
||||||
|
# Replace imap.foo.org toto secretoto 192.168.42.4 titi secretiti with your own values
|
||||||
|
|
||||||
|
./imapsync --host1 imap.foo.org --user1 toto --password1 "secretoto" \
|
||||||
|
--host2 192.168.42.4 --user2 titi --password2 "secretiti"
|
||||||
|
|
205
imapsync
205
imapsync
@ -22,7 +22,7 @@ Synchronises mailboxes between two imap servers.
|
|||||||
Good at IMAP migration. More than 52 different IMAP server softwares
|
Good at IMAP migration. More than 52 different IMAP server softwares
|
||||||
supported with success, few failures.
|
supported with success, few failures.
|
||||||
|
|
||||||
$Revision: 1.580 $
|
$Revision: 1.584 $
|
||||||
|
|
||||||
=head1 SYNOPSIS
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
@ -433,7 +433,8 @@ Success stories reported with the following 57 imap servers
|
|||||||
- Samsung Contact IMAP server 8.5.0
|
- Samsung Contact IMAP server 8.5.0
|
||||||
- Scalix v10.1, 10.0.1.3, 11.0.0.431, 11.4.6
|
- Scalix v10.1, 10.0.1.3, 11.0.0.431, 11.4.6
|
||||||
- Sendmail Mail Store IMAP4rev1 (5.5.6/mstore-5-5-build-1874 [host1].
|
- Sendmail Mail Store IMAP4rev1 (5.5.6/mstore-5-5-build-1874 [host1].
|
||||||
- SmarterMail, Smarter Mail 5.0 Enterprise, Smarter Mail 5.5 [host1], SmarterMail Professional 10.2 [host1].
|
- SmarterMail, Smarter Mail 5.0 Enterprise, Smarter Mail 5.5 [host1],
|
||||||
|
SmarterMail Professional 10.2 [host1], Smarter Mail 11.7 [host1][host2].
|
||||||
- Softalk Workgroup Mail 7.6.4 [host1].
|
- Softalk Workgroup Mail 7.6.4 [host1].
|
||||||
- SunONE Messaging server 5.2, 6.0 (SUN JES - Java Enterprise System)
|
- SunONE Messaging server 5.2, 6.0 (SUN JES - Java Enterprise System)
|
||||||
- Sun Java(tm) System Messaging Server 6.2-2.05, 6.2-7.05, 6.3
|
- Sun Java(tm) System Messaging Server 6.2-2.05, 6.2-7.05, 6.3
|
||||||
@ -541,7 +542,7 @@ Entries for imapsync:
|
|||||||
|
|
||||||
Feedback (good or bad) will often be welcome.
|
Feedback (good or bad) will often be welcome.
|
||||||
|
|
||||||
$Id: imapsync,v 1.580 2013/12/25 02:52:36 gilles Exp gilles $
|
$Id: imapsync,v 1.584 2014/02/05 00:40:59 gilles Exp gilles $
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
@ -581,7 +582,7 @@ use IPC::Open3 'open3' ;
|
|||||||
my(
|
my(
|
||||||
$rcs, $pidfile, $pidfilelocking,
|
$rcs, $pidfile, $pidfilelocking,
|
||||||
$debug, $debugimap, $debugimap1, $debugimap2, $debugcontent, $debugflags,
|
$debug, $debugimap, $debugimap1, $debugimap2, $debugcontent, $debugflags,
|
||||||
$debugLIST, $debugsleep, $debugdev, $debugmemory,
|
$debugLIST, $debugsleep, $debugdev, $debugmemory, $debugmaxlinelength,
|
||||||
$nb_errors,
|
$nb_errors,
|
||||||
$host1, $host2, $port1, $port2,
|
$host1, $host2, $port1, $port2,
|
||||||
$user1, $user2, $domain1, $domain2,
|
$user1, $user2, $domain1, $domain2,
|
||||||
@ -664,6 +665,7 @@ my(
|
|||||||
$messageidnodomain,
|
$messageidnodomain,
|
||||||
$fixInboxINBOX,
|
$fixInboxINBOX,
|
||||||
$maxlinelength,
|
$maxlinelength,
|
||||||
|
$minmaxlinelength,
|
||||||
$uidnext_default,
|
$uidnext_default,
|
||||||
$fixcolonbug,
|
$fixcolonbug,
|
||||||
$create_folder_old,
|
$create_folder_old,
|
||||||
@ -676,7 +678,7 @@ my(
|
|||||||
|
|
||||||
# global variables initialisation
|
# global variables initialisation
|
||||||
|
|
||||||
$rcs = '$Id: imapsync,v 1.580 2013/12/25 02:52:36 gilles Exp gilles $ ';
|
$rcs = '$Id: imapsync,v 1.584 2014/02/05 00:40:59 gilles Exp gilles $ ';
|
||||||
|
|
||||||
$total_bytes_transferred = 0;
|
$total_bytes_transferred = 0;
|
||||||
$total_bytes_skipped = 0;
|
$total_bytes_skipped = 0;
|
||||||
@ -1029,8 +1031,11 @@ print "Host1 capability: ", join(" ", @{ $imap1->capability_update() || [] }), "
|
|||||||
print "Host2 capability: ", join(" ", @{ $imap2->capability_update() || [] }), "\n";
|
print "Host2 capability: ", join(" ", @{ $imap2->capability_update() || [] }), "\n";
|
||||||
|
|
||||||
|
|
||||||
exit_clean(0) if ($justlogin);
|
if ( $justlogin ) {
|
||||||
|
$imap1->logout( ) ;
|
||||||
|
$imap2->logout( ) ;
|
||||||
|
exit_clean( 0 ) ;
|
||||||
|
}
|
||||||
#
|
#
|
||||||
# Folder stuff
|
# Folder stuff
|
||||||
#
|
#
|
||||||
@ -1130,17 +1135,17 @@ $checkselectable and do {
|
|||||||
my($h1_sep,$h2_sep);
|
my($h1_sep,$h2_sep);
|
||||||
# what are the private folders separators for each server ?
|
# what are the private folders separators for each server ?
|
||||||
|
|
||||||
$debug and print "Getting separators\n";
|
$debug and print "Getting separators\n" ;
|
||||||
$h1_sep = get_separator($imap1, $sep1, "--sep1");
|
$h1_sep = get_separator( $imap1, $sep1, "--sep1", "Host1" ) ;
|
||||||
$h2_sep = get_separator($imap2, $sep2, "--sep2");
|
$h2_sep = get_separator( $imap2, $sep2, "--sep2", "Host2" ) ;
|
||||||
|
|
||||||
my($h1_prefix,$h2_prefix);
|
my( $h1_prefix, $h2_prefix ) ;
|
||||||
$h1_prefix = get_prefix($imap1, $prefix1, "--prefix1");
|
$h1_prefix = get_prefix( $imap1, $prefix1, "--prefix1", "Host1" ) ;
|
||||||
$h2_prefix = get_prefix($imap2, $prefix2, "--prefix2");
|
$h2_prefix = get_prefix( $imap2, $prefix2, "--prefix2", "Host2" ) ;
|
||||||
|
|
||||||
|
|
||||||
print "Host1 separator and prefix: [$h1_sep][$h1_prefix]\n";
|
print "Host1 separator and prefix: [$h1_sep][$h1_prefix]\n" ;
|
||||||
print "Host2 separator and prefix: [$h2_sep][$h2_prefix]\n";
|
print "Host2 separator and prefix: [$h2_sep][$h2_prefix]\n" ;
|
||||||
|
|
||||||
#my $h1_xlist_folders = $imap1->xlist_folders( ) ;
|
#my $h1_xlist_folders = $imap1->xlist_folders( ) ;
|
||||||
#my $h2_xlist_folders = $imap2->xlist_folders( ) ;
|
#my $h2_xlist_folders = $imap2->xlist_folders( ) ;
|
||||||
@ -1991,11 +1996,14 @@ sub connect_imap {
|
|||||||
$imap->Debug($mydebugimap);
|
$imap->Debug($mydebugimap);
|
||||||
$imap->connect()
|
$imap->connect()
|
||||||
or die_clean("Can not open imap connection on [$host]: $@\n");
|
or die_clean("Can not open imap connection on [$host]: $@\n");
|
||||||
#myconnect($imap)
|
|
||||||
# or die_clean("Can not open imap connection on [$host]: $@\n");
|
|
||||||
my $banner = $imap->Results()->[0] ;
|
my $banner = $imap->Results()->[0] ;
|
||||||
$imap->Banner( $banner ) ;
|
$imap->Banner( $banner ) ;
|
||||||
$imap->starttls( ) if ( $imap->Tls( ) ) ;
|
|
||||||
|
if ( $imap->Tls( ) ) {
|
||||||
|
$imap->starttls( )
|
||||||
|
or die_clean("Can not go to tls encryption on [$host]:", $imap->LastError, "\n" ) ;
|
||||||
|
}
|
||||||
return( $imap ) ;
|
return( $imap ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2083,7 +2091,10 @@ sub login_imap {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$imap->starttls( ) if ( $imap->Tls( ) ) ;
|
if ( $imap->Tls( ) ) {
|
||||||
|
$imap->starttls( )
|
||||||
|
or die_clean("Can not go to tls encryption on [$host]:", $imap->LastError, "\n" ) ;
|
||||||
|
}
|
||||||
|
|
||||||
authenticate_imap( $imap, @allargs ) ;
|
authenticate_imap( $imap, @allargs ) ;
|
||||||
|
|
||||||
@ -2173,12 +2184,13 @@ sub set_ssl {
|
|||||||
#
|
#
|
||||||
$SSL_version = $SSL_version || '' ;
|
$SSL_version = $SSL_version || '' ;
|
||||||
#print "[$SSL_version]\n" ;
|
#print "[$SSL_version]\n" ;
|
||||||
IO::Socket::SSL::set_ctx_defaults(
|
|
||||||
|
my $sslargs = [
|
||||||
SSL_verify_mode => 'SSL_VERIFY_PEER',
|
SSL_verify_mode => 'SSL_VERIFY_PEER',
|
||||||
SSL_verifycn_scheme => 'imap',
|
SSL_verifycn_scheme => 'imap',
|
||||||
SSL_version => $SSL_version,
|
SSL_version => $SSL_version,
|
||||||
) ;
|
] ;
|
||||||
$imap->Ssl( $ssl ) ;
|
$imap->Ssl( $sslargs ) ;
|
||||||
return( ) ;
|
return( ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2307,8 +2319,8 @@ sub banner_imapsync {
|
|||||||
my @argv = @_ ;
|
my @argv = @_ ;
|
||||||
my $banner_imapsync = join("",
|
my $banner_imapsync = join("",
|
||||||
'$RCSfile: imapsync,v $ ',
|
'$RCSfile: imapsync,v $ ',
|
||||||
'$Revision: 1.580 $ ',
|
'$Revision: 1.584 $ ',
|
||||||
'$Date: 2013/12/25 02:52:36 $ ',
|
'$Date: 2014/02/05 00:40:59 $ ',
|
||||||
"\n",localhost_info(), "\n",
|
"\n",localhost_info(), "\n",
|
||||||
"Command line used:\n",
|
"Command line used:\n",
|
||||||
"$0 ", command_line_nopassword( @argv ), "\n",
|
"$0 ", command_line_nopassword( @argv ), "\n",
|
||||||
@ -2680,59 +2692,86 @@ sub tests_compare_lists {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
sub get_prefix {
|
sub get_prefix {
|
||||||
my( $imap, $prefix_in, $prefix_opt ) = @_ ;
|
my( $imap, $prefix_in, $prefix_opt, $Side ) = @_ ;
|
||||||
my( $prefix_out ) ;
|
my( $prefix_out ) ;
|
||||||
|
|
||||||
$debug and print "Getting prefix namespace\n" ;
|
$debug and print "$Side: Getting prefix\n" ;
|
||||||
if ( defined( $prefix_in ) ) {
|
|
||||||
print "Using [$prefix_in] given by $prefix_opt\n" ;
|
$debug and print "$Side: Calling namespace capability\n" ;
|
||||||
$prefix_out = $prefix_in ;
|
|
||||||
return( $prefix_out ) ;
|
|
||||||
}
|
|
||||||
$debug and print "Calling namespace capability\n" ;
|
|
||||||
if ( $imap->has_capability( "namespace" ) ) {
|
if ( $imap->has_capability( "namespace" ) ) {
|
||||||
my $r_namespace = $imap->namespace( ) ;
|
my $r_namespace = $imap->namespace( ) ;
|
||||||
$prefix_out = $r_namespace->[0][0][0] ;
|
$prefix_out = $r_namespace->[0][0][0] ;
|
||||||
return($prefix_out) ;
|
print "$Side: prefix given by NAMESPACE: [$prefix_out]\n" ;
|
||||||
|
if ( defined( $prefix_in ) ) {
|
||||||
|
print "$Side: but using [$prefix_in] given by $prefix_opt\n" ;
|
||||||
|
$prefix_out = $prefix_in ;
|
||||||
|
return( $prefix_out ) ;
|
||||||
|
}else{
|
||||||
|
# all good
|
||||||
|
return( $prefix_out ) ;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
print
|
if ( defined( $prefix_in ) ) {
|
||||||
"No NAMESPACE capability in imap server ",
|
print "$Side: using [$prefix_in] given by $prefix_opt\n" ;
|
||||||
$imap->Server( ),"\n",
|
$prefix_out = $prefix_in ;
|
||||||
help_to_guess_prefix( $imap, $prefix_opt ) ;
|
return( $prefix_out ) ;
|
||||||
exit_clean( 1 ) ;
|
}else{
|
||||||
|
print
|
||||||
|
"$Side: No NAMESPACE capability in imap server ",
|
||||||
|
$imap->Server( ),"\n",
|
||||||
|
help_to_guess_prefix( $imap, $prefix_opt ) ;
|
||||||
|
exit_clean( 1 ) ;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return( ) ;
|
return( ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
sub get_separator {
|
sub get_separator {
|
||||||
my($imap, $sep_in, $sep_opt) = @_;
|
my( $imap, $sep_in, $sep_opt, $Side ) = @_ ;
|
||||||
my($sep_out);
|
my( $sep_out ) ;
|
||||||
|
|
||||||
|
|
||||||
if ( defined( $sep_in ) ) {
|
$debug and print "$Side: calling namespace capability\n" ;
|
||||||
print "Using [$sep_in] given by $sep_opt\n" ;
|
if ( $imap->has_capability( "namespace" ) ) {
|
||||||
$sep_out = $sep_in ;
|
|
||||||
return( $sep_out ) ;
|
|
||||||
}
|
|
||||||
$debug and print "Calling namespace capability\n" ;
|
|
||||||
if ($imap->has_capability( "namespace" ) ) {
|
|
||||||
$sep_out = $imap->separator( ) ;
|
$sep_out = $imap->separator( ) ;
|
||||||
return($sep_out) if defined $sep_out ;
|
if ( defined( $sep_out ) ) {
|
||||||
print
|
print "$Side: separator given by NAMESPACE: [$sep_out]\n" ;
|
||||||
"NAMESPACE request failed for ",
|
if ( defined( $sep_in ) ) {
|
||||||
$imap->Server(), ": ", $imap->LastError, "\n",
|
print "$Side: but using [$sep_in] given by $sep_opt\n" ;
|
||||||
help_to_guess_sep( $imap, $sep_opt ) ;
|
$sep_out = $sep_in ;
|
||||||
exit_clean( 1 ) ;
|
return( $sep_out ) ;
|
||||||
|
}else{
|
||||||
|
return( $sep_out ) ;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if ( defined( $sep_in ) ) {
|
||||||
|
print "$Side: NAMESPACE request failed but using [$sep_in] given by $sep_opt\n" ;
|
||||||
|
$sep_out = $sep_in ;
|
||||||
|
return( $sep_out ) ;
|
||||||
|
}else{
|
||||||
|
print
|
||||||
|
"$Side: NAMESPACE request failed for ",
|
||||||
|
$imap->Server(), ": ", $imap->LastError, "\n",
|
||||||
|
help_to_guess_sep( $imap, $sep_opt ) ;
|
||||||
|
exit_clean( 1 ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
print
|
if ( defined( $sep_in ) ) {
|
||||||
"No NAMESPACE capability in imap server ",
|
print "$Side: No NAMESPACE capability but using [$sep_in] given by $sep_opt\n" ;
|
||||||
$imap->Server(),"\n",
|
$sep_out = $sep_in ;
|
||||||
help_to_guess_sep( $imap, $sep_opt ) ;
|
return( $sep_out ) ;
|
||||||
exit_clean( 1 ) ;
|
}else{
|
||||||
|
print
|
||||||
|
"$Side: No NAMESPACE capability in imap server ",
|
||||||
|
$imap->Server(),"\n",
|
||||||
|
help_to_guess_sep( $imap, $sep_opt ) ;
|
||||||
|
exit_clean( 1 ) ;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return( ) ;
|
return( ) ;
|
||||||
}
|
}
|
||||||
@ -2941,7 +2980,8 @@ sub foldersizes {
|
|||||||
$nb_errors++ ;
|
$nb_errors++ ;
|
||||||
next ;
|
next ;
|
||||||
}
|
}
|
||||||
|
last if $imap->IsUnconnected() ;
|
||||||
|
|
||||||
my $hash_ref = { } ;
|
my $hash_ref = { } ;
|
||||||
my @msgs = select_msgs( $imap, undef, $search_cmd, $folder ) ;
|
my @msgs = select_msgs( $imap, undef, $search_cmd, $folder ) ;
|
||||||
$nb_msgs = scalar( @msgs ) ;
|
$nb_msgs = scalar( @msgs ) ;
|
||||||
@ -3474,6 +3514,8 @@ sub copy_message {
|
|||||||
|
|
||||||
|
|
||||||
if ( size_filtered( $h1_size, $h1_msg, $h1_fold, $h2_fold ) ) {
|
if ( size_filtered( $h1_size, $h1_msg, $h1_fold, $h2_fold ) ) {
|
||||||
|
$total_bytes_skipped += $h1_size;
|
||||||
|
$nb_msg_skipped += 1;
|
||||||
$h1_nb_msg_processed +=1 ;
|
$h1_nb_msg_processed +=1 ;
|
||||||
return( ) ;
|
return( ) ;
|
||||||
}
|
}
|
||||||
@ -3483,6 +3525,8 @@ sub copy_message {
|
|||||||
|
|
||||||
|
|
||||||
if ( $checkmessageexists and not message_exists( $imap1, $h1_msg ) ) {
|
if ( $checkmessageexists and not message_exists( $imap1, $h1_msg ) ) {
|
||||||
|
$total_bytes_skipped += $h1_size;
|
||||||
|
$nb_msg_skipped += 1;
|
||||||
$h1_nb_msg_processed +=1 ;
|
$h1_nb_msg_processed +=1 ;
|
||||||
return( ) ;
|
return( ) ;
|
||||||
}
|
}
|
||||||
@ -3492,17 +3536,34 @@ sub copy_message {
|
|||||||
|
|
||||||
if ( not defined( $string ) and not defined( $string_len ) ) {
|
if ( not defined( $string ) and not defined( $string_len ) ) {
|
||||||
print "- msg $h1_fold/$h1_msg skipped. Could not be fetched\n" ;
|
print "- msg $h1_fold/$h1_msg skipped. Could not be fetched\n" ;
|
||||||
|
$total_bytes_skipped += $h1_size;
|
||||||
|
$nb_msg_skipped += 1;
|
||||||
|
$h1_nb_msg_processed +=1 ;
|
||||||
return( ) ;
|
return( ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Lines two long => do no copy
|
# Lines two long => do no copy
|
||||||
if ( ( defined ( $maxlinelength ) )
|
if ( defined ( $maxlinelength ) or defined ( $minmaxlinelength ) ) {
|
||||||
and ( max_line_length( $string ) > $maxlinelength ) ) {
|
my $maxlinelength_string = max_line_length( $string ) ;
|
||||||
my $subject = subject( $string ) ;
|
$debugmaxlinelength and print "msg $h1_fold/$h1_msg maxlinelength: $maxlinelength_string\n" ;
|
||||||
#print "[$subject]\n" ;
|
if ( defined ( $maxlinelength ) and ( $maxlinelength_string > $maxlinelength ) ) {
|
||||||
print "- msg $h1_fold/$h1_msg skipped S[$h1_size] F[$h1_flags] I[$h1_idate] "
|
my $subject = subject( $string ) ;
|
||||||
. "(Subject:[$subject]) (line length exceeds maxlinelength $maxlinelength bytes)\n" ;
|
print "- msg $h1_fold/$h1_msg skipped S[$h1_size] F[$h1_flags] I[$h1_idate] "
|
||||||
return( ) ;
|
. "(Subject:[$subject]) (line length exceeds maxlinelength $maxlinelength bytes)\n" ;
|
||||||
|
$h1_nb_msg_processed +=1 ;
|
||||||
|
$total_bytes_skipped += $h1_size;
|
||||||
|
$nb_msg_skipped += 1;
|
||||||
|
return( ) ;
|
||||||
|
}
|
||||||
|
if ( defined ( $minmaxlinelength ) and ( $maxlinelength_string <= $minmaxlinelength ) ) {
|
||||||
|
my $subject = subject( $string ) ;
|
||||||
|
$debugdev and print "- msg $h1_fold/$h1_msg skipped S[$h1_size] F[$h1_flags] I[$h1_idate] "
|
||||||
|
. "(Subject:[$subject]) (max line length under minmaxlinelength $minmaxlinelength bytes)\n" ;
|
||||||
|
$h1_nb_msg_processed +=1 ;
|
||||||
|
$total_bytes_skipped += $h1_size;
|
||||||
|
$nb_msg_skipped += 1;
|
||||||
|
return( ) ;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
my $h1_date = date_for_host2( $h1_msg, $h1_idate ) ;
|
my $h1_date = date_for_host2( $h1_msg, $h1_idate ) ;
|
||||||
@ -3530,6 +3591,8 @@ sub copy_message {
|
|||||||
return( $new_id ) ;
|
return( $new_id ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sub message_for_host2 {
|
sub message_for_host2 {
|
||||||
my ( $h1_msg, $h1_fold, $h1_size, $h1_flags, $h1_idate, $h1_fir_ref ) = @_ ;
|
my ( $h1_msg, $h1_fold, $h1_size, $h1_flags, $h1_idate, $h1_fir_ref ) = @_ ;
|
||||||
|
|
||||||
@ -4945,7 +5008,7 @@ sub check_last_release {
|
|||||||
}
|
}
|
||||||
|
|
||||||
sub imapsync_version {
|
sub imapsync_version {
|
||||||
my $rcs_imapsync = '$Id: imapsync,v 1.580 2013/12/25 02:52:36 gilles Exp gilles $ ' ;
|
my $rcs_imapsync = '$Id: imapsync,v 1.584 2014/02/05 00:40:59 gilles Exp gilles $ ' ;
|
||||||
my $imapsync_version ;
|
my $imapsync_version ;
|
||||||
|
|
||||||
if ( $rcs_imapsync =~ m{,v\s+(\d+\.\d+)}xo ) {
|
if ( $rcs_imapsync =~ m{,v\s+(\d+\.\d+)}xo ) {
|
||||||
@ -5846,7 +5909,7 @@ Several options are mandatory.
|
|||||||
--exitwhenover <int> : Stop syncing when total bytes transferred reached.
|
--exitwhenover <int> : Stop syncing when total bytes transferred reached.
|
||||||
Gmail per day allows 2500000000 down 500000000 upload.
|
Gmail per day allows 2500000000 down 500000000 upload.
|
||||||
|
|
||||||
--maxlinelength <int> : skip messages with line length longer than <int> bytes.
|
--maxlinelength <int> : skip messages with a line length longer than <int> bytes.
|
||||||
RFC 2822 says it must be no more than 1000 bytes.
|
RFC 2822 says it must be no more than 1000 bytes.
|
||||||
|
|
||||||
--useheader <string> : Use this header to compare messages on both sides.
|
--useheader <string> : Use this header to compare messages on both sides.
|
||||||
@ -5958,6 +6021,7 @@ sub get_options {
|
|||||||
"debugimap2!" => \$debugimap2,
|
"debugimap2!" => \$debugimap2,
|
||||||
"debugdev!" => \$debugdev,
|
"debugdev!" => \$debugdev,
|
||||||
"debugmemory!" => \$debugmemory,
|
"debugmemory!" => \$debugmemory,
|
||||||
|
"debugmaxlinelength!" => \$debugmaxlinelength,
|
||||||
"host1=s" => \$host1,
|
"host1=s" => \$host1,
|
||||||
"host2=s" => \$host2,
|
"host2=s" => \$host2,
|
||||||
"port1=i" => \$port1,
|
"port1=i" => \$port1,
|
||||||
@ -6075,6 +6139,7 @@ sub get_options {
|
|||||||
"abletosearch!" => \$abletosearch,
|
"abletosearch!" => \$abletosearch,
|
||||||
"showpasswords!" => \$showpasswords,
|
"showpasswords!" => \$showpasswords,
|
||||||
"maxlinelength=i" => \$maxlinelength,
|
"maxlinelength=i" => \$maxlinelength,
|
||||||
|
"minmaxlinelength=i" => \$minmaxlinelength,
|
||||||
"fixcolonbug!" => \$fixcolonbug,
|
"fixcolonbug!" => \$fixcolonbug,
|
||||||
"create_folder_old!" => \$create_folder_old,
|
"create_folder_old!" => \$create_folder_old,
|
||||||
"maxmessagespersecond=f" => \$maxmessagespersecond,
|
"maxmessagespersecond=f" => \$maxmessagespersecond,
|
||||||
|
67
imapsync_by_country.txt
Normal file
67
imapsync_by_country.txt
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
832 Etats-Unis d'Amérique
|
||||||
|
527 Allemagne
|
||||||
|
263 Royaume-Uni
|
||||||
|
145 Canada
|
||||||
|
143 France
|
||||||
|
137 Italie
|
||||||
|
118 Suisse
|
||||||
|
101 Australie
|
||||||
|
83 Pays-Bas
|
||||||
|
57 Autriche
|
||||||
|
53 Belgique
|
||||||
|
48 Suède
|
||||||
|
48 Espagne
|
||||||
|
36 Danemark
|
||||||
|
28 Brésil
|
||||||
|
27 Norvège
|
||||||
|
27 Finlande
|
||||||
|
22 Japon
|
||||||
|
15 République tchèque
|
||||||
|
14 Russie
|
||||||
|
14 Nouvelle-Zélande
|
||||||
|
14 Irlande
|
||||||
|
14
|
||||||
|
12 Portugal
|
||||||
|
12 Pologne
|
||||||
|
12 Hong-Kong
|
||||||
|
10 Inde
|
||||||
|
10 Hongrie
|
||||||
|
10 Argentine
|
||||||
|
9 Singapour
|
||||||
|
9 Luxembourg
|
||||||
|
9 Chine
|
||||||
|
9 Afrique du Sud
|
||||||
|
8 Grèce
|
||||||
|
7 Slovaquie
|
||||||
|
7 Mexique
|
||||||
|
7 Malaisie
|
||||||
|
7 Israel
|
||||||
|
6 Slovénie
|
||||||
|
6 Chili
|
||||||
|
5 Lettonie
|
||||||
|
4 Islande
|
||||||
|
4 Indonésie
|
||||||
|
4 Emirats Arabes Unis
|
||||||
|
3 Venezuela
|
||||||
|
3 Turquie
|
||||||
|
3 Thaïlande
|
||||||
|
3 Roumanie
|
||||||
|
3 Philippines
|
||||||
|
3 Malte
|
||||||
|
3 Croatie
|
||||||
|
2 Uruguay
|
||||||
|
2 Estonie
|
||||||
|
2 Egypte
|
||||||
|
2 Costa Rica
|
||||||
|
2 Chypre
|
||||||
|
1 Vietnam
|
||||||
|
1 Ukraine
|
||||||
|
1 Taiwan
|
||||||
|
1 Qatar
|
||||||
|
1 Panama
|
||||||
|
1 Namibie
|
||||||
|
1 Maldives
|
||||||
|
1 Lituanie
|
||||||
|
1 Koweït
|
||||||
|
1 Colombie
|
||||||
|
1 Bahreïn
|
138
index.shtml
138
index.shtml
@ -5,7 +5,7 @@
|
|||||||
<title>Official imapsync migration tool ( release <!--#exec cmd="cat ./VERSION"--> )</title>
|
<title>Official imapsync migration tool ( release <!--#exec cmd="cat ./VERSION"--> )</title>
|
||||||
<meta name="generator" content="Bluefish 1.0.7"/>
|
<meta name="generator" content="Bluefish 1.0.7"/>
|
||||||
<meta name="author" content="Gilles LAMIRAL"/>
|
<meta name="author" content="Gilles LAMIRAL"/>
|
||||||
<meta name="date" content="2013-12-25T12:16:53+0100"/>
|
<meta name="date" content="2014-02-13T03:57:24+0100"/>
|
||||||
<meta name="copyright" content="None"/>
|
<meta name="copyright" content="None"/>
|
||||||
<meta name="keywords" content="imap, transfert, migration"/>
|
<meta name="keywords" content="imap, transfert, migration"/>
|
||||||
<meta name="description" content="imap migration tool"/>
|
<meta name="description" content="imap migration tool"/>
|
||||||
@ -81,33 +81,36 @@ for <b>bidirectionnal (2 ways) synchronizations</b>.
|
|||||||
<p>Alternatives to imapsync are listed in the <a href="#similar"><b>Similar softwares</b></a> section.
|
<p>Alternatives to imapsync are listed in the <a href="#similar"><b>Similar softwares</b></a> section.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>Imapsync used to be free, open and gratis, before november 2010.
|
<p>Imapsync used to be free, open and gratis, that was before november 2010.
|
||||||
Now imapsync is free, open and not gratis from the homepage.
|
Now imapsync is free, open and not gratis from the homepage.
|
||||||
It is the best decision I've done about imapsync to continue to maintain it.
|
Imapsync is still under the <a href="./NOLIMIT">NOLIMIT</a> license,
|
||||||
|
claiming no limit to do anything with this work and this license,
|
||||||
|
so one of the most open license of the universe.
|
||||||
|
|
||||||
|
It is the best decisions I've made about imapsync to continue to maintain it.
|
||||||
See detailed explanation and motivation here when
|
See detailed explanation and motivation here when
|
||||||
<a href="http://www.linux-france.org/prj/imapsync_list/msg00459.html">I looked for a business model</a>.
|
<a href="http://www.linux-france.org/prj/imapsync_list/msg00459.html">I looked for a business model</a>.
|
||||||
|
|
||||||
"Download and donate if happy" doesn't work well.
|
"Download and donate if happy" doesn't work well.
|
||||||
"Pay for download and I pay back if unhappy" works well.
|
"Pay for download and I pay back if unhappy" works well, a 100 times better.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2><a id="NUMBERS"></a>Facts and figures for 2011-2013</h2>
|
<h2><a id="NUMBERS"></a>Facts and figures for 2011-2014</h2>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>4000 to 5000 </b>users per month (45000 users a year)</li>
|
<li><b>4000 to 5000 </b>users per month (48000 users a year).</li>
|
||||||
|
<li>6 to 25 millions mailboxes transfers per month.</li>
|
||||||
|
<li><b>158 millions</b> transfers for 2013, that is five whole mailboxes synced per second.</li>
|
||||||
|
|
||||||
<li><b>6 to 25 millions mailboxes transfers per month</b>,
|
<li><b>Operating systems</b> run by imapsync users (in 2013):
|
||||||
total is 93 millions for 2011, 91 millions for 2012, should be <b>140 millions for end 2013</b></li>
|
|
||||||
|
|
||||||
<li><b>Operating systems</b> run by imapsync users:
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>Linux: 72%</b></li>
|
<li><b>Linux: 70%</b></li>
|
||||||
<li><b>Win32: 13%</b></li>
|
<li><b>Win32: 14%</b></li>
|
||||||
<li><b>Darwin: 6%</b></li>
|
<li><b>Darwin: 6%</b></li>
|
||||||
<li>FreeBSD: 8%</li>
|
<li>FreeBSD: 10%</li>
|
||||||
<li>Solaris: 0.2%</li>
|
<li>Solaris: 0.15%</li>
|
||||||
<li>OpenBSD: 0.02%</li>
|
<li>OpenBSD: 0.02%</li>
|
||||||
<li>Other: 0.6%</li>
|
<li>Other: 0.46%</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><b>Highest use rate</b>: about <b>21 millions</b> of IMAP mailbox transfers (in a single month)</li>
|
<li><b>Highest use rate</b>: about <b>21 millions</b> of IMAP mailbox transfers (in a single month)</li>
|
||||||
@ -115,8 +118,8 @@ total is 93 millions for 2011, 91 millions for 2012, should be <b>140 millions f
|
|||||||
|
|
||||||
<p>
|
<p>
|
||||||
Where all those numbers come from?
|
Where all those numbers come from?
|
||||||
To know wether a newer imapsync exists or not imapsync does a http GET to <a href="http://imapsync.lamiral.info/VERSION">VERSION</a>.
|
To know wether a newer imapsync exists or not imapsync does a http GET to the file <a href="http://imapsync.lamiral.info/VERSION">VERSION</a>.
|
||||||
Via the <b>User-agent</b> parameter it also send:</p>
|
Via the <b>User-agent</b> parameter it also sends:</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>imapsync release</li>
|
<li>imapsync release</li>
|
||||||
@ -145,7 +148,7 @@ Via the <b>User-agent</b> parameter it also send:</p>
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>1.580</b></li>
|
<li><b>1.584</b></li>
|
||||||
<li><b>Enhancement</b>: </li>
|
<li><b>Enhancement</b>: </li>
|
||||||
<li><b>Enhancement</b>: </li>
|
<li><b>Enhancement</b>: </li>
|
||||||
<li><b>Enhancement</b>: </li>
|
<li><b>Enhancement</b>: </li>
|
||||||
@ -166,38 +169,33 @@ Via the <b>User-agent</b> parameter it also send:</p>
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>1.580</b></li>
|
<li><b>1.584</b></li>
|
||||||
<li><b>Enhancement</b>: Added <b>--maxmessagespersecond</b> to limit messages tranfer rate and fix <b>office365 throttle limitation</b> (use --maxmessagespersecond 4).</li>
|
<li><b>Enhancement</b>: Added --minmaxlinelength to select messages with long lines only.
|
||||||
<li><b>Enhancement</b>: Added --maxbytespersecond to limit byte transfer rate.</li>
|
It helps to diagnostic Echange error on messages with lines longer than 9000 characters</li>
|
||||||
<li><b>Enhancement</b>: Added --folderfirst string: Sync this folder first. --folderfirst "Work" --folderfirst "Friends"</li>
|
<li><b>Enhancement</b>: Added --debugmaxlinelength</li>
|
||||||
<li><b>Enhancement</b>: Added --folderlast string: Sync this folder last. --folderlast "[Gmail]/All Mail" etc.</li>
|
<li><b>Bug fix</b>: --ssl1 --tls2 was buggy because of default SSL_VERIFY_PEER.
|
||||||
<li><b>Enhancement</b>: Added <b>--skipcrossduplicates</b> to avoid copying messages that are already copied in another folder, good <b>from Gmail to X</b>.</li>
|
"Can not go to tls encryption on [localhost]:Unable to start TLS: Cannot determine peer hostname for verification..."</li>
|
||||||
<li><b>Enhancement</b>: Added --debugcrossduplicates to print which messages (UIDs) are skipped with --skipcrossduplicates (and in what other folders they are).</li>
|
<li><b>Bug fix</b>: Check if going to tls is ok, exit otherwise with explicit error message.
|
||||||
<li><b>Enhancement</b>: Added --debugmemory option that prints memory consumption after each message is copied.</li>
|
Thanks to Dennis Schridde for reporting this ugly bug that deserves a CVE.</li>
|
||||||
<li><b>Bug fix</b>: Create nested folders in the sense of their path, parent first. Thanks to Erik Torsner.</li>
|
<li><b>Debug</b>: Print separator given by NAMESPACE even when --sep1 oe --sep2 is used.</li>
|
||||||
<li><b>Bug fix</b>: Final statistics were avoided for newly created folders.</li>
|
<li><b>Debug</b>: Prints prefix given by NAMESPACE even when --prefix1 or --prefix2 is used.
|
||||||
<li><b>Bug fix</b>: Do not try to append message if the fetch failed.</li>
|
It is a preparation for advising not to use --prefix unless suggested.</li>
|
||||||
</ul>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><b>1.569</b> Win32 --tmpdir "C:" bugfix</li>
|
|
||||||
<li><b>Bug fix</b>: On Win32 trailing blanc in cache dir name raized an error. Blanc is now moved to underscore _</li>
|
|
||||||
<li><b>Bug fix</b>: Fixed bug on Windows with for example --tmpdir "E:\TEMP". The colon was badly converted to _, ending with --tmpdir "E_\TEMP".
|
|
||||||
This fix also automatically moves the old cache to the new one if the new does not exist yet.</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><b>1.567</b> imapsync.exe crash fix</li>
|
|
||||||
<li><b>Enhancement</b>: Added --authmech EXTERNAL.</li>
|
|
||||||
<li><b>Bug fix</b>: Fixed a warning when RFC822.SIZE is null or undef.</li>
|
|
||||||
<li><b>Bug fix</b>: Fixed imapsync.exe crash with no error message when it exits on a error. Back to Perl 5.16</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
<p><b>Good changed</b> made before, listed because <b>they can help</b>:
|
<p><b>Good changes</b> made before, listed because <b>they can help</b>:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
|
<li><b>Enhancement</b>: Added <b>--skipcrossduplicates</b> to avoid copying messages that are already copied in another folder, good <b>from Gmail to X</b>.</li>
|
||||||
|
<li><b>Enhancement</b>: Added --debugcrossduplicates to print which messages (UIDs) are skipped with --skipcrossduplicates (and in what other folders they are).</li>
|
||||||
|
<li><b>Enhancement</b>: Added --folderfirst string: sync this folder first. --folderfirst "Work" --folderfirst "Friends"</li>
|
||||||
|
<li><b>Enhancement</b>: Added --folderlast string: sync this folder last. --folderlast "[Gmail]/All Mail" etc.</li>
|
||||||
|
<li><b>Enhancement</b>: Added <b>--maxmessagespersecond</b> to limit messages tranfer rate and fix <b>Office365 throttle limitation</b> (use --maxmessagespersecond 4).</li>
|
||||||
|
<li><b>Enhancement</b>: Added --maxbytespersecond to limit byte transfer rate.</li>
|
||||||
|
<li><b>Enhancement</b>: Added --debugmemory option that prints memory consumption after each message is copied.</li>
|
||||||
|
|
||||||
|
<li><b>Enhancement</b>: Added --authmech EXTERNAL.</li>
|
||||||
<li><b>Enhancement</b>: Adapted behavior for allowing --maxdate --mindate with --noabletosearch.
|
<li><b>Enhancement</b>: Adapted behavior for allowing --maxdate --mindate with --noabletosearch.
|
||||||
Use internat date instead of Date: header.</li>
|
Use internat date instead of Date: header.</li>
|
||||||
|
|
||||||
@ -299,13 +297,6 @@ by ignoring PERMANENTFLAGS (Exchange tests)</li>
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
<!--
|
|
||||||
<p>The next imapsync release should see:</p>
|
|
||||||
<ul>
|
|
||||||
<li>nothing planned</li>
|
|
||||||
</ul>
|
|
||||||
-->
|
|
||||||
|
|
||||||
<h2><a id="DOC_BASIC"></a>Simple transfer on Windows</h2>
|
<h2><a id="DOC_BASIC"></a>Simple transfer on Windows</h2>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -346,6 +337,31 @@ example.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<h2><a id="buy_all"></a>Buy imapsync</h2>
|
||||||
|
|
||||||
|
<p>Buy complete and <b>latest imapsync</b> for <b>50 EUR</b> and optionnaly full professional support for <b>100 EUR</b>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
For 50 EUR you will get:
|
||||||
|
<ul>
|
||||||
|
<li>Standalone <b>imapsync.exe</b> for win32, no installation needed.</li>
|
||||||
|
<li>imapsync Perl <b>source code</b>.</li>
|
||||||
|
<li><b>Lifetime</b> of imapsync <b>updates</b> without extra payment.</li>
|
||||||
|
<li><b>30 days money-back guarantee!</b>, any reason qualifies.</li>
|
||||||
|
</ul>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
For 100 EUR more you will get imapsync <b>full support</b>
|
||||||
|
done by the imapsync designer and developper himself.
|
||||||
|
You will be able to expose your issues by email
|
||||||
|
or phone and then we'll work together until complete success.
|
||||||
|
</p>
|
||||||
|
-->
|
||||||
|
|
||||||
<h2><a id="buy_source"></a>Buy imapsync source code</h2>
|
<h2><a id="buy_source"></a>Buy imapsync source code</h2>
|
||||||
|
|
||||||
<p>Buy <b>latest</b> imapsync Perl <b>source code</b> for <b>50 EUR</b>
|
<p>Buy <b>latest</b> imapsync Perl <b>source code</b> for <b>50 EUR</b>
|
||||||
@ -391,7 +407,7 @@ name="submit" alt="PayPal - The safer, easier way to pay online!"/>
|
|||||||
</p>
|
</p>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<p>You will receive a <b>download link just after</b> the payment from gilles.lamiral@laposte.net (can fall in Spam folder sometimes).<br/>
|
<p>You will receive a <b>download link just after</b> the payment from <b>gilles.lamiral@laposte.net</b> (can fall in Spam folder sometimes).<br/>
|
||||||
You will also receive a gpg signed <b>invoice</b> within <b>a few days by email</b>.<br/>
|
You will also receive a gpg signed <b>invoice</b> within <b>a few days by email</b>.<br/>
|
||||||
Please give a <b>delivery postal address where the invoice will be needed</b>
|
Please give a <b>delivery postal address where the invoice will be needed</b>
|
||||||
(your company for example), since reedit is not easy (and forbidden by law).
|
(your company for example), since reedit is not easy (and forbidden by law).
|
||||||
@ -440,7 +456,7 @@ name="submit" alt="PayPal - The safer, easier way to pay online!"/>
|
|||||||
</p>
|
</p>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<p>You will receive a download link <b>just after</b> the payment, from gilles.lamiral@laposte.net (can fall in Spam folder sometimes).<br/>
|
<p>You will receive a download link <b>just after</b> the payment, from <b>gilles.lamiral@laposte.net</b> (can fall in Spam folder sometimes).<br/>
|
||||||
You will also receive a gpg signed <b>invoice</b> within <b>a few days by email</b>.<br/>
|
You will also receive a gpg signed <b>invoice</b> within <b>a few days by email</b>.<br/>
|
||||||
Please give a <b>delivery postal address where the invoice will be needed</b>
|
Please give a <b>delivery postal address where the invoice will be needed</b>
|
||||||
(your company for example), since reedit is not easy (and forbidden by law).
|
(your company for example), since reedit is not easy (and forbidden by law).
|
||||||
@ -449,7 +465,7 @@ Please give a <b>delivery postal address where the invoice will be needed</b>
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
<p>
|
<p>
|
||||||
thanks to Strawberry Perl 5.12 and Par::Packer module.<br/>
|
thanks to Strawberry Perl 5.16 and Par::Packer module.<br/>
|
||||||
The build system for imapsync.exe is XP Pro SP2 on a Intel Celeron 400 MHz 256 Mo RAM. </p>
|
The build system for imapsync.exe is XP Pro SP2 on a Intel Celeron 400 MHz 256 Mo RAM. </p>
|
||||||
-->
|
-->
|
||||||
|
|
||||||
@ -496,7 +512,7 @@ It's 2 letters followed by 11 digits, for example mine is FR74429303332.
|
|||||||
</p>
|
</p>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<p>You will receive instructions to contact me <b>just after</b> the payment, from gilles.lamiral@laposte.net (can fall in Spam folder sometimes).<br/>
|
<p>You will receive instructions to contact me <b>just after</b> the payment, from <b>gilles.lamiral@laposte.net</b> (can fall in Spam folder sometimes).<br/>
|
||||||
You will also receive a gpg signed <b>invoice</b> within <b>a few days by email</b>.<br/>
|
You will also receive a gpg signed <b>invoice</b> within <b>a few days by email</b>.<br/>
|
||||||
Please give a <b>delivery postal address where the invoice will be needed</b>
|
Please give a <b>delivery postal address where the invoice will be needed</b>
|
||||||
(your company for example), since reedit is not easy (and forbidden by law).
|
(your company for example), since reedit is not easy (and forbidden by law).
|
||||||
@ -622,7 +638,7 @@ I like it.
|
|||||||
(<a href="http://www.communigate.com/">http://www.communigate.com/</a>) </li>
|
(<a href="http://www.communigate.com/">http://www.communigate.com/</a>) </li>
|
||||||
<li>Courier IMAP 1.5.1, 2.2.0, 2.1.1, 2.2.1, 3.0.8, 3.0.3, 4.1.1 (GPL)
|
<li>Courier IMAP 1.5.1, 2.2.0, 2.1.1, 2.2.1, 3.0.8, 3.0.3, 4.1.1 (GPL)
|
||||||
(<a href="http://www.courier-mta.org/imap/">http://www.courier-mta.org/imap/</a>) </li>
|
(<a href="http://www.courier-mta.org/imap/">http://www.courier-mta.org/imap/</a>) </li>
|
||||||
<li>Critical Path (7.0.020) (<a href=""></a>) </li>
|
<li>Critical Path (7.0.020) </li>
|
||||||
<li>Cyrus IMAP 1.5, 1.6,
|
<li>Cyrus IMAP 1.5, 1.6,
|
||||||
2.1, 2.1.15, 2.1.16, 2.1.18
|
2.1, 2.1.15, 2.1.16, 2.1.18
|
||||||
2.2.1, 2.2.2-BETA, 2.2.3, 2.2.6, 2.2.10, 2.2.12, 2.2.13,
|
2.2.1, 2.2.2-BETA, 2.2.3, 2.2.6, 2.2.10, 2.2.12, 2.2.13,
|
||||||
@ -635,7 +651,7 @@ I like it.
|
|||||||
<li>DBOX 2.41 System [host1] (<a href="http://www.dbox.handshake.de/">http://www.dbox.handshake.de/</a>).</li>
|
<li>DBOX 2.41 System [host1] (<a href="http://www.dbox.handshake.de/">http://www.dbox.handshake.de/</a>).</li>
|
||||||
<li>Deerfield VisNetic MailServer 5.8.6 [host1]
|
<li>Deerfield VisNetic MailServer 5.8.6 [host1]
|
||||||
(<a href="http://www.deerfield.net/products/visnetic-mailserver/">http://www.deerfield.net/products/visnetic-mailserver/</a>) </li>
|
(<a href="http://www.deerfield.net/products/visnetic-mailserver/">http://www.deerfield.net/products/visnetic-mailserver/</a>) </li>
|
||||||
<li>dkimap4 [host1] (<a href=""></a>) </li>
|
<li>dkimap4 [host1] </li>
|
||||||
<li>Domino (Notes) 4.61[host1], 6.5, 5.0.6, 5.0.7, 7.0.2, 6.0.2CF1, 7.0.1[host1], 8.0.1[host1]
|
<li>Domino (Notes) 4.61[host1], 6.5, 5.0.6, 5.0.7, 7.0.2, 6.0.2CF1, 7.0.1[host1], 8.0.1[host1]
|
||||||
(<a href="http://www-01.ibm.com/software/lotus/products/notes/">http://www-01.ibm.com/software/lotus/products/notes/</a>) </li>
|
(<a href="http://www-01.ibm.com/software/lotus/products/notes/">http://www-01.ibm.com/software/lotus/products/notes/</a>) </li>
|
||||||
<li><b>Dovecot</b> 0.99.10.4, 0.99.14, 0.99.14-8.fc4, 1.0-0.beta2.7,
|
<li><b>Dovecot</b> 0.99.10.4, 0.99.14, 0.99.14-8.fc4, 1.0-0.beta2.7,
|
||||||
@ -684,7 +700,9 @@ I like it.
|
|||||||
<li>Samsung Contact IMAP server 8.5.0 </li>
|
<li>Samsung Contact IMAP server 8.5.0 </li>
|
||||||
<li>Scalix v10.1, 10.0.1.3, 11.0.0.431, 11.4.6 (<a href="http://www.scalix.com/">http://www.scalix.com/</a>) </li>
|
<li>Scalix v10.1, 10.0.1.3, 11.0.0.431, 11.4.6 (<a href="http://www.scalix.com/">http://www.scalix.com/</a>) </li>
|
||||||
<li>Sendmail Mail Store IMAP4rev1 (5.5.6/mstore-5-5-build-1874 [host1].</li>
|
<li>Sendmail Mail Store IMAP4rev1 (5.5.6/mstore-5-5-build-1874 [host1].</li>
|
||||||
<li>SmarterMail, Smarter Mail 5.0 Enterprise, Smarter Mail 5.5 [host1], SmarterMail Professional 10.2 [host1]. (<a href="http://www.smartertools.com/">http://www.smartertools.com/</a>) </li>
|
<li>SmarterMail, Smarter Mail 5.0 Enterprise, Smarter Mail 5.5 [host1], SmarterMail Professional 10.2 [host1],
|
||||||
|
Smarter Mail 11.7 [host1][host2].
|
||||||
|
(<a href="http://www.smartertools.com/">http://www.smartertools.com/</a>) </li>
|
||||||
<li>Softalk Workgroup Mail 7.6.4 [host1] (<a href="http://www.softalkltd.com/products/download_wm_v7.asp">http://www.softalkltd.com/products/download_wm_v7.asp</a>).</li>
|
<li>Softalk Workgroup Mail 7.6.4 [host1] (<a href="http://www.softalkltd.com/products/download_wm_v7.asp">http://www.softalkltd.com/products/download_wm_v7.asp</a>).</li>
|
||||||
<li>SunONE Messaging server 5.2, 6.0 (SUN JES - Java Enterprise System) (<a href="http://www.oracle.com/">http://www.oracle.com/</a>) </li>
|
<li>SunONE Messaging server 5.2, 6.0 (SUN JES - Java Enterprise System) (<a href="http://www.oracle.com/">http://www.oracle.com/</a>) </li>
|
||||||
<li>Sun Java(tm) System Messaging Server 6.2-2.05, 6.2-7.05, 6.3 (<a href="http://www.oracle.com/">http://www.oracle.com/</a>) </li>
|
<li>Sun Java(tm) System Messaging Server 6.2-2.05, 6.2-7.05, 6.3 (<a href="http://www.oracle.com/">http://www.oracle.com/</a>) </li>
|
||||||
@ -720,6 +738,8 @@ I like it.
|
|||||||
<li> wonko_imapsync: <a href="http://wonko.com/article/554">http://wonko.com/article/554</a></li>
|
<li> wonko_imapsync: <a href="http://wonko.com/article/554">http://wonko.com/article/554</a></li>
|
||||||
<li> pop2imap: <a href="http://www.linux-france.org/prj/pop2imap/">http://www.linux-france.org/prj/pop2imap/</a></li>
|
<li> pop2imap: <a href="http://www.linux-france.org/prj/pop2imap/">http://www.linux-france.org/prj/pop2imap/</a></li>
|
||||||
<li> exchange-away: <a href="http://exchange-away.sourceforge.net/">http://exchange-away.sourceforge.net/</a></li>
|
<li> exchange-away: <a href="http://exchange-away.sourceforge.net/">http://exchange-away.sourceforge.net/</a></li>
|
||||||
|
<li> SyncBackPro <a href="http://www.2brightsparks.com/syncback/sbpro.html">http://www.2brightsparks.com/syncback/sbpro.html</a></li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h2>Online IMAP migration services</h2>
|
<h2>Online IMAP migration services</h2>
|
||||||
@ -766,7 +786,7 @@ alt="Viewable With Any Browser" />
|
|||||||
<!--#config timefmt="%D" -->
|
<!--#config timefmt="%D" -->
|
||||||
<!--#config timefmt="%A %B %d, %Y" -->
|
<!--#config timefmt="%A %B %d, %Y" -->
|
||||||
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
||||||
($Id: index.shtml,v 1.189 2013/12/25 11:35:38 gilles Exp gilles $)
|
($Id: index.shtml,v 1.195 2014/02/13 03:17:59 gilles Exp gilles $)
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
1163
perlcritic_2.out
1163
perlcritic_2.out
File diff suppressed because it is too large
Load Diff
@ -1,37 +1,37 @@
|
|||||||
Main code has high complexity score (350) at line 1, column 1. Consider refactoring. (Severity: 3)
|
Main code has high complexity score (350) at line 1, column 1. Consider refactoring. (Severity: 3)
|
||||||
Expression form of "map" at line 1096, column 51. See page 169 of PBP. (Severity: 4)
|
Expression form of "map" at line 1101, column 51. See page 169 of PBP. (Severity: 4)
|
||||||
Expression form of "map" at line 1106, column 51. See page 169 of PBP. (Severity: 4)
|
Expression form of "map" at line 1111, column 51. See page 169 of PBP. (Severity: 4)
|
||||||
Code structure is deeply nested at line 1542, column 41. Consider refactoring. (Severity: 3)
|
Code structure is deeply nested at line 1547, column 41. Consider refactoring. (Severity: 3)
|
||||||
Too many arguments at line 1722, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 1727, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Too many arguments at line 1740, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 1745, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Too many arguments at line 1750, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 1755, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Too many arguments at line 1984, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 1989, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Too many arguments at line 2039, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 2047, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Too many arguments at line 2095, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 2106, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Too many arguments at line 2185, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 2197, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $imap2 at line 2477, column 9. Invent unique variable names. (Severity: 3)
|
Reused variable name in lexical scope: $imap2 at line 2489, column 9. Invent unique variable names. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 2493, column 20. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 2505, column 20. See page 236 of PBP. (Severity: 3)
|
||||||
Mixed high and low-precedence booleans at line 2494, column 12. See page 70 of PBP. (Severity: 4)
|
Mixed high and low-precedence booleans at line 2506, column 12. See page 70 of PBP. (Severity: 4)
|
||||||
Expression form of "eval" at line 2890, column 13. See page 161 of PBP. (Severity: 5)
|
Expression form of "eval" at line 2929, column 13. See page 161 of PBP. (Severity: 5)
|
||||||
Expression form of "eval" at line 3108, column 13. See page 161 of PBP. (Severity: 5)
|
Expression form of "eval" at line 3148, column 13. See page 161 of PBP. (Severity: 5)
|
||||||
Subroutine "select_msgs" does not end with "return" at line 3249, column 1. See page 197 of PBP. (Severity: 4)
|
Subroutine "select_msgs" does not end with "return" at line 3289, column 1. See page 197 of PBP. (Severity: 4)
|
||||||
Subroutine "tests_msgs_from_maxmin" does not end with "return" at line 3388, column 1. See page 197 of PBP. (Severity: 4)
|
Subroutine "tests_msgs_from_maxmin" does not end with "return" at line 3428, column 1. See page 197 of PBP. (Severity: 4)
|
||||||
Subroutine "copy_message" with high complexity score (24) at line 3465, column 1. Consider refactoring. (Severity: 3)
|
Subroutine "copy_message" with high complexity score (30) at line 3505, column 1. Consider refactoring. (Severity: 3)
|
||||||
Too many arguments at line 3465, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 3505, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Too many arguments at line 3533, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 3596, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Subroutine "tests_subject" does not end with "return" at line 3627, column 1. See page 197 of PBP. (Severity: 4)
|
Subroutine "tests_subject" does not end with "return" at line 3690, column 1. See page 197 of PBP. (Severity: 4)
|
||||||
Too many arguments at line 3690, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 3753, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Subroutine "sleep_if_needed" does not end with "return" at line 3746, column 1. See page 197 of PBP. (Severity: 4)
|
Subroutine "sleep_if_needed" does not end with "return" at line 3809, column 1. See page 197 of PBP. (Severity: 4)
|
||||||
Reused variable name in lexical scope: $total_bytes_transferred at line 3747, column 2. Invent unique variable names. (Severity: 3)
|
Reused variable name in lexical scope: $total_bytes_transferred at line 3810, column 2. Invent unique variable names. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $nb_msg_transferred at line 3747, column 2. Invent unique variable names. (Severity: 3)
|
Reused variable name in lexical scope: $nb_msg_transferred at line 3810, column 2. Invent unique variable names. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $nb_msg_transferred at line 3759, column 9. Invent unique variable names. (Severity: 3)
|
Reused variable name in lexical scope: $nb_msg_transferred at line 3822, column 9. Invent unique variable names. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $maxmessagespersecond at line 3759, column 9. Invent unique variable names. (Severity: 3)
|
Reused variable name in lexical scope: $maxmessagespersecond at line 3822, column 9. Invent unique variable names. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $total_bytes_transferred at line 3780, column 9. Invent unique variable names. (Severity: 3)
|
Reused variable name in lexical scope: $total_bytes_transferred at line 3843, column 9. Invent unique variable names. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $maxbytespersecond at line 3780, column 9. Invent unique variable names. (Severity: 3)
|
Reused variable name in lexical scope: $maxbytespersecond at line 3843, column 9. Invent unique variable names. (Severity: 3)
|
||||||
Mismatched operator at line 4248, column 75. Numeric/string operators and operands should match. (Severity: 3)
|
Mismatched operator at line 4311, column 75. Numeric/string operators and operands should match. (Severity: 3)
|
||||||
Hard tabs used at line 4332, column 10. See page 20 of PBP. (Severity: 3)
|
Hard tabs used at line 4395, column 10. See page 20 of PBP. (Severity: 3)
|
||||||
Expression form of "eval" at line 4603, column 13. See page 161 of PBP. (Severity: 5)
|
Expression form of "eval" at line 4666, column 13. See page 161 of PBP. (Severity: 5)
|
||||||
Too many arguments at line 4758, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 4821, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Expression form of "eval" at line 5390, column 43. See page 161 of PBP. (Severity: 5)
|
Expression form of "eval" at line 5453, column 43. See page 161 of PBP. (Severity: 5)
|
||||||
Expression form of "eval" at line 5394, column 45. See page 161 of PBP. (Severity: 5)
|
Expression form of "eval" at line 5457, column 45. See page 161 of PBP. (Severity: 5)
|
||||||
"$i" is declared but not used at line 5658, column 9. Unused variables clutter code and make it harder to read. (Severity: 3)
|
"$i" is declared but not used at line 5721, column 9. Unused variables clutter code and make it harder to read. (Severity: 3)
|
||||||
|
108
tests.sh
108
tests.sh
@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# $Id: tests.sh,v 1.233 2013/12/25 03:25:18 gilles Exp gilles $
|
# $Id: tests.sh,v 1.235 2014/01/27 02:22:29 gilles Exp gilles $
|
||||||
|
|
||||||
# Example 1:
|
# Example 1:
|
||||||
# CMD_PERL='perl -I./W/Mail-IMAPClient-3.35/lib' sh -x tests.sh
|
# CMD_PERL='perl -I./W/Mail-IMAPClient-3.35/lib' sh -x tests.sh
|
||||||
@ -1183,6 +1183,42 @@ ll_maxlinelength()
|
|||||||
--maxlinelength 8 --nofoldersizes --folder INBOX
|
--maxlinelength 8 --nofoldersizes --folder INBOX
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ll_minmaxlinelength()
|
||||||
|
{
|
||||||
|
can_send && sendtestmessage
|
||||||
|
$CMD_PERL ./imapsync \
|
||||||
|
--host1 $HOST1 --user1 tata \
|
||||||
|
--passfile1 ../../var/pass/secret.tata \
|
||||||
|
--host2 $HOST2 --user2 titi \
|
||||||
|
--passfile2 ../../var/pass/secret.titi \
|
||||||
|
--minmaxlinelength 1000 --nofoldersizes --folder INBOX
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ll_maxlinelength_prepa_1()
|
||||||
|
{
|
||||||
|
$CMD_PERL ./imapsync \
|
||||||
|
--host1 $HOST1 --user1 gilles@est.belle \
|
||||||
|
--passfile1 ../../var/pass/secret.gilles_mbox \
|
||||||
|
--host2 $HOST2 --user2 tete@est.belle \
|
||||||
|
--passfile2 ../../var/pass/secret.tete \
|
||||||
|
--folderrec INBOX.Junk --foldersizes --justfolders \
|
||||||
|
--usecache --tmpdir /var/tmp --minmaxlinelength 8000 --debugmaxlinelength
|
||||||
|
}
|
||||||
|
|
||||||
|
ll_maxlinelength_prepa_2()
|
||||||
|
{
|
||||||
|
$CMD_PERL ./imapsync \
|
||||||
|
--host1 $HOST1 --user1 tete@est.belle \
|
||||||
|
--passfile1 ../../var/pass/secret.tete \
|
||||||
|
--host2 ks.lamiral.info --user2 tata \
|
||||||
|
--passfile2 ../../var/pass/secret.tata \
|
||||||
|
--ssl2 \
|
||||||
|
--include INBOX.Junk.20 --foldersizes --nojustfolders \
|
||||||
|
--useuid --tmpdir /var/tmp --minmaxlinelength 10 --delete2 --nofastio1 --nofastio2
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ll_maxsize()
|
ll_maxsize()
|
||||||
{
|
{
|
||||||
@ -2046,6 +2082,20 @@ ll_delete_reverse() {
|
|||||||
--delete --minage 100 --maxage 300 --noexpungeaftereach
|
--delete --minage 100 --maxage 300 --noexpungeaftereach
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ll_delete_reverse_useuid() {
|
||||||
|
$CMD_PERL ./imapsync \
|
||||||
|
--host1 $HOST1 --user1 titi \
|
||||||
|
--passfile1 ../../var/pass/secret.titi \
|
||||||
|
--host2 $HOST2 --user2 tata \
|
||||||
|
--passfile2 ../../var/pass/secret.tata \
|
||||||
|
--folder INBOX \
|
||||||
|
--delete --minage 100 --maxage 300 --noexpungeaftereach \
|
||||||
|
--useuid
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ll_maxmessagespersecond() {
|
ll_maxmessagespersecond() {
|
||||||
ll_delete_reverse
|
ll_delete_reverse
|
||||||
$CMD_PERL ./imapsync \
|
$CMD_PERL ./imapsync \
|
||||||
@ -2964,9 +3014,55 @@ l_office365()
|
|||||||
--passfile1 ../../var/pass/secret.tata \
|
--passfile1 ../../var/pass/secret.tata \
|
||||||
--host2 imap-mail.outlook.com --ssl2 --user2 gilles.lamiral@outlook.com \
|
--host2 imap-mail.outlook.com --ssl2 --user2 gilles.lamiral@outlook.com \
|
||||||
--passfile2 ../../var/pass/secret.outlook.com \
|
--passfile2 ../../var/pass/secret.outlook.com \
|
||||||
--folder INBOX --regextrans2 's/INBOX/tata/' --debugflags
|
--folder INBOX --tmpdir /var/tmp --usecache --regextrans2 's/INBOX/tata/' --delete2 --expunge2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
l_office365_bigfolders()
|
||||||
|
{
|
||||||
|
$CMD_PERL ./imapsync \
|
||||||
|
--host1 $HOST1 --user1 tata \
|
||||||
|
--passfile1 ../../var/pass/secret.tata \
|
||||||
|
--host2 imap-mail.outlook.com --ssl2 --user2 gilles.lamiral@outlook.com \
|
||||||
|
--passfile2 ../../var/pass/secret.outlook.com \
|
||||||
|
--tmpdir /var/tmp --useuid --include Junk.20
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
l_office365_maxline()
|
||||||
|
{
|
||||||
|
$CMD_PERL ./imapsync \
|
||||||
|
--host1 $HOST1 --user1 tata \
|
||||||
|
--passfile1 ../../var/pass/secret.tata \
|
||||||
|
--host2 imap-mail.outlook.com --ssl2 --user2 gilles.lamiral@outlook.com \
|
||||||
|
--passfile2 ../../var/pass/secret.outlook.com \
|
||||||
|
--tmpdir /var/tmp --usecache --include Junk.2013 --maxlinelength 16000 --debugmaxlinelength
|
||||||
|
}
|
||||||
|
|
||||||
|
l_office365_maxline_2()
|
||||||
|
{
|
||||||
|
$CMD_PERL ./imapsync \
|
||||||
|
--host1 $HOST1 --user1 tata \
|
||||||
|
--passfile1 ../../var/pass/secret.tata \
|
||||||
|
--host2 imap-mail.outlook.com --ssl2 --user2 gilles.lamiral@outlook.com \
|
||||||
|
--passfile2 ../../var/pass/secret.outlook.com \
|
||||||
|
--tmpdir /var/tmp --usecache \
|
||||||
|
--folder INBOX --regextrans2 's/INBOX/tata/' \
|
||||||
|
--minmaxlinelength 8000 --debugmaxlinelength
|
||||||
|
}
|
||||||
|
|
||||||
|
# Only available on ks2 (filtered by a firewall)
|
||||||
|
l_exchange_maxline()
|
||||||
|
{
|
||||||
|
$CMD_PERL ./imapsync \
|
||||||
|
--host1 $HOST1 --user1 tata \
|
||||||
|
--passfile1 ../../var/pass/secret.tata \
|
||||||
|
--host2 correu.quopiam.com --ssl2 --user2 utest@quopiam.com \
|
||||||
|
--passfile2 ../../var/pass/secret.quopiam.com \
|
||||||
|
--tmpdir /var/tmp --usecache \
|
||||||
|
--folder INBOX --regextrans2 's/INBOX/longlines/' \
|
||||||
|
--minmaxlinelength 10000 --maxlinelength 11000 --debugmaxlinelength
|
||||||
|
}
|
||||||
|
|
||||||
##########################
|
##########################
|
||||||
# specific tests
|
# specific tests
|
||||||
@ -3431,8 +3527,8 @@ big_folder()
|
|||||||
--passfile1 ../../var/pass/secret.gilles_mbox \
|
--passfile1 ../../var/pass/secret.gilles_mbox \
|
||||||
--host2 $HOST2 --user2 tete@est.belle \
|
--host2 $HOST2 --user2 tete@est.belle \
|
||||||
--passfile2 ../../var/pass/secret.tete \
|
--passfile2 ../../var/pass/secret.tete \
|
||||||
--folder INBOX.Junk.2010 \
|
--include INBOX.Junk.20 \
|
||||||
--useheader Message-ID || \
|
--usecache --tmpdir /var/tmp || \
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
date2=`date`
|
date2=`date`
|
||||||
@ -3447,8 +3543,8 @@ big_folder_useuid()
|
|||||||
--passfile1 ../../var/pass/secret.gilles_mbox \
|
--passfile1 ../../var/pass/secret.gilles_mbox \
|
||||||
--host2 $HOST2 --user2 tete@est.belle \
|
--host2 $HOST2 --user2 tete@est.belle \
|
||||||
--passfile2 ../../var/pass/secret.tete \
|
--passfile2 ../../var/pass/secret.tete \
|
||||||
--folder INBOX.Junk.2011 --nofoldersizes \
|
--include INBOX.Junk.20 --foldersizes \
|
||||||
--useuid --tmpdir /var/tmp || \
|
--useuid --tmpdir /var/tmp --delete2 || \
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
date2=`date`
|
date2=`date`
|
||||||
|
Loading…
Reference in New Issue
Block a user