Viktor and I are in agreement here.  The smtpd_relay_restrictions
should be kept as simple as possible to prevent accidents.

It's too easy to make a mistake in a check_*_access table and
inadvertently create an open relay.  That's why
smtpd_relay_restrictions was invented.

It's fine to have a policy to restrict the domain used in outgoing
mail, but that policy does not belong in smtpd_relay_restrictions.

The whole purpose of smtpd_relay_restrictions is to avoid the
historically user-error-prone lookup tables and make the simplest
possible yes/no relay decision.



  -- Noel Jones



On 3/9/2015 12:53 PM, Sebastian Nielsen wrote:
> I have noticed some automated open relay testing services do "fail"
> a domain if it rejects a relay too early (eg in MAIL FROM).
> 
> And you are a bit wrong with IP adress lookup. Yes,
> check_sender_access do not itself lookup IPs.
> But the rules I listed, will effectively "expand" to the rule:
> 
> smtpd_relay_restrictions = permit_mynetworks, reject,
> reject_unauth_destination
> 
> for any mail having a FROM ending in <YOUR_DOMAIN> or the IP literal
> of your mailserver, effectively preventing anyone from using your
> domain as MAIL FROM, regardless of internal or external mail, if the
> client is not inside "mynetworks", so the IP lookup are made by the
> rule lookup engine.
> 
> If the FROM is "incorrect", then the relay rule "expands" to:
> smtpd_relay_restrictions = reject_unauth_destination
> effectively preventing *anyone* relaying, but allowing anyone to
> send mail that is destined for the mail server itself.
> 
> Eg, only valid FROM is allowed to relay, in *addition* to have a
> acceptable client IP.
> So how are the rules "fragile"? Either the relay is only accepted
> inside "mynetworks" or it is never accepted, eg theres no
> possibility for the server to become a open relay since theres
> nothing in check_sender_access that would PERMIT the mail before
> reject_unauth_destination unless
> the client is inside mynetworks.
> 
> 
> -----Ursprungligt meddelande----- From: Viktor Dukhovni
> Sent: Monday, March 09, 2015 6:40 PM
> To: postfix-users@postfix.org
> Subject: Re: smtpd_relay_restrictions in Postfix 2.11.3 on openSUSE
> 13.2 causes mail to local domain to be rejected
> 
> On Mon, Mar 09, 2015 at 05:56:20PM +0100, Sebastian Nielsen wrote:
> 
>> I would instead suggest setting the relay access to:
>>
>> check_sender_access hash:/etc/postfix/relay_auth,
>> reject_unauth_destination
>>
>> where /etc/postfix/relay_auth is:
>> <YOUR_DOMAIN> permit_mynetworks, reject
>> [<EXTERNAL_IP_OF_SMTP_SERVER>] permit_mynetworks, reject
> 
> Those are NOT relay control rules, they are anti-spoofing rules at
> best.  They do not belong in relay restrictions.
> 
> Sender based rules are too fragile in relay controls.  And of course
> nothing in Postfix will do IP address lookups with check_sender_access.
> 
> Any such rules (written with more care) can instead go in
> smtpd_sender_restrictions.
> 
>    smtpd_sender_restrictions =
> check_sender_access <some-table-for-your-domains>
> <rules for other senders>
> 
> Keep the relay restrictions *simple*, just avoid being
> an open relay.  Other policy controls go elsewhere.
> 

Reply via email to