On Mon, Dec 09, 2019 at 07:17:46AM +0000, Felix Rubio wrote:

> My requirements are:
> - Require encrypted and authenticated user to submit mail from non-local 
> (other than 127.0.0.x) connections
> - Allow unencrypted/unauthenticated users to submit mail from local 
> (127.0.0.x) connections

>      mynetworks = 127.0.0.0/24, 10.8.0.0/24, 172.17.0.0/16
>      smtpd_relay_restrictions =
>        permit_mynetworks 
>        permit_sasl_authenticated
>        reject_unauth_destination

Well, clearly your definition of "non-local" is broader than 127.0.0.x,
it also include two RFC1918 address (sub)blocks.

>      smtpd_tls_eecdh_grade = ultra

With OpenSSL 1.0.2 and later, the default is "auto", and you very much
SHOULD NOT override that.

>      smtpd_tls_exclude_ciphers = aNULL, LOW, EXP, MEDIUM, ADH, AECDH, 
> MD5, DSS, ECDSA, CAMELLIA128, 3DES, CAMELLIA256, RSA+AES, eNULL

What on earth is all that?  Just go with the default setting instead of
pasting in random garbage from some clueless blog.

>      smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1

I'd leave TLS 1.0 enabled for at least another year, safer than
cleartext, and still used to some degree with SMTP.

>      smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache

Not needed, now that we have session tickets.

>      tls_high_cipherlist = !aNULL:!eNULL:!CAMELLIA:HIGH:@STRENGTH

Don't, the default is fine.

>      tls_ssl_options = no_ticket, no_compression

I doubt you can provide a good reasons to disable session tickets,
don't disable them.

> To fulfill my requirements with respect to local/remote authentication 
> and encryption settings, in master.cf I have:
>
>      smtp      inet  n       -       y       -       -       smtpd
>         -o smtpd_sasl_auth_enable=no
>      submission inet n       -       y       -       -       smtpd
>         -o 
> smtpd_client_restrictions=permit_mynetworks,permit_sasl_authenticated,reject

This is largely ineffective.  See the stock Postfix master.cf file for a
much better approach.

>      127.0.0.1:588 inet n       -       y       -       -       smtpd
>        -o smtpd_sasl_exceptions_networks=
>        -o smtpd_tls_auth_only=no

There's no reason for this.  Just use a single port 587 submission
service, then allow traffic from the loopback interface, and otherwise
reject unencrypted sessions via "reject_plaintext_session".  The
below client access table should work.

    allow-loopback.cidr:
        127.0.0.0/8 OK
        ::1         OK

Then just:

    mua_client_restrictions = 
        check_client_access cidr:${config_directory}/allow-loopback.cidr,
        reject_plaintext_session,
        permit_sasl_authenticated,
        reject

Since the loopback clients won't need to authenticate, you don't need to
set "smtpd_tls_auth_only = no".

Your configuration looks much too dense with extraneous settings, I
don't have the cycles to review them all.  Resist the urge to
over-customize, especially settings you don't fully understand.

-- 
    Viktor.

Reply via email to