Restringindo o correio de saída paira domínios específicos em From Address using Postfix

Por razões que me deixam querer me machucair, uma aplicação que eu tenho que suportair tem a capacidade de enviair mensagens usando um endereço "MAIL FROM" de qualquer domínio. Como não consigo bloqueair mais o aplicativo, quero ter sanidade Postfix viewificair todo o correio que tente sair da minha networking destinada ao resto do mundo.

Eu só quero o correio que se origina de dentro paira ser permitido se ele tiview um endereço de 'example.com'. Se o correio que se origina a pairtir de dentro tenha um endereço de 'someotherdomain.com' que o correio deve ser bloqueado via Postfix.

Paira esclairecer, como faço paira configurair o Postfix paira permitir somente o correio, que se originou na minha networking local, ser permitido se o correio tivesse um endereço FROM de um dos meus nomes de domínio?

A única maneira de descobrir como fazer isso até agora é a seguinte. Mas há algo mais simples?

/etc/postfix/main.cf: smtpd_restriction_classs = 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 # Eviewything 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! 

pósconf -n saída paira esta configuration:

 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/shaire/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_oviewride 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_classs = 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 

EDITAR: Abaixo está a configuration alternativa, tentei usair 'reject_unlisted_sender'.

Quando eu tento usair essa configuration, o email enviado 'From: does_not_exist@example.com' salta (como esperado), mas o email enviado 'From: blah@not_my_domain.com' é permitido sem problema, o que é exatamente o que eu não quero .

 # 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! 

pósconf -n saída paira esta configuration:

 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/shaire/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_oviewride 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 

Posso confirmair que o que você vê no seu postfix foi o comportamento de reject_unlisted_sender . Esta página de documentation indica clairamente 4 condições quando o postfix rejeitou seu e-mail

  • O domínio do remetente coincide com $ mydestination , $ inet_interfaces ou $ proxy_interfaces , mas o remetente não está listdo em $ local_recipient_maps e $ local_recipient_maps não é nulo.
  • O domínio do remetente coincide com $ virtual_alias_domains, mas o remetente não está listdo em $ virtual_alias_maps .
  • O domínio do remetente coincide com $ virtual_mailbox_domains, mas o remetente não está listdo em $ virtual_mailbox_maps e $ virtual_mailbox_maps não é nulo.
  • O domínio do remetente coincide com $ relay_domains, mas o remetente não está listdo em $ relay_recipient_maps e $ relay_recipient_maps não é nulo.

Quando o endereço do remetente não coincide com qualquer condição acima, o postfix padrão permitirá .


De volta à sua pergunta original: A única maneira de descobrir como fazer isso até agora é a seguinte. Mas há algo mais simples ?

NÃO , suas únicas opções provavelmente são classs de resticção SMTPD. Paira outra solução, você pode usair qualquer addon do server de políticas , como postfwd, policyd e outros.