Isenção de responsabilidade: eu li algumas das perguntas e artigos aqui e em outros lugares que lidam com a reescrita de cabeçalhos do Sendmail. Não encontrei uma resposta para a pergunta abaixo porque a outra pergunta está relacionada principalmente à reescrita de cabeçalhos (em vez de adicioná-los) e quase todas estão relacionadas a mensagens de saída e ao remetente do envelope (em vez do destinatário do envelope).
Tendo dito isto:
Estou executando um servidor de email, usando o Sendmail 8.14.4 no Debian jessie.
Existem alguns endereços de destinatários de e-mail que são mapeados para a mesma conta de usuário do sistema operacional. Quando o respectivo usuário do sistema operacional lê as mensagens, ele não pode determinar para qual endereço de e-mail as mensagens foram enviadas originalmente.
Portanto, gostaria que o Sendmail adicionasse um cabeçalho personalizado contendo os destinatários do envelope a todas as mensagens de e-mail de entrada.
Acho que poderia explicar melhor meu problema por exemplo:
Suponha que eu tenha dois endereços de e-mail [email protected]
e [email protected]
. Ambos são mapeados para a conta de usuário O/S offers
. Isso funciona até agora: O usuário O/S offers
, ao buscar seu e-mail, recebe todas as mensagens enviadas para [email protected]
e [email protected]
.
O problema agora é que ele não consegue determinar para qual endereço de e-mail cada mensagem foi enviada originalmente. Isso significa que: embora ele esteja vendo todas as mensagens que foram enviadas para ambos os endereços de e-mail, ele não pode dizer se uma determinada mensagem foi enviada originalmente para [email protected]
ou para [email protected]
.
Portanto, gostaria de adicionar um cabeçalho personalizado a cada mensagem de entrada, talvez algo assim: X-Envelope-Recipient: <Original envelope recipient>
.
Qual seria a maneira mais fácil de fazer isso?
Era uma vez, escrevi algumas regras personalizadas simples para o Sendmail. Mas quase 15 anos se passaram desde então, então eu gostaria de evitar isso e, portanto, espero que haja uma solução fácil ou que alguém possa me apontar na direção certa. Para ser honesto, escrever um milter para resolver meu problema atualmente me parece mais fácil do que reaprender a sintaxe de regras do Sendmail...
EDIÇÃO 1
Conforme solicitado por @AnFi, aqui está a definição do mailer local de sendmail.cf:
Mlocal, P=/usr/lib/sm.bin/mail.local, F=lsDFMAw5:/|@qPSXnz9, S=EnvFromSMTP/HdrFromL, R=EnvToL/HdrToL,
T=DNS/RFC822/SMTP,
A=mail.local -l -h inbox
O que você sugere seria contra o protocolo SMTP: há razões legítimas para adicionar endereços ao
RCPT TO
comando, apesar de não existirem nos cabeçalhosTo:
ou , ou seja, RFC 5321 7.2. Cópias "às cegas" (a ênfase é minha):Cc:
Apparently-to
O cabeçalho não recomendado é controlado com a opçãoNoRecipientAction=action
.Observe que normalmente o endereço do destinatário original já está no cabeçalho
To:
ou .Cc:
Ele não deve ser modificado para o nome da conta de usuáriooffers
, portanto, é[email protected]
,[email protected]
ou oculto. Reescrever cabeçalhos tornou-se ainda mais perigoso, pois também pode quebrar assinaturas DKIM. O único caso de uso razoável é a reescrita de endereço para correio com origem local (user
para[email protected]
).Adicionar uma lista de todos os
RCPT TO
endereços violaria o protocolo, mas você só precisa do endereço original únicoRCPT TO
para o usuário para o qual o e-mail foi entregue. Não sei como fazer isso com o Sendmail, mas o Postfix (com a configuração padrão) adiciona umX-Original-To:
cabeçalho contendo exatamente isso e, adicionalmente, umDelivered-To:
cabeçalho contendo a caixa de correio de destino interna ([email protected]
).Sua pergunta é endereçada pelo Sendmail.org FAQ 3.29
Versão curta: Use virtusertable e
~offers/.procmailrc
virtusertable:
~offers/.procmailrc
deve obter "mais detalhes" em$1
.OU
Você pode usar $h (definido como +detalhe) em cabeçalhos personalizados
Atenção : você obterá/processará duas cópias de uma mensagem endereçada a ambos
[email protected]
e[email protected]