Mail Gateway mit Postfix

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
Sawi
Beiträge: 7
Registriert: 05.11.2018 08:46:50

Mail Gateway mit Postfix

Beitrag von Sawi » 06.11.2018 08:22:28

Guten Morgen!

Ich richte gerade einen Mail Gateway mit Postfix zum Empfang von Bestellungen per Mail ein.

Auf dem MX-Record sollen nur diese Bestellungen per Mail angenommen werden. Ich hatte mir erst gedacht, auf die Empfängeradresse zu filtern. Da das aber info* - Adressen sind, kommt da auch viel anderer Müll an.

Da die Bestellmails ein mehr oder minder fixes Subject (R2-2011-Build10_Bestellung*) haben, kann ich darauf filtern und alle anderen Mails rejecten?

Hilfe wäre sehr willkommen!

Danke
Sawi

r4pt0r
Beiträge: 1237
Registriert: 30.04.2007 13:32:44
Lizenz eigener Beiträge: MIT Lizenz

Re: Mail Gateway mit Postfix

Beitrag von r4pt0r » 06.11.2018 09:48:58

Die RFC-Adressen müssen ebenfalls erreichbar sein (postmaster, abuse, ggf hostmaster und/oder webmaster).

I.d.R. nutzt man für solche Zwecke daher eine eigene Subdomain als Maildomain (e.g. orders.domain.tld); die RFC-Adressen müssen AFAIR nur für die Hauptdomain erreichbar sein, somit vereinfacht man sich das ganze und kann auch nicht-rfc-konforme Mailserver (=so ziemlich alle e-commerce Anwendungen mit eigenem MTA...) verwenden.

Da die Mails in einem fixen Format ankommen, gehe ich stark davon aus dass diese auch nur von einem/wenigen Hosts gesendet werden; ein geschlossener MTA der nur nach Login (oder notfalls per IP-Whitelist) Mails entgegen nimmt ist dann vll die sinnvollere Lösung.
Dieser Zustellweg kann dann bei Postfix z.B. auch am spamfilter vorbeilaufen, damit man sich die bayes-Datenbank nicht versaut (speziell spamassassin ist mit logauszügen oder strukturierten textdaten wie z.b. metricts/statistiken oft komplett überfordert...). Noch angenehmer ist ein eigener MX für diese subdomain; die Konfiguration kann dann erheblich schlanker ausfallen und einen spamfilter benötigt man ebenfalls nicht -> minimale Ressourcenanforderungen.

Sawi
Beiträge: 7
Registriert: 05.11.2018 08:46:50

Re: Mail Gateway mit Postfix

Beitrag von Sawi » 06.11.2018 10:54:35

Danke für die Antwort.

So leicht ist das leider nicht. Ich kann die Empfängeradresse leider nicht frei wählen, da sie im Digitalen Katalog mehr oder minder fest verdrahtet ist.
Unsere normalen Mails gehen an smtp1 und smtp2. Im Katalog ist smtp als MX-Record eingetragen, da wir mit dem Mailfirewalls einige Probleme mit dem Handling der Bestellungen hatten. Die Bestellungen kommen mehrheitlich von irgendwelchen (privaten) DSL-Anschlüssen und die filtert die Mailfirewall gerne mal raus, bevor ich im Mail Handling eingreifen kann. Deshalb der Umweg über einen eigenen MTA.

Damit kann ich aber auch keine Subdomain einsetzen, da sie weiterhin über unsere normalen Mailserver verarbeitet werden soll.

Das macht es leider nicht weniger komplex.

Sawi

r4pt0r
Beiträge: 1237
Registriert: 30.04.2007 13:32:44
Lizenz eigener Beiträge: MIT Lizenz

Re: Mail Gateway mit Postfix

Beitrag von r4pt0r » 06.11.2018 11:45:30

Ach du sch.. das klingt wieder typisch nach hirntoter proprietärer Software... Mein Beileid...

Dass Mails von dynamischen Adressen abgewiesen werden, sollte Standard sein und auch nicht ausgehebelt werden. Lass die beiden normalen MX (smtp1/2) auch weiterhin so filtern.

Aber wenn ich es richtig verstanden habe, nutzt ihr bereits einen eigenen MX (smtp.domain.tld) nur für diese Mails und die "öffentlichen" MX für die domain (=am DNS eingetragen) sind smtp1 + smtp2?

Der host 'smtp' sollte dann keinen MX Eintrag am DNS benötigen/erhalten (nur A/AAAA), somit auch nicht mit den beiden anderen interferieren; sprich er bekommt keine normalen Mails von externen MTAs für die Domain (da nicht als MX gelistet). Er ist nur den Clients als MX bekannt, die diesen Host fix eingetragen bekommen.

Dann würden einige einfache regexp-filter in postfix ausreichen um alles zu verwerfen was nicht von der Shopsoftware kommt - das kann der Betreff oder ein beliebiger, aber spezifischer X-Header und andere "einzigartige" Merkmale bzw kombinationen sein; notfalls auch ein gleichbleibender String im Nachrichtenteil (der sich garantiert doch irgendwann ändert; daher nur absolute Notlösung!).
Weitere Zustellung sollte dann direkt an den MDA (z.b. dovecot) erfolgen; nicht durch einen der "normalen" MX (smtp1/2), sonst müssen hier wieder Löcher aufgerissen werden.

Problematisch wird das ohne korrekte Authentifizierung durch die Clients aber immer bleiben - sobald jemand herausfindet, unter welchen Voraussetzungen Mails die Filterregeln passieren können, kann jeglicher Müll eingeschleust werden. Wenn die Software schon beim Mailversand so grausig aufgebaut ist, will ich nicht wissen welche Gremlins in der Mailverarbeitung noch lauern (RCE, SQLI etc pp...)
Daher müssen die Filter so eng wie möglich sein und idealerweise dringend ein update (oder Austausch) der Clientsoftware angeraten werden, damit korrekte Mailzustellung (=mit authentifizierung, MX-lookup und einfachem ändern der Empfängeradresse) möglich wird.
Selbst wenn nicht darauf Eingegangen wird, lege die Problematik trotzdem dar und gib deine Empfehlung ab (Schriftlich!!) - am besten mit Hinweis auf Bedenken/Risiken bezüglich Datenschutz/Datensicherheit (cc an Datenschutzbeauftragten). Wenn dann wirklich die Hütte deswegen brennt und Kundendaten verschwinden bist du zumindest auf der sicheren Seite. Den selben Käse habe ich hier auch mit einiger (unverschämt teurer...) Software schon durch... :roll:

Sawi
Beiträge: 7
Registriert: 05.11.2018 08:46:50

Re: Mail Gateway mit Postfix

Beitrag von Sawi » 06.11.2018 12:13:31

> Ach du sch.. das klingt wieder typisch nach hirntoter proprietärer Software... Mein Beileid...
Danke, Ist leider, wie es ist. :(

> Dass Mails von dynamischen Adressen abgewiesen werden, sollte Standard sein und auch nicht ausgehebelt werden. Lass die beiden normalen MX (smtp1/2)
> auch weiterhin so filtern.
Hatte ich mir auch so gedacht.

> Aber wenn ich es richtig verstanden habe, nutzt ihr bereits einen eigenen MX (smtp.domain.tld) nur für diese Mails und die "öffentlichen" MX für die domain
> (=am DNS eingetragen) sind smtp1 + smtp2?
So ist es.

> Der host 'smtp' sollte dann keinen MX Eintrag am DNS benötigen/erhalten (nur A/AAAA), somit auch nicht mit den beiden anderen interferieren; sprich er
> bekommt keine normalen Mails von externen MTAs für die Domain (da nicht als MX gelistet). Er ist nur den Clients als MX bekannt, die diesen Host fix
> eingetragen bekommen.
Genau so ist auch das.

> Dann würden einige einfache regexp-filter in postfix ausreichen um alles zu verwerfen was nicht von der Shopsoftware kommt - das kann der Betreff
> oder ein beliebiger, aber spezifischer X-Header und andere "einzigartige" Merkmale bzw kombinationen sein; notfalls auch ein gleichbleibender
> String im Nachrichtenteil (der sich garantiert doch irgendwann ändert; daher nur absolute Notlösung!).
Genau das ist das, was ich brauche! :)

> Weitere Zustellung sollte dann direkt an den MDA (z.b. dovecot) erfolgen; nicht durch einen der "normalen" MX (smtp1/2), sonst müssen hier
> wieder Löcher aufgerissen werden.
Hab ich so vor

r4pt0r
Beiträge: 1237
Registriert: 30.04.2007 13:32:44
Lizenz eigener Beiträge: MIT Lizenz

Re: Mail Gateway mit Postfix

Beitrag von r4pt0r » 06.11.2018 13:25:39

Sawi hat geschrieben: ↑ zum Beitrag ↑
06.11.2018 12:13:31

> Der host 'smtp' sollte dann keinen MX Eintrag am DNS benötigen/erhalten (nur A/AAAA), somit auch nicht mit den beiden anderen interferieren; sprich er
> bekommt keine normalen Mails von externen MTAs für die Domain (da nicht als MX gelistet). Er ist nur den Clients als MX bekannt, die diesen Host fix
> eingetragen bekommen.
Genau so ist auch das.
Gut, denn im ersten Post hattest du noch von einem MX-Record für diesen host geschrieben - falls dieser doch existiert muss der entfernt werden, da der host kein authorativer MX für diese domain sein soll...
> Dann würden einige einfache regexp-filter in postfix ausreichen um alles zu verwerfen was nicht von der Shopsoftware kommt - das kann der Betreff
> oder ein beliebiger, aber spezifischer X-Header und andere "einzigartige" Merkmale bzw kombinationen sein; notfalls auch ein gleichbleibender
> String im Nachrichtenteil (der sich garantiert doch irgendwann ändert; daher nur absolute Notlösung!).
Genau das ist das, was ich brauche! :)
http://www.postfix.org/header_checks.5.html

Ich würde mich auf header_checks konzentrieren; diese sind "billiger" im Sinne von benötigten Ressourcen als body_checks. Zudem werden Header immer "am Stück" geprüft, body_checks erfolgen Zeilenweise; somit kann man nur schwer nach längeren Strings suchen wenn Zeilen vom Absender/Client automatisch umgebrochen werden oder der Client noch immer mit irgendwelchen Codepages statt UTF-8 codiert versendet und Sonderzeichen enthalten sind.

Definiere ein paar sehr enge PASS regeln (mit einer kurzen filterbeschreibung als 'optional text' der in die logs geschrieben wird; das macht debugging einfacher!) und am Ende ein allgemeines REJECT, das alles andere abfängt (/.*/ REJECT).
DISCARD würde ich zum testen noch nicht verwenden, denn dann bekommt der Absender keine Fehlermeldung und kann sich nicht bei euch melden! Die logs am Anfang etwas genauer auf REJECTs zu überwachen ist auch ratsam.

Sawi
Beiträge: 7
Registriert: 05.11.2018 08:46:50

Re: Mail Gateway mit Postfix

Beitrag von Sawi » 06.11.2018 14:47:13

r4pt0r hat geschrieben: ↑ zum Beitrag ↑
06.11.2018 13:25:39
Sawi hat geschrieben: ↑ zum Beitrag ↑
06.11.2018 12:13:31

> Dann würden einige einfache regexp-filter in postfix ausreichen um alles zu verwerfen was nicht von der Shopsoftware kommt - das kann der Betreff
> oder ein beliebiger, aber spezifischer X-Header und andere "einzigartige" Merkmale bzw kombinationen sein; notfalls auch ein gleichbleibender
> String im Nachrichtenteil (der sich garantiert doch irgendwann ändert; daher nur absolute Notlösung!).
Genau das ist das, was ich brauche! :)
http://www.postfix.org/header_checks.5.html

Ich würde mich auf header_checks konzentrieren; diese sind "billiger" im Sinne von benötigten Ressourcen als body_checks. Zudem werden Header immer "am Stück" geprüft, body_checks erfolgen Zeilenweise; somit kann man nur schwer nach längeren Strings suchen wenn Zeilen vom Absender/Client automatisch umgebrochen werden oder der Client noch immer mit irgendwelchen Codepages statt UTF-8 codiert versendet und Sonderzeichen enthalten sind.

Definiere ein paar sehr enge PASS regeln (mit einer kurzen filterbeschreibung als 'optional text' der in die logs geschrieben wird; das macht debugging einfacher!) und am Ende ein allgemeines REJECT, das alles andere abfängt (/.*/ REJECT).
DISCARD würde ich zum testen noch nicht verwenden, denn dann bekommt der Absender keine Fehlermeldung und kann sich nicht bei euch melden! Die logs am Anfang etwas genauer auf REJECTs zu überwachen ist auch ratsam.
Würde dann so etwas in der /etc/postfix/header_checks funktionieren?

/^Subject:.^R*-Build*_Bestellung/ PASS
/^Subject:.*/ REJECT

Muss die auch mit postmap übersetzt werden?

r4pt0r
Beiträge: 1237
Registriert: 30.04.2007 13:32:44
Lizenz eigener Beiträge: MIT Lizenz

Re: Mail Gateway mit Postfix

Beitrag von r4pt0r » 06.11.2018 15:42:27

Sawi hat geschrieben: ↑ zum Beitrag ↑
06.11.2018 14:47:13
Würde dann so etwas in der /etc/postfix/header_checks funktionieren?

/^Subject:.^R*-Build*_Bestellung/ PASS
/^Subject:.*/ REJECT

Muss die auch mit postmap übersetzt werden?
pcre und regexp lookup keys müssen AFAIK nicht per postmap übersetzt werden (sind sie hier zumindest auf keinem mailserver...), das gilt nur für 'key: value' lookups (dbm, hash)

Sawi
Beiträge: 7
Registriert: 05.11.2018 08:46:50

Re: Mail Gateway mit Postfix

Beitrag von Sawi » 06.11.2018 15:54:58

r4pt0r hat geschrieben: ↑ zum Beitrag ↑
06.11.2018 15:42:27
Sawi hat geschrieben: ↑ zum Beitrag ↑
06.11.2018 14:47:13
Würde dann so etwas in der /etc/postfix/header_checks funktionieren?

/^Subject:.^R*-Build*_Bestellung/ PASS
/^Subject:.*/ REJECT

Muss die auch mit postmap übersetzt werden?
pcre und regexp lookup keys müssen AFAIK nicht per postmap übersetzt werden (sind sie hier zumindest auf keinem mailserver...), das gilt nur für 'key: value' lookups (dbm, hash)
Danke.
Und die header_checks? Kann das so funktionieren?
Oder besser mit /^Subject:.^R2-2011-Build10_Bestellung"/ PASS"

Und "/^Subject:.*/ REJECT" dropt dann alles Andere?

r4pt0r
Beiträge: 1237
Registriert: 30.04.2007 13:32:44
Lizenz eigener Beiträge: MIT Lizenz

Re: Mail Gateway mit Postfix

Beitrag von r4pt0r » 06.11.2018 16:10:50

Ich weiß nicht wie der Subject der mails aufgebaut ist - wie gesagt: am besten so eng wie möglich filtern. Aber das zweite '^' in deinem regexp kann nicht funktionieren; das soll vermutlich ein '*' sein.

Für REJECT würde ich einfach nur "/.*/" verwenden, das matcht dann bereits bei der ersten Zeile und vergeudet nicht noch weitere Zeit.

Sawi
Beiträge: 7
Registriert: 05.11.2018 08:46:50

Re: Mail Gateway mit Postfix

Beitrag von Sawi » 07.11.2018 12:35:58

Sawi hat geschrieben: ↑ zum Beitrag ↑
06.11.2018 15:54:58
r4pt0r hat geschrieben: ↑ zum Beitrag ↑
06.11.2018 15:42:27
Sawi hat geschrieben: ↑ zum Beitrag ↑
06.11.2018 14:47:13
Würde dann so etwas in der /etc/postfix/header_checks funktionieren?

/^Subject:.^R*-Build*_Bestellung/ PASS
/^Subject:.*/ REJECT

Muss die auch mit postmap übersetzt werden?
pcre und regexp lookup keys müssen AFAIK nicht per postmap übersetzt werden (sind sie hier zumindest auf keinem mailserver...), das gilt nur für 'key: value' lookups (dbm, hash)
Danke.
Und die header_checks? Kann das so funktionieren?
Oder besser mit /^Subject:.^R2-2011-Build10_Bestellung"/ PASS"

Und "/^Subject:.*/ REJECT" dropt dann alles Andere?
OK, die /etc/postfix/header_checks sieht jetzt so aus:
/^Subject: R2-2011-Build10_Bestellung/ PASS
/*/ DISCARD


Die Headerzeilen sehen so aus:
From: "Hans Test" <testuser@test.weg>
Subject: R2-2011-Build10_Bestellung_Neue Bestellung 1


Deshalb habe ich da jetzt ein Leerzeichen zwischen Subject: und R2... drin.

in der main.cf ist das so eingetragen:
header_checks = regexp:/etc/postfix/header_checks

postconf -n meckert nicht, das Alles sieht jetzt gut aus.

Leider hab ich jetzt plötzlich ein ganz anderes Problem:

Recipient address rejected: User unknown in virtual alias table


Und wenn ich die Adresse in die virtualmap eintrage, wird die Mailadresse natürlich in eine lokale Adresse umgeschrieben.

Wie kann ich denn jetzt dem Postfix beibiegen, dass er alle Mails an unsere Adressen weiterleitet?

Sawi
Beiträge: 7
Registriert: 05.11.2018 08:46:50

Re: Mail Gateway mit Postfix

Beitrag von Sawi » 07.11.2018 13:16:46

Ahh, habs gerade gefunden, was ich wohl versehentlich verstellt habe!

Ich teste jetzt erstmal noch ein bisschen und bedanke mich vorerst!

Merci!
Sawi

Antworten