On Fri, Jan 14, 2011 at 7:28 AM, Chris Lewis <cle...@nortel.com> wrote:

> On 1/13/2011 1:09 PM, John Peacock wrote:
>
>> On 01/13/2011 06:55 AM, Nicholas Lee wrote:
>>
>>> Is there a plugin that will check rcpt addresses against a back end smtp
>>> server?
>>>
>>> Ideally via some sort of smtproutes lookup.
>>>
>>
>> Where are your addresses stored?  What I have done in the past is to
>> check directly against the user database with a custom finger daemon I
>> wrote.  This is a very lightweight lookup and can handle anything in
>> vpopmail (e.g. lists as well as mailboxes and aliases).
>>
>
> We download a flat file containing our user list to the configuration
> directory on the qpsmtpds, and load it into a note() that returns a hash
> that can be queried by the rcpt to hook.  Qpsmtpd notices changes to the
> file every couple of hours (it's a nightly process to update it).
>
> It won't introduce that big a problem even with 100K users in the hash.
>
> You could do "forward" rcptto verification with Net::SMTP in the rcptto
> plugin, by creating a SMTP object aiming at an internal server who knows who
> exists, issuing a mailfrom() and checking the return from rcptto(), before
> sending quit().  Our spam filters used to do that.  Apparently Postini does
> this too.  It has the advantage of not having to interface with the
> recipient's user directory.  Great for minimizing effort by 3rd party SMTP
> filtering organizations.  Fairly straightforward code except that the
> parsing of the rcptto return has to use the Net::Cmd-documented interfaces
> instead of Net::SMTP's.
>
> The problem is that it takes time.  Sometimes quite a bit of time. Perhaps
> quite complicated coding if you're running qpsmtpd-async.
>
> There's potentially failover/outages to consider, and potentially sender
> timeouts.  Not to mention the extra loading on the backends.
>

Postfix deal with this by 450 on timeout [1].


> Generally I'd advise against forward verification, unless your backend
> loading is relatively light, your internal infrastructure very stable, and
> you MUST MUST MUST have realtime identification of user adds or deletes.
>  Mind you, if your local user directory is out of date w.r.t. deletes, your
> passthru is going to reject it anyway - albeit, with a NDR reject _after_
> DATA.
>



Although I could write some scripts to poll the user db at the mail server
back ends. It would be nice if I could be somewhat lazy have have a plugin
do this. ;)  Real time checking for each delivery is obviously unworkable,
but poll then cache with maybe a expiry is still a practical option.  The
mechanics are probably similar to greylisting.



Nicholas

[1] http://www.postfix.org/ADDRESS_VERIFICATION_README.html

Reply via email to