DenKn

2017-Jan-22, Postfix, SPF, DKIM & DMARC

Nach dem mein Mailserver einging, habe ich 4h benötigt einen neuen aufzusetzen. Inklusive TLS, SPF und DKIM. Was da noch fehlte war etwas gegen Spam (Greylisting, SPF), aber inzwischen ist auch das umgesetzt.

Besonders für das nächste Mal oder für Leute, die eine schnelle Anleitung haben wollen, ein paar Notizen.

Postgrey vs Postscreen: Nicht lange nachdenken, Postscreen. ;)

TLS - Sicherheit geht vor
# TLS parameters
        smtpd_tls_cert_file = /etc/ssl/PATH/HOST.crt
        smtpd_tls_key_file = /etc/ssl/PATH/HOST.key
        smtpd_use_tls = yes
        smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
        smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
        smtpd_tls_loglevel = 1
        smtp_tls_loglevel = 1
        smtpd_tls_security_level = may
        smtp_tls_security_level = may
        smtpd_tls_auth_only = yes
        tls_ssl_options = NO_COMPRESSION
        smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
        smtp_tls_protocols = !SSLv2, !SSLv3
        lmtp_tls_mandatory_protocols = !SSLv2, !SSLv3
        lmtp_tls_protocols = !SSLv2, !SSLv3
        smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
        smtpd_tls_protocols = !SSLv2, !SSLv3
        smtpd_tls_mandatory_ciphers=high
        tls_high_cipherlist=EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA256:EECDH:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!IDEA:!ECDSA:kEDH:CAMELLIA128-SHA:AES128-SHA
Dovecot
mailbox_command = /usr/lib/dovecot/dovecot-lda -f "$SENDER" -a "$RECIPIENT"
SPAM SPAM SPAM
smtpd_recipient_restrictions =
                permit_sasl_authenticated,
                permit_mynetworks,
                reject_unauth_destination,
                reject_unknown_reverse_client_hostname,
                reject_invalid_helo_hostname,
                reject_non_fqdn_helo_hostname,
                reject_non_fqdn_sender,
                reject_non_fqdn_recipient,
                reject_unknown_sender_domain,
                reject_unknown_recipient_domain,
                reject_invalid_hostname,
                check_policy_service unix:private/policy-spf,
                reject_rbl_client ix.dnsbl.manitu.net
        
        # postscreen
        postscreen_access_list = permit_mynetworks,
                cidr:/etc/postfix/postscreen_access.cidr
        postscreen_pipelining_enable = yes
        
        # SPF
        policy-spf_time_limit = 3600s
        
        # DKIM
        milter_default_action = accept
        milter_protocol = 2
        smtpd_milters = inet:127.0.0.1:8891
        non_smtpd_milters = inet:127.0.0.1:8891

OpenDKIM via Unix-Socket hat bisher bei mir nicht richtig funktioniert. Vielleicht ein chroot in postfix? TODO. Wäre praktisch, wenn OpenDKIM über postmaster gestartet werden könnte; dann könnte es bereits gelöst sein. Oder es reicht das Socket in /var/spool/postfix/public zu erstellen.

master.cf
smtp      inet  n       -       -       -       1       postscreen -o soft_bounce=yes
        smtpd     pass  -       -       -       -       -       smtpd -o syslog_name=postfix/smtps
        dnsblog   unix  -       -       -       -       0       dnsblog
        tlsproxy  unix  -       -       -       -       0       tlsproxy
        submission inet n       -       -       -       -       smtpd
          -o syslog_name=postfix/submission
          -o smtpd_tls_security_level=encrypt
          -o tls_preempt_cipherlist=yes
        policy-spf unix -       n       n       -       -       spawn user=nobody argv=/usr/bin/policyd-spf