# ============================================================================= # Saida para o SMTP — porta 587, e so para quem manda e-mail. # # POR QUE ISTO FALTAVA # # O `deny-cross-tenant` deste namespace libera egress para: pods daqui, a faixa # de Services (10.43.0.0/16), DNS, e **443 para a internet**. Nada mais. O # Keycloak, que e quem manda o e-mail de boas-vindas, batia em # `Network is unreachable` ao tentar 587 — e o erro que chegava ao # provisionamento era "Failed to send execute actions email", que manda procurar # no SMTP e nao na rede. # # Medido em 2026-09-24, no primeiro provisionamento que chegou a etapa do # e-mail. # # POR QUE NAO ABRIR A 587 PARA O NAMESPACE INTEIRO # # Aqui dentro moram o Postgres, o PgBouncer, o Gitea-cliente e o servico de # captacao. Saida para porta de e-mail e caminho de exfiltracao: um processo # comprometido que nao manda e-mail nao tem por que alcancar um servidor de # e-mail. So os dois que mandam. # # As politicas se SOMAM: esta nao afrouxa o `deny-cross-tenant`, acrescenta uma # permissao a ele. # ============================================================================= apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: egress-smtp namespace: plataforma-prod spec: podSelector: matchExpressions: - key: app operator: In values: ["keycloak", "servico-captacao"] policyTypes: [Egress] egress: - ports: - { protocol: TCP, port: 587 } to: # A internet, e nao a rede interna: o provedor de e-mail e de fora. - ipBlock: cidr: 0.0.0.0/0 except: ["10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"]