Quanah Gibson-Mount:
> Right now, we can have up to 4 different processing filters in our 
> configuration, based on what features are enabled.
> 
> In general, we always have:
> 
> 1) OpenDKIM for signing
> 
> Then we almost always have
> 
> 2) Amavis
> 
> Then we sometimes have
> 
> 3) A Zimbra written Milter service
> 
> And rarely
> 
> 4) A journaling milter

I can't share experiences with configurations of similar complexity,
just want to make a reminder that Milters don't work (well) before
a proxy filter. In particular the Milter will not receive header,
body, or end-of-body events, nor will it be able to send requests
to modify the envelope or message content.  Those features are
implemented in the cleanup daemon as it writes the message to queue
file, but of course there are no cleanup daemon or queue file
before a proxy filter.

network -> smtpd -> proxy filter -> smtpd -> cleanup -> queue file 
             |
        buffer file

It would not require a lot of code to send header, body, or end-of-body
events to a Milter before a proxy filter. However, requests to
modify the envelope or message content would require significant
coding, and without those editing features, Milter support would
still be crippled.

One approach is to reuse the buffer file that is created with
"smtpd_proxy_options = speed_adjust", and to make the queue file
editing code work in that environment.

It's much easier to tell people not to use Milters before a proxy
filter...

    Wietse

Reply via email to