19.4. Modos de Envío de Correo

Como ya se ha dicho anteriormente, Exim es capaz de enviar los mensajes de inmediato o guardarlos en una cola para procesarlos más tarde. Todo el correo entrante se guarda en el directorioinput bajo /var/spool/exim. Cuando el encolado no se encuentra activo, se inicia un proceso de envío para cada mensaje en cuanto llega. De otro modo, se queda en la cola hasta que un proceso queue-runner lo recoge. El encolado puede ajustarse como incondicional mediante queue_only en el fichero de configuración, o puede estar condicionado por la carga del sistema minuto a minuto mediante:
    queue_only_load = 4
que hace que los mensajes se encolen si la carga del sistema excede 4.
[1]

Si su anfitrión no está conectado permanentemente a Internet, quizá quiera activar el encolado para direcciones remotas, permitiendo al mismo tiempo que Exim realice los envíos locales de inmediato. Puede hacer esto poniendo:
    queue_remote_domains = *
en el fichero de configuración.

Si activa cualquier tipo de encolado tiene que asegurarse de que las colas se comprueba de manera regular, probablemente cada 10 ó 15 minutos. Aún sin opciones explícitas de encolado, las colas necesitan comprobarse por si se hubieran pospuesto mensajes a causa de fallos temporales de envío. Si ejecuta Exim como demonio tendrá que añadir la opción –q15m en la línea de órdenes para procesar la cola cada 15 minutos. También puede invocar a exim –q desde cron a estos intervalos.

Puede mostrar la cola de correo invocando a Exim con la opción –bp. De manera equivalente, puede enlazar mailq con Exim e invocar mailq :
    $ mailq
     2h   52K 12EwGE-0005jD-00 <sam@vbrew.com>
            D bob@vbrew.com
              harry@example.net  

Esto muestra un único mensaje desde sam@vbrew.com para dos receptores en la cola de mensajes. Se ha enviado con éxito a bob@vbrew.com pero aún no se ha enviado a harry@example.net aunque ha estado en la cola dos horas. El tamaño del mensaje es de 52K y la identificación que usa Exim para este mensaje es 12EwGE-0005jD-00. Puede averiguar por qué aún no se ha completado el envío mirando en el fichero de registro individual del mensaje, que se guarda en el directorio msglog dentro del directorio de la cola de Exim. La opción–Mvl es una manera sencilla de hacer esto:
    $ exim –Mvl 12EwGE-0005jD-00
    2000-01-30 17:28:13 example.net [192.168.8.2]: Connection timed out
    2000-01-30 17:28:13 harry@example.net: remote_smtp transport deferred: 
      Connection timed out
Los ficheros de registro individuales mantienen una copia de las entradas del registro para cada mensaje por lo que puede inspeccionarlas fácilmente. Puede extraer esa misma información del fichero de registro principal mediante la utilidad exigrep:
    $ exigrep 12EwGE-0005jD-00 /var/log/exim/exim_mainlog
Eso puede llevarle bastante tiempo, especialmente en un sistema ocupado en el que los ficheros de registro pueden hacerse bastante grandes. La utilidad exigrep es apropiada cuando se busca información sobre más de un mensaje. Su primera variable es una expresión regular, y toma todas las líneas del registro de cualquier mensaje en las que coincida al menos una línea con la expresión. Por esto, puede usarse para consultar todos los mensajes en busca de una dirección o de un anfitrión específicos.

Puede echar un vistazo general a lo que está haciendo un Exim en ejecución mediante la orden tail sobre el fichero de registro principal. Otra manera de hacer esto es ejecutar la utilidad eximon que viene con Exim. Se trata de una aplicación que muestra una pantalla donde aparece el registro principal en tiempo real, además de mostrarle una lista con los mensajes que estén esperando ser enviados, así como unas gráficas de barras acerca de la actividad de envío.

Notas

[1]

La carga del sistema es una medida estándar en Unix de la cantidad media de procesos que están en la cola esperando ejecutarse. El uptime muestra la carga media del sistema tomada en los 1, 5 y 15 minutos previos.