Postfix relay domains: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Die Seite wurde neu angelegt: „== relay_domains (Erlaubte Relay-Domains) == * Definiert, für welche Domains Postfix Mails an externe Server weiterleiten darf * Wird genutzt, wenn Postfi…“
 
Keine Bearbeitungszusammenfassung
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 1: Zeile 1:
== relay_domains (Erlaubte Relay-Domains) ==
== relay_domains (Zuständigkeit für externe Ziel-Domains) ==
* Definiert, für welche Domains Postfix Mails an externe Server weiterleiten darf 
* Definiert Domains, für die Postfix E-Mails von überall (Internet) annimmt, um sie an ein Zielsystem (z. B. internen Exchange) weiterzuleiten
* Wird genutzt, wenn Postfix als Smarthost oder Relayserver arbeitet 
* Wird genutzt, wenn Postfix als Gateway, Spam-Filter oder Backup-MX vor dem eigentlichen Mailserver agiert
* Muss mit `relay_recipient_maps` kombiniert werden, um offenes Relay zu verhindern 
* Verhindert "Relay access denied" für diese spezifischen Ziel-Domains
* Muss zwingend mit relay_recipient_maps kombiniert werden, um Backscatter-Spam an ungültige Adressen zu vermeiden


=== Beispiel: Relay-Domains-Tabelle erstellen ===
=== Beispiel: Relay-Domains-Tabelle erstellen ===
;Datei erstellen:
;Datei erstellen:
*vi /etc/postfix/relay_domains   
*vi /etc/postfix/relay_domains
  <pre>
  <pre>
  example.com
example.com
  trusted-domain.com
trusted-domain.com
  </pre>
</pre>
;Nach jeder Änderung die Tabelle aktualisieren:
;Tabelle für Postfix indizieren:
*postmap /etc/postfix/relay_domains
*postmap /etc/postfix/relay_domains


=== In /etc/postfix/main.cf eintragen ===
=== In /etc/postfix/main.cf konfigurieren ===
;Datei bearbeiten:
;Datei bearbeiten:
*vi /etc/postfix/main.cf
*vi /etc/postfix/main.cf
;Folgende Zeile hinzufügen oder anpassen:
;Parameter setzen:
  relay_domains = hash:/etc/postfix/relay_domains   
  relay_domains = hash:/etc/postfix/relay_domains
# Wichtig zur Vermeidung von Backscatter:
  relay_recipient_maps = hash:/etc/postfix/relay_recipients


=== Postfix neu laden ===
=== Postfix neu laden ===
;Änderungen übernehmen:
;Konfiguration aktivieren:
*postfix reload
*postfix reload
== Backscatter-Spam ==
* Unerwünschtes Nebenprodukt von Spam-Wellen mit gefälschten Absenderadressen
* Ablauf: Ein Spammer verschickt Mails mit gefälschtem Absender (z. B. opfer@example.com) → Postfix nimmt die Mail an → stellt fest, dass der Empfänger nicht existiert → schickt eine Unzustellbarkeits-Benachrichtigung (NDR/Bounce) zurück → das Bounce geht an den gefälschten Absender
* Das Opfer erhält massenhaft Fehlermeldungen für Mails, die es nie verschickt hat
* Der eigene Mailserver landet dadurch auf Blacklists
=== Warum relay_domains besonders anfällig ist ===
* Postfix arbeitet bei Relay-Mails in zwei Phasen:
;Phase 1 – SMTP-Session: Mail wird angenommen, kein Empfänger-Check
;Phase 2 – Queue-Verarbeitung: Weiterleitung schlägt fehl → Bounce an den (gefälschten) Absender
* Ohne relay_recipient_maps akzeptiert Postfix in Phase 1 jede beliebige Empfängeradresse der Relay-Domain – auch nicht existierende
=== Lösung: relay_recipient_maps ===
* Der Empfänger-Check findet bereits in Phase 1 (SMTP-Session) statt
* Bei unbekannter Adresse antwortet Postfix sofort mit <code>550 User unknown</code> direkt an den sendenden Server
* Es wird keine Bounce-Mail erzeugt – kein Backscatter
;Drei gängige Varianten:
;1. Statische Hash-Tabelle:
* Alle gültigen Adressen werden manuell gepflegt
* Geeignet für kleine Umgebungen und Lab-Setups
<pre>
benutzer1@example.com  OK
benutzer2@example.com  OK
</pre>
*postmap /etc/postfix/relay_recipients
relay_recipient_maps = hash:/etc/postfix/relay_recipients
;2. LDAP/AD-Abfrage:
* Postfix fragt direkt beim Active Directory oder LDAP-Server nach
* Pflegt sich selbst bei Personaländerungen – empfohlen für Umgebungen mit Exchange
relay_recipient_maps = ldap:/etc/postfix/ldap-relay-recipients.cf
;3. Callout-Verification:
* Postfix fragt den Zielserver (z. B. Exchange) per SMTP, ob die Adresse existiert
* Kein extra Mapping nötig
* Voraussetzung: Der Zielserver muss ungültige Adressen mit 550 ablehnen
smtpd_recipient_restrictions = reject_unverified_recipient
{{Hinweis|Im Lab-Setup mit wenigen fiktiven Adressen ist die statische Hash-Tabelle ausreichend. In der Praxis mit Exchange oder großen Umgebungen ist die LDAP-Abfrage die wartungsfreundlichste Lösung.}}

Aktuelle Version vom 6. Juni 2026, 14:10 Uhr

relay_domains (Zuständigkeit für externe Ziel-Domains)

  • Definiert Domains, für die Postfix E-Mails von überall (Internet) annimmt, um sie an ein Zielsystem (z. B. internen Exchange) weiterzuleiten
  • Wird genutzt, wenn Postfix als Gateway, Spam-Filter oder Backup-MX vor dem eigentlichen Mailserver agiert
  • Verhindert "Relay access denied" für diese spezifischen Ziel-Domains
  • Muss zwingend mit relay_recipient_maps kombiniert werden, um Backscatter-Spam an ungültige Adressen zu vermeiden

Beispiel: Relay-Domains-Tabelle erstellen

Datei erstellen
  • vi /etc/postfix/relay_domains
 example.com
 trusted-domain.com
 
Tabelle für Postfix indizieren
  • postmap /etc/postfix/relay_domains

In /etc/postfix/main.cf konfigurieren

Datei bearbeiten
  • vi /etc/postfix/main.cf
Parameter setzen
relay_domains = hash:/etc/postfix/relay_domains
# Wichtig zur Vermeidung von Backscatter:
relay_recipient_maps = hash:/etc/postfix/relay_recipients

Postfix neu laden

Konfiguration aktivieren
  • postfix reload

Backscatter-Spam

  • Unerwünschtes Nebenprodukt von Spam-Wellen mit gefälschten Absenderadressen
  • Ablauf: Ein Spammer verschickt Mails mit gefälschtem Absender (z. B. opfer@example.com) → Postfix nimmt die Mail an → stellt fest, dass der Empfänger nicht existiert → schickt eine Unzustellbarkeits-Benachrichtigung (NDR/Bounce) zurück → das Bounce geht an den gefälschten Absender
  • Das Opfer erhält massenhaft Fehlermeldungen für Mails, die es nie verschickt hat
  • Der eigene Mailserver landet dadurch auf Blacklists

Warum relay_domains besonders anfällig ist

  • Postfix arbeitet bei Relay-Mails in zwei Phasen:
Phase 1 – SMTP-Session
Mail wird angenommen, kein Empfänger-Check
Phase 2 – Queue-Verarbeitung
Weiterleitung schlägt fehl → Bounce an den (gefälschten) Absender
  • Ohne relay_recipient_maps akzeptiert Postfix in Phase 1 jede beliebige Empfängeradresse der Relay-Domain – auch nicht existierende

Lösung: relay_recipient_maps

  • Der Empfänger-Check findet bereits in Phase 1 (SMTP-Session) statt
  • Bei unbekannter Adresse antwortet Postfix sofort mit 550 User unknown direkt an den sendenden Server
  • Es wird keine Bounce-Mail erzeugt – kein Backscatter
Drei gängige Varianten
1. Statische Hash-Tabelle
  • Alle gültigen Adressen werden manuell gepflegt
  • Geeignet für kleine Umgebungen und Lab-Setups
 benutzer1@example.com   OK
 benutzer2@example.com   OK
 
  • postmap /etc/postfix/relay_recipients
relay_recipient_maps = hash:/etc/postfix/relay_recipients
2. LDAP/AD-Abfrage
  • Postfix fragt direkt beim Active Directory oder LDAP-Server nach
  • Pflegt sich selbst bei Personaländerungen – empfohlen für Umgebungen mit Exchange
relay_recipient_maps = ldap:/etc/postfix/ldap-relay-recipients.cf
3. Callout-Verification
  • Postfix fragt den Zielserver (z. B. Exchange) per SMTP, ob die Adresse existiert
  • Kein extra Mapping nötig
  • Voraussetzung: Der Zielserver muss ungültige Adressen mit 550 ablehnen
smtpd_recipient_restrictions = reject_unverified_recipient

ℹ️ Hinweis: Im Lab-Setup mit wenigen fiktiven Adressen ist die statische Hash-Tabelle ausreichend. In der Praxis mit Exchange oder großen Umgebungen ist die LDAP-Abfrage die wartungsfreundlichste Lösung.