[prev in list] [next in list] [prev in thread] [next in thread] 

List:       qmail-ldap
Subject:    Re: qmail and ldap
From:       Claudio Jeker <jeker () n-r-g ! com>
Date:       1999-09-06 12:03:52
[Download RAW message or body]

At 11:45 Uhr +0200 6.9.1999, Thomas Breder wrote:
>I run qmail with Andre´s ldap-patches on 1st a linux box with openldap and
>2nd a Solaris 2.6 with Netscape Directory Server 3.1
>Everything is running very well, when delivery is to a mbox file. If I want
>to deliver emails to a Maildir directory, I´ve got the following error
>message in my logs::
>
>Sep  6 10:29:06 WLB-Linux2 qmail: 936606546.293343 delivery 2: deferral:
>address:_klein@wlb-linux2.westlb.sko.de/filter:_(|(mail=klein@wlb-linux2
>.westlb.sko.de)(mailalternateaddress=klein@wlb-linux2.westlb.sko.de))/NO
>_QMAILFORWARDS/NO_QMAILDELIVERYPROGRAM/NO_QMAILMODE/NO_QMAILDOTMODE/qlda
>p_get_return_value:_0/LDAP_lookup_succeded,_user_found/nughde:_popuser_1
>0000_103_/home/popuser/klein__/executing_qmail-local_with_user:_popuser/
>uid:_10000/gid:_103/homedir:_/home/popuser/klein/local:_klein/dash:_/ext
>:_/Boom_with_./_aliasempty_(LDAP-ERR_#2.4.4)/


I'm sorry, this is a know problem. Andre has hosed the maildirmake code in
the last release to get the maildirmake code with ./ running.
The easiest hack would be to compile the code with maildirmake off.

Or change qmail-local.c around line 110 to something like this ... (never
tested):
#ifdef AUTOMAILDIRMAKE
   /* this one handles the case where the aliasempty is not "./" */
   if (errno == error_noent) {
     umask(077);
     if (mkdir(dir,0700) == -1) { if (error_temp(errno)) _exit(5); _exit(6); }
     if (chdir(dir) == -1) { if (error_temp(errno)) _exit(5); _exit(6); }
     if (mkdir("tmp",0700) == -1) { if (error_temp(errno)) _exit(5);
_exit(6); }
     if (mkdir("new",0700) == -1) { if (error_temp(errno)) _exit(5);
_exit(6); }
     if (mkdir("cur",0700) == -1) { if (error_temp(errno)) _exit(5);
_exit(6); }
   } else
#endif
   if (error_temp(errno)) _exit(1); else _exit(2);
 }

/* this one handles the case where the aliasempty is "./" */
#ifdef AUTOMAILDIRMAKE
 if ( !str_diff(dir, "./") ) {
   umask(077);
   if (stat("tmp", &st) == -1) {
     if (errno == error_noent) {
       if (mkdir("tmp",0700) == -1) {
         if (error_temp(errno)) _exit(5);
         else _exit(6);
       }
     } else if (error_temp(errno)) _exit(5); else _exit(6);
   } else if (! S_ISDIR(st.st_mode) ) _exit(7);

   if (stat("cur", &st) == -1) {
     if (errno == error_noent) {
       if (mkdir("cur",0700) == -1) {
         if (error_temp(errno)) _exit(5);
         else _exit(6);
       }
     } else if (error_temp(errno)) _exit(5); else _exit(6);
   } else if (! S_ISDIR(st.st_mode) ) _exit(7);

   if (stat("new", &st) == -1) {
     if (errno == error_noent) {
       if (mkdir("new",0700) == -1) {
         if (error_temp(errno)) _exit(5);
         else _exit(6);
       }
     } else if (error_temp(errno)) _exit(5); else _exit(6);
   } else if (! S_ISDIR(st.st_mode) ) _exit(7);

 }
#endif

In the next release this should be fixed. Sorry ...
Claudio

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic