Instalando Postfix

El servidor de correo por defecto de la distribución de Linux Debian es exim4. Lo hemos de desinstalar para instalar postfix.

    /etc/init.d/exim4 stop
    update-rc.d -f exim4 remove
    aptitude purge exim4

Vamos a instalar los paquetes necesarios.

    aptitude install postfix postfix-tls sasl2-bin libsasl2-modules

Respondemos a las preguntas que nos hace el configurador de Debian, tomando todos los valores por defecto. Luego los cambiaremos.

Ahora procedemos a la configuración inicial de Postfix. Ejecutamos los siguiientes comandos. Atención a los comentarios de algunas líneas, y a las palabras en mayúsculas. Han de ser sustituídas por las convenientes en cada caso. Estos comandos, sólo modifican la configuración en el fichero /etc/postfix/main.cf. También podríamos realizarlo a mano. Hay que tener en cuenta que esta configuración no es para un sistema con buzones. Hay cosas que faltan para ello.

    postconf -e 'smtpd_sasl_local_domain ='
    postconf -e 'smtpd_sasl_auth_enable = yes'
    postconf -e 'smtpd_sasl_security_options = noanonymous'
    postconf -e 'broken_sasl_auth_clients = yes'

    postconf -e 'mail_owner = postfix'
    postconf -e "myhostname = MIMAQUINA.MIDOMINIO"
    postconf -e "mydomain = MIDOMINIO"

    postconf -e 'myorigin = $mydomain'
    postconf -e 'mydestination = $myhostname, localhost, localhost.$mydomain'
    postconf -e "mynetworks = 127.0.0.0/8,REDESINTERNASDELAESCUELA"
    postconf -e 'local_destination_concurrency_limit = 2'
    postconf -e 'default_destination_concurrency_limit = 10'
    postconf -e 'debug_peer_level = 2'
    postconf -e 'mail_spool_directory = /var/mail'
    postconf -e "inet_interfaces = IP_MIMAQUINA, 127.0.0.1"
    postconf -e 'disable_dns_lookups = no'
    postconf -e 'relayhost = '
    postconf -e 'mailbox_command = '
    postconf -e 'mailbox_size_limit = MAXIMOTAMAÑODELBUZON'
    postconf -e 'smtpd_helo_required = no'
    postconf -e 'smtpd_helo_restrictions = '
    postconf -e 'strict_rfc821_envelopes = no'
    postconf -e 'smtpd_recipient_restrictions =  permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination,reject_invalid_hostname,reject_unknown_sender_domain,reject_non_fqdn_sender'
    postconf -e 'smtpd_sender_restrictions =  reject_unknown_sender_domain,hash:/etc/postfix/access'
    postconf -e "message_size_limit = MAXIMOTAMAÑODELMENSAJE"
    postconf -e 'smtpd_timeout = 7m'
    postconf -e 'smtpd_recipient_limit = 100'
    postconf -e "smtpd_banner = MIMAQUINA.MIDOMINIO ESMTP"

Creamos el fichero de configuración de sasl.

    echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf
    echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf

Una vez configurado vamos a permitir el arranque del servicio en el fichero /etc/default/saslauth. Modificamos la siguiente línea que quedará de esta manera:

START=yes

Creamos la base de datos de servidores/dominios cuyo correo será vetado. Puede ser útil, pero hay que mantenerlo a mano.

    touch /etc/postfix/access
    postmap /etc/postfix/access

Reiniciamos Postfix y la autentificación SASL.

    /etc/init.d/postfix restart
    /etc/init.d/saslauthd start

Ahora le tenemos que indicar a Postfix, que es una pasarelo de correo, y que los mensajes para mi dominio o mis dominios los debe entregar en otro servidor, que es donde están los buzones de correo. Tenemos que decirle cual es el fichero de mapas de transporte. El fichero de mapas de trasnporte será /etc/postfix/transport.

    postconf -e "relay_domains = MISDOMINIOS"
    postconf -e 'transport_maps = hash:/etc/postfix/transport

El contenido del fichero de transporte será algo así (suponiendo dos dominios):

MIDOMINIO1    relay:[SERVIDOR1]
MIDOMINIO2    relay:[SERVIDOR2]

Creamos el hash.

    postmap /etc/postfix/transport

Modificamos /etc/aliases para que nos envíe el correo enviado a las cuentas postmaster, abuse y clamav a un buzón del servidor de buzones. Para ello, las siguientes líneas deben aparecer de una forma similar a:

postmaster: postmaster@MIDOMINIO
abuse: postmaster@MIDOMINIO
clamav: postmaster@MIDOMINIO

Tras ello, creamos la base de datos.

    postalias /etc/aliases

Reiniciamos Postfix.

    /etc/init.d/postfix restart

Será necesario crear una cuenta postmaster, en el servidor de correo para recibir las notificaciones.

Listas grises

Aunque instalaremos la aplicación antiSPAM spamassassin, un sistema más efectivo son las listas grises. Además, necesitan menos capacidad de proceso. Hay muchos programas para linux que implementan la funcionalidad de las listas grises. Nosotros utilizaremos el programa postgrey. Por qué? Algunos necesitan la base de datos MySQL. La instalación de postgrey es muy limpia. Postgrey solo utiliza una base de datos BerkeleyDB.

Instalaremos los siguientes paquetes:

     aptitude install libberkeleydb-perl libnet-dns-perl postgrey

Para configurar postfix en el uso de postgrey, pondremos el final de la variable smtpd_recipient_restrictions del fichero de configuración de postfix /etc/postfix/main.cf de la siguiente forma:

.........................,check_policy_service inet:127.0.0.1:60000,permit

Podemos tener problemas si en la red de la escuela utilizamos algún dispositivo que envíe correos al servidor. Por ejemplo una fotocopiadora / escaner Cannon. Su cliente de correo no es nada espabilado, y da errores. Como solución podemos poner su dirección en las whitelist de Postgrey. Creamos el fichero /etc/postgrey/whitelist_clients.local con el siguiente contenido:

# Barneko Cannon IRX3380i eskanerra
11.22.33.44

Reiniciamos el servicio y postfix:


    /etc/init.d/postgrey start
    /etc/init.d/postfix restart

Listo! Ya tenemos en marcha las GREYLISTS.