Pergunta

Eu tenho uma escuta servidor postfix e receber todos os e-mails recebidos em mywebsite.com Agora eu quero mostrar esses e-mails postfix em uma interface personalizada e as demais para que cada usuário

Para ser claro, será dado todos os usuários de mywebsite.com mail como someguy@mywebsite.com que recebe e-mail na minha máquina de produção, mas vê-los em seu próprio console construído em seu dashboard no mywebsite.com.

Assim, para tornar o usuário ver o e-mail que ele recebeu, eu preciso criar uma réplica de e-mail do e-mail Postfix para que mywebsite (que roda em django-python) serão refletindo-los prontamente. Como faço para conseguir isso. Para ser mais preciso esta é a minha pergunta, como faço para converter um e-mail Postfix para um objeto de correio python (de modo que o meu sistema / website) entende?

Só para ficar claro que tenho escrito código pseudo para conseguir o que eu quero:

email_as_python_object = postfix_email_convertor(postfix_email)
attachments_list = email_as_python_object.attachments
body = email_as_python_object.body # be it html or whatever

E, a propósito eu tentei módulo de e-mail padrão que vem com python, mas isso não é útil para todos os casos. E mesmo que eu preciso para lidar com anexos de e-mail manualmente (que eu odeio). Eu só preciso de uma maneira simples de lidar com casos como estes (Eu queria saber como postfix entende um e-mail recebido. Ie .. como ele automaticamente descobre diferentes cabeçalhos, anexos etc ..). Por favor me ajude.

Foi útil?

Solução

Em primeiro lugar, regras de correio roteamento Postfix pode ser muito complexo e sua solução presumivelmente preferido envolve um monte de truques nos lugares errados. Você não quer mostrar acidentalmente algumas anothers usuário mails, não é? Em segundo lugar, embora Postfix pode fazer quase tudo, não deve, pois só é um MDA (agente de entrega de correio).

A sua solução é melhor resolvido usando um servidor POP3 ou IMAP (Cyrus IMAPd, Courier, etc). servidores IMAP pode ter "contas de superusuário" que podem ler mails de todos os usuários. Sua aplicação web pode se conectar à caixa de correio usuários e retreive os cabeçalhos e bodys.

Se você só quer mostrar a linha de assunto que você pode buscar aqueles com um comando IMAP especial e sobrecarga muito baixa. A biblioteca IMAP Python não tem o mais fácil de entender API embora. Vou dar-lhe um tiro (não marcado!) Com um exemplo tirado da biblioteca padrão:

import imaplib

sess = imaplib.IMAP4()
sess.login('superuser', 'password')
# Honor the mailbox syntax of your server!
sess.select('INBOX/Luke') # Or something similar. 
typ, data = sess.search(None, 'ALL') # All Messages.

subjectlines = []
for num in data[0].split():
    typ, msgdata = sess.fetch(num, '(RFC822.SIZE BODY[HEADER.FIELDS (SUBJECT)])')
    subject = msgdata[0][1].lstrip('Subject: ').strip()
    subjectlines.append(subject)

Este se conecta ao servidor IMAP, seleciona a caixa de correio de usuários, obtém todos os IDs de Mensagem, em seguida, obtém (espero) apenas os subjectlines e anexa os dados resultantes para o subjectlines lista.

Para buscar outras partes do correio variar a linha com sess.fetch . Para a sintaxe específica de buscar ter um olhar para RFC 2060 (Seção 6.4.5).

Boa sorte!

Outras dicas

Você quer ter postfix entregar a uma caixa de correio local, e, em seguida, usar um sistema de webmail para que as pessoas o acesso que o correio armazenado.

Não fique pendurado sobre postfix - apenas um agente de transferência - que leva mensagens de um lugar, e coloca-los em outro lugar, ele não armazena mensagens. Então postfix tomará as mensagens através de SMTP, e colocá-los em arquivos de correio locais.

Em seguida, IMAP ou algum sistema de webmail irá exibir essas mensagens para seus usuários.

Se você deseja que o e-mail integrado no seu webapp, então você provavelmente deve executar um servidor IMAP, e bibliotecas de uso python IMAP para obter as mensagens.

Eu não tenho certeza que eu entendi a pergunta.

Se você quiser que seu aplicativo web remoto para poder visualizar caixa de correio dos usuários, você pode instalar um servidor POP ou IMAP e usar um cliente de email (você deve ser capaz de encontrar um da prateleira) para ler os e-mails. Alternativamente, você poderia escrever algo para interrogar o servidor POP / IMAP usando as bibliotecas relevantes que vêm com o próprio Python.

Se você deseja replicar o e-mail para outra máquina, você poderia usar o procmail e estabelecer ações para fazer isso. Postfix pode ser configurado para procmail invocar neste wayy.

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