On Mon, Sep 16, 2024 at 09:55:22AM -0500, Dan Lists via Postfix-users wrote:
> > How many distinct sender domains are in scope? If it is just a small
> > handful, you can restriction classes:
> >
> > main.cf:
> > smtpd_restriction_classes =
> > require_sender_domain_a,
> > [...]
> > smtpd_client_restrictions =
> > check_client_access cidr:{
> > {192.0.2.1/32 require_sender_domain_a}
> > ...
> > }
> > [...]
> > require_sender_domain_a =
> > check_sender_access pcre:{
> > {if !/@a\.example$/}
> > {/^/ REJECT for some reason}
> > {endif}
> > }
> > [...]
>
> Thanks, that is some cool voodoo!
See http://www.postfix.org/RESTRICTION_CLASS_README.html
> We have 8 domains currently and about 25 IPs and CIDR blocks. The inline
> tables would make this fairly manageable.
That was the gambit.
> It looks like if an IP isn't in check_client_access but is allowed to
> relay then that IP could send as whoever they like. All IPs that
> relay would have to be in check_client_access.
So it it seems you rather want to restrict access to some domains for
to just the allowed IPs, rather than restrict some IPs to specific
domains.
> Could this be reversed?
Yes, of course, but mind the syntax (the inner "{}" in inline CIDR and
PCRE tables are not optional!) and the requirement to pre-declare custom
restriction classes:
smtpd_restriction_classes =
check_client_access_a,
...
> smtpd_client_restrictions =
> # Each rule is enclosed in {}
> check_sender_access: pcre:{
> {/@a\.example$/ check_client_access_a}
> }
>
> check_client_access_a =
> # Each rule is enclosed in {}
> check_client_access cidr: {
> {192.168.1.0/24 DUNNO}
> {192.168.2.0/24 DUNNO}
> {0.0.0.0/0 REJECT Relay access denied}
> }
--
Viktor.
_______________________________________________
Postfix-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]