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.


Tal vez pueda interesarte


Compartí este artículo