diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2019-09-28 08:17:07 +0100 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2019-09-28 08:17:07 +0100 |
commit | 5a165c60b9b8c4847067cb83b4be7da785d01f93 (patch) | |
tree | 166b01591366d3479084ea774c888bc84aaa8d4f /net-mail/vpopmail | |
parent | a5b65c81168c90928784a1e92cda84ed5d6b9eb3 (diff) |
gentoo resync : 28.09.2019
Diffstat (limited to 'net-mail/vpopmail')
11 files changed, 762 insertions, 6 deletions
diff --git a/net-mail/vpopmail/Manifest b/net-mail/vpopmail/Manifest index 7bd9fa2e7c21..77e04e85d09b 100644 --- a/net-mail/vpopmail/Manifest +++ b/net-mail/vpopmail/Manifest @@ -1,10 +1,18 @@ AUX 99vpopmail 64 BLAKE2B ab9b8b28494fa8093f1a72e582fc10787eb1f9814b860b1c03f4e336c6a8563b50b34fcc2c33d95e45703ebad5b8155d9575551c894af4e7c12b52748b526216 SHA512 8e9323006ddafae6e4ee8da2e0c9753ce11fd3f6e7c8bb6931ccc147ab6c9782c71d704222343be902f8784aa27a4425fd04a1f11cff5421dfc25fd76d3de953 +AUX vpopmail-5.4.33-clean-up-calling-maildrop.patch 2382 BLAKE2B 06f7ab5f6fdbb0dbade353dce74b2be585ed5a3f1ea617491ee437838f80c38b90f9e2c1a3a89efa6f788f30228e8e7449d8fdaa9db59c26231b16b849ce3f80 SHA512 99053bf41e405b22a4594104d3fce6ed831c6f5b8f8870bde7eb0e780948990de36158d7af055d881639503be1b911106a91f1787d524fe9c84fd3ec5503b055 +AUX vpopmail-5.4.33-fix-S-tag-in-case-spamassassin-changed-the-file-size.patch 3281 BLAKE2B 7eecc6c5dc2eef263d212ec6ca0534d0c00faeef04994e5410dbbff6e00beb7df249276fad928467b8cc87610d49666d9c63a629c87f8a07fb0ea5b35c298589 SHA512 1d170e611e914dc1ef5e7140b661558d93d2466fd310ebb50ecfcdadcb27cbfaa44b702ded5e02296835aea7c0a4c0d2de8ddf3cde236fe15a6fe0c37edb259a +AUX vpopmail-5.4.33-fix-those-vfork-instances-that-do-more-than-exec.patch 2150 BLAKE2B 44d3226b95e19b60516dbd2c4ace2ada5ec53ee1479f45544113e207da79b7152958d85f3b0511565e820732e49f32d73ce74ef253dd286a0f960e6b7cb39a92 SHA512 077d8b035f2ae33354c4c51d9d4c068b4de4d0f56c1a076667425c903707a39460c03b83ee9163cf8ef11b424bdb0ddcf2e716d0cfdbd3b50863069035d2a66b +AUX vpopmail-5.4.33-remove-unneeded-forward-declaration.patch 771 BLAKE2B 565944744d74b6c4077cef4534aa01c50af21fdb1f2da11fc2baf4659b953516e2b017412cfc64d1d5a06f8e6f5d7355903787188ae24f3579e0ac0d2087e369 SHA512 e1e4b2f3d0d3c51b6341dc14583f336b86766885767c0188ee170e07979fdd6d59360d1942df6593e7f11dc043f49143dff98898cca4a55ba697b429f98eb123 +AUX vpopmail-5.4.33-strncat.patch 6266 BLAKE2B 98656fb8d963df082ec48fbf7918423c8aeeeab6aebaab295f819b213e09d20e7b786057bf2c2fcf0a276cf9fc65c10978957cdb37dbc7cee57c0ff3eef9e78f SHA512 831ec541a52fe5e72f97832927ce0c6b8a90c2954d715be1c088f5886bba6058b313e4364e164c0af90d1de90f0890f9a1b64d1985ef1d448ac34e5951b0a16b +AUX vpopmail-5.4.33-unistd.patch 266 BLAKE2B 19dd429573f0b45b93cd35d522787029ba445c2f363a7a270ab1c547e4f0c2a7be89c287642a3e5e8d69ea59a82271aff271670d19d3850146e92a3389aa3dc8 SHA512 1cc6e6a067cabc004224c022af8c3ee90125a3b3daa9c346ca8a57962be30681a6181605624fc09a8992a7e3d3e7b3d8d6c0ce95095399c1a5dec798e9d6f6cd +AUX vpopmail-5.4.33-vdelivermail-add-static.patch 1017 BLAKE2B 279bd5c2b894268910a89d1df206289fce475df9b655febc27eca6f1ecf1ecd6bc55e250d0eeb5e86e89a5df0543a08af34b379888ecb4590b91ba62b521b9f2 SHA512 bcf80e30d5010decad135a84527985a29d61d054a0396af662f33bc4a63c3dc1dd0585e884376f25babf0ca263d2496991b16d1c215962a64597f4cd1cd50ca0 AUX vpopmail-5.4.9-access.violation.patch 922 BLAKE2B 038e5ee8483aceb521d2b8956af3fc2d166952d7ebba58960c247a90bda5ee73f2d33605c5e66f4ee667971a695251e1ef6b978d342bad9b4f34f0dfed0a6678 SHA512 eb9a37e3c2b5ad6faa9dcf8f07b240325ee2a3924dfc2abb3245972f8a892b7864f160c0475c1cbd3c5544f0844c20e20046b6a192b241bc8a3c90efe6797203 AUX vpopmail-Maildir-dotmaildir-fix.sh 1346 BLAKE2B efc7c1e97c201e9f36c3b817538b87c5522b0b2b16b681e0bbbf77bdd8537634d56cbe29b7eb26d657d83fb696b0fc00724dea9d03f246794c5631f8c2ca7ce1 SHA512 201ad103157add727560bc1596042ae621d1645abf912aa3b3ec1af71aaf65dff92c967f000b7a126e9f2eb5e351838c78ffee855402d93bdcf89e96ebb0d0e9 AUX vpopmail-double-free.patch 399 BLAKE2B ac2d7ad9b8b3e9cf25fbd973c7e42e48c1107edfca033126fb420420a9b1eb8866a53552df110e8dca8cced2d653181eb2a6dfc3c07e33a958d7f86ad4035285 SHA512 df7a99357d4673f9d5c4619d67e418a769b2ab72c95d0a7477f186bf15fc4d0f6bec93a64970660439c25573dc0cd2994f5f4aca335723eeaec6761a7838f332 AUX vpopmail-lazy.patch 328 BLAKE2B 90cc8d6329e04348291df0ddeb5deb385f33cc7601b97fc6237233fcd51c12fccad824b609911aa3025912cd16a06fcc6c45dcc3390e190343f3ebf50e2b0619 SHA512 e89756acf8be564db00883f8e68a50bc96abb50b682a181c191f12c39f16ae4c71d5861fadc3279dd4a7e5ee5b513f502905da36006da583f239c396618133d6 AUX vpopmail-vpgsql.patch 2670 BLAKE2B c295ed94b878f4f9cad64cc36647c470718043b889331c9eb94bfc762b4a6e317c7f35a7bbf0bc67569ec72533b3f25abdbbf1f5218cfa8af097b417cd4909e7 SHA512 45f516310f5cf47be7a297022b17e353d2794d156ece4d3b163747545379a018927fbf37b9986e8c939a987b07b13e959d8fd5322c23ce96b441f75cfe42448d DIST vpopmail-5.4.33.tar.gz 612271 BLAKE2B 1dacc512c5d64e8f73a0630209407161afd87ebec510cdf57cb8aaa8be9b911141612d69892981a2545fc263e798f6e7dc9d5a283e1177e223f4a2e1fac80017 SHA512 abd5060d709c661d95ca442c6f77c4c27cf30a3c6790fc36d76ccf379ed2e08c1f0af697b2bcc57176a2cdb2cb67f6c27236d7b3fa69a135fa87f45a5df208ab -EBUILD vpopmail-5.4.33-r3.ebuild 9013 BLAKE2B 625c32e0e532422b0479a34f7f1e40314508cad4c7dbe7b86b45372a73d66fb277de7d4f79263a4db8f4203b818fb33b370aad80162746e0d120ae51dccd5d4d SHA512 7d89ee3d3301face0016eb03cadedc64b618f8ad743346a829b9148e4803fda47f7931fae79028d86f88c93c5d994e20912a1dc9b0709a9acec642fb8ec9d3ac -EBUILD vpopmail-5.4.33.ebuild 7658 BLAKE2B 0c3d9c5736e549d84be9604ece0a11fb064b4966f600fea5c1456ac92ddc25a4488c0fe328b53d12869a229426d98f333170b703484286804db1962e1c72f358 SHA512 8ad7fed94d1cf598ff019c04363ad4d3262716c4d460597c3886826d12b746f1b4151813526c7923225adc29165ba91db2d98bc988b8545bc659df0f5fcee0f6 +EBUILD vpopmail-5.4.33-r3.ebuild 9013 BLAKE2B 52cf5e2fd6d298bc6360e5438c9f3361c6a8e942e8c1f94ce555391de350860469016b54d4cd133b2e045bb8ecc2289e547d93af9b8efa41ebc10d1bf7ca7d9c SHA512 d0e9373f3a207130c8281c91b955f62cccd40d7ad61a523aa823610783f2b0f675bfab038857693ece63a12e6022f6a7a8d177be1469b38327aeadaaee9d93d1 +EBUILD vpopmail-5.4.33-r4.ebuild 8003 BLAKE2B c1795b13757f230db9a86833c8cea20f78214303ff4d5a7d3d11210494c464661da9ae1ea1802c87a12584d274584c73933128624ca2b50b201a5f7eee5acc0f SHA512 79b283d5c5f5fd3ac42b950c517e1bdc1c71fc5db570722fbc7001175473974d48bdd2f392fd33a0322b595dbc65e34e07b31d1f3511d8b05030c466330988aa +EBUILD vpopmail-5.4.33.ebuild 7658 BLAKE2B 585b4301997bcc0a13c40143338e29f2a054773c7477f3106dfd4ae71f787c15152f1fb9e84cf123c71092c42e0e42e96857ac5cb2ff1d918c87ffcb6f7c30fe SHA512 04ffa6437901fdb9f7d5a7f445dd60ff5f443d8c69add9a26d28c01f777195ea4d7f57bfef988c1452553b15d9a4fb8057ace7b6a004382f71e836fa4b9f9fdc MISC metadata.xml 798 BLAKE2B 9d38645910ab93bb1557fb51895900fc5280086a702d1b561a7676206147498a6c1cba59dde1e3f320fc20d3099f304ec71056273cf4955530cc59f0cc0b4439 SHA512 b91e76e79c223a21648a2c380d4d81517b4bab65238b641734d173312e2ced4004e31b7d4aaced92962ae5cd65bfaafe7ab2f14612489d28598b8b1d0a9a5465 diff --git a/net-mail/vpopmail/files/vpopmail-5.4.33-clean-up-calling-maildrop.patch b/net-mail/vpopmail/files/vpopmail-5.4.33-clean-up-calling-maildrop.patch new file mode 100644 index 000000000000..c85c1b3150d2 --- /dev/null +++ b/net-mail/vpopmail/files/vpopmail-5.4.33-clean-up-calling-maildrop.patch @@ -0,0 +1,74 @@ +From 692e6f75056d93f0e9a024e3638259d5ba0fe398 Mon Sep 17 00:00:00 2001 +From: Rolf Eike Beer <eike@sf-mail.de> +Date: Thu, 21 Aug 2014 17:55:27 +0200 +Subject: [PATCH 4/5] clean up calling maildrop + +-add const for arguments +-do not prepend "| " to call for preline, run_command() will then just skip + over this anyway +-put the buffer for the maildrop command in the most local scope +--- + vdelivermail.c | 14 ++++++-------- + 1 file changed, 6 insertions(+), 8 deletions(-) + +diff --git a/vpopmail-5.4.33/vdelivermail.c b/vpopmail-5.4.33/vdelivermail.c +index be83a2a..2ad2e12 100644 +--- a/vdelivermail.c ++++ b/vdelivermail.c +@@ -94,7 +94,7 @@ ssize_t get_message_size(); + void deliver_mail(char *address, char *quota); + int check_forward_deliver(char *dir); + int is_looping( char *address ); +-void run_command(char *prog); ++static void run_command(const char *prog); + void checkuser(void); + void usernotfound(void); + int is_loop_match( const char *dt, const char *address); +@@ -360,9 +360,6 @@ static int fdcopy (int write_fd, int read_fd, const char *extra_headers, size_t + long unsigned pid; + int pim[2]; + #endif +-#ifdef MAILDROP +- char maildrop_command[256]; +-#endif + + /* write the Return-Path: and Delivered-To: headers */ + if (headerlen > 0) { +@@ -409,7 +406,8 @@ static int fdcopy (int write_fd, int read_fd, const char *extra_headers, size_t + #ifdef MAILDROP + if ( limits.disable_maildrop==0 && vpw!=NULL && + !(vpw->pw_gid & NO_MAILDROP) ) { +- sprintf(maildrop_command, "| preline %s", MAILDROP_PROG); ++ char maildrop_command[256]; ++ sprintf(maildrop_command, "preline %s", MAILDROP_PROG); + run_command(maildrop_command); + DeleteMail = 1; + return(0); +@@ -896,13 +894,13 @@ void (*f)(); + /* open a pipe to a command + * return the pid or -1 if error + */ +-void run_command(char *prog) ++void run_command(const char *prog) + { + + #define MAX_ENV_BUFF 100 + + int child; +- char *(args[4]); ++ const char *(args[4]); + int wstat; + + while ((*prog == ' ') || (*prog == '|')) ++prog; +@@ -915,7 +913,7 @@ void run_command(char *prog) + case 0: + + putenv("SHELL=/bin/sh"); +- args[0] = "/bin/sh"; args[1] = "-c"; args[2] = prog; args[3] = 0; ++ args[0] = "/bin/sh"; args[1] = "-c"; args[2] = prog; args[3] = NULL; + sig_catch(SIGPIPE,SIG_DFL); + execv(*args,args); + printf("Unable to run /bin/sh: %d.", errno); +-- +1.8.4.5 + diff --git a/net-mail/vpopmail/files/vpopmail-5.4.33-fix-S-tag-in-case-spamassassin-changed-the-file-size.patch b/net-mail/vpopmail/files/vpopmail-5.4.33-fix-S-tag-in-case-spamassassin-changed-the-file-size.patch new file mode 100644 index 000000000000..db22a6efde42 --- /dev/null +++ b/net-mail/vpopmail/files/vpopmail-5.4.33-fix-S-tag-in-case-spamassassin-changed-the-file-size.patch @@ -0,0 +1,96 @@ +From fd0a1034e3842ceb573851e62547b26a2b389263 Mon Sep 17 00:00:00 2001 +From: Rolf Eike Beer <eike@sf-mail.de> +Date: Thu, 21 Aug 2014 18:48:52 +0200 +Subject: [PATCH 5/5] fix ,S= tag in case spamassassin changed the file size + +--- + vdelivermail.c | 24 +++++++++++++++++++++--- + 1 file changed, 21 insertions(+), 3 deletions(-) + +diff --git a/vpopmail-5.4.33/vdelivermail.c b/vpopmail-5.4.33/vdelivermail.c +index 2ad2e12..3631c3c 100644 +--- a/vdelivermail.c ++++ b/vdelivermail.c +@@ -351,6 +351,12 @@ static pid_t qmail_inject_open(char *address) + return(pid); + } + ++/** ++ * @returns if delivery worked ++ * @retval 0 message was delivered as is ++ * @retval 1 the file has changed the size during delivery ++ * @retval -1 error ++ */ + static int fdcopy (int write_fd, int read_fd, const char *extra_headers, size_t headerlen, char *address) + { + char msgbuf[4096]; +@@ -360,6 +366,7 @@ static int fdcopy (int write_fd, int read_fd, const char *extra_headers, size_t + long unsigned pid; + int pim[2]; + #endif ++ int has_changed_size = 0; + + /* write the Return-Path: and Delivered-To: headers */ + if (headerlen > 0) { +@@ -399,6 +406,7 @@ static int fdcopy (int write_fd, int read_fd, const char *extra_headers, size_t + close(pim[1]); + dup2(pim[0], 0); + close(pim[0]); ++ has_changed_size = 1; + } + } + #endif +@@ -431,7 +439,7 @@ static int fdcopy (int write_fd, int read_fd, const char *extra_headers, size_t + if ( write(write_fd, msgbuf, file_count) == -1 ) return -1; + } + +- return 0; ++ return has_changed_size; + } + + void read_quota_from_maildir (const char *maildir, char *qbuf, size_t qlen) +@@ -493,6 +501,7 @@ int deliver_to_maildir ( + size_t headerlen; + int write_fd; + char quota[80]; ++ int fdr; + + headerlen = strlen (extra_headers); + msgsize += headerlen; +@@ -518,7 +527,8 @@ int deliver_to_maildir ( + } + + local = 1; +- if (fdcopy(write_fd, read_fd, extra_headers, headerlen, maildir_to_email(maildir)) != 0) { ++ fdr = fdcopy(write_fd, read_fd, extra_headers, headerlen, maildir_to_email(maildir)); ++ if (fdr < 0) { + /* Did the write fail because we were over quota? */ + if ( errno == EDQUOT ) { + close(write_fd); +@@ -530,6 +540,14 @@ int deliver_to_maildir ( + unlink (local_file_tmp); + return -2; + } ++ } else if (fdr == 1) { ++ /* the file has changed it's size during delivery, e.g. because ++ * SpamAssassin has written it's report to it. */ ++ struct stat st; ++ ++ if (fstat(write_fd, &st) == 0 && st.st_size != msgsize) ++ snprintf(local_file_new, sizeof(local_file_new), "%snew/%lu.%lu.%.32s,S=%lu", ++ maildir, tm, pid, hostname, (long unsigned) st.st_size); + } + + /* completed write to tmp directory, now move it into the new directory */ +@@ -777,7 +795,7 @@ void deliver_mail(char *address, char *quota) + } + + local = 0; +- if (fdcopy (fdm, 0, DeliveredTo, strlen(DeliveredTo), address) != 0) { ++ if (fdcopy (fdm, 0, DeliveredTo, strlen(DeliveredTo), address) < 0) { + printf ("write to qmail-inject failed: %d\n", errno); + close(fdm); + waitpid(inject_pid,&child,0); +-- +1.8.4.5 + diff --git a/net-mail/vpopmail/files/vpopmail-5.4.33-fix-those-vfork-instances-that-do-more-than-exec.patch b/net-mail/vpopmail/files/vpopmail-5.4.33-fix-those-vfork-instances-that-do-more-than-exec.patch new file mode 100644 index 000000000000..4f154fcc8d33 --- /dev/null +++ b/net-mail/vpopmail/files/vpopmail-5.4.33-fix-those-vfork-instances-that-do-more-than-exec.patch @@ -0,0 +1,77 @@ +From de58b5d05fdabf2f17d8a6ec3ef804b59a013242 Mon Sep 17 00:00:00 2001 +From: Rolf Eike Beer <eike@sf-mail.de> +Date: Thu, 21 Aug 2014 17:36:36 +0200 +Subject: [PATCH 2/5] fix those vfork() instances that do more than exec*() + +--- + vdelivermail.c | 4 ++-- + vpopmail.c | 8 ++++---- + vqmaillocal.c | 2 +- + 3 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/vpopmail-5.4.33/vdelivermail.c b/vpopmail-5.4.33/vdelivermail.c +index 241106e..be83a2a 100644 +--- a/vdelivermail.c ++++ b/vdelivermail.c +@@ -330,7 +330,7 @@ static pid_t qmail_inject_open(char *address) + + if ( pipe(pim) == -1) return 0; + +- switch(pid=vfork()){ ++ switch(pid=fork()){ + case -1: + close(pim[0]); + close(pim[1]); +@@ -381,7 +381,7 @@ static int fdcopy (int write_fd, int read_fd, const char *extra_headers, size_t + !(vpw->pw_gid & NO_SPAMASSASSIN) ) { + + if (!pipe(pim)) { +- pid = vfork(); ++ pid = fork(); + switch (pid) { + case -1: + close(pim[0]); +diff --git a/vpopmail-5.4.33/vpopmail.c b/vpopmail-5.4.33/vpopmail.c +index 5aaeb32..334a8ab 100644 +--- a/vpopmail.c ++++ b/vpopmail.c +@@ -1473,9 +1473,9 @@ int update_newu() + { + int pid; + +- pid=vfork(); ++ pid=fork(); + if ( pid==0){ +- umask(022); ++ umask(022); + execl(QMAILNEWU,"qmail-newu", NULL); + exit(127); + } else { +@@ -3366,9 +3366,9 @@ long unsigned tcprules_open() + /* create a pair of filedescriptors for our pipe */ + if (pipe(pim) == -1) { return(-1);} + +- switch( pid=vfork()){ ++ switch( pid=fork()){ + case -1: +- /* vfork error. close pipes and exit */ ++ /* fork error. close pipes and exit */ + close(pim[0]); close(pim[1]); + return(-1); + case 0: +diff --git a/vpopmail-5.4.33/vqmaillocal.c b/vpopmail-5.4.33/vqmaillocal.c +index 6d3068c..80efa24 100644 +--- a/vqmaillocal.c ++++ b/vqmaillocal.c +@@ -359,7 +359,7 @@ long unsigned qmail_inject_open(char *address) + + if ( pipe(pim) == -1) return(-1); + +- switch(pid=vfork()){ ++ switch(pid=fork()){ + case -1: + close(pim[0]); + close(pim[1]); +-- +1.8.4.5 + diff --git a/net-mail/vpopmail/files/vpopmail-5.4.33-remove-unneeded-forward-declaration.patch b/net-mail/vpopmail/files/vpopmail-5.4.33-remove-unneeded-forward-declaration.patch new file mode 100644 index 000000000000..23ec43be0242 --- /dev/null +++ b/net-mail/vpopmail/files/vpopmail-5.4.33-remove-unneeded-forward-declaration.patch @@ -0,0 +1,24 @@ +From 32ce986d86695dd55d4c888c30fe62b910b99f17 Mon Sep 17 00:00:00 2001 +From: Rolf Eike Beer <eike@sf-mail.de> +Date: Thu, 21 Aug 2014 17:45:28 +0200 +Subject: [PATCH 3/5] remove unneeded forward declaration + +--- + vchkpw.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/vpopmail-5.4.33/vchkpw.c b/vpopmail-5.4.33/vchkpw.c +index b1c8a5d..d7d4351 100644 +--- a/vchkpw.c ++++ b/vchkpw.c +@@ -91,7 +91,6 @@ void login_system_user(); + void read_user_pass(); + void vlog(int verror, char *TheUser, char *TheDomain, char *ThePass, char *TheName, char *IpAddr, char *LogLine); + void vchkpw_exit(int err); +-void run_command(char *prog); + int authcram( char *response, char *challenge, char *password); + int authapop( char *password, char *timestamp, char *clearpass); + +-- +1.8.4.5 + diff --git a/net-mail/vpopmail/files/vpopmail-5.4.33-strncat.patch b/net-mail/vpopmail/files/vpopmail-5.4.33-strncat.patch new file mode 100644 index 000000000000..f3c9c71b2993 --- /dev/null +++ b/net-mail/vpopmail/files/vpopmail-5.4.33-strncat.patch @@ -0,0 +1,166 @@ +https://sourceforge.net/p/vpopmail/patches/98/ + +--- a/vpopmaild.c (revision 998) ++++ b/vpopmaild.c (working copy) +@@ -1326,7 +1326,7 @@ + } + } + snprintf(newpath, MAXPATH, "%s",myvpw->pw_dir); +- strncat(newpath, &path[i], MAXPATH ); ++ strncat(newpath, &path[i], MAXPATH-strlen(newpath)-1); + } else { /* may be domain name */ + for(i=0;path[i]!='/'&&path[i]!=0&&i<256;++i) { + thedomain[i] = path[i]; +@@ -1337,7 +1337,7 @@ + return(9); + } + snprintf(newpath, MAXPATH, "%s", thedir); +- strncat(newpath, &path[i], MAXPATH ); ++ strncat(newpath, &path[i], MAXPATH-strlen(newpath)-1); + } + } + +@@ -1459,23 +1459,23 @@ + } + snprintf( WriteBuf, sizeof(WriteBuf), "%s", mydirent->d_name); + if ( S_ISREG(statbuf.st_mode ) ) { +- strncat(WriteBuf," file", sizeof(WriteBuf)); ++ strncat(WriteBuf," file", sizeof(WriteBuf)-strlen(WriteBuf)-1); + } else if ( S_ISDIR(statbuf.st_mode ) ) { +- strncat(WriteBuf," dir", sizeof(WriteBuf)); ++ strncat(WriteBuf," dir", sizeof(WriteBuf)-strlen(WriteBuf)-1); + } else if ( S_ISCHR(statbuf.st_mode ) ) { +- strncat(WriteBuf," chardev", sizeof(WriteBuf)); ++ strncat(WriteBuf," chardev", sizeof(WriteBuf)-strlen(WriteBuf)-1); + } else if ( S_ISBLK(statbuf.st_mode ) ) { +- strncat(WriteBuf," blkdev", sizeof(WriteBuf)); ++ strncat(WriteBuf," blkdev", sizeof(WriteBuf)-strlen(WriteBuf)-1); + } else if ( S_ISFIFO(statbuf.st_mode ) ) { +- strncat(WriteBuf," fifo", sizeof(WriteBuf)); ++ strncat(WriteBuf," fifo", sizeof(WriteBuf)-strlen(WriteBuf)-1); + } else if ( S_ISLNK(statbuf.st_mode ) ) { +- strncat(WriteBuf," link", sizeof(WriteBuf)); ++ strncat(WriteBuf," link", sizeof(WriteBuf)-strlen(WriteBuf)-1); + } else if ( S_ISSOCK(statbuf.st_mode ) ) { +- strncat(WriteBuf," sock", sizeof(WriteBuf)); ++ strncat(WriteBuf," sock", sizeof(WriteBuf)-strlen(WriteBuf)-1); + } else { +- strncat(WriteBuf," unknown", sizeof(WriteBuf)); ++ strncat(WriteBuf," unknown", sizeof(WriteBuf)-strlen(WriteBuf)-1); + } +- strncat(WriteBuf,RET_CRLF, sizeof(WriteBuf)); ++ strncat(WriteBuf,RET_CRLF, sizeof(WriteBuf)-strlen(WriteBuf)-1); + wait_write(); + } + if ( closedir(mydir) < 0 ) { +@@ -1604,7 +1604,7 @@ + while(fgets(tmpbuf,sizeof(tmpbuf),fs)!=NULL){ + if ( strcmp(tmpbuf, "." RET_CRLF) == 0 || strcmp(tmpbuf, ".\n") == 0 ) { + snprintf(WriteBuf, sizeof(WriteBuf), "%s", "."); +- strncat(WriteBuf, tmpbuf, sizeof(WriteBuf)); ++ strncat(WriteBuf, tmpbuf, sizeof(WriteBuf)-strlen(WriteBuf)-1); + } else { + memcpy(WriteBuf,tmpbuf,sizeof(tmpbuf)); + } +--- a/vmysql.c (revision 998) ++++ b/vmysql.c (working copy) +@@ -731,7 +731,7 @@ + ); + + if ( sortit == 1 ) { +- strncat( SqlBufRead, " order by pw_name", SQL_BUF_SIZE); ++ strncat( SqlBufRead, " order by pw_name", SQL_BUF_SIZE-strlen(SqlBufRead)-1); + } + + if (res_read!=NULL) mysql_free_result(res_read_getall); +--- a/vldap.c (revision 998) ++++ b/vldap.c (working copy) +@@ -1022,7 +1022,7 @@ + + /* if we are lucky the domain is in the assign file */ + if ( vget_assign(domain,dir_control_file,MAX_DIR_NAME,NULL,NULL)!=NULL ) { +- strncat(dir_control_file, "/.dir-control", MAX_DIR_NAME); ++ strncat(dir_control_file, "/.dir-control", MAX_DIR_NAME-strlen(dir_control_file)-1); + + /* it isn't in the assign file so we have to get it from /etc/passwd */ + } else { +@@ -1041,7 +1041,7 @@ + } + + /* stick on the rest of the path */ +- strncat(dir_control_file, "/" DOMAINS_DIR "/.dir-control", MAX_DIR_NAME); ++ strncat(dir_control_file, "/" DOMAINS_DIR "/.dir-control", MAX_DIR_NAME-strlen(dir_control_file)-1); + } + return(dir_control_file); + } +@@ -1177,7 +1177,7 @@ + char dir_control_file[MAX_DIR_NAME]; + + vget_assign(domain, dir_control_file, 156, NULL,NULL); +- strncat(dir_control_file,"/.dir-control", MAX_DIR_NAME); ++ strncat(dir_control_file,"/.dir-control", MAX_DIR_NAME-strlen(dir_control_file)-1); + return(unlink(dir_control_file)); + } + +--- a/vpopmail.c (revision 998) ++++ b/vpopmail.c (working copy) +@@ -1900,8 +1900,8 @@ + + // Copy the rest of the terms into the domain name + for(j=1;j<i;j++) { +- strncat( domain, ".", MAX_BUFF ); +- strncat( domain, parts[j], MAX_BUFF ); ++ strncat( domain, ".", MAX_BUFF-strlen(domain)-1); ++ strncat( domain, parts[j], MAX_BUFF-strlen(domain)-1); + } + + } +--- a/vcdb.c (revision 998) ++++ b/vcdb.c (working copy) +@@ -271,7 +271,7 @@ + } + + strncpy(line,user,sizeof(line)); +- strncat(line,":",sizeof(line)); ++ strncat(line,":",sizeof(line)-strlen(line)-1); + ptr = line; + while (*ptr != ':') { ptr++; } + ptr++; +@@ -1055,7 +1055,7 @@ + char dir_control_file[MAX_DIR_NAME]; + + vget_assign(domain, dir_control_file, 156, NULL,NULL); +- strncat(dir_control_file,"/.dir-control", MAX_DIR_NAME); ++ strncat(dir_control_file,"/.dir-control", MAX_DIR_NAME-strlen(dir_control_file)-1); + return(unlink(dir_control_file)); + } + +@@ -1120,7 +1120,7 @@ + + /* if we are lucky the domain is in the assign file */ + if ( vget_assign(domain,dir_control_file,MAX_DIR_NAME,NULL,NULL)!=NULL ) { +- strncat(dir_control_file, "/.dir-control", MAX_DIR_NAME); ++ strncat(dir_control_file, "/.dir-control", MAX_DIR_NAME-strlen(dir_control_file)-1); + + /* it isn't in the assign file so we have to get it from /etc/passwd */ + } else { +@@ -1139,7 +1139,7 @@ + } + + /* stick on the rest of the path */ +- strncat(dir_control_file, "/" DOMAINS_DIR "/.dir-control", MAX_DIR_NAME); ++ strncat(dir_control_file, "/" DOMAINS_DIR "/.dir-control", MAX_DIR_NAME-strlen(dir_control_file)-1); + } + return(dir_control_file); + } +--- a/vpgsql.c (revision 998) ++++ b/vpgsql.c (working copy) +@@ -522,7 +522,7 @@ + #endif + ); + if ( sortit == 1 ) { +- strncat( SqlBufRead, " order by pw_name", SQL_BUF_SIZE); ++ strncat( SqlBufRead, " order by pw_name", SQL_BUF_SIZE-strlen(SqlBufRead)-1); + } + if ( pgres ) { /* reset state if we had previous result */ + PQclear(pgres); // clear previous result diff --git a/net-mail/vpopmail/files/vpopmail-5.4.33-unistd.patch b/net-mail/vpopmail/files/vpopmail-5.4.33-unistd.patch new file mode 100644 index 000000000000..803276f89ad5 --- /dev/null +++ b/net-mail/vpopmail/files/vpopmail-5.4.33-unistd.patch @@ -0,0 +1,9 @@ +--- vpopmail-5.4.33-orig/cdb/cdb_seek.c 2019-09-25 23:01:01.332000000 +0200 ++++ vpopmail-5.4.33/cdb/cdb_seek.c 2019-09-25 23:03:04.112000000 +0200 +@@ -1,5 +1,6 @@ + #include <sys/types.h> + #include <errno.h> ++#include <unistd.h> + #include "cdb.h" + + #ifndef SEEK_SET diff --git a/net-mail/vpopmail/files/vpopmail-5.4.33-vdelivermail-add-static.patch b/net-mail/vpopmail/files/vpopmail-5.4.33-vdelivermail-add-static.patch new file mode 100644 index 000000000000..88306872b484 --- /dev/null +++ b/net-mail/vpopmail/files/vpopmail-5.4.33-vdelivermail-add-static.patch @@ -0,0 +1,34 @@ +From 31bef5aeeaf1e24eb40e84e41312dd6ae865ee03 Mon Sep 17 00:00:00 2001 +From: Rolf Eike Beer <eike@sf-mail.de> +Date: Thu, 21 Aug 2014 17:34:27 +0200 +Subject: [PATCH 1/5] vdelivermail: add static + +--- + vdelivermail.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/vpopmail-5.4.33/vdelivermail.c b/vpopmail-5.4.33/vdelivermail.c +index d94129f..241106e 100644 +--- a/vdelivermail.c ++++ b/vdelivermail.c +@@ -322,7 +322,7 @@ int process_valias(void) + #endif + + /* Forks off qmail-inject. Returns PID of child, or 0 for failure. */ +-pid_t qmail_inject_open(char *address) ++static pid_t qmail_inject_open(char *address) + { + int pim[2]; + pid_t pid; +@@ -351,7 +351,7 @@ pid_t qmail_inject_open(char *address) + return(pid); + } + +-int fdcopy (int write_fd, int read_fd, const char *extra_headers, size_t headerlen, char *address) ++static int fdcopy (int write_fd, int read_fd, const char *extra_headers, size_t headerlen, char *address) + { + char msgbuf[4096]; + ssize_t file_count; +-- +1.8.4.5 + diff --git a/net-mail/vpopmail/vpopmail-5.4.33-r3.ebuild b/net-mail/vpopmail/vpopmail-5.4.33-r3.ebuild index 9aec8fe2f04e..eca83681371d 100644 --- a/net-mail/vpopmail/vpopmail-5.4.33-r3.ebuild +++ b/net-mail/vpopmail/vpopmail-5.4.33-r3.ebuild @@ -15,7 +15,9 @@ KEYWORDS="~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86" IUSE="clearpasswd ipalias maildrop mysql postgres spamassassin" REQUIRED_USE="mysql? ( !postgres )" -DEPEND="virtual/qmail +DEPEND=" + acct-group/vpopmail + virtual/qmail maildrop? ( mail-filter/maildrop ) mysql? ( dev-db/mysql-connector-c:0= ) postgres? ( dev-db/postgresql:=[server] ) @@ -88,7 +90,6 @@ vpopmail_set_homedir() { } pkg_setup() { - enewgroup vpopmail 89 enewuser vpopmail 89 -1 ${VPOP_DEFAULT_HOME} vpopmail upgradewarning } diff --git a/net-mail/vpopmail/vpopmail-5.4.33-r4.ebuild b/net-mail/vpopmail/vpopmail-5.4.33-r4.ebuild new file mode 100644 index 000000000000..4b291b713517 --- /dev/null +++ b/net-mail/vpopmail/vpopmail-5.4.33-r4.ebuild @@ -0,0 +1,266 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit autotools eutils fixheadtails qmail user + +HOMEPAGE="http://www.inter7.com/index.php?page=vpopmail" +DESCRIPTION="Collection of programs to manage virtual email on Qmail servers" +SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86" +IUSE="clearpasswd ipalias maildrop mysql postgres spamassassin" +REQUIRED_USE="mysql? ( !postgres )" + +DEPEND=" + acct-group/vpopmail + virtual/qmail + maildrop? ( mail-filter/maildrop ) + mysql? ( dev-db/mysql-connector-c:0= ) + postgres? ( dev-db/postgresql:=[server] ) + spamassassin? ( mail-filter/spamassassin )" +RDEPEND="${DEPEND}" + +PATCHES=( + "${FILESDIR}"/${PN}-5.4.9-access.violation.patch + "${FILESDIR}"/${PN}-lazy.patch + "${FILESDIR}"/${PN}-vpgsql.patch + "${FILESDIR}"/${PN}-double-free.patch + "${FILESDIR}"/${PN}-5.4.33-vdelivermail-add-static.patch + "${FILESDIR}"/${PN}-5.4.33-fix-those-vfork-instances-that-do-more-than-exec.patch + "${FILESDIR}"/${PN}-5.4.33-remove-unneeded-forward-declaration.patch + "${FILESDIR}"/${PN}-5.4.33-clean-up-calling-maildrop.patch + "${FILESDIR}"/${PN}-5.4.33-fix-S-tag-in-case-spamassassin-changed-the-file-size.patch + "${FILESDIR}"/${PN}-5.4.33-strncat.patch + "${FILESDIR}"/${PN}-5.4.33-unistd.patch +) +DOCS=( + doc/. +) +HTML_DOCS=( + doc_html/. + man_html/. +) + +# This makes sure the variable is set, and that it isn't null. +VPOP_DEFAULT_HOME="/var/vpopmail" + +vpopmail_set_homedir() { + VPOP_HOME=$(egethome vpopmail) + if [[ -z "${VPOP_HOME}" ]]; then + eerror "vpopmail's home directory is null in passwd data!" + eerror "You probably want to check that out." + eerror "Continuing with default." + VPOP_HOME="${VPOP_DEFAULT_HOME}" + else + einfo "Setting VPOP_HOME to: $VPOP_HOME" + fi +} + +pkg_setup() { + enewuser vpopmail 89 -1 ${VPOP_DEFAULT_HOME} vpopmail + upgradewarning +} + +src_prepare() { + default + + echo 'install-recursive: install-exec-am' \ + >>"${S}"/Makefile.am + + # fix maildir paths + sed -i -e 's|Maildir|.maildir|g' \ + vchkpw.c vconvert.c vdelivermail.c \ + vpopbull.c vpopmail.c vqmaillocal.c \ + vuserinfo.c maildirquota.c || die + + # remove vpopmail advertisement + sed -i -e '/printf.*vpopmail/s:vpopmail (:(:' \ + vdelivermail.c vpopbull.c vqmaillocal.c || die + + # automake/autoconf + mv -f "${S}"/configure.{in,ac} || die + sed -i -e 's,AM_CONFIG_HEADER,AC_CONFIG_HEADERS,g' \ + configure.ac || die + + # _FORTIFY_SOURCE + sed -i \ + -e 's/\(snprintf(\s*\(LI->[a-zA-Z_]\+\),\s*\)[a-zA-Z_]\+,/\1 sizeof(\2),/' \ + vlistlib.c || die + + eautoreconf + ht_fix_file cdb/Makefile +} + +src_configure() { + vpopmail_set_homedir + + local authopts + if use mysql; then + incdir=$(mysql_config --variable=pkgincludedir || die) + libdir=$(mysql_config --variable=pkglibdir || die) + authopts+=" --enable-auth-module=mysql" + authopts+=" --enable-incdir=${incdir}" + authopts+=" --enable-libdir=${libdir}" + authopts+=" --enable-sql-logging" + authopts+=" --enable-valias" + authopts+=" --disable-mysql-replication" + authopts+=" --enable-mysql-limits" + elif use postgres; then + libdir=$(pg_config --libdir || die) + incdir=$(pg_config --pkgincludedir || die) + authopts+=" --enable-auth-module=pgsql" + authopts+=" --enable-incdir=${incdir}" + authopts+=" --enable-libdir=${libdir}" + authopts+=" --enable-sql-logging" + authopts+=" --enable-valias" + else + authopts+=" --enable-auth-module=cdb" + fi + + econf ${authopts} \ + --sysconfdir=${VPOP_HOME}/etc \ + --enable-non-root-build \ + --enable-qmaildir=${QMAIL_HOME} \ + --enable-qmail-newu=${QMAIL_HOME}/bin/qmail-newu \ + --enable-qmail-inject=${QMAIL_HOME}/bin/qmail-inject \ + --enable-qmail-newmrh=${QMAIL_HOME}/bin/qmail-newmrh \ + --enable-vpopuser=vpopmail \ + --enable-vpopgroup=vpopmail \ + --enable-many-domains \ + --enable-file-locking \ + --enable-file-sync \ + --enable-md5-passwords \ + --enable-logging \ + --enable-auth-logging \ + --enable-log-name=vpopmail \ + --enable-qmail-ext \ + --disable-tcpserver-file \ + --disable-roaming-users \ + $(use_enable ipalias ip-alias-domains) \ + $(use_enable clearpasswd clear-passwd) \ + $(use_enable maildrop) \ + $(use_enable maildrop maildrop-prog /usr/bin/maildrop) \ + $(use_enable spamassassin) +} + +src_install() { + vpopmail_set_homedir + + emake DESTDIR="${D}" install + keepdir "${VPOP_HOME}"/domains + + # install helper script for maildir conversion + into "${VPOP_HOME}" + dobin "${FILESDIR}"/vpopmail-Maildir-dotmaildir-fix.sh + into /usr + + mv doc/doc_html/ doc/man_html/ . || die + einstalldocs + rm -r "${D}/${VPOP_HOME}"/doc || die + dosym \ + $(realpath --relative-to "${D}/${VPOP_HOME}"/ "${D}"/usr/share/doc/${PF}/ || die) \ + "${VPOP_HOME}"/doc + + # create /etc/vpopmail.conf + if use mysql; then + insinto /etc + newins "${D}${VPOP_HOME}"/etc/vpopmail.mysql vpopmail.conf + dosym \ + $(realpath --relative-to "${D}/${VPOP_HOME}"/etc/ "${D}"/etc/vpopmail.conf || die) \ + "${VPOP_HOME}"/etc/vpopmail.mysql + + sed -e '12d' -i "${D}"/etc/vpopmail.conf || die + echo '# Read-only DB' >> "${D}"/etc/vpopmail.conf + echo 'localhost|0|vpopmail|secret|vpopmail' >> "${D}"/etc/vpopmail.conf + echo '# Write DB' >> "${D}"/etc/vpopmail.conf + echo 'localhost|0|vpopmail|secret|vpopmail' >> "${D}"/etc/vpopmail.conf + + # lock down perms + fperms 640 /etc/vpopmail.conf + fowners root:vpopmail /etc/vpopmail.conf + fi + + insinto "${VPOP_HOME}"/etc + doins vusagec.conf + dosym "${VPOP_HOME}"/etc/vusagec.conf /etc/vusagec.conf + sed -i 's/Disable = False;/Disable = True;/g' "${D}${VPOP_HOME}"/etc/vusagec.conf || die + + einfo "Installing env.d entry" + dodir /etc/env.d + doenvd "${FILESDIR}"/99vpopmail + + einfo "Locking down vpopmail permissions" + fowners -R root:0 "${VPOP_HOME}"/{bin,etc,include} + fowners root:vpopmail "${VPOP_HOME}"/bin/vchkpw + fperms 4711 "${VPOP_HOME}"/bin/vchkpw +} + +pkg_postinst() { + if use mysql ; then + elog + elog "You have 'mysql' turned on in your USE" + elog "Vpopmail needs a VALID MySQL USER. Let's call it 'vpopmail'" + elog "You MUST add it and then specify its passwd in the /etc/vpopmail.conf file" + elog + elog "First log into mysql as your mysql root user and pass. Then:" + elog "> create database vpopmail;" + elog "> use mysql;" + elog "> grant select, insert, update, delete, create, drop on vpopmail.* to" + elog " vpopmail@localhost identified by 'your password';" + elog "> flush privileges;" + elog + elog "If you have problems with vpopmail not accepting mail properly," + elog "please ensure that /etc/vpopmail.conf is chmod 640 and" + elog "owned by root:vpopmail" + elog + fi + + # do this for good measure + if [[ -e /etc/vpopmail.conf ]]; then + chmod 640 /etc/vpopmail.conf || die + chown root:vpopmail /etc/vpopmail.conf || die + fi + + upgradewarning +} + +pkg_postrm() { + vpopmail_set_homedir + + elog "The vpopmail DATA will NOT be removed automatically." + elog "You can delete them manually by removing the ${VPOP_HOME} directory." +} + +upgradewarning() { + ewarn + ewarn "Massive important warning if you are upgrading to 5.2.1-r8 or older" + ewarn "The internal structure of the mail storage has changed for" + ewarn "consistancy with the rest of Gentoo! Please review and utilize the " + ewarn "script at ${VPOP_HOME}/bin/vpopmail-Maildir-dotmaildir-fix.sh" + ewarn "to upgrade your system! (It can do conversions both ways)." + ewarn "You should be able to run it right away without any changes." + ewarn + + elog + elog "Use of vpopmail's tcp.smtp[.cdb] is also deprecated now, consider" + elog "using net-mail/relay-ctrl instead." + elog + + if use mysql; then + elog + elog "If you are upgrading from 5.4.17 or older, you have to fix your" + elog "MySQL tables, please see the UPGRADE file in the documentation!" + elog + fi + + ewarn + ewarn "Newer versions of vpopmail contain a quota daemon called vusaged." + ewarn "This ebuild DOES NOT INSTALL vusaged and has therefore disabled" + ewarn "its usage in ${VPOP_HOME}/etc/vusagec.conf. DO NOT ENABLE!" + ewarn "Otherwise mail delivery WILL BREAK" + ewarn +} diff --git a/net-mail/vpopmail/vpopmail-5.4.33.ebuild b/net-mail/vpopmail/vpopmail-5.4.33.ebuild index bfc60278c208..e91114dbf411 100644 --- a/net-mail/vpopmail/vpopmail-5.4.33.ebuild +++ b/net-mail/vpopmail/vpopmail-5.4.33.ebuild @@ -14,7 +14,9 @@ SLOT="0" KEYWORDS="amd64 arm hppa ia64 ppc ppc64 s390 sh sparc x86" IUSE="clearpasswd ipalias maildrop mysql spamassassin" -DEPEND="virtual/qmail +DEPEND=" + acct-group/vpopmail + virtual/qmail maildrop? ( mail-filter/maildrop ) mysql? ( virtual/mysql ) spamassassin? ( mail-filter/spamassassin )" @@ -36,7 +38,6 @@ vpopmail_set_homedir() { } pkg_setup() { - enewgroup vpopmail 89 enewuser vpopmail 89 -1 ${VPOP_DEFAULT_HOME} vpopmail upgradewarning } |