On Wed, 2005-12-07 at 11:25 +0100, Jose Javier Sianes Ruiz wrote:
El mié, 07-12-2005 a las 08:47 +0100, Claudio Jeker escribió: 
> On Tue, Dec 06, 2005 at 09:07:22PM -0500, johnny yu wrote:
> > 
> > Hi,
> > 
> > I have been using Netqmail 1.05 in my DMZ for a long time.  I use it as a 
> > smarthost in my DMZ for all incoming and outgoing email.  My primary reason 
> > this is not waiting to expose the Microsoft SMTP service on my Exchange 
> > server to the world due to secutiry concerns.  For this purpose Qmail has 
> > been great, and I have added a lot of add ons to it like Qmail Scanner and 
> > rblsmtpd.
> > 
> > However, I would like add the ability to Qmail to have it check to see if a 
> > user exists before accepting mail and sending it to Excahgne.  It seemed 
> > like Qmail LDAP would do this.  I set up a test system and installed Qmail 
> > 1.03 and patched it with the latest Qmail LDAP patch.  I got communication 
> > working between my Qmail test system and the directory, but from my testing 
> > it seems Qmail LDAP is more ment to deliver mail locally and just use LDAP 
> > to store information about the users.  I guess the only functionality I 
> > want out of Qmail LDAP is for it to query AD when recieving a message to 
> > make sure the recipient in the message is valid.  Is there some way to make 
> > Qmail LDAP work in this manner?
> > 
> > I have also looked at qmail-activedir, but it doesn't appear to do what I 
> > want either.
> > 
> 
> The trick is to use only part of qmail-ldap. So using qmail-smtpd and
> qmail-verify but not the backend part. Anotherthing that needs some
> consideration is to make qmail-smtpd parse a different locals file.
> Currently I think it would be possible by using some sort of chroot hack.
> 
> I'll probably add a way to have additional domains checked by
> qmail-verify.

This function could be very interesting. I have a server that works like
a secondary SMTP for several domains. It has no local delivery, in
rcpthosts file are configured all domains managed by primary SMTP. This
way, when a mail comes to secondary one, is spam and virus checked, but
recipient is not verified because is not a local deliver. Is there any
way to make this work? My secondary server receives a lot of spam mails,
and may of them could be deferred with a LDAP recipient verification.


Hi

I would think it was easy, just change "qmail-smtpd.c" from line 1113. To:

--------------
  /* check if recipient exists in ldap */
  if (rcptcheck) {
    if (!goodmailaddr()) {
      logline(4,"recipient verify, recipient not in goodmailaddr");
//      if (addrlocals()) {
        char *s;
        logline(4,"recipient verify, recipient is local");
        switch (ldaplookup(addr.s, &s)) {
          case 1: /* valid */
            logline(4,"recipient verify OK");
            break;
          case 0: /* invalid */
            logline(3,"message denied because of recipient verify");
            err_554msg(s);
            if (errdisconnect) err_quit();
            return;
          case -1:
          default: /* other error, treat as soft 4xx */
            if (ldapsoftok)
              break;
            logline(3,"recipient verify soft error");
            err_ldapsoft();
            if (errdisconnect) err_quit();
            return;
        }
//      } /* else this is relaying, don't do anything */
    }
  }
---------

See that I have commented out the check for local delivery.

I have not tested this and not sure it works, but I would think so.

Good luck

/Mikkel

Reply via email to