Hace unos días comenzaron a llegar unos correos rebotados a la cuenta de root de un servidor. Resulta que nuestro DBA tenía un cronjob corriendo periódicamente desde hace algunos años, el cual generaba una salida. Como muchos SysAdmins sabrán, cada vez que un cronjob genera alguna salida, ésta se envía por correo al usuario que corre la tarea. Cuestión que el DBA jamás chequeaba la casilla de la cuenta del usuario de bases de datos, y esta finalmente reventó:
"/var/spool/mail/informix": 50015 messages 50015 unread
Más de cincuenta mil mensajes no leídos. Veamos cómo borrar de un plumazo todos estos mensajes.
El problema se hizo evidente cuando comenzaron a llegar mensajes de correo a la cuenta de root con el siguiente error:
<informix@ifx-dev03.linuxito.com> (expanded from <informix>): cannot update mailbox /var/mail/informix for user informix. error writing message: File too large
En mis servidores tengo configurada la cuenta de root para que todos los mensajes entrantes en el mailbox sean reenviados a una casilla de correo externa mediante SMTP. Esto tiene dos ventajas: primero, notificarse rápidamente de errores y advertencias de seguridad; y segundo, centralizar todo el correo de todos los usuarios root de todos los servidores en una única casilla de email.
Al loguearme en el servidor pude comprobar que la casilla había superado el tamaño máximo permitido según la configuración de Heirloom Mail (50 MB por defecto en CentOS y derivados):
[root@ifx-dev03 ~]# ll /var/mail/informix -rw------- 1 informix mail 51199181 oct 18 03:31 /var/mail/informix
Para resolver este inconveniente se debe iniciar una sesión como el usuario en cuestión (en este caso "informix") y vaciar su casilla de correo (en este caso es correo basura, con lo cul no me interesa conservarlo):
[root@ifx-dev03 ~]# su - informix [informix@ifx-dev03 ~]$
Luego abrir la casilla de correo del usuario ejecutando mail
:
[informix@ifx-dev03 ~]$ mail Heirloom Mail version 12.4 7/29/08. Type ? for help. "/var/spool/mail/informix": 50015 messages 50015 unread >U 1 Cron Daemon Tue Jul 12 07:00 23/938 "Cron <informix@ifx-dev03> ps -ax | mail -s "ps -ax host: " U 2 Cron Daemon Tue Jul 19 07:00 23/938 "Cron <informix@ifx-dev03> ps -ax | mail -s "ps -ax host: " U 3 Cron Daemon Tue Jul 26 07:00 23/938 "Cron <informix@ifx-dev03> ps -ax | mail -s "ps -ax host: " U 4 Cron Daemon Tue Aug 2 07:00 23/938 "Cron <informix@ifx-dev03> ps -ax | mail -s "ps -ax host: " U 5 Cron Daemon Tue Aug 9 07:00 23/938 "Cron <informix@ifx-dev03> ps -ax | mail -s "ps -ax host: " U 6 Cron Daemon Tue Aug 16 07:00 23/938 "Cron <informix@ifx-dev03> ps -ax | mail -s "ps -ax host: " U 7 Cron Daemon Tue Aug 23 07:00 23/938 "Cron <informix@ifx-dev03> ps -ax | mail -s "ps -ax host: " U 8 Cron Daemon Tue Aug 30 07:00 23/938 "Cron <informix@ifx-dev03> ps -ax | mail -s "ps -ax host: " U 9 Cron Daemon Tue Sep 6 07:00 23/938 "Cron <informix@ifx-dev03> ps -ax | mail -s "ps -ax host: " U 10 Cron Daemon Tue Sep 13 07:00 23/938 "Cron <informix@ifx-dev03> ps -ax | mail -s "ps -ax host: " U 11 Cron Daemon Tue Sep 20 07:00 23/938 "Cron <informix@ifx-dev03> ps -ax | mail -s "ps -ax host: " U 12 Cron Daemon Tue Sep 27 07:00 23/938 "Cron <informix@ifx-dev03> ps -ax | mail -s "ps -ax host: " U 13 Cron Daemon Tue Oct 4 07:00 23/938 "Cron <informix@ifx-dev03> ps -ax | mail -s "ps -ax host: " U 14 Cron Daemon Tue Oct 11 07:00 23/938 "Cron <informix@ifx-dev03> ps -ax | mail -s "ps -ax host: " U 15 Cron Daemon Tue Oct 18 07:00 23/938 "Cron <informix@ifx-dev03> ps -ax | mail -s "ps -ax host: " U 16 Cron Daemon Tue Oct 25 07:00 23/938 "Cron <informix@ifx-dev03> ps -ax | mail -s "ps -ax host: " U 17 Cron Daemon Tue Nov 1 07:00 23/938 "Cron <informix@ifx-dev03> ps -ax | mail -s "ps -ax host: " U 18 Cron Daemon Tue Nov 8 07:00 23/938 "Cron <informix@ifx-dev03> ps -ax | mail -s "ps -ax host: " U 19 Cron Daemon Tue Nov 15 07:00 23/938 "Cron <informix@ifx-dev03> ps -ax | mail -s "ps -ax host: " U 20 Cron Daemon Tue Nov 22 07:00 23/938 "Cron <informix@ifx-dev03> ps -ax | mail -s "ps -ax host: " U 21 Cron Daemon Tue Nov 29 07:00 23/938 "Cron <informix@ifx-dev03> ps -ax | mail -s "ps -ax host: " U 22 Cron Daemon Wed Nov 30 11:21 23/964 "Cron <informix@ifx-dev03> /usr/local/informix12/bin/backu" U 23 Cron Daemon Wed Nov 30 11:24 23/964 "Cron <informix@ifx-dev03> /usr/local/informix12/bin/backu" U 24 Cron Daemon Wed Nov 30 11:27 23/964 "Cron <informix@ifx-dev03> /usr/local/informix12/bin/backu" U 25 Cron Daemon Wed Nov 30 11:30 23/964 "Cron <informix@ifx-dev03> /usr/local/informix12/bin/backu"
Aquí es donde se comprueba que hay más de cincuenta mil mensajes sin leer.
El comando interactivo delete
de la herramienta mail
permite borrar todos los mensajes mediante la opción :o
.
Proceder entonces con el borrado y luego cerrar el cliente:
& delete :o & q
Otras opciones interesantes son para la selección de mensajes son:
:n All new messages. :o All old messages (any not in state read or new). :u All unread messages. :d All deleted messages (for the undelete command). :r All read messages. * All messages.
Al ejecutar mail
nuevamente, se comprueba que ya no hay mensajes en la casilla:
[informix@ifx-dev03 ~]$ mail No mail for informix [informix@ifx-dev03 ~]$
Finalmente resta cagar bien a pedos al DBA para que redirija la salida de sus croncitos a un log (cosa que hice ).
Para más ayuda ver la página de manual del comando mail
.