From a667c9830df893d435f0ace2dc1e6a4d21a5fe05 Mon Sep 17 00:00:00 2001 From: Mario Fetka Date: Sat, 20 Apr 2013 13:12:41 +0200 Subject: [PATCH] correct use without licensed server Package-Manager: portage-2.2.0_alpha166 RepoMan-Options: --force --- net-mail/zarafa/ChangeLog | 5 + net-mail/zarafa/Manifest | 10 +- .../files/7.1.4.41394/Datux-sendas.patch | 58 +++-- .../files/7.1.4.41394/Datux-spamhook.patch | 210 ++++++++++-------- net-mail/zarafa/files/zarafa.logrotate | 49 ++++ net-mail/zarafa/zarafa-7.1.4.41394.ebuild | 14 +- 6 files changed, 221 insertions(+), 125 deletions(-) diff --git a/net-mail/zarafa/ChangeLog b/net-mail/zarafa/ChangeLog index 9e0a193..80c580c 100644 --- a/net-mail/zarafa/ChangeLog +++ b/net-mail/zarafa/ChangeLog @@ -2,6 +2,11 @@ # Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2 # $Header: $ + 20 Apr 2013; Mario Fetka + 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 diff --git a/net-mail/zarafa/Manifest b/net-mail/zarafa/Manifest index f8ff332..a4fa313 100644 --- a/net-mail/zarafa/Manifest +++ b/net-mail/zarafa/Manifest @@ -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 diff --git a/net-mail/zarafa/files/7.1.4.41394/Datux-sendas.patch b/net-mail/zarafa/files/7.1.4.41394/Datux-sendas.patch index d42326f..aabe5fc 100644 --- a/net-mail/zarafa/files/7.1.4.41394/Datux-sendas.patch +++ b/net-mail/zarafa/files/7.1.4.41394/Datux-sendas.patch @@ -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 \ No newline at end of file diff --git a/net-mail/zarafa/files/7.1.4.41394/Datux-spamhook.patch b/net-mail/zarafa/files/7.1.4.41394/Datux-spamhook.patch index c35d6d2..383697a 100644 --- a/net-mail/zarafa/files/7.1.4.41394/Datux-spamhook.patch +++ b/net-mail/zarafa/files/7.1.4.41394/Datux-spamhook.patch @@ -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 }, diff --git a/net-mail/zarafa/files/zarafa.logrotate b/net-mail/zarafa/files/zarafa.logrotate index e964bc4..74be9fd 100644 --- a/net-mail/zarafa/files/zarafa.logrotate +++ b/net-mail/zarafa/files/zarafa.logrotate @@ -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 +} + diff --git a/net-mail/zarafa/zarafa-7.1.4.41394.ebuild b/net-mail/zarafa/zarafa-7.1.4.41394.ebuild index f35e603..6784882 100644 --- a/net-mail/zarafa/zarafa-7.1.4.41394.ebuild +++ b/net-mail/zarafa/zarafa-7.1.4.41394.ebuild @@ -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