Postfix

Begriffe:

  • postfix/smtpd - Dies ist der SMTP Daemon, der eingehende Mails bearbeitet und im Postfix intern an die entsprechenden Stellen weiterleitet.

  • postfix/smtp - Dies ist der SMTP Daemon, für die Auslieferung von Mails ins Internet.

TLS

TLS kann seitens Postfix auch im „Wrapper“-Modus angeboten werden, bei dem immer TLS verwendet wird, anstatt STARTTLS-Unterstützung anzukündigen (und anschliessend darauf wartend, dass SMTP-Clients den TLS-Dienst anfordern). Einige alte Clients, insbesondere Outlook [Express], bevorzugen den „Wrapper“-Modus. Falls man unbedingt diesen Dienst unterstützen möchte, aktiviert man einen speziellen Port in der master.cf und gibt -o smtpd_tls_wrappermode=yes (Achtung: kein Leerzeichen um das „=“) als smtpd-Kommandozeilenoption an. Früher wurde Port 465 (smtps) für diese Funktion gewählt.

Besser ist natürlich, Port 587 (SMTP über STARTTLS) zu nutzen. Mit dieser Konfiguration kündigt Postfix STARTTLS-Unterstützung für SMTP-Clients an, verlangt aber nicht, dass die Clients auch TLS-Verschlüsselung verwenden:

/etc/postfix/main.cf
smtpd_tls_security_level = may
smtp_tls_loglevel = 1

smtpd_tls_cert_file = /etc/pki/tls/certs/example.com.pem
smtpd_tls_key_file = /etc/pki/tls/private/example.com.key

DKIM

Sollen ausgehende Mails mit DKIM signiert werden, empfiehlt sich die Verwendung von OpenDKIM.

dnf install opendkim

Ein Keypair kann wir folgt generiert werden:

dnf install opendkim-tools

domain=example.com
mkdir /etc/opendkim/keys/$domain
/usr/sbin/opendkim-genkey -D /etc/opendkim/keys/$domain/ -d $domain -s default
chown -R root:opendkim /etc/opendkim/keys/$domain
chmod 640 /etc/opendkim/keys/$domain/default.private
chmod 644 /etc/opendkim/keys/$domain/default.txt

# test key and config
opendkim-testkey -vvvvv
# ...
# opendkim-testkey: key OK

/etc/opendkim/keys/$domain/default.txt beinhaltet den Public Key, dieser muss als TXT DNS Record veröffentlicht werden.

Im Config File /etc/opendkim.conf sollten folgende Werte angepasst bzw gesetzt werden:

/etc/opendkim.conf
##  Selects operating modes. Valid modes are s (sign) and v (verify). Default is v.
##  Must be changed to s (sign only) or sv (sign and verify) in order to sign outgoing
##  messages.
Mode        s

##  Attempt to become the specified user before starting operations.
UserID      opendkim:opendkim

##  Create a socket through which your MTA can communicate.
Socket      inet:8891@localhost

##  Domain(s) whose mail should be signed by this filter. Mail from other domains will
##  be verified rather than being signed. Uncomment and use your domain name.
##  This parameter is not required if a SigningTable is in use.
Domain      example.com

##  Gives the location of a private key to be used for signing ALL messages. This
##  directive is ignored if KeyTable is enabled.
KeyFile     /etc/opendkim/keys/example.com/default.private

##  Identifies a set "internal" hosts whose mail should be signed rather than verified.
InternalHosts       refile:/etc/opendkim/TrustedHosts

In /etc/opendkim/TrustedHosts müssen alle Hosts eingetragen werden, deren Mails signiert werden sollen. Normalerweise ist dies localhost.

/etc/opendkim/TrustedHosts
127.0.0.1
::1

OpenDKIM muss bei Postfix als Milter eingetragen werden, damit alle Mails über OpenDKIM verschickt werden:

/etc/postfix/main.cf
# DKIM
smtpd_milters = inet:localhost:8891
non_smtpd_milters = $smtpd_milters

Und am Ende muss der Service gestartet und Postfix neugestartet werden:

systemctl enable --now opendkim.service

systemctl restart postfix.service

Check-Tools

MTA ganz allgemein (SPF, DKIM, DMARC,Spammyness)

nur SPF und DKIM Keys:

Ist der Mail-Server blacklisted?

Microsoft Hotmail

Mails an

  • hotmail.com

  • live.com

  • outlook.com

  • msn.com

werden geblockt?

Logs prüfen:

grep -E '(protection.outlook.com|http://mail.live.com/mail/troubleshooting.aspx|block list' /var/log/maillog

Falls geblockt: Hotmail Blacklist Removal Form ausfüllen.

Falls Mail im Spam landen: SPF, DMARC und DKIM prüfen. Mailserver-Konfiguration durch Senden eines leeren Mails an check-auth@verifier.port25.com und mit Hilfe von http://www.mail-tester.com prüfen.

Diese Policies sind beim Senden an Microsoft-Domains einzuhalten: https://sendersupport.olc.protection.outlook.com/pm/policies.aspx

Mail-Queue

Mails hängen in der Queue? So sieht man, welche (und erhält auch deren ID):

mailq

Wie lauten die Mail-IDs?

postqueue -p

Was steht in den Mails?

postcat -q <ID>

Queue erneut abarbeiten lassen: flush the queue

postqueue -f

Alle Mails aus der Queue entfernen:

postsuper -d ALL

Built on 2025-01-06