Servidores de Correo

Los MTA son los programas que transportan el correo de una máquina a otra. El MTA tradicional es Sendmail, sin embargo hay otras alternativas.

Aparte de servidores SMTP hay un servidor POP (qpopper) y un servidor IMAP (Courier-IMAP).

Courier-0.47

Introducción a Courier

El paquete Courier contiene un Agente de Transporte de Correo (MTA). Es útil para enviar correo a otros usuarios de tu máquina. También puede configurarse como servidor central de correo para tu dominio o como agente de reenvio de correo. El paquete Courier incluye también una interfaz de correo basada en web, IMAP, IMAP-SSL , POP3, y POP3-SSL.

Información sobre el paquete

Instalación de Courier

[Nota]

Nota

El paquete de Courier debe extraerse como usuario sin privilegios o el guión configure fallará.

Antes de compilar el programa, necesitas crear los usuarios y grupos que se espera encontrar cuando se ejecute el guión de instalación. Añade los usuarios y grupos con los siguientes comandos, como usuario root:

groupadd courier &&
useradd -c 'Courier Mail Server' -d /dev/null \
        -g courier -s /bin/false courier

También necesitas crear un usuario bin. Si ya tienes un usuario de nombre bin, puedes ignorar este paso.

useradd -c 'bin' -d /dev/null -g bin -u 1 bin

Courierfilter necesita el directorio /var/run/courier para almacenar todos los ficheros pid y de bloqueo de Courier. También debe existir /var/lock/subsys para el fichero maestro de bloqueo de Courier. Ejecuta los siguientes comandos para crear estos directorios:

install -d /var/run/courier -o courier -g courier -m755 &&
install -d /var/lock/subsys -o root -g root -m755

Instala Courier ejecutando los siguientes comandos:

./configure --prefix=/usr --libexecdir=/usr/lib/courier \
    --datadir=/usr/share/courier --sysconfdir=/etc/courier \
    --localstatedir=/var/lib/courier --with-piddir=/var/run/courier \
    --with-paranoid-smtpext --disable-autorenamesent \
    --enable-workarounds-for-imap-client-bugs --with-db=gdbm &&
make

Una vez más, vuelve al usuario root e instala Courier con los siguientes comandos:

make install &&
make install-configure

Explicación de los comandos

--libexecdir=/usr/lib/courier: Especifica el directorio que contiene los programas y librerías que no pueden ejecutarse en la línea de comandos.

--datadir=/usr/share/courier: Especifica el directorio en el que se instalarán los diversos guiones del intérprete de comandos, guiones de Perl y ficheros de datos.

--localstatedir=/var/spool/courier: Especifica el directorio que contendrá la cola de correo y otros datos temporales.

--with-piddir=/var/run/courier: Especifica el directorio en el que se guardará el fichero PID de Courier cuando Courier esté activo.

--with-paranoid-smtpext: Ser paranoico cuando se negocian extensiones ESMTP específicas de Courier con servidores remotos. El servidor de correo Courier define e implementa ciertas extensiones ESMTP experimentales: XVERP y XEXDATA. Los problemas pueden aparecer en el caso de que alguien use los mismos nombres para implementar alguna otra extensión. Si se especifica esta opción, el servidor ESMTP de Courier advierte sobre una falsa capacidad ESMTP llamada XCOURIEREXTENSIONS, y no reconocerá ninguna extensión propia de Courier a no ser que el servidor de correo remoto también advierta sobre esta falsa capacidad ESMTP.

--disable-autorenamesent: No renombra la carpeta de Enviado cada mes. Esta opción se puede controlar también con la variable de entorno SQWEBMAIL_AUTORENAMESENT.

--enable-workarounds-for-imap-client-bugs: Hay varios errores confirmados en algunos clientes IMAP que no implementan correctamente el protocolo IMAP4rev1. Esta opción activa algunos arreglos para esos clientes IMAP erroneos. NOTA: make check fallará si se usa esta opción. Primero deberías configurar sin esta opción y, si todas las pruebas de posconfiguración tienen exito, relanzar configure con esta opción y recompilar.

--with-db=gbbm: Courier necesita que esté instalada la librería de bases de datos GDBM o DB. Si ambas están presentes se usa GDBM. Esta opción fuerza la selección de la librería de bases de datos.

--with-ispell=/usr/bin/aspell: El servidor webmail de Courier puede usar revisión gramatical, si configure encuentra ispell o si explícitamente le indicas la localización de aspell.

--enable-mimetypes=[localización del fichero mime.types]: Utiliza esta opción si aparece un error diciendo que no puede encontrar el fichero mime.types.

Configuración de Courier

Ficheros de configuración

/etc/courier/*

Información sobre la configuración

Estando aún como root, necesitarás crear los siguientes ficheros con el contenido especificado.

/etc/courier/defaultdomain

cat > /etc/courier/defaultdomain << "EOF"
[yourdomain]
EOF

/etc/courier/me

cat > /etc/courier/me << "EOF"
[servername.yourdomain]
EOF

/etc/courier/locals

cat > /etc/courier/locals << "EOF"
localhost
[yourdomain]
EOF

/etc/courier/esmtpacceptmailfor.dir/system

cat > /etc/courier/esmtpacceptmailfor.dir/system << "EOF"
localhost
[yourdomain]
EOF

También necestiarás editar el fichero /etc/courier/aliases/system y cambiar la siguiente entrada.

postmaster: [your administrator email]

Si quieres denegarle el acceso al envio de correo a algunos anfitriones, necesitarás editar el fichero /etc/courier/smtpaccess/default.

Si deseas hospedar correo de dominios no locales, incluidos dominios virtuales, debes añadirlos a /etc/courier/hosteddomains. Este fichero debería existir necesites o no una lista de dominios hospedados:

touch /etc/courier/hosteddomains

Una vez completados los pasos anteriores, necesitarás ejecutar los siguientes comandos:

makesmtpaccess &&
makehosteddomains &&
makealiases

Para cada usuario necesitas crear un directorio Maildir:

cd /home/[username] &&
maildirmake Maildir &&
chown [username].[username] Maildir -R

Si deseas usar SSL con Courier, deberías obtener certificados y almacenarlos en /usr/share/courier. Opcionalmente puedes crear certificados de prueba autofirmados con los siguientes comandos:

mkesmtpdcert &&
mkimapdcert &&
mkpop3dcert

Todos los ficheros de configuración de Courier residen en el directorio /etc/courier/. Para cada servicio SMTP, POP3 e IMAP tendrás un fichero de configuración estandar y un fichero de configuración SSL. Para cada servicio que desees utilizar necesitarás editar el fichero de configuración y cambiar la variable [DEMONIO]START de 'NO' a 'YES'. Por ejemplo, para usar SMTP con SSL necesitarás editar /etc/courier/esmtpd-ssl y cambiar el valor de 'ESMTPDSSLSTART' a 'YES'. Haz el mísmo cambio para cada configuración del servicio que desees utilizar con Courier.

Si deseas usare LDAP, debería crearse un fichero de configuración LDAP:

echo "LDAPALIASDSTART=YES" > /etc/courier/ldapaliasd

Similarmente, si deseas usar webmail deberias crear el fichero de configuración webmail:

echo "WEBMAILDSTART=YES" > /etc/courier/webmaild

También necesitarás copiar el fichero webmail de /usr/lib/courier/courier/webmail al directorio cgi-bin de tu servidor Apache.

cp -a /usr/lib/courier/courier/webmail/webmail /srv/www/cgi-bin

Entonces necesitarás copiar las imágenes a un directorio bajo el directorio htdocs de tu servidor Apache. El directorio debe llamarse webmail o deberás especificarlo durante la fase de configuración con --enable-imageurl=[URL].

cp -a /usr/share/courier/sqwebmail/images /srv/www/htdocs/webmail

Si deseas usar la utilidad webadmin, necesitarás copiar el fichero webadmin de /usr/lib/courier/courier/webmail al directorio cgi-bin de tu servidor Apache.

cp -a /usr/lib/courier/courier/webmail/webadmin /srv/www/cgi-bin

También necesitarás poner la contraseña dentro del fichero /etc/courier/webadmin/password:

cat > /etc/courier/webadmin/password << "EOF"
[password]
EOF

Si no utilizas SSL con tu servidor Apache, necesitarás añadir /etc/courier/webadmin/unsecureok para poder utilizar las herramientas de administración basadas en web.

touch /etc/courier/webadmin/unsecureok

Si utilizas Linux-PAM en tu sistema, necesitarás crear los ficheros de configuración de PAM:

cat > /etc/pam.d/esmtp << "EOF"
# Begin /etc/pam.d/esmtp

auth            required                pam_unix.so try_first_pass
account         required                pam_unix.so
session         required                pam_unix.so

# End /etc/pam.d/esmtp
EOF
cat > /etc/pam.d/pop3 << "EOF"
# Begin /etc/pam.d/pop3

auth            required                pam_unix.so try_first_pass
account         required                pam_unix.so
session         required                pam_unix.so

# End /etc/pam.d/pop3
EOF
cat > /etc/pam.d/imap << "EOF"
# Begin /etc/pam.d/imap

auth            required                pam_unix.so try_first_pass
account         required                pam_unix.so
session         required                pam_unix.so

# End /etc/pam.d/imap
EOF
cat > /etc/pam.d/webmail << "EOF"
# Begin /etc/pam.d/webmail

auth            required                pam_unix.so try_first_pass
account         required                pam_unix.so
session         required                pam_unix.so

# End /etc/pam.d/webmail
EOF

Por último, si deseas iniciar el servidor Courier en el arranque, instala el guión de arranque /etc/rc.d/init.d/courier incluido en el paquete blfs-bootscripts-20050313.

make install-courier

Configuración para usuarios virtuales

Estas instrucción configurarán Courier para que busque usuarios virtuales en una base de datos MySQL. Comienza haciendo los siguientes cambios en /etc/courier/authmysqlrc:

MYSQL_SERVER            localhost
MYSQL_USERNAME          courier
MYSQL_PASSWORD          [your choice]
MYSQL_SOCKET            /var/run/mysql/mysql.sock
MYSQL_PORT              3306
MYSQL_DATABASE          courier_mail
MYSQL_USER_TABLE        users
MYSQL_CLEAR_PWFIELD     clear
DEFAULT DOMAIN          [your domain]
MYSQL_QUOTA_FIELD       quota

Conectate a MySQL:

mysql -p

Crea la base de datos courier_mail y establece la tabla de usuarios:

CREATE DATABASE courier_mail;
USE courier_mail
CREATE TABLE users (
id                    char(128) DEFAULT '' NOT NULL,
crypt                 char(128) DEFAULT '' NOT NULL,
clear                 char(128) DEFAULT '' NOT NULL,
name                  char(128) DEFAULT '' NOT NULL,
uid                   int(10) unsigned DEFAULT '65534' NOT NULL,
gid                   int(10) unsigned DEFAULT '65534' NOT NULL,
home                  char(255) DEFAULT '' NOT NULL,
quota                 char(255) DEFAULT '' NOT NULL,
KEY id (id(128))
);

Garantizale todos los privilegios al usuario courier creado anteriormente:

GRANT ALL PRIVILEGES ON *.* TO courier@localhost \
    IDENTIFIED BY '[password]' WITH GRANT OPTION;
QUIT

Crea un usuario y grupo para el cartero virtual:

groupadd -g 9000 vmailman &&
useradd -c 'Virtual Mailman' -g vmailman -m -k /dev/null -u 9000 vmailman

Crea un directorio de correo para un nuevo usuario virtual:

cd /home/vmailman &&
mkdir [virtual_user] &&
cd [virtual_user] &&
maildirmake Maildir &&
chown vmailman.vmailman Maildir -R

Ahora conectate a la base de datos MySQL como usuario courier:

mysql -u courier -p

Para añadir un usuario virtual necesitas entral al menos una versión de la contraseña, ya sea en texto claro o encriptada.

Añade el primer usuario virtual con los siguientes comandos:

USE courier_mail
INSERT INTO users VALUES (
'[virtual_users]@[domain.com],
'[encrypted password or blank]',
'[clear text password or blank]',
'[User's Name]',
9000,
9000,
'[location of Maildir]',
'[Quota in Bytes']
);
QUIT

Por ejemplo:

INSERT INTO users VALUES (
'blfsuser@linuxfromscratch.org',
'',
'password',
'BLFS User',
9000,
9000,
'/home/vmailman/blfsuser',
''
);

Contenido

Programas instalados: addcr, authenumerate, cancelmsg, courier, courier-config, courieresmtpd, courierfilter, courierlogger, couriermlm, couriertcpd, couriertls, deliverquota, dotforward, esmtpd, esmtpd-msa, esmtpd-ssl, filterctl, imapd, imapd-ssl, lockmail, mailbot, maildiracl, maildirkw, maildirmake, maildrop, mailq, makeacceptmailfor, makealiases, makedat, makehosteddomains, makemime, makepercentrelay, makesmtpaccess, makesmtpaccess-msa, makeuserdb, makeuucpneighbors, mimegpg, mkesmtpdcert, mkimapdcert, mkpop3dcert, pop3d, pop3d-ssl, preline, pw2userdb, reformail, reformime, rmail, sendmail, sharedindexinstall, sharedindexsplit, showconfig, showmodules, testmxlookup, userdb, userdbpw, vchkpw2userdb, webgpg y webmaild
Directorios instalados: /etc/courier, /usr/lib/courier, /usr/share/courier, /var/lib/courier, /var/lock/subsys, /var/run/courier y /var/spool/courier

Descripciones cortas

cancelmsg

Elimina un mensaje de la cola de correo.

courier

Un comando administrativo usado para controlar en mecanismo de planificación de Courier.

courierfax

Envia mensajes de correo por fax.

courierfilter

Inicia y para todos los filtros instalados por filterctl.

courierldapaliasd

Soporta alias de direcciones de correo usando un directortio LDAP.

courierlogger

Captura mensaje de error de otras aplicaciones Courier y las reenvía al sistema de registro.

couriermlm

Activa, mantiene y maneja listas de correo.

courierperlfilter

Un filtro de ejemplo escrito en Perl.

courierpop3d

Un servidorCourier para POP3.

courierpop3login

Lee la indentificación de usuario y contraseña POP3 y se la pasa a los módulos de autenticación.

couriertcpd

Acepta conexiones en trantes de red y lanza otros programas Courier tras establecer cada conexión.

couriertls

Lo usan las aplicaciónes para encriptar una conexión de red con SSL/TLS.

dotforward

Un módulo de compatibilidad que lee intrucciones de reenvío en $HOME/.forward.

dupfilter

Un filtro de hilos que intenta bloquear correo basura mediante el intento de detección de copias mútiples de un mismo mensaje, que son rechazadas.

esmtpd

Un guión de control para courieresmtpd.

esmtpd-msa

Un guión de control para courieresmtpd, pero añade envio de mensaje por el puerto 587 para el protocolo MSA.

filterctl

Instala odesinstala filtros globales de correo.

imapd

El servidor Courier-IMAP.

lockmail

Utilidad de ayda para el bloqueo de ficheros mailbox.

mailbot

Una utilidad de autorespuesta con capacidad MIME.

maildiracl

Maneja listas de control de acceso.

maildirkw

Modifica palabras clave de mensaje de Courier-IMAP compatibles con maildir.

maildirmake

Crea maildirs, y carpetas maildir.

maildrop

Un sustituto para el agente de entrega de correo local que incluye un lenguaje de filtrado de correo.

mailq

Muestra una lista de todos los mensajes que no se han entregado aún.

makeacceptmailfor

Contruye una lista de los dominios de los que se acepta correo a partir del directorio /etc/courier/esmtpacceptmailfor.dir directory.

makealiases

Contruye una base de datos de alias a partir de uno o más ficheros fuente en texto plano.

makedat

Utilidad para crear ficheros GDBM o DB a partir de ficheros en texto plano.

makehosteddomains

Reconstruye la base de datos de dominios hospedados a partir del contenido de /tools/etc/courier/hosteddomains.

makemime

Crea mensajes con formato MIME a partir de uno o más ficheros.

makepercentrelay

Contruye una lista de dominios %-relayed a partir del directorio percentrelay.dir directory.

makesmtpaccess

Construye ficheros de acceso del servidor ESMTP a partir del directorio /etc/courier/smtpaccess.

makesmtpaccess-msa

Construye ficheros de acceso del servidor ESMTP a partir del directorio /etc/courier/smtpaccess. Esta lista esmtp es para el protocolo MSA.

makeuserdb

Contruye una base de datos usuario/contraseña a partir del contenido de /tools/etc/courier/userdb.

mimegpg

Firma, encripta o desencripta mensajes de correo en formato MIME usando GnuPG.

mkesmtpdcert

Crea un certificado seguro SMTP de prueba.

mkimapdcert

Crea un certificado seguro IMAP de prueba.

mkpop3dcert

Crea un certificado seguro POP3 de prueba.

pop3d

Guión envoltorio para couriertcpd para iniciar y detener el servicio POP3.

pop3d-ssl

Guión envoltorio para couriertcpd para iniciar y detener el servicio POP3 sobre SSL.

preline

Preañade cabeceras mbox heredadas a mensajes de correo.

reformail

Lee un mensaje de la entrada estandar, lo formatea en cierto modo y lo escribe en la salida estandar.

reformime

Utilidad para reformatear mensajes MIME.

sendmail

Lee un mensaje de correo y lo entrega a su destinatario.

submit

Envia mensajes a Courier para su procesamiento.

testmxlookup

Lista los nombres y direcciones IP de los reenviadores de correo que reciben correo para el dominio.

userdb

Guión para manipular individualmente entradas en /tools/etc/courier/userdb.

userdbpw

Lee una línea de texto de la entrada estandar, la encripta y la imprime en la salida estandar.