Configurando o servidor de correio somente para recebimento e manipulando mensagens e anexos de entrada

3

Eu gostaria de criar um cenário a seguir no meu servidor Ubuntu 14.04:

  • configurar o servidor de e-mail (ou é chamado de 'Agente de Transferência de E-mail'?), que deve cuidar apenas do recebimento de e-mails. Não há necessidade de configurar o envio de e-mails desse servidor.
  • executa a filtragem básica de emails recebidos (verifique se o email tem um anexo adequado - exatamente um arquivo com uma extensão específica)
  • salvar anexo somente em alguma pasta específica
  • excluir mensagem processada (s)

Eu não sei quase nada sobre servidores de email e tentei jogar um pouco com Postfix , mas se eu entendi corretamente, existem algumas soluções melhores para filtragem e processamento de email? Eu sei Python e PHP , então eu poderia lidar com filtragem / processamento com um desses idiomas, mas ainda não tenho certeza exatamente onde começar.
Eu prefiro lidar com emails de entrada imediatamente depois de receber, se possível, em vez de executar o cron job em algum script Python, e excluir mensagens processadas imediatamente após salvar o anexo.
Não preciso configurar nenhuma segurança ou proteção contra spam / vírus neste momento específico.

Como estou um pouco confuso sobre como configurar esse fluxo de trabalho, gostaria de pedir pelo menos um ponto de partida para cada etapa e também links para leitura adicional são mais do que bem-vindos! Eu não peço uma solução completa, mas algumas dicas sobre pacotes que podem ser úteis neste cenário são muito apreciadas.

    
por errata 18.02.2015 / 11:47

1 resposta

3

Você indica que deseja executar isso no seu servidor. Se essa máquina não estiver em um endereço IP permanente, para que ela possa manipular o correio enviado para um domínio de email específico, você precisará configurar o recebimento de email do provedor que controla o email.

Como você indica que deseja excluir mensagens após o manuseio, não deve se preocupar em ter todas as correspondências reunidas pelo seu provedor em uma conta de usuário, portanto, você deve configurá-las.

Em seguida, você pode pegar o e-mail usando fetchmail ou um programa semelhante, que fala com seu postfix localmente apenas ouvindo as conexões locais. (se o seu servidor tiver um endereço IP fixo e puder manipular conexões stmp externas, você pode pular esta etapa e fazer o resto).

postfix deve ser configurado para usar procmail como seu comando de caixa de correio (em main.cf :

mailbox_command = procmail -a "$EXTENSION"

fetchmail deve ser executado como um trabalho cron regular (eu verifico cada minuto com meu provedor) para algum usuário que faz o processo. Esse usuário deve ter um arquivo ~/.procmailrc que pode fazer alguma filtragem e enviar o e-mail para um script usando uma entrada como:

:0
$ ^Subject:.*some_text_that_has_to_be_in_the_subject_to_be_valid_for_processing
| /usr/local/bin/your_program 

Agora, your_program precisa ser capaz de lidar com o formato do arquivo (cabeçalho seguido de corpo). Eu uso o python e seu módulo padrão email para lidar com as complexidades do anexo MIME.

Dica: Tenha your_program armazenando os dados de entrada (em sys.stdin ) completamente em algum arquivo xyz durante o desenvolvimento, para que você possa ver isso e desenvolvê-lo indepedentemente (apenas executando your_command < xyz ) não precisa passar pelo incômodo de enviar e-mails com anexos para testar essa etapa do processo.

    
por 18.02.2015 / 12:41

Tags