TLDR: Preciso de um utilitário que leia um e-mail e examine os campos Para: e Cc: para encontrar um endereço de e-mail em uma lista de endereços conhecidos. Se encontrar um, quero que ele envie o e-mail com uma deliver_to: <address>
linha de envelope extra.
Fundo
Meu ISP entrega todos os e-mails da empresa para uma caixa de correio de "caixa de correio de domínio"/"Pegar tudo", mas não registra o destinatário do envelope em nenhum lugar. Temos um servidor de troca que recebe dessa caixa de correio (usando o chamado "conector POP3") e os distribui para as caixas de correio dos usuários. E-mail em Cco e e-mail de listas de discussão são entregues em uma caixa de correio padrão. Estou substituindo a troca e esta é a única peça que resta. Eu posso recuperar e-mails com o getmail usando MultidropPOP3Retriever
, mas o getmail espera encontrar uma linha de envelope com o endereço de e-mail do destinatário (por exemplo, entregue_para: [email protected]) que meu ISP não fornece. Então eu tenho que fazer o meu melhor e recuperá-lo de To:/CC:.
Acontece que minha resposta estava na extensa documentação do getmail. Eu preciso usar o que getmail chama
MultiGuesser
.No entanto, como no meu caso, meu ISP estava adicionando uma linha como esta nos cabeçalhos do envelope:
e como o MultiGuesser não é perfeito (por exemplo, ele não consegue adivinhar se o destinatário é bcc'ed), eu finalmente implementei a ideia original de adicionar
delivered_to
linhas. Eu mantive o MultiGuesser apenas no caso de meu ISP parar de adicionar esta linha útil. O utilitário é um script bash que usaformail
(sugerido por dirkt em sua resposta). Não é rápido porque cria arquivos temporários para cada e-mail processado, mas funciona bem.My
getmailrc
contém um filtro como este que chama o script acima:Se "utility" significa "script de shell para o remetente/receptor", dê uma olhada em formail . Para o processamento automático de mensagens recebidas por usuário, dê uma olhada no procmail .
Se você estiver substituindo o servidor Exchange por um servidor de e-mail Linux, provavelmente desejará fazer isso dentro do servidor de alguma forma.