Postfix-Relay, Multi-Domain, Sicherheit und im Grunde alles

501
engelant

Ich möchte einen Relay-Server mit einer statischen IP-Adresse im Web einrichten, der E-Mails für mehrere Domänen annehmen und auch E-Mails für diese Domänen versenden soll. Leider sind meine Erfahrungen mit Postfix weniger als begrenzt, daher habe ich einige allgemeine Fragen zur Architektur.

Da ich keine Anleitung zum Einrichten eines E-Mail-Servers finden konnte, fügte ich mehr als zufrieden hinzu, Mechanismen oder Konfigurationsdetails hinzuzufügen, die auf Empfehlungen basieren (BSI, NIST, M3aawg usw.). ) und verknüpfen sie als Referenz.

Was ich mir vorstelle

Die Relay-Hosts werden angerufen ( Relay-Host-Liste )

  • a.mx.my-company.com
  • b.mx.my-company.com

Sie erhalten jeweils ein SSL-Zertifikat über Let's encrypt, das für ihren jeweiligen Hostnamen für STARTTLS an Port 25 ausgegeben wird.

Außerdem habe ich eine Liste von Domänen, für die der Server Mails annehmen soll ( Liste der akzeptierten Domänen ).

  • onedomain.com
  • onedomain.net
  • otherdomain.com

Es gibt eine weitere Liste von Absenderhosts, die eine Verbindung zu den Relays herstellen, um E-Mails zu senden, und von den Relays eine Verbindung herstellen, um E-Mails zu erhalten ( Absenderhostliste ).

  • a.mail.intern.onedomain.com
  • b.mail.intern.onedomain.com
  • a.mail.intern.otherdomain.com
  • mail.holdingcompany.com

Es sind einige Benutzer (hostname_sender + "_up") definiert, die Rechte zum Senden des Namens der Domänen erhalten sollen ( akzeptierte Domänen-Relay-Benutzer ).

  • Benutzer: a.mail.intern.onedomain.com_up ; Zuschuss: onedomain.com, onedomain.net
  • Benutzer: b.mail.intern.onedomain.com_up ; Zuschuss: onedomain.com, onedomain.net
  • Benutzer: a.mail.intern.otherdomain.com_up ; gewähren: otherdomain.com
  • Benutzer: mail.holdingcompany.com_up ; gewähren: onedomain.com, onedomain.net, otherdomain.com

Umgekehrt wird eine Liste von Benutzern (hostname_sender + "_down") definiert, die es dem Relay-Host bzw. den Relay-Hosts ermöglicht, sich wieder mit den Absender-Hosts zu verbinden ( Zustellungs-Benutzerliste ).

  • Benutzer: a.mail.intern.onedomain.com_down
  • Benutzer: b.mail.intern.onedomain.com_down
  • Benutzer: a.mail.intern.otherdomain.com_down
  • Benutzer: mail.holdingcompany.com_down

Verbindungen an Port 25 zulassen

Für externe Server

Ein normaler Mail-Server wie Yahoo oder Google Mail möchte möglicherweise Nachrichten über meine Relays übermitteln. Der Server sollte dann die grundlegenden Elemente überprüfen, z. B. statische IP-Adresse, nicht auf der Blacklist und ob sich die Zieldomäne in meiner Liste der akzeptierten Domänen befindet . Diese Verbindung kann STARTTLS verwenden oder nicht.

Ich denke darüber nach, SPF zu ignorieren, da dies kein zuverlässiges Design ist. Andererseits möchte ich DKIM verwenden, um alle E-Mails, die von einer Domäne stammen, für die DKIM konfiguriert ist, hart abzustoßen, die eingehenden E-Mails jedoch nicht mit der Signatur übereinstimmen. Außerdem würde ich vermuten, dass es eine gute Idee ist, eine Kopie einer fehlgeschlagenen Mail mit der Fehlerbeschreibung an den Postmaster zu senden. Nur wenn sich ein Benutzer beschwert, erhält er keine Mail, die er erwartet.

Für vertrauenswürdige / interne Server / Benutzer

Ein Mail-Server in einem Netzwerk kann über Port 25 eine Verbindung herstellen, alle Überprüfungen (auf einer Blacklist, mit dynamischer IP-Adresse usw.) fehlschlagen, muss jedoch STARTTLS aktivieren und sich selbst über akzeptierte Domänen-Relay-Benutzer authentifizieren . Von diesem Punkt an kann die Verbindung dazu verwendet werden, Mails im Namen einer Domäne zu versenden, zu der der Benutzer berechtigt ist. Nur Relay-Hosts sollen sich hier verbinden, nicht die Endbenutzer selbst. Dieser Server soll auch keine DKIM-Informationen hinzufügen, da es sich lediglich um einen öffentlich "vertrauenswürdigen" Mail-Server mit einer statischen IP-Adresse handelt und nicht auf einer Blacklist.

Zustellung von E-Mails von einem Relay-Host an den zuständigen Absenderhost

In der Konfiguration meines Relay-Hosts finde ich eine Liste ( Domain-Forward-Liste )

  • onedomain.com, onedomain.net -> a.mail.intern.onedomain.com, b.mail.intern.onedomain.com [, mail.holdingcompany.com]
  • otherdomain.com -> a.mail.intern.otherdomain.com [, mail.holdingcompany.com]

Anfrage für Kommentare

Ich versuche, einen guten und aktuellen Stand der Technik für die Einrichtung von E-Mail-Servern festzulegen. Ich dachte an diese Architektur, um mir die größte Flexibilität und die Fähigkeit zu geben, Mailserver auf dynamischen IPs bereitzustellen. Dies könnte möglicherweise den ganzen Weg bis zu dem Punkt erreichen, an dem der durch die Firewall der Site verfügbare "Vor-Ort-Postfix" an einem nicht standardmäßigen Port nur TLS-Verbindungen mit allow_tls_clientcerts akzeptiert.

Wenn eine eingehende E-Mail für userA@onedomain.com weitergeleitet wird, sollte sie in meiner Konfiguration die Route über einen beliebigen Host von meiner Domain-Weiterleitungsliste für diese angegebene Domain übernehmen. Die Server selbst können sich an zwei separaten Standorten befinden und nur jeweils über eine 16 / 1MBit-Leitung mit unterschiedlichen Mailboxen auf den entsprechenden IMAP-Servern verbunden sein. Obwohl dies funktionieren würde, würde ich gerne wissen, ob es einen Weg gibt, auf dem die internen Server E-Mails direkt miteinander austauschen können.

  • a.mail.intern.onedomain.com -> responese: Benutzer existiert, aber ich bin nicht verantwortlich
  • b.mail.intern.onedomain.com -> Antwort: Vielen Dank

Oder:

  • a.mail.intern.onedomain.com -> responese: Benutzer existiert, aber ich bin nicht verantwortlich
  • b.mail.intern.onedomain.com -> responese: Benutzer existiert, aber ich bin nicht dafür verantwortlich
  • mail.holdingcompany.com -> responese: Benutzer existiert, aber ich bin nicht verantwortlich
  • Postmeister benachrichtigen, gültige Adresse, aber niemand verantwortlich

Oder:

  • a.mail.intern.onedomain.com -> responese: unbekannter Benutzer

Oder:

  • a.mail.intern.onedomain.com -> responese: Benutzer existiert, aber ich bin nicht verantwortlich
  • b.mail.intern.onedomain.com -> Timeout
  • mail.holdingcompany.com -> responese: Benutzer existiert, aber ich bin nicht verantwortlich
  • Benachrichtigen Sie den Postmaster nach einigen Wiederholungen auf b.mail.intern.onedomain.com

Mit was ich zu kämpfen habe

Grundsätzlich, wenn es möglich ist, ein solches Setup mit Postfix zu haben und zu testen, ob die Vorwärts-, Ablehnungs- und Authentifizierungsmechanismen ordnungsgemäß funktionieren.

Nach was ich gesucht habe, ist so etwas in iptables, wo ich so etwas wie einen Regelsatz haben kann

  • stimmen Sie mit "externen nicht auf der schwarzen Liste aufgeführten Servern" -j external_trustworthy überein
  • Übereinstimmung mit "intern mit TLS autorisiert" -j internal_authed
  • -j WIDERSTELLEN

Und dieses Verhalten testen, also werde ich nicht versehentlich die Blacklist-Richtlinie für internal_authed durchsetzen, oder, was noch schlimmer ist, dem external_trustworthy erlauben, E-Mails im Namen meiner akzeptierten Domänen zu senden. Abgesehen davon würde ich wirklich wünschen, dass Letsencrypt domänenbasierte S / MIME-Zertifikate ausstellt, die wiederum Client-S / MIME-Zertifikate für eine problemlose E-Mail-Verschlüsselung ausstellen und widerrufen könnten. Das ist ein anderes Thema, aber es erfordert eine solide Basis, um mit "Hochsicherheit" und "nicht so gut" konfigurierten SMTP-Servern auf der ganzen Welt kommunizieren zu können.

0
Gewählt, um zu weit zu schließen. Wenn Sie Postfix einrichten und spezifische Probleme haben, stellen Sie auf jeden Fall Fragen, wo Sie hinfallen, aber ich bezweifle, dass Personen, die diese Frage beantworten können, daran interessiert sind, einen ganzen Morgen damit zu verschwenden, dies kostenlos zu tun, damit Sie mit ihren Bemühungen Geld verdienen können . davidgo vor 5 Jahren 0
Gibt es in StackExchange eine Möglichkeit, die Systemarchitektur zu diskutieren? engelant vor 5 Jahren 0
Bei StackExchange geht es um Fragen und Antworten. davidgo vor 5 Jahren 0

0 Antworten auf die Frage