Kopano SMTP offen für alle bei internen Mails

kopano
german
postfix

#1

Hallo Zusammen,
beim Testen für meinen anderen Post ist mir aufgefallen, dass Postfix Emails an interne Email Adressen ohne Authentifizierung annimmt. Soweit alles okay.

Ich betreibe meinen UCS jedoch direkt am Internet und habe bemerkt, dass praktisch jedermann auf der Welt in der Lage ist, Emails von interne an interne Adressen zu schicken, z.B. mit swaks:

swaks --from=sender@internal.domain --to=empfänger@internal.domain --server=internal.domain

Solange die Empfängeradresse gültig ist, wird die Email ohne weiteres verschickt.

Kann ich das irgendwie unterbinden? Sprich auch dort eine Authentifizierung (die zwar auch nicht funktioniert, siehe Thread oben) anfordern? Sonst wäre jeder Mensch in der Lage Email in meinem Namen an andere Accounts auf meinem Server zu senden :open_mouth:

Liebe Grüße
Felix


#2

Hallo @Emilfelix,

das ist in der Tat eine interessante Beobachtung. (Btw. Kopano nutzt lediglich den Default Mailstack in Univention und bringt bis auf einem Transport keine eigene SMTP Konfiguration mit).

Ich habe Mal ein paar andere Server angetestet und die meisten scheinen eine solche Kombination an Sender und Empfänger tatsächlich nicht zu überprüfen, lediglich bei der Verwendung einem Policy Daemons habe ich auch mal ein “rejected” also Meldung zurück erhalten.

Hier müsste nochmal geprüft werden wie hier eine Integration in Univention aussehen könnte.


#3

Moin,

Der Absender ist technisch gesehen ein Freitextfeld. Zur Feststellung der Identitaet des Absenders sind die Sender:/From: Header nicht geeignet (wie auch bei der Briefpost). Dafuer gibt es Verschluesselung und Signaturen.


#4

Ergänzend: um sicherzustellen, dass nur bestimmte Server Mails im Namen meiner eigenen Domäne versenden dürfen, gibt es das Sender Policy Framework (SPF). Damit kann man selber über DNS-Einträge in der eigenen Domäne allen Mailservern signalisieren, dass nur Mailserver XYZ Mails mit meiner Domäne in Absendeadressen verschicken darf.


#5

Hallo @Emilfelix ,

leider ist das korrekt. Ich empfehle folgenden Check hinzu zufügen:

ucr set mail/postfix/smtpd/restrictions/recipient/77='check_sender_access hash:/etc/postfix/check_custom_sender_access'

Und dann musst du noch die Datei /etc/postfix/check_custom_sender_access mit folgendem Inhalt (an deine Domäne(n) angepasst) anlegen:

example.org REJECT *** Wrong Inbound Sender ***
.example.org REJECT *** Wrong Inbound Sender ***

und noch ein fixes:

postmap /etc/postfix/check_custom_sender_access && postfix reload

Zur Erklärung:
Hiermit verbietest du das deine Domäne (und alle Subdomänen dieser) als Absender verwendet werden darf, wenn der ankommende Client nicht aus deinem Netz kommt (das ist die Regel permit_mynetwork) oder sich der Client an deinem Server authentifiziert hat (permit_sasl_authenticated). Das gilt allerdings nur für die Default-UCS-Settings. Wenn du weitere Einstellungen der mail/postfix/smtpd/restrictions/recipient/.* getätigt hast, sieht das wieder anders aus.

Viele Grüße,
Tobi


#6

Moin,

die hier von @birkefeld beschriebene Lösung bezieht sich im Moment nur auf den Envelope-Absender. D.h. wird eine Mail mit Envelope-Absender noreply@univention.de beim MX für example.org eingeliefert, wird diese nach obiger Lösung angenommen. Im Mail-Header kann als Absender aber trotzdem eine beliebige Adresse stehen. So z.B. auch der falsche Absender chef1@example.org, was für die Empfänger der Mail dann häufig nicht erkennbar ist.

Die Filterung nach Mail-Header zu aktivieren, sollte IMHO genau abgewogen werden:

im Internet ist häufiger der Fall anzutreffen, dass ein Dienst einem eine Mail zusendet, die die eigene Mailadresse als Absender im Mail-Header trägt. Das ist z.B. häufig beim Abschicken von Webformularen der Fall, wo dem ausfüllenden Benutzer nochmal eine Kopie seiner Formulardaten zugeschickt wird. Der Envelope-Absender ist in diesen Fällen i.d.R. von einer externen Domain (aber auch nicht immer).

Auch bei mehreren UCS-Mailservern muss man an dieser Stelle aufpassen. In der Defaulteinstellung nimmt jeder UCS-Mailserver Mails für alle UCS-Benutzer an und prüft anschließend, ob diese Mails ggf. an einen anderen UCS-Mailserver weitergeleitet werden müssen, weil der Benutzer dort sein IMAP-Postfach vorhält. Dies wird von den UCS-Mailservern über Port 25 erledigt. D.h. es könnten dann auch Mail von MX1 an MX2 geschickt werden, die user1@example.org als Envelope-/Mail-Header-Absender und user2@example.org als Envelope-/Mail-Header-Empfänger enthalten und von obiger Lösung fälschlicherweise abgewiesen werden.

Viele Grüße,

Sönke


#7

Hallo zusammen,
sorry für die späte Antwort, hatte viel um die Ohren.

Ich habe die Lösung von @birkefeld nun umgesetzt, das reicht fürs erste. Ich kann die Anmerkungen von @Schwardt aber durchaus verstehen.

Vielen Dank für Eure Hilfe!