Sei sulla pagina 1di 14

Publicado en VozToVoice (http://voztovoice.

org)
Inicio > PDF para impresora > PDF para impresora

Instalar y configurar un servidor SMTP/POP3/IMAP en CentOS con acceso TSL/SSL y SASL


Mar, 13/10/2009 - 11:24 ? admin Desde hace mucho quera escribir esta gua. Ms como recordatorio personal que otra cosa. Veremos como instalar un servidor SMTP (Sendmail) y un servidor POP3/IMAP (Dovecot) en CentOS. Este escrito complementa y completa un precedente articulo [1]. Al terminar la configuracin de los dos servidores veremos como filtrar el correo electrnico en entrada con Spamassassin y como configurar nuestro cliente de correo electrnico (en mi caso Outlook Express) para enviar y recibir correos electrnico usando conexiones seguras y autenticadas. La instalacin se hizo en un VPS con distribucin CentOS 5.3 La presente gua usa como referencia un domin io registrado que denominaremos ejemplo.org. Para la configuracin de los registros DNS de un dominio puede n hacer referencia a este articulo. [2] Primero instalamos los paquetes necesarios: yum install sendmail* yum install cyrus-sasl* yum install dovecot yum install procmail yum install spamassassin

Sendmail
Hacemos una copia de la configuracin inicial de Sendmail: cp /etc/mail/sendmail.mc /etc/mail/sendmail.mc.orig Empezamos a configurar Sendmail (modificando/aadiendo las siguientes lneas): nano /etc/mail/sendmail.mc

dnl # Definimos un valor de ?verbosidad? para los registros de Sendmail define(`confLOG_LEVEL', `20')dnl cuando la conexin no es TLS dnl # Deshabilita la autenticacin en "plain text" define(`confAUTH_OPTIONS', `A p')dnl dnl # Definimos los mecanismos de autenticacin permitidos TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl dnl # Configuramos la carpeta y los nombres de los certificados que usaremos para la autenticacin TLS/SSL define(`confCACERT_PATH', `/etc/pki/tls/certs')dnl define(`confCACERT', `/etc/pki/tls/certs/ca-bundle.crt')dnl define(`confSERVER_CERT', `/etc/pki/tls/certs/sendmail.pem')dnl define(`confSERVER_KEY', `/etc/pki/tls/certs/sendmail.pem')dnl dnl # Definimos los puertos donde Sendamil se pondr a la escucha (25(smtp, 465(smtps) y 587(submission) DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl dnl # No aceptamos correos desde dominios cuya direccin no se pueda resolver dnl FEATURE(`accept_unresolvable_domains')dnl dnl # Filtramos todos los correos en entrada con spamassassin-milter INPUT_MAIL_FILTER(`spamassassin', `S=unix:/var/run/spamassassin/spamass-milter.sock, F=, T=C:15m;S:4m;R:4m;E:10m')dnl define(`confMILTER_MACROS_CONNECT',`t, b, j, _, {daemon_name}, {if_name}, {if_addr}')dnl define(`confMILTER_MACROS_HELO',`s, {tls_version}, {cipher}, {cipher_bits}, {cert_subject}, {cert_issuer}')dnl

Guardamos los cambios y creamos el archivo de configuracin de Sendmail: cd /etc/mail make -C /etc/mail Ahora podemos crear un usuario de prueba para luego utilizarlo en la configuracion de Outlook Express: useradd -c "fulano" -s /sbin/nologin fulano Le asignamos una contrasea: passwd fulano Changing password for user fulano. New UNIX password: BAD PASSWORD: it is based on a dictionary word Retype new UNIX password: passwd: all authentication tokens updated successfully. Para la autenticacin con SASL [3] tenemos que crear un archivo con las siguientes lneas: cd /usr/lib/sasl2 nano Sendmail.conf

pwcheck_method:saslauthd mech_list: LOGIN PLAIN Con la primera lnea escogemos el mtodo de autorizacin (controlo de contrasea) y con la segundael mecanismo. Guardamos los cambios y configuramos sasl2 para que arranque en automtico: chkconfig saslauthd on Ahora le decimos a Sendmail desde cuales dominios pueden salir los correos: nano /etc/mail/local-host-names localhost localhost.localdomain ejemplo.org Guardamos los cambios y pasamos a la creacin del certificado como lo hemos definido en la configuracion de Sendmail. El certificado creado en esta forma cd /etc/pki/tls/certs make sendmail.pem umask 77 ; \ PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \ PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \ /usr/bin/openssl req -utf8 -newkey rsa:1024 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2 -set_ 0 serial ;\ cat $PEM1 > sendmail.pem ; \ echo "" >> sendmail.pem ; \ cat $PEM2 >> sendmail.pem ; \ rm -f $PEM1 $PEM2 Generating a 1024 bit RSA private key ........++++++ ...........................++++++ writing new private key to '/tmp/openssl.l23974' ----You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----Country Name (2 letter code) [GB]:CO State or Province Name (full name) [Berkshire]:Magdalena Locality Name (eg, city) [Newbury]:Santa Marta Organization Name (eg, company) [My Company Ltd]:Ejemplo

Organizational Unit Name (eg, section) []:Mail Common Name (eg, your name or your server's hostname) []:mail.ejemplo.org Email Address []:admin@ejemplo.org Importante definir en Common Name el registro MX [4] que usaremos para conectarnos al servidor Sendmail.

Dovecot
Una vez que tengamos el server POP3/IMAP instalado modificamos el archivo de configuracion: nano /etc/dovecot.conf Aadimos/modificamos las siguientes lneas:
# activamos los protocolos que vamos a utilizar protocols = imap imaps pop3 pop3s # carpeta y nombres de los certificados (los mismos que Sendmail) ssl_cert_file = /etc/pki/tls/certs/sendmail.pem ssl_key_file = /etc/pki/tls/certs/sendmail.pem ssl_ca_file = /etc/pki/tls/certs/sendmail.pem # Registramos los eventuales errores al utilizar SSL verbose_ssl = yes

Gurdamos los cambios y configuramos Dovecot para que arranque en automtico: chkconfig dovecot on

SpamAssassin
Ahora podemos pasar a la configuracion de Spamassassin: cd /etc/mail/spamassassin mv local.cf local.cf.orig nano local.cf Aadimos:

required_score 5.0 rewrite_header subject [SPAM] report_safe 1 use_bayes 1 use_bayes_rules 1 bayes_auto_learn 1 skip_rbl_checks 0 Guardamos los cambios y configuramos Spamassassin para que arranque en automtico: chkconfig spamassassin on Spamass-milter [5] es un componente Ahora pasamos a la instalacin y configuracion de spamass-milter. adicional para la biblioteca de filtros de correo (libmilter) de Sendmail, que se encarga de hacer pasar todo el correo entrante a travs de SpamAssassin. cd /usr/src wget http://www.voztovoice.org/tmp/spamass-milter-0.3.1.tar.gz tar -xf spamass-milter-0.3.1.tar.gz cd spamass-milter-0.3.1 Si no tenemos instalados los programas y la librera para compilar las fuentes tenemos que instalar los siguientes paquetes: yum install gcc ncurses ncurses-devel make gcc-c++ libtermcap libtermcap-devel zlib zlib-devel libtool ./configure make make install Instalamos el script para arrancarlo en automtico como demonio: cd contrib nano spamass-milter-redhat.rc Modificamos las siguientes lneas: SM_SOCKET=/var/run/spamassassin/spamass-milter.sock [ -x /usr/local/sbin/spamass-milter ] || exit 0 PATH=$PATH:/usr/local/sbin Guardamos los cambios y copiamos el archivo en la carpeta de los demonios:

cp spamass-milter-redhat.rc /etc/init.d/spamass-milter cd /etc/init.d chmod +x spamass-milter chkconfig --level 2345 spamass-milter on Ahora creamos el archivo de configuracion para spamass-milter: nano /etc/sysconfig/spamass-milter Aadimos: SOCKET=/var/run/spamassassin/spamass-milter.sock EXTRA_FLAGS="-r 15" Guardamos los cambios y hacemos un reboot del sistema: reboot

LOGs y Prueba SPAM


Volvemos a entrar en nuestro servidor y echamos una mirada a los registros para ver si hay algn error: nano /var/log/maillog Si todo est bien seguimos conectndonos al servidor Sendmail y miramos si efectivamente el protocol o SSL/TSL est activados como tambin el PLAIN LOGIN de SASL: yum install telnet telnet telnet> o localhost 25 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. 220 ejemplo.org ESMTP Sendmail 8.13.8/8.13.8; Tue, 13 Oct 2009 15:20:59 GMT ehlo fulano.com 250-ejemplo.org Hello localhost [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN

250-ETRN 250-AUTH GSSAPI DIGEST-MD5 CRAM-MD5 250-STARTTLS 250-DELIVERBY 250 HELP Primero nos conectamos a el servidor de correo electrnico (Sendmail) en el puerto 25. Nos presentamos escribiendo el comando ?ehlo fulano.com? y luego nos aseguramos que las dos lneas en negrita aparezcan en la lista que el servidor nos presenta. En la lnea 250-AUTH no aparecen los mecanismos de autenticaci n PLAIN y LOGIN porque en la configuracion de Sendmail hemos definido que se pueden usar solamente dentro de una conexin segura (protocolo TLS) Para salir escribimos: quit Ahora hacemos una prueba para ver si SpamAssassin detecta los correos no deseados (SPAM). Primero con un correo de ejemplo que no contiene SPAM y luego con un correo de ejemplo que si es un SPAM: spamassassin -t < /usr/share/doc/spamassassin-3.2.5/sample-nonspam.txt | grep X-Spam X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on ejemplo.org X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=no version=3.2.5 spamassassin -t < /usr/share/doc/spamassassin-3.2.5/sample-spam.txt | grep X-Spam X-Spam-Flag: YES X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on astercurso.com X-Spam-Level: ************************************************** X-Spam-Status: Yes, score=1000.0 required=5.0 tests=GTUBE,NO_RECEIVED, Vieron la diferencia?

Outlook Express
Llegados a este punto podemos configurar nuestro clientes de correo electrnico (en mi caso Outlook Express). Lo abrimos y escogemos el men: Herramientas > Cuentas > Agregar > Cuenta de correo electrnico Primero ponemos el nombre:

[6]

Luego la direccin de correo electrnico:

[7]

Direccion del servidor de entrada y salida de los correos electronicos (seleccionamos tambien la casilla que aparece en la imagen):

[8]

Nombre de usuario y contrasea (como lo hemos creado con el comando adduser en Linux):

[9]

Terminamos dando click en el botn ?Finalizar?

[10]

Ahora escribimos nuestro primer correo electrnico usando la cuenta recin creada. Cuando intentaremo s enviar el correo nos saldr este error:

[11]

Esto sucede porque, como hemos visto anteriormente el mecanismo de autenticacin PLAIN LOGIN solo funciona dentro de una conexin segura. Tenemos que volver a la configuracion de la cuenta y en la etiqueta ?Opciones avanzadas? hacer estas modificaciones:

[12]

Le damos Aplicar y Aceptar y volvemos a enviar el correo electrnico. Aparecer una ventanita preguntandonos si queremos aceptar el certificado del servidor. Le demos S

[13]

Este es el resultado:

[14]

De esta forma tendremos un servidor de correo electrnico configurado de manera segura, bloqueando el correo no deseado y que no permite el envo de correos electrnicos, a travs del server, a clientes que no estn autenticados y que usen una conexin segura (SSL/TLS).

Cortafuego
Si tenemos instalado un cortafuego (tipo IPtables) estos son los puertos que tenemos que abrir: 25 TCP 465 TCP 587 TCP 110 TCP 995 TCP 143 TCP 993 TCP Sugerencias?

Comentarios
Lun, 19/10/2009 - 14:16 ? admin

Test Antispam
Para probar que efectivamente Sendmail no est aceptando correo no deseado desde la linea de comando de Linux podemos utilizar este comando: telnet relay-test.mail-abuse.org Al terminar las varias pruebas miramos los resultados: Tested host banner: 220 voztovoice.com ESMTP Sendmail 8.13.8/8.13.8; Mon, 19 Oct 2009 14:13:55 0500 System appeared to reject relay attempts Connection closed by foreign host. Mi, 05/05/2010 - 23:45 ? Annimo (no verificado)

Prueba con telnet no superada

Buenos das Despus de completar el tutorial, al hacer pruebas, no aparece la lnea: 250-AUTH GSSAPI DIGEST-MD5 CRAM-MD5 De todas maneras, las dems pruebas fueron exitosas. Excelente gua. Gracias Dovecot [15] Outlook Express [16] SASL [17] Sendmail [18] Spamass-milter [19] SpamAssassin [20] SSL [21] TLS [22]
URL de origen (Obtenido en 01/11/2011 - 17:46): http://voztovoice.org/?q=node/219 Enlaces: [1] http://www.voztovoice.org/?q=node/159 [2] http://www.voztovoice.org/?q=node/141 [3] http://es.wikipedia.org/wiki/SASL [4] http://es.wikipedia.org/wiki/MX_%28registro%29 [5] http://savannah.nongnu.org/projects/spamass-milt/ [6] http://www.voztovoice.org/tmp/InstalaryconfigurarunservidorSMTPPOP3IMA_8E4A/OE1.jpg [7] http://www.voztovoice.org/tmp/InstalaryconfigurarunservidorSMTPPOP3IMA_8E4A/OE2.jpg [8] http://www.voztovoice.org/tmp/InstalaryconfigurarunservidorSMTPPOP3IMA_8E4A/OE3.jpg [9] http://www.voztovoice.org/tmp/InstalaryconfigurarunservidorSMTPPOP3IMA_8E4A/OE4.jpg [10] http://www.voztovoice.org/tmp/InstalaryconfigurarunservidorSMTPPOP3IMA_8E4A/OE5.jpg [11] http://www.voztovoice.org/tmp/InstalaryconfigurarunservidorSMTPPOP3IMA_8E4A/OE6.jpg [12] http://www.voztovoice.org/tmp/InstalaryconfigurarunservidorSMTPPOP3IMA_8E4A/OE7.jpg [13] http://www.voztovoice.org/tmp/InstalaryconfigurarunservidorSMTPPOP3IMA_8E4A/OE8.jpg [14] http://www.voztovoice.org/tmp/InstalaryconfigurarunservidorSMTPPOP3IMA_8E4A/OE9.jpg [15] http://voztovoice.org/?q=taxonomy/term/185 [16] http://voztovoice.org/?q=taxonomy/term/246 [17] http://voztovoice.org/?q=taxonomy/term/243 [18] http://voztovoice.org/?q=taxonomy/term/186 [19] http://voztovoice.org/?q=taxonomy/term/245 [20] http://voztovoice.org/?q=taxonomy/term/244 [21] http://voztovoice.org/?q=taxonomy/term/187 [22] http://voztovoice.org/?q=taxonomy/term/188

Potrebbero piacerti anche