Postfix - Como processar emails de entrada?

5

Estou criando um aplicativo da web onde os usuários adicionam novos conteúdos enviando e-mails para o aplicativo. O endereço de e-mail usado para cada usuário é personalizado (por exemplo, [email protected]) e é criado dinamicamente como uma caixa de correio virtual do Postfix.

O usuário precisa enviar e-mails para seu endereço de caixa de correio personalizado ([email protected]) e eu quero processar cada e-mail recebido, analisar seu conteúdo e preencher meu banco de dados com dados do e-mail.

Eu tentei usar o filtro Postfix After Queue , mas o que eu realmente quero é processar emails assim que eles forem salvos no virtual do usuário pasta de caixa de correio.

    
por Borivojević 14.03.2011 / 14:20

4 respostas

5

Eu tomaria outra abordagem para isso.

Em vez de criar caixas de correio individuais, eu criaria um endereço catchall e, em seguida, via / etc / aliases, enviaria para um script no qual eu faria toda a minha análise e arquivamento. Não há razão para usar caixas de correio quando você não vai armazenar e-mails nelas, é uma sobrecarga enorme.

Em / etc / aliases você poderia fazer essa entrada

usermail: "|/path/to/myscript.pl" 

e, em seguida, todo o e-mail seria enviado diretamente para o myscript.pl e você pode manipulá-lo lá.

    
por 14.03.2011 / 19:10
2

Existe um programa chamado procmail (um LDA) que faz quase exatamente o que você está procurando.

    
por 14.03.2011 / 17:01
2

Posso pensar em duas possíveis soluções para isso:

Primeira possibilidade : você pode definir um mailbox_command personalizado no Postfix. Para cada email que o Postfix receber, ele chamará o mailbox_command definido no arquivo de configuração e fornecerá o email como texto simples em stdin . Dessa forma, você pode decidir como deseja processar cada email. Você terá que analisar os cabeçalhos do email você mesmo embora. Você pode dar uma olhada na documentação do Postfix para ter uma ideia de como fazer isso funcionar. Aplicativos adicionais como procmail também podem atuar como mailbox_command e ajudar você a processar os e-mails recebidos.

Segunda possibilidade : use o Dovecot para armazenar emails. Você não precisa ativar os módulos POP / IMAP do Dovecot. No entanto, o Dovecot vem com o fantástico utilitário doveadm , que permite consultar caixas de correio e ler a partir delas. Com doveadm , você pode selecionar automaticamente novos e-mails, e-mails da semana anterior, ler todo o e-mail, apenas parte dele, excluir mensagens antigas e assim por diante. É um utilitário poderoso, eu o uso em vários scripts para limpar e-mails antigos ou fornecer learn-as-spam pastas para usuários. Dê uma olhada na documentação no wiki.

(Nota: também postei isso no Stackoverflow, onde o pôster fez a mesma pergunta)

    
por 14.03.2011 / 19:09
1

Eu pesquisaria as caixas de correio usando o POP3 / IMAP, baixaria as mensagens e as processaria (em vez de tentar integrar algo na pilha do Postfix). Isso também lhe dará um nível de tolerância a falhas se o sistema de análise quebrar ou precisar ser colocado offline por uma janela de tempo.

    
por 14.03.2011 / 14:37

Tags