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