Beschränken ausgehender E-Mails auf bestimmte Domänen in Von Adresse mit Postfix


7

Aus Gründen, die mich dazu bringen, mich selbst zu verletzen, kann eine Anwendung, die ich unterstützen muss, E-Mails mit einer 'MAIL FROM'-Adresse einer beliebigen Domain senden. Da ich die Anwendung nicht weiter sperren kann, möchte ich, dass Postfix Sanity alle E-Mails überprüft, die versuchen, mein Netzwerk für den Rest der Welt zu verlassen.

Ich möchte nur, dass E-Mails, die von innen stammen, herausgelassen werden, wenn sie eine Absenderadresse von 'example.com' haben. Wenn E-Mails, die von innen stammen, die Absenderadresse "someotherdomain.com" haben, sollten diese E-Mails über Postfix blockiert werden.

Wie konfiguriere ich Postfix so, dass nur E-Mails, die aus meinem lokalen Netzwerk stammen, zugelassen werden, wenn diese E-Mails eine FROM-Adresse eines meiner Domain-Namen haben?

Der einzige Weg, wie ich bisher herausgefunden habe, wie das geht, ist folgender. Aber gibt es etwas Einfacheres?

/etc/postfix/main.cf:

smtpd_restriction_classes =
        external_sender_access
        internal_sender_access

# Intended for mail originating from outside our networks
external_sender_access =
        # Verify MAIL_FROM on incoming mail
        check_sender_access hash:/etc/postfix/external_sender_access
        # Allow all other incoming mail
        permit

# Intended for mail originating from within our networks
internal_sender_access =
        # Verify MAIL_FROM on outgoing mail
        check_sender_access hash:/etc/postfix/internal_sender_access
        # Block all other outbound mail
        reject

# Restrictions applied in the context of the MAIL FROM command.
smtpd_sender_restrictions =
        reject_non_fqdn_sender
        reject_unknown_sender_domain
        # Access rules for specific 'sender' data based upon client IP
        check_client_access cidr:/etc/postfix/network_sender_access
        permit
/etc/postfix/network_sender_access:

# Localhost
127.0.0.0/24        internal_sender_access

# Inside Networks
192.168.0.0/16      internal_sender_access

# Everything else
0.0.0.0/0           external_sender_access
/etc/postfix/internal_sender_access:

example.com OK
.example.com OK
/etc/postfix/external_sender_access:

example.com REJECT You're not from here!
.example.com REJECT You're not from here!

postconf -n Ausgabe für diese Konfiguration:

alias_database = dbm:/etc/aliases
alias_maps = hash:/etc/aliases
biff = no
body_checks = pcre:/etc/postfix/body_checks
config_directory = /etc/postfix
content_filter = smtp-amavis:[127.0.0.1]:10024
disable_vrfy_command = yes
external_sender_access = check_sender_access hash:/etc/postfix/external_sender_access permit
header_checks = pcre:/etc/postfix/header_checks
home_mailbox = Maildir/
inet_protocols = ipv4,ipv6
internal_sender_access = check_sender_access hash:/etc/postfix/internal_sender_access reject
local_header_rewrite_clients = permit_inet_interfaces,permit_mynetworks
mailbox_command = /usr/bin/procmail -t
mailbox_size_limit = 0
manpage_directory = /usr/share/man
minimal_backoff_time = 1800s
mydestination = $myorigin, $myhostname, localhost.$mydomain, localhost
mynetworks = /etc/postfix/local_networks
queue_directory = /data/postfix
recipient_delimiter = +
smtp_generic_maps = pcre:/etc/postfix/generic
smtpd_banner = $myhostname ESMTP
smtpd_client_restrictions = permit_mynetworks check_client_access hash:/etc/postfix/client_access permit
smtpd_data_restrictions = reject_unauth_pipelining reject_multi_recipient_bounce permit
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_helo_restrictions = reject_invalid_helo_hostname reject_non_fqdn_helo_hostname permit_mynetworks check_client_access hash:/etc/postfix/client_access permit
smtpd_recipient_restrictions = permit_mynetworks check_client_access hash:/etc/postfix/rbl_override reject_rbl_client zen.spamhaus.org permit
smtpd_relay_restrictions = reject_non_fqdn_recipient reject_unknown_recipient_domain regexp:/etc/postfix/regexp_access permit_mynetworks reject_unauth_destination reject_unlisted_recipient check_policy_service inet:127.0.0.1:10023 permit
smtpd_restriction_classes = external_sender_access internal_sender_access
smtpd_sender_restrictions = reject_non_fqdn_sender reject_unknown_sender_domain check_client_access cidr:/etc/postfix/network_sender_access permit
strict_rfc821_envelopes = yes
virtual_alias_domains = example.com
virtual_alias_maps = hash:/etc/postfix/virtual.d/example.com

BEARBEITEN: Nachfolgend finden Sie eine alternative Konfiguration, die ich mit 'reverse_unlisted_sender' versucht habe.

Wenn ich versuche, diese Konfiguration zu verwenden, wird die gesendete E-Mail "From: does_not_exist@example.com" (wie erwartet) gesendet, die E-Mail "From: blah@not_my_domain.com" wird jedoch problemlos gesendet, was genau das ist, was ich nicht möchte .

# Restrictions applied in the context of the MAIL FROM command.
smtpd_sender_restrictions =
        reject_non_fqdn_sender
        reject_unknown_sender_domain
        check_client_access cidr:/etc/postfix/outgoing_senders
        # Access rules for specific 'sender' data
        check_sender_access hash:/etc/postfix/sender_access
        permit
/etc/postfix/outgoing_senders:
192.168.0.0/16  reject_unlisted_sender, permit
/etc/postfix/sender_access:

example.com REJECT You're not from here!
.example.com REJECT You're not from here!

postconf -n Ausgabe für diese Konfiguration:

alias_database = dbm:/etc/aliases
alias_maps = hash:/etc/aliases
biff = no
body_checks = pcre:/etc/postfix/body_checks
config_directory = /etc/postfix
content_filter = smtp-amavis:[127.0.0.1]:10024
disable_vrfy_command = yes
header_checks = pcre:/etc/postfix/header_checks
home_mailbox = Maildir/
inet_protocols = ipv4,ipv6
local_header_rewrite_clients = permit_inet_interfaces,permit_mynetworks
mailbox_command = /usr/bin/procmail -t
mailbox_size_limit = 0
manpage_directory = /usr/share/man
minimal_backoff_time = 1800s
mydestination = $myorigin, $myhostname, localhost.$mydomain, localhost
mynetworks = /etc/postfix/local_networks
queue_directory = /data/postfix
recipient_delimiter = +
smtp_generic_maps = pcre:/etc/postfix/generic
smtpd_banner = $myhostname ESMTP
smtpd_client_restrictions = permit_mynetworks check_client_access hash:/etc/postfix/client_access permit
smtpd_data_restrictions = reject_unauth_pipelining reject_multi_recipient_bounce permit
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_helo_restrictions = reject_invalid_helo_hostname reject_non_fqdn_helo_hostname permit_mynetworks check_client_access hash:/etc/postfix/client_access permit
smtpd_recipient_restrictions = permit_mynetworks check_client_access hash:/etc/postfix/rbl_override reject_rbl_client zen.spamhaus.org permit
smtpd_relay_restrictions = reject_non_fqdn_recipient reject_unknown_recipient_domain regexp:/etc/postfix/regexp_access permit_mynetworks reject_unauth_destination reject_unlisted_recipient check_policy_service inet:127.0.0.1:10023 permit
smtpd_sender_restrictions = reject_non_fqdn_sender reject_unknown_sender_domain check_client_access cidr:/etc/postfix/outgoing_senders check_sender_access hash:/etc/postfix/sender_access permit
strict_rfc821_envelopes = yes
virtual_alias_domains = example.com
virtual_alias_maps = hash:/etc/postfix/virtual.d/example.com

Ich habe versucht, 'reverse_unlisted_sender' zu verwenden, aber das schien nur dann etwas zu bewirken, wenn die FROM-Domäne in meinen virtual_aliases-Tabellen aufgeführt war. Jede andere Domain wurde ignoriert und die Mail wurde herausgelassen.
— Chris Snyder

(1) Bitte geben Sie die Ausgabe von an postconf -n. (2) Wo setzen Sie reject_unlisted_senderIhre Einschränkung ein?
— Masegaloeh

Um beide external_sender_accessund zu erzwingen internal_sender_access, benötigen Sie smtpd_restriction_classes. Eine andere Methode finden Sie in den FAQ hier
— masegaloeh

Alternative Konfiguration mit reject_unlisted_senderund postconf -nAusgabe hinzugefügt.
— Chris Snyder

Antworten:


2

Ich kann bestätigen, dass das, was Sie in Ihrem Postfix sehen, beabsichtigtes Verhalten von war reject_unlisted_sender. Auf dieser Dokumentationsseite werden 4 Bedingungen angegeben, unter denen Postfix Ihre E-Mail abgelehnt hat

  • Die Absenderdomäne entspricht $ mydestination , $ inet_interfaces oder $ proxy_interfaces , aber der Absender ist nicht in $ local_recipient_maps aufgeführt , und $ local_recipient_maps ist nicht null.
  • Die Absenderdomäne stimmt mit $ virtual_alias_domains überein , der Absender ist jedoch nicht in $ virtual_alias_maps aufgeführt .
  • Die Absenderdomäne stimmt mit $ virtual_mailbox_domains überein, aber der Absender ist nicht in $ virtual_mailbox_maps aufgeführt , und $ virtual_mailbox_maps ist nicht null.
  • Die Absenderdomäne stimmt mit $ Relay_Domains überein, aber der Absender ist nicht in $ Relay_recipient_maps aufgeführt , und $ Relay_recipient_maps ist nicht null.

Wenn die Adresse Absender keine Bedingung oben entspricht, standardmäßig Postfix wird erlauben es.


Zurück zu Ihrer ursprünglichen Frage: Der einzige Weg, wie ich dies bisher herausgefunden habe, ist folgender. Aber gibt es etwas Einfacheres ?

NEIN , Ihre einzige Option sind wahrscheinlich SMTPD-Restriktionsklassen. Für andere Lösungen können Sie ein beliebiges Richtlinienserver-Addon wie postfwd, policyyd und andere verwenden.


Vielen Dank. Ich freue mich über das Feedback. Es ist schön zu wissen, dass ich nichts völlig Offensichtliches verpasst habe.
— Chris Snyder
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.