viernes, 11 de noviembre de 2011

Postfix - Configuración y Puesta en Marcha II

Las directivas mínimas, para tener nuestro Postfix corriendo a las mil maravillas son las siguientes:

mydomain =
El nombre del dominio de Internet para este sistema de correo; por defecto se utiliza el valor de la variable $myhostname sin el primer componente del valor de la misma. El valor de la variable $mydomain se utiliza por defecto en muchos otros parámetros de la configuración de Postfix.
Ej:
mydomain = antel.com.uy

myhostname =
Especifique el nombre de Internet para este host. El valor de esta variable debe ser un nombre FQDN resoluble a través de consultas DNS.
Ej:
myhostname = mail.antel.com.uy
Ustedes saben que el servicio de correo va muy de la mano con el DNS, quizá en otro artículo haga más detalle sobre el DNS, pero por ahora solo puedo decirles lo que explico aquí. Por ejemplo, el valor de esta directiva aparece en el banner SMTP cuando se establece una sesión SMTP con nuestro servidor de correo Postfix, por ejemplo:
telnet 192.168.1.1 25
220 mail.antel.com.uy ESMTP Postfix
Aquí solo estoy ejemplificando el uso de esta variable, pero la verdad es que se utiliza para más parámetros de la configuración de Postfix.

myorigin =
Especifique el dominio de Internet con el que se originan los mensajes de correo salientes de este servidor de correo. Este es el dominio que aparece en el campo “From” de los mensajes de correo.
Ej:
myorigin = $mydomain
ó bien,
myorigin = antel.com.uy
En otras palabra, cuando ustedes envíen un mensaje de correo a través del servidor Postfix, el destinatario final verá en el campo "From:" ó en el campo "De:" (para los hispano hablantes) del mensaje de correo, algo como:
From: Juan Sosa 
En caso de que se coloque
myorigin = $myhostname
Entonces el destinatario final de nuestros correos vería algo como:
From: Juan Sosa 


mydestination =
Especifique los dominios de Internet que este sistema de correo atiende.
Ej:
mydestination = $mydomain localhost.localdomain localhost $myhostname
ó bien,
mydestination = antel.com.uy localhost.localdomain localhost mail.antel.com.uy

Es con este parámetro que le estamos diciendo a Postfix cuales dominios de Internet atiende para el correo. Si, como ya habrán sacado sus conclusiones, es con este parámetro que le decimos a Postfix que reciba el correo que va dirigido para antel.com.uy, localhost.localdomain, localhost y mail.antel.com.uy. ¿Oiste Juan, y porque tantos valores para este parámetro?. Pues porque la novia que tenemos en la empresa X y la novia que tenemos en la empresa Y no son las únicas que nos mandan correo a juan@antel.com.uy. Dentro del mismo servidor de correo hay aplicaciones que envían notificaciones vía correo electrónico a los administradores de las mismas (notificando algún evento particular), generalmente estas aplicaciones envían mensajes de correo de la siguiente manera: root@localhost ó root@localhost.localdomain ó juan@mail.antel.com.uy ó postmaster@localhost.localdomain. Por esta razón es que hay que decirle a Postfix que reciba el correo para todas estas denominaciones.

inet_interfaces =
Especifique las direcciones IP de las Interfaces por las cuales se desea que Postfix quede a la escucha del servicio SMTP. Si desea configurar el servicio en todas las interfaces, asigne a esta variable el valor all.
Ej:
inet_interfaces = all
inet_interfaces = loopback-only (Postfix 2.2 and later)
inet_interfaces = 127.0.0.1
inet_interfaces = 127.0.0.1, [::1] (Postfix 2.2 and later)
inet_interfaces = 192.168.1.2, 127.0.0.1
    
Como sabemos, el servicio de correo pone un Socket TCP en el puerto 25, con este parámetro le decimos a Postfix en que interface de red vamos a colocar el Socket TCP/25 a la escucha de las peticiones. Si lo que estamos configurando es un servicio que está disponible desde Internet, entonces deberíamos asignar el valor all a esta variable. Con el valor all ponemos un Socket TCP/25 en todas las interfaces de red que tengamos, es decir, si tenemos tres interfaces de red así:
127.0.0.1
192.168.1.1
200.1.2.3
 
Una petición dirigida a 127.0.0.1 puerto 25, será válida, lo mismo sucede con las peticiones hechas a 192.168.1.1 y 200.1.2.3.
  • Ahora si, con la explicación anterior, agregamos al final del archivo main.cf, los parámetros explicados:
    mydomain = antel.com.uy
    myhostname = mail.antel.com.uy
    myorigin = $mydomain
    mydestination = $mydomain localhost.localdomain localhost $myhostname
    inet_interfaces = all
    
  • Hemos finalizado la configuración. Guardamos los cambios en el archivo main.cf e iniciamos nuestro servidor Postfix de la siguiente manera:
    /etc/init.d/postfix start
  • Para hacer que nuestro servidor Postfix arranque cuando la máquina se encienda nuevamente, ejecutamos el siguiente comando:
  • chkconfig --level 345 postfix on
    
    
DE LAS VERIFICACIONES

Lo primero que deberíamos verificar es lo siguiente:
  • Socket TCP con Puerto 25 disponible en todas las interfaces. Para esto, ejecutamos:
  • netstat -an | grep 25
deberíamos ver una salida similar a la siguiente:
.
.
.
tcp        0      0 10.100.0.253:53             0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN
.
.
 
De especial interés la línea:
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN

Con esto verificamos que el servicio está a la escucha en todas las interfaces. Recuerden que 0.0.0.0 significa todas las interfaces y el 25 significa el número de puerto que está a la escucha. El puerto No. 25 corresponde al protocolo SMTP. Otras salidas interesantes del comando netstat, son las siguientes (compruébelo usted mismo):
netstat -anp
netstat -pls (jejeje...está me la pille en pello.info)
netstat -ano  (juas!!!..microsoft.com no deja de impresionarme)
  
  • Hablando SMTP.
     También es interesante aprender hablar LDAP, BGP-4, HTTP, entre otras cosas. Una prueba que usualmente se hace es hablar SMTP directamente con nuestro servidor de correo para verificar que todo está funcionando como esperamos (es decir, por lo menos es capaz de recibir correo). Para hablar SMTP con nuestro servidor de correo solo basta con hacer una sesión telnet dirigida al puerto 25 de cualquier dirección IP de nuestro servidor de correo.
    En el ejemplo que voy a ilustrar a continuación, supongo lo siguiente:
    La IP interna de mi servidor de correo es: 192.168.1.1
    Dentro del servidor de correo existe un buzón de correo para juan@antel.com.uy
    Voy a enviarle un mensaje de prueba a juan@antel.com.uy, diciendo que yo soy mrwolf@pulpfiction.com.

Pongo a continuación mi diálogo SMTP con mi servidor de correo a través de una sesión Telnet al puerto 25 de mi servidor de correo. Usted puede probar de acuerdo con sus configuraciones lo mismo (lo que yo escribí está en negrita y de color verde, lo demás son respuestas del servidor a los diferentes comandos SMTP):
telnet 192.168.1.1 25

220 mail.antel.com.uy ESMTP Postfix
HELO juanmuno.antel.com.uy
250 mail.antel.com.uy
MAIL FROM: mrwolf@pulpfiction.com
250 Ok
RCPT TO: juan@antel.com.uy
250 Ok
DATA
354 Please start mail input.
HI, MY NAME IS MR WOLF. I SOLVE PROBLEMS...
.
250 Mail queued for delivery.

QUIT
221 Closing connection. Good bye.


Connection to host lost.
  
Con lo anterior, a juan@antel.com.uy, le debió llegar un mensaje de correo de mrwolf@pulpfiction.com diciendo:
HI, MY NAME IS MR WOLF. I SOLVE PROBLEMS
Para aquellos novicios y curiosos, el protocolo SMTP está especificadoen el RFC 821 (http://www.faqs.org/rfcs/rfc821.html).

No hay comentarios: