Postfix/Restrictions

Aus Foxwiki

Reihenfolge

Postfix verarbeitet die restrictions (Beschränkungsphasen) in folgender Reihenfolge:

  • smtpd_client_restrictions
  • smtpd_helo_restrictions
  • smtpd_sender_restrictions
  • smtpd_recipient_restrictions
  • smtpd_data_restrictions

Regel smtpd_client_restrictions

Die MTAs »sprechen« miteinander im SMTP-Protokoll. Deshalb muss sowohl der Client als auch der Server SMTP verstehen. Diese Restriktion steht für die Beschränkung der Adresse oder des Hostnamen des SMTP-Clients. Der Client bedeutet hier der zum Server verbundene TCP/IP-Client.

  1. Überprüft den SMTP-Client nach diesen Kriterien

smtpd_client_restrictions =

       permit_sasl_authenticated,
       permit_mynetworks,
       reject_unknown_client

Regel smtpd_client_restrictions

  1. Überprüft den SMTP-Client nach diesen Kriterien

smtpd_client_restrictions =

       permit_sasl_authenticated,
       permit_mynetworks,
       reject_unknown_client

Regel smtpd_helo_restrictions

In der Regel schicken die SMTP-Clients zum Server ein HELO/EHLO zur Begrüßung, in welchem sie ihren eigenen Hostnamen bekanntgeben. In dieser Restriktion können wir bestimmen, welche Hostnamen der Client schicken kann. Es wäre sicher nicht sinnvoll, wenn ein externer Client unseren eigenen Hostnamen schicken würde (Spammer-Methode). Es ist sinnvoll, zu konfigurieren, dass ein SMTP-Client ein HELO/EHLO schicken muss. Mit diesem Verfahren kann man viele Spam-Software filtern. 

Dies kann man so machen:

smtpd_helo_required=yes

  1. Ueberprueft den SMTP-Client nach dem er "Hallo" gesagt hat
smtpd_helo_restrictions = 
 permit_sasl_authenticated,
 permit_mynetworks,
 reject_invalid_hostname,
 reject_unknown_hostname,
 reject_non_fqdn_hostname,
 reject_unknown_sender_domain,
 reject_non_fqdn_sender

Regel smtpd_sender_restrictions

In dieser Restriktion können wir einstellen, welchen Sender unser Postfix MTA im „MAIL FROM:“-Befehl empfangen soll, da viele Spammer ins „MAIL FROM:“ nicht existierende oder ungültige Email-Adressen schreiben (z.B. peter@foobar.de oder peter@foo@bar.de). In diesem Fall gehen wir davon aus, dass die Domain foobar.de nicht existiert.

  1. Ueberprueft den "MAIL FROM:"-Befehl
smtpd_sender_restrictions = 
 permit_sasl_authenticated,
 permit_mynetworks,
 reject_unauth_destination,
 reject_non_fqdn_recipient,
 reject_unknown_recipient_domain

Regel smtpd_recipient_restrictions

Diese Restriktion setzt fest, was als Wert für den Befehl „RCPT TO:“ zugelassen ist. Die Spammer können auch hier ungültige Adressen angeben, welche wir mit verschiedenen Optionen filtern können.

smtpd_recipient_restrictions = 
 permit_sasl_authenticated,
 permit_mynetworks,
 # Wer Spam liebt muss hier eingetragen werden
 check_recipient_access hash:/etc/postfix/spam_lovers,
 reject_invalid_hostname,
 reject_non_fqdn_hostname,
 reject_unknown_hostname,
 reject_non_fqdn_sender,
 reject_non_fqdn_recipient,
 reject_unknown_sender_domain,
 reject_unknown_recipient_domain,
 reject_unauth_pipelining,
 reject_unauth_destination,
 # Sqlgrey
 check_policy_service inet:[127.0.0.1]:2501,
 # Poliyd Weight
 check_policy_service inet:[127.0.0.1]:12525,
 permit

Regel smtpd_data_restrictions

Bevor ihr es falsch versteht… nein, hier wird nicht der Inhalt des DATA-Befehls gefiltert, sondern der Befehl selber. Dies filtert den SMTP-Client, der nicht die Regeln des SMTP-Protokolls einhält.

smtpd_data_restrictions=

Erläuterungen

  • permit_sasl_authenticated: Authentifizierte User erlauben

Erläuterungen smtpd_client_restrictions

  • reject_unknown_client: Verwirft die Anfrage, wenn der Hostname des SMTP-Clients unbekannt ist (die IP-Adresse oder der Hostname des TCP/IP-Clients).
  • reject_rbl_client domain.tld: Verwirft die Anfrage, wenn der SMTP-Client einen DNS-Record vom Typ A unter domain.tld hat.
  • reject_rhsbl_client domain.tld: Verwirft die Anfrage, wenn der SMTP-Client einen DNS-Record vom Typ A unter domain.tld hat.
  • warn_if_reject: Schreibt ein WARN ins Logfile und stellt die Nachricht zu, anstatt die Nachricht zu verwerfen.
  • check_client_access maptype:mapname: Löst die Client-Namen, Client-Adressen und Parent-Domains auf anhand der in maptype:mapname angegebenen Map.
  • permit_mynetworks: Gewährt Zugriff, wenn der Client in $mynetworks zu finden ist.

Erläuterungen smtpd_helo_restrictions

  • reject_invalid_hostname: Verwirft den im HELO/EHLO angegebenen Hostnamen, falls dieser eine falsche Syntax hat. Wenn man in einem Netzwerk ist und man will, dass die Maschinen, die auch im Netzwerk sind, Emails über unseren MTA verschicken wollen, dann ist es sinnvoll, diese Beschränkung erst nach permit_mynetworks anzugeben (wie ich schon gesagt habe, die Reihenfolge ist sehr wichtig), sonst wird er vom MTA verworfen oder zurückgewiesen.
  • reject_unknown_hostname: Verwirft den im HELO/EHLO angegebenen Hostnamen, welcher keinen DNS Rekord vom Typ A oder MX hat. Hier ist es auch sinnvoll permit_mynetworks zuerst anzugeben, wenn man ein Relay-MTA für das innere Netzwerk ist.
  • reject_non_fqdn_hostname: Verwirft den im HELO/EHLO angegebenen Hostnamen, wenn dieser nicht in FQDN-Form ist. Was bedeutet FQDN? Full Qualified Domain Name. Dafür ein Beispiel: http://www.chains.ch ist ein FQDN.
  • warn_if_reject: Schreibt ein WARN ins Logfile und stellt die Nachricht zu, anstatt die Nachricht zu verwerfen.
  • check_helo_access: Löst den im HELO/EHLO angegebenen Hostnamen oder die Parent-Domain auf.
  • permit_mynetworks: Gewährt Zugriff, wenn der Client in $mynetworks zu finden ist.
  • reject_unknown_sender_domain: Verwirft die Sender-Domain, wenn diese keinen DNS-Record vom Typ A oder MX hat.
  • reject_non_fqdn_sender: Verwirft die Sender-Domain, wenn diese nicht in FQDN-Form ist.
  • reject_rhsbl_sender domain.tld: Verwirft die Anfrage, wenn der Sender einen DNS-Record vom Typ A unter domain.tld hat.
  • reject_sender_login_mismatch: Verwirft, wenn $smtpd_sender_login_maps für eine MAIL FROM- Adresse einen Besitzer spezifiziert, aber der sich nicht mit SASL authentifiziert hat; verwirft, wenn der Sender sich authentifiziert hat, aber die MAIL FROM-Adresse nicht mit dem Sender übereinstimmt.
  • warn_if_reject: Schreibt ein WARN ins Logfile und stellt die Nachricht zu, anstatt die Nachricht zu verwerfen.
  • check_sender_access maptype:mapname: Löst die Sender-Adresse, Parent-Domain oder localpart@ auf.
  • check_sender_mx_access maptype:mapname: Löst den DNS-Record vom Typ MX des Senders auf.

Erläuterungen smtpd_recipient_restrictions

  • reject_unknown_recipient_domain: Verwirft die Anfrage, wenn im RCPT TO die Domain des Empfängers keinen DNS-Record vom Typ A oder MX hat.
  • reject_non_fqdn_recipient: Verwirft die Anfrage, wenn im RCPT TO die Domain des Empfängers nicht in FQDN-Form ist.
  • reject_rhsbl_recipient domain.tld: Verwirft die Anfrage, wenn der Empfänger einen DNS-Record vom Typ A unter domain.tld hat.
  • reject_unauth_pipelining: Verwirft die Anfrage, wenn man nicht korrekte Pipelines macht.
  • reject_unauth_destination: Verwirft das Absenden von Emails:
    • zu Zielmaschinen, die nicht unter $inet_interfaces, $mydestination, $virtual_alias_domains der $virtual_mailbox_domains zu finden sind.
    • zu Zielmaschinen, die nicht unter $relay_domains oder in deren Subdomains zu finden sind (außer Sender-spezifisches Routing).
  • warn_if_reject: Schreibt ein WARN ins Logfile und stellt die Nachricht zu, anstatt die Nachricht zu verwerfen.
  • check_recipient_access maptype:mapname: Löst die Empfänger-Adresse, Parent-Domain oder localpart@ auf.
  • check_recipient_access hash:/etc/postfix/spam_lovers: Diese Regeln auslesen um keine Spam Prüfung zu machen
  • check_recipient_mx_access maptype:mapname: Löst den DNS-Record vom Typ MX des Empfängers auf.
  • permit_auth_destination: Erlaubt das Absenden von Emails:
    • zu Zielmaschinen, die unter $inet_interfaces, $mydestination, $virtual_alias_domains der $virtual_mailbox_domains zu finden sind.
    • zu Zielmaschinen, die unter $relay_domains oder in deren Subdomains zu finden sind (außer Sender-spezifisches Routing).
  • permit_mx_backup: Erlaubt das Empfangen von Emails für Seiten, die mich als MX Host auflisten.
  • permit_mynetworks: Gewährt Zugriff, wenn der Client in der Liste von $mynetworks ist.

Erläuterungen smtpd_data_restrictions

  • reject_unauth_pipelining: Verwirft die Anfrage, wenn man nicht korrekte Pipelines macht.

Quelle: https://www.secretisland.de/postfix-restrictions/