sábado, 18 de octubre de 2014

Instalación de Servidor de Correo en Linux


Guía de Instalación y configuración de Servidor de Correo SMTP con soporte TLS.
Postfix, Dovecot y Amavis en Ubuntu 12.04 x64

Esta guía está centrada en la instalación del servidor mail y no en la instalación del Sistema operativo, puesto que debemos ya tener listo nuestro servidor con el sistema operativo y funcionando.
Explica como instalar postfix con un servidor SMTP usando una conexión segura y la instalación de un antivirus en este caso Amavis para escanear los correos tanto de entrada como de salida.

Postfix
Postfix es el agente de transferencia de correo electrónico también conocido como MTA y esta predeterminado en Ubuntu puesto que no debemos tener ningún tipo de complicaciones. Su objetivo es ser rápido, seguro y fácil de administrar.




Instalación
Para instalar postfix ejecute la siguiente orden:
               
                sudo apt-get install postfix

Configuración básica
Para configurar postfix, ejecute el siguiente comando.

                sudo dpkg-reconfigure postfix

La interfaz de usuario será mostrada: en cada pantalla, seleccione los siguientes valores:

1.        Sitio de Internet
2.        mail.example.com
3.        mailer
4.        mail.example.com, localhost.localdomain, localhost
5.        no
6.        127.0.0.0/8, 192.168.0.0/16
7.        0
8.        +
9.        todo

(Reemplace mail.example.com con el dominio por el que usted aceptará  correo electrónico, 192.168.0.0/16 con la red real y el rango de clase de su servidor de correo, y configúrelo con el nombre de usuario apropiado).

Podemos cambiar los ficheros de configuración del postfix con el comando “postconf –e” seguido del paramtro a configurar. los parámetros de configuración están alojados en el archivo /etc/postfix/main.cf y /etc/postfix/master.cf .
Cambiemos el mailbox que por default postfix utilizara mbox en buzon de formato, lo cambiaremos por Maildir:

                sudo postconf –e ‘home_mailbox = Maildir/’

(Esto ubicara los nuevos correos en /home/nombredeusuario/Maildir por lo que necesitara configurar su Agente de entrega de correo (MDA) para usar la misa ruta).

 Autenticación SMTP
SMTP-AUTH permite al cliente identificarse a si mismo a través de un mecanismo de autenticación (SASL). La Seguridad de la Capa de Transporte (TLS) debe ser utilizada para encriptar el proceso de autenticación. Una vez autenticado, el servidor SMTP permitirá al cliente enviar correos.

Configuramos el /etc/postfix/main.cf
--Primero tenemos que configurar Postfix para SMTP-AUTH usando SASL (Dovecot SASL):
               
                sudo postconf -e 'smtpd_sasl_type = dovecot'
sudo postconf -e 'smtpd_sasl_path = private/auth'
sudo postconf -e 'smtpd_sasl_local_domain ='
sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
sudo postconf -e 'broken_sasl_auth_clients = yes'
sudo postconf -e 'smtpd_sasl_auth_enable = yes'
sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'

--Después necesitamos un certificado ya sea el que que nos proporciona nuestro proveedor de dominio o uno que ya                          teníamos generado nosotros mismos, si no tenemos ninguno te explicamos como generarlo dando click aqui.

--Una vez tenga el certificado, configure Postfix para proporcionar cifrado TLS para los correos de entrada y salida:
               
                sudo postconf -e 'smtp_tls_security_level = may'
sudo postconf -e 'smtpd_tls_security_level = may'
sudo postconf -e 'smtp_tls_note_starttls_offer = yes'
sudo postconf -e 'smtpd_tls_key_file = /etc/ssl/private/server.key' (ruta donde tenemos nuestra llave de certificado)
sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/server.crt' (ruta donde tenemos nuestro certificado)
sudo postconf -e 'smtpd_tls_loglevel = 1'
sudo postconf -e 'smtpd_tls_received_header = yes'
sudo postconf -e 'myhostname = mail.example.com'

--Si esta usando su propia Autoridad de certificacion para firmar el certificado, introduzca:

                sudo postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem' (ruta donde tengamos nuestro certificado)

Es importante ver que el parámetro ‘smtpd_tls_auth_only = no’ de nuestro archivo main.cf se encuentre en ‘no’

Configuramos el /etc/postfix/master.cf
Lo siguiente que haremos es verificar que las siguientes líneas en dicho archivo estén descomentados y si no lo están tenemos que descomentarlos.

smtp      inet  n       -       n       -       -       smtpd    
submission inet n       -       -       -       -       smtpd
                     -o syslog_name=postfix/submission
                     -o smtpd_tls_security_level=encrypt
                     -o smtpd_sasl_auth_enable=yes
                     -o smtpd_client_restrictions=permit_sasl_authenticated,reject
                     -o milter_macro_daemon_name=ORIGINATING
smtps     inet  n       -       -       -       -       smtpd
                     -o syslog_name=postfix/smtps
                     -o smtpd_tls_wrappermode=yes
                     -o smtpd_sasl_auth_enable=yes
                     -o smtpd_client_restrictions=permit_sasl_authenticated,reject
                     -o milter_macro_daemon_name=ORIGINATING

Despues de correr todas las órdenes, Postfix esta configurado para SMTP-AUTH.

La configuración inicial de postfix esta completa. Reiniciamos Postfix con el siguiente comando para que tome los cambios.

                sudo service postfix restart


Configuración SASL (Dovecot)
Postfix soporta dos implementaciones de SASL, Syrus SASL y Dovecot SASL. El paquete Dovecot SASL se llama dovecot-common.
Para instalar dovecot-common ejecutaremos el siguiente comando

            sudo apt-get install dovecot-common

Despues editaremos el archivo /etc/dovecot/conf.d/10-master.conf

                service auth {
  # auth_socket_path points to this userdb socket by default. It's typically
  # used by dovecot-lda, doveadm, possibly imap process, etc. Its default
  # permissions make it readable only by root, but you may need to relax these
  # permissions. Users that have access to this socket are able to get a list
                  # of all usernames and get results of everyone's userdb lookups.
  unix_listener auth-userdb {
                       #mode = 0600
                           #user =
                       #group =
                  }

                  # Postfix smtp-auth
                  unix_listener /var/spool/postfix/private/auth {
                      mode = 0660
                      user = postfix
                      group = postfix
                      }

Despues editaremos el archive /etc/dovecot/conf.d/10-auth.conf  y cambiaremos los siguientes parámetros
               
De:
                auth_mechanisms = plain

Reemplazamos por:
                auth_mechanisms = plain login

Una vez hecho esto reiniciaremos el Dovecot con el siguiente comando:

                sudo service dovecot restart
  
Mail-Stack Delivery
Otra opción para configurar Postfix para SMTP-AUTH está utilizando el paquete-stack-entrega de correo (previamente empaquetado como dovecot-postfix). Este paquete instalará Dovecot y configurar Postfix para utilizarla tanto para la autenticación SASL y como Agente de entrega de correo (MDA). El paquete también configura Dovecot para IMAP, IMAPS, POP3 y POP3S.

Para instalar el paquete introduzca el siguiente comando:

                sudo apt-get install mail-stack-delivery

Si tenemos un certificado y una clave personalizada modifique las siguientes opciones en /etc/postfix/main.cf
               
                smtpd_tls_cert_file = /etc/ssl/certs/ssl-mail.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-mail.key

Reiniciamos Postfix.



Comprobando
Para ver si SMTP-AUTH y TLS trabajan adecuadamente, ejecute el siguiente comando:

                telnet localhost 25

Luego que se establezca la conexión con el servidor de correo teclee:

                ehlo mail.example.com

Si ve las siguientes líneas entre otras, entonces todo esta funcionando correctamente. Teclee quit para salir.

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

Amavis
Instalación del antivirus.

                apt-get install amavisd-new spamassassin clamav-daemon

Después cambiamos algunos parámetros o verificamos que estén correctos en /etc/default/spamassassin:

                ENABLED=1 (esto es para habilitar el spamassassin que son las definiciones de virus)
                CRON=1 (si deseamos que se actualizen solas las definiciones)

Reiniciamos el spamassassin con el siguiente comando:

                /etc/init.d/spamassassin restart

Añadimos el usuario clamav al grupo amavis con el siguiente comando:

                adduser clamav amavis

Reiniciamos el demonio de clamav

                /etc/init.d/clamav-daemon restart

Modificamos el archivo /etc/amavis/conf.d/15-content_filter_mode para que quede de la siguiente manera:

                # Descomentamos las siguientes lineas:
@bypass_virus_checks_maps = (
                 \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

@bypass_spam_checks_maps = (
                 \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

/etc/amavis/conf.d/20-debian_defaults:
# Tuneamos el puntaje de Spamassassin y siempre añadimos los X-Spam headers:
#$sa_spam_subject_tag = '***SPAM*** '; # No queremos modificar los originales!
$sa_tag_level_deflt  = -999;  # Siempre añadimos los spam info headers
$sa_tag2_level_deflt = 4; # Añadimos los 'spam detected' headers
$sa_kill_level_deflt = 10; # Envio de correo DSN...
$sa_dsn_cutoff_level = 10; # ...que no se enviará nunca. Hará quarantine (en /var/lib/amavis/virusmails/)

/etc/amavis/conf.d/05-domain_id:
###chomp($mydomain = `head -n 1 /etc/mailname`);
$mydomain = 'dominio.tld';

Reiniciamos el amavis:
               
/etc/init.d/amavis restart
TIP (oda a find): Cómo buscar mails en el directorio de cuarentena por defecto...

find /var/lib/amavis/virusmails/ -type f

... consultarlos rápidamente (sólo si hay pocos!)...

find /var/lib/amavis/virusmails/ -type f -exec zless {} \;

... y si ninguno nos convence, borrarlos:

find /var/lib/amavis/virusmails/ -type f -exec rm -f {} \;


Añadimos la siguiente línea en el archivo /etc/postfix/main.cf

                content_filter = smtp-amavis:[127.0.0.1]:10024

Añadimos las siguientes líneas en el archivo /etc/postfix/master.cf

                smtp-amavis     unix    -       -       -       -       2       smtp
                     -o smtp_data_done_timeout=1200
                        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n  -   -   -   -  smtpd
                     -o content_filter=
                     -o local_recipient_maps=
                     -o relay_recipient_maps=
                     -o smtpd_restriction_classes=
                     -o smtpd_delay_reject=no
                     -o smtpd_client_restrictions=permit_mynetworks,reject
                     -o smtpd_helo_restrictions=
     -o smtpd_sender_restrictions=
     -o smtpd_recipient_restrictions=permit_mynetworks,reject
     -o mynetworks_style=host
     -o mynetworks=127.0.0.0/8
     -o strict_rfc821_envelopes=yes
     -o smtpd_error_sleep_time=0
     -o smtpd_soft_error_limit=1001
     -o smtpd_hard_error_limit=1000
     -o smtpd_client_connection_count_limit=0
     -o smtpd_client_connection_rate_limit=0
                     -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks



Nota: Si tu certificado te lo proporciona un servidor de dominio tienes que ver que ese certificado es el que valide tu servidor de correo. Ademas recuerda que en tu servidor DNS tienes que tener registrado tu servidor como servidor de correo con las siglas MX

No hay comentarios:

Publicar un comentario