Busca


imprimir pdf

A partição está cheia por causa da queue de Qmail


Atenção: ESTE GUIA DIZ RESPEITO APENAS A OVH RELEASE 1 e OVH RELEASE 2! A não aplicar sobre um servidor plesk!
Nota que este procedimento limpa totalmente a queue email. As mensagens existentes podem ser perdidas.

Como dar conta


Emails bloqueados, alguns serviços não voltam a arrancar (como Apache).


Consequências


Partição sistema cheia (ver guia SlashFull). A queue de emails está muito cheia, qmail já não consegue consegue tratar a queue.


Causas


Gerou mal /etc/tcp.smtp e o seu servidor foi utilizado para o spam. O seu disco está cheio. Existe muitos emails dentro da spool e só tem um unica solução: voltar refazer a queue.


Release 1


Atenção: Esta intervenção é delicada e pode fazer com que o servidor de emails deixa de funcionar.

Em SSH:
# tail -f /var/log/qmail/current
@400000003f883c8c05961f54 alert: unable to append to bounce message; HELP! sleeping...
@400000003f883c96062e9a7c alert: unable to append to bounce message; HELP! sleeping...
@400000003f883ca006c73cb4 alert: unable to append to bounce message; HELP! sleeping...
# /var/qmail/bin/qmail-qstat
messages in queue: 12001
messages in queue but not yet preprocessed: 117
# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda1 2016016 1913988 0 100% /
/dev/hda2 36977736 8967660 26131676 26% /home
none 257272 0 257272 0% /dev/shm


É então preciso apagar o directório e voltar a cria-lo desde o início. Paramos qmail primeiro:
# /etc/init.d/qmail stop
stopping qmail [OK ]
# cd /var/qmail/
# ls -l
total 32
drwxr-sr-x 2 alias qmail 4096 jui 16 20:25 alias
drwxr-xr-x 2 root qmail 4096 jui 16 20:25 bin
drwxr-xr-x 2 root qmail 4096 jui 16 20:25 boot
drwxr-xr-x 2 root qmail 4096 oct 11 00:39 control
drwxr-xr-x 3 root qmail 4096 jui 16 20:25 doc
drwxr-xr-x 10 root qmail 4096 jui 16 20:25 man
drwxr-x
11 qmailq qmail 4096 jui 16 20:25 queue
drwxr-xr-x 2 root qmail 4096 oct 11 00:39 users
# rm -rf queue
# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda1 2016016 834556 1079048 44% /
/dev/hda2 36977736 8967664 26131672 26% /home
none 257272 0 257272 0% /dev/sh


Para refazer a queue, podemos utilizar:
ftp://ftp.netmeridian.com/queue-fix.tar.gz
ou
http://pyropus.ca/software/queue-repair/queue-repair-0.9.0.tar.gz

Pegamos por exemplo qmail-repair. Começamos por recuperar e descomprimir o programa:
[root@julien root]# mkdir /temp

[root@julien root]# cd /temp/

[root@julien temp]# wget http://pyropus.ca/software/queue-repair/queue-repair-0.9.0.tar.gz
--17:37:05-- http://pyropus.ca/software/queue-repair/queue-repair-0.9.0.tar.gz
=> `queue-repair-0.9.0.tar.gz'
Connexion vers pyropus.ca:80...Connecté!
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 13,913 [application/x-tar]

0K .......... ... 100% @ 23.47 KB/s

17:37:06 (23.47 KB/s) - `queue-repair-0.9.0.tar.gz' sauvegardé [13913/13913]

[root@julien temp]# tar xfz queue-repair-0.9.0.tar.gz

[root@julien temp]# cd queue-repair-0.9.0


Antes de qualquer coisa, testamos a manipulação dentro do directório corrente (para recriar uma queue de e-mails sem perigo):
[root@julien queue-repair-0.9.0]# ./queue_repair.py -c -s 23 --no-bigtodo .


Se tudo correr bem, pode verificar que a queue foi bem recriada:
[root@julien queue-repair-0.9.0]# ls -l queue
total 36
drwx------ 2 qmails qmail 4096 mar 25 17:39 bounce
drwx------ 25 qmails qmail 4096 mar 25 17:39 info
drwx------ 2 qmailq qmail 4096 mar 25 17:39 intd
drwx------ 25 qmails qmail 4096 mar 25 17:39 local
drwxr-x--- 2 qmailq qmail 4096 mar 25 17:39 lock
drwxr-x--- 25 qmailq qmail 4096 mar 25 17:39 mess
drwx------ 2 qmailq qmail 4096 mar 25 17:39 pid
drwx------ 25 qmails qmail 4096 mar 25 17:39 remote
drwxr-x--- 2 qmailq qmail 4096 mar 25 17:39 todo


Podemos agora passar ás coisas sérias, ou seja recriar a queue de emails
que vai ser realmente utilizada pelo servidor de e-mails e depois verificar que tudo está bem:
[root@julien queue-repair-0.9.0] ./queue_repair.py -c -s 23 --no-bigtodo /var/qmail

[root@julien queue-repair-0.9.0]# ls -l /var/qmail/


Só falta agora voltar a correr qmail (não esquecer de passar em / para voltar a correr qmail)

# cd /
# /etc/init.d/qmail start
Starting: qmail pop smtp
# echo test | mail oles@ovh.net
# tail -f /var/log/qmail/current
@400000003f883ce426b52c0c alert: unable to append to bounce message; HELP! sleeping...
@400000003f8840a31f2624dc alert: cannot start: unable to switch to queue directory
@400000003f88425517b081ac status: local 0/10 remote 0/20
@400000003f88426f0748a59c new msg 100179
@400000003f88426f074b1e6c info msg 100179: bytes 207 from qp 15605 uid 0
@400000003f88426f097eb3c4 starting delivery 1: msg 100179 to remote oles@ovh.net
@400000003f88426f0980da8c status: local 0/10 remote 1/20
@400000003f88426f1a6fd85c delivery 1: success: 213.186.33.73_accepted_message./Remote_host_said:_250_ok_1065894524_qp_30276/
@400000003f88426f1a7717d4 status: local 0/10 remote 0/20
@400000003f88426f1a7c4fc4 end msg 100179


Aparentemente tudo voltou ao normal.


Release 2


server ~ # df -h
Sys. de fich. Tail. Occ. Disp. %Occ. Monté sur
/dev/md/1 2,9G 2,9G 0 100% /
/dev/md/2 144G 334M 136G 1% /home
shm 497M 0 497M 0% /dev/shm
server ~ # du -sh /var/qmail/queue/
928M /var/qmail/queue/
server ~ # /var/qmail/bin/qmail-qstat
messages in queue: 124001
messages in queue but not yet preprocessed: 3117
server ~ #


Este servidor está saturado, a queue de email faz 928M e parece saturada. Paramos então os serviços:

server ~ # /etc/init.d/clamd stop
* Stopping clamd ...
* Failed to stop clamd[ !! ]
* Stopping freshclam ...[ ok ]
server ~ # /etc/init.d/spamd stop
* Stopping spamd ...[ ok ]
server ~ # /etc/init.d/qmail stop
* Stopping Qmail ...[ ok ]
server ~ #


Antes de qualquer acção, é preciso verificar que o multilog não está mais a correr. No momento em que o comando seguinte não envia mais linhas contendo '/usr/local/bin/multilog' pode prosseguir.

server ~ # ps aux | grep multi
qmaill 5865 0.0 0.0 1344 284 pts/0 S 16:30 0:00 /usr/local/bin/multilog /var/log/qmail/
qmaill 5872 0.0 0.0 1344 284 pts/0 S 16:30 0:00 /usr/local/bin/multilog /var/log/qmailpop3/
qmaill 5876 0.0 0.0 1344 284 pts/0 S 16:30 0:00 /usr/local/bin/multilog /var/log/qmailsmtp/
root 9316 0.0 0.0 1860 716 pts/0 R+ 17:14 0:00 grep --colour=auto multi
server ~ #


Para medir a segurança, vamos copiar a queue de mail em vez de a eliminar. Uma recuperação poderá assim ser possível depois.

server ~ # mkdir /home/backup
server ~ # mv /var/qmail/queue/ /home/backup/queue_mail_20081114
server ~ # df -h
Sys. de fich. Tail. Occ. Disp. %Occ. Monté sur
/dev/md/1 2,9G 2,0G 928M 65% /
/dev/md/2 144G 1,3G 135G 1% /home
shm 497M 0 497M 0% /dev/shm
server ~ #


O servidor recuperou recursos, é tempo de reparar a queue de mail.

server ~ # mkdir /temp
server ~ # cd /temp/
server temp # wget http://pyropus.ca/software/queue-repair/queue-repair-0.9.0.tar.gz
server temp # tar -xvzf queue-repair-0.9.0.tar.gz
server temp # cd queue-repair-0.9.0
server queue-repair-0.9.0 # ./queue_repair.py -c -s 23 --no-bigtodo /var/qmail
server queue-repair-0.9.0 # ls -l /var/qmail/
total 32
drwxr-sr-x 2 alias qmail 4096 jun 2 2006 alias
drwxr-xr-x 2 root qmail 4096 nov 14 15:04 bin
drwxr-xr-x 2 root qmail 4096 jun 2 2006 boot
drwxr-xr-x 2 root qmail 4096 nov 14 15:04 control
drwxr-xr-x 3 root qmail 4096 jun 2 2006 doc
drwxr-xr-x 10 root qmail 4096 jun 2 2006 man
drwxr-x--- 11 qmailq qmail 4096 nov 14 16:26 queue
drwxr-xr-x 2 root qmail 4096 nov 14 15:04 users


Falta-nos então voltar a lançar os serviços na ordem:

server queue-repair-0.9.0 # /etc/init.d/qmail start
* Starting Qmail ...[ ok ]
* Starting Pop ...[ ok ]
* Starting Smtp ...[ ok ]
server queue-repair-0.9.0 # /etc/init.d/clamd start
* Starting clamd ...[ ok ]
* Starting freshclam ...[ ok ]
server queue-repair-0.9.0 # /etc/init.d/spamd start
* Starting spamd ...[ ok ]


Pode voltar a realizar um teste de envio de e-mail, este deverá apresentar este tipo de informações nos seus logs.

server queue-repair-0.9.0 # tail -f /var/log/qmail/current
@40000000491d93771c6c4c6c status: exiting
@40000000491d998a13d2554c status: local 0/10 remote 0/20
@40000000491d99f434a30384 new msg 69683
@40000000491d99f434a30b54 info msg 69683: bytes 226 from qp 6113 uid 0
@40000000491d99f435109a34 starting delivery 1: msg 69683 to remote user@domain.tld
@40000000491d99f43510a204 status: local 0/10 remote 1/20
@40000000491d99f501c68d3c delivery 1: success: 213.186.33.73_accepted_message./Remote_host_said:_250_ok_1226676713_qp_19643/
@40000000491d99f501c6950c status: local 0/10 remote 0/20
@40000000491d99f501c698f4 end msg 69683