[milters] Archive

Lists Index Date Thread Search

Article: 214
From: Anthony Howe
Date: 2004-10-22 01:43:02 -0400
Subject: Re: socket error on FreeBSD 4.10

Removal...........: milters-request@milter.info?subject=remove
More information..: http://www.milter.info/#Support
--------------------------------------------------------

Dirk Meyer wrote:

> Anthony Howe schrieb:,
>>Dirk Meyer wrote:
>>>I suggest to build sendmail without an extra berkley db installed.
>>>Then you build milter-sender with the db of your choice.
>>
>>For milter-sender (and any of my other milters using cache/access 
>>databases), you must build Sendmail and the milters with the same 
>>version of Berkely DB. As I understood in an email from Keith Bostic on 
>>the matter, newer versions of Berkely DB can not read BDB 1.85 file 
>>format, so applications that must access the same database, must be 
>>linked with the same BDB library.
> 
> 
> 1. Milter has not dependency on the sendmaildb.
> 2. A milter can use and db it want.
> 3. Only if you have to read/write the databases sendmail uses,
>    you have to match the db version.

I don't think you read Keith Bostic of Sleepycat, author of Berkeley DB, 
response's on the matter:

http://www.snert.com/Software/ecartis/index.php?go=/milters/2004-10/184

Its true a milter can link with any BDB for its own completely 
independent needs, like a private cache, BUT a milter that wants to just 
  do read-only operations on a BDB that is managed by Sendmail MUST link 
with the same BDB, especially if that BDB is 1.85, because no newer 
version of BDB can read version 1.85 databases! So said Keith.

Many of my milters need a) a read/write a cache.db, b) to read the 
Sendmail access.db. In order to just read access.db, the milter must be 
linked with the same BDB library in order to read the BDB format used by 
Sendmail.

> If you milter must do this, you can have a nice workaround:
> You have "access" and "access.db" in native sendmail.
> Your milter can still use a new db scheme.

I don't need to write access.db. Only read.

> mkdir /etc/mail/milter
> ln -s /etc/mail/milter/access /etc/mail/access
> cd /etc/mail && makemap hash access <access
> cd /etc/mail/milter && makemap-db42 hash access <access
> 
> giving each program its own hash to work on may work
> even with an unmodifed sendamil.
> 
> tell me if I am wrong.

This is so wrong.

Maintaining different copies of the access.db (and aliases.db, 
virtusertable.db, mailertable.db, domaintable.db, generics.db, etc.), 
one for each distinct BDB format, is inefficent and prone to error. My 
milters current detect when access.db has been modified and reopens the 
access.db. Every time you add a new entry to access.db and rebuild it 
with makemap, then you have make sure to update the other copies using a 
different version of makemap compiled. You have to remember to maintain 
two different makemap tools also.

That is such a horrible hack.

-- 
Anthony C Howe                                 +33 6 11 89 73 78
http://www.snert.com/       ICQ:
7116561         AIM: Sir Wumpus

            "Once...we were here."  - Last of The Mohicans


Lists Index Date Thread Search