É uma maneira correta de limpar a fila de mensagens exim?

3

Eu uso o seguinte comando para excluir as filas de correio do exim

exiqgrep -i | xargs exim -Mrm

ou

# following commands seems to work faster compared to the above.
exim -bpru | awk {'print $3'} | xargs exim -Mrm

Mas os comandos acima não funcionam quando o tamanho da fila de mensagens é maior que 100.000. Ficar preso. Então, eu estou usando o seguinte script que funciona bem, independentemente do número de e-mails na fila.

Minha pergunta é: ela será excluída corretamente?

/etc/init.d/exim stop;
sleep 10;
killall -9 exim eximd
sleep 5;

#clean out the mail queue
find /var/spool/exim -mindepth 2 -type f -exec rm -rfv {} \;

#clean out the mail db files
find /var/spool/exim/db -type f -exec rm -rvf {} \;

/etc/init.d/exim restart
    
por Mani 19.02.2016 / 11:54

3 respostas

4

Eu acredito que você está procurando por isso ...

service exim stop
rm -fvr /var/spool/exim/input
service exim restart

No entanto, um método um pouco mais sensato é remover as mensagens por usuário ...

egrep -Rl "(('pwd | cut -d / -f3'|$(grep 'pwd | cut -d / -f3' /etc/userdomains | cut -d : -f1 | tr '\n' '|' | sed 's/|$//g'))|/home/'pwd | cut -d / -f3')|X-Failed-Recipients" /var/spool/exim/input --include='*-H' | awk -F "/" '{gsub("-[A-Z]$","");print$NF}' | xargs exim -Mrm 
    
por 19.02.2016 / 12:29
0

Além disso, para excluir os e-mails de um usuário específico:

grep -lr '[email protected]' /var/spool/exim/input/ | \
    sed -e 's/^.*\/\([a-zA-Z0-9-]*\)-[DH]$//g' | \
    xargs exim -Mrm

exim -bp | \
    grep "user_email-account" | \
    awk '{print $3}' | \
    xargs exim -Mrm
    
por 23.02.2016 / 11:33
0

Para remover todas as mensagens da fila, digite:

# exim -bp | awk '/^ *[0-9]+[mhd]/{print "exim -Mrm " $3}' | bash
    
por 02.11.2018 / 04:47