Eigenen Mailserver anbinden: Postfix und andere

Postfix mit Conbool verbinden: MX und Relay-Host für den eingehenden Weg, relayhost für den ausgehenden Weg, Ausnahmen für die Gateway-Adresse und BCC-Regeln zur Archivierung interner Nachrichten.

Conbool sitzt als Gateway im Mailfluss und spricht dabei ausschließlich SMTP. Damit lässt sich jeder eigenbetriebene Mailserver anbinden, ohne Connector, ohne Schnittstellenzugriff und ohne Agent auf dem Server. Die Beispiele auf dieser Seite zeigen Postfix, weil die verbreiteten Serverpakete Postfix als MTA verwenden. Für Microsoft 365 und Exchange gilt der eigene Weg über Exchange Connectoren.

Die Postfächer bleiben auf dem eigenen Server. Conbool nimmt eingehende Nachrichten an, prüft sie und stellt an den eigenen Server zu. Ausgehend nimmt Conbool die Nachrichten des eigenen Servers an, setzt Signatur, Disclaimer oder Verschlüsselung und stellt weiter zu.

In allen Beispielen stehen Platzhalter, die durch die eigenen Werte ersetzt werden. beispiel.de ist die eigene Mail-Domäne, 203.0.113.20 der eigene Mailserver, 203.0.113.10 die Adresse, von der Conbool zustellt, und smtp.gateway.example der Gateway-Host.

Woher die echten Werte kommen:

  • Zustellende Adresse und Gateway-Host stehen im Portal unter Einstellungen, Domänen, in der jeweiligen Domäne im Feld Mailserver. Im Einrichtungsassistenten erscheinen sie im Schritt Mailserver, sobald die Einrichtung von Hand gewählt wird. Partner- und On-Premise-Installationen stellen aus ihrer eigenen Instanz zu und zeigen dort entsprechend andere Werte.
  • MX, SPF, DKIM und die TXT-Verifizierung zeigt der Einrichtungsassistent unter Domain verbinden.

Eingehender Weg

Im Portal wird der MX auf Conbool gesetzt und der eigene Server als Relay-Host der Domäne hinterlegt. Conbool stellt danach auf Port 25 an diesen Host zu. Auf dem eigenen Server sind drei Regeln nötig.

Erstens: Verbindungsschutz für die Gateway-Adresse aussetzen. postscreen bewertet Verbindungen vor der Annahme und würde das Gateway wie jeden fremden Absender behandeln. In der main.cf:

postscreen_access_list = permit_mynetworks,
    cidr:/etc/postfix/postscreen_access.cidr

In /etc/postfix/postscreen_access.cidr:

203.0.113.10/32   permit

Zweitens: SPF nicht erneut prüfen. Nach der Weiterleitung stammt die Verbindung vom Gateway. Eine erneute SPF-Prüfung bewertet damit die falsche Quelle und lehnt korrekte Nachrichten ab. Bei postfix-policyd-spf-python gehört die Adresse in die Konfiguration unter /etc/postfix-policyd-spf-python/policyd-spf.conf:

Whitelist = 203.0.113.10

Läuft die Prüfung in Rspamd, greift ein Einstellungsblock in /etc/rspamd/local.d/settings.conf:

conbool_gateway {
  priority = high;
  ip = "203.0.113.10/32";
  apply {
    symbols_disabled = [
      "R_SPF_FAIL", "R_SPF_SOFTFAIL", "R_SPF_PERMFAIL", "R_SPF_NA",
      "DMARC_POLICY_REJECT", "DMARC_POLICY_QUARANTINE", "DMARC_POLICY_SOFTFAIL",
      "GREYLIST"
    ];
  }
}

Drittens: keine zweite Verzögerung und keine zweite Ablehnung. Greylisting ist im Block oben mit abgeschaltet. Sperrlisten dürfen die Gateway-Adresse nicht treffen, sonst verwirft der eigene Server bereits geprüfte Nachrichten. Das Prüfergebnis von Conbool steht in den Kopfzeilen jeder Nachricht und lässt sich für eigene Regeln weiterverwenden.

Danach postfix reload und, falls Rspamd im Spiel ist, rspamadm configtest sowie ein Neustart des Dienstes.

Ausgehender Weg

Ausgehende Nachrichten gehen an das Gateway statt direkt an den Empfänger. In der main.cf:

relayhost = [smtp.gateway.example]:25
smtp_tls_security_level = may

Die eckigen Klammern unterdrücken die MX-Abfrage und richten die Zustellung genau an diesen Host. Soll nur ein Teil der Absender über Conbool laufen, tritt an die Stelle des festen Werts eine Zuordnung nach Absender:

sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay

In /etc/postfix/sender_relay, danach postmap /etc/postfix/sender_relay:

@beispiel.de    [smtp.gateway.example]:25

Eine SMTP-Anmeldung gibt es nicht. Die Berechtigung ergibt sich aus dem SPF-Eintrag der Domäne. Besteht eine Nachricht die SPF-Prüfung nicht, weist Conbool sie ab, denn dann sendet ein nicht autorisiertes System unter der Domäne.

Für die ausgehende DKIM-Signatur gilt eine strengere Regel: Die Adresse des eigenen Servers muss direkt als ip4 oder ip6 im SPF stehen. Ein include genügt hier nicht, weil eingeschlossene Bereiche viele fremde Systeme mit abdecken und als Nachweis der Herkunft wertlos wären. Steht die Adresse nur über ein include im SPF, wird die Nachricht zugestellt, aber nicht signiert.

v=spf1 ip4:203.0.113.20 include:<Wert aus dem Assistenten> -all

Die Signatur selbst gehört an den letzten Hop. Signiert der eigene Server und setzt Conbool danach Disclaimer, Betreffmarkierung oder Verschlüsselung, bricht die vorhandene Signatur. Deshalb wird das Signieren auf dem eigenen Server für diese Domänen abgeschaltet, in Rspamd über /etc/rspamd/local.d/dkim_signing.conf:

enabled = false;

Nach der Verarbeitung stellt Conbool direkt an den Empfänger zu. Soll eine bestehende nachgelagerte Instanz im Pfad bleiben, steuert das die Mailertabelle und das Smart-Host-Routing.

Interne Nachrichten archivieren

Nachrichten zwischen zwei Postfächern desselben Servers werden lokal zugestellt und erreichen das Gateway nie. Für ein vollständiges Archiv liefert der eigene Server deshalb eine Kopie an eine dedizierte Ingestion-Adresse.

Die Adresse entsteht im Archiv unter Verwaltung und Quellen. Dort wird eine Quelle mit dem Zulieferweg Kopie per BCC angelegt, das Portal zeigt danach die volle Adresse in der Form ingest-adresse@journal.conbool.com. Die Adresse ist nicht erratbar und wirkt als Geheimnis. Optional lässt sich eine Absender-IP-Allowlist hinterlegen.

Empfohlene Regel: eine Kopie je Empfänger mit Kennzeichnung. Der Empfänger wird dabei als Adresserweiterung an die Ingestion-Adresse gehängt. Nur so werden auch Bcc-Empfänger erfasst, die in keiner Kopfzeile stehen. In der main.cf:

recipient_bcc_maps = regexp:/etc/postfix/archiv_bcc

In /etc/postfix/archiv_bcc, eine Zeile je Domäne:

/^(.*)@(beispiel\.de)$/   ingest-adresse+${1}=${2}@journal.conbool.com

Aus anna@beispiel.de wird damit die Kopie an ingest-adresse+anna=beispiel.de@journal.conbool.com. Das Archiv liest den Teil hinter dem Pluszeichen als echten Empfänger und leitet daraus Richtung und Postfach ab, also eingehend, ausgehend oder intern. Ausdruckslisten brauchen kein postmap, ein postfix reload genügt.

Einfache Regel ohne Kennzeichnung. Wer nur eine Zeile setzen will, nimmt eine Kopie des gesamten Verkehrs:

always_bcc = ingest-adresse@journal.conbool.com

Dann liest das Archiv die Empfänger aus To und Cc sowie aus den Kopfzeilen X-Envelope-To, X-Original-To und Delivered-To. Bcc-Empfänger fehlen in diesem Fall.

Drei Regeln gelten für beide Varianten:

  • Die Kennzeichnung gehört ausschließlich in recipient_bcc_maps. In sender_bcc_maps stünde dort der Absender, und das Archiv würde die Richtung falsch bestimmen. Absenderkopien deshalb immer an die Adresse ohne Erweiterung.
  • Die Kopie muss per TLS ankommen. Mit smtp_tls_security_level = may genügt das, da das Gateway STARTTLS anbietet.
  • Der ursprüngliche Absender bleibt im Envelope erhalten. Postfix übernimmt ihn bei BCC-Kopien von sich aus, hier ist nichts einzustellen.

Doppelte Kopien sind unkritisch. Das Archiv erkennt sie und legt je Nachricht und Postfach genau einen Eintrag an. Die übrigen Archivwege, Erfassung am Gateway und Übernahme von Altbeständen, beschreibt die Archiv-Einrichtung.

Einrichtung prüfen

  • Eingehend: eine Testnachricht von außen senden und im Maillog des eigenen Servers die Annahme von 203.0.113.10 mit status=sent suchen.
  • Ausgehend: eine Testnachricht senden und im Maillog relay=smtp.gateway.example[...]:25 prüfen. Im Portal erscheint die Nachricht in der Nachrichtenverfolgung.
  • Archiv: nach der ersten Kopie zählt die Quelle unter Verwaltung und Quellen die eingegangenen Nachrichten mit und zeigt den Zeitpunkt der letzten Lieferung.

Grenzen

  • Die Zustellung an den Relay-Host und an einen Smart Host läuft auf Port 25. Ein abweichender Port ist nicht vorgesehen.
  • Für den ausgehenden Weg gibt es keine SMTP-Anmeldung, die Berechtigung läuft über den SPF-Eintrag.
  • Kopien ohne Kennzeichnung erfassen keine Bcc-Empfänger.

Weiter geht es mit dem eingehenden Schutz unter MailGuard und mit der Archivierung unter Archiv.