Pergunta

Eu estou tentando escrever um aplicativo fortemente baseada em e-mail no Python SDK do Google App Engine. Tenho notado que o Google permite receber e-mail através do seu API , e que facilmente lhe dá acesso aos campos padrão, como From, To, corpo, etc. no entanto, se eu estou tentando verificar se um endereço de e-mail veio de quem ele disse que veio de (tipo de no caminho que Posterous faz isso por você), como eu posso? Eu não tenho acesso a qualquer um dos cabeçalhos de e-mail, por isso não posso verificar o registro MX de endereço ou nada extravagante IP do servidor de envio assim.

Todas as idéias?

Foi útil?

Solução

Na verdade, embora não seja bem documentada, as fontes aqui sugerem que a mensagem mime original do qual os objetos acessíveis você se estão em forma está disponível como a propriedade .original do objeto útil - que é uma instância de email.message.Message , então você deve ser capaz de obter os cabeçalhos de e-mail de lá. Não tenho a certeza que leva você muito mais longe em sua busca para a validação, no entanto.

Outras dicas

E-mail, geralmente não é um meio verifyable, a menos que você assiná-lo com PGP ou S / MIME. Se você não tem cabeçalhos, você não tem nada para verificar.

A única coisa que você pode fazer é e-mail o endereço e pedir a pessoa para confirmar que eles realmente enviou a mensagem. Isso é muito mais difícil para o remetente do e-mail fraudulenta de falsificar (mas não impossível).

Ou você poderia perguntar ao usuário colocar uma senha em cada mensagem.

Alex está certo sobre como acessar os cabeçalhos, mas isso não permite que você para verificar o remetente real do e-mail: qualquer um pode enviar um e-mail com qualquer endereço 'de' eles desejam, por isso não contar com a partir do endereço como prova oficial de que a enviou.

Se esta é parte de um processo de registo ou iguais, então por que você não enviar de volta um "desafio" (por exemplo, URL para ir para o registo contínuo ou seja, com uma chave única e calendarizados) a (supostamente ) originador? Desta forma, você pode verificar se o endereço de email não é forjada.

Os "grandes caras" (por exemplo, Google) usam este processo muito, deve haver uma razão.

Desconsidere minha sugestão, se isso não se encaixam no seu caso de uso.


Atualização : você poderia ter o trânsito e-mails através de um outro Web Service (a ser determinado) antes de chegar a sua aplicação GAE? Dessa forma, você ainda pode aproveitar GAE ao mesmo tempo ter uma baixa de processamento de trabalhos indiretos, tais como e-mail de verificação feito em outro lugar?

Você pode verificar o remetente usando apenas DKIM. GAE assina automaticamente o Contas do Google e-mails com DKIM mas você precisa de um serviço externo (que deve ser acessado através de HTTP / HTTPS) para consultar o DNS e fornecer-lhe os campos txt de DNS.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top