Preciso usar o sendmail sem nenhum usuário do sistema.
O único problema que ainda existe na minha configuração é que FEATURE(virtusertable)
quero um usuário final do sistema no RHS na minha virtusertable assim:
@domain.tld [email protected]
[email protected] systemuser
O problema é que NÃO existe tal usuário do sistema e quero que todos os e-mails para @domain.tld sejam entregues ao meu lda (procmail e depois dovecot-lda), que é capaz de lidar com endereços de e-mail completos como usuários.
Eu já tentei coisas como
define(`_VIRTUSER_STOP_ONE_LEVEL_RECURSION_', `true')dnl
define(`_NEED_MACRO_MAP_',`1')dnl
mas isso também não ajuda.
Já temos uma solução feia com o script procmail que está lendo o virtusertable, mas adoraríamos que isso fosse tratado pelo sendmail para que qualquer e-mail enviado que não tenha RHS e/ou usuário no lda seja devolvido. Além disso, usar dovecot-lda é lda direto no sendmail também não é uma opção em nossa configuração. :(
Qualquer ajuda é bem-vinda!
Responder1
Dê uma olhadaPerguntas frequentes sobre o Sendmail 3.29- "Como posso adicionar um cabeçalho especificando o destinatário real quando vários usuários em um domínio virtual vão para uma única caixa de correio?"
IMHO, ele pode ser facilmente adaptado para entregar o que você deseja - fornece todos os ganchos necessários.
A propósito, você pode usar a entrada virtusertable "@domain.tld" para error
o mailer selecionado. Isso permitirá que você rejeite mensagens para usuários virtuais não listados no virtusertable.
@domain.tld error:nouser No such user here
[email protected] systemuser+%1
[email protected] systemuser+%1
Você também pode consultarhttps://www.sendmail.com/sm/open_source/tips/virtual_hosting/
Responder2
Acabei resolvendo isso de duas maneiras:
a) Patching libsm/mbdb.c
e sendmail/recipient.c
para ter uma pesquisa adicional na tabela de usuários dovecot. Para que isso funcionasse, foi necessário um pequeno ajuste com LOCAL_RULE_0.
b) Andrzej me indicou uma pergunta semelhante sobre stackoverflow para solução com mailertable e arquivo de acesso. Seguindo essa ideia encontrei uma solução ainda mais fácil para ter tudo que precisamos:
tabela virtual:
@domain.tld user_domain_tld
[email protected] user_another_tld
apelido:
user_domain_tld: "|/bin/procmail -a [email protected]"
user_another_tld: "|/bin/procmail -a [email protected]"
É bom ter a solução a) porque altera a sintaxe aceita no virtusertable e é necessário verificar apenas um arquivo ao longo do tempo, onde a solução b) vence pela maneira fácil de alcançá-lo, que além disso é mais compatível com versões futuras do sendmail. Depois de todo o trabalho, utilizo a solução a), mas vou mudar para a solução b) depois do natal ;)