Configuración de Postfix

Introducción.

Vamos a configurar el servidor de correo Postfix, de Vietse Wenema. Las razones para usar este mailer en vez de otro son diversas y variadas, pero no voy a tratar de convencerle. Úselo si le apetece.

Logo Postfix

Histórico

  • 19-Sep-2002 v0.1 (Javier Cantero): Voy a configurar un Postfix
  • 20-Sep-2002 v0.2 (Jayr Al-Dyn): Bloqueo de SPAM con Postfix

Instalación.

La instalación en las distribuciones actuales se limita a usar el paquete suministrado en el formato adecuado (.deb, .rpm). Asumo que usted sabe hacer por ejemplo un apt-get install postfix en Debian 3.0. Si no es así, tal vez debería consultar la documentación de su distribución.

Configuración básica.

Nota: La configuración de postfix suele residir en el directorio /etc/postfix. En este documento asumiremos dicha ubicación. Si no es así, deberá hacer usted mismo la correspondencia con el directorio adecuado.

El fichero de configuración fundamental de Postfix es un fichero de _texto plano_ llamado main.cf. En él residen los cientos de parámetros de configuración que se le pueden suministrar a este servidor de correo.
Afortunadamente, la mayoría de dichos parámetros son opcionales o vienen de serie ya configurados con unos valores adecuados. Así que para una configuración básica sólo necesitaremos cambiar algunos valores.

A los parámetros se le asigna un valor con el simple método método:%%%

1
parametro = valor

Dentro de la parte valor se puede utilizar el valor de otro parámetro mediante de la utilización del símbolo «dolar» por delante del nombre del parametro. Ejemplo (ficticio):

1
2
miparametro = mivalor
otroparametro = $miparametro

pero esto se entiende mejor con los ejemplos que quedan por venir.

Nombrando al servidor.

Los parámetros que casi cualquier configuración debe modificar son los que indican el nombre y el dominio de la máquina donde está ubicada el servidor. Muchos otros parámetros (incluidos parámetros que vienen configurados por defecto) utilizan estos valores, así que es fundamental su correcta
configuración.

  • myhostname sirve para indicar a Postfix el nombre de la máquina donde reside. Debe ser el nombre completamente cualificado (FQDN) o podría tener problemas.
  • mydomain le indica al servidor el nombre de dominio de nuestra máquina (normalmente sufijo del parámetro anterior).

Así, si por ejemplo nuestro servidor de correo está en la máquina llamada mordor del dominio escomposlinux.org, los parámetros resultantes serían:

1
2
myhostname = mordor.escomposlinux.org
 mydomain = escomposlinux.org

Correo saliente.

Ahora queremos configurar el nombre con el que saldrán los correos enviados desde nuestro sistema. Esto lo hace el parámetro myorigin. Por defecto el parámetro myorigin vale $myhostname (es decir, el nombre completo de la máquina donde reside el servidor). Esto significaría que nuestros correos saldrían con origen usuario@mordor.escomposlinux.org. En la mayoría de los casos no queremos incluir el nombre de la máquina del servidor del correo en las direcciones, sino únicamente el dominio: usuario@escomposlinux.org. Para ello modificaremos este parámetro:

1
myorigin = $mydomain

(aquí vemos un ejemplo del uso de parámetros en los valores de otros parámetros).

Correo entrante.

Con correo entrante nos referimos a los mensajes de correo que están dirigidos a nuestro servidor. O dicho de otro modo, aquellos que el servidor debe entender como que son locales (destinados a usuarios de nuestra máquina). El resto de correo (el correo no local, denominado habitualmente remoto) el servidor tratará de enviárselo a su destino.

Postfix tiene el parámetro mydestination para que el usuario le indique de qué nombres de dominios debe considerar el correo como local (es decir, como «suyo»). mydestination es una lista de nombres de dominios separados por espacios en blanco. También se pueden incluir nombres de ficheros donde exista una lista de dominios y tablas de búsqueda, pero eso lo dejaremos para una configuración avanzada.

Por defecto, Postfix sólo acepta correo dirigido a sí mismo. Esto es tanto como decir que la variable está configurada con el siguiente valor:

1
mydestination = $myhostname, localhost.$mydomain

El segundo nombre es una variante del nombre local de la máquina que siempre deberemos incluir para prevenir problemas. No haga caso, y se arrepentirá. 😛

Lo mismo que ocurría en el caso del correo saliente, lo habitual no es aceptar sólo correo para la máquina en concreto (usuario@mordor.escomposlinux.org), sino para todo el dominio (usuario@escomposlinux.org). Esto nos permitirá recoger el correo de todas nuestras máquinas en una única máquina general donde resida nuestro servidor de correo. Debemos por lo tanto modificar el parámetro mydestination convenientemente para reflejar tal situación:

1
2
mydestination = $myhostname,
localhost.$mydomain, $mydomain

¡La configuración correcta de este parámetro es, por lo tanto, fundamental! Si se olvida de alguno de los nombres posibles de su máquina de correo, parte del correo enviado entrará en un ciclo sin fin (correo no reconocido como local, tratado de enviar a su destino -que es otra vez nuestro servidor- y vuelve a recibirse) hasta que el mensaje sea descartado por exceso número de saltos de correo.

Por ello, no está de más añadir a mydestination cualquier posible nombre de dominio adicional de la máquina donde reside el servidor. Pongamos un ejemplo donde aceptamos también el correo enviado a un alias de mordor que es smtp y también a www por si alguien se le ocurre mandar correo al servidor web que está en la misma máquina:

1
2
mydestination = $myhostname, localhost.$mydomain, $mydomain,
 smtp.$mydomain, www.$mydomain

Es bastante probable que en sistemas reales esta lista sea todavía mayor, teniendo en cuenta que la lista de servicios o alias puede ser mayor.

Bloqueo de SPAM mediante postfix.

Si estás en la larga lista de las víctimas de SPAM (correo no deseado), puedes seguir varias técnicas para bloquearlo, o bien una combinación de todas
ellas.

  • Bloqueo de mensajes según remitente.
  • Bloqueo de mensajes según listas negras de dominios.
  • Bloqueo de mensajes según el contenido de las cabeceras.

En mi caso (un caso grave, hay que decirlo), decidí usar los tres al mismo tiempo. Os explico cómo.

Bloqueo de mensajes según remitente.

Para bloquear los mensajes bien por un remitente concreto o bien por el dominio o parte del dominio, es necesario crear un fichero llamado access en el directorio del postfix (en mi caso, /etc/postfix), como por ejemplo:

1
2
3
kornet.net           517 Delivery not authorized, message refused
 kr                   517 Delivery not authorized, message refused
 goodlook@korea.net   517 Delivery not authorized, message refused

Tras lo cual es necesario crear el fichero con extensión db correspondiente, mediante el comando postfix access en el directorio del postfix.

Por último, hay que añadir la siguiente línea en el fichero /etc/postfix/main.cf:

1
smtpd_sender_restrictions = hash:/etc/postfix/access

Bloqueo de mensajes según listas negras de dominios.

Otro de los sistemas para bloquear SPAM es el de no aceptar correo si viene de un «relay» abierto. Para ello, existen iniciativas en Internet tales como www.ordb.org, que contienen una base de datos de IP’s desde las cuales es posible enviar SPAM ya que permiten hacer «relay» sin control del remitente.

Para activar esta opción, basta editar el fichero /etc/postfix/main.cf para que contenga las siguientes líneas:

1
2
3
maps_rbl_domains = relays.ordb.org
 smtpd_recipient_restrictions =
 permit_mynetworks, check_relay_domains

Bloqueo mediante checkeo de cabeceras.

Cuando todo falla, siempre se puede bloquer correo mediante una regla que lee la cabecera del mensaje y lo rechaza o acepta en caso de que encuentre un patrón. En mi caso, lo uso para rechazar el correo coreano, para lo que me limito a comprobar la codificación de caracteres del mensaje.

Esto se consigue teniendo en el fichero /etc/postfix/main.cf una línea como la que sigue:

1
header_checks = regexp:/etc/postfix/header_checks

Y creando un fichero header_checks en la misma localización. En mi caso, el fichero tiene esta pinta:

1
2
3
4
5
6
7
/Content-[[Tt]]ype:.*charset="big5"/                          REJECT
 /Content-[[Tt]]ype:.*charset="ks_c_.*"/                       REJECT
 /Content-[[Tt]]ype:.*CHARSET="KS_C_.*"/                       REJECT
 /Content-[[Tt]]ype:.*CHARSET=KS_C_.*/                           REJECT
 /Content-[[Tt]]ype:.*charset="[[Ii]][[Ss]][[Oo]]-2022.*"/    REJECT
 /Content-[[Tt]]ype:.*charset="euc-kr*"/                       REJECT
 /Content-[[Tt]]ype:.*charset=euc-kr*/                           REJECT

Espero que esto os ayude a paliar el problema del SPAM. Por cierto, no olvidéis ejecutar un postfix reload cada vez que queráis que se cargue la configuración.

1
0
81
Califique este artículo

3 comentarios en «Configuración de Postfix»

  1. ¿Alguien me puede ayuda a hacer esto?

    * Captura de sesión SMTP entre MUA y MTA

    Capturar con wireshark una trasferencia de correo desde un agente de usuario de correo (MUA) [thunderbird, por ejemplo] hacia un agente de transporte de correo (MTA) [servidor SMTP].

    Para ello:

    * Activar la captura wireshark, puerto 25 (smtp).
    * Ejecutar el MUA.
    * Redactar un pequeño mensaje de correo (cabecera y una linea de texto). Adjuntarle un fichero pequeño (1 k aprox.): por ejemplo, un pequeño texto, o firmarlo digitalmente (equivale a adjuntar la firma).
    * Enviar el mensaje a tu propia cuenta.
    * Filtar la captura smtp y enviarla al profesor (fichero con extensión «.pcap»).

    antonio441@hotmail.es

    Responder
  2. muchas gracias por la ayuda ya tengo configurado puedo enviar y recibir correos en mi LAN pero no puedo recibir correos desde afuera (hotmail, gmail,etc) me podrias ayudar por favor, muchas gracias

    Responder

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.