ehlo,

tl;dr: Is there really no way in postfix to restrict what "From" headers
a user may specify?

For outgoing mail, we would like to restrict the "From" header to match
the address users SASL authenticate with, or is configured as an alias
in their account. We have setup smtpd_sender_login_maps to use a SQL map
and configured smtpd_sender_restrictions to have the configuration
option reject_authenticated_sender_login_mismatch before
permit_sasl_authenticated. This works as expected.

However the problem is that the envelope "From" is being restricted, not
the header "From". Users must specify the correct SMTP "MAIL FROM:" but
are still able to provide a different "From:" value in the header of the
message provided in the DATA stage of the SMTP discussion. The postfix
option "reject_authenticated_sender_login_mismatch" only enforces the
envelope sender to be correct.

It doesn't appear that there is a postfix config option that will take
care of this. The only method of restricting the "From" header we have
found is through a milter (eg. https://github.com/magcks/milterfrom.git)
which compares the envelope sender with the sender specified in the mail
header for authenticated users, thus ensuring that the sender specified
in the header matches the envelope sender.

It strikes me as odd that there is no way to do this in postfix, and
that the only solution seems to be a milter that someone wrote only a
couple months ago. I would have expected people to have solved this
problem a long time ago, which makes me wonder -- am I doing this right,
or missing something? In particular, it doesn't make sense to enable
DKIM signing of the "From" header without strongly verifying that the
user has permission to use that address.

On a related note, because I am specifying a SQL table for the
smtpd_sender_login_maps, I configured it using proxy:mysql, which meant
I had to override proxy_read_maps to allow that. It is unclear to me the
risks of adding something to proxy_read_maps and am looking for more
clarity on what exactly this does. Documentation simply states, "The
lookup tables that the proxymap(8) server is allowed to access for the
read-only service", are there security concerns or other trade-offs with
adding lookup tables to do this?

thanks,
micah

Reply via email to