Monitorando mensagens enviadas usando o EXIM

2

Eu trabalho como um cara de TI em um escritório de advocacia. Recentemente, pediram-me para fazer um sistema em que todos os emails enviados do nosso servidor para os nossos clientes serão colocados em espera primeiro e aguardar aprovação antes de serem enviados para o cliente.

Nosso servidor de e-mail usa o Exim (é o que diz no cPanel). Estou planejando criar filtros onde os emails enviados serão encaminhados para uma conta de editor. Em seguida, o editor revisará e editará o conteúdo do email. Quando o editor já aprovar o email, ele será enviado ao cliente pelo editor, mas ainda usando o remetente original no campo "De:" e "Responder para:".

Eu encontrei alguns ponteiros deste site = > link .

Quando os filtros estiverem no lugar, quero fazer uma interface PHP simples para o editor verificar os emails encaminhados e editá-los, se necessário. O editor pode clicar em um botão "Aprovar" que finalmente entregará a mensagem usando o remetente original.

Eu também estou pensando que talvez um sistema sem PHP seja suficiente. O editor pode receber os e-mails de seu próprio cliente de e-mail editá-los e simplesmente enviar o e-mail como se ele fosse o remetente original.

  1. O meu plano é viável?
  2. Haverá problemas que eu ignorei?
  3. Existe o perigo de ser tratado como spam pelos outros servidores de mensagens, uma vez que vou atrapalhar os cabeçalhos?

Atualização: (6 de abril de 2012) As perguntas acima são provavelmente vagas, então aqui está uma questão mais específica: 1. Posso encaminhar TODAS as mensagens enviadas fora do nosso domínio para serem enviadas para outro endereço e NÃO para o destinatário real?

    
por dashmug 06.04.2012 / 05:57

2 respostas

1

Is my plan feasible?

Não, não realmente. O problema é (quase) qualquer coisa em um email e o cabeçalho do email pode ser alterado e falsificado. Além disso, qualquer pessoa na sua empresa pode enviar e-mails através de qualquer outro servidor que eles gostem (a menos que você bloqueie todos os acessos à internet, espere, você não pode, eles ainda têm seus smartphones, etc.), aparentemente vindo da sua empresa. Se um funcionário da sua empresa quiser evitar o escrutínio do PHB, basta usar um servidor de email externo (MTA).

Você nem precisa se preocupar com a capacidade de entrega, digamos se a saudação rDNS ou EHLO não corresponder ao caminho de retorno. Apenas faça o domínio do caminho de retorno ser o mesmo que o MTA de saída, mas mude o endereço De: para ser da sua empresa e quase todo mundo acha que ele é da sua empresa.

Will there be issues that I have overlooked?

Sim, sempre. É um exercício inútil e é trivial contornar. Para evitar você e seus colegas de trabalho de qualquer dor de cabeça que você precisa explicar isso ao seu PHB e convencê-la ou ele que é o caminho errado a seguir. Existem maneiras melhores de abordar isso. Mas essas são mais políticas da empresa, educar e contratar os funcionários certos e regulamentações específicas do que medidas extremas (e fáceis de evitar) que limitam a liberdade da pessoa. Este tipo de medidas draconianas tem um jeito de te morder de volta a longo prazo, quase sem exceção.

Does it have the danger of being treated as spam by the other mailservers since I'll be messing up the headers?

Não é provável. Qualquer coisa nos cabeçalhos pode ser falsificada e alterada (veja acima). Isso é praticamente o padrão, MTAs adicionar e alterar as coisas nos cabeçalhos o tempo todo. Se você faz isso como um humano, ou cria um script para mudar as coisas, o MTA realmente não se importa. Contanto que seja validado e aceito pelo MTA, ele não deve ter muito mais chance de ser marcado como spam (dentro da razão, é claro).

De qualquer forma, não quero pensar mais sobre essa ideia verdadeiramente horrenda. : - (

    
por 06.04.2012 / 08:24
1

Infelizmente, a resposta à sua pergunta é sim, é possível implementar tal sistema, mas felizmente não é fácil.

Desde que você trabalha para um escritório de advocacia, estou surpreso que ninguém tenha levantado as questões em torno de responsabilidade e autenticidade na criação de um sistema tão horrível. Ao lidar com qualquer forma de comunicação, a criação de um intermediário não interativo é uma idéia terrível e os resultados se tornarão rapidamente comparáveis a tocar telefones quebrados com seus clientes.

A maneira mais rápida de configurar um sistema de acordo com sua especificação é executar 2 instâncias do Exim; uma instância para manipular mensagens de entrada e colocá-las em spool em disco e outra instância para manipular a entrega das mensagens em spool. O fluxo de trabalho básico para essa situação seria o seguinte:

  1. A instância 1 do Exim lida com novas mensagens e as grava em um diretório de spool, digamos /var/spool/exim-in/
  2. Um aplicativo personalizado escrito lerá mensagens de /var/spool/exim-in/input/ e permitirá que o editor faça as alterações necessárias ou exclua a mensagem do spool. O aplicativo moverá a mensagem para um novo diretório de spool, digamos /var/spool/exim-out/
  3. A instância 2 do Exim agora gerencia a entrega das mensagens localizadas no diretório de spool /var/spool/exim-out/

Configurar o Exim para fazer isso não é muito difícil, e configurações semelhantes podem ser obtidas visualizando uma configuração típica do MailScanner , que também separa o Exim em duas filas, com as mensagens sendo capazes de se mover de uma fila para outra através do MailScanner. Veja esta página para uma rápida visão geral de como o MailScanner está configurado com o Exim.

Menos trivial seria escrever o aplicativo que forneceria uma interface para manipular o processo de edição e aprovação necessário. Há um número infinito de obstáculos que você enfrentaria se tentasse escrever um aplicativo desse tipo, como analisar o cabeçalho corretamente e lidar com mensagens complexas do tipo MIME. Você essencialmente estaria reescrevendo um MUA típico como o Outlook ou o Thunderbird; a não ser, é claro, que seu editor não se importe em ver dados SMTP e HTML brutos, e nesse caso você pode simplesmente exibi-lo como texto simples.

Em suma, não faça isso. Não é apenas uma ideia terrível, mas você está fadado a ter muitos obstáculos na implementação, o que torna esse esforço completamente inviável para um desenvolvedor individual.

link

    
por 22.05.2012 / 00:39

Tags