Você pode usar o roteador de redirecionamento para processar mensagens de alias. Este também é o que executa scripts / arquivos de encaminhamento fornecidos pelos usuários. O processamento dos roteadores acontece de cima para baixo, então o exemplo abaixo funciona mais ou menos assim:
- O roteador
syswide_alias
verifica os aliases no arquivo/etc/aliases
. Se um for encontrado, a seqüência de roteamento será reiniciada. - O forced_delivery faz a mesma verificação, mas desta vez usa a variável
original_local_part
que está vazia se nenhum encaminhamento foi feito. Se a pesquisa for bem-sucedida, a mensagem será entregue. Nesse caso, o processamento é interrompido (desde que uma entrega foi feita), portanto, quaisquer filtros ou encaminhamentos que o usuário possa ter são ignorados. - Se o roteador
forced_delivery
recusar, o arquivo.forward
será processado. Se esse arquivo contiver aliases, a seqüência de roteamento será reiniciada. - Finalmente, a mensagem é entregue na caixa de correio do usuário. Isso acontecerá somente se o arquivo de filtro na etapa anterior não resultar em uma entrega significativa (ou seja, não contiver um alias de encaminhamento ou não soltar totalmente a mensagem).
A seção routers
deve ter esta aparência:
syswide_alias:
driver = redirect
allow_defer
allow_fail
data = ${lookup{$local_part}lsearch{/etc/aliases}}
forced_delivery:
driver = accept
allow_defer
transport = local_delivery
condition = ${if eq {${lookup{$original_local_part}lsearch{/etc/aliases}}}{}{no}{yes}}
user_filters:
driver = redirect
allow_defer
allow_fail
allow_filter
file = ${home}/.forward
normal_delivery:
driver = accept
check_local_user
transport = local_delivery
Os roteadores syswide_alias
e forced_delivery
têm a opção allow_defer
, que é necessária se o arquivo não for encontrado (o que provavelmente não será o caso, mas não faz mal) / p>
Editar: O exemplo acima agora contém um conjunto completo de roteadores necessários para atingir os objetivos da pergunta.