Thread: Re: [courier-users] Re: authmysql and external programs / forwarding?
Brought to you by:
mrsam
From: Ricardo K. <ri...@am...> - 2003-09-04 22:13:02
|
Thank you! ----- Original Message Follows ----- > Ricardo Kleemann writes: > > > Hi, > > > > I saw it mentioned in one of the replies to another > > email that authmysql can support delivering to an > > external program, by using the '|' pipe. > > > > I can't find any documentation on that, and I've tried > > experimenting with it, but no success. > > Put '|command' in the 'mail' field. Ok, so I guess I had overlooked that one... is that documented somewhere? I didn't think that the authmysql fields included a "mail" field. > > > If it is possible to deliver to a program, is it also > > possible to do forwarding, using the '!' in authmysql as > > well? > > No, for various reasons use '| sendmail user@domain' Ok, great... are environment variables also available for use? If so, which ones? Thanks again. Ricardo |
From: Ricardo K. <ri...@am...> - 2003-09-05 00:42:34
|
----- Original Message Follows ----- > Ricardo Kleemann writes: > > >> No, for various reasons use '| sendmail user@domain' > > > > Ok, great... are environment variables also available > > for use? If so, which ones? > > The sames ones that are listed in the dot-courier man > page. > Thank you! But I don't see anywhere in authmysqlrc anything about a "mail" field. Is there supposed to be a config mapping for MYSQL_MAIL_FIELD, for example? How will the auth daemon know to access the mail field? Should I simply add a mail field to the table and return it as such? Also, my MYSQL_SELECT_CLAUSE actually references 2 tables, and the table where the user information is called "users"... so I would have to return something like "users.mail" to the daemon (instead of simply "mail")... is that a problem? Sorry for so many questions, but I can't find any documentation for this "mail" field. Ricardo |
From: Ben K. <be...@zy...> - 2003-09-05 01:39:13
|
On 04 9 2003 at 8:39 pm -0400, Ricardo Kleemann wrote: >But I don't see anywhere in authmysqlrc anything about a >"mail" field. Is there supposed to be a config mapping for >MYSQL_MAIL_FIELD, for example? How will the auth daemon know >to access the mail field? Should I simply add a mail field >to the table and return it as such? What Sam meant was the delivery instruction field, specified by MYSQL_DEFAULTDELIVERY. -ben -- Ben Kennedy, chief magician zygoat creative technical services 613-228-3392 | 1-866-466-4628 http://www.zygoat.ca |
From: Sam V. <mr...@co...> - 2003-09-05 02:11:54
|
Ben Kennedy writes: > On 04 9 2003 at 8:39 pm -0400, Ricardo Kleemann wrote: > >>But I don't see anywhere in authmysqlrc anything about a >>"mail" field. Is there supposed to be a config mapping for >>MYSQL_MAIL_FIELD, for example? How will the auth daemon know >>to access the mail field? Should I simply add a mail field >>to the table and return it as such? > > What Sam meant was the delivery instruction field, specified by > MYSQL_DEFAULTDELIVERY. Yes, check that. It's MYSQL_DEFAULTDELIVERY, *not* MYSQL_MAILDIR_FIELD. |
From: Sam V. <mr...@co...> - 2003-09-05 02:11:28
|
Ricardo Kleemann writes: > > ----- Original Message Follows ----- >> Ricardo Kleemann writes: >> >> >> No, for various reasons use '| sendmail user@domain' >> > >> > Ok, great... are environment variables also available >> > for use? If so, which ones? >> >> The sames ones that are listed in the dot-courier man >> page. >> > > Thank you! > > But I don't see anywhere in authmysqlrc anything about a > "mail" field. Is there supposed to be a config mapping for > MYSQL_MAIL_FIELD, for example? How will the auth daemon know MYSQL_MAILDIR_FIELD. |
From: Ricardo K. <ri...@am...> - 2003-09-05 05:04:21
|
Ok guys, I'm sorry, but I can't get this to work. :-/ ----- Original Message Follows ----- > On 04 9 2003 at 8:39 pm -0400, Ricardo Kleemann wrote: > > >But I don't see anywhere in authmysqlrc anything about a > >"mail" field. Is there supposed to be a config mapping > for >MYSQL_MAIL_FIELD, for example? How will the auth > daemon know >to access the mail field? Should I simply add > a mail field >to the table and return it as such? > > What Sam meant was the delivery instruction field, > specified by MYSQL_DEFAULTDELIVERY. > What are the home and maildir fields supposed to be set to in this case? I cannot get the MYSQL_DEFAULTDELIVERY instructions to be honored. Mail will always be delivered to the directory specified in the "home" field. If I blank out the home field, then I get an authentication error. So as a test I put in a valid directory in home, and then put in "| /usr/lib/courier/bin/sendmail ri...@am..." in the field pointed to by MYSQL_DEFAULTDELIVERY (which I named "delivery" in my table). This is for a test account. So then I send an email to the test account, and all that happens is mail is delivered ONLY to the directory in "home", and nothing else happens. One note... I do not have MYSQL_MAILDIR_FIELD set in authmysqlrc, which is optional. Is that a problem? I just seem to be going around in circles, I'm not sure what's wrong with my setup. :-( Thanks for your help. Ricardo |
From: Ben K. <be...@zy...> - 2003-09-05 14:34:18
|
On 04 9 2003 at 1:04 am -0400, Ricardo Kleemann wrote: >Ok guys, I'm sorry, but I can't get this to work. :-/ Hi Ricardo, No worries, it took me a while of screwing around to determine the idiosyncrasies of configuration required to make it work consistently. >What are the home and maildir fields supposed to be set to >in this case? I cannot get the MYSQL_DEFAULTDELIVERY >instructions to be honored. Mail will always be delivered to >the directory specified in the "home" field. If I blank out >the home field, then I get an authentication error. So as a >test I put in a valid directory in home, and then put in "| >/usr/lib/courier/bin/sendmail ri...@am..." in >the field pointed to by MYSQL_DEFAULTDELIVERY (which I named >"delivery" in my table). This is for a test account. I'm not sure why you're getting mail delivered to the account's homedir; that seems a bit odd. Here is an excerpt from my personal courier setup notes: How courier routes inbound mail for FOO@DOMAIN: =============================================== If an explicit account FOO@DOMAIN exists in the mysql table then its delivery instruction will be used, regardless of any corresponding .courier-FOO file. Else, it tries to lookup 'alias@DOMAIN' where alias is the literal string 'alias' and DOMAIN is the recipient domain. If it fails, delivery fails. If it succeeds, it searches for delivery instructions in this order (first non-empty): 1. .courier-FOO in specified homedir 2. .courier-default in specified homeidr 3. delivery instruction in 'defaultdelivery' column of mysql table for alias@DOMAIN 4. system-wide default delivery (~/Maildir) if all above are blank. >One note... I do not have MYSQL_MAILDIR_FIELD set in >authmysqlrc, which is optional. Is that a problem? I doubt it; as far as I understand, the maildir field is ONLY relevant to the POP3/IMAP/webmail daemons. In other words, when the account is logged into, that's where mail is looked for to be delivered outbound, but not inbound. -ben -- Ben Kennedy, chief magician zygoat creative technical services 613-228-3392 | 1-866-466-4628 http://www.zygoat.ca |
From: Ricardo K. <ri...@am...> - 2003-09-05 16:23:28
|
Hi Ben, Thanks again for your help. > > No worries, it took me a while of screwing around to > determine the idiosyncrasies of configuration required to > make it work consistently. I'm not alone! ;-) > > >What are the home and maildir fields supposed to be set > to >in this case? I cannot get the MYSQL_DEFAULTDELIVERY > >instructions to be honored. Mail will always be delivered > to >the directory specified in the "home" field. If I > blank out >the home field, then I get an authentication > error. So as a >test I put in a valid directory in home, > and then put in "| >/usr/lib/courier/bin/sendmail > ri...@am..." in >the field pointed to by > MYSQL_DEFAULTDELIVERY (which I named >"delivery" in my > table). This is for a test account. > > I'm not sure why you're getting mail delivered to the > account's homedir; that seems a bit odd. Here is an > excerpt from my personal courier setup notes: Right, so I don't understand either! :-( It doesn't seem that delivery is exactly following what you describe in your notes. Here's an example of my test setup: Account: te...@ne... pertinent authmysqlrc setup: MYSQL_USER_TABLE users MYSQL_HOME_FIELD home MYSQL_DEFAULTDELIVERY delivery entry in mysql table: home = '/var/homes/321.net/te/test' delivery = '|/usr/lib/courier/bin/sendmail ri...@am...' The directory /var/homes/321.net/te/test does NOT have any courier* or .maildrop* files. When a message is sent to te...@ne..., the ONLY thing that happens is it gets delivered to /var/homes/321.net/te/test/Maildir/new. Nothing else... no delivery instructions are taken from authmysqlrc. Can anyone provide suggestions on how to further debug this? Ricardo |
From: Ben K. <be...@zy...> - 2003-09-05 16:33:13
|
On 05 9 2003 at 12:23 pm -0400, Ricardo Kleemann wrote: >The directory /var/homes/321.net/te/test does NOT have any >courier* or .maildrop* files. Here's the problem I think: you need to create an empty .courier-default file in the home directory. That's also in my notes, but I don't think I copied that part. :) (I'm assuming that te...@ne... is in the 'user' field of the table) Again, I don't understand why the .courier-default has to be there, and it's a bloody annoying little caveat. -ben -- Ben Kennedy, chief magician zygoat creative technical services 613-228-3392 | 1-866-466-4628 http://www.zygoat.ca |
From: Ricardo K. <ri...@am...> - 2003-09-05 18:50:35
|
Frustrating! :-( > > Here's the problem I think: you need to create an empty > courier-default file in the home directory. That's also > in my notes, but I don't think I copied that part. :) > > (I'm assuming that te...@ne... is in the 'user' field > of the table) Yes, the user field is set to 'te...@ne...'. So I created a .courier-default file in /var/homes/321.net/te/test. First I simply did a "touch" (so a 0-byte file), and that didn't work. Then I just put in a blank character (1-byte file). Neither worked! I still get delivery to the maildir, and the delivery instruction doesn't get performed. Help! :-( What's going on...? Any suggestions, Sam? |
From: Sam V. <mr...@co...> - 2003-09-05 20:04:15
|
Ricardo Kleemann writes: > > Frustrating! :-( > >> >> Here's the problem I think: you need to create an empty >> courier-default file in the home directory. That's also >> in my notes, but I don't think I copied that part. :) >> >> (I'm assuming that te...@ne... is in the 'user' field >> of the table) > > Yes, the user field is set to 'te...@ne...'. > > So I created a .courier-default file in > /var/homes/321.net/te/test. First I simply did a "touch" (so > a 0-byte file), and that didn't work. Then I just put in a > blank character (1-byte file). > > Neither worked! I still get delivery to the maildir, and the > delivery instruction doesn't get performed. > > Help! :-( What's going on...? Any suggestions, Sam? I was not following this thread. You'll need to summarize your actual configuration, and what you expect to happen, which doesn't. |
From: Ricardo K. <ri...@am...> - 2003-09-05 22:01:33
|
Hi Sam, > I was not following this thread. You'll need to summarize > your actual configuration, and what you expect to happen, > which doesn't. > I'm trying to deliver to an external program via authmysql. More specifically, do forwarding via authmysql. So basically I would setup the MYSQL_DEFAULTDELIVERY field to perform something like '|/usr/lib/courier/bin/sendmail em...@do...' However, not matter what I try, messages are always delivered to the user's maildir, and the program (sendmail above) configured in the MYSQL_DEFAULTDELIVERY does not work. At first I wasn't sure exactly which field in the mysql table needed to have the delivery instruction specified, and both you and Ben answered that it needed to be the MYSQL_DEFAULTDELIVERY field. But I don't understand what I'm doing wrong that is preventing this from working. So my setup is as follows... I have a test account, 'te...@ne...', in the mysql table. My authmysqlrc field has this relevant configuration: MYSQL_USER_TABLE users MYSQL_LOGIN_FIELD id MYSQL_HOME_FIELD home MYSQL_DEFAULTDELIVERY delivery The MYSQL_SELECT_CLAUSE uses the users table and returns the approriate fields, as follows: users.id,users.crypt,users.clear, \ users.mail_uid,users.gid,users.home,'',users.quota, \ '',users.delivery For this test account, I have the following: id='te...@ne...' home='/var/homes/321.net/te/test' delivery='|/usr/local/courier/bin/sendmail ri...@am...' Currently inside /var/homes/321.net/te/test I have the Maildir directory, and I have a .courier-default file which has one blank character in it. However, I also tried testing with no .courier-default file at all, and also with a blank (0-byte) file. I've tried different combinations, first setting the "home" field to blank, but that causes failure in the auth daemon. It seems to only work if the "home" field has a valid directory in it. But in all tests I've run, the ONLY thing that happens is the message gets delivered to Maildir/new. Nothing else. No forwarding is done, the delivery instruction which pipes to sendmail is never executed. So my problem is that I can't seem to figure out how to get special delivery from within mysql working. :-( Ricardo |
From: Ben K. <be...@zy...> - 2003-09-05 22:08:50
|
On 05 9 2003 at 5:59 pm -0400, Ricardo Kleemann wrote: >The MYSQL_SELECT_CLAUSE uses the users table and returns the >approriate fields, as follows: Ricardo, If you are using a stock mysql setup, why are you using MYSQL_SELECT_CLAUSE? I would highly recommend commenting that out so that the default query is used. None of the other MYSQL_xxx_FIELD specifiers make a difference when you've specified MYSQL_SELECT_CLAUSE anyway. Do things begin working once you use the default? -ben -- Ben Kennedy, chief magician zygoat creative technical services 613-228-3392 | 1-866-466-4628 http://www.zygoat.ca |
From: Sam V. <mr...@co...> - 2003-09-06 23:08:14
|
Ricardo Kleemann writes: > So my setup is as follows... I have a test account, > 'te...@ne...', in the mysql table. My authmysqlrc field > has this relevant configuration: > > MYSQL_USER_TABLE users > MYSQL_LOGIN_FIELD id > MYSQL_HOME_FIELD home > MYSQL_DEFAULTDELIVERY delivery > > The MYSQL_SELECT_CLAUSE uses the users table and returns the > approriate fields, as follows: > users.id,users.crypt,users.clear, \ > users.mail_uid,users.gid,users.home,'',users.quota, \ > '',users.delivery That's not correct. DEFAULTDELIVERY is *not* the last field in the custom query. Read the comments for the detailed explanation: # $(service) will expand out to the service being authenticated: imap, imaps, # pop3 or pop3s. Courier mail server only: service will also expand out to # "courier", when searching for local mail account's location. In this case, # if the "maildir" field is not empty it will be used in place of # DEFAULTDELIVERY. Courier mail server will also use esmtp when doing # authenticated ESMTP. You want the maildir field to contain something like: IF(STRCMP('$(service)', 'courier') == 0, users.delivery, '') |
From: Ricardo K. <ri...@am...> - 2003-09-07 03:50:07
|
Hi Sam, > That's not correct. DEFAULTDELIVERY is *not* the last > field in the custom query. Read the comments for the > detailed explanation: > > # $(service) will expand out to the service being > authenticated: imap, imaps, # pop3 or pop3s. Courier mail > server only: service will also expand out to # "courier", > when searching for local mail account's location. In this > case, # if the "maildir" field is not empty it will be > used in place of # DEFAULTDELIVERY. Courier mail server > will also use esmtp when doing # authenticated ESMTP. > > You want the maildir field to contain something like: > > IF(STRCMP('$(service)', 'courier') == 0, users.delivery, > '') > I'm not quite sure what you mean. The maildir field can be conditional like that? I'm confused, sorry! :-/ Should the MYSQL_DEFAULTDELIVERY field be returned at all in the select clause? Ricardo |
From: Sam V. <mr...@co...> - 2003-09-07 13:52:44
|
Ricardo Kleemann writes: > > Hi Sam, > >> That's not correct. DEFAULTDELIVERY is *not* the last >> field in the custom query. Read the comments for the >> detailed explanation: >> >> # $(service) will expand out to the service being >> authenticated: imap, imaps, # pop3 or pop3s. Courier mail >> server only: service will also expand out to # "courier", >> when searching for local mail account's location. In this >> case, # if the "maildir" field is not empty it will be >> used in place of # DEFAULTDELIVERY. Courier mail server >> will also use esmtp when doing # authenticated ESMTP. >> >> You want the maildir field to contain something like: >> >> IF(STRCMP('$(service)', 'courier') == 0, users.delivery, >> '') >> > > I'm not quite sure what you mean. The maildir field can be > conditional like that? I'm confused, sorry! :-/ You are using a custom SELECT query. Any valid SQL, as long as it returns the requisite number of fields, may be used. |
From: Ricardo K. <ri...@am...> - 2003-09-07 03:50:53
|
Hi Ben, > If you are using a stock mysql setup, why are you using > MYSQL_SELECT_CLAUSE? I would highly recommend commenting > that out so that the default query is used. None of the > other MYSQL_xxx_FIELD specifiers make a difference when > you've specified MYSQL_SELECT_CLAUSE anyway. I'm not really using a "stock" setup in the sense that I do need a custom query, because I'm checking against 2 different table, one that has aliases, another that has the users. Ricardo |
From: Ricardo K. <ri...@am...> - 2003-09-09 00:12:23
|
Hi Sam, Please help me understand... > >> You want the maildir field to contain something like: > >> > >> IF(STRCMP('$(service)', 'courier') == 0, users.delivery > , >> '') > >> > > > > I'm not quite sure what you mean. The maildir field can > > be conditional like that? I'm confused, sorry! :-/ > > You are using a custom SELECT query. Any valid SQL, as > long as it returns the requisite number of fields, may be > used. I was wondering what this was: IF(STRCMP('$(service)', 'courier') == 0, users.delivery, '') I mean, does that go into authmysqlrc? If so, in what section? Does it mean that the SELECT query can only return one of either MAILDIR or DEFAULTDELIVERY fields? and if so, it means to return MAILDIR for imap/pop, but DEFALUTDELIVERY for courier? Thanks for your help. Ricardo |
From: Sam V. <mr...@co...> - 2003-09-09 01:39:18
|
Ricardo Kleemann writes: > > Hi Sam, > > Please help me understand... > >> >> You want the maildir field to contain something like: >> >> >> >> IF(STRCMP('$(service)', 'courier') == 0, users.delivery >> , >> '') >> >> >> > >> > I'm not quite sure what you mean. The maildir field can >> > be conditional like that? I'm confused, sorry! :-/ >> >> You are using a custom SELECT query. Any valid SQL, as >> long as it returns the requisite number of fields, may be >> used. > > I was wondering what this was: > IF(STRCMP('$(service)', 'courier') == 0, > users.delivery, '') > > I mean, does that go into authmysqlrc? If so, in what > section? Your previous post indicated that you're using the custom query. So, the above MySQL-specific SQL would be used in place of the maildir field, which you currently always return as a fixed, empty string. > > Does it mean that the SELECT query can only return one of > either MAILDIR or DEFAULTDELIVERY fields? and if so, it > means to return MAILDIR for imap/pop, but DEFALUTDELIVERY > for courier? You got it. Unfortunately, for now this has to be the way it's done due to legacy issues. |
From: Ricardo K. <ri...@am...> - 2003-09-09 03:21:54
|
Thank you!! I finally understand it! :-) ----- Original Message Follows ----- > Ricardo Kleemann writes: > > > > > Hi Sam, > > > > Please help me understand... > > > >> >> You want the maildir field to contain something > like: >> >> > >> >> IF(STRCMP('$(service)', 'courier') == 0, > users.delivery >> , >> '') > >> >> > >> > > >> > I'm not quite sure what you mean. The maildir field > can >> > be conditional like that? I'm confused, sorry! > :-/ >> > >> You are using a custom SELECT query. Any valid SQL, as > >> long as it returns the requisite number of fields, may > be >> used. > > > > I was wondering what this was: > > IF(STRCMP('$(service)', 'courier') == 0, > > users.delivery, '') > > > > I mean, does that go into authmysqlrc? If so, in what > > section? > > Your previous post indicated that you're using the custom > query. So, the above MySQL-specific SQL would be used in > place of the maildir field, which you currently always > return as a fixed, empty string. > > > > > Does it mean that the SELECT query can only return one > > of either MAILDIR or DEFAULTDELIVERY fields? and if so, > > it means to return MAILDIR for imap/pop, but > > DEFALUTDELIVERY for courier? > > You got it. Unfortunately, for now this has to be the way > it's done due to legacy issues. > > > > [Attachment: mr...@co...g] |
From: Sam V. <mr...@co...> - 2003-09-04 23:24:01
|
Ricardo Kleemann writes: >> No, for various reasons use '| sendmail user@domain' > > Ok, great... are environment variables also available for > use? If so, which ones? The sames ones that are listed in the dot-courier man page. |