Adiciona a assinatura do usuário no MTA (sendmail) em vez de no MUA

3

Em um cenário no qual temos uma rede local com clientes Outlook / Thunderbird e sendmail em um servidor Linux: é possível usar um pouco de sendmail's milter para modificar as mensagens recebidas para adicionar a assinatura do remetente ao e-mail que ele envia? pode ser útil centralizar as assinaturas no servidor.

Os passos seriam algo assim:

1) O usuário compõe um email e o envia. O MUA definiu algum texto mágico de "assinatura" para ser substituído posteriormente, por exemplo: " x-replace-signature-x ", portanto o MUA deve ser configurado para adicionar essa assinatura no lugar desejado pelo usuário (abaixo do texto citado ou abaixo da resposta)

2) O email chega a sendmail's MSP queue

3) Sendmail usa o nome de usuário do cabeçalho " From ", por exemplo, [email protected]

4) Sendmail procura no sistema de arquivos a assinatura desse usuário em html (possivelmente com imagens incorporadas), ou seja, /var/lib/sendmail/signatures/user1.html

5) O milter procura " x-replace-signature-x " e substitui essa linha pelo conteúdo de /var/lib/sendmail/signatures/user.html

6) sendmail's MTA envia o e-mail (no meu caso para um smarthost).

Eu não conheço essa capacidade, então é por isso que estou pensando em um milter com correspondência de expressão regular.

    
por Emilio Lazo 25.02.2017 / 08:07

1 resposta

0

Como sugerido por @thrig, MIMEDefang é o caminho a percorrer, pesado, mas valeu a pena o esforço IMHO.

Dentro de filter_end() , a maioria das pessoas usará uma das funções:

append_text_boilerplate($entity, $boilerplate, $all)  
append_html_boilerplate($entity, $boilerplate, $all)  

embora esses acrescentam texto em vez de substituí-lo. Para fazer exatamente o que você especifica que pode usar o manipulador filter_part() . Uma maneira de fazer isso é chamar action_external_filter() da (s) parte (s) que você deseja modificar (as primeiras partes text / plain e text / html sem MIME disposição são geralmente uma boa aposta). Isso filtra a peça por meio de um comando externo. Para adicionar imagens ao HTML, você precisará adicioná-las como novas partes e, em seguida, referir-se a elas (por CID).

A maneira normal de modificar uma mensagem é chamar replace_entire_message() em filter_end() . Isso não é tão simples quanto parece, você precisará copiar a mensagem atual como um MIME :: Entity, modificar o corpo da parte e substitua todo o corpo da mensagem por um novo MIME :: Entity.

Isso deve começar:   link

Alternativamente, uma solução de baixa tecnologia seria ter o spool do sendmail ( -odd entrega adiada) em vez da entrega imediata, modificar o arquivo df enfileirado (tratá-lo como texto simples pode funcionar às vezes, mas para ser minucioso você precisa tratar como MIME), mova o par qf / df para um novo spool normalmente executado (com re-mqueue.pl talvez).

    
por 07.10.2017 / 22:30