Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Su empresa encontrar conveniente el poder contar con un Servidor de Correo electrnico con capacidad de recuperar mensajes por medio de los protocolos IMAP, POP3 e interfaz Web. Sus usuarios podrn acceder fcilmente a sus correos electrnicos, ya sea desde su cliente de correo favorito (Thunderbird, Outlook) o bien desde el navegador Web de su eleccin.
Software Requerido?
Sendmail Imap POP3 Make Cyrus-sasl Cyrus-sasl-md5 Cyrus-sasl-plain
Hardware Requerido?
Requerimientos minimos: Servidor a 250 Mhz, 256 MB RAM, 8 GB disco duro
Introduccin.
La mayora de las distribuciones de GNU/Linux incluyen de manera predeterminada Sendmail, un poderoso servidor de correo electrnico ampliamente utilizado alrededor del mundo. Este requiere de una correcta configuracin para su mejor aprovechamiento y poder disponer de un nivel de seguridad aceptable. Es muy comn que los administradores inexpertos no se molesten siquiera en establecer un nivel de seguridad apropiado en sus redes locales, y mucho menos en el servidor de correo, el cual ven como un servicio ms. Es un error comn el configurar Sendmail para que permita enviar correo como sea a cualquier costo. Usualmente este costo significa convertirse en Open Relay, y por lo tanto en un paraso para personas que se dedican al envo masivo de correo comercial (Spam). Este manual considera que:
Usted tiene un dominio propio. Que tiene un IP permanente o esttica, y no una dinmica, y que se trata de un enlace dedicado, como E1, DSL, T1 o T3, etc. Es decir, usted NO se conecta a Internet por medio de un modem. Tiene perfectamente configurada su red local y parmetros de red del servidor. Que usted LEER y seguir al pie de la letra este documento en su totalidad. Que usted utiliza Red Hat Enterprise Linux 3.0 o 4.0 o al menos Sendmail-8.12.11-4 y xinetd2.3.12-6.
Enviar y recibir correo electrnico. Establecer un buen nivel de seguridad. Filtrar el molesto Spam, o correo masivo no solicitado, que a muchos nos aqueja a diario, para toda su red local.
Convertirse en gur en GNU/Linux, pero le ser de utilidad. Acabar con enfermedades, hambre, guerra, miseria, Microsoft y otros miles de malestares de los que adolece el mundo.
interfaz real, o eth1). Tener instalados los paquetes sendmail, sendmail-cf, m4, make, xinet e imapque vienen incluidos en el CD de instalacin o servidor FTP de actualizaciones para la versin de la distribucin que usted utilice.
Tmese en consideracin que, de ser posible, se debe utilizar la versin estable ms reciente de todo el software que vaya a instalar al realizar los procedimientos descritos en este manual, a fin de contar con los parches de seguridad necesarios.Ninguna versin de sendmail anterior a la 8.12.11 se considera como apropiadadebido a fallas de seguridad de gran importancia, y ningn administradorcompetente utilizara una versin inferior a la 8.12.11. Por favor visite el sito Web de su distribucin predilecta para estar al tanto de cualquier aviso de actualizaciones de seguridad.
Software requerido.
sendmail sendmail-cf dovecot (o bien imap si se utilizan derivados de Enterprise Linux 3.0 y anteriores) m4 make
Procedimientos.
Preparativos.
Lo primero ser establecer que es lo que tenemos en la red local y que es lo que haremos con esto. Determine que mquinas de su red local, especficamente las direcciones IP, necesitan poder enviar y recibir correo electrnico y cuales NO deben hacerlo. Determine como desea recuperar los mensajes de correo electrnico que arriben al servidor. POP3 o IMAP.
POP3: Es el protocolo de recuperacin de correo electrnico ms utilizado en la actualidad. Permite recuperar el correo pero este se almacenar localmente en el disco duro de las mquinas de los usuarios IMAP: Este protocolo almacena el correo electrnico, y permite la creacin de carpetas de usuario, en el servidor. De modo tal, los usuarios pueden acceder desde cualquier parte del mundo a su buzn de correo y carpetas personales. IMAP tambin facilita la utilizacin de webmails (servicios de correo basado sobre Web). .
Determine el nombre de todos los posibles nombres o aliases que tenga su servidor. Ejemplo: midominio.org, mail.mi-dominio.org, servidor.mi-dominio.org, mi-red-local-org, mail.mi-red-local.org, etc.
Configure sus dos tarjetas de red, una para la red local con la IP invlida y otra para la direccin IP real. Puede hacerlo utilizando el procedimiento descrito en el manual Cmo configurar correctamente los parmetros de red. Una cosa ms antes de continuar
No olvide que se requiere un DNS perfectamente configurado para que este resuelva su nombre de dominio utilizado por el servidor de correo. Recuerde que el correo proveniente de otros equipos no llega solo al servidor ni tampoco por arte de magia. Consulte el manual Cmo configurar un servidor de nombres de dominio (DNS).
Configurando Sendmail.
Antes de continuar, debemos editar el fichero /etc/mail/local-host-names, en el cual deberemos de listar todos y cada uno de los aliases que tenga el servidor que estamos configurando, as como los posibles sub-dominios. Es decir, todos los dominios para los cuales estaremos recibiendo correo en un momento dado.
# Incluya aqu todos los dominios para los que # recibamos correo. mi-dominio.org.mx servidor.mi-dominio.org.mx mail.mi-dominio.org.mx mi-red-local.org.mx intranet.mi-red-local.org.mx mail.mi-red-local.org.mx
Procederemos entonces a modificar el archivo /etc/mail/sendmail.mc, con previo respaldo del original, a fin de preparar la configuracin del servidor de correo.
cp /etc/mail/sendmail.mc /etc/mail/etc/sendmail.mc.default
Por defecto Sendmail solo permitir enviar correo solo desde la interfaz loopback(127.0.0.1), es decir, desde el mismo servidor. Si queremos poder enviar correo desde las mquinas de la red local comente la lnea o bien, si tiene varias, aada las interfaces desde las cuales se quiere que escuche peticiones sendmail y omitalas que no deben, como sera una red local secundaria con restricciones.
dnl FEATURE(`accept_unresolvable_domains')dnl
Es necesario establecer que mi-dominio.org.mx corresponder a la mscara que utilizaremos para todo el correo que emitamos desde nuestro servidor. Debe, por tanto, aadirse una lnea justo debajo de MAILER(procmail)dnl y que va del siguiente modo:
MASQUERADE_AS(mi-dominio.org.mx)dnl
Todo en conjunto, ya modificado, debera de quedar del siguiente modo (NO modificar el orden de las lneas): Configuracin recomendada de Sendmail.mc para Enterprise Linux 3.0
divert(-1)dnl dnl # dnl # This is the sendmail macro config file for m4. If you make changes to dnl # /etc/mail/sendmail.mc, you will need to regenerate the dnl # /etc/mail/sendmail.cf file by confirming that the
sendmail-cf package is dnl # installed and then performing a dnl # dnl # make -C /etc/mail dnl # include(`/usr/share/sendmail-cf/m4/cf.m4')dnl VERSIONID(`setup for Red Hat Linux')dnl OSTYPE(`linux')dnl dnl # dnl # default logging level is 9, you might want to set it higher to dnl # debug the configuration dnl # dnl define(`confLOG_LEVEL', `9')dnl dnl # dnl # Uncomment and edit the following line if your outgoing mail needs to dnl # be sent out through an external mail server: dnl # dnl define(`SMART_HOST',`smtp.your.provider') dnl # define(`confDEF_USER_ID',``8:12'')dnl dnl define(`confAUTO_REBUILD')dnl define(`confTO_CONNECT', `1m')dnl define(`confTRY_NULL_MX_LIST',true)dnl define(`confDONT_PROBE_INTERFACES',true)dnl define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl define(`ALIAS_FILE', `/etc/aliases')dnl define(`STATUS_FILE', `/var/log/mail/statistics')dnl define(`UUCP_MAILER_MAX', `2000000')dnl define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl define(`confAUTH_OPTIONS', `A')dnl dnl # dnl # The following allows relaying if the user authenticates, and disallows dnl # plaintext authentication (PLAIN/LOGIN) on non-TLS links dnl # dnl define(`confAUTH_OPTIONS', `A p')dnl dnl # dnl # PLAIN is the preferred plaintext authentication method and used by dnl # Mozilla Mail and Evolution, though Outlook Express and other MUAs do dnl # use LOGIN. Other mechanisms should be used if the connection is not dnl # guaranteed secure. dnl # Please remember that saslauthd needs to be running for AUTH. dnl # dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl dnl # dnl # Rudimentary information on creating certificates for sendmail TLS: dnl # cd /usr/share/ssl/certs; make sendmail.pem dnl # Complete usage:
dnl # make -C /usr/share/ssl/certs usage dnl # dnl define(`confCACERT_PATH',`/usr/share/ssl/certs') dnl define(`confCACERT',`/usr/share/ssl/certs/ca-bundle.crt') dnl define(`confSERVER_CERT',`/usr/share/ssl/certs/sendmail.pem') dnl define(`confSERVER_KEY',`/usr/share/ssl/certs/sendmail.pem') dnl # dnl # This allows sendmail to use a keyfile that is shared with OpenLDAP's dnl # slapd, which requires the file to be readble by group ldap dnl # dnl define(`confDONT_BLAME_SENDMAIL',`groupreadablekeyfile')dnl dnl # dnl define(`confTO_QUEUEWARN', `4h')dnl dnl define(`confTO_QUEUERETURN', `5d')dnl dnl define(`confQUEUE_LA', `12')dnl dnl define(`confREFUSE_LA', `18')dnl define(`confTO_IDENT', `0')dnl dnl FEATURE(delay_checks)dnl FEATURE(`no_default_msa',`dnl')dnl FEATURE(`smrsh',`/usr/sbin/smrsh')dnl FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl FEATURE(redirect)dnl FEATURE(always_add_domain)dnl FEATURE(use_cw_file)dnl FEATURE(use_ct_file)dnl dnl # dnl # The following limits the number of processes sendmail can fork to accept dnl # incoming messages or process its message queues to 12.) sendmail refuses dnl # to accept connections once it has reached its quota of child processes. dnl # dnl define(`confMAX_DAEMON_CHILDREN', 12)dnl dnl # dnl # Limits the number of new connections per second. This caps the overhead dnl # incurred due to forking new sendmail processes. May be useful against dnl # DoS attacks or barrages of spam. (As mentioned below, a per-IP address dnl # limit would be useful but is not available as an option at this writing.) dnl # dnl define(`confCONNECTION_RATE_THROTTLE', 3)dnl dnl # dnl # The -t option will retry delivery if e.g. the user runs over his quota. dnl # FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl FEATURE(`access_db',`hash -T -o /etc/mail/access.db')dnl FEATURE(`blacklist_recipients')dnl EXPOSED_USER(`root')dnl
dnl # dnl # The following causes sendmail to only listen on the IPv4 loopback address dnl # 127.0.0.1 and not on any other network devices. Remove the loopback dnl # address restriction to accept email from the internet or intranet. dnl # dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl dnl # dnl # The following causes sendmail to additionally listen to port 587 for dnl # mail from MUAs that authenticate. Roaming users who can't reach their dnl # preferred sendmail daemon due to port 25 being blocked or redirected find dnl # this useful. dnl # dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl dnl # dnl # The following causes sendmail to additionally listen to port 465, but dnl # starting immediately in TLS mode upon connecting. Port 25 or 587 followed dnl # by STARTTLS is preferred, but roaming clients using Outlook Express can't dnl # do STARTTLS on ports other than 25. Mozilla Mail can ONLY use STARTTLS dnl # and doesn't support the deprecated smtps; Evolution <1.1.1 uses smtps dnl # when SSL is enabled-- STARTTLS support is available in version 1.1.1. dnl # dnl # For this to work your OpenSSL certificates must be configured. dnl # dnl DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl dnl # dnl # The following causes sendmail to additionally listen on the IPv6 loopback dnl # device. Remove the loopback address restriction listen to the network. dnl # dnl DAEMON_OPTIONS(`port=smtp,Addr=::1, Name=MTA-v6, Family=inet6')dnl dnl # dnl # enable both ipv6 and ipv4 in sendmail: dnl # dnl DAEMON_OPTIONS(`Name=MTA-v4, Family=inet, Name=MTA-v6, Family=inet6') dnl # dnl # We strongly recommend not accepting unresolvable domains if you want to dnl # protect yourself from spam. However, the laptop and users on computers dnl # that do not have 24x7 DNS do need this. dnl # dnl FEATURE(`accept_unresolvable_domains')dnl dnl # dnl FEATURE(`relay_based_on_MX')dnl
dnl # dnl # Alos accept email sent to "localhost.localdomain" as local email. dnl # LOCAL_DOMAIN(`localhost.localdomain')dnl dnl # dnl # The following example makes mail from this host and any additional dnl # specified domains appear to be sent from mydomain.com dnl # MASQUERADE_AS(`mi-dominio.org.mx')dnl dnl # dnl # masquerade not just the headers, but the envelope as well dnl # dnl FEATURE(masquerade_envelope)dnl dnl # dnl # masquerade not just @mydomainalias.com, but @*.mydomainalias.com as well dnl # dnl FEATURE(masquerade_entire_domain)dnl dnl # dnl MASQUERADE_DOMAIN(localhost)dnl dnl MASQUERADE_DOMAIN(localhost.localdomain)dnl dnl MASQUERADE_DOMAIN(mydomainalias.com)dnl dnl MASQUERADE_DOMAIN(mydomain.lan)dnl MAILER(smtp)dnl MAILER(procmail)dnl
Consulte el Apndice: Opciones avanzadas de seguridad para Sendmail, para incrementar la seguridad del servicio. Deben definirse los dominios para los cuales se estar permitiendo enviar correo electrnico. Esto se hace generando el fichero /etc/mail/relay-domains:
# Por defecto, solo se permite enviar correo desde localhost... localhost.localdomain RELAY localhost RELAY 127.0.0.1 RELAY # Debemos aadir solo las direcciones IP # que ahora tenga el servidor 192.168.1.1 RELAY 148.243.59.1 RELAY # # Agregue tambin las direcciones IP que integran su red local. # Solo especifique aquellas mquinas que tendrn # permitido enviar y recibir correo. No es buena idea # especificar redes completas. Especifique mquinas # individuales, aunque signifique ingresar manualmente un
# centenar de entradas. Es ms seguro de este modo. 192.168.1.2 RELAY 192.168.1.3 RELAY 192.168.1.4 RELAY # etc. # # Y tambin podemos agregar las direcciones de correo # electrnico de aquellos a quienes consideremos # "indeseables", o que queramos bloquear. Spam@algun_Spamer.com REJECT info@otro_Spammer.com REJECT # servidor.indeseable.com REJECT part.com.mx REJECT newlad.com REJECT dmc.com.mx REJECT propnewidea.com REJECT lapromocion.com REJECT hosting.com.mx REJECT solopromos.com.mx REJECT # etc.
En este archivo tambin puede agregar las direcciones de correo electrnico que desee bloquear, como son algunas de quienes envan correo masivo no solicitadoSpam. Al concluir, hay que convertir sendmail.mc en sendmmail.cf y compilar access para generar otro en formato de base de datos a fin de ser utilizado por Sendmail:
cd /etc/mail make
Ser de utilidad designar un alias a la cuenta de correo de root a fin de recibir los mensajes generados por el sistema en una cuenta comn de usuario. Abra el archivo /etc/aliases, en donde al final encontrar la siguientes lneas:
/sbin/newaliases
Terminados los detalles de la configuracin, reinicie sendmail del siguiente modo y tendr listo un servidor de correo que podr utilizar para enviar mensajes para toda su red local utilizando el servidor SMTP de su proveedor de servicios:
Si est funcionando un contrafuegos o firewall, recuerde que debe de estar abierto el puerto 25, de otro modo el correo saldra pero no entrara. Aada o verifique que est presente una lnea en el guin de firewall similar a la siguiente:
Postfix
Secciones
Presentacin Preparativos LAMP Correo El Portal Plataforma Educativa Administracin Panormica Montamos un servidor de correo (postfix) y uno imap (dovecot), los usuarios lo manejan a travs de la web (squirrelmail) y aadimos autenticacin, cifrado, filtros y controles anti-spam y anti-virus. Enlaces
Servidor de Correo en linuxsilo Iker: Correo en GNU/Linux Javi Polo: correo con Postfix Enlaces de Postfix en Espaol Instalar y configurar Squirrelmail
ltima revisin: 11 de junio de 2006.
Correo - Postfix
Instalacin 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 instalarn 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 ncleo: [ OK ] Terminando el registro del sistema: [ OK ] Iniciando el registro del sistema: [ OK ] Iniciando el registro del ncleo: [ OK ]
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,
postfix
/etc/postfix/master.cf,
toquetearlo)
/etc/postfix/aliases,
que es el archivo para crear alias (redirecciones de correo). Por ejemplo, el correo dirigido a root debera leerlo un usuario del sistema, como puede ser pepito. /etc/postfix/sasl/smtp.conf es el archivo para configurar la autenticacin ante el servidor de los usuarios /var/spool/postix/ es el directorio donde trabaja enjaulado Postfix. Observa cmo ha copiado hasta los archivos bsicos 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 instaladopostfix). Esto har que se cree en el
directorio /var/spool/mail/ un fichero llamado colego que contendr ese correo. ste es el buzn de correo del usuario, y tal y como est configurado postfix ahora ah vendrn a parar todos los correos, aadindose 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 <CR><LF>.<CR><LF> 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.
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. Quin 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; digamospealfa. Todo ello se consigue a travs del archivo /etc/aliases y del comando newaliases. Vamos al archivo de alias mencionado y all cambiamos:
root: postfix
por
root: pealfa
Configuracin bsica
Debemos modificar algunos parmetros. Para ello dejamos al archivo /etc/postifix/main.cf como sigue:
# CREADO POR EL SCRIPT DE INSTALACIN. 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 # PARMETROS 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 BUZN MAILDIR. SER EL BUZN PERSONAL DE CADA USUARIO.
home_mailbox = Mail/ # INTERFACES POR LA QUE ESCUCHAR PETICIONES(localhost, eth0, all): inet_interfaces = all # PARMETROS 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
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 contraseas hay muchas formas: usando bases de datos mysql, usando el mtodo auxprop (con el que cyrus-sasl mantiene un archivo independiente) y saslauth (se usarn las cuentas del sistema Linux). Este mtodo es el ms inseguro y slo sirve para pocos usuarios. Es precisamente el que vamos a usar porque es el ms simple. Y porque tendremos pocos usuarios, no tendrn acceso a la shell, no podrn iniciar sesin y slo se podrn conectar remotamente va 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 autenticacin 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: <palabra_para_poder_usar_smtp.key> Verifying - Enter pass phrase for smtpd.key: <repetimos_palabra_para_poder_usar_smtp.key> # chmod 600 smtpd.key # openssl req -new -key smtpd.key -out smtpd.csr Enter pass phrase for smtpd.key: <la_clave_antes_introducida> ........................ Country Name (2 letter code) [AU]: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 Hernndez Organizational Unit Name (eg, section) []:IES Delgado Hernndez Common Name (eg, YOUR name) []:web.iesdelgadohernandez.es Email Address []:root@iesdelgadohernandez.es Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: <pulsamos_intro> An optional company name []: <pulsamos_intro> # openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
......................... Enter pass phrase for smtpd.key:<palabra_para_poder_usar_smtp.key> # openssl rsa -in smtpd.key -out smtpd.key.unencripted Enter pass phrase for smtpd.key:<palabra_para_poder_usar_smtp.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) [AU]: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 Hernndez Organizational Unit Name (eg, section) []:IES Delgado Hernndez Common Name (eg, YOUR name) []:web.iesdelgadohernandez.es Email Address []:root@iesdelgadohernandez.es
Veamos lo que aadimos ahora a /etc/postfix/main.cf. Observa las medidas anti UBE:
# SASL = "Simple Authentication and Security Layer" o "Capa de Simple de autenticacin y seguridad". # Esto es un mtodo para aadir soporte autenticacin 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 comprobacin:
# /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 automticamente 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 sealado smtpd_tsl_auth_only = yes. Si hubisemos aceptado comunicacin sin exigir tls, colocando smtpd_tsl_auth_only = no entonces aparecera lo que sigue. Obsrvese como la autenticacin aparece despus de starttls. La autenticacin se realiza a travs de texto plano en claro, pero no hay problema pues la comunicacin 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.
Puertos
Ya hemos repetido unas cien veces que la conexin a un servidor smtp se realiza por defecto a travs del puerto 25. Asegurmosnos 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 seccin LAMP, lo hacemos con el asistente de Mandriva, ejecutando drakfirewall. Ante la pregunta "A qu servicios debera permitirse acceder desde Internet?" comprobaremos que est deshabilitada la opcin Todo (sin cortafuegos) y marcamos la opcin 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 medianteshorewall quede configurado.
R04
Hoy vamos a dejar por aqu un paso a paso para montar un servidor de correo de la forma ms sencilla posible y con acceso a travs de IMAP y de webmail. Partimos, para ello, de un servidor Debian recien instalado y disponemos de un dominio y de un servicio desde el que gestionar los registros de nuestro DNS. Para la instalacin usaremos Postfix como SMTP,Dovecot como servidor IMAP y Squirrel como servicio de Webmail. Lo primero que debemos de hacer es planificar los nombres que necesitamos dar de alta en el DNS para hacerlo cuanto antes y dar tiempo a que se propaguen. Realmente un nico registro A y otro MX nos valdran ya que todo va a funcionar en la misma mquina, pero por aquello de que quede bonito y pensando en futuros cambios en los que el servicio crezca y necesitemos usar mquinas diferentes para cada cosa, deberamos de crear un registro A diferente para cada uno de los servicios. Algo as:
smtpd_sasl_local_domain = midominio.com smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination smtpd_sasl_security_options = noanonymous home_mailbox = Maildir/
En la primera lnea debemos de sustituir la cadena en negritas por el dominio cuyo correo queremos recibir. El resto de los parmetros determinan el tipo de autenticacin que vamos a realizar, el servicio que se encargar de la autenticacin (dovecot en este caso) y las restricciones de acceso ms comunes al servidor. Tienes informacin detallada de todas ellas en este enlace. Con el parmetro home_mailbox, muy importante, indicamos a Postfix que queremos usar el formato de correo Maildir y que la ubicacin de las carpetas donde se almacenar este
ser un directorio denominado Maildir en el raiz del directorio home de cada usuario. Si no lo especificamos as, el correo se almacenar en un nico fichero con el nombre de la cuenta de cada usuario y bajo el directorio /var/mail. Una de las operaciones que se realiza durante la instalacin de Dovecot es crear la estructura necesaria para albergar los buzones de correo en el directorio /etc/skel que es el que sirve de plantilla para generar el home de los nuevos usuarios. Eso quiere decir que los usuarios que tengamos previamente creados antes de hacer esta instalacin no dispondrn de dichos directorios y, por tanto, no funcionaran correctamente. Para remedir esto tenemos que copiar manualmente dicha estructura. Supongamos que queremos copiar la estructura de buzones al usuario josemaria, ya creado antes de esta instalacin. La operacin sera la siguiente:
pop3_uidl_format = %08Xu%08Xv
Y ya slo nos resta por definir los parmetros relativos al mecanismo de autenticacin que hemos elegido. Lo hacemos con el siguiente bloque:
auth default { mechanisms = plain login passdb pam { } userdb passwd { } socket listen { client { path = /var/spool/postfix/private/auth mode = 0660 user = postfix group = postfix } } }
Ahora necesitamos hacer unas pequeas modificaciones para permitir la comunicacin entre postfix y sasl. Puesto que el daemon de postix se ejecuta mediante chroot en el directorio /var/spool/postfix, crearemos un enlace all al que podr acceder el daemon de sasl:
# mkdir -p /var/spool/postfix/var/run/saslauthd # rm -r /var/run/saslauthd/ # ln -s /var/spool/postfix/var/run/saslauthd /var/run # chgrp sasl /var/spool/postfix/var/run/saslauthd # adduser postfix sasl
Y, finalmente, debemos de reiniciar los tres servicios involucrados para que lean los cambios hechos en sus respectivas configuraciones:
# ln -s /etc/squirrelmail/apache.conf /etc/apache2/sitesavailable/squirrelmail
Y, por ltimo, habilitamos el sitio y pedimos a Apache que vuelva a recargar su configuracin:
# /usr/sbin/squirrelmail-configure
Con esto tenemos nuestro servidor de correo perfectamente operativo. Para crear una nueva cuenta de correo basta con que creemos un nuevo usuario en la mquina. Si creamos una cuenta llamada paquito, automaticamente se crear un buzn de correo para paquito@midominio.com cuyos mensajes se almacenaran en un directorio llamado Maildir que colgar del home de nuestro nuevo usuario. Un par de ajustes finales. Si nuestra mquina permite el acceso por ssh y slo queremos dar acceso de correo pero no permitir que estos usuarios accedan a la consola de la misma, lo
mejor es que creemos un grupo con los usuarios que tendrn acceso de ssh y lo indiquemos as. Adems, recordad que la autenticacin de las cuentas de correo la estamos haciendo en texto plano, con lo cual cualquiera podra escucharlas y disponer de una cuenta de acceso a nuestra mquina. Podramos, por ejemplo, tener un grupo llamado ssh_permitido al que perteneceran los usuarios con permiso de acceso e indicarlo en el fichero /etc/ssh/sshd_config con la siguiente directiva:
AllowGroups ssh_permitido
Otro posible extra sera permitir que los usuarios con cuenta de correo pudieran modificar sus contraseas a travs de la web. En Unixcraft nos cuentan comohacer un script PHP para permitirlo