Servidor de correo · 5 min read · Feb 13, 2026
Postfix-SMTP-AUTH-TLS-Howto
Postfix-SMTP-AUTH-TLS-Howto
Version 1.0
Author: Falko Timme
Este documento describe cómo instalar un servidor de correo basado en postfix que sea capaz de SMTP-AUTH y TLS. Debería funcionar (quizás con ligeros cambios en cuanto a rutas, etc.) en todos los sistemas operativos *nix. Hasta ahora lo he probado en Debian Woody y Fedora Core 1.
Este howto está destinado como una guía práctica; no cubre los antecedentes teóricos. Estos se tratan en muchos otros documentos en la web.
¡Este documento se proporciona sin garantía de ningún tipo!
1 Obtener las Fuentes
Necesitamos el siguiente software: openssl, cyrus-sasl2, postfix y el parche TLS para postfix. Instalaremos el software desde el directorio /tmp.
cd /tmp
wget http://www.openssl.org/source/openssl-0.9.7c.tar.gz
wget –passive-ftp ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.17.tar.gz
wget –passive-ftp ftp://ftp.aet.tu-cottbus.de/pub/postfix_tls/related/postfix/postfix-2.0.16.tar.gz
wget –passive-ftp ftp://ftp.aet.tu-cottbus.de/pub/postfix_tls/pfixtls-0.8.16-2.0.16-0.9.7b.tar.gz
2 Instalar Openssl
tar xvfz openssl-0.9.7c.tar.gz
cd openssl-0.9.7c
./config
make
make install
3 Instalar Cyrus-sasl
cd /tmp
tar xvfz cyrus-sasl-2.1.17.tar.gz
cd cyrus-sasl-2.1.17
./configure –enable-anon –enable-plain –enable-login –disable-krb4 –with-saslauthd=/var/run/saslauthd –with-pam –with-openssl=/usr/local/ssl –with-plugindir=/usr/local/lib/sasl2 –enable-cram –enable-digest –enable-otp (1 línea!)
make
make install
Si /usr/lib/sasl2 existe:
mv /usr/lib/sasl2 /usr/lib/sasl2_orig
ln -s /usr/local/lib/sasl2 /usr/lib/sasl2
Crea el archivo /usr/local/lib/sasl2/smtpd.conf:
| # Esto establece smtpd para autenticar usando el daemon saslauthd. pwcheck_method:saslauthd # Esto permite solo plain, login, cram-md5 y digest-md5 como los mecanismos de autenticación. mech_list: plain login cram-md5 digest-md5 |
4 Instalar Postfix
cd /tmp
tar xvfz pfixtls-0.8.16-2.0.16-0.9.7b.tar.gz
tar xvfz postfix-2.0.16.tar.gz
cd postfix-2.0.16
useradd postfix
groupadd postdrop
patch -p1 < ../pfixtls-0.8.16-2.0.16-0.9.7b/pfixtls.diff
make makefiles CCARGS=”-DHAS_SSL -DUSE_SASL_AUTH -I/usr/local/include/sasl -I/usr/local/ssl/include” AUXLIBS=”-L/usr/local/ssl/lib -L/usr/local/lib -R/usr/local/lib -lsasl2 -lssl -lcrypto” (1 línea!) make make install* (aceptar los valores predeterminados)
- cp /etc/postfix/aliases /etc/
newaliases*
Crea /etc/init.d/postfix:
| #!/bin/bash # # postfix Este script controla el daemon postfix. # # descripción: Postfix MTA # nombre del proceso: postfix case "$1" in start) /usr/sbin/postfix start ;; stop) /usr/sbin/postfix stop ;; reload) /usr/sbin/postfix reload ;; restart) $0 stop $0 start ;; *) echo "Uso: $0 {start|stop|reload|restart}" exit 1 esac exit 0 |
chmod 755 /etc/init.d/postfix
Para iniciar postfix al arrancar, haz lo siguiente:
ln -s /etc/init.d/postfix /etc/rc2.d/S20postfix
ln -s /etc/init.d/postfix /etc/rc3.d/S20postfix
ln -s /etc/init.d/postfix /etc/rc4.d/S20postfix
ln -s /etc/init.d/postfix /etc/rc5.d/S20postfix
ln -s /etc/init.d/postfix /etc/rc0.d/K20postfix
ln -s /etc/init.d/postfix /etc/rc1.d/K20postfix
ln -s /etc/init.d/postfix /etc/rc6.d/K20postfix
Nuestro postfix se ejecutará chrooted en /var/spool/postfix así que tenemos que copiar algunos archivos:
mkdir -p /var/spool/postfix/etc
cd /etc
cp localtime services hosts resolv.conf /var/spool/postfix/etc/
mkdir -p /var/spool/postfix/var/run
mv -f /var/run/saslauthd/ /var/spool/postfix/var/run/
chmod 755 /var/spool/postfix/var/run/saslauthd/
ln -s /var/spool/postfix/var/run/saslauthd/ /var/run/saslauthd
Ahora tenemos que generar los archivos de certificado necesarios para TLS:
mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/
Si /usr/bin/openssl existe:
mv /usr/bin/openssl /usr/bin/openssl _orig*
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
<- Ingresa una contraseña para smtpd.key.
chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr
<- Nuevamente, ingresa tu contraseña para smtpd.key.
<- Ingresa tu Nombre de País (por ejemplo, “DE”).
<- Ingresa el Nombre de tu Estado o Provincia.
<- Ingresa tu Ciudad.
<- Ingresa el Nombre de tu Organización (por ejemplo, el nombre de tu empresa).
<- Ingresa el Nombre de tu Unidad Organizativa (por ejemplo, “Departamento de TI”).
<- Ingresa el Nombre de Dominio Completo del sistema (por ejemplo, “server1.example.com”).
<- Ingresa tu Dirección de Correo Electrónico.
La siguiente información es opcional:
<- Ingresa una contraseña de desafío.
<- Ingresa un nombre de empresa opcional.
openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
<- Nuevamente, ingresa tu contraseña para smtpd.key. *
openssl rsa -in smtpd.key -out smtpd.key.unencrypted
<- Nuevamente, ingresa tu contraseña para smtpd.key. *
mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650
<- Nuevamente, ingresa tu contraseña para smtpd.key.
<- Ingresa tu Nombre de País (por ejemplo, “DE”).
<- Ingresa el Nombre de tu Estado o Provincia.
<- Ingresa tu Ciudad.
<- Ingresa el Nombre de tu Organización (por ejemplo, el nombre de tu empresa).
<- Ingresa el Nombre de tu Unidad Organizativa (por ejemplo, “Departamento de TI”).
<- Ingresa el Nombre de Dominio Completo del sistema (por ejemplo, “server1.example.com”).
<- Ingresa tu Dirección de Correo Electrónico.
Edita /etc/postfix/main.cf para habilitar SMTP-AUTH y TLS:
postconf -e ‘mydomain = example.com’
postconf -e ‘myhostname = server1.$mydomain’
postconf -e ‘smtpd_sasl_local_domain =’
postconf -e ‘smtpd_sasl_auth_enable = yes’
postconf -e ‘smtpd_sasl_security_options = noanonymous’
postconf -e ‘broken_sasl_auth_clients = yes’
postconf -e ‘smtpd_recipient_restrictions=permit_sasl_authenticated,permit_mynetworks,check_relay_domains’
postconf -e ‘inet_interfaces = all’
postconf -e ‘alias_maps = hash:/etc/aliases’
- postconf -e ‘smtpd_tls_auth_only = no’
postconf -e ‘smtp_use_tls = yes’
postconf -e ‘smtpd_use_tls = yes’
postconf -e ‘smtp_tls_note_starttls_offer = yes’
postconf -e ‘smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key’
postconf -e ‘smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt’
postconf -e ‘smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem’
postconf -e ‘smtpd_tls_loglevel = 1’
postconf -e ‘smtpd_tls_received_header = yes’
postconf -e ‘smtpd_tls_session_cache_timeout = 3600s’
postconf -e ‘tls_random_source = dev:/dev/urandom’
5 Configurar Saslauthd
Crea /etc/init.d/saslauthd:
| #!/bin/sh -e NAME=saslauthd DAEMON="/usr/sbin/${NAME}" DESC="Daemon de Autenticación SASL" DEFAULTS=/etc/default/saslauthd test -f "${DAEMON}" || exit 0 # Archivo de configuración predeterminado; edita ese archivo para configurar este script. if [ -e "${DEFAULTS}" ]; then . "${DEFAULTS}" fi # Si no vamos a iniciar el daemon, simplemente salimos if [ "${START}" != "yes" ]; then exit 0 fi # Si no tenemos mecanismos definidos if [ "x${MECHANISMS}" = "x" ]; then echo "Necesitas configurar ${DEFAULTS} con los mecanismos a utilizar" exit 0 fi # Agrega nuestros mecanismos con la bandera necesaria for i in ${MECHANISMS}; do PARAMS="${PARAMS} -a ${i}" done # Considera nuestras opciones case "${1}" in start) echo -n "Iniciando ${DESC}: " ln -fs /var/spool/postfix/var/run/${NAME} /var/run/${NAME} ${DAEMON} ${PARAMS} echo "${NAME}." ;; stop) echo -n "Deteniendo ${DESC}: " PROCS=`ps aux | grep -iw '/usr/sbin/saslauthd' | grep -v 'grep' |awk '{print $2}' | tr ' ' ' '` if [ "x${PROCS}" != "x" ]; then kill -15 ${PROCS} &> /dev/null fi echo "${NAME}." ;; restart|force-reload) $0 stop sleep 1 $0 start echo "${NAME}." ;; *) echo "Uso: /etc/init.d/${NAME} {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0 |
chmod 755 /etc/init.d/saslauthd
Para iniciar saslauthd al arrancar, haz lo siguiente:
ln -s /etc/init.d/saslauthd /etc/rc2.d/S20saslauthd
ln -s /etc/init.d/saslauthd /etc/rc3.d/S20saslauthd
ln -s /etc/init.d/saslauthd /etc/rc4.d/S20saslauthd
ln -s /etc/init.d/saslauthd /etc/rc5.d/S20saslauthd
ln -s /etc/init.d/saslauthd /etc/rc0.d/K20saslauthd
ln -s /etc/init.d/saslauthd /etc/rc1.d/K20saslauthd
ln -s /etc/init.d/saslauthd /etc/rc6.d/K20saslauthd
Luego crea /etc/default/saslauthd:
| # Esto necesita ser descomentado antes de que saslauthd se ejecute automáticamente START=yes # Debes especificar los mecanismos de autenticación que deseas usar. # Esto por defecto es "pam" para soporte PAM, pero también puede incluir # "shadow" o "sasldb" MECHANISMS=shadow |
Si descubres que saslauthd se encuentra en /usr/local/sbin en lugar de /usr/sbin, crea un enlace simbólico:
ln -s /usr/local/sbin/saslauthd /usr/sbin/saslauthd
Luego inicia saslauthd y postfix:
/etc/init.d/saslauthd start
/etc/init.d/postfix start
6 Prueba tu Configuración
Para ver si SMTP-AUTH y TLS funcionan correctamente, ejecuta el siguiente comando:
telnet localhost 25
Después de haber establecido la conexión con tu servidor de correo postfix, escribe
ehlo localhost
Si ves las líneas
250-STARTTLS
y
250-AUTH
todo está bien.

Escribe
quit
para volver a la shell del sistema.
Más información (específica de Debian) sobre este tema se puede encontrar aquí: http://www.projektfarm.com/en/support/debian_setup/index.html.
Enlaces
Postfix MTA: http://www.postfix.org/
OpenSSL: http://www.openssl.org/
Cyrus-SASL: http://asg.web.cmu.edu/sasl/
Postfix/TLS: http://www.aet.tu-cottbus.de/personen/jaenicke/postfix_tls/
Ubicación original de este documento:
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.