On Mon, Mar 07, 2022 at 07:05:53PM -0500, Alex wrote:

> > Replace "reject_non_fqdn_helo_hostname" with:
> >
> >     main.cf:
> >         pcre = pcre:${config_directory}/
> >
> >         # In the client, helo, sender or recipient restriction list
> >         smtpd_..._restrictions =
> >             ...
> >             check_helo_access ${pcre}non-fdqn-helo.pcre
> >             ...
> >
> >     non-fdqn-helo.pcre:
> >         /^cp4435$/  DUNNO
> >         /^/         reject_non_fqdn_helo_hostname
> 
> Okay, very interesting. I hadn't realized I could add commands to
> files referenced in restrictions.

Yes, anything that does not involve new table lookups can appear in the
RHS "action" of a table lookup.

> But I still want to leave the reject_invalid_helo_hostname parameter?

You are quite confused here, the above rejects invalid HELO names
whenever the name is not "cop4435", exactly as you asked, by using
"reject_invalid_helo_hostname".  So either you want to exempt that
domain or you don't.  Elementary logic says you get to choose exactly
one of these alternatives.

> I've now added the check_helo_access to smtpd_recipient_restrictions
> and smtpd_helo_restrictions,

Just once is enough.

> but do I really need smtpd_helo_restrictions if I'm also adding them
> to smtpd_recipient_restrictions?

Not necessarily.  Only if you want to apply further restrictions, in the
next built-in class after short-circuiting one of the built-in classes
with "OK".  The built-in restrction classes are:

    - client
    - helo
    - sender
    - recipient
    - data
    - end_of_data

With the strongly recommended default of "smtpd_delay_reject = yes", A
recipient is rejected if any of the first four fail, with success in the
first three still subject to further checks in the remaining one(s).

The "data" and "end_of_data" restrictions apply to the message as a
whole.

-- 
    Viktor.

Reply via email to