Accidentalmente borré el /var/log/mail
archivo. Hasta ese momento pude monitorearlo usando cosas de postfix. Ahora, parece que Postfix no envía sus registros /var/log/mail
, ya que el archivo no se actualiza con nuevos mensajes de registro.
10
Incluso después de crear un archivo vacío
tienes que reiniciar el syslog
y luego es ganancia de registro :)
fuente
Este es un error en syslog, pero ilustra un problema común cuando uno elimina un archivo mientras está abierto por un programa. Cuando hace un "rm", está eliminando una entrada de directorio, pero NO está eliminando el archivo subyacente. El sistema operativo mantiene un recuento de referencias al archivo y en realidad no eliminará los datos del archivo subyacente hasta que el recuento de referencias llegue a cero. En el caso de un archivo promedio, el recuento de referencia del archivo sin abrir es uno (la entrada del directorio). Cuando se abre el archivo, el recuento se incrementa a dos. Si un segundo programa abre el mismo archivo, el recuento se incrementará a tres. Si la entrada del directorio ahora se elimina, el recuento se reduce a dos, lo que significa que el archivo es anónimo (no tiene nombre),
Cuando elimina / var / log / mail, el registrador del sistema todavía tiene el archivo abierto para escritura. Si crea un nuevo / var / log / mail, apuntará a un archivo diferente del que el registrador del sistema está escribiendo actualmente. La única forma de hacer que todo sea coherente es reiniciar el registrador del sistema. Cuando finaliza el registrador del sistema original, todos los archivos asociados con él se cierran, incluido el registro de correo anónimo cuya entrada de directorio eliminó. Cuando reinicie el registrador del sistema, volverá a abrir / var / log / mail cuando necesite escribir un mensaje de registro y lo mantendrá abierto a partir de entonces.
Otra forma en que esto se descubre a menudo es cuando un programa en ejecución llena todo un disco con datos de archivo; el usuario elimina el archivo muy grande, pero el espacio en disco no se libera, porque el archivo todavía existe y está ocupando espacio en disco, pero la entrada del directorio se ha eliminado. Cuando finaliza el programa (ya sea porque el usuario lo mató o porque terminó), el espacio en disco se recuperará porque el recuento de referencias en el archivo habrá llegado a cero.
Lo que podría hacer el registrador para evitar esto es primero escribir el mensaje de registro, verificar si la entrada del directorio del archivo de registro existe y, si no existe, cerrar el archivo de registro original, abrir uno nuevo y luego volver a escribir el mensaje: para que el mensaje no se pierda. Pero hacer todo eso requeriría mucha más complejidad de la que debería tener el registrador del sistema, ya que cada mensaje que escriba tardará un poco más en escribirse debido a la verificación adicional del directorio, que tendrá éxito cada vez que el archivo tenga NO ha sido eliminado.
Para comprender todo lo anterior más claramente, el siguiente comando es instructivo, ya que describe la llamada al sistema que realiza la eliminación de la entrada del directorio y la disminución de la referencia: "man 3 unlink"
fuente
Ese no es el problema en CentOS 7. Alguien pensó que sería una gran idea tener los registros de correo postfix para revisar el diario. Si desea ver registros de postfix:
(para ver el registro completo)
(para seguir el registro)
También puede necesitar en el main.cf para postfix
fuente
journalctl --vacuum-time=1d
fwiw versiones más nuevas del registro de postfix
/var/log/mail.log
y también tuve que ejecutarsudo chmod a+w /var/log/mail*
yservice postfix restart
recuperar mis registros de postfix después de eliminarlofuente