Nach dem Fixieren auf dem Entwicklungsserver können E-Mails nur an eine Domäne gesendet werden


11

Wir haben Postfix auf unserem Entwicklungsserver, und ich möchte, dass es nur E-Mails an unsere Domain und nicht an andere Domains senden kann, um zu verhindern, dass externe Benutzer versehentlich E-Mails von unserem Entwicklungsserver erhalten.

Ich habe die Dokumente durchsucht, verschiedene Dinge ausprobiert, aber es wird immer noch an alle Domänen gesendet ...

Antworten:


7

Transport (5) -Karten werden verwendet, um neu zu definieren, wie E-Mails per Postfix weitergeleitet werden.

  • Fügen Sie /etc/postfix/main.cf die folgende Zeile hinzu:

    transport_maps = hash:/etc/postfix/transport
    
  • Fügen Sie die neue Datei / etc / postfix / transport mit folgendem Inhalt hinzu:

    .example.com   :
    example.com    :
    *              discard:
    

Ersetzen Sie example.comdurch die Domain, an die Ihr Mailserver weiterhin Mails senden soll. Wenn Sie sich nicht für Subdomains interessieren, entfernen Sie die erste Zeile.

Vergessen Sie nicht, die Datei nach dem Bearbeiten mit postmap (1) zu hashen und postfix neu zu laden, damit die Änderungen wirksam werden:

# postmap /etc/postfix/transport && postfix reload

7

Sie können die Empfänger einfach mit Standard- smtpd_recipient_restrictions oder genauer check_recipient_access einschränken .

Erstellen Sie einfach einen Zugang (5) Tabelle /etc/postfix/accessmit folgendem Inhalt ( example.com ist die Domain , die Sie zulassen möchten Mail an senden):

example.com    OK

Sie können auch nur bestimmte Adressen zulassen:

user1@example.com    OK
user2@example.com    OK

Vergessen Sie nicht, die Datei nach dem Bearbeiten mit postmap (1) zu hashen :

# postmap /etc/postfix/access

Fügen Sie nun die folgenden Empfängerbeschränkungen in Ihre main.cf ein:

smtpd_recipient_restrictions = 
    hash:/etc/postfix/access
    reject

und Postfix neu laden:

postfix reload

Danach wird es testen , ob es funktioniert .


1
Dies funktioniert für E-Mails, die über SMTP gesendet werden, nicht über den Befehl / usr / lib / sendmail, und lokale Prozesse können beides. Es scheint, dass die Einstellung 'authorized_submit_users' verwendet werden kann, um die lokale Übermittlung mit sendmail / postdrop zu blockieren. Dann sind die smtpd-Einschränkungen ausreichend.
Jacek Konieczny

6

Wenn also jemand wie ich darüber stolpert: Die Antwort lautet in der Tat header_checks und es funktioniert als solches:

  • Fügen Sie die folgende Zeile hinzu /etc/postfix/main.cf:

    header_checks = regexp:/etc/postfix/header_checks
    
  • Fügen Sie die neue Datei /etc/postfix/header_checksmit diesem Inhalt hinzu:

    /^To:.*@allowed-domain.com/  DUNNO
    /^To:.*@/   REDIRECT redirect@example.com
    

Ersetzen Sie allowed-domain.comdurch die Domain, an die Ihr Mailserver weiterhin Mails senden soll. Durch redirect@example.comdie E-Mail-Adresse ersetzen, an die alle anderen E-Mails weitergeleitet werden sollen.

Wenn Sie mehrere Domänen zulassen müssen, sollte die erste Zeile folgendermaßen aussehen:

/^To:.*@(allowed-domain.com|another-domain.com)/  DUNNO

Anstatt umzuleiten, können Sie einfach alle anderen Mails löschen. Ersetzen Sie die zweite Zeile oben durch:

/^To:.*@/   DISCARD No outgoing mails allowed

Erläuterung:

  • Postfix geht die Mail-Header einzeln durch.
  • Jede Kopfzeile wird zeilenweise mit der header_checksDatei abgeglichen .
  • Wenn es mit der ersten Zeile übereinstimmt (To: die zulässige Domäne enthält), springt es zur nächsten Kopfzeile und startet die Kopfzeilenprüfung erneut von oben. Da keine andere Zeile übereinstimmt, wird die E-Mail zugestellt.
  • Wenn es mit der zweiten Zeile übereinstimmt ( To:eine andere externe E-Mail-Adresse enthält), wird die E-Mail umgeleitet.

Dieses Problem scheint mit dieser Antwort gelöst worden zu sein. Vielleicht sollte es als gelöst markiert werden. (Es hat zumindest für mich wie ein Zauber gewirkt)
Sverre

was ist mit Cc:und Bcc:?
Paul Tobias

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.