Isso é certamente possível. Apenas para lhe dar uma dica: você pode usar $ run e $ runrc na ACL no estágio rcpt. Veja a seção 5. depois de "$ {run ..." no link . Você tem que escrever um script, no entanto, que invoca "lista_memória lista de discussão " ou você pode encontrar o comando "withlist" inspirando ...
Outra abordagem seria: Ter um arquivo por lista pronto (gerado por um script), que contém todos os membros de uma lista. Em seguida, use uma pesquisa na sua instrução ACL para procurar o endereço do remetente nesse arquivo. O núcleo do script seria algo como:
while read -r list; do
list_members "$list" > "$EXIM_HOME/mm-lists/$list"
done <<< "$(list_lists -b)"
A ACL correspondente pode ser algo como:
deny
domains = +local_domains
condition = ${if exists {MAILMAN_HOME/lists/$local_part/config.pck}{1}{0}}
! senders = ${lookup{$sender_address}lsearch{CONFDIR/mm-lists/$local_part}{$sender_address}}
message = Only list members are allowed to post.
Mas há problemas com esse mecanismo, como problemas de corrida ao reescrever os arquivos que contêm os membros, provavelmente problemas de segurança, asf.
Eu não tentei o código acima e não sei se isso realmente funciona. É só para você ter uma ideia do que tentar.
Sua motivação precisa de alguma correção: Você não evita rejeições para endereços de remetentes forjados ao decidir se o tempo SMTP aceita uma mensagem ou não. Você simplesmente não assume a responsabilidade de entregar a mensagem de rejeição, você deixa isso para o MTA de envio. O envio de retornos para endereços forjados é difícil e pode levar a mensagens congeladas, o que não é desejável, mas provavelmente é motivação suficiente para tentar o que você estava perguntando.