Friday, 19 October 2012 in Mac OS X Lion Server

The code here has a problem but it so happens it has no effect on its operation.

It uses two databases, greylist.db and whitelist.db.

The intention seems to be that key/value pairs representing SMTP clients are initially stored in greylist.db then promoted to whitelist.db (that's the gist, anyway).  Due to a coding error in the open_whitelist_db subroutine %db_hash gets tied to whitelist.db when it has already been tied to greylist.db by a previous call to open_database, in smtpd_access_policy.

Since different keys were to be stored in the two databases anyway this does not affect the operation of the process, so having two databases was unnecessary.

I haven't check the code shipped with Mountain Lion (I can't upgrade this server to Mountain Lion as Apple have deemed its hardware to be too old).


Iain Houston said...

Mountain Lion OS X Server still has this coding error in ... am not totally convinced that its behaviour is as intended yet but, as you say, greylisting seems to work without the greylist.db ever being used.
Would like the time to really check that its not causing unnecessary delays.

Unknown said...

In the end I abandoned the OS X-supplied grey listing as I didn't feel confident that the coding of had been completed or tested. I installed Postgrey which seems generally well respected and has been working reliably in a way that I understand since July. I upgraded Mountain Lion to Mavericks and thus Server 2 to Server 3 and the only hitch I encountered was resolved by re-installing Postgrey according to the original instructions here