Como interceptar dados de e-mail recebidos entre o servidor de e-mail e o servidor da web

1

Fui solicitado a fornecer uma maneira de carregar e-mails recebidos, manipular uma parte do texto e, em seguida, encaminhá-lo para o servidor da web para o cliente ler. Basicamente, intercepte o mail, colocá-lo através de outro processo e uma vez que este processo for concluído - isto é importante - jogá-lo no servidor web, exatamente como aconteceria antes do meu processo ser interceptado.

Além do arquivo de e-mail real, também preciso ler informações sobre a conta de um MySQL db.

O servidor de correio é o Postfix / Dovecot e o servidor da Web é o Apache - executado no CentOs. Eles podem estar rodando no mesmo servidor ou não. Eu não quero fazer o trabalho do servidor e procurar por vírus ou fazer qualquer autenticação - tudo isso já deveria ter acontecido.

Examinei algumas ideias de armazenamento em cache, ou mesmo usando o NginX como um proxy IMAP, mas acho É como tentar matar uma mosca com uma espingarda. Para piorar, não sou realmente uma pessoa da web, então não conheço todas as complexidades do Apache.

Alguém tem alguma idéia de quando é o momento certo para interceptar este e-mail antes de chegar ao navegador de uma maneira perfeita?

Qualquer ajuda seria muito apreciada.

Muitos agradecimentos

    
por guestTM 02.10.2013 / 16:54

2 respostas

2

A maneira mais fácil é executar o LDA não diretamente do postfix, mas sim da invocação do dovecot_lda dentro do script.

Vamos modificar a configuração do postfix:

mailbox_command = /some/path/to/the/script.sh "$SENDER" "$RECIPIENT"

Deixe o script.sh conter esse código:

#!/bin/sh

MSG=$(cat < &0)
ARG1=$1
ARG2=$2

# let's deliver message as usual
echo "$MSG" | /usr/lib/dovecot/dovecot-lda -f $ARG1 -a $ARG2

# from here we can do anything we want
echo "$MSG" > /some/path/to/the/fresh/$$.copy
echo $MSG | while read line
do 
   if [ $line != '' ]
   then
      echo $line >> /some/other/file.txt
   else 
      echo '---------------------' >> /some/other/file.txt
      break
   fi 
done
#####

Em seguida, seu software que gera páginas da Web precisa ler apenas tudo, desde / some / path / to / the / fresh / * e incluí-las em html.

    
por 03.10.2013 / 15:09
0

Você provavelmente quer dar uma olhada no Amavis . É principalmente anunciado como um antivírus, mas você pode desabilitar isso e executar qualquer script perl que você deseja. Você encontrará exemplos de scripts incluídos, alguns dos quais contêm chamadas para um banco de dados. Integra-se muito bem com o Postfix / Dovecot.

    
por 02.10.2013 / 17:49