InicioLinuxInstalar y configurar servidor de correo
¿Para qué un servidor de correo? Bueno, hoy tenemos correo gratis y extraordinario en la red: gmail, yahoo, terra, ... Incluso gmail ya con el dominio que tú le indiques. Evidentemente, no lo queremos para proporcionar a alumnos y profesores una dirección de correo personal. La necesidad surge de la propia concepción de un Servidor: se realizarán chequeos, avisos de seguridad, ... que se enviarán a través de un servidor de correo interno al administrador. Es imprescindible un correo en localhost. Y, por otro lado, si pensamos montar una plataforma educativa como moodle o un portal de contenidos (como es php-nuke), el correo es fundamental para registrarse, enviar avisos, ... Y, por supuesto, es conveniente tener unas direcciones de correo corporativas para recibir sugerencias, consultas, ... y enviar respuestas. Vamos al grano: vamos a instalar lo que se denomina un MTA o Agente de Transferencia de Correo. Éste funciona como un servicio que está esperando peticiones en el puerto 25 y que contempla el protocolo smtp. Por eso se denominan Servidores de Correo SMTP y el puerto 25 se denomina "smtp=25". Nosotros instalaremos postfix. El Servidor de Correo postfix recibe correos desde un MUA (Agente de Usuario para Correo) como es evolution o desde otro servidor SMTP externo. Ese correo puede estar dirigido a otra máquina, de modo que lo enviará a un Servidor SMTP externo o a nuestra propia máquina, en cuyo caso actuará como MDA (Agente de Entrega de Correo) y lo depositará en el buzón del usuario destinatario. Más o menos... Instalación de postfix Hay muchos Servidores de Correo. Algunos: sendmail, exim, qmail, postfix. Éste es el elegido. Instalamos postfix: [root@3000xp ~]# urpmi postfix Para satisfacer las dependencias, se instalarán los paquetes siguientes: libpostfix1-2.2.5-7mdk.i586 postfix-2.2.5-7mdk.i586 ¿Está todo bien? (S/n) s ........................................... Terminando el registro del núcleo: [ OK ] Terminando el registro del sistema: [ OK ] Iniciando el registro del sistema: [ OK ] Iniciando el registro del núcleo: [ OK ] Lo ponemos en marcha y vemos que va todo bien: root@3000xp ~]# /etc/init.d/postfix start Iniciando postfix: Puertos en escucha: # netstat -puta Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 web:10026 *:* LISTEN 19274/master tcp 0 0 web:smtp *:* LISTEN 19274/master Vemos que master (postfix) está escuchando en el puerto smtp (25) del servidor. El otro (10026) lo veremos al estudiar los filtros. Echemos un vistazo a archivos y directorios importantes: /etc/postfix/main.cf, que es el fundamental de configuración de postfix /etc/postfix/master.cf, el segundo fundamental y complejo (mejor no toquetearlo) /etc/postfix/aliases, que es el archivo para crear alias (redirecciones de correo). Por ejemplo, el correo dirigido a root debería leerlo un usuario del sistema, como puede ser pepito. /etc/postfix/sasl/smtp.conf es el archivo para configurar la autenticación ante el servidor de los usuarios /var/spool/postix/ es el directorio donde trabaja enjaulado Postfix. Observa cómo ha copiado hasta los archivos básicos de /etc que necesita para funcionar. Prueba de funcionamiento Ahora vamos a enviar un correo a pelo: nos conectaremos al puerto 25 (smtp) diremos que somos loli (y se lo creerá) y le enviaremos un correo al usuario colego (ambos son usuarios del sistema donde se ha instalado postfix). Esto hará que se cree en el directorio /var/spool/mail/ un fichero llamado colego que contendrá ese correo. Éste es el buzón de correo del usuario, y tal y como está configurado postfix ahora ahí vendrán a parar todos los correos, añadiéndose al final del archivo de cada usuario, engordando ilimitadamente si no vamos borrando los sucesivos mensajes que recibamos, y si no configuramos cuotas. $telnet localhost 25 Trying 127.0.0.1... Connected to web.iesdelgadohernandez.es (127.0.0.1). Escape character is '^]'. 220 web.iesdelgadohernandez.es ESMTP Postfix (2.2.5) (Mandriva Linux) helo localhost 250 web.iesdelgadohernandez.es mail from: loli 250 Ok rcpt to: colego 250 Ok data 354 End data with . subject: primer correo enviado de prueba from: loli to: colego Este es el primer correo que te envio. Es una prueba. Adios. . 250 Ok: queued as 830FE136DD4 quit 221 Bye Connection closed by foreign host. Ahora se conecta colego: $ su colego You have mail in /var/spool/mail/colego Fijémonos cómo nos avisa de que tenemos un correo. Vamos a leerlo: $ cat /var/spool/mail/colego From [email protected] Mon Feb 13 21:32:57 2006 Return-Path: X-Original-To: colego Delivered-To: [email protected] Received: from localhost (web.iesdelgadohernandez.es [127.0.0.1]) by web.iesdelgadohernandez.es (Postfix) with SMTP id 830FE136DD4 for ; Mon, 13 Feb 2006 21:31:47 +0100 (CET) subject: primer correo enviado de prueba from: [email protected] to: [email protected] Message-Id: <[email protected]> Date: Mon, 13 Feb 2006 21:31:47 +0100 (CET) Este es el primer correo que te envio. Es una prueba. Adios. Todo va bien (por ahora). Ya podemos mandar correo donde queramos desde nuestro servidor. Pero vamos a configurarlo un poco y a protegerlo. Alias Bueno, algo que debe configurarse son los alias o redirecciones que correo. El superusuario root va a recibir muchos mensajes que, por seguridad, nunca recibirá. ¿Quién los recibe ahora? Pues el usuario postfix (sí, se crea el usuario postfix del mismo modo que al instalar el servidor web apache se crea el usuario apache). La idea es que el administrador nunca se conecte como root, sino como un usuario normal y corriente; digamos pealfa. Todo ello se consigue a través del archivo /etc/aliases y del comando newaliases. Vamos al archivo de alias mencionado y allí cambiamos: root: postfix por root: pealfa y ejecutamos el comando newaliases # newaliases Configuración básica Debemos modificar algunos parámetros. Para ello dejamos al archivo /etc/postifix/main.cf como sigue: # CREADO POR EL SCRIPT DE INSTALACIÓN. NO TOCAMOS readme_directory = /usr/share/doc/postfix-2.2.5/README_FILES html_directory = /usr/share/doc/postfix-2.2.5/html sendmail_path = /usr/sbin/sendmail.postfix setgid_group = postdrop command_directory = /usr/sbin manpage_directory = /usr/share/man daemon_directory = /usr/lib/postfix newaliases_path = /usr/bin/newaliases mailq_path = /usr/bin/mailq queue_directory = /var/spool/postfix mail_owner = postfix # PARÁMETROS CONFIGURABLES POR EL USUARIO delay_warning_time = 4h smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) (Mandriva Linux) unknown_local_recipient_reject_code = 450 smtp-filter_destination_concurrency_limit = 2 lmtp-filter_destination_concurrency_limit = 2 # USAMOS EL FORMATO DE BUZÓN MAILDIR. SERÁ EL BUZÓN PERSONAL DE CADA USUARIO. home_mailbox = Mail/ # INTERFACES POR LA QUE ESCUCHARÁ PETICIONES(localhost, eth0, all): inet_interfaces = all # PARÁMETROS DEL HOST Y DEL DOMINIO myhostname = web.iesdelgadohernandez.es mydomain = iesdelgadohernandez.es # AL ENVIAR UN CORREO, QUÉ QUEREMOS QUE APAREZCA COMO ORIGEN DEL CORREO: $myhostname, $mydomain O LO QUE SEA myorigin= $mydomain # EQUIPOS A LOS QUE SE PERMITIRÁ ENVIAR LIBREMENTE EL CORREO. SER RESTRICTIVOS AQUÍ. Y DOMINIOS A ADMINISTRAR: mynetworks = 127.0.0.0/8 mydestination = localhost, $myhostname, localhost.$mydomain, $mydomain # LIMITES PARA BUZON Y MENSAJE (20 MB / 5 MB). POR DEFECTO ESTÁ EN (50 / 10 MB). #mailbox_siza_limit = 20480000 #message_size_limit = 5120000 Atenticación, cifrado y controles anti-spam. Mantener en funcionamiento un servidor de correo es complejo y una gran responsabilidad. Nada más abrir el puerto 25 en nuestro sistema nos encontraremos un aluvión de intentos de usarlo como open-relay: quieren usarnos como retransmisores de correo basura. El procurar que esto no suceda es NUESTRA RESPONSABILIDAD. Por ello debemos procurar tomas todas las medidas a nuestro alcance para evitarlo. Lo de menos es ser receptores de spam. Lo que debemos procurar es que nuestro servidor no sea un zombi que rápidamente sea incluido en las listas negras como productor de correo no deseado. Aquí vamos a comentar medidas al nivel smtp, que nos dará problemas, pues mi postfix ha rechazado mensajes de servidores mal configurados (por ejemplo, del servicio técnico de empresas que se dedican a productos para redes) al aplicarle las restricciones. Señalo que, por supuesto, he pasado el test de ORDB.org y comprobado que no somos un open-relay. Vamos a dar soporte a nuestro servidor para SASL (método de autenticación) y TLS (cifrado e integridad para los correos). Esto permitiría usar nuestro Servidor de Correo por aquellos clientes que se identifican mediante un usuario+contraseña ante el servidor smtp y, además, conseguir que tanto esa identificación como toda la comunicación se realice cifrada. Lo he añadido como una capacidad más, pero teniendo en cuenta que lo que pretendemos es dar un servicio de CorreoWeb, no es necesario para resolver el problema de la itinerancia. Esto se ha realizado siguiendo instrucciones que podemos encontrar en la propia web de mandriva. A instalar: ]# urpmi cyrus-sasl libsasl2 libsasl2-devel libsasl2-plug-plain libsasl2-plug-anonymous libsasl2-plug-crammd5 libsasl2-plug-digestmd5 libsasl2-plug-gssapi libsasl2-plug-login Bien. Para gestionar los usuarios y las contraseñas hay muchas formas: usando bases de datos mysql, usando el método auxprop (con el que cyrus-sasl mantiene un archivo independiente) y saslauth (se usarán las cuentas del sistema Linux). Este método es el más inseguro y sólo sirve para pocos usuarios. Es precisamente el que vamos a usar porque es el más simple. Y porque tendremos pocos usuarios, no tendrán acceso a la shell, no podrán iniciar sesión y sólo se podrán conectar remotamente vía ssh desde determinados puestos de la intranet... buff esto ya mejora algo la seguridad. De todas formas, estoy pensando lo de implementar en el futuro el uso de mysql. # cat /etc/postfix/sasl/smtpd.conf mech_list: plain login pwcheck_method: saslauthd saslauthd_path: /var/lib/sasl2/mux Ahora vamos a utilizar ssl para crear los certificados y poder exigir autenticación tls ante el servidor smtp (postfix) para conectarse a él: # mkdir /etc/postfix/ssl # cd /etc/postfix/ssl # openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024 ........................ Enter pass phrase for smtpd.key: Verifying - Enter pass phrase for smtpd.key: # chmod 600 smtpd.key # openssl req -new -key smtpd.key -out smtpd.csr Enter pass phrase for smtpd.key: ........................ Country Name (2 letter code) :ES State or Province Name (full name) [Some-State]:Andalucia Locality Name (eg, city) []:Bollullos del Condado Organization Name (eg, company) [Internet Widgits Pty Ltd]:IES Delgado Hernández Organizational Unit Name (eg, section) []:IES Delgado Hernández Common Name (eg, YOUR name) []:web.iesdelgadohernandez.es Email Address []:[email protected] Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: # openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt ......................... Enter pass phrase for smtpd.key: # openssl rsa -in smtpd.key -out smtpd.key.unencripted Enter pass phrase for smtpd.key: writing RSA key # mv -f smtpd.keyunencripted smtpd.key # openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650 ......................... Country Name (2 letter code) :ES State or Province Name (full name) [Some-State]:Andalucia Locality Name (eg, city) []:Bollullos del Condado Organization Name (eg, company) [Internet Widgits Pty Ltd]:IES Delgado Hernández Organizational Unit Name (eg, section) []:IES Delgado Hernández Common Name (eg, YOUR name) []:web.iesdelgadohernandez.es Email Address []:[email protected] Veamos lo que añadimos ahora a /etc/postfix/main.cf. Observa las medidas anti UBE: # SASL = "Simple Authentication and Security Layer" o "Capa de Simple de autenticación y seguridad". # Esto es un método para añadir soporte autenticación a SMTP smtpd_sasl_path = /etc/postfix/sasl:/usr/lib/sasl2 #smtp_sasl_auth_enable = yes smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $myhostname smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes # TLS smtp_use_tls = yes smtp_tls_note_starttls_offer = yes smtpd_use_tls = yes smtpd_tls_auth_only = yes smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem smtpd_tls_loglevel = 1 smtpd_tls_receveid_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom # CONTROL DEL CORREO ENTRANTE / SALIENTE # INCLUYE MANEJO DE SAPAM, LISTAS NEGRAS Y RESTRICCIONES EN HELO # EXIGIMOS HELO Y CUMPLIMIENTO DE LA NORMA RFC821: smtpd_helo_required = yes strict_rfc821_envelopes = yes # RESTRICCIONES # smtpd_client_restrictions = # permit_sasl_authenticated, # permit_mynetworks, # reject_unknown_client # smtpd_helo_restrictions = # reject_invalid_hostname, # reject_unknown_hostname, # reject_non_fqdn_hostname smtpd_sender_restrictions= check_sender_access hash:/etc/postfix/lista_blanca smtpd_recipient_restrictions = reject_invalid_hostname, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unknown_recipient_domain, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_rbl_client relays.ordb.org #Otras posibles listas opm.blitzed.org, list.dsbl.org, sbl.spamhaus.org, relays.mail-abuse.org, cbl.abuseat.org Reinicio y comprobación: # /etc/init.d/postfix restart Terminando postfix: [ OK ] Iniciando postfix: [ OK ] # /etc/init.d/saslauthd restart saslauthd no está corriendo Iniciando saslauthd [ OK ] Creando enlace duro desde /var/lib/sasl2/mux a /var/spool/postfix/var/lib/sasl2/ Importante esto último: como postfix está enjaulado, se crea ese enlace duro para que pueda autenticar. Nosotros no debemos hacer nada al respecto. Al cerrarse el sistema se borrará y al iniciarse se creará automáticamente Sabremos que tenemos el soporte TLS porque ahora al conectarnos al sistema apararecerá starttls: # telnet localhost 25 Trying 127.0.0.1... Connected to web.iesdelgadohernandez.es (127.0.0.1). Escape character is '^]'. 220 web.iesdelgadohernandez.es ESMTP Postfix (2.2.5) (Mandriva Linux) ehlo localhost 250-web.iesdelgadohernandez.es 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250 8BITMIME quit 221 Bye Connection closed by foreign host. No aparece nada sobre AUTH porque hemos señalado smtpd_tsl_auth_only = yes. Si hubiésemos aceptado comunicación sin exigir tls, colocando smtpd_tsl_auth_only = no entonces aparecería lo que sigue. Obsérvese como la autenticación aparece después de starttls. La autenticación se realiza a través de texto plano en claro, pero no hay problema pues la comunicación ya va encriptada por tls: # telnet localhost 25 Trying 127.0.0.1... Connected to web.iesdelgadohernandez.es (127.0.0.1). Escape character is '^]'. 220 web.iesdelgadohernandez.es ESMTP Postfix (2.2.5) (Mandriva Linux) ehlo localhost 250-web.iesdelgadohernandez.es 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 250 8BITMIME quit 221 Bye Connection closed by foreign host. Veamos si hay errores o advertencias: # cat /var/log/mail/errors # cat /var/log/mail/warnings Nada de nada. Todo parece correcto. Puertos Ya hemos repetido unas cien veces que la conexión a un servidor smtp se realiza por defecto a través del puerto 25. Asegurémosnos de que éste está abierto en nuestro cortafuegos si queremos que se acceda a nuestro Servidor de Correo desde el exterior. Porque hasta ahora está listo para enviar correos, pero no para recibirlos. Como hemos ya visto en la sección LAMP, lo hacemos con el asistente de Mandriva, ejecutando drakfirewall. Ante la pregunta "¿A qué servicios debería permitirse acceder desde Internet?" comprobaremos que está deshabilitada la opción Todo (sin cortafuegos) y marcamos la opción Servidor de correo que abre el puerto 25. Basta ya con dar en aceptar para que el firewall, que en Mandriva viene gestionado por defecto mediante shorewall quede configurado.
Datos archivados del Taringa! original
0puntos
0visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
2visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

e
edgarfgc🇦🇷
Usuario
Puntos0
Posts15
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.