Kategorien
Linux Postfix

EMail Datenschutz – Mail Header filtern

Vor einigen Tagen fiel mir bei der Untersuchung  des, auch an dieser Stelle behandelten, TLS-Fehlers auf, das die E-Mail Header aller über meinen Server vesandten EMails die folgenden beiden Header-Zeilen enthalten.:

Received: from [192.168.*.*] (ip********.dynamic.kabel-deutschland.de [95.91.*.*])
by server.angststalt.de (Postfix) with ESMTPSA id A64D13FCE1
for <*****@*****.de>; Mon, 26 Mar 2018 21:46:44 +0200 (CEST)
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101
Thunderbird/52.6.0

Ich bin mir, mit Blick auf den 25. Mai 2018 nicht sicher ob eine EMail diese zusätzlichen, nicht für die Erfüllung des Dienstes erforderlichen, Metadaten weiterhin beinhalten darf.
(Lieber Leser, liebe Leserin, wenn Du eine Online-Rechtsberatung erteilen darfst und dich mit der EU-Datenschutz-Grundverordnung auskennst, würde ich mich über einen Kommentar ↓ von Dir sehr freuen!)

Da ich es persönlich nicht mag wenn Daten versteckt vorliegen (in diesem Fall im EMail-Header) die nicht benötigt werden aber dritten unter bestimmten Umstenden helfen können mir zu schaden habe ich mich für die Entfernung der Header-Zeilen entschieden. Auch ein Blick in die RFC5321, und einige eigene Tests, zeigen das diese beiden Header-Zeilen nicht für die Zustellung verwendet werden und somit die Entfernung nicht schadet.

Vorgehen:

1.) Den EMail-Server Prüfen

Mit dem Postfix-Konfigurationsparameter header_checks kann ich die EMails am einen PCRE Filter weitergeben und verändern lassen.
Mit dem Postfix-Konfigurationsparameter smtpd_sasl_authenticated_header Erweitere ich den EMail-Header um einen Eintrag über den zur Authentifizierung am EMail-Server genutzten Benutzernamen.

postconf -n header_checks 2>/dev/null
postconf -n smtpd_sasl_authenticated_header 2>/dev/null

Ich bekomme für beide Konfigurationen eine leere Antwort, daher schaue ich nach den Defaultwerten.:

postconf -d header_checks 2>/dev/null
header_checks =
postconf -d smtpd_sasl_authenticated_header 2>/dev/null
smtpd_sasl_authenticated_header = no

2.) EMail-Server Konfiguration anpassen

Da ich vor habe den Filter über PCRE umzusetzen benötige ich das Debian Paket postfix-pcre, welches die Unterstützung dür die gewünschten Perl Regular Expressions für Postfix mitbringt.:

sudo apt install postfix-pcre
The following NEW packages will be installed:
postfix-pcre
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 320 kB of archives.
After this operation, 373 kB of additional disk space will be used.

Nach dem das Paket installiert ist lege ich auf dem Server eine Datei mit dem Namen “header_checks”, im Postfix Verzeichnis, an. In dieser Datei werden die Filterregeln hinterlegt.:
sudo vi /etc/postfix/header_checks

/^Received: .*\(Authenticated sender:.*/ IGNORE
/^Received: by server\.angststalt\.de .*from userid [0-9]+\)/ IGNORE
/^User-Agent:/ IGNORE

Im Anchluss verlange ich vom Postfix dem Benutzernamen, der zur Anmeldung am EMail-Server verwendet wurde in die Header einzufügen und die Mail Header über meinen Filter zu leiten.:

postconf -e smtpd_sasl_authenticated_header=yes
postconf -e header_checks=pcre:/etc/postfix/header_checks

Nach dem folgenden neustart von Postfix kann ich mir eine Testnachricht senden und die Header prüfen.

service postfix restart

Bei meinem Vergleich des neuen EMail-Headers mit dem EMail-Header einer älteren EMail, die ich mir vor der Einrichtung des Filters gesandt habe, fehlen die von mir zu begin beanstandeten Header Zeilen.

Kategorien
Linux Postfix

Postfix Konfiguration main.cf aufräumen

Leider wird die Postfix konfiguration /etc/postfix/main.cf häufig mit vielen Daten der Defaultkonfiguration “vermüllt” und wird damit unübersichtlich.

Vorüberlegung: Wir müssen die main.cf also irgendwie Filtern, eine Feste Reihenfolge zu erhalten wäre ein positiver Nebeneffekt da sich die Regeln so besser einpägen.

Mit dem Befehl postconf können wir die aktuell verwendete Postfix Konfiguration ausgeben lassen. In dieser Ausgabe sind alle Konfigurationsparameter enthalten, ob manuell gesetzt oder der Defaultwert, in dieser Ausgabe ist er enthalten.

Mit der Option “-d” kann man von postconf auch die Defaultkonfiguration verlangen. Das an den Beiden Ausgaben ist, das postconf die Konfiguration Optionen immer in der gleichen Reihenfolge Ausgibt und somit mittels diff die beiden Konfigurationen verglichen werden können.

Nach dem diff der beiden konfigurationen müssen alle Zeilen die sich verändert haben, diese Beginnen mit einem Größer als Zeichen “>” beibehalten werden und die beiden ersten Zeichen, Das Größer als Zeichen und das Leerzeichen, verworfen werden um eine vollständige und Funktionierende main.cf als Ausgabe zu erhalten.

OLD=$(mktemp); trap 'rm "$OLD"' 0;\
NEW=$(mktemp); trap 'rm "$NEW"' 0;\
/usr/sbin/postconf -d > "$OLD";\
/usr/sbin/postconf > "$NEW";\
diff "$OLD" "$NEW"|\
grep '^>'|\
awk '{print substr($0,3)}';\
rm "$OLD" "$NEW"

Die aus der Ausführung dieses Einzeilers entstandene main.cf Datei kann die alte Konfigurationsdatei bedenkenlos ersetzen.

Nachtrag:

Bei mir wurde der Hostname überraschend nicht mit in die Konfiguration übernommen, es muss nach dem Ersetzen der Konfiguration noch mittels postconf der Hostname in die Konfiguration eingetragen werden.:

postconf myhostname=DNS-Reverse/PRT Record

 

Kategorien
Linux Postfix

Postfix, maximale größe der EMails festlegen

In Postfix kann die maximale Größe von zu verarbeitenden EMails übder die Konfigurationsvariable “message_size_limit” festgelegt werden.

Postfix wird alle EMails ablehnen die größer als der festgelegte Wert von “message_size_limit” ist. Der Vorgabewert von message_size_limit ist 10240000 (nahezu 10 Megabyte).

In der Postfix Konfigurationsdatei wird dieses Limit, zumindest unter debian nicht aufgeführt. Es kann direkt in der Datei /etc/postfix/main.cf, oder mit postconf hinzugefügt werden.

Die aktuelle Einstellung von Postfix kann mit dem folgenden Befehl angezeigt werden:

postconf message_size_limit

Mit der Eingabe von “postconf”, ohne zusätzliche Parameter, wird die gesammte Postfix konfiguration ausgegeben werden. Durch den Zusatz des “message_size_limit” wird nur diese eine Option ausgegeben. Die ausgabe des obig angegebenen Befehl zeigt die folgende Zeile:

message_size_limit = 10240000

Um den zugewiesenen Wert zu Ändern kann mit der folgenden Eingabe ein abweichender Wert zugewiesen werden. Um herauszufinden kann mit dem folgenden Shellscript eine beliebige anzahl MB in Bytes, die Angabe in der Postconf erfolgt in Bytes, umgerechnet werden.

awk '{$1=$1*1024*1024;printf "%.0f\n",$1}'

Nach der Eingabe auf der Shell zum Beispiel 20 eingeben und Enter drücken, als Ausgabe erfolgt 20971520. (Das Script  im Anschluss mit Strg und C abbrechen) Diesen Wert weisen wir jetzt mit postconf dem message_size_limit zu:

postconf message_size_limit=20971520

Hiermit wird in die letzte Zeile der Datei /etc/postfix/main.cf die Zeichenfolge “message_size_limit=20971520” angefügt und alle eventuell zuvor in der Dastei vorkommenden Zuweisungen “message_size_limit=” entfernt.

Im Anschluss muss noch der Dienst Postfix die neue Konfiguration lesen. Dies erfolgt durch die eingabe von:

service postfix reload

Im Anschluss gilt die neue Option und entsprechend größere EMails können angenommen werden.

Kategorien
Forensik Linux Postfix security

Postfix Mail-Queue wichtige Befehle

Die gesamte Mail-Queue löschen:

postsuper -d ALL

Alle Mails der Queue anzeigen:

mailq | less

Die entsprechende queue_id merken/kopieren

postsuper -d ID

Alle Emails von oder zu einer Adresse löschen:

mailq | tail +2 | awk 'BEGIN { RS = "" } / user@loteks\.de$/ { print $1 } ' | tr -d '*!' | postsuper -d -

alle Mails auf “hold” setzen:

postsuper -h ALL

Eine einzelne Mails auf “hold” setzen:

 postsuper -h ID

Alle Mails im Status “hold” ausliefern:

postsuper -H ALL

Eine einzelne Mails ausliefern:

postsuper -H ID

Auslieferung erzwingen:

postqueue -f