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: [email protected]" (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
Chris Snyder
quelle
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.

masegaloeh
quelle
Vielen Dank. Ich freue mich über das Feedback. Es ist schön zu wissen, dass ich nichts völlig Offensichtliches verpasst habe.
Chris Snyder