Mailserverkonzept mit DMZ und LAN

Hey :slight_smile:
zur Zeit Arbeite ich an einem Mailserverkonzept unter Verwendung von UCS Modulen.

Die bisherige Konfiguration entspricht dem folgendem (ohne UCS):
Der SMTP (Postfix) in der DMZ versendet Mails und empfängt diese von externen Mailservern. Zudem leitet der SMTP die außen empfangenen Mails an den IMAP-/POP3-Server (Dovecot) im Server-LAN weiter, des Weiterem authentifiziert der SMTP die Benutzer via SASL am IMAP-/POP3-Server. Die Benutzer- & Domaindaten liegen in einer MySQL Datenbank welche über ein selbst geschriebenes Webinterface administriert wird. Zu guter Letzt wird in der DMZ ein IMAP-/POP3-Relay betrieben, damit die Mails auch außerhalb des LANs zur Verfügung stehen. Ein Webmailer ist ebenfalls auf dem IMAP-/POP3-Relayserver implementiert.

Nun soll eine neue Lösung mit UCS und LDAP geschaffen werden, wofür ungfähr folgendes Konzept erstellt wurde.
UCS Server mit Mailserver-Application im Server-LAN welcher den eigentlichen Mailserver darstellt. Dazu ein Postfix (auf UCS-Basis?) welcher als SMTP-Relay dient, um Mails von extern zu empfangen zu können. Versendete Mails sollen ebenfalls über das SMTP-Relay versandt werden (auch obwohl der Mailserver im Server-LAN es direkt könnte). Ebenfalls in der DMZ wird ein Server mit Horde Groupware eingerichtet, welcher den Webmailer ersetzen soll.
Mail Archiv, sowie SPAM- & Virenfilter lasse ich erstmal außen vor.

Meine erste Frage, da laut Beschreibung das Horde Groupware System mit den Clientgeräten (Evolution, Outlook, Mail, usw.) kommuniezieren kann, wäre der Einsatz eines IMAP-/POP3-Relays überflüssig oder wird weiter ein Relayserver benötigt?

Ist eine SMTP-Relaylösung unter UCS bereits verfügbar oder muss oder ein (sauberer) Memberserver erstellt werden auf welchen Postfix manuel konfiguriert wird?

Und das Wichtigste, sieht UCS überhaupt eine solche aufgetrennte Konfiguration vor bzw. ist ein ein bestimmtes vorgehen gefordert?

Leider habe ich bisher keine entsprechenden Ansätze finden können und hoffe, dass bereits jemand so eine bzw. eine ähnliche Konfiguration implementiert hat.

Mit freundlichen Grüßen

Hallo @Crystallic,
ich baue gerade bei einem Kunden ein sehr ähnliches Setup mit UCS 4.3 auf:

  • Interner Mail Server (UCS Mail Server App) mit Horde
  • SMTP Relay in der DMZ

Der Interne Mail Server läuft inzwischen, verwendet aber noch den Mail Server unseres Web-Hosters als Relay. Der nächste Schritt ist das SMTP-Relay.
Das SMTP Relay in der DMZ würde ich aus Sicherheitsgründen immer dazwischen stellen.

Keine direkten Verbindungen von außen durch die DMZ nach innen!!!

Befinden sich die Clientgeräte im LAN oder Internet?

  • Wenn nur LAN: Ich würde Horde auch ins LAN stellen.
  • Wenn nur Internet/DMZ: ok
  • Wenn gemischt: Hier ist es eine Abwägung, ob es das Risiko wert ist. Wäre es vertretbar einen Horde Intern und einen Extern zu betreiben? Sind dies unterschiedliche Benutzer-Gruppen oder die gleichen?

Mich beschäftigt noch die folgende Frage. Aus Sicherheitsgründen bevorzuge ich Verbindungen über die Firewall zwischen LAN und DMZ, die von innen nach außen aufgebaut werden. Daher würde ich es bevorzugen, wenn der interne Mail-Server die Mails regemäßig vom externen abruft, statt dass der externe sie via SMTP nach innen weiterleitet.
Gleichzeitig möchte ich, dass der externe Mail-Server nichts über die User weiß. Es soll erst einmal alles für unsere Domain annehmen. Das sortieren und ggf. ablehnen soll der Interne machen.
Ist das praktikabel?

Viele Grüße,
Jörn

Hey :slight_smile:

Sicherheit steht dei dem Projekt an erste Stelle, weshalb überhaupt so ein (aufwändig) aufgetrenntes System implementiert wird.

Clients sollen das Interface von innen und außen erreichen können, die meisten Clients werden über das Internet eine Verbindung zum System aufbauen. Ein VPN extra für Mailing sprengt jedoch etwas den Rahmen. Daher die Planung den Horde in die DMZ zu stecken.
Welchen Sicherheitsvorteil soll es haben zwei Horde einzusetzen? Wenn nun einer im LAN und einer in der DMZ stehen würde, ist dies damit das gleiche Sicherheitsrisiko gegeben, wie nur ein Horde in der DMZ darstellen würde.

Dies unterstütze ich so, jedoch

wäre damit die Gefahr eines Openrelays oder anderer Spammingmethoden gegeben.

Deswegen habe ich nach den Benutzergruppen gefragt. Falls das unterschiedliche sind könnte man die Daten noch getrennt halten. Wenn sich die Nutzergruppen intern und extern stark überlappen bringt es keinen Vorteil.

Vielleicht hilft hier ein Reverse-Proxy weiter. Der nimmt die HTTPS Anfragen in der DMZ entgegen und holt sich die eigentliche Seite dann vom internen Server. Hier könnte über 2-Way-SSL die Sicherheit verbessert werden, so dass nicht jeder beliebige Client sich verbinden kann.
Es sei denn, dass genau das der Anwendungsfall ist.

Openrelay nicht, da ich den Mail-Server entsprechend zu konfigurieren würde nur für unsere Domain anzunehmen und Mails für den Versand von unserer Domain ausschließlich vom internen Server angenommen würden.

Spam an uns zustellen würde der Interne Mail-Server über Spam-Filter unterbinden.

Ich möchte vermeiden, das gesamte LDAP auf den Server in der DMZ zu speigeln, nur damit der Mail Server die User Mail-Adressen kennt. Wenn es da einen datensparsameren Weg gibt gerne.

Hallo,

ab wann kann man von einer DMZ sprechen? Bereits wenn zum Beispiel der Master Server nur intern erreichbar ist und ein Member mit Maildienst und Sonstigem was auch öffentlich erreichbar sein soll, öffentlich ist? Wie kann am besten der Reverse Proxy umgesezt werden, sodass auch ActiveSync, SMTP, HTTP/S und IMAP etc mit übertragen werden?

So ist es, die internen Clients werden zu sich 90% auch von extern einloggen, Mobil Devices (Notebooks, Smartphones, usw). Die externen Clients werden größteteils auch nur von außen eine Verbindung herstellen, jedoch mit nicht immer vorhersehbaren Endgeräten.

Von meiner Seite aus möchte ich das SMTP-Relay nicht offen lassen. In anderen Anwendungsfällen ist es evt. sinnvoll ein solche Konfiguration einzusetzen, jedoch ist hier eine Authentifizierung pflicht, allerdings werde ich diese über eine eigene Authentifizierungsmrthode prüfen lassen. Entweder über die interne Benutzerverwaltung oder mit Hilfe von MySQL bin mir da nocht nicht ganz sicher, aber denke es wird die letztere Methode werden.

Hier sprechen wir perönlichen Geschmächern, welche Methode denn nun die bessere ist…

Zurück zu meinen ursprünglichen Fragen:
-Nutze ich besser ein autarkes Debian als SMTP-Relay oder sollte auf Grund der Verwaltbarkeit durch die Domäne ein UCS Member eingesetzt werden?
-Benötige ich neben dem Horde Groupware noch ein IMAP-/POP3-Relay für externe Verbindungen oder kann Horrde diese Aufgabe übernehmen? (laut Beschreinung vermiutge ich ja…)

Folgendes Setup verstehe ich unter DMZ:

Internet <-Router-> DMZ <-Router/Firewall-> Internes LAN

Das nennt man einen Exposed Bastion Host

Huhu,

Ich rate bei solchen Szenarien dazu, für die reinen Proxy-/Relayserver kein UCS sondern ein einfaches Debian oder Ubuntu zu verwenden. Hat mehrere Gründe:

Sicherheit. Eine DMZ betreibt man, um Angriffsfläche zu minimieren. Ein UCS-System ist aufgrund der vielen Komponenten, die in ihm laufen, eine ganze Stufe komplexer, als ein reines Debian- oder Ubuntu-System. Hinzu kommt, dass ein UCS-System auf verschiedenen Wegen (ssh, Directory Listener, falls Samba installiert ist dann auch damit…) mit seinem DC Master kommunizieren muss. Sprich für ein UCS-System in der DMZ müssen deutlich mehr Regeln für die Firewall erstellt werden, die zwischen der DMZ und dem Intranet vermittelt.

Komplexität ist der natürliche Feind von Sicherheit.

Die Komplexität kann es wert sein, wenn es klare Vorteile gibt, die diese rechtfertigen. Bei UCS-Systemen ist der primäre Vorteil, dass man die zentrale Benutzerverwaltung hat und dass man einfach Apps auf den Systemen installieren kann. Beides ist für ein Reverse-Proxy- & SMTP-Relaysystem aber komplett irrelevant. Benötigt man die Benutzerinformationen, so kann man einfach direkte LDAP-Suche gegen den DC Master implementieren, was firewalltechnisch viel einfacher zu handlen ist. Und für SMTP-Relay benötigt man diese Informationen noch nicht einmal (mehr dazu unten).

Weiterhin: Konfigurationskomplexität. Bei einem Reverse-Proxy-/SMTP-Relay-System möchte man ausschließlich diese Funktionalität haben, nicht aber z.B. die Univention Management Console. Man muss also bei einem UCS in der DMZ erst mal gegen die Standardkonfiguration ankämpfen, um mitgelieferte Sachen auszuschalten. Weiterhin muss man dagegen ankämpfen, dass UCS die Konfigurationen der Dienste über Templates managet. Will man bei Postfix aber plötzlich Sachen anpassen, die die Templates so nicht vorsehen, so muss man die Templates selber anpassen, was man wiederum bei Updates beachten muss.

Also noch mehr Komplexität, die man sich mit einem reinen Debian/Ubuntu erspart.

Trivial. Man muss nur Postfix bekannt geben, welche Domänen er weiterleiten soll (über Parameter relay_domains), wohin er diese schicken soll (über einen Eintrag in einer transport_maps), und dass er unbekannte Empfänger ablehnt (siehe Address Verification, Option reject_unverified_recipient für Parameter smtpd_recipient_restrictions).

Was Postfix dann macht, ist:

  1. Einliefernder Client meldet sich, sagt, von wem und an wen die Mail gehen soll.
  2. Postfix hält die Verbindung und baut im Hintergrund eine Verbindung zum internen Mailserver auf.
  3. Postfix sagt dem internen Mailserver das, was er in Schritt 1 erfahren hat.
  4. Interner Mailserver sagt, ob er den Empfänger akzeptiert oder nicht.
  5. Postfix bedankt sich, baut die Verbindung zum internen Mailserver ab.
  6. Anhand des Resultats aus 4. nimmt Postfix die Mail vom externen Client an oder lehnt sie ab.

Postfix in der DMZ braucht nicht mal Zugriff aufs LDAP.

Man kann als Letztes noch dafür sorgen, dass das DMZ-Postfix Mails aus dem LAN ebenfalls akzeptiert und z.B. nach extern weiterleitet. Das geht trivial über den Parameter mynetworks.

Bitte nicht. Das bringt kein Mehr an Sicherheit und statt dessen einen Haufen unschöner Mailprobleme.

Variante 1: man nimmt ein Catch-All-Postfach, das man per POP3 abholt. Hier ist ein Problem, dass BCCs nicht als reguläre Mail-Header auftauchen, und der abholende Client (fetchmail) daher diese Information des ursprünglichen Empfängers nicht mehr zur Verfügung hat. Viele Mail-Provider schreiben daher glücklicherweise einen zusätzlichen Header wie z.B. X-Orignal-To oder X-Envelope-To mit in die Mail, der den ursprünglichen Empfänger enthält. Man kann dann fetchmail dazu konfigurieren, diesen Header zu nutzen, aber das ist in der initialen Einrichtung halt alles andere als trivial und eine häufige Quelle für Mailverlust oder Mailverdoppelung oder ungewollten Bounces, bis man es ordentlich hinbekommen hat.

Problem Nummer 2 sind unbekannte Empfänger. Hat man ein Catch-All-Postfach, so wird providerseitig nicht überprüft, ob es den Empfänger in der Domäne wirklich gibt. fetchmail prüft das auch nicht, sondern leitet die Mail nur an den lokalen Postfix weiter. Der merkt erst: oh, den Empfänger gibt’s nicht, also bounce ich die Mail. Und schon hat man ein anderes Problem: man versendet plötzlich Bounces an die vermeintlichen Absender. Vermeintlich deshalb, weil Absenderadressen ja beliebig gefälscht sein können. Und genau diese Technik (gefälschter Absender, bewusst nicht existierender Empfänger, und Zielmailserver schickt dann eine Bounce an den gefälschten Absender) wird oftmals von Spammern benutzt (heißt »backscatter«), was wiederum die Gefahr erhöht, dass der eigene Mailserver auf Spam-Blacklisten landet.

Kurz: bei Catch-All-Postfächern wird die Situation »Empfänger existiert nicht« plötzlich zu meinem Problem, und nicht zum Problem des Absenders.

Möchte man providerseitig beides nun umgehen, so kann man auf ein Catch-All-Postfach verzichten und statt dessen für jeden Empfänger ein eigenes Postfach einrichten, dazu auch für jedes Postfach einen Eintrag in der fetchmail-Konfiguration vornehmen, und dann sieht man seine Benutzerliste mit 40 Leuten und geht erst mal einen trinken. Auch keine Lösung.

Letzter offensichtlicher Nachteil von Abholung vs. direkter Zustellung: Verzögerung. Ja, Mail ist ein asynchrones Medium, aber durch die Intervalle, in denen Mails abgeholt werden, kommt noch mal mehr Verzögerung hinzu. Der Kunde ist gerade am Telefon und sagt »ich schicke Ihnen das gerade rüber«, und Sie sagen dann… »ja cool, wir warten jetzt zehn Minuten, bis unsere Mails wieder abgeholt wurden«?

Sag »Nein!« zu Abholung per POP3/IMAP.

Das ist das Szenario, das ich oben beschrieben habe; der reguläre Callout-Verifikations-Mechanismus von Postfix.

All das ist kein offenes Relay. Selbst in der Standardkonfiguration ist Postfix kein offenes Relay. Man muss Postfix schon explizit über so etwas wie permit in smtpd_…restrictions dazu konfigurieren, ein offenes Relay zu sein.

Und wenn man während der Implementation Zweifel hat, dann einfach mit dem Open Relay Test von MXToolBox prüfen.

Gruß
mosu

2 Likes

@Moritz_Bunkus
Danke für deine ausführliche Erklärung. Könntest du auch eine Empfehlung abgeben wie ein Setup bestenfalls auszusehen hat?

Ich würde jetzt ein Debian 9 mit Postfix als SMTP-Relay in DMZ und ein UCS Mailserver im Server-LAN konfigurieren.
Erste Frage, soll Postfix normal via LMTP an den UCS Mailserver zustellen?
Zweite Frage, soll den Postfix die Nutzer einzeln via LDAP authenfizieren oder nur den UCS Mailserver als sendeberechtigt eintragen und diesen lokal authentifizieren?

Damit sollte das Mailing für Clients innerhalb des lokalen Netzwerks voll funktionieren, jeztzt fehlt jedoch noch die Implementation des Horde Groupware.
Sollte dieser denn in der DMZ stehen? Dann wäre ja trotzdem ein vollwertiges UCS system in der Domäne.
Wenn der Horde Groupware Server im Server-LAN plaziert wird, fehlt jedoch die Anbindung von extern.

Mit freundlichen Grüßen
Crystallic

Huhu,

LMTP ist nur für lokalen Transport da, also von Postfix zu z.B. Kopano auf dem selben Server. Zwischen zwei Servern wird weiterhin SMTP benutzt.

Authentifizierung von Benutzern am Mailserver in der DMZ wird nur dann benötigt, wenn es möglich sein soll, dass Benutzer von extern aus (z.B. wenn sie gerade im Hotel sitzen) Mails über den Firmenmailserver verschicken können sollen. Dann muss dem Postfix in der DMZ SASL-Authentifizierung beigebracht kriegen. Diese sollte dann sinnvollerweise über den saslauthd laufen, und dieser wiederum sollte gegen das LDAP des DC Masters authentifizieren.

Wird das nicht benötigt, so genügt es, im DMZ-Mailserver den internen Mailserver als sendeberechtigt einzutragen (die bereits erwähnten mynetworks). Dann müssen alle internen Clients den internen Mailserver als SMTP-Server eingetragen haben und nicht direkt den DMZ-Mailserver.

Eine echte Authentifizierung des internen Mailservers am DMZ-Mailserver (also Anmeldung mit Benutzernamen & Passwort) kann man zwar implementieren, halte ich aber für völlig überflüssig. Mir fällt kein Szenario ein, in dem das einen echten Mehrgewinn an Sicherheit bieten würde.

HTTP(S)-Reverse-Proxy in der DMZ, entweder mit Apache oder nginx. Das Webinterface direkt in der DMZ aufzusetzen und nur IMAP in Richtung LAN durchzulassen, ist auch eine Möglichkeit, erfordert halt mehr Arbeit und bringt ein fragwürdiges Mehr als Sicherheit.

Gruß
mosu

1 Like

@Moritz_Bunkus

Danke für die schnelle Antwort :slight_smile: werde mich jetzt erstmal hinsetzen und die Informationen in Ruhe verarbeiten und das Konzept demantsprechend anpassen.
Melde mich anschließend wieder

Danke und Grüße

Mastodon