Mailserver der Header filtert für Weiterleitung via Postfix unter Ubuntu 20.04 LTS

Hallo Freunde der Sonne,

dieser Artikel wird etwas umfangreicher, geht es doch darum Mails von nicht vertrauenswürdigen IPs anzunehmen und diese für einen Antispam aufzubereiten.
Einsatzszenario: Wartungsmails irgendwelcher BMCs die unter DSL-Anschlüssen Wartungsmeldungen versenden und irgendwie gewaschen werden müssen.

Mailserver der Header filtert für Weiterleitung
via Postfix unter Ubuntu 20.04 LTS

Quellen

Installation Postfix unter Ubuntu 20.04 LTS

Auf der Installation mit dem Assistenten:

sudo DEBIAN_PRIORITY=low apt install postfix

Falls der Assistent später noch einmal aufgerufen werden soll, kann dieser Befehl verwendet werden:

sudo dpkg-reconfigure postfix

Grundkonfiguration des Postfix

Die Konfigurationsdateien befinden sich unter: /etc/postfix

Zuerst passen wir die Hauptkonfiguration an: „/etc/postfix/main.cf“, folgende Konfiguration sollte mindestens vorliegen:

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
# fresh installs.
compatibility_level = 2




# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_security_level=may

smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache


smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = HIER_SOLLTE_DEIN_SERVERNAME_STEHEN
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = HIER, SOLLTEN, DEINE, ZIELDOMAINS, STEHEN
relayhost =
mynetworks = localhost
#mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all

smtp_sender_dependent_authentication = yes

virtual_alias_domains = HAUPTZIELDOMAIN
virtual_alias_maps = hash:/etc/postfix/virtual

transport_maps = hash:/etc/postfix/transport

# Wichtig damit der Weiterleiter nicht dabei hilft verfügbare Adressen auszuspähen
disable_vrfy_command = yes

mime_header_checks = regexp:/etc/postfix/header_checks
header_checks = regexp:/etc/postfix/header_checks

# nur vertrauenswürdige Absender, ansonsten ablehnen
smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/sender_access, reject

maximal_queue_lifetime = 3d
bounce_queue_lifetime = 3d
# Mails nicht größer als 64MB
message_size_limit = 67108864
mailbox_size_limit = 1073741824
smtpd_client_connection_count_limit = 50
smtpd_client_connection_rate_limit = 50
smtpd_client_recipient_rate_limit = 100
smtpd_client_message_rate_limit = 100

Danach sollte die Sender-Liste für vertrauenswürdige Absender gebaut werden: /etc/postfix/sender_access

DOMAIN.TLD               PERMIT
BADPEOPLE.TLD            REJECT

Zu guter Letzt muss die Sender-Tabelle noch ins passende Format konvertiert werden:

cd /etc/postfix
postmap sender_access

Es sollte nun eine „sender_access.db“ generiert worden sein.

Filterung der Header für das Weiterleiten

Installation des Moduls pcre:

apt install postfix-pcre

Danach hinzufügen der Filterzeile in der /etc/postfix/master.cf unter cleanup:

cleanup unix n - y - 0 cleanup
-o header_checks=pcre:/etc/postfix/cleanup_header

Zusätzlich muss eine Datei /etc/postfix/cleanup_header angelegt werden welche die Felder filtert:

/^Received:/ IGNORE
/^X-Originating-IP:/ IGNORE

Hierdurch werden die Absender-Daten für das folgende Hauptsystem verschleiert und nur die Online-IP bzw. der MX unseres Postfix verwendet.

Virtuelle Tabellen und Weiterleitungen im Postfix

Nach der oberen Konfiguration zur urteilen, müssen noch die Weiterleitungen angelegt werden, da das System selbst keine Mailboxen hostet.

Empfänger werden über virtuelle Aliase weitergeleitet: /etc/postfix/virtual

Empfaenger@domain.tld                Weiterleitungsziel@domain.tld

Nun muss wieder die Datei in das richtige Format gebracht werden:

cd /etc/postfix
postmap virtual

Final muss der Traffic noch an das passende Ziel weitergeleitet werden, hierfür verwenden wir die Datei: /etc/postfix/transport

*          smtp:zielserver.dns.name:587

Nun muss wieder die Datei in das richtige Format gebracht werden:

cd /etc/postfix
postmap transport

Jetzt den Postfix neu starten und ggf. in den Autostart packen und fertig:

systemctl enable postfix
systemctl restart postfix
systemctl status postfix
journalctl -xe

Vielleicht hilft mir der Artikel ja später wieder, wenn das jemand warten oder neu aufbauen muss. ;)