Re: [exim] greylisting and VERP's

Top Page
Delete this message
Reply to this message
Author: Chris Webb
Date:  
To: exim-users
Subject: Re: [exim] greylisting and VERP's
Steffen Heil <lists@???> writes:

> Would you mind to share that?


I'm definitely planning on packaged it up and releasing it for others to use
once I'm happy with it.

> I got some experience with bdb recently, but I have non with unix domain
> sockets.


Exim's readsocket makes this especially convenient and easy. You can just do
something like this in Perl:

  use Socket;
  [...]
  unlink($socketpath) or die "unlink: $!";
  socket(SERVER, PF_UNIX, SOCK_STREAM, 0) or die "socket: $!";
  bind(SERVER, sockaddr_un($socketpath)) or die "bind: $!";
  $SIG{PIPE} = 'IGNORE';
  listen(SERVER, SOMAXCONN);
  while (accept(CLIENT, SERVER)) {
    sysread CLIENT, $query, 16384;
    [...]
    syswrite CLIENT, $response;
    close CLIENT;
  }


and then from Exim's string expansion mechanism, you can pass in a query to
expand to a response: ${readsocket{SOCKETPATH}{request string}}. (Test with
exim -be.)

Because this simple-minded server is inherently serialized, there are no
locking issues or race conditions to worry about, which might be a concern
if you use an embedded perl interpreter to achieve the same effect.

Best wishes,

Chris.