Como redirecionar todos os emails de saída do postfix para um único endereço para teste

13

Estou configurando um servidor de teste para um aplicativo baseado na Web que envia algumas notificações por email.

Às vezes, o teste é realizado com dados reais do cliente e, por esse motivo, preciso garantir que o servidor não possa enviar e-mails a nossos clientes reais enquanto estivermos testando.

O que eu quero é configurar o postfix para que ele receba qualquer email de saída e o redirecione para um único endereço de email, em vez de entregar para o destino real.

Estou executando o servidor Ubuntu 9.10.

Agradeço antecipadamente

thatjuan
fonte

Respostas:

19

Configure um usuário local para receber todos os emails interceptados:

adduser mailtrap

Você precisa adicionar o main.cf:

transport_maps = hash:/etc/postfix/transport
luser_relay = mailtrap

Em seguida, crie / etc / postfix / transport com isso:

localhost :
your.hostname.example.com:
* local:mailtrap

Salve e execute: postmap /etc/postfix/transportfinalmente reinicie o postfixinvoke-rc.d postfix restart

Todos os emails locais serão entregues normalmente e os emails externos serão entregues na mailtrapconta local .

Andrew Schulman
fonte
Era exatamente isso que eu procurava ... obrigado!
thatjuan
3
Funciona para mim, mas só depois que eu adicionei luser_relay = xxxxxno main.cf. Sem isso, os e-mails retornariam.
Alex R
1
Ao usar o Ubuntu, você também pode reiniciar o Postfix com sudo service postfix restart. A localização do seu arquivo main.cf mencionado acima é /etc/postfix/main.cf. Ao instalar e configurar o Postfix pela primeira vez, você pode usar a Local onlyopção de instalação.
mtnorthrop
no MAC, você deve executar postmap hash:/etc/postfix/transporte sudo postfix stop,sudo postfix start
Bang Dao
isso é ótimo. alguém sabe como eliminar duplicatas quando uma mensagem tem vários destinatários?
graywh
10

Melhor é criar um arquivo de alias virtual:

Em /etc/postfix/main.cf:

virtual_alias_maps = pcre:/etc/postfix/virtual

Em / etc / postfix / virtual:

/.*@.*/ root

Você pode substituir rootpelo usuário que desejar receber todos os emails de saída. Esse padrão pode ser ajustado se você desejar que o correio local seja entregue normalmente (sem redirecionamento):

/.*@(?!hostname\.localdomain$).*/ root

Idéia original encontrada aqui: Servidor de desenvolvimento Postfix - intercepte todos os emails de saída

Paul Gideon Dann
fonte
2
Observe que você pode precisar de sudo apt-get install postfix-pcreantemão, para evitar ... surpresas.
mirabilos
funciona muito bem para mim!
michael-mammut
erro "Usuário desconhecido na tabela de alias virtual"
Alex R
5

O Postfix fornece algo chamado smtp-sink. Por padrão, oculta todos os emails que recebe. Versões posteriores também podem ser configuradas para capturar o email em arquivos.

Tecnicamente, ele não usa o postfix (mas um utilitário fornecido pelo postfix.) Também não redireciona tecnicamente cada email para um único endereço de email. Mas captura todo o tráfego na porta 25 e o despeja em um arquivo que pode ser analisado.

vagão
fonte
Como se chama smtp-sink? A única página de manual que encontrei on-line fez com que parecesse um programa normal, mas se veio com o postfix, não está instalado no meu sistema (OSX 10.6). Como eu executaria este serviço?
Chris Bloom
Existe uma página de manual para smtp-sink. Mas alguns parâmetros também são descritos aqui: blog.malowa.de/2011/04/postfix-as-spam-trap-server.html
mailq