Software requerido:
Se recomienda utilizar al menos las siguientes versiones de software. No utilice versiones inferiores.
- postfix-1.1.12
- cyrus-sasl-2.1.10
- cyrus-sasl-plain-2.1.10
- cyrus-sasl-md5-2.1.10
- imap-2001a
Antes de continuar verifique siempre la existencia posibles actualizaciones de seguridad. Para Red Hat Linux 8.0 y 9 hay paquetería de actualización en los siguientes enlaces:
Si utiliza apt para RPM, solo bastará ejecutar:
apt-get update
apt-get install postfix cyrus-sasl cyrus-sasl-plain cyrus-sasl-md5 imap |
Sustituir Sendmail con Postfix en el sistema.
Si utiliza distribuciones como Red Hat Linux 9 o Yellow Dog Linux 3.0, solo necesitará utilizar el mandato redhat-switch-mail, el cual se encargará de realizar todos los cambios pertinentes en el sistema para cambiar de Sendmail hacia Postfix como MTA predeterminado.
SASL.
¿Que es SASL?
que significa "Capa de Seguridad y Autenticación Simple". SMTP.
Procedimientos
Edite /usr/lib/sasl/smtpd.conf y verifique que esté el siguiente contenido:
Para activar el soporte SASL, se debe asignar al menos una contraseña a cualquier cuenta de usuario en el sistema.
/usr/sbin/saslpasswd -c usuario1 |
Debido a que Postfix gtrabaja por defecto con chroot(), y es conveniente que siga haciendolo así, es perferible mover /etc/sasldb hacia la ruta acequible para postfix que corresponde a /var/spool/postfix/etc/sasldb:
mv /etc/sasldb /var/spool/postfix/etc/sasldb |
A fin de mantener un nivel de seguridad aceptable y permitir al mismo tiempo que ostfix pueda acceder al fichero de contraseñas, debemos asignar nuevos permisos a /var/spool/postfix/etc/sasldb:
chmod 640 /var/spool/postfix/etc/sasldb
chgrp postfix /var/spool/postfix/etc/sasldb |
Lo antrerior designa permisos de lectura y escritura para root y de solo lectura para el usuario postfix.
Crear enlace simbólico para poder utilizar el mandato saslpasswd normalmente y no tener que realizar el tedioso procedimiento de tener que copiar de nuevo dicho fichero cada vez que se de da alta o se modifique una cuenta.
ln -s /var/spool/postfix/etc/sasldb /etc/ |
De de alta todas las cuentas de usuario restantes:
/usr/sbin/saslpasswd -c usuario2
/usr/sbin/saslpasswd -c usuario3
Etc. |
Levantar el demonio saslauthd y añadirlo a los servicios activos:
/sbin/service saslauthd start
/sbin/chkconfig saslauthd on |
IMAP y POP3
Configuraremos de una vez el protocolo mediante el cual el usuario recuperará su correo. Puede utilizarse IMAP (Internet Message Access Protocol) o bien POP3 (Post Office Protocol, versión 3) o bien ambos. Si se elige IMAP, el todo el correo pemanecerá en el servidor hasta que sea eliminado explicitamente. Si se utiliza POP3, el correo será descargado por completo por medio del clietne del correo hacia la máquina del usuario.
Para habilitar uno u otro protocolo, o ambos, utilizaremos el mandato chkconfig:
chkconfig imap on
chkconfig ipop3 on |
Postfix.
¿Que es Postfix?
Postfix es un MTA, que es acrónimo de "Mail Transport Agent" y que a su vez significa "Agente de Transporte de Correo". Postfix fue desarrollado como un reemplazo para Sendmail. Postfix es la versión libre de Secure Mailer de IBM cuyo desarrollo fue iniciado por Wietse Vename en el T.J. Research Lab propiedad de IBM.
Postfix es una magnífica alternativa hacia Sendmail, el cual desafortunadamente posee un pésimo historial de seguridad. ¿Por que se sigue usando Sendmail? Porque viene incluido como MTA por defcto en la mayoría de las distribuciones de Linux y otros sabores de UNIX. Postfix es menos complicado de configurar, es más rápido, fácil de administar y seguro.
Postfix trabaja por defecto dentro de una jaula (chroot) localizada en /var/spoo/postfix, y por tal motivo es todavía más seguro reduciendo enormemente los riesgos para el sistema en el caso del surgimiento de una vulnerabilidad.
Procedimientos.
Editar al final del fichero /etc/postfix/aliases la línea que por defecto especifica como alias de root a postfix, lo cual se debe cambiar y definir en su lugar una cuenta de usuario válida. ¡Eso es algo muy importante!
Al terminar, ejecute el mandato newaliases a fin de convertir /etc/postfix/aliases en /etc/postfix/aliases.db.
Editar /etc/postfix/main.cf y donde se definirán algunas variables.
Redundar el nombre del servidor, el cual también debe ser un nombre de dominio completamente resuelto por un DNS:
myhostname = mail.midominio.com |
Definase además el dominio a utilizar.
Redundar el dominio a utilizar para los mensajes salientes. Por defecto se añade $myhostname, pero si así se desea, pude establecerse $mydomain.
En Red Hat Linux se establece localhost como única interfaz para escuchar peticiones. Puede comentarse la línea, puesto que Postfix escuchará peticiones por todas las interfaces por defecto:
# inet_interfaces = localhost |
Defina los dominios a adminstrar:
mydestination = $myhostname, localhost.$mydomain, dominio.virtual |
Defina los equipos a los que se permitirá enviar libremente el correo a través de postfix:
mynetworks = 192.168.1.0/24, 127.0.0.0/8 |
Si desea incrementar el nivel de seguridad o bien simplemente le interesa utilizar el método de autenticación que se explica más adelante, puede definir una lista de IP contenida en un fichero, el cual incluirá además de las IP propias del servidor y las de aquellos equipos a los que verdaderamente se permitirá enviar correo libremente a través de postfix:
mynetworks = $config_directory/mynetworks |
Un ejemplo del contenido de mynetworks sería:
127.0.0.0/8
192.168.1.254 |
Si se utiliza una dirección IP pública, como por ejemplo 148.240.39.174, nunca se defina el segmento de este en mynetworks (148.240.39.0/24), ya que de otro modo cualquier otro equipo de dicha red tenría permitido hacer uso del servidor de correo.
Redundemos los dominios que se permite para enviar correo designando la variable $mydestination:
relay_domains = $mydestination |
A fin de poder aprovechar las funciones de filtrado y administración del correo que posee procmail, defina en la ruta donde se localiza éste:
mailbox_command = /usr/bin/procmail |
Si se va a autilizar autenticación, debe definirse lo siguiente:
smtpd_sasl_auth_enable = yes
smtp_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtp_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtp_sasl_password_maps = hash:/etc/postfix/saslpass
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unknown_client,
check_relay_domains |
Crear el fichero /etc/postfix/saslpass y definir una cuenta específica por cada dominio administrado que además deberá autenticar escribiendo la contraseña correspondiente y que previamente se asignó con el mandato saslpasswd.
mail.midominio.com dominio1@mail.midominio.com:clave-del-usuario
dominio.virtual dominio2@dominio.virtual:clave-del-usuario |
Se deben crear cuentas en el sistema para este fin particular, y no olvidar que a fin de poder ser utilizadas por Postfix, se asignan las contraseñas para dichas cuentas con el mandato saslpasswd.
Se debe convertir /etc/postfix/saslpass a /etc/postfix/saslpass.db
postmap /etc/postfix/saslpass |
Asignar permisos apropiados a /etc/postfix/saslpass y /etc/postfix/saslpass.db
chmod 600 /etc/postfix/saslpass* |
La configuración ha concluído, y solo resta arrancar o reiniciar Postfix.
Alta de las cuentas de correo.
Las cuentas de correo deben de darse de alta sin acceso a shell, recordando que, a diferencia de los protocolos IMAP o POP3, al acceso hacia el protocolo |