Declaración
Este texto aspira a ser una traducción aceptable del documento que
acompaña este parche para Qmail, cuyo autor es Nick Leverton (leveret@warren.demon.co.uk)
Aunque he procurado no incurrir en errores, no ofrezco ningun tipo de
garantías sobre el mismo y su empleo corre de su propia cuenta y
riesgo.
He creado un sencillo parche para Qmail que simplifica de gran manera su
empleo
en hosts del tipo dial-up. Hasta ahora el uso de Qmail en los mismos no era
muy
propicio puesto que supone que el camino de entrega siempre esta disponible,
lo
que implica que cuando se usa discado on-demand, por defecto debiera discar
inmediatamente para permitir la entrega. Esto requería el uso de
software adicional tal como serialmail o parar y reiniciar qmail con cada
conexión para reestabler nuevos parámetros.
Con este parche, el cual modifica únicamente qmail-send, es posible
retener y liberar la cola de mensajes remotos a voluntad, usando un nuevo
parámetro holdremote, que será releído
cuando qmail sea iniciado con un SIGHUP.
De esta manera el correo saliente puede encolarse normalmente, pero con el
parámetro holdremote asignado, no será entregado.
Cuando
vaya a conectarse, revise en el script de conexión que el
parámetro quede 'en blanco', rellame a qmail-send con un
SIGHUP y todo el correo pendiente de entrega será
inmediatamente procesado. Cuando se desconecte, restablezca el
parámetro
y rellame qmail-send con un SIGHUP cualquier envío
posterior quedará en la cola hasta la próxima vez que se
conecte.
Existe tambíen una opcion holdlocal que funciona de forma
análoga: no insume mucho código y quizá alguien
podría querer usarla.
¿Por qué usar este parche?
Las ventajas de usar mi método sobre serialmail son:
- Su uso requiere software y configuración adicional además
del paquete básico de qmail que el usuario descarga la primera vez; con mi
parche no hay software o configuración adicional (excepto el parche,
obviamente)
- Es precisa una rellamada contínua mientras se esta
conectado
para que los mensajes más recientes sean encolados; esto implica la
instalación de otro paquete de DJB (daemontools). Con mi parche los
nuevos mensajes son entregados instantáneamente por qmail tal como se ha
establecido, sin carga ni complejidad adicional.
- Puede terminar ejecutando simultáneamente multiples instancias
de
serialmail ocasionando que el correo se duplique
(si, por ejemplo, esta usando diald configurado por un novato) a
menos
que emplee daemontools; con el parche esto no puede suceder puesto que solo
se
cambia un parámetro de qmail.
- Utilizar
serialmail para enviar a un un servidor de
retransmisión restringe la cantidad de mensajes que pueden ser enviados a la
vez; enviar el correo directamente puede ser potencialmente mas
rápido
ya que todo el ancho de banda de la conexión puede ser usado para despachar
varios mensajes simultáneamente.
- Usar servidores de retransmisión agrega un Punto Unico de Fallo
(
Single Point of Failure) en nuestro correo saliente. Despacharlo
directamente a
los hosts remotos usando sus registros MX resuelve esto.
No necesita el parche (aunque aun así puede instalarlo) si :
- Tiene una conexión permanente a la red para el correo
saliente.
- Tiene una conexión dial-up pero no sobre IP.
- Envía el correo remoto inmediatamente a través de un
vínculo PPP según demanda y lo hace feliz continuar haciéndolo de
esta
manera (generalmente se aplica a gente que no tiene que pagar su propio
cargo
telefónico :-)).
- Envía el correo remoto a diferentes destinos via dos o
mas
vínculos diferentes. En este caso podría usar
serialmail, que es un excelente paquete para
este propósito.
Descarga del parche
Al momento de escribir esto, la versión de qmail en vigor es la 1.03.
Hay versiones del parche para usar con las versiones de Qmail 1.01 y 1.03.
Necesita los fuentes de Qmail, a los cuales aplicará el parche usando
la
siguiente orden:
zcat fichero.patch.gz | patch -p0
Luego compile e instale; ¡tan simple como parpadear!
Disponibilidad del parche Holdremote para versiones de Qmail
|
Versión de Qmail
|
Nombre del parche
|
Método de Descarga
|
|
1.01
|
qmail-hold-1.01.pat.gz
|
HTTP
|
FTP
|
|
1.03
|
qmail-hold-1.03.pat.gz
|
HTTP
|
FTP
|
Usando el parche
A continuación, extractos de los scripts que ilustran su empleo.
Primero, un extracto del script que se ejecuta cuando se levanta el enlace
PPP
al proveedor de servicios Internet (en mi caso /etc/diald/ip-up):
{ rm -f /var/qmail/control/holdremote
/usr/bin/killall -HUP qmail-send } &
Debería agregar lo siguiente al script de desconexión de PPP (en
mi caso /etc/diald/ip-down):
{ echo 1 >/var/qmail/control/holdremote
chmod 644 /var/qmail/control/holdremote
chmod 644 /var/qmail/control/holdremote
/usr/bin/killall -HUP qmail-send } &
Finalmente, para asegurarnos de que qmail arranca en el estado de
contención ( offline ), necesitará agregar lo siguiente al
script
que lo inicia (en mi caso es el /etc/rc.d/init.d/sendmail.rc, bajo
la
opción "start")
echo 1 >/var/qmail/control/holdremote
chmod 644 /var/qmail/control/holdremote
Ultima actualización, 5 de Enero de 1999.