Postfix no servidor de desenvolvimento, permite que o email seja enviado para apenas um domínio

11

Temos o postfix em nosso servidor de desenvolvimento, e eu gostaria que ele pudesse enviar apenas emails para o nosso domínio, e não para outros domínios, impedindo que usuários externos recebessem acidentalmente emails do nosso servidor de desenvolvimento.

Pesquisei os documentos, tentei várias coisas, mas ainda está enviando para todos os domínios ...

datadevil
fonte

Respostas:

7

Os mapas transport (5) são usados ​​para redefinir como o email é roteado pelo postfix.

  • Adicione a seguinte linha ao /etc/postfix/main.cf:

    transport_maps = hash:/etc/postfix/transport
    
  • Adicione o novo arquivo / etc / postfix / transport com este conteúdo:

    .example.com   :
    example.com    :
    *              discard:
    

Substitua example.compelo domínio para o qual seu servidor de e-mail ainda deve enviar e-mails. Se você não se importa com subdomínios, remova a primeira linha.

Não se esqueça de fazer o hash do arquivo depois de editá-lo com postmap (1) e recarregar o postfix para que as alterações tenham efeito:

# postmap /etc/postfix/transport && postfix reload
Carlo Arenas
fonte
7

Você pode restringir facilmente os destinatários com smtpd_recipient_restrictions padrão ou, mais precisamente, check_recipient_access .

Basta criar uma tabela de acesso (5)/etc/postfix/access com o seguinte conteúdo ( exemplo.com sendo o domínio para o qual você deseja permitir o envio de email):

example.com    OK

Você também pode permitir apenas alguns endereços específicos:

[email protected]    OK
[email protected]    OK

Não se esqueça de fazer o hash do arquivo depois de editá-lo com o postmap (1) :

# postmap /etc/postfix/access

Agora coloque as seguintes restrições de destinatário no seu main.cf:

smtpd_recipient_restrictions = 
    hash:/etc/postfix/access
    reject

e recarregue o Postfix:

postfix reload

Depois disso, teste se funciona .

joschi
fonte
1
Isso funcionará para mensagens enviadas via SMTP, não via comando / usr / lib / sendmail, e os processos locais podem fazer as duas coisas. Parece que a configuração 'author_submit_users' pode ser usada para bloquear o envio local com sendmail / postdrop, então as restrições smtpd serão suficientes.
Jacek Konieczny
6

Portanto, se alguém tropeçar nisso, como eu: a resposta é de fato header_checks e funciona da seguinte maneira:

  • Adicione a seguinte linha a /etc/postfix/main.cf:

    header_checks = regexp:/etc/postfix/header_checks
    
  • Adicione o novo arquivo /etc/postfix/header_checkscom este conteúdo:

    /^To:.*@allowed-domain.com/  DUNNO
    /^To:.*@/   REDIRECT [email protected]
    

Substitua allowed-domain.compelo domínio para o qual seu servidor de e-mail ainda deve enviar e-mails. Substitua [email protected]pelo endereço de email para o qual todos os outros emails devem ser redirecionados.

Se você precisar permitir vários domínios, a primeira linha deve ficar assim:

/^To:.*@(allowed-domain.com|another-domain.com)/  DUNNO

Em vez de redirecionar, você pode simplesmente soltar todos os outros e-mails. Substitua a segunda linha acima por:

/^To:.*@/   DISCARD No outgoing mails allowed

Explicação:

  • O Postfix passa pelos cabeçalhos de email, um por um.
  • Cada linha de cabeçalho é comparada com o header_checksarquivo linha por linha.
  • Se corresponder à primeira linha ( To:contém o domínio permitido), pula para a próxima linha de cabeçalho e inicia as verificações de cabeçalho novamente a partir do topo. Como nenhuma outra linha corresponderá, isso significa que o correio é entregue.
  • Se corresponder à segunda linha ( To:contém outro endereço de email externo), redirecionará o email.
Jonas
fonte
esse problema parece ter sido resolvido com esta resposta, talvez deva ser marcado como resolvido? (que funcionou como um encanto para mim pelo menos)
Sverre
Cc:e quanto Bcc:?
Paul Tobias
3

Você já tentou header_checks (5) ?

0x44
fonte
não, verificando isso agora
datadevil 15/12/2009