Como configurar um servidor SMTP falso para capturar todos os emails?

50

Estou procurando um serviço smtp que essencialmente obedeça ao RFC, exceto que, em vez de enviar e-mail, ele simplesmente registra em um arquivo

[date] sent mail to <address>

Como queiras. Posso basear isso junto com o mínimo de funcionalidade necessária em python em cerca de meia hora, mas se houver um projeto existente que funcione melhor, prefiro usá-lo.

O motivo da necessidade é depurar um aplicativo que continua enviando 7 * a quantidade de e-mail que deveria.

EDIT: E já perguntou: https://stackoverflow.com/questions/1006650/dummy-smtp-server-for-testing-apps-that-send-email

richo
fonte
Sim, esta pergunta foi respondida no stackoverflow, mas eu não vi a resposta baseada em python por lá.
precisa saber é o seguinte
Isso também é respondido no stackoverflow: stackoverflow.com/questions/48653699/…
realbart

Respostas:

58

Se você tem python por aí, isso irá gravar a conversa SMTP no stdout.

sudo python -m smtpd -n -c DebuggingServer localhost:25

http://docs.python.org/library/smtpd.html#debuggingserver-objects

John Mee
fonte
Retiro, ele suporta emails em HTML.
HTTP500
2
ainda é a melhor maneira de depurar!
MarZab #
Não há suporte para starttls :(
Att Righ
11
@AttRigh, o smtplib implementou o TLS, mas usá-lo não será tão simples quanto isso. Poste a pergunta; talvez alguém já tenha um script?
John Mee
11

Você deve dar uma olhada no smtp-sinkque faz parte do Postfix. Você não precisa executar o Postfix para fazê-lo funcionar. Basta instalá-lo para ter o executável. Tudo o que você precisa pode ser configurado através dos parâmetros da linha de comando:

http://www.postfix.org/smtp-sink.1.html

mailq
fonte
Obrigado mailq. Isso é mais ou menos exatamente o que eu estava procurando!
Richo
8

Há também uma gema de rubi chamada mailcatcher .

Você pode ler os e-mails diretamente no seu navegador através da interface da web integrada; há uma captura de tela da página inicial abaixo.

Interface do Mailcatcher

David Costa
fonte
11
Atualmente, usamos o mailcatcher, trava demais.
Jacob Evans
6

Utilizamos o serviço da web http://mailtrap.io no ambiente de desenvolvimento e preparação. É independente da plataforma e não exige que você execute seu próprio SMTP.

Oferece:

  • Todos os emails em um só lugar
  • Acesso compartilhado da equipe de desenvolvimento à caixa de entrada
  • Ferramentas de desenvolvedor para analisar e-mails
  • Configuração flexível
Bogdan Gusiev
fonte
Isso é ótimo e muito mais robusto do que eu estava fazendo! Obrigado.
Richo
Eu gosto que eles oferecem um plano gratuito generoso (por enquanto).
David
3

O smtp4dev funcionou bem para mim. (Apenas Windows)

Ferruccio
fonte
Acabei de instalar e usar esta pequena ferramenta incrível. Perfeito para as minhas necessidades (sem java e uma boa interface do usuário)
Nick.McDermaid
2

http://quintanasoft.com/dumbster/

Parece que provavelmente fará o trabalho, para quem mais se deparar com isso.

richo
fonte
Pena que requer um javavm. Além disso, alguém tem bifurcada e trabalhou com ele mais recentemente ... github.com/rjo1970/dumbster
John Mee
Saúde John. Baseado em Java foi o suficiente para me adiar no final, acabei escrevendo algo sozinho.
Richo
2

Isenção de responsabilidade: esta é uma resposta tardia, mas acredito sinceramente que ajudará futuros telespectadores. Observe também que trabalhei neste produto.

Construímos o Mailosaur para resolver esse problema exato. Desde então, o criamos para adicionar endereços de e-mail de teste e SMTP.

isNaN1247
fonte
1

Eu apenas bifurco praticamente qualquer serviço smtp e envia o resultado para um pouco de balde!

Tony Roth
fonte
Mas estou falando de e-mails em massa e com dados de clientes ativos envolvidos. Eu preciso ter certeza de que não vou inundar os intertrons com correspondência.
Richo
Acabei estendendo a classe smtpd.SMTPServer do python, lançarei o projeto publicamente em uma semana, mais ou menos, quando estiver feliz com ele (estou empacotando-o com um conjunto de testes httpd que escrevi há algum tempo). Eu nomeei provisoriamente o conjunto sdb.
richo
@Richo: existem várias maneiras de impedir que um servidor SMTP envie emails - a maioria permite desativar as conexões de saída ou redirecionar todas as mensagens, ou você pode bloquear as conexões de saída para a porta 25 .... ninguém se incomodaria em escrever um servidor de correio fictício whwn é trivial configurar um real para se comportar dessa maneira.
symcbean
@symcbean: todos esses pontos são válidos. Pessoalmente, acho mais fácil interromper meu serviço de email habitual, iniciar meu serviço de depuração, depurar e ativar o ambiente ativo novamente. Kludges, como descarregar todo o tráfego da porta 25, impedem que outras pessoas enviem emails. Obrigado pela ajuda, porém,
richo
nada disso faz sentido, todos os gateways smtp fornecerão essa funcionalidade exata sem perder nenhum dos e-mails ativos enviados!
tony roth