exiqgrep -i -f [luser]@domain | xargs exim -Mrm
Eu tenho uma fila de exim agora de mais de 1000 e-mails e quero executar a fila e excluir todos os e-mails que estão indo para e-mails inválidos (aqueles que não existem mais)
exiqgrep -i -f [luser]@domain | xargs exim -Mrm
Se as mensagens estiverem na fila e congeladas, o abaixo DEVE funcionar - no entanto, eu não testei e não me responsabilizo se, em vez disso, se tornar consciente e comer seu servidor de e-mail
for i in 'mailq | grep "\*\*\* frozen \*\*\*" | cut -f 3 -d " "' ; do exim -Mrm $i ; done
Altere o padrão grep conforme necessário se você precisar acessar mensagens não congeladas (isso é mais fácil se você puder ter certeza de que pode colocar tudo na fila e não se esqueça de executar como usuário quem pode executar exim -Mrm e mailq utilmente - você pode precisar inserir sudo
antes de mailq
e exim -Mrm
...
Além disso, há quase certamente uma maneira mais limpa de fazer isso usando xargs em vez dos for
embutidos e backticks. Espero que alguém esteja junto com isso: -)
Verifique os arquivos em /var/spool/exim4/msglog
dos endereços inválidos.
Você pode marcar um endereço como entregue com um comando como (use o endereço inválido)
cd /var/spool/exim4/msglog; for msg in $(grep -l address); do exim4 -Mmd $msg address
.
Você pode limpar as mensagens com o comando cd /var/spool/exim4/msglog; exim4 -M *
. Isso tentará entregar todas as mensagens na fila.
Você pode bloquear mensagens recebidas para endereços antigos usando um alias em /etc/aliases
como:
address : :fail: No longer here
Veja man exim4
e man aliases
para mais informações.