Teste FEATURE(preserve_local_plus_detail) no seu arquivo .mc e recompile seu código%.
Isso modifica o conjunto de regras 5 ( .cf ). Isso pode causar efeitos colaterais (ou seja, se o seu mailer local não suportar + detalhes).
Se isso afetar negativamente sua pesquisa de aliases, talvez localaddr seja para você, essa é uma opção de tempo de construção (ou seja, não _FFR_ALIAS_DETAIL ), mas não posso dizer que testei. Não recomendado; -)
Se isso falhar, a única maneira de fazer qualquer coisa como você exigir com apenas arquivos .cf controlados pelo usuário é verificar se .forward inclui um caminho que tenha um componente confFORWARD_PATH . Este deve ser o padrão desde pelo menos 8.12:
O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward
Isso permitirá que os usuários criem, digamos, $h para controlar onde o email endereçado "usuário + extra" está:
$ sendmail -v -d27.2 -bv elrond+foo
alias(elrond+foo)
alias(elrond+*)
alias(elrond)
alias(elrond)
forward(elrond+foo)
include(/home/elrond/.forward.thishost+foo)
include(/home/elrond/.forward+foo)
include(/home/elrond/.forward.thishost)
include(/home/elrond/.forward)
elrond+foo... deliverable: mailer local, host foo, user elrond
(Você pode ver os arquivos de encaminhamento sendo manipulados pela função ~/.forward.extra - não tem noção de expansão quando lê os arquivos.)
include() , como sugerido em outro lugar, é provavelmente o melhor caminho a percorrer, se você for do tipo de script, poderá coletar periodicamente os arquivos FEATURE(virtusertable) do usuário e construir um master virtusertable.