Inhaltsverzeichnis

Konfiguration von Postfix

Die Hauptkonfiguration befindet sich in /etc/postfix/main.cf, eine ausführlich kommentierte Beispiel-Konfiguration liegt unter /usr/share/postfix/main.cf.dist.

oft benutzte Einstellungen

Oft benutzte Einstellungen in der main.cf:

Adressumschreibung des Empfängers

Aliase

:!: Aliase gelten nur für lokale Benutzer dessen Empfänger durch Aliase umgeschrieben werden kann. Benutzer fremder Systeme (=dessen Ziel wir nicht sind) können über virtuelle Benutzer umgeschrieben werden.

virtuelle Benutzer

Mit virtuellen Benutzern können externe Zieladressen umgeschrieben werden.

Dazu benötigt es

  1. eine Datei (z.B. „/etc/postfix/virtual“)
  2. in der die Umschreibungen nach dem Schema
    alte@adresse.de  neue@adresse.de

    definiert werden und

  3. einen Konfigurationseintrag
    virtual_maps = hash:/etc/postfix/virtual
  4. zuletzt eine Umwandlung als Datenbank mit postmap anstoßen:
    postmap /etc/postfix/virtual

Relayhost oder Smarthost

Relay sein

Konfiguration wenn wir ein Relayhost für andere sind.

Relay benutzen

Das Relay des Providers kümmert sich um den Versand der eMails.

# do we use a relayhost/smarthost?
relayhost = smtp-relay.of.my.provider.tld

Ggf. mit SMTP-Auth (siehe unten).

transports

Transports geben konkrete Routen/Ziele für bestimmte domains an, dies benötigt man bei Zielen die nicht im DNS-gelistet sind, z.B. Groupware-Server.

Eleganterweise lassen sich die Einträge für relay-Domains und transports in der gleichen Datei verwalten:

  1. Datei /etc/postfix/relay_domains:
    Domain1.de	:[ziel-server1.de]
  2. mit postmap umwandeln:
    postmap /etc/postfix/relay_domains
  3. Einträge in der main.cf
    relay_domains = hash:/etc/postfix/relay_domains
    transport_maps = hash:/etc/postfix/relay_domains

:!: Bei dieser Lösung dürfen aber reinen keine transports für externe Domains enthalten sein, da man sonst zum offenen Relay für diese Domains wird.

Absenderadressen maskieren

masquerade_domains = mydomain.tld

Ausnahmen für bestimmte Benutzer:

masquerade_exceptions = root

smtp_auth

  1. Datei anlegen: /etc/postfix/smtp_auth
  2. Inhalt nach Schema:
    FQDN_MX_Gateway USER:PASSWORT
  3. postmap /etc/postfix/smtp_auth

LOGIN / AUTH nur mit PLAIN möglich

Fehlermeldung:

: SASL authentication failed; cannot authenticate to server SMTP-SERVERXYZ.tld[1.2.3.4]: no mechanism available

oder

warning: SASL authentication failure: No worthy mechs found
smtp_sasl_auth_enable=yes
smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth
# allow plain/login: (standard contains: noplaintext) 
smtp_sasl_security_options = noanonymous

Postfix - SSL Konfiguration und debugging

Verschlüsselung ist (leider) bei SMTP lt. RFC immer optional, d.h. es muss immer erlaubt sein mails unverschlüsselt einzuliefern. Dennoch sollte sollte man sie anbieten und nutzen wo immer möglich auch wenn das Sicherheitsniveau durch viele Server mit selbst-signierten Zertifkate gesenkt wird. Die Anschaffung eines wildcard-Zertifikates für alle MTAs (mx1.DOMAIN.TLD, mx2.DOMAIN.TLD) ist auch eine sinnvolle Ausgabe, ggf. kann man gleich alle Server damit abdecken wenn alles unterhalb einer Domain statt findet.

Kommentierter Auschnitt aus /etc/postfix/main.cf:

# === SSL/TLS Einstellungen =============

# STARTTLS abgehend nutzen (aber nicht erzwingen):
smtp_tls_security_level=may

# STARTTLS eingehend anbieten (aber nicht erzwingen):
smtpd_tls_security_level=may

# Systemzertifikate zur Verifizierung heranziehen:
smtpd_tls_CApath = /etc/ssl/certs
smtp_tls_CApath = /etc/ssl/certs

# Headereinträge zur Transportverschlüsselung hinzufügen
smtpd_tls_received_header = yes

# SSL-Debug:
# smtpd_tls_loglevel = 1

# Eigene Zertifikate (certs/keys im pem-Format)
smtpd_tls_key_file = /etc/postfix/DOMAIN.TLD.key
smtpd_tls_cert_file = /etc/postfix/DOMAIN.TLD.cert
# wahrscheinloch nötige Zwischenzertifikate (Intermediate)
smtpd_tls_CAfile = /etc/postfix/DOMAIN.TLD-plus-zwischenzertifikate.crt

# === SSL/TLS Einstellungen ENDE =============

SSL/TLS debugging

Kommentierter Auschnitt aus /etc/postfix/main.cf:

smtpd_tls_received_header = yes
smtpd_tls_loglevel = 3  # 0 (none) to 4 (full data)

Einbindung externer Filtersysteme

Die Einbindung externer Filtersysteme ist problemlos möglich, da diese auf einem lokalen Port lauschen:

	# policyd-weight
	check_policy_service inet:127.0.0.1:12525,

	# greylisting
	check_policy_service inet:127.0.0.1:60000,

Spamassassin mit Postfix

Spamassassin kann grundsätzlich über zwei Wege zur Spamfilterung benutzt werden: