* qmail+vpopmail support
@ 2006-05-03 13:46 Fabio Busatto
2006-05-03 18:32 ` Morten K. Poulsen
` (8 more replies)
0 siblings, 9 replies; 10+ messages in thread
From: Fabio Busatto @ 2006-05-03 13:46 UTC (permalink / raw)
To: mlmmj
[-- Attachment #1: Type: text/plain, Size: 1331 bytes --]
Hi, I've tested patch-mlmmj-listcontrol_env with qmail, and
I wrote a supplementary patch for it.
The problem is that the patch works with the qmail standard
installation, but quite all installations use vpopmail as
virtual domain manager, and the patch doesn't work with it.
The EXT environment variable infact contains the username
section after the first delimiter, but with vpopmail we have
a rewrite of the address like this:
user@domain.tld -> domain.tld-user@domain.tld
So, EXT contains the username (and not the extension).
The real extension is stored in the DEFAULT environment
variable, in both qmail and vpopmail scenarios.
But the problem is that DEFAULT is too common name to
be sure that it contains really an extension, so the
solution is to check for the value in DEFAULT, and to
compare it with the value in the EXT environment
variabile (qmail), or in the EXT2 environment variable
(qmail+vpopmail). If it matches, we can assume that it
contains an extension.
The patch also includes README.qmail, with explaination
of how mlmmj should be configured with qmail and a short
configuration example for vpopmail users.
This code has been tested in production environment
(so I can say that it works for me), but should not to be
marked stable until it will be applied in the mlmmj
official release.
Bye
Fabio
[-- Attachment #2: patch-mlmmj-listcontrol_env_vpopmail.diff --]
[-- Type: text/plain, Size: 3966 bytes --]
diff -uNr mlmmj-1.2.11-orig/README.qmail mlmmj-1.2.11/README.qmail
--- mlmmj-1.2.11-orig/README.qmail 1970-01-01 01:00:00.000000000 +0100
+++ mlmmj-1.2.11/README.qmail 2006-05-03 14:30:00.000000000 +0200
@@ -0,0 +1,64 @@
+|------------------------------------------------------------------------------|
+| Using mlmmj with qmail (and vpopmail) |
+|------------------------------------------------------------------------------|
+|--------------- Fabio Busatto <fabio.busatto@programmazione.it> --------------|
+|------------------------------------------------------------------------------|
+
+This mini-HOWTO is a step-by-step guide for using mlmmj with qmail MTA
+(http://www.qmail.org/), and it has been successfully tested also with vpopmail
+virtual domains (http://www.inter7.com/vpopmail/).
+
+Prerequisites:
+- qmail (and vpopmail) correctly installed
+- mlmmj correctly installed
+
+Conventions:
+- ${BINDIR}: directory with mlmmj binary files (/usr/local/bin/)
+- ${LISTDIR}: directory with list configuration files
+ (/var/spool/mlmmj/listname)
+- ${DQFILE}: dot-qmail file (see below)
+
+Configuration:
+- the first thing you've to do is to create the list, using the
+ mlmmj-make-ml.sh script (follow the classic procedure to do this step)
+- enter the control directory for the list (${LISTDIR}/control/), and execute
+ the following command:
+ # cd ${LISTDIR}/control/; echo '-' > delimiter
+- chown and chmod the file according to the mlmmj configuration
+- create dot-qmail files for the list to handle direct requests and extensions:
+ # echo -e "|${BINDIR}/mlmmj-recieve -L ${LISTDIR}" > ${DQFILE}
+- chown and chmod the files according to the qmail (and vpopmail) configuration
+
+WARNING: REMEMBER that the delimiter is -, so do not use + when composing mail
+addresses for extensions!!!
+
+WARNING: DO NOT USE 'preline' command in dot-qmail files, it will result in
+mlmmj to not work properly!!!
+
+|------------------------------------------------------------------------------|
+
+Example:
+
+- Configuring mlmmj to handle ml@programmazione.it mailing list using qmail as
+ MTA and vpopmail for virtual domain support:
+
+# mlmmj-make-ml.sh -c vpopmail:vchkpw -L ml
+Creating Directorys below /var/spool/mlmmj. Use '-s spooldir' to change
+The Domain for the List? [] : programmazione.it
+The emailaddress of the list owner? [postmaster] : postmaster@programmazione.it
+The path to texts for the list? [/usr/local/share/mlmmj/text.skel] :
+chown -R vpopmail:vchkpw /var/spool/mlmmj/ml? [y/n]: y
+
+# cd /var/spool/mlmmj/ml/control/
+# echo '-' > delimiter
+# chown vpopmail:vchkpw delimiter
+# cd /home/vpopmail/domains/programmazione.it/
+# echo -e "|/usr/local/bin/mlmmj-recieve -L /var/spool/mlmmj/ml/" > .qmail-ml
+# cp -a .qmail-ml .qmail-ml-default
+# cat *-default
+# chown vpopmail:vchkpw .qmail-ml .qmail-ml-default
+# chmod 600 .qmail-ml .qmail-ml-default
+
+|------------------------------------------------------------------------------|
+|--------------- Fabio Busatto <fabio.busatto@programmazione.it> --------------|
+|------------------------------------------------------------------------------|
diff -uNr mlmmj-1.2.11-orig/src/mlmmj-process.c mlmmj-1.2.11/src/mlmmj-process.c
--- mlmmj-1.2.11-orig/src/mlmmj-process.c 2006-05-03 14:39:21.000000000 +0200
+++ mlmmj-1.2.11/src/mlmmj-process.c 2006-05-03 14:37:02.000000000 +0200
@@ -542,7 +542,10 @@
}
/* address extension (the "foo" part of "user+foo@domain.tld") */
- if((envstr = getenv("EXT")) != NULL) {
+ if(((envstr = getenv("DEFAULT")) != NULL) && (getenv("EXT2") != NULL) && (strcmp(envstr, getenv("EXT2")) == 0)) {
+ /* qmail+vpopmail */
+ recipextra = mystrdup(envstr);
+ } else if(((envstr = getenv("DEFAULT")) != NULL) && (getenv("EXT") != NULL) && (strcmp(envstr, getenv("EXT")) == 0)) {
/* qmail */
recipextra = mystrdup(envstr);
} else if((envstr = getenv("EXTENSION")) != NULL) {
^ permalink raw reply [flat|nested] 10+ messages in thread* Re: qmail+vpopmail support 2006-05-03 13:46 qmail+vpopmail support Fabio Busatto @ 2006-05-03 18:32 ` Morten K. Poulsen 2006-05-08 8:29 ` Thomas Goirand ` (7 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: Morten K. Poulsen @ 2006-05-03 18:32 UTC (permalink / raw) To: mlmmj [-- Attachment #1: Type: text/plain, Size: 727 bytes --] Hi Fabio, On Wed, 3 May 2006 15:46:28 +0200, Fabio Busatto <fabio.busatto@programmazione.it> wrote: > Hi, I've tested patch-mlmmj-listcontrol_env with qmail, and > I wrote a supplementary patch for it. Your patch looks good. I have applied it, and the new listcontrol_env patch (with your changes) is attached to this mail. So everybody... please test the patch, and give me a Go/NoGo on the following platforms: - sendmail, vanilla - sendmail, with the patch in mlmmj/README.sendmail - postfix 1.x - postfix 2.x - exim3 (does mlmmj work here at all?) - exim4, as described in mlmmj/README.exim4 - exim4, without headers_add and return_path_add Morten -- Morten K. Poulsen <morten@afdelingp.dk> http://www.afdelingp.dk/ [-- Attachment #2: patch-mlmmj-listcontrol_env-rev2.diff --] [-- Type: text/plain, Size: 12575 bytes --] diff -urN orig-mlmmj-1.2.11/include/listcontrol.h mlmmj-1.2.11/include/listcontrol.h --- orig-mlmmj-1.2.11/include/listcontrol.h 2004-06-16 23:11:52.000000000 +0200 +++ mlmmj-1.2.11/include/listcontrol.h 2006-04-09 18:49:20.000000000 +0200 @@ -27,7 +27,7 @@ #include "find_email_adr.h" int listcontrol(struct email_container *fromemails, const char *listdir, - const char *controladdr, const char *mlmmjsub, + const char *controlstr, const char *mlmmjsub, const char *mlmmjunsub, const char *mlmmjsend, const char *mlmmjbounce, const char *mailname); diff -urN orig-mlmmj-1.2.11/src/listcontrol.c mlmmj-1.2.11/src/listcontrol.c --- orig-mlmmj-1.2.11/src/listcontrol.c 2006-01-04 20:10:24.000000000 +0100 +++ mlmmj-1.2.11/src/listcontrol.c 2006-04-09 18:39:51.000000000 +0200 @@ -98,15 +98,14 @@ int listcontrol(struct email_container *fromemails, const char *listdir, - const char *controladdr, const char *mlmmjsub, + const char *controlstr, const char *mlmmjsub, const char *mlmmjunsub, const char *mlmmjsend, const char *mlmmjbounce, const char *mailname) { - char *atsign, *recipdelimsign, *listdelim, *bouncenr, *tmpstr; - char *controlstr, *param = NULL, *conffilename, *moderatefilename; + char *bouncenr, *tmpstr; + char *param = NULL, *conffilename, *moderatefilename; char *c, *archivefilename, *sendfilename; const char *subswitch; - size_t len; struct stat stbuf; int closedlist, nosubconfirm, tmpfd, noget, i, closedlistsub, subonlyget = 0; @@ -126,18 +125,6 @@ else subswitch = "-C"; - listdelim = getlistdelim(listdir); - recipdelimsign = strstr(controladdr, listdelim); - MY_ASSERT(recipdelimsign); - atsign = index(controladdr, '@'); - MY_ASSERT(atsign); - len = atsign - recipdelimsign; - - controlstr = mymalloc(len); - MY_ASSERT(controlstr); - snprintf(controlstr, len, "%s", recipdelimsign + strlen(listdelim)); - myfree(listdelim); - #if 0 log_error(LOG_ARGS, "controlstr = [%s]\n", controlstr); log_error(LOG_ARGS, "fromemails->emaillist[0] = [%s]\n", @@ -168,7 +155,6 @@ exit(EXIT_SUCCESS); } - myfree(controlstr); break; } diff -urN orig-mlmmj-1.2.11/src/mlmmj-process.c mlmmj-1.2.11/src/mlmmj-process.c --- orig-mlmmj-1.2.11/src/mlmmj-process.c 2006-01-23 18:44:53.000000000 +0100 +++ mlmmj-1.2.11/src/mlmmj-process.c 2006-05-03 19:45:57.000000000 +0200 @@ -299,6 +299,38 @@ } +static char *recipient_extra(const char *listdir, const char *addr) +{ + char *listdelim; + char *delim, *atsign, *ret; + size_t len; + + if (!addr) + return NULL; + + listdelim = getlistdelim(listdir); + + delim = strstr(addr, listdelim); + if (!delim) { + myfree(listdelim); + return NULL; + } + delim += strlen(listdelim); + myfree(listdelim); + + atsign = strrchr(delim, '@'); + if (!atsign) + return NULL; + + len = atsign - delim; + ret = (char *)mymalloc(len + 1); + strncpy(ret, delim, len); + ret[len] = '\0'; + + return ret; +} + + static void print_help(const char *prg) { printf("Usage: %s -L /path/to/list -m /path/to/mail [-h] [-P] [-V]\n" @@ -323,16 +355,16 @@ char *mlmmjsend, *mlmmjsub, *mlmmjunsub, *mlmmjbounce; char *bindir, *subjectprefix, *discardname, *listaddr, *listdelim; char *listfqdn, *listname, *fromaddr; - char *queuefilename, *recipextra, *owner = NULL; + char *queuefilename, *recipextra = NULL, *owner = NULL; char *maildata[2] = { "posteraddr", NULL }; + char *envstr, *efrom; struct stat st; uid_t uid; struct email_container fromemails = { 0, NULL }; struct email_container toemails = { 0, NULL }; struct email_container ccemails = { 0, NULL }; - struct email_container efromemails = { 0, NULL }; - struct email_container dtoemails = { 0, NULL }; - struct email_container *whichto; + struct email_container rpemails = { 0, NULL }; + struct email_container dtemails = { 0, NULL }; struct strlist *access_rules = NULL; struct strlist *delheaders = NULL; struct strlist allheaders; @@ -473,60 +505,84 @@ if(footfd >= 0) close(footfd); - if(readhdrs[0].token) { /* From: addresses */ - for(i = 0; i < readhdrs[0].valuecount; i++) { - find_email_adr(readhdrs[0].values[i], &fromemails); - } - } - - if(readhdrs[1].token) { /* To: addresses */ - for(i = 0; i < readhdrs[1].valuecount; i++) { - find_email_adr(readhdrs[1].values[i], &toemails); - } - } - - if(readhdrs[2].token) { /* Cc: addresses */ - for(i = 0; i < readhdrs[2].valuecount; i++) { - find_email_adr(readhdrs[2].values[i], &ccemails); - } - } - - if(readhdrs[3].token) { /* Return-Path: (envelope from) */ - for(i = 0; i < readhdrs[3].valuecount; i++) { - find_email_adr(readhdrs[3].values[i], &efromemails); - } - if(efromemails.emailcount == 0) { - efromemails.emaillist = - (char **)mymalloc(sizeof(char *)); - efromemails.emaillist[0] = mystrdup("<>"); - } - } - - if(readhdrs[4].token) { /* Delivered-To: (envelope to) */ - for(i = 0; i < readhdrs[4].valuecount; i++) { - find_email_adr(readhdrs[4].values[i], &dtoemails); + /* From: addresses */ + for(i = 0; i < readhdrs[0].valuecount; i++) { + find_email_adr(readhdrs[0].values[i], &fromemails); + } + + /* To: addresses */ + for(i = 0; i < readhdrs[1].valuecount; i++) { + find_email_adr(readhdrs[1].values[i], &toemails); + } + + /* Cc: addresses */ + for(i = 0; i < readhdrs[2].valuecount; i++) { + find_email_adr(readhdrs[2].values[i], &ccemails); + } + + /* Return-Path: addresses */ + for(i = 0; i < readhdrs[3].valuecount; i++) { + find_email_adr(readhdrs[3].values[i], &rpemails); + } + + /* Delivered-To: addresses */ + for(i = 0; i < readhdrs[4].valuecount; i++) { + find_email_adr(readhdrs[4].values[i], &dtemails); + } + + /* envelope from */ + if((envstr = getenv("SENDER")) != NULL) { + /* qmail, postfix, exim */ + efrom = mystrdup(envstr); + } else if(rpemails.emailcount >= 1) { + /* the (first) Return-Path: header */ + efrom = mystrdup(rpemails.emaillist[0]); + } else { + efrom = mystrdup(""); + } + + /* address extension (the "foo" part of "user+foo@domain.tld") */ + if(((envstr = getenv("DEFAULT")) != NULL) + && (getenv("EXT2") != NULL) + && (strcmp(envstr, getenv("EXT2")) == 0)) { + /* qmail+vpopmail */ + recipextra = mystrdup(envstr); + } else if(((envstr = getenv("DEFAULT")) != NULL) + && (getenv("EXT") != NULL) + && (strcmp(envstr, getenv("EXT")) == 0)) { + /* qmail */ + recipextra = mystrdup(envstr); + } else if((envstr = getenv("EXTENSION")) != NULL) { + /* postfix */ + recipextra = mystrdup(envstr); + } else if((envstr = getenv("LOCAL_PART_SUFFIX")) != NULL) { + /* exim */ + listdelim = getlistdelim(listdir); + if (strncmp(envstr, listdelim, strlen(listdelim)) == 0) { + recipextra = mystrdup(envstr + strlen(listdelim)); + } else { + recipextra = mystrdup(envstr); } + myfree(listdelim); + } else if(dtemails.emailcount >= 1) { + /* parse the (first) Delivered-To: header */ + recipextra = recipient_extra(listdir, dtemails.emaillist[0]); + } else if(toemails.emailcount >= 1) { + /* parse the (first) To: header */ + recipextra = recipient_extra(listdir, toemails.emaillist[0]); + } else { + recipextra = NULL; } - if(dtoemails.emaillist) - whichto = &dtoemails; - else if(toemails.emaillist) - whichto = &toemails; - else - whichto = NULL; - - listdelim = getlistdelim(listdir); - if(whichto && whichto->emaillist && whichto->emaillist[0]){ - recipextra = strstr(whichto->emaillist[0], listdelim); - if (recipextra) - recipextra += strlen(listdelim); - } else + if(recipextra && (strlen(recipextra) == 0)) { + myfree(recipextra); recipextra = NULL; - myfree(listdelim); + } + /* Why is this here, and not in listcontrol() ? -- mortenp 20060409 */ if(recipextra) { owner = concatstr(2, listdir, "/control/owner"); - if(owner && strncmp(recipextra, "owner@", 6) == 0) { + if(owner && strcmp(recipextra, "owner") == 0) { /* strip envelope from before resending */ delheaders->count = 0; delheaders->strs = NULL; @@ -559,11 +615,11 @@ unlink(mailfile); log_oper(listdir, OPLOGFNAME, "mlmmj-recieve: sending" " mail from %s to owner", - efromemails.emaillist[0]); + efrom); execlp(mlmmjsend, mlmmjsend, "-l", "4", "-L", listdir, - "-F", efromemails.emaillist[0], + "-F", efrom, "-s", owner, "-a", "-m", donemailname, (char *)NULL); @@ -575,7 +631,7 @@ log_error(LOG_ARGS, "listcontrol(from, %s, %s, %s, %s, %s, %s)\n", listdir, toemails.emaillist[0], mlmmjsub, mlmmjunsub, mlmmjsend, mlmmjbounce); #endif unlink(mailfile); - listcontrol(&fromemails, listdir, whichto->emaillist[0], + listcontrol(&fromemails, listdir, recipextra, mlmmjsub, mlmmjunsub, mlmmjsend, mlmmjbounce, donemailname); return EXIT_SUCCESS; @@ -604,14 +660,14 @@ myfree(delheaders); - if(efromemails.emailcount != 1) { /* don't send mails with <> in From + if(strcmp(efrom, "") == 0) { /* don't send mails with <> in From to the list */ discardname = concatstr(3, listdir, "/queue/discarded/", randomstr); - log_error(LOG_ARGS, "Discarding %s due to invalid envelope" - " from email count (was %d, must be 1)", - mailfile, efromemails.emailcount); + errno = 0; + log_error(LOG_ARGS, "Discarding %s due to missing envelope" + " from address", mailfile); rename(mailfile, discardname); unlink(donemailname); myfree(donemailname); diff -urN orig-mlmmj-1.2.11/README.qmail mlmmj-1.2.11/README.qmail --- orig-mlmmj-1.2.11/README.qmail 1970-01-01 01:00:00.000000000 +0100 +++ mlmmj-1.2.11/README.qmail 2006-05-03 19:45:30.000000000 +0200 @@ -0,0 +1,64 @@ +|------------------------------------------------------------------------------| +| Using mlmmj with qmail (and vpopmail) | +|------------------------------------------------------------------------------| +|--------------- Fabio Busatto <fabio.busatto@programmazione.it> --------------| +|------------------------------------------------------------------------------| + +This mini-HOWTO is a step-by-step guide for using mlmmj with qmail MTA +(http://www.qmail.org/), and it has been successfully tested also with vpopmail +virtual domains (http://www.inter7.com/vpopmail/). + +Prerequisites: +- qmail (and vpopmail) correctly installed +- mlmmj correctly installed + +Conventions: +- ${BINDIR}: directory with mlmmj binary files (/usr/local/bin/) +- ${LISTDIR}: directory with list configuration files + (/var/spool/mlmmj/listname) +- ${DQFILE}: dot-qmail file (see below) + +Configuration: +- the first thing you've to do is to create the list, using the + mlmmj-make-ml.sh script (follow the classic procedure to do this step) +- enter the control directory for the list (${LISTDIR}/control/), and execute + the following command: + # cd ${LISTDIR}/control/; echo '-' > delimiter +- chown and chmod the file according to the mlmmj configuration +- create dot-qmail files for the list to handle direct requests and extensions: + # echo -e "|${BINDIR}/mlmmj-recieve -L ${LISTDIR}" > ${DQFILE} +- chown and chmod the files according to the qmail (and vpopmail) configuration + +WARNING: REMEMBER that the delimiter is -, so do not use + when composing mail +addresses for extensions!!! + +WARNING: DO NOT USE 'preline' command in dot-qmail files, it will result in +mlmmj to not work properly!!! + +|------------------------------------------------------------------------------| + +Example: + +- Configuring mlmmj to handle ml@programmazione.it mailing list using qmail as + MTA and vpopmail for virtual domain support: + +# mlmmj-make-ml.sh -c vpopmail:vchkpw -L ml +Creating Directorys below /var/spool/mlmmj. Use '-s spooldir' to change +The Domain for the List? [] : programmazione.it +The emailaddress of the list owner? [postmaster] : postmaster@programmazione.it +The path to texts for the list? [/usr/local/share/mlmmj/text.skel] : +chown -R vpopmail:vchkpw /var/spool/mlmmj/ml? [y/n]: y + +# cd /var/spool/mlmmj/ml/control/ +# echo '-' > delimiter +# chown vpopmail:vchkpw delimiter +# cd /home/vpopmail/domains/programmazione.it/ +# echo -e "|/usr/local/bin/mlmmj-recieve -L /var/spool/mlmmj/ml/" > .qmail-ml +# cp -a .qmail-ml .qmail-ml-default +# cat *-default +# chown vpopmail:vchkpw .qmail-ml .qmail-ml-default +# chmod 600 .qmail-ml .qmail-ml-default + +|------------------------------------------------------------------------------| +|--------------- Fabio Busatto <fabio.busatto@programmazione.it> --------------| +|------------------------------------------------------------------------------| ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: qmail+vpopmail support 2006-05-03 13:46 qmail+vpopmail support Fabio Busatto 2006-05-03 18:32 ` Morten K. Poulsen @ 2006-05-08 8:29 ` Thomas Goirand 2006-05-08 11:17 ` Fabio Busatto ` (6 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: Thomas Goirand @ 2006-05-08 8:29 UTC (permalink / raw) To: mlmmj Fabio Busatto wrote: > Hi, I've tested patch-mlmmj-listcontrol_env with qmail, and > I wrote a supplementary patch for it. > > The problem is that the patch works with the qmail standard > installation, but quite all installations use vpopmail as > virtual domain manager, and the patch doesn't work with it. > Could you explain exactly WHY you need vpopmail? It's a very common mistake to think that Qmail don't handle virtual domains without it, but in fact IT DOES. Vpopmail does 2 things: 1/ doing that stupid virtual domain stuff which is not needed, and 2/ an alternative auth thing that is not needed as well when you see the number of alternative checkpassword binaries available. I really think that vpopmail survives only because many think it's needed, because of the bad advertising Inter7 is doing, which I think is a very silly stuff. I just hope that no MLMMJ patch will break my vpopmail-free configuration. > The EXT environment variable infact contains the username > section after the first delimiter, but with vpopmail we have > a rewrite of the address like this: > > user@domain.tld -> domain.tld-user@domain.tld > Under my configuration it's: user@domain.tld -> domain-tld-user@domain.tld In fact, it could be: user@domain.tld -> what-ever-you-like-user@domain.tld as Qmail permit it using the virtualdomains configuration file. > So, EXT contains the username (and not the extension). > The real extension is stored in the DEFAULT environment > variable, in both qmail and vpopmail scenarios. > But the problem is that DEFAULT is too common name to > be sure that it contains really an extension, so the > solution is to check for the value in DEFAULT, and to > compare it with the value in the EXT environment > variabile (qmail), or in the EXT2 environment variable > (qmail+vpopmail). If it matches, we can assume that it > contains an extension. > I'm happy to learn that. > +Prerequisites: > +- qmail (and vpopmail) correctly installed > +- mlmmj correctly installed > Can it be used WITHOUT vpopmail? IMHO it shouldn't be REQUIRED. > +WARNING: DO NOT USE 'preline' command in dot-qmail files, it will result in > +mlmmj to not work properly!!! > I DO use the preline in the binary I use, and it works !!! Here is my .qmail-default file content: |preline -f /usr/bin/mlmmj-recieve -L /var/www/sites/dtc/gplhost.sg/lists/gplhost.sg_dtcdev Kind regards, Thomas ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: qmail+vpopmail support 2006-05-03 13:46 qmail+vpopmail support Fabio Busatto 2006-05-03 18:32 ` Morten K. Poulsen 2006-05-08 8:29 ` Thomas Goirand @ 2006-05-08 11:17 ` Fabio Busatto 2006-05-31 23:23 ` Fabio Busatto ` (5 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: Fabio Busatto @ 2006-05-08 11:17 UTC (permalink / raw) To: mlmmj On Mon, May 08, 2006 at 04:29:22PM +0800, Thomas Goirand wrote: > Under my configuration it's: > user@domain.tld -> domain-tld-user@domain.tld > > In fact, it could be: > user@domain.tld -> what-ever-you-like-user@domain.tld Right, I only consider the vpopmail virtualdomains configuration, but there are other scenarios (like yours). > >+Prerequisites: > >+- qmail (and vpopmail) correctly installed > >+- mlmmj correctly installed > > > Can it be used WITHOUT vpopmail? IMHO it shouldn't be REQUIRED. vpopmail in brackets means that it's optional. I wrote the patch to support both bare qmail (without virtualdomains) and qmail+vpopmail. > >+WARNING: DO NOT USE 'preline' command in dot-qmail files, it will result > >in > >+mlmmj to not work properly!!! > > > I DO use the preline in the binary I use, and it works !!! Here is my > .qmail-default file content: > > |preline -f /usr/bin/mlmmj-recieve -L > /var/www/sites/dtc/gplhost.sg/lists/gplhost.sg_dtcdev Good :) I found that preline breaks mlmmj under my configuration, but I didn't investigate too much. To be analyzed. Maybe the final solution to support qmail is to consider the DEFAULT environment variable, without care if this is not a real extension value. I'll be back on code and try to include more scenarios to better support virtualdomains. Thank you for your feedback! -fabio -- Fabio Busatto <fabio.busatto@programmazione.it> ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: qmail+vpopmail support 2006-05-03 13:46 qmail+vpopmail support Fabio Busatto ` (2 preceding siblings ...) 2006-05-08 11:17 ` Fabio Busatto @ 2006-05-31 23:23 ` Fabio Busatto 2006-06-13 15:45 ` Morten K. Poulsen ` (4 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: Fabio Busatto @ 2006-05-31 23:23 UTC (permalink / raw) To: mlmmj I finally reached the conclusion that DEFAULT is the right place to look for real extension commands. Every configuration i found uses .qmail files to manage the mlmmj list. By the way, DEFAULT is too common and can create a collision with other MTA (really?). So, two ways: - use DEFAULT instead of EXT when looking for extension - set another environment variabile using .qmail file, and then check it The first solution is clean, but maybe lacks of protection that can do mlmmj thinking to qmail even if it's not. The second is safer, but more complex to configure (each list must have variable setting in the .qmail file. Any ideas? Which one do you think is better? Waiting for comments. -fabio -- Fabio Busatto <fabio.busatto@programmazione.it> ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: qmail+vpopmail support 2006-05-03 13:46 qmail+vpopmail support Fabio Busatto ` (3 preceding siblings ...) 2006-05-31 23:23 ` Fabio Busatto @ 2006-06-13 15:45 ` Morten K. Poulsen 2006-06-13 17:27 ` Fabio Busatto ` (3 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: Morten K. Poulsen @ 2006-06-13 15:45 UTC (permalink / raw) To: mlmmj Hi, On Thu, 1 Jun 2006 01:23:12 +0200, Fabio Busatto <fabio.busatto@programmazione.it> wrote: > So, two ways: > - use DEFAULT instead of EXT when looking for extension > - set another environment variabile using .qmail file, > and then check it The idea of adding qmail support was to get it working out of the box. I think it is safe, if we check for DEFAULT as the last thing before falling back to reading headers. Morten -- Morten K. Poulsen <morten@afdelingp.dk> http://www.afdelingp.dk/ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: qmail+vpopmail support 2006-05-03 13:46 qmail+vpopmail support Fabio Busatto ` (4 preceding siblings ...) 2006-06-13 15:45 ` Morten K. Poulsen @ 2006-06-13 17:27 ` Fabio Busatto 2006-09-24 8:38 ` Fabio Busatto ` (2 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: Fabio Busatto @ 2006-06-13 17:27 UTC (permalink / raw) To: mlmmj On Tue, Jun 13, 2006 at 05:45:09PM +0200, Morten K. Poulsen wrote: > I think it is safe, if we check for DEFAULT as the last thing before falling back to reading headers. I agree, can you merge your new patch with README.qmail and sumbit when ready? Thanks for your work :) -fabio ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: qmail+vpopmail support 2006-05-03 13:46 qmail+vpopmail support Fabio Busatto ` (5 preceding siblings ...) 2006-06-13 17:27 ` Fabio Busatto @ 2006-09-24 8:38 ` Fabio Busatto 2006-09-25 20:32 ` Morten K. Poulsen 2006-09-26 13:25 ` Fabio Busatto 8 siblings, 0 replies; 10+ messages in thread From: Fabio Busatto @ 2006-09-24 8:38 UTC (permalink / raw) To: mlmmj On Tue, Jun 13, 2006 at 05:45:09PM +0200, Morten K. Poulsen wrote: > The idea of adding qmail support was to get it working out of the box. I think it is safe, > if we check for DEFAULT as the last thing before falling back to reading headers. I just downloaded the last mlmmj release, and I noticed that it still checks for EXT environment variable instead of DEFAULT (needed to support virtual domains in qmail). Patch missed? Bye -fabio ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: qmail+vpopmail support 2006-05-03 13:46 qmail+vpopmail support Fabio Busatto ` (6 preceding siblings ...) 2006-09-24 8:38 ` Fabio Busatto @ 2006-09-25 20:32 ` Morten K. Poulsen 2006-09-26 13:25 ` Fabio Busatto 8 siblings, 0 replies; 10+ messages in thread From: Morten K. Poulsen @ 2006-09-25 20:32 UTC (permalink / raw) To: mlmmj Hi Fabio, Fabio Busatto <fabio.busatto@programmazione.it> wrote: > I just downloaded the last mlmmj release, and I noticed that it still > checks for EXT environment variable instead of DEFAULT (needed to > support virtual domains in qmail). > > Patch missed? Yes, I forgot all about that. I have just committed the following to CVS. That should fix the issue, right? - if((envstr = getenv("EXT")) != NULL) { + if((envstr = getenv("DEFAULT")) != NULL) { Morten -- Morten K. Poulsen <morten@afdelingp.dk> http://www.afdelingp.dk/ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: qmail+vpopmail support 2006-05-03 13:46 qmail+vpopmail support Fabio Busatto ` (7 preceding siblings ...) 2006-09-25 20:32 ` Morten K. Poulsen @ 2006-09-26 13:25 ` Fabio Busatto 8 siblings, 0 replies; 10+ messages in thread From: Fabio Busatto @ 2006-09-26 13:25 UTC (permalink / raw) To: mlmmj On Mon, Sep 25, 2006 at 10:32:27PM +0200, Morten K. Poulsen wrote: > Yes, I forgot all about that. I have just committed the following to CVS. That should fix the issue, right? > > - if((envstr = getenv("EXT")) != NULL) { > + if((envstr = getenv("DEFAULT")) != NULL) { > Right :) -fabio ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2006-09-26 13:25 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2006-05-03 13:46 qmail+vpopmail support Fabio Busatto 2006-05-03 18:32 ` Morten K. Poulsen 2006-05-08 8:29 ` Thomas Goirand 2006-05-08 11:17 ` Fabio Busatto 2006-05-31 23:23 ` Fabio Busatto 2006-06-13 15:45 ` Morten K. Poulsen 2006-06-13 17:27 ` Fabio Busatto 2006-09-24 8:38 ` Fabio Busatto 2006-09-25 20:32 ` Morten K. Poulsen 2006-09-26 13:25 ` Fabio Busatto
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.