Hay varias cosas que se pueden hacer para que la gestión de un sitio sendmail sea eficiente. Se proporcionan varias herramientas en el paquete sendmail; echemos un vistazo a las más importantes de éstas.
El correo es encolado en el directorio /var/spool/mqueue antes de ser transmitido. Este directorio se llama la cola de correo[1]. El programa sendmailproporciona un método para mostrar una lista formateada de todos los mensajes de correo en la cola y su estado.
La orden /usr/bin/mailq es un enlace simbólico al ejecutable de sendmail y se comporta idénticamente a:
# sendmail -bp |
$ mailq Mail Queue (1 request) --Q-ID-- --Size-- -----Q-Time----- ------------Sender/Recipient------------ RAA00275 124 Wed Dec 9 17:47 root (host map: lookup (tao.linux.org.au): deferred) terry@tao.linux.org.au |
Podemos forzar sendmail para procesar la cola ahora mediante la instrucción /usr/bin/runq.
La orden runq no produce ninguna salida. sendmail comenzará procesando la cola de correo en segundo plano.
Si usa una conexión a Internet temporal mediante marcado telefónico con una dirección IP fija y delega en un anfitrión MX para recibir su correo mientras está desconectado, encontrará útil forzar al anfitrión MX para que procese su cola de correo tan pronto como se establezca una conexión
Un pequeño programa perl se incluye con la distribución de sendmail que hace esto simple para los anfitriones de correo que lo soportan. El guión etrn tiene como mucho el mismo efecto en un anfitrión remoto como la instrucción runq tiene en el nuestro. Si invocamos la orden como se indica en este ejemplo:
# etrn vstout.vbrew.com |
Típicamente añadiría esta instrucción al guión PPP ip-up de manera que se ejecute tan pronto como la conexión de red sea establecida.
sendmail almacena datos de los volúmenes de tráfico de correo y alguna información sobre los anfitriones a los cuáles ha entregado correo. Hay dos instrucciones disponibles para mostrar esta información, mailstats, y hoststat.
La orden mailstats muestra estadísticas del volumen de correo procesado por sendmail. La hora a la que la recogida de datos comenzó se imprime primero, seguida de una tabla con una columna para cada transporte configurado y una mostrando un resumen total de todo el correo. Cada línea presenta ocho puntos de información:
Campo | Significado |
---|---|
M | El número del transporte (protocolo de transporte) |
msgsfr | El número de mensajes desde el transporte |
bytes_from | Los Kbytes de correo desde el transporte |
msgsto | El número de mensajes enviados al transporte |
bytes_to | Los Kbytes de correo enviados al transporte |
msgsreg | El número de mensajes rechazados |
msgsdis | El número de mensajes descartados |
Mailer | El nombre del transporte |
Ejemplo 18-5. Ejemplo de la Salida de la Instrucción mailstats
# /usr/sbin/mailstats Statistics from Sun Dec 20 22:47:02 1998 M msgsfr bytes_from msgsto bytes_to msgsrej msgsdis Mailer 0 0 0K 19 515K 0 0 prog 3 33 545K 0 0K 0 0 local 5 88 972K 139 1018K 0 0 esmtp ============================================================= T 121 1517K 158 1533K 0 0 |
Estos datos son recogidos si la opción StatusFile está activada en el fichero sendmail.cf y el fichero de estado existe. Típicamente añadiría lo siguiente a su fichero sendmail.cf:
# status file O StatusFile=/var/log/sendmail.st |
Para reiniciar la recogida de estadísticas, necesita hacer el fichero de estadísticas de longitud cero:
> /var/log/sendmail.st |
La instrucción hoststat muestra información sobre el estado de los anfitriones a los que sendmail ha intentado enviar correo. La instrucción hoststat es equivalente a invocar sendmail como:
sendmail -bh |
La salida presenta cada anfitrión en su propia línea, y para cada uno la hora desde que se intentó la entrega a él, y el mensaje de estado recibido a esa hora.
Ejemplo 18-6 muestra la clase de salida que podría esperarse de la instrucción hoststat. Nótese que la mayor parte de los resultados indican una entrega exitosa. El resultado para earthlink.net, por otra parte, indica que la entraga no fue exitosa. El mensaje de estado puede algunas veces ayudar a determinar la causa del fallo. En este caso, la conexión expiró, probablemente porque el anfitrión estaba caído o inalcanzable a la hora en que la entrega se intentó.
Ejemplo 18-6. Ejemplo de Salida de la Instrucción hoststat
# hosts at -------------- Anfitriónname ---------- How long ago ---------Results--------- mail.telstra.com.au 04:05:41 250 Message accepted for scooter.eye-net.com.au 81+08:32:42 250 OK id=0zTGai-0008S9-0 yarrina.connect.com.a 53+10:46:03 250 LAA09163 Message acce happy.optus.com.au 55+03:34:40 250 Mail accepted mail.zip.com.au 04:05:33 250 RAA23904 Message acce kwanon.research.canon.com.au 44+04:39:10 250 ok 911542267 qp 21186 linux.org.au 83+10:04:11 250 IAA31139 Message acce albert.aapra.org.au 00:00:12 250 VAA21968 Message acce field.medicine.adelaide.edu.au 53+10:46:03 250 ok 910742814 qp 721 copper.fuller.net 65+12:38:00 250 OAA14470 Message acce amsat.org 5+06:49:21 250 UAA07526 Message acce mail.acm.org 53+10:46:17 250 TAA25012 Message acce extmail.bigpond.com 11+04:06:20 250 ok earthlink.net 45+05:41:09 Deferred: Connection time |
La instrucción purgestat vacía los datos del anfitrión recogidos y es equivalente a invocar sendmail como:
# sendmail -bH |
Las estadísticas continuarán creciendo hasta que usted las purge. Quizá quiera ejecutar periódicamente la instrucción purgestat para hacer más fácil buscar y encontrar entradas recientes, especialmente si tiene un sitio con mucho tráfico. Podría poner la orden en un fichero crontab para que se ejecute automáticamente, o tan sólo hacerlo usted mismo ocasionalmente.
[1] | mail spool |