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 ...

Datadevil
quelle

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
Carlo Arenen
quelle
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:

[email protected]    OK
[email protected]    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 .

Joschi
quelle
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 [email protected]
    

Ersetzen Sie allowed-domain.comdurch die Domain, an die Ihr Mailserver weiterhin Mails senden soll. Durch [email protected]die 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.
Jonas
quelle
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
3

Haben Sie header_checks (5) ausprobiert ?

0x44
quelle
Nein, überprüfen Sie das jetzt
datadevil