Postfix

Postfix es el Agente de Transferencia de Correo (Mail Transfer Agent, MTA) predeterminado en Ubuntu. Su objetivo es ser rápido, seguro y fácil de administrar. Es compatible con el MTA sendmail. Esta sección explica cómo instalar y configurar postfix. También explica cómo configurar un servidor SMTP usando una conexión segura (para enviar correos electrónicos de forma segura).

Instalación

Para instalar postfix con SMTP-AUTH y Transport Layer Security (TLS), ejecute la siguiente orden:

sudo apt-get install postfix

Cuando el proceso de instalación le haga preguntas, simplemente pulse Intro; la configuración se hará con más detalle en la siguiente etapa.

Configuración Básica

Para configurar postfix, ejecute la siguiente orden:

sudo dpkg-reconfigure postfix

Se mostrará la interfaz de usuario. En cada pantalla, seleccione los siguientes valores:

  • Ok

  • Sitio de Internet

  • NINGUNO

  • mail.example.com

  • mail.example.com, localhost.localdomain, localhost

  • No

  • 127.0.0.0/8

  • 0

  • +

  • todo

[Nota]

Reemplace mail.example.com con el nombre de máquina de su servidor de correo.

Ahora es un buen momento para decidir qué formato de buzón desea usar. De forma predeterminada, Postfix usará mbox como formato de buzón. En lugar de editar directamente el archivo de configuración, puede usar el comando postconf para configurar todos los parámetros de postfix. Los parámetros de configuración se guardarán en el archivo /etc/postfix/main.cf. Más tarde, si desea volver a configurar un parámetro en concreto, puede, o bien ejecutar el comando, o bien cambiar dicho parámetro manualmente en el archivo.

Para configurar el formato del buzón para Maildir:

sudo postconf -e 'home_mailbox = Maildir/'
[Nota]

Esto guardará el correo nuevo en «/home/usuario/Maildir», por lo que tendrá que configurar su Agente de Entrega de Correo para que use la misma ruta.

Autentificación SMTP

Los siguientes pasos sirven para configurar postfix para que use SASL en la autentificación SMTP.

  1. Configurar Postfix para hacer SMTP AUTH usando SASL (saslauthd):

    sudo postconf -e 'smtpd_sasl_local_domain ='
    sudo postconf -e 'smtpd_sasl_auth_enable = yes'
    sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
    sudo postconf -e 'broken_sasl_auth_clients = yes'
    sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
    sudo postconf -e 'inet_interfaces = all'
    

    Abra el archivo /etc/postfix/sasl/smtpd.conf y añada las siguientes líneas al final del mismo:

    pwcheck_method: saslauthd
    mech_list: plain login
    
  2. A continuación configure el certificado digital para TLS. Siga las instrucciones que le indiquen y conteste a las preguntas que se le planteen.

    openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
    chmod 600 smtpd.key
    openssl req -new -key smtpd.key -out smtpd.csr
    openssl x509 -req -days 365 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
    openssl rsa -in smtpd.key -out smtpd.key.unencrypted
    mv -f smtpd.key.unencrypted smtpd.key
    openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650
    sudo mv smtpd.key /etc/ssl/private/
    sudo mv smtpd.crt /etc/ssl/certs/
    sudo mv cakey.pem /etc/ssl/private/
    sudo mv cacert.pem /etc/ssl/certs/
    
    [Nota]

    Puede obtener el certificado digital mediante una entidad certificativa. También puede crear el certificado usted mismo. Consulte la sub-sección Creación de un certificado autofirmado para más detalles.

  3. Configurar Postfix para hacer cifrado TLS en el correo entrante y el saliente:

    sudo postconf -e 'smtpd_tls_auth_only = no'
    sudo postconf -e 'smtp_use_tls = yes'
    sudo postconf -e 'smtpd_use_tls = yes'
    sudo postconf -e 'smtp_tls_note_starttls_offer = yes'
    sudo postconf -e 'smtpd_tls_key_file = /etc/ssl/private/smtpd.key'
    sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt'
    sudo postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'
    sudo postconf -e 'smtpd_tls_loglevel = 1'
    sudo postconf -e 'smtpd_tls_received_header = yes'
    sudo postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
    sudo postconf -e 'tls_random_source = dev:/dev/urandom'
    sudo postconf -e 'myhostname = mail.ejemplo.com'
    
  4. Desactive la operación chroot en el servidor SMTP. Localice la siguiente línea en el archivo /etc/postfix/master.cf:

    smtp      inet  n       -       -       -       -       smtpd
    

    y modifíquelo de esta forma:

    smtp      inet  n       -       n       -       -       smtpd
    
[Nota]

Una vez que haya ejecutado todas las órdenes, tendrá configurado el SMTP AUTH en postfix. El certificado auto-firmado se crea para el TLS y se configura con postfix.

Ahora,·el archivo·/etc/postfix/main.cf·debería parecerse a

La configuración inicial de postfix se ha completado. Ejecute la siguiente orden para arrancar el demonio de postfix:

          
            sudo /etc/init.d/postfix start
          
        

Ahora, el demonio postfix está instalado y configurado, y se está ejecutando con éxito. Postfix soporta SMTP AUTH como se define en RFC2554. Está basado en SASL. Sin embargo, todavía es necesario configurar la autenticación SASL para poder usar SMTP.

Configuración de SASL

libsasl2-2, sasl2-bin y libsasl2-modules son necesarias para habilitar SMTP AUTH usando SASL. Puede instalar estas aplicaciones si no las ha instalado aún.

sudo apt-get install libsasl2-2 sasl2-bin

Se necesitan unos cuantos cambios para hacer que funcione correctamente. Como Postfix se ejecuta como chroot en /var/spool/postfix, hay que configurar SASL para que se ejecute en el directorio raíz falso (/var/run/saslauthd se convierte en /var/spool/postfix/var/run/saslauthd):

sudo mkdir -p /var/spool/postfix/var/run/saslauthd
sudo rm -rf /var/run/saslauthd

Para activar saslauthd, edite el archivo /etc/default/saslauthd y cambie o añada la variable START. Con idea de configurar saslauthd para que se pueda ejecutar en un falso raíz, añada las variables PWDIR, PIDFILE y PARAMS. Finalmente, configure la variable MECHANISMS a su gusto. El archivo debe tener el siguiente aspecto:

# This needs to be uncommented before saslauthd will be run

# automatically
START=yes

PWDIR="/var/spool/postfix/var/run/saslauthd"
PARAMS="-m ${PWDIR}"
PIDFILE="${PWDIR}/saslauthd.pid"

# You must specify the authentication mechanisms you wish to use.
# This defaults to "pam" for PAM support, but may also include
# "shadow" or "sasldb", like this:
# MECHANISMS="pam shadow"

MECHANISMS="pam"
[Nota]

Si lo prefiere, puede usar shadow en lugar de pam. De esta forma, se transferirán contraseñas cifradas con MD5, lo que resultará más seguro. El nombre de usuario y la contraseña que haya que autenticar serán los de los usuarios del sistema que esté usando en el servidor.

A continuación, actualice el «estado» de dpkg de /var/spool/portfix/var/run/saslauthd. El script de inicio de saslauthd usa esas opciones para crear el directorio que falta con los permisos y propietario adecuados:

sudo dpkg-statoverride --force --update --add root sasl 755 /var/spool/postfix/var/run/saslauthd

Comprobando

La configuración del SMTP AUTH está ya completa. Ahora es el momento de iniciar y probar la configuración. Puede ejecutar la siguiente orden para arrancar el demonio SASL:

          
            sudo /etc/init.d/saslauthd start
          
        

Para ver si el SMTP-AUTH y el TLS funcionan correctamente, ejecute la siguiente orden:

          
            telnet mail.example.com 25
          
        

Una vez que haya establecido la conexión con el servidor de correo postfix, teclee:

ehlo mail.ejemplo.com

Si ve aparecer las siguientes líneas (entre otras), es que todo funciona correctamente. Teclee quit para salir.

250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME