correct use without licensed server

Package-Manager: portage-2.2.0_alpha166
RepoMan-Options: --force
This commit is contained in:
Mario Fetka 2013-04-20 13:12:41 +02:00
parent ba27601f85
commit a667c9830d
6 changed files with 221 additions and 125 deletions

View File

@ -2,6 +2,11 @@
# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2
# $Header: $
20 Apr 2013; Mario Fetka <mario.fetka@gmail.com>
files/7.1.4.41394/Datux-sendas.patch, files/7.1.4.41394/Datux-spamhook.patch,
files/zarafa.logrotate, zarafa-7.1.4.41394.ebuild:
correct use without licensed server
*zarafa-7.1.4.41394 (15 Apr 2013)
15 Apr 2013; Mario Fetka <mario.fetka@gmail.com>

View File

@ -1,7 +1,7 @@
AUX 50_zarafa-webaccess-mobile.conf 298 SHA256 7019d90fae91e2efb54c2b002ff3ee40de5a684686a74753385514b6abbe8581 SHA512 e6bf51ba872747d6cdca64e52e6fb0659d3b3e6fffd5f72fe2dda0aa04aa62a8273a1b11f66d7a9f9baf115257a9008367212a2cc1d987a9379494cd810779cb WHIRLPOOL 09948e764b0927b7bfbcaf411ae32ed2d95ca524ca6e8acee854a7cb68d3f2587092d6085c93d876aa2bec9b8eed2337bd3300cbb7c677549804dd4a7d48400a
AUX 50_zarafa-webaccess.conf 270 SHA256 ddf11e70107c2d6eaf40ba8253e2118822ee66eddaf471afebca248ba71e85a6 SHA512 b12f5fa4eae45c7b200d379722afb9c2d6d004d9fd7eb3c6f185ce985cb24937cb7a171ea36017306080a90032135b114f5a50b6098d1796244cba88e258576f WHIRLPOOL f4ab0a1f4cbff18866aa0279c2f5daf998b972ff31119b682bfae4eb9e29f9493295770a47ca60932470edc14aea12239f2ec9923040d3f1e286b8adb3f23f22
AUX 7.1.4.41394/Datux-sendas.patch 1429 SHA256 852e7fc30df15fc534ff6697f8735ee02fe013f2fcb2c7dcd0b4b5f79b9b1032 SHA512 53b3f465d6b16b947a88acec63b24bc4ee46f5d1ed54edd8a064a877ec6ccb06752d9ebe68216d953e8428cca9a67e7a05fdb609f8daa94049c0961c575aac52 WHIRLPOOL e3d0616c47127a8a9217ad2a4d985ff14aec76c28af49a421283e77d9eb373076c4f9581665b8f7f1fc2340da4414cdd313da95b0983c0c3eaa6e93a914d436b
AUX 7.1.4.41394/Datux-spamhook.patch 9895 SHA256 57d4fe122acc168b508b06a0a99ee9dc093080116918d2043fca02bc7022ed2b SHA512 2e048eb053902d9664ec8e3acee15edb1725db282e5f3e13817820d53a4cd788812560125d4fd624df7e69a89dbb2e089295d25f6ae25d5a6b4350e5756554ff WHIRLPOOL 4fd8b192baa7ce24dca903315cef987375b20814aa9da7b23c69ace76eda1a0058b59cd16b84ccb234a3775d1c3b1c4194bb4630c076cc43af0e133a0ca0ffed
AUX 7.1.4.41394/Datux-sendas.patch 2439 SHA256 c2692144549cf5b0aad5aea3199c7655db3d6d8d62c8fc65a0333f7def98f5dc SHA512 64e3f43d703265d8aa9d6e2632fac68d1571409414dd48781593855f7def5f2d034501febf626bd809a748eaa8cff743f5e268a71ecd61dd41505f0157105f3e WHIRLPOOL 32fdb7136ee25d7381d3dbd690ca375e01ae097a521a2a42bdd90434b5c7b815e8eddb86ae7958c7be694107c693a543320e5c5455326fa0df618f3c452de048
AUX 7.1.4.41394/Datux-spamhook.patch 8890 SHA256 e67e6178d27f78530b727ca7cc4e96cd1e9e3173fa20547cd132464f70d207f5 SHA512 5e11dc0940441e208d877a31d74ba077abd388982859e7c3d6c0f42551ad362d0e9991d2a6ea2b62d794ea84564222ef376025a2b50e60293684cdbd5ec566a4 WHIRLPOOL 7751cb4ceec3abf6261917fa518486fc4c534a6b9888e3fa091f9d86832cac229bb6ace87a33b20de7c68d7de7ac947826e3f360d1c185170587ab287b1bcc56
AUX 7.1.4.41394/zarafa-7.0.3-sysconfig2confd-1.patch 4843 SHA256 c9196a886f8435dcb2f82b92c6ee4769daf1eeb76b2fdfad4980a88cff461359 SHA512 6b683018a834ca666b0c96226a63280f3a3cde5e1e392e1e9f5681fa870669bbff27ebd719390aeebf670bcf3ba7b05ef0c27a77a039c0099fdc97dec4f0f36d WHIRLPOOL dd8e19057dc40785bee25846b399fec8ec5b61fd43586361a5131ef2a9f3e1dcd36db8290e7a0695b6a0a2fa01dca42581dc8e517bafe9290008f3ec38c3a372
AUX 7.1.4.41394/zarafa-7.1.3-package.patch 2008 SHA256 1348391d8a6a708c9359454e7e280e88d928f48aa05170a55dba8f00b6a126c4 SHA512 01d328333e9f04262fa5dba9fd879b6527c809ec920a503e3efe7f95fbd61c2104cdc68d41c55c5baf17c9b5fa7c98cca5fb52c9e71a280da3b6897f26be21fe WHIRLPOOL ce2e13c823695bd3d28c0bc1d0690173ebd254a1eb86e6209d12cc000bc2f744b7e6188473e00825e534c0aec0c78e620de974c112734b2458f264ddfe46b723
AUX 7.1.4.41394/zarafa-7.1.4-tcmalloc.patch 679 SHA256 3f982a2a37a42092a4878c7d7af0b235ae8327f26c0f5fe0ea253cbfcc236018 SHA512 086cbabb7d87ee3218de76f3f42cf3fcd9e1abdc289c6a9280556e3ef8812142da68dadb2e0d4da3355382fea27f3f3f3a37d943ef926f064d4bc9f0884c78de WHIRLPOOL 8e1d57b82d896127b384159ebb4b19457a3431250af1029d5cf214f5492f8f78b3c3baa8cf12baa39b2dbeddfa5672c4d5ce97b6a44bf230469d6074a02c829b
@ -22,7 +22,7 @@ AUX zarafa-server.confd 306 SHA256 9493a33e95f217334839adf7cbb3b0d6948d8532b4411
AUX zarafa-server.initd 928 SHA256 ace9703eb5fd101a7500d6abb34bfb31c9fc9801cf24d9cf95809fd2e36fdd11 SHA512 660fd4711c1e4ca93c7aa1c7eab244e5a0e91e5bcc099783da424f0e1b24d6edb9f04238975da60fcd4ecd3d9bc3319d076ef419228ce9cafef64c4cae631588 WHIRLPOOL e5eb7a6e33ee5d77521c668de5e9c954b6a82a6d96542579edc22c289e3cbfe2b067e96084644c9e054357eae24e82c294d7fb644f602fa79d1e28958d91f872
AUX zarafa-spooler.confd 190 SHA256 e2017fb37f3a1b467501e322cb5bd26510954dece5a89b6ac00a52af427eaccc SHA512 c540876552efef189800cd28dd925ad84747b2fa791f3bafc148107e442c5658309f6cb1e1ead722aa509bbc0242eed610d20563d9930f2fc8fd27210c8256a5 WHIRLPOOL 134896767db14d835489e19deeed0f7afb991f1708599401c28bd506f2a235d15b8d44fad0f4a63a9b5dc16350950bf331d4323db4844136999198c137780cc3
AUX zarafa-spooler.initd 758 SHA256 4901ea13c2c1ac174067e08d8c184705e8a4ac2a50b3e2f6e5d1a213c42e7a06 SHA512 6996123abe5bd9c35f64daa056ea613b5f9f403819e64ebfe2c9ee58ac952fb95ced8ef9c936dd10fad377ed36cad41dcafb74c661d01f22bd16c0299ccbe3dc WHIRLPOOL 2acfa7812f2dd1489ad9af1b5c0ac21a300140280769abd2c7266ba8b0b54eaf6e37f802f1b15398e0ecbee445977a8cba7754239377eace64c85714219dfbb1
AUX zarafa.logrotate 1227 SHA256 f7276f0ccd48b3c9e71545630ad41cdc2748af45148bf0576f2ca14ee8f9d129 SHA512 ddcf9efe1bc5f0820cb9bbc76bd23184eb967dcd8182f4e23424ad26edaa6807235897a38883c110315c3ba9167bde8b614b3397f25bc2df6a1cd0650d2f0380 WHIRLPOOL 90c3aad13a5ec50e82a86c0d7a4b80fa8ceea953150d97bbe6c92662352d9a1694ddabf7e75bb48bb11c090df92b1295c67b78d66eaf0f76e300e0bc8e7c671a
AUX zarafa.logrotate 2066 SHA256 30fb1a0daf2b68084f473c2cd21524273ca78ebd06fc790f89150103395a1462 SHA512 06e4a287ea7debdeec5bb822f14dcc9d631762512d63ddeb2f9ab19e2fcc2addbfb57073199b9727faf86ccd83bf4c6756399bf2fd62c0ad630d2716481e9276 WHIRLPOOL cdaee97042a03f9a36fc51388fec0438e3419299226a599d48035a1ccdef1ffed05fdc64f367ba339565913d964f759cbb8e4ba53998b87fabcfb083e6b9734f
DIST libboost-filesystem1.46.1_1.46.1-7ubuntu3_amd64.deb 50670 SHA256 4eecc887ee9a3ce511acd830c21a9e92babaae35d44cb6d8bfc8a7eb073ae8ef SHA512 3863dd4fe66f80ea37ad1b4a21927fa5feae3f1e22186cab1a0571c59b8fbb1546e685ca0918619a4454372bb031a97cf2b67aadb867dbe852c11970a62b460c WHIRLPOOL 8b11aa0a4440b4c96bc3b140fd728806cd4bcf99aa374105662af75fa70b14b7b6b1ece7705fe6beb9699fd85e4e26f616aa045807eda1754ac4bc80d922f3b8
DIST libboost-filesystem1.46.1_1.46.1-7ubuntu3_i386.deb 51330 SHA256 bf4d582aadea54545b9a6653a6b1ef8b2b66a382e0365bfbd4d0ba33730bd601 SHA512 06993a60923a2df503b6f07d6da468a172c6c0f088d948e2d102b89b94e140c569631391b9c360c2a06ba7c0dfc91c20565b14cfb89b74fc70afcba5a76d8ad7 WHIRLPOOL 406f9f82c35eef5fd07dd2f1348aeb574af00790ece6144d922c6f2c5e46d5bc66efbb48c2b5fb4411e9478cad959cf17fd7d097d437fee4ce99ebfe6f625635
DIST libboost-system1.46.1_1.46.1-7ubuntu3_amd64.deb 14550 SHA256 684e5010e378b98da0eeba04f1848575a4c14aac158a4047b9ae386e9fc5b7a1 SHA512 54815bc9838baf92cb86c326a7a2d9667f78ea4f16cc08915aec2ee5f4d8de825c34b86f27c812c64e7d7549b22acd9a202b60c59b8f5e57dfaedd893717c3bb WHIRLPOOL 975721928d92145db7dd47a5fc771907f38902f4a0a0dcf4c7f2cdd42ec6f989f2740f8cb41182b817ff0022329ec3bd8343da6f548232a7ee76344dedc53766
@ -34,6 +34,6 @@ DIST libssl1.0.0_1.0.1-4ubuntu5.9_i386.deb 1004680 SHA256 f63ed458f5254e7c6fc64e
DIST zcp-7.1.4-41394-ubuntu-12.04-i386-free.tar.gz 44509122 SHA256 96ce4ef641f79df32671e4bb3695be8adeb212414834f090ebd62b583ec0553e SHA512 e19c054d0e23778e9b2b3c963ab77e675e973317678e2e7a7b5670dd4316cbe82ac2152650016988accc66da013b59aa47f1851a09ed4580531669defb30a410 WHIRLPOOL 3c1d2ef0251685eab8c3e4549f2d7fc77693bf03fcd8783a89951832270182de4b386458c3f9a9a9488c4791ba14170e62464949204a811859e8b6eb2616b3a4
DIST zcp-7.1.4-41394-ubuntu-12.04-x86_64-free.tar.gz 44292855 SHA256 bf3fb59ef6c8adaf067ee5321e284e5ff1732e087d0d272a271e8cdb4971c52d SHA512 201b6cd9017e55a0ba4769d62c6c67a2deadc655f4b7c55485027300d42dffdb50c84877345a4c4db04f4b0d2605fe4f8a04dc3077fbf647aa12b398aace93a4 WHIRLPOOL 90210e4a98f06e7da4b01003b811ed0c9ca6bd992d5beaebbdacdef6c7418d29c8dcecd5a94b1961bd0e2ca2aca68a154679f9f418b1cae730682aba2f8dd3fc
DIST zcp-7.1.4.tar.gz 6469725 SHA256 66b8fad8a452553db520999bde2f765538b27d90db30fa37cee65dfda7701c9a SHA512 ae2e9a1097e64193e82619f6868f1d9952fe7a11bb33b2c6fbb63f31b5366d69dde30eadc30409286044b36373c99b526d1eb5bfa4d079c4d5861a4c1dd445ea WHIRLPOOL 89684c66adf76e5f166544e5e9e999d0c72296b40521ee5a68dccfdd83a28686a5e05c4dbb045c63f48cfb7ef06274407e7fd1a4473f3a011019f3c45d6f00f7
EBUILD zarafa-7.1.4.41394.ebuild 7335 SHA256 eacdee59db0655e446a33234daba9e9ff6ff9a5c5161678730d5d6e8ad5af451 SHA512 89f730d9b0e4083407359d9d296cab822013a03f4968e15a8ed4ea864bb68161b9d22f97cbea5c6ca4bdf3d70a2c2f90f74a27e5585c587f89b10470a6380c0f WHIRLPOOL d3bd9e09dd8428e23b7e04e28108f406905cc9821dcb3bb118e3cee2c1556ff41df9ecbaa87ab43df88b328dc38d9150fae5e3287701f53bf0bbc3ac62ef2a0f
MISC ChangeLog 22456 SHA256 b2699c360ce82d9501dc9dd76ac83d172f6ddcebc98f1e98a66959da19a0246a SHA512 5fb6cd8f672cd1be8be1789f4ea7bdd297f2e050ca94eb679b3819a4cc97b0d2d7b6051798d48d7e8ff365f0575fd51637c94bc5740ccfda32160a36261ed987 WHIRLPOOL 94de75f4e6f112f0270c22f90c90007f4ae82a4b1ced9e6ae9da447b6aee8c292180e81aea3a2eebe43e39ed48c69d76ee83d67092d6138b665a519ebd02408e
EBUILD zarafa-7.1.4.41394.ebuild 7348 SHA256 78e93c8d6a2d7371f1543d3c0943141a438e63f76ad65bea9cf6f1e86d4b392e SHA512 b841145acb6e0bb376f73ab2f3e52cf5d8fbe9544486b1adeb1b6a57d968c6ffc9fa1410a78348bb252b39d7ca24b0713aa317f65ca34f8036b184005c3c46a8 WHIRLPOOL 3044e9ec0832b1fc76823e1fd9d7c7290fca691fccde6ce1fc1000a7cae47c8d886cb400592f0e8a02bf78c37b403fa9ff948fad35fc9672dbe5ce77d166940b
MISC ChangeLog 22679 SHA256 9585bfed7f230a68bde73a4349407dc84c28bfb0c9dc0d408f6bca4223674a0f SHA512 092af07d5b6d47a1530d69d6f08b11983704f0260f29a9127cfb29990919c71259721c613b96685f525342509fee63f211ff82803f74f7ef755a1c2646486866 WHIRLPOOL 76ad0d375dd5c7643709948e06d183209a264d83238a53799e033a69a66cc59ac850a49569d91a99ce1a7792e9af438d8b37d7c418acb08366d50c38ca02bb71
MISC metadata.xml 1238 SHA256 2c13f98be5fa8bdaf21ac86bcd00bbeb8944df5615de0cfce35ae4c00ef4b4d5 SHA512 d94394e853ce7bd9109322f37ab5d3526e2bbc4a59ac02d0b66e9d952d221a06ae1c38b6de5cdb142b2b09ac602a57ff03f0525efbbc7b8f33f9662ca42a5dd5 WHIRLPOOL 482453b974eaca6506c4503f49c5c55195790e9b47f19a885d551fa535445104fbb7bc93dc4f30f7faf545f619594fa04d9a8071c21eb55995fef4f7380f55b9

View File

@ -1,25 +1,47 @@
diff -u -r zarafa-6.40.3/spooler/Spooler.cpp zarafa-6.40.3.new/spooler/Spooler.cpp
--- zarafa-6.40.3/spooler/Spooler.cpp 2010-10-20 14:16:24.000000000 +0000
+++ zarafa-6.40.3.new/spooler/Spooler.cpp 2010-11-10 15:58:43.000000000 +0000
@@ -935,6 +935,7 @@
--- spooler/mailer.cpp.ori 2011-07-03 15:38:10.162737725 +0200
+++ spooler/mailer.cpp 2011-07-03 15:39:14.362790762 +0200
@@ -2172,6 +2172,8 @@
HrGetOneProp(lpMessage, PR_AUTO_FORWARDED, &lpAutoForward) == hrSuccess && lpAutoForward->Value.b)
{
bAllowSendAs = true;
+ } else if (strcmp(g_lpConfig->GetSetting("always_send_as"), "yes") == 0) {
+ bAllowSendAs = true;
} else {
hr = HrGetOneProp(lpUserStore, PR_MAILBOX_OWNER_ENTRYID, &lpPropOwner);
--- spooler/Spooler.cpp.ori 2011-07-03 15:46:25.366770639 +0200
+++ spooler/Spooler.cpp 2011-07-03 15:46:45.716172033 +0200
@@ -1118,6 +1118,7 @@
{ "fax_domain", "", CONFIGSETTING_RELOADABLE },
{ "fax_international", "+", CONFIGSETTING_RELOADABLE },
{ "always_send_delegates", "no", CONFIGSETTING_RELOADABLE },
+ { "always_send_as", "no", CONFIGSETTING_RELOADABLE },
{ "always_send_tnef", "no", CONFIGSETTING_RELOADABLE },
{ "always_send_utf8", "no", CONFIGSETTING_RELOADABLE },
{ "allow_redirect_spoofing", "yes", CONFIGSETTING_RELOADABLE },
{ "allow_delegate_meeting_request", "yes", CONFIGSETTING_RELOADABLE },
diff -u -r zarafa-6.40.3/spooler/mailer.cpp zarafa-6.40.3.new/spooler/mailer.cpp
--- zarafa-6.40.3/spooler/mailer.cpp 2010-10-20 14:16:24.000000000 +0000
+++ zarafa-6.40.3.new/spooler/mailer.cpp 2010-11-10 15:58:09.000000000 +0000
@@ -1949,6 +1949,10 @@
HrGetOneProp(lpMessage, PR_AUTO_FORWARDED, &lpAutoForward) == hrSuccess && lpAutoForward->Value.b)
{
bAllowSendAs = true;
+ } else if (strcmp(g_lpConfig->GetSetting("always_send_as"), "yes") == 0) {
+ //use always_send_as to allow everybody to send as someone else.
+ //(some users hate the 'on behalf of' text, and dont want to do the extra configuration)
+ bAllowSendAs = true;
} else {
--- php-webclient-ajax/client/modules/readmailitemmodule.js.ori 2011-06-22 00:02:22.000000000 +0200
+++ php-webclient-ajax/client/modules/readmailitemmodule.js 2011-07-24 01:19:03.454049593 +0200
@@ -479,7 +479,7 @@
dhtml.addEvent(this, recipientItemSenderRepresentation, "click", eventReadmailClickEmail);
dhtml.addEvent(this, recipientItemSenderRepresentation, "contextmenu", eventReadmailAddressContextMenu);
hr = HrGetOneProp(lpUserStore, PR_MAILBOX_OWNER_ENTRYID, &lpPropOwner);
- dhtml.addElement(fromElement,"span","emailaddress","", NBSP+_("on behalf of")+NBSP);
+ //dhtml.addElement(fromElement,"span","emailaddress","", NBSP+_("on behalf of")+NBSP);
}
var recipientItemSenderRepresentation = dhtml.addElement(fromElement,"a","emailaddress","senderrepresentatation_label",sender_representation);
--- installer/linux/spooler.ori 2011-07-03 14:41:32.934761391 +0200
+++ installer/linux/spooler.cfg 2011-07-02 18:29:54.958164996 +0200
@@ -76,7 +76,11 @@
# delegates (other user than yourself in the From: header)
# In installations before 6.20, this value was always 'yes'.
# IMPORTANT: This feature overrides "send-as" functionality.
-always_send_delegates = no
+always_send_delegates = yes
+
+# Set this value to 'yes' to let the spooler always send emails even
+# if the from emailadres someone elses
+always_send_as = yes
# Set this value to 'no' if you do NOT want to allow redirected e-mails
# being sent with their original 'FROM' header

View File

@ -1,10 +1,18 @@
diff -rupN zarafa-6.40.0-orig/provider/libserver/ZarafaCmd.cpp zarafa-6.40.0/provider/libserver/ZarafaCmd.cpp
--- zarafa-6.40.0-orig/provider/libserver/ZarafaCmd.cpp 2010-05-31 19:28:59.000000000 +0200
+++ zarafa-6.40.0/provider/libserver/ZarafaCmd.cpp 2010-07-20 17:22:07.995625072 +0200
@@ -7244,6 +7244,166 @@ typedef struct{
SOURCEKEY sSourceKey;
SOURCEKEY sParentSourceKey;
diff -ru zarafa-7.1.4/provider/libserver/ZarafaCmd.cpp zarafa-7.1.4.spamhook/provider/libserver/ZarafaCmd.cpp
--- zarafa-7.1.4/provider/libserver/ZarafaCmd.cpp 2013-02-28 17:13:17.000000000 +0100
+++ zarafa-7.1.4.spamhook/provider/libserver/ZarafaCmd.cpp 2013-04-15 11:34:45.018632455 +0200
@@ -84,6 +84,7 @@
#include "StreamUtil.h"
#include "CommonUtil.h"
#include "StorageUtil.h"
+#include "UnixUtil.h"
#include "ZarafaICS.h"
@@ -7655,6 +7656,179 @@
bool bMoved;
}COPYITEM;
+//SPAM HOOK
+//This function parses an e-mail to the /etc/zarafa/userscripts/junklearn script. With 2 arguments:
+//ham or spam
@ -12,15 +20,25 @@ diff -rupN zarafa-6.40.0-orig/provider/libserver/ZarafaCmd.cpp zarafa-6.40.0/pro
+//and pipes the mail header to the script.
+//This script wil be inhaled by MoveObjects();
+/////////////////////////////////////////////////////////////////////////////////////////////////
+int SpamHook(ECDatabase *lpDatabase,int ulId,int ulDestFolderId)
+int SpamHook(ECDatabase *lpDatabase,int ulId, unsigned int ulDestFolderId)
+{
+
+ ALLOC_DBRESULT();
+ ECRESULT er = erSuccess;
+ std::string shScriptPath = g_lpSessionManager->GetConfig()->GetSetting("junklearn_script");
+ ALLOC_DBRESULT();
+ ECRESULT er = erSuccess;
+ std::string shScriptPath = g_lpSessionManager->GetConfig()->GetSetting("junklearn_script");
+ string shMailStatus;
+ entryId* junkFolderEntryId;
+ entryId* wasteBucketEntryId;
+ int shNumRows;
+
+ //If shScriptPath doesn't exist skip spam hook.
+ if(fopen(shScriptPath.c_str(),"r")) {
+ //dont do anything if the junklearn script doesnt exist:
+ int fCheck=open(shScriptPath.c_str(), O_RDONLY);
+ if (fCheck==0) {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_INFO,"SpamHook: skipping, script "+shScriptPath+" not found");
+ er=erSuccess;
+ goto exit;
+ }
+ close(fCheck);
+
+ //Get store object ID via message object id
+ unsigned int storeId;
@ -33,14 +51,14 @@ diff -rupN zarafa-6.40.0-orig/provider/libserver/ZarafaCmd.cpp zarafa-6.40.0/pro
+
+ //get deleted items folder entry id
+ strQuery="SELECT val_binary FROM properties WHERE hierarchyid="+stringify(storeId)+" AND tag="+stringify(PROP_ID(PR_IPM_WASTEBASKET_ENTRYID));
+ er = lpDatabase->DoSelect(strQuery, &lpDBResult);
+ if(er != erSuccess) {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: error while retrieve wastebasket entryid from DB.");
+ goto exit;
+ }
+ lpDBRow = lpDatabase->FetchRow(lpDBResult);
+ lpDBLen = lpDatabase->FetchRowLengths(lpDBResult);
+ int shNumRows=lpDatabase->GetNumRows(lpDBResult);
+ er = lpDatabase->DoSelect(strQuery, &lpDBResult);
+ if(er != erSuccess) {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: error while retrieve wastebasket entryid from DB.");
+ goto exit;
+ }
+ lpDBRow = lpDatabase->FetchRow(lpDBResult);
+ lpDBLen = lpDatabase->FetchRowLengths(lpDBResult);
+ shNumRows=lpDatabase->GetNumRows(lpDBResult);
+ if(shNumRows<1)
+ {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: error while retrieve wastebasket entryid, empty DB result.");
@ -48,10 +66,10 @@ diff -rupN zarafa-6.40.0-orig/provider/libserver/ZarafaCmd.cpp zarafa-6.40.0/pro
+ }
+
+ //Convert 'deleted items' entryid to objectid.
+ entryId* wasteBucketEntryId = new entryId[0];
+ wasteBucketEntryId->__ptr=(unsigned char*)lpDBRow[0];
+ wasteBucketEntryId->__size=lpDBLen[0];
+ unsigned int wasteBucketFolderId;
+ wasteBucketEntryId = new entryId[0];
+ wasteBucketEntryId->__ptr=(unsigned char*)lpDBRow[0];
+ wasteBucketEntryId->__size=lpDBLen[0];
+ unsigned int wasteBucketFolderId;
+ er=g_lpSessionManager->GetCacheManager()->GetObjectFromEntryId(wasteBucketEntryId,&wasteBucketFolderId);
+ delete wasteBucketEntryId;
+ if(er!=erSuccess)
@ -59,18 +77,18 @@ diff -rupN zarafa-6.40.0-orig/provider/libserver/ZarafaCmd.cpp zarafa-6.40.0/pro
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: error while retrieve wastebasket entryid, converting to objectID.");
+ goto exit;
+ }
+ FREE_DBRESULT();
+
+ //Get 'junk folder' entryId.
+ FREE_DBRESULT();
+ strQuery="SELECT val_binary FROM receivefolder LEFT JOIN mvproperties ON receivefolder.objid=mvproperties.hierarchyid WHERE receivefolder.storeid="+stringify(storeId)+" AND receivefolder.messageclass='IPC' AND mvproperties.tag="+stringify(PROP_ID(PR_ADDITIONAL_REN_ENTRYIDS))+" AND mvproperties.orderid=4";
+ er = lpDatabase->DoSelect(strQuery, &lpDBResult);
+ if(er != erSuccess) {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: error while retrieve junkfolder entryids from DB.");
+ goto exit;
+ }
+ lpDBRow = lpDatabase->FetchRow(lpDBResult);
+ lpDBLen = lpDatabase->FetchRowLengths(lpDBResult);
+ shNumRows=lpDatabase->GetNumRows(lpDBResult);
+ er = lpDatabase->DoSelect(strQuery, &lpDBResult);
+ if(er != erSuccess) {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: error while retrieve junkfolder entryids from DB.");
+ goto exit;
+ }
+ lpDBRow = lpDatabase->FetchRow(lpDBResult);
+ lpDBLen = lpDatabase->FetchRowLengths(lpDBResult);
+ shNumRows=lpDatabase->GetNumRows(lpDBResult);
+ if(shNumRows<1)
+ {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: error while retrieve junkfolder entryid, empty DB result.");
@ -78,10 +96,10 @@ diff -rupN zarafa-6.40.0-orig/provider/libserver/ZarafaCmd.cpp zarafa-6.40.0/pro
+ }
+
+ //Convert 'junk folder' entryid to objectid.
+ entryId* junkFolderEntryId = new entryId[0];
+ junkFolderEntryId->__ptr=(unsigned char*)lpDBRow[0];
+ junkFolderEntryId->__size=lpDBLen[0];
+ unsigned int junkFolderId;
+ junkFolderEntryId = new entryId[0];
+ junkFolderEntryId->__ptr=(unsigned char*)lpDBRow[0];
+ junkFolderEntryId->__size=lpDBLen[0];
+ unsigned int junkFolderId;
+ er=g_lpSessionManager->GetCacheManager()->GetObjectFromEntryId(junkFolderEntryId,&junkFolderId);
+ delete junkFolderEntryId;
+ if(er!=erSuccess)
@ -89,8 +107,7 @@ diff -rupN zarafa-6.40.0-orig/provider/libserver/ZarafaCmd.cpp zarafa-6.40.0/pro
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: error while retrieve junkfolder entryid, converting to objectID.");
+ goto exit;
+ }
+ FREE_DBRESULT();
+
+
+ //Get source folder object ID. (Actually we should check if mail came from subfolders in the 'deleted items folder', which I think never happens.)
+ unsigned int srcFolderId;
+ er=g_lpSessionManager->GetCacheManager()->GetParent(ulId,&srcFolderId);
@ -100,8 +117,7 @@ diff -rupN zarafa-6.40.0-orig/provider/libserver/ZarafaCmd.cpp zarafa-6.40.0/pro
+ goto exit;
+ }
+
+ //Check if object is ham or spam
+ string shMailStatus;
+ //now we can determine if object being moved from or to the junkfolder
+ //if destination folder is junk, mark as spam
+ if(ulDestFolderId==junkFolderId)
+ shMailStatus="spam";
@ -110,65 +126,70 @@ diff -rupN zarafa-6.40.0-orig/provider/libserver/ZarafaCmd.cpp zarafa-6.40.0/pro
+ //if destination folder is not TRASH and de source folder is JUNK, mark as ham
+ if(ulDestFolderId!=wasteBucketFolderId && srcFolderId==junkFolderId)
+ shMailStatus="ham";
+ else
+ //its just a normal movement, so do nothing.
+ goto exit;
+ }
+
+ //Only call hook script if the mail is marked as ham or spam.
+ if(!shMailStatus.empty()) {
+ //Get the mail from the DB.
+ FREE_DBRESULT();
+ strQuery="SELECT val_string FROM properties WHERE tag="+stringify(PROP_ID(PR_TRANSPORT_MESSAGE_HEADERS))+" AND hierarchyid= "+stringify(ulId);
+ er = lpDatabase->DoSelect(strQuery, &lpDBResult);
+ if(er != erSuccess) {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: db error while retrieve mail header.");
+ goto exit;
+ }
+
+ //Get the mail from the DB.
+ strQuery="SELECT val_string FROM properties WHERE tag="+stringify(PROP_ID(PR_TRANSPORT_MESSAGE_HEADERS))+" AND hierarchyid= "+stringify(ulId);
+ er = lpDatabase->DoSelect(strQuery, &lpDBResult);
+ if(er != erSuccess) {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: db error while retrieve mail header.");
+ goto exit;
+ }
+ lpDBRow = lpDatabase->FetchRow(lpDBResult);
+ int shNumRows=lpDatabase->GetNumRows(lpDBResult);
+ lpDBRow = lpDatabase->FetchRow(lpDBResult);
+ shNumRows=lpDatabase->GetNumRows(lpDBResult);
+
+ if(shNumRows>0) {
+ if(shNumRows<=0) {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: warning mail header empty or this object is no e-mail");
+ goto exit;
+ }
+
+ // Execute the hook:
+ FILE *shFilePtr;
+ shScriptPath=shScriptPath+" "+shMailStatus+" "+stringify(ulId);
+ shFilePtr=popen(shScriptPath.c_str(),"w");
+ fputs(lpDBRow[0],shFilePtr);
+ int shExitCode=pclose(shFilePtr);
+ if(!WIFEXITED(shExitCode)) {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: "+shScriptPath+" was terminated abnormally.");
+ goto exit;
+ }
+ //If script exit with non 0, exit..
+ if(WEXITSTATUS(shExitCode)!=0) {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: error "+shScriptPath+" exits with: "+stringify(shExitCode));
+ er=ZARAFA_E_UNKNOWN;
+ goto exit;
+ }
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_INFO,"SpamHook: "+shScriptPath+" successfully executed.");
+ er=erSuccess;
+ }
+ else {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: warning mail header empty or this object is no e-mail");
+ }
+ {
+ //now its time to open the spamhook script and pass the mail to it:
+ shScriptPath=shScriptPath+" "+shMailStatus+" "+stringify(ulId);
+ int ulFpWrite = -1;
+ int ulFpRead = -1;
+ int ulCommandRetval;
+
+ // Free database results
+ FREE_DBRESULT();
+ }
+ }
+ else {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_INFO,"SpamHook: skipping, script "+shScriptPath+" not found");
+ er=erSuccess;
+ }
+exit:
+ // Free database results
+ FREE_DBRESULT();
+ //we asume failure, unless we make it all the way though the script
+ er=ZARAFA_E_UNKNOWN;
+
+ return er;
+ pid_t ulCommandPid = unix_popen_rw(g_lpSessionManager->GetLogger(), shScriptPath.c_str(), &ulFpWrite, &ulFpRead, NULL, NULL, true, false);
+ if (ulCommandPid <= 0) {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: error opening subprocess.");
+ goto exit;
+ }
+
+ //pass the data to the subprocess:
+ write(ulFpWrite, lpDBRow[0], strlen(lpDBRow[0]));
+ ulCommandRetval=unix_pclose(ulFpRead, ulFpWrite, ulCommandPid);
+
+ //subprocess is done, check results
+ if (ulCommandRetval<0) {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: error "+shScriptPath+" exits with: "+stringify(WEXITSTATUS(ulCommandRetval)));
+ goto exit;
+ }
+ }
+
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_INFO,"SpamHook: "+shScriptPath+" successfully executed.");
+ er=erSuccess;
+
+ exit:
+ // Free database results
+ FREE_DBRESULT();
+
+ return er;
+}
+
+
// Move one or more messages and/or moved a softdeleted message to a normal message
ECRESULT MoveObjects(ECSession *lpSession, ECDatabase *lpDatabase, ECListInt* lplObjectIds, unsigned int ulDestFolderId, unsigned int ulSyncId)
@@ -8096,6 +8256,17 @@ SOAP_ENTRY_START5(copyObjects, *result,
{
@@ -8641,6 +8815,16 @@
// @note The object type checking wille be done in MoveObjects or CopyObject
@ -177,8 +198,7 @@ diff -rupN zarafa-6.40.0-orig/provider/libserver/ZarafaCmd.cpp zarafa-6.40.0/pro
+ //Iterate over all mail ids and initiate spamhook.
+ for(iObjectId = lObjectIds.begin(); iObjectId != lObjectIds.end(); iObjectId++)
+ {
+ //Ignore the result
+ int shResult=SpamHook(lpDatabase,*iObjectId,ulDestFolderId);
+ SpamHook(lpDatabase,*iObjectId,ulDestFolderId);
+ }
+//SPAMHOOK END
+////////////////////////////////////
@ -186,10 +206,10 @@ diff -rupN zarafa-6.40.0-orig/provider/libserver/ZarafaCmd.cpp zarafa-6.40.0/pro
//check copy or a move
if(ulFlags & FOLDER_MOVE ) { // A move
er = MoveObjects(lpecSession, lpDatabase, &lObjectIds, ulDestFolderId, ulSyncId);
diff -rupN zarafa-6.40.0-orig/provider/server/ECServer.cpp zarafa-6.40.0/provider/server/ECServer.cpp
--- zarafa-6.40.0-orig/provider/server/ECServer.cpp 2010-05-31 19:28:59.000000000 +0200
+++ zarafa-6.40.0/provider/server/ECServer.cpp 2010-07-20 17:26:25.119624516 +0200
@@ -670,6 +670,7 @@ int running_server(char *szName, char *s
diff -ru zarafa-7.1.4/provider/server/ECServer.cpp zarafa-7.1.4.spamhook/provider/server/ECServer.cpp
--- zarafa-7.1.4/provider/server/ECServer.cpp 2013-02-28 17:13:17.000000000 +0100
+++ zarafa-7.1.4.spamhook/provider/server/ECServer.cpp 2013-04-15 11:14:40.000000000 +0200
@@ -963,6 +963,7 @@
{ "deletegroup_script", "/etc/zarafa/userscripts/deletegroup", CONFIGSETTING_RELOADABLE},
{ "createcompany_script", "/etc/zarafa/userscripts/createcompany", CONFIGSETTING_RELOADABLE },
{ "deletecompany_script", "/etc/zarafa/userscripts/deletecompany", CONFIGSETTING_RELOADABLE },

View File

@ -63,3 +63,52 @@
killall -HUP zarafa-ical
endscript
}
/var/log/zarafa/dagent.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
postrotate
killall -HUP zarafa-dagent
endscript
}
/var/log/zarafa/indexer.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
postrotate
killall -HUP zarafa-indexer
endscript
}
/var/log/zarafa/licensed.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
postrotate
killall -HUP zarafa-licensed
endscript
}
/var/log/zarafa/search.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
postrotate
killall -HUP zarafa-search
endscript
}

View File

@ -88,14 +88,14 @@ src_prepare() {
src_unpack() {
unpack zcp-${MY_PVR}.tar.gz
if [[ "${ARCH}" == "amd64" ]]; then
unpack zcp-${MY_PV}-ubuntu-12.04-x86_64-free.tar.gz
fi
if use licensed; then
if [[ "${ARCH}" == "amd64" ]]; then
unpack zcp-${MY_PV}-ubuntu-12.04-x86_64-free.tar.gz
fi
if [[ "${ARCH}" == "x86" ]]; then
unpack zcp-${MY_PV}-ubuntu-12.04-i386-free.tar.gz
fi
if use licensed; then
if [[ "${ARCH}" == "x86" ]]; then
unpack zcp-${MY_PV}-ubuntu-12.04-i386-free.tar.gz
fi
pushd "${WORKDIR}"
mkdir licensed
cd licensed