Sendmail y fetchmail: Un servidor de correo local

ArticleCategory: [Choose a category for your article]

System Administration

AuthorImage:[Here we need a little image form you]

[Photo de l'auteur]

TranslationInfo:[Author and translation history]

original in fr John Perr
fr to es Ana Pimentel

AboutTheAuthor:[A small biography about the author]

Usuario de Linux desde 1994; él es un editor de Francés de LinuxFocus.

Abstract:[Here you write a little summary]

Éste artículo explica como configurar sendmail y fetchmail en una computadora local conectada a Internet vía PPP. Tal configuración permite usar cualquier cliente de correo Unix (no solamente Netscape). Podrá enviar y  traer sus mensajes cada vez que usted establezca una conexión PPP.

ArticleIllustration:[This is the title picture for your article]

[Illustration]

ArticleBody:[The article body]

Introducción

Para poder administrar su correo en su buzón Linux, tiene que configurar un Agente de Transferencia de Correo (Mail Transfer Agent, MTA abreviado). El más popular (y el más antiguo) es ciertamente sendmail, pero existen otros como qmail los cuales son más rápidos y simples de configurar, o exim, el cual está incluído en las configuraciones estándar de Debian. Aquí nosotros nos mantendremos con sendmail, y usaremos el equipo de configuración de la Universidad Berkley de Eric Allman.
Para recuperar su correo alojado en el servidor de su Proveedor de Servicio de Internet  (Internet Service Provider, ISP en corto), será también necesario configurar fetchmail para proveer al sendmail con el contenido de sus buzones de correo. Fetchmail es utilizado para la recuperación de correo vía pop3 o imap. Usted también puede usar uucp, pero ese es un caso más extraño que no está contemplado en éste artículo. 

Configuración

Es necesario instalar los siguientes paquetes para configurar sendmail (en formato rpm ): Dependiendo de la distribución que usted utilice, Ud. puede tener archivos con nombres similares. Los números de la versión podrían ser un poco diferentes. Solamente los dos primeros paquetes son realmente necesarios.

Para configurar sendmail, siga los pasos siguientes:

  1. primero debemos asumir que:
  2.  
  3. primero haga un archivo: /usr/lib/sendmail-cf/cf/config.mc el cual contiene:
  4. # Inicio de la configuracion de config.mc
    include(`../m4/cf.m4')dnl
    OSTYPE(`linux')dnl
    define(`SMTP_MAILER_FLAGS', `e9')dnl
    FEATURE(redirect)dnl
    FEATURE(nocanonify)dnl
    FEATURE(always_add_domain)dnl
    FEATURE(local_procmail)dnl
    GENERICS_DOMAIN(localhost.localdomain localhost localhost)
    FEATURE(genericstable)
    FEATURE(masquerade_envelope)dnl
    define(`confCF_VERSION',`dede's cf - 22/05/98')dnl
    define(`confCON_EXPENSIVE',`True')dnl
    define(`confME_TOO',`True')dnl
    define(`confCOPY_ERRORS_TO',`Postmaster')dnl
    define(`confDEF_CHAR_SET',`ISO-8859-1')dnl
    define(`confMIME_FORMAT_ERRORS',`True')dnl
    define(`SMART_HOST',`smtp8:[smtp.isp.net]')dnl
    define(`confTO_QUEUEWARN',`24h')
    MAILER(local)
    MAILER(smtp)
    # Final de la configuración de config.mc
    La línea define(`SMART_HOST'.... le dice a sendmail que envíe todo el correo externo de salida vía su proveedor en lugar de intentar entregarlo el mismo directamente. Tu proveedor de servicio de Internet entonces se ocupará de la distribución más lejana.
  5. También crea /etc/genericstable:
  6. dede:   toto@isp.net
    root:   toto@isp.net
    news:   toto@isp.net
  7. Verifica que el archivo/etc/aliases contenga al final:
  8. MAILER-DAEMON:  postmaster
    postmaster:     root
  9. Modifica o crea el archivo/etc/nsswitch.conf como sigue:
  10. passwd:     files  
    shadow:     files  
    group:      files  
    hosts:      files   dns
    services:   files
    networks:   files
    protocols:  files
    rpc:        files
    ethers:     files
    netmasks:   files     
    bootparams: files
    netgroup:   
    publickey:  
    automount:  files 
    aliases:    files 
    (Cada entrada debe decir solamente "files" excepto host)
  11. Genera el /etc/sendmail.cf con:

  12. m4 config.mc > /etc/sendmail.cf
    y permisos como:
    -rw------- 1 root root 26468 May 12 22:52 /etc/sendmail.cf
  13. Genera la base de datos de conversión de direcciones:

  14. /usr/bin/sendmail -bi -oA/etc/genericstable
    Un archivo /etc/genericstable.db debe ser creado
  15. Reconstruye la tabla de alias con:

  16. newaliases
  17. El archivo/etc/hosts debe contener una línea similar a:

  18. 127.0.0.1 localhost.localdomain localhost localhost
  19. reinicia sendmail:

  20. kill `head -1 /var/run/sendmail.pid`
    /usr/bin/sendmail -bd -os 

    Prueba sendmail

    Esto es todo en lo que a sendmail respecta.Ahora tenemos que verificar que todo trabaje perfectamente:
    Cree un archivo llamado test.mail con las siguientes líneas:
    Subject: prueba local 
    primera línea de mi mensaje 
    (compulsory blank line) 
     

    y haga:
    /usr/bin/sendmail -v dede < test.mail

    Las siguientes líneas deben desplegar:

    dede... Connecting to local
    dede... Sent
    Ejecute su correo o cualquier otro cliente (pero no netscape todavía!!!) y verifique que el mensaje haya sido recibido

    En orden para configurar Netscape para leer correo local (servido por sendmail):

    Usted también puede usar chmod 777 pero éste cambio puede significar un punto de seguridad si Ud. no es el único que está conectado  a su buzón. chmod 1777 significa que  el propietario del archivo puede borrarlo mas no el resto de las personas con permisos de escritura en el directorio.

    Desde ahora, su propia PC está sirviendo correo directamente a Netscape aunque Ud. no esté conectado a Internet. Por supuesto, Ud. puede utilizar otros clientes de correo como XFmail, emacsm mutt, pine, etc... 

    Configuración de fetchmail

    Antes de probar nuestro nuevo servidor de correo en Internet, necesitamos configurar fetchmail para la transferencia de mensajes alojados en los buzones de su ISP:
    cree un archivo  .fetchmailrc en /home/dede:
    poll pop.isp.net protocol POP3
            user toto is dede 
            password XXXXXXX
    donde toto y XXXXX son el id del usuario y el password de la cuenta de correo de en pop.isp.net. Si usted tiene mas de un buzón, solo duplique las lineas arriba mencionadas para cada buzón que Ud. tenga.
    El archivo .fetchmailrc debe tener los permisos que a continuación se describen, de lo contrario fetchmail no correrá:
    -rw-------   1 dede   dede   189 oct  6 21:45 /home/dede/.fetchmailrc
    Ahora, para una prueba en Internet: Éste debe aparecer en la cola de correo como resultado del comando: mailq. Después, conéctese con su ISP (isp.net) y envíe el mensaje:
    /usr/bin/sendmail -q
    sendmail -q hace fluir la cola de sendmail y hace que envíe el correo ahora. Espere un momento y teclee fetchmail para obtener su correo, y Ud. debe tener un mensaje de regreso por el espejo (mirror). Ahora Ud. puede desconectarse si todos los mensajes han llegado. 

    Automatización

    Ahora nuestra misión es hacer que ésto que acabamos de realizar, se ejecute por si mismo cada vez que la conexión sea establecida.

    Con PPP, archivos /etc/ppp/ip-up y ip-down son ejecutados cada vez que Ud. se conecta o se desconecta. Verifique que Ud. tenga una línea como ésta en éstos archivos, si no la tiene, creela:
    [ -x /etc/ppp/ip-down.local ] && /etc/ppp/ip-down.local $*
    En /etc/ppp/ip-up agregue:
    [ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local $*

    Archivos /etc/ppp/ip-up y ip-down inician los archivos ip-up.local y ip-down.local los cuales escribimos como ésto:

    #!/bin/bash
    # /etc/ppp/ip-up.local
    
    #Registro de parámetros de conexión
    echo `date` $4 $5 ppp-on >> /etc/ppp/history
    tail -n 1 connect-errors >> /etc/ppp/history
    
    # Enviar esperando correo
    echo Sending mail... > /dev/console
    /usr/sbin/sendmail -q
    echo Mail sent.  > /dev/console
    
    # Obtener correo esperando en el servidor Pop
    echo Getting mail... > /dev/console
    fetchmail  > /dev/console 2>&1
    echo Got mail.  > /dev/console
    
    #Fin
    exit 0
    # fin de /etc/ppp/ip-up.local
    De hecho, las dos líneas de comandos importantes son sendmail -q y fetchmail. El resto son complemento y permiten:  
    #!/bin/bash
    # /etc/ppp/ip-down.local
    
    #Registro de parámetros de la conexión
    echo `date` ppp-off >> /etc/ppp/history
    
    #fin
    exit 0
    # fin de /etc/ppp/ip-down.local
    Éstos archivos son ejecutados como root, por lo que es necesario copiar el archivo .fetchmailrc en el folder /root.

    Si Ud. tiene acceso permanente a Internet, sendmail regularmente envía el correo si éste ha sido iniciado como demonio con el siguiente comando:
    sendmail -bd -q10m
    si usted desea que se envíe el correo cada 10 minutos, por ejemplo.
    Fetchmail puede también ser inicializado en modo de demonio (daemon) con el comando:
    fetchmail -d 600
    para traer el correo entrante cada 10 minutos (600 segundos).

    Usualmente, éste tipo de comandos están localizados en los archivos de inicio (o init) en el directorio /etc/rc o /etc/rc.d/ (puede variar de acuerdo a la configuración). 

    Conclusión

    Con ésta configuración, el correo saliente que espera en la cola (mailq) es enviado. El correo entrante alojado en su buzón de correo de su ISP es entregado a Ud. También puede usar xbiff o xmailbox o cualquier otro software similar para avisarle que tiene correo. Además, también puede afinar la forma en que su correo es separado y filtrado con  procmail. Éste último paso está explicado en el artículo publicado en Noviembre de 1999, de Angel Lopez

    Otros artículos relacionados

    Documentación sobre sendmail o fetchmail: