leif@lege.com
, Jan P Tietze,
jptietze@mail.hh.provi.de
. Traducción: David Marín Carreño
davefx@bigfoot.com
.Este documento está realizado por dos autores. La parte de soluciones en las que no es necesario solicitar la conexión (la parte más antigua) es obra de Leif Erlingsson <leif@lege.com>, y la parte nueva de soluciones de conexión bajo petición es obra de Jan P Tietze <jptietze@mail.hh.provi.de>.
Escrito por Leif Erlingsson <leif@lege.com>.
La versión original de esta parte contenía muchas cosas innecesarias. Esto es todo lo que sirve, en realidad...
Slackware y compatibles: /etc/rc.d/rc.M:
echo "Starting sendmail daemon (/usr/sbin/sendmail -bd -os) [queue only mode]..."
/usr/sbin/sendmail -bd -os # NOT "-bd -q 15m", the "standard" flags!
RedHat y compatibles: /etc/rc.d/init.d/sendmail.init:
echo -n "Starting sendmail: [queue only mode]"
daemon sendmail -bd -os # NOT daemon sendmail -bd -q1h
La opción -os no es realmente esencial, todo lo que hace es esto:
SuperSafe [s] Ser super-seguro al ejecutar cosas, como
por ejemplo, instanciar siempre el fichero de
cola, incluso si va a intentar un envío
inmediato. Sendmail siempre instancia el
fichero de cola antes de devolver el control
al cliente bajo cualquier circunstancia. Esta
opción debería estar siempre establecida.
De todos modos, esta opción debería estar configurada en el fichero de configuración por defecto sendmail.cf.
Los usuarios serios utilizan el código m4 para hacer esto. Yo recomiendo esta solución si alguna vez planea actualizar sendmail y también para cuando realice un cambio no trivial a sendmail.cf.
Si usted no desea configurar sendmail de manera que las cabeceras de respuesta trabajen aunque usted posea una conexión con IP dinámica, entonces no necesitará el código m4.
Esta manera de hacer las cosas depende extremadamente de la versión de sendmail que esté utilizando. La solución que se cuenta *sólo* es válida para sendmail-8.8.x.
Edite /etc/sendmail.cf:
# avoid connecting to "expensive" mailers on initial submission?
O HoldExpensive=True
... Más abajo ...
##### @(#)smtp.m4 8.33 (Berkeley) 7/9/96 #####
Msmtp, P=[IPC], F=mDFMuXe, S=11/31, R=21, E=\r\n, L=990,
T=DNS/RFC822/SMTP,
A=IPC $h
Mesmtp, P=[IPC], F=mDFMuXae, S=11/31, R=21, E=\r\n, L=990,
T=DNS/RFC822/SMTP,
A=IPC $h
Msmtp8, P=[IPC], F=mDFMuX8e, S=11/31, R=21, E=\r\n, L=990,
T=DNS/RFC822/SMTP,
A=IPC $h
Mrelay, P=[IPC], F=mDFMuXa8e, S=11/31, R=61, E=\r\n, L=2040,
T=DNS/RFC822/SMTP,
A=IPC $h
La opción importante de aquí es "e". No toque nada si las otras opciones son diferentes en su fichero. Mantenga sus opciones tal y como están. Sólo añada "e" a sus banderas de acuerdo con los ejemplos anteriores, a menos que ya estuviera ahí. Las "e" marcan a las máquinas de correo como "caras" (expensive).
En esta sección asumiré, por simplicidad, que la versión sendmail es la 8.8.7. Si tiene una versión diferente, reemplace 8.8.7 por el número de versión que posea. Además, las instrucciones no funcionarán con versiones antiguas de sendmail. Consiga la última versión.
Descargue el código de sendmail. Utilice ``http://WWW.Sendmail.ORG'' o quizá ``ftp.sendmail.org''.
También le recomiendo que consiga mi parche para permitir hacer alias inverso del sobre del remitente y otras muchas opciones que le permiten tomar el control de su entorno de correo.
Escriba a ``Sendmail Patch <sendmail@lege.com>'', Poniendo como asunto del mensaje: ``sendmail-8.8.7'', si 8.8.7 es su versión de sendmail.
También está disponible de ``http://www.lege.com''.
No tiene que descargar mis parches para conseguir que "Poner en la cola el correo remoto + Enviar el correo local" funcione. Mis parches resuelven otras cosas. Pero creo que este es un buen lugar para mencionarlos, ya que muchos usuarios de Linux los encontrarán extremadamente útiles. (Este parche puede incluso conseguir dominios virtuales que funcionen correctamente, si así lo desea. Los dominios virtuales no tienen por qué ser "locales". Puede hacer que tenga "alias x", o en otras palabras "alias inversos").
Descomprima el código de sendmail. Puede tener /usr/src/sendmail-8.8.7/. cd /usr/src/sendmail-8.8.7/cf
Ahora ejecute mi parche si lo desea. Si no, salte este paso: Si no desea utilizar procmail como Agente Local de Reparto, guarde su /usr/src/sendmail-8.8.7/cf/ostype/linux.m4 antes de hacer esto... Guarde mi parche en "/tmp/sendmail-8.8.7-cf-cpio-idcmu.gz", y...
cd /usr/src/sendmail-8.8.7/cf
gzip -dc < /tmp/sendmail-8.8.7-cf-cpio-idcmu.gz | cpio -idcmu
Si no desea utilizar procmail, escriba de nuevo la copia almacenada
de /usr/src/sendmail-8.8.7/cf/ostype/linux.m4.
Y tanto como si ha aplicado mi parche como si no, debe asegurarse de añadir estas líneas o unas líneas muy similares a /usr/src/sendmail-8.8.7/cf/cf/nombredesumaquina.smtp.mc (pero si aplicó mi parche puede desear investigar los ficheros que contengan la palabra "elijah", bajo /usr/src/sendmail-8.8.7/cf):
dnl # Defer Delivery to "expensive" mailers until next time the
dnl # queue is processed using "O HoldExpensive=True" and make
dnl # sure smtp mailers are "expensive".
dnl # (See original "sendmail" book Chapter 30: Options,
dnl # "Oc - Don't connect to expensive mailers", or
dnl # 2nd Edition "sendmail" book Chapter 34.8.29,
dnl # "HoldExpensive (c), Queue for expensive mailers".)
dnl # / Leif Erlingsson <leif@lege.com>
define(`confCON_EXPENSIVE', `True')
define(SMTP_MAILER_FLAGS, e)
MAILER(local)dnl
MAILER(smtp)dnl
Las versiones 1.x de este documento contenían sugerencias de soporte de menú para /var/X11R6/lib/fvwm/system.fvwmrc. Las he eliminado en esta versión, pero aún están disponibles bajo petición:
Escriba a ``Menu support suggestions <fvwmrc@lege.com>'', Asunto: ``Menu support suggestions''
Por Jan P Tietze <jptietze@mail.hh.provi.de>.
Muchos usuarios Linux acceden a Internet a través de una línea telefónica y muchos han decidido implementar programas de conexión bajo petición en su sistema. Eso es, cuando un paquete IP de algún tipo tiene que dejar la red local o la máquina local, la conexión a un Proovedor de Servicios de Internet (ISP) se establecerá automáticamente. El enlace se cortará después de un período de tiempo en el que no se intercambien paquetes.
Aunque esta es una manera muy cómoda y sin apenas costes, hay un caso especial en el que ni es cómodo (debido a que el tiempo que se tarda en establecer una conexión vía módem tradicional es bastante grande), ni rentable. Este caso es el envío de correo electrónico. El correo electrónico suele enviarse vía SMTP, tanto como si tiene que ser enviado por su propio sistema o a través de una máquina SMTP de Internet que suele residir en la red de su ISP.
Con las líneas telefónicas, cada vez que envíe un mensaje el enlace deberá ponerse en marcha. Esto puede estar bien si envía sólo un mensaje, pero si desea crear y enviar múltiples mensajes, conectar más de una vez puede ser tedioso y bastante caro. Además, si su ISP pone límites a las veces a las que está permitido conectarse, esto podría obligarle a postponer mensajes a ciertas horas del día, y debería enviarlas manualmente más tarde.
La sección 1 de este documento resuelve esa situación, sin embargo, en situaciones en las que la conexión se realice a partir de una búsqueda de servidor de nombres, el enlace se establecerá incluso aunque el mensaje se ponga en la cola y no llegue a enviarse. La razón de esto es que sendmail desea estandarizar los nombres de máquina.
La solución a este problema tiene dos partes: Primero: realizaremos cambio moderado en sendmail.cf. Y después debemos definir el proceso del actual reparto de mensajes. Personalmente, prefiero hacer que cron realice el trabajo en mi lugar, y para ello he descrito los cambios necesarios más abajo.
Por las razones ya comentadas en [1.2], recomiendo modificar los fuentes en m4 en lugar de editar sendmail.cf directamente. Ello le ahorrará mucho lío y hará que los cambios de configuración sean más explícitos.
Primero, realice todos los cambios descritos en la primera parte de este documento. Después vaya a la materia específica de conexión bajo petición (dial on demand).
Configurar directamente es poco práctico y cualquier cosa menos explícito, pero es bastante obvio, si esa es su decisión.
Cerca del final de su sendmail.cf debería haber una línea como la siguiente:
R$* < @ $* $~P > $* $: $1 < @ $[ $2 $3 $] > $4
Ponga al principio de esa línea una almohadilla "#" para que quede
#R$* < @ $* $~P > $* $: $1 < @ $[ $2 $3 $] > $4
Añada la siguiente línea al fichero /usr/src/sendmail-8.8.7/cf/cf/yourhostname.smtp.mc:
FEATURE(nocanonify)dnl
Su sendmail.cf final puede construirse después ejecutando los siguientes comandos. Recuerde siempre hacer copia de seguridad de su /etc/sendmail.cf antiguo antes de instalar el nuevo:
cp /etc/sendmail.cf /etc/sendmail.cf.bak
cd /usr/src/sendmail-8.8.7/cf/cf
m4 yourhostname.smtp.mc > /etc/sendmail.cf
A veces es útil, en especial si utiliza líneas de módem, tener un retardo de conexión instalado. Esto quiere decir que si sendmail intenta establecer una conexión para enviar un mensaje (y esto hace que se marque el teléfono del proovedor) pero el enlace tarda más tiempo en establecerse que lo que sendmail piensa que sería un retardo razonable, sendmail simplemente esperará unos segundos y después lo reintentará.
En algún lugar de su sendmail.cf podría haber una línea que dice:
#O DialDelay=10s
(o algo similar). Borre el "#". Si no hay un "#" al principio de la línea, las cosas están bien (sólo indica que ya había sido habilitado antes).
Si no hay una línea de ese aspecto en sendmail.cf, añada una (es una buena idea el añadirla en la sección "options" del fichero):
O DialDelay=10s
Ahora cambie la parte "10s" por el número de segundos que considere apropiado.
Añada la siguiente línea a /usr/src/sendmail-8.8.7/cf/cf/yourhostname.smtp.mc:
define(`confDIAL_DELAY',`10s')
Ahora cambie la parte "10s" al número de segundos que considere apropiado.
Su sendmail.cf definitivo puede entonces construirse ejecutando los siguientes comandos. Recuerde siempre hacer una copia de seguridad de su antiguo /etc/sendmail.cf antes de instalar el nuevo:
cp /etc/sendmail.cf /etc/sendmail.cf.bak
cd /usr/src/sendmail-8.8.7/cf/cf
m4 yourhostname.smtp.mc > /etc/sendmail.cf
El envío de mensajes puede realizarse ejecutando el comando "sendmail -q" Para aquellos que estén interesados en lo que sendmail hace realmente, "sendmail -q -v" les proporcionará una versión algo más detallada del proceso.
Es muy conveniente automatizar el proceso de envío de mensajes. Una herramienta comúnmente utilizada para este proceso es cron.
Edite su crontab:
crontab -e
Añada líneas al fichero:
05 18-23,0-7 * * Mon,Tue,Wed,Thu,Fri /usr/sbin/sendmail -q
05 * * * Sat,Sun /usr/sbin/sendmail -q
Lea la página de manual de crontab (disponible a través de "man 5 crontab" para más información. Creo que el formato es bastante obvio. El ejemplo anterior envía correo (si y solo sí hay correo disponible en la cola) 5 minutos después de la hora en punto los días de la semana, empezando a las 6:05 de la tarde y acabando a las 7:05 de la mañana. Los fines de semana, el correo se envía 5 minutos después de cada hora, comenzando a las 12:05 el sábado y finalizando a las 23:05 el domingo.
Como usuario de conexión bajo petición, a veces es desable hacer que el sistema recoja el correo mediante el protocolo POP3 a ciertas horas del día. Podría, por lo tanto, añadir una entrada similar a la siguiente en su crontab:
0 21 * * * popclient -3 -u <su nombre de usuario pop3
va aquí> -p <ponga aquí su contraseña> -o /var/spool/mail/<
el usuario de su sistema que debería recibir el e-mail recogido>
<mailhost.dominio.com>
Por supuesto, todo debería ir en una sóla línea.
Después, guarde el fichero y abandone el editor. El crontab debería ahora estar configurado.
Then, save the file and leave the editor. The crontab should now be installed.