From: punit jain on
Hi Wieste,

Thanks for the link.I would like to know if my understanding is correct.
Here is what I understood: -

1. Postfix uses Milter (mail filter) protocol to allow external application
to inspect SMTP events (CONNECT, DISCONNECT), SMTP commands (HELO, MAIL
FROM, etc.) as well as mail content (headers and body) as according to the
information from http://www.postfix.org/MILTER_README.html.

2. This would mean filter application should talk with postfix using Milter
instead of HTTP. The application can then be invoked at different stages of
SMTP.

3. When postfix invoke filter application via Milter, information like
sender/recipient address, source IP will be passed together or separately
the way it is sent during SMTP negotiation ?

Thanks
From: Wietse Venema on
punit jain:
> Hi Wieste,
>
> Thanks for the link.I would like to know if my understanding is correct.
> Here is what I understood: -
>
> 1. Postfix uses Milter (mail filter) protocol to allow external application
> to inspect SMTP events (CONNECT, DISCONNECT), SMTP commands (HELO, MAIL
> FROM, etc.) as well as mail content (headers and body) as according to the
> information from http://www.postfix.org/MILTER_README.html.
>
> 2. This would mean filter application should talk with postfix using Milter
> instead of HTTP. The application can then be invoked at different stages of
> SMTP.

This would mean that *something* talks to Postfix (for example via
the Milter protocol). This *something* could then post the information
from Postfix as HTTP queries to the filter application.

You could also talk to Postfix via its policy delegation protocol.
This is simpler than Milter, and it sends all available attributes
in one request. I guess that 100 lines of Perl script would do
the job (not counting existing PERL code that already implements
HTTP). http://www.postfix.org/SMTPD_POLICY_README.html

> 3. When postfix invoke filter application via Milter, information like
> sender/recipient address, source IP will be passed together or separately
> the way it is sent during SMTP negotiation ?

See https://www.milter.org/developers/api/index#Callbacks for a
description of the functions that receive information from the MTA.

Wietse