En esta sesión veremos como montar un servidor de correo, de una forma simple, y de forma que el servidor sea robusto. También como instalar los diferentes webmail que podemos usar.
Configuración rápida y simple de Postfix
[INTRO]
Continuando con la línea de estos mini-mini-howto, esta vez regreso a la escena con un pequeño documento para tener nuestro propio servidor de correo basado en Postfix (http://www.postfix.org). Postfix es un MTA (Mail Transfer Agent) que nace como una alternativa para sustituir al viejo y archi reconocido Sendmail (http://www.sendmail.org). ¿Qué cual es la diferencia entonces? Sendmail ha sido un MTA (al igual que Postfix) que ha evolucionado con el tiempo, inicialmente Sendmail fue un MTA que nació con muchas deficiencias, incluso aquellos geeks (like me) que han leído un poco sobre el tema, se acordarán del famoso gusano Morris (http://en.wikipedia.org/wiki/Morris_worm) el cual, entre otros atributos (que recomiendo lean), explotaba una vulnerabilidad de Sendmail. Incluso, durante aquella época, populaba un chiste entre los geeks el cual decía: “¿y cual es la nueva vulnerabilidad de Sendmail para hoy?”. Bien, no es que Sendmail sea malo, por el contrario, como cualquier software, éste ha evolucionado con el tiempo y mejorado mucho más. Si algo hay que saber sobre Sendmail, es que es uno de los servidores de correo más utilizados en el mundo. De hecho, yo todavía tengo que seguir manteniendo y administrando bastantes servidores de correo basados en Sendmail.
Pero bueno, no vinimos aquí a saber de Sendmail, como lo dije al principio, esta vez vamos a conocer a un viejo también archi conocido Postfix. Postfix nace como una alternativa más segura, más rápida, más simple de administrar y lo suficientemente compatible con Sendmail. Postfix es una creación de Wietse Zweitze Venema (http://www.porcupine.org/wietse/).
Para este documento asumo como distribución de Linux, las siguientes: Redhat 9, Fedora Core 3 ó Fedora Core 4.
[HOWTO]
-
Descargamos el RPM de la distribución que tengamos, para ello nos podemos apoyar en Rpmfind.net y buscar allí el término “postfix” para encontrar un grande listado de recursos en donde podemos descargar esta maravilla de servidor de correo.
- Instalamos el RPM que descargamos con los famosos comandos RPM, por ejemplo:
rpm -i postfix-1.1.12-1.i386.rpm
- Es bueno hacer las siguientes anotaciones:
- Si ya tenemos Sendmail funcionando en nuestra máquina, es bueno que detengamos el servicio para no entrar en conflicto con nuestra nueva adquisición. Para ello basta con que ejecuten los siguientes comandos:
/etc/init.d/sendmail stop chkconfig --level 345 sendmail off
- Si lo que tenemos es un Sendmail levantado por Gateways antivirus como MailScanner (http://www.mailscanner.info), entonces hacemos lo siguiente:
/etc/init.d/MailScanner stop
-
Si todo se instaló sin problemas, entonces nos vamos para /etc/postfix.
cd /etc/postfix
-
Una vez en el directorio de configuración de Postfix, por seguridad nos hacemos una copia del archivo main.cf.
cp main.cf main.cf.ori
El “.ori” no es de “orines”, “orinoco” ni nada por el estilo, el “.ori” es de “original”. Esto es bueno hacerlo por si no somos muy diestros al editar archivos y por si algo va mal, pues ponemos el archivo de configuración original y listo, “no ha pasado nada”.
-
Ahora si, revisemos un poco de teoría para comenzar a configurar nuestro “Behold the power of Postfix” (me acuerda eso de una buena canción de Chemical Brothers).
Antes de meternos como loquitos a hacer cosas en el archivo de configuración de Postfix, vamos a ver que es lo que vamos a meter y POR QUÉ. Es que saber POR QUÉ también es importante. Quién quita que un día cualquiera en “Quién quiere ser Millonario le pregunten: ¿Porque en el archivo de configuración de Postfix…?”.
Nota al pie:
-
Quién quiere ser millonario es un programa concurso en donde se gana dinero respondiendo a preguntas.
-
Quién quiere ser millonario y su productora/programadora/creadora no tienen nada que ver con este sitio. Es decir, ellos no me dan dinero para mantener este sitio.
-
Yo, Juan F. Muñoz - Fernández declaro que no conozco a nadie de ese programa y que tampoco tengo familiares en su productora/programadora/creadora.
Las directivas mínimas, para tener nuestro Postfix corriendo a las mil maravillas son las siguientes:
mydomain = <Dominio de Internet de este sistema de correo>
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 = diginet.com.co
myhostname = <Nombre de Internet de este host>
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.diginet.com.co
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.diginet.com.co 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 = <Dominio de Internet>
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 = diginet.com.co
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: Pepito Perez <pepito@diginet.com.co>
En caso de que se coloque
myorigin = $myhostname
Entonces el destinatario final de nuestros correos vería algo como:
From: Pepito Perez <pepito@mail.diginet.com.co>
[NOTA DE PROFESOR] Si los estoy haciendo dormir con el discurso, me avisan [/FIN DE NOTA]
mydestination = <Dominio de Internet>
Especifique los dominios de Internet que este sistema de correo atiende.
Ej:
mydestination = $mydomain localhost.localdomain localhost $myhostname
ó bien,
mydestination = diginet.com.co localhost.localdomain localhost mail.diginet.com.co
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 diginet.com.co, localhost.localdomain, localhost y mail.diginet.com.co. ¿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 pepito@diginet.com.co. 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 ó pepito@mail.diginet.com.co ó postmaster@localhost.localdomain. Por esta razón es que hay que decirle a Postfix que reciba el correo para todas estas denominaciones.
inet_interfaces = <Dirección IP | all>
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 = diginet.com.co myhostname = mail.diginet.com.co myorigin = $mydomain mydestination = $mydomain localhost.localdomain localhost $myhostname inet_interfaces = all
- Mis queridos monstruos, 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]
¿Más carreta?. Si señor, más carreta. Pues 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 -puta (jejeje...está me la pille en pello.info) netstat -ano (juas!!!..microsoft.com no deja de impresionarme)
- Hablando SMTP.
¿Qué no sabes hablar SMTP?, pues bueno, yo al principio tampoco sabía pero me metí a clases de Inglés y estaba tan de buenas que en el instituto donde estaba aprendiendo Inglés también enseñaban SMTP. También es interesante aprender hablar LDAP, BGP-4, HTTP, entre otras cosas. No, ya dejémonos de tanta bobada, 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 pepito@diginet.com.co
Voy a enviarle un mensaje de prueba a pepito@diginet.com.co, 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.diginet.com.co ESMTP Postfix HELO juanmuno.diginet.com.co 250 mail.diginet.com.co MAIL FROM: mrwolf@pulpfiction.com 250 Ok RCPT TO: pepito@diginet.com.co 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 pepito@diginet.com.co, 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). Agarren un buen tazón de café y siéntense a leer el RFC 821 en donde encontrarán el significado de las líneas anteriormente ilustradas.
[DEL ARCHIVO DE CONFIGURACION]
El formato general del archivo de configuración (main.cf) sigue el siguiente formato. (El siguiente texto es tomado textualmente de la documentación ofiicial de Postfix. http://www.postfix.org/postconf.5.html).
-
Cada línea de configuración obedece al formato “parametro = value”. Los espacios en blanco alrededor del signo “=” son ignorados, igualmente sucede con los espacios en blanco al final de cada línea.
-
Líneas vacías y líneas que solo contengan espacios en blanco son ignoradas. Igualmente se ignoran todas las líneas que cuyo primer caracter no sea el espacio en blanco sino el caracter “#”.
-
Cada línea válida de configuración comienza con texto diferente de espacio en blanco. Sin embargo, una línea que comience con espacio en blanco, seguirá siendo una línea de configuración válida.
-
El valor asignado a un parámetro puede hacer referencia a los valores de otros parámetros:
-
Las expresiones”$name”, “${name}” o “$(name)” son recursivamente reemplazadas por el valor del parámetro al que están haciendo referencia.
-
La expresión “${name?value}” se extiende a “value” cuando “$name” no está vacía. Solo se soporta en versiones de Postfix 2.2 ó superiores.
-
La expresión “${name:value}” se extiende a “value” cuiando “$name” está vacía. Solo se soporta en versiones de Postfix 2.2 ó superiores.
-
-
Cuando un mismo parámetro es definido varias veces, solo aplica a la configuración, la última instacia encontrada del mismo.
- En cualquier otro caso, el orden de los parámetros definidos en main.cf no es importante.
[DEL RELAY]
Como yo ya se que muchos de ustedes se han preguntado: “¿y sobre el relay qué?”. Bien, que digo sobre el relay…mmmmm…a ver yo pienso…mmmmm…No, la verdad es que Postfix es tan bueno, que por defecto sin decirle nada es capaz de hacer Relay a todo el conjunto de clientes que se encuentren en la misma subred de cada interface de red que tengamos conectada al sistema. Por ejemplo, suponiendo que tenemos una máquina con tres interfaces de red así:
10.1.0.254 MASK 255.255.0.0 192.168.1.254 MASK 255.255.255.0 200.1.2.3 MASK 255.255.255.248
Suponiendo que la interface con la IP 200.1.2.3 es nuestra interface externa, Postfix es capaz de hacerle Relay por defecto a todos los clientes que se encuentren en la subred 10.1.0.0/255.255.0.0 y la subred 192.168.1.0/255.255.255.0. Postfix también sabe que la interface 200.1.2.3 es la externa y que a esa subred no se le debe hacer Relay. Sin embargo hay dos parámetros en el archivo de configuración de Postfix, que pueden sintonizar al gusto de ustedes el tema del Relay. Ambos parámetros son los siguientes:
mynetworks_style mynetworks
No voy a entrar a explicarlos, son sumamente simples y como Postfix le hace Relay por defecto a los clientes que se encuentran en la misma subred creo que no hace falta entrar ahora en esos detalles. Si se pasan por esta página http://www.postfix.org/BASIC_CONFIGURATION_README.html, se van a dar cuenta lo simples que son.
Entre otras cosas, ¿qué es el Relay?. Tomen esta explicación del concepto de Open Relay.
- http://es.wikipedia.org/wiki/Open_Relay
[DE LO QUE NO SE DIJO]
Si, lastimosamente necesitaría unas buenas 8 horas teóricas y unas cuatro prácticas para poner todos los elementos básicos que envuelven al tema de correo. Se me queda en el otro costal el tema del DNS (como sintonizamos el DNS para resolver nuestro dominio de Internet y así recibir el correo), el enmascaramiento de dominios con Postfix (Domain Masquerade), el servicio POP3 y configuraciones adicionales bastante interesantes como Antispam, los Alias y sus bondades, dominios virtuales, entre muchas otras cosas. Bueno, algún día sacaré tiempo para escribir sobre estos asuntos mundanos (jajajajaja).
[FINAL]
Más que un artículo sobre la instalación de Postfix, me gustaría aclarar que es un artículo sobre la configuración básica y el detalle (así sea superficial) de algunos de sus pormenores, espero sus comentarios en mi dirección de contacto: juanmuno [[at]] juanfelipe [[dot]] net, no sean muy duros…jajaja, escriban lo que se les antoje.
Bueno, sin más que decir en este artículo, me despido de ustedes.
Juan Felipe Muñoz – Fernández.
- Login to post comments
Montaje avanzado de un servidor de correo postfix, con filtros antispam, etc.
http://linuxsilo.net/articles/postfix-mysql.html
Aplicaciones para montar tu propio webmail (I)
Fuente: http://www.maestrosdelweb.com/editorial/aplicaciones-para-montar-tu-propio-webmail-i/
Publicado el 6 de December, 2007
Los webmail como su nombre lo indica son aplicaciones basados en una plataforma web, que te permite verificar tus mensajes de correo electrónico, utilizando tu navegador de Internet. Estas herramientas te permiten acceder a tu cuenta de correo alojado en un servidor gratuito, de pago o empresarial.
Estos utilizan los protocolos de comunicación IMAP o POP3. Mediante la utilización de los webmail, no es necesario instalar algún cliente de correo, ni descargar tus mensajes a tu ordenador, solo basta con tener una conexión. Los webmails son vinculados a un servidor de correo.
Los webmail facilitan a los usuarios hacer uso de su correo electrónico de una forma fácil, utilizando un diseño amigable al usuario, brindándole la posibilidad de no depender de un único ordenador.
Características
Entre las principales características de un webmail están: redactar, listar, ver, eliminar mensajes, así como administrar nuestros contactos, crear filtros en los mensajes, crear carpetas.
-
Ventajas: administrar mensajes desde cualquier, mensajes disponibles desde cualquier ordenador, los mensajes no se descargan, por lo que no consume espacio de nuestro ordenador.
- Desventajas: poco espacio, en dependencia del proveedor de este servicio, se requiere de una conexión Internet, para acceder a su cuenta de correo, velocidad en dependencia del ancho de banda, se requiere que las peticiones realizadas vía web se completen, los mensajes no se guardan en nuestro ordenador. se requiere de mayor espacio en el servidor, pueden presentar fallas de seguridad.
¿Qué necesito para montar un Webmail en mi servidor?
Los principales requisitos que se necesitan para poder instalar o configurar un webmail en nuestro servidor, es primeramente un servidor web. Para crear nuestro servidor web podemos utilizar IIS o Apache. El tipo de servidor web a seleccionar es directamente proporcional al webmail que deseamos montar. Estos webmail pueden estar desarrollados para una plataforma específica.
RoundCube
RoundCube es un proyecto Opensource, utilizado para verificar los correos electrónicos utilizando tu navegador. Este proyecto se encuentra alojado en Sourceforge. La apariencia de esta aplicación es bastante agradable, sus desarrolladores hacen uso de PHP, MySQL, AJAX. Permite organizar los mensajes con tan solo arrastrarlos hacia donde deseamos.
RoundCube incluye libreta de direcciones, administración de carpetas, soporte para MIME, búsqueda de mensajes. Compatible con Windows y Linux. Compatible con aquellos navegadores que soporten javascript.
Requerimientos:
-
Permiso de escritura en el directorio que se descomprimió.
-
Servidor web.
-
PHP 4.3.1 o superior.
-
Base de datos Mysql, Postgresql, SQLite.
- La base de datos debe tener permisos para crear tablas.
¿Cómo instalar RoundCube?
Primeramente debemos acceder al sitio y descargarlo en nuestro ordenador. Luego descomprimirlo hacia un directorio en nuestro servidor web. Al descomprimir el paquete encontraremos un directorio llamado “SQL” donde encontraremos el script/código de nuestra base de datos. En nuestro caso utilizaré MySQL5, por lo que seleccionare el archivo “mysql5.initial.sql”. Definir permisos de escritura a los directorios: logs y temp.
Crear Base de datos:
Mediante un cliente de base de datos nos conectamos a nuestra base de datos ejemplo: phpMyadmin. Creamos una base de datos con el nombre que deseemos “roundcube”, vamos a la opción SQL o QUERY del cliente y pegamos el código SQL de nuestra base de datos, luego oprimimos “Continuar”, seguidamente el script se correrá y serán creadas las tablas necesarias.
Configuración de archivos:
Dentro encontraremos un directorio llamado “Config”, dentro se encuentran los archivos db.inc.php.dist y main.inc.php.dist los cuales deben ser renombrados hacia db.inc.php y main.inc.php eliminando “.dist”. Entre las principales variables de configuración podemos encontrar:
db.inc.php: debemos configurar la variable de la siguiente manera en dependencia del servidor de base de datos a usar.
-
MySql:
$rcmail_config['db_dsnw'] = 'mysql://root:root@localhost/roundcube'; -
Postgre:
'pgsql://root:root@localhost/roundcube'; -
Para entenderlo mejor podemos definirlo de la siguiente manera:
tipo de base de 'datos://usuario:clave@servidor/base de datos'; - SQLite:
'sqlite://./sqlite.db?mode=0646';
Si la configuración se ha realizado correctamente podremos visualizar nuestro webmail y acceder a nuestro correo, introduciendo usuario, clave y servidor de correo.
main.inc.php: en la siguiente variable podemos definir un host o servidor de correo por defecto, los usuarios no tendrán que introducirlo, solamente se conectaran a el con solamente introducir el usuario y clave.
$rcmail_config['default_host'] = 'miempresa.com'; Puerto usado para aceptar las conexiones IMAP $rcmail_config['default_port'] = 143; Nombre del Producto $rcmail_config['product_name'] = 'Mi empresa';
Finalmente podremos acceder a nuestro correo electrónico mediante el nuevo webmail utilizando la URL elegida http://localhost/roundcube/.
SquirrelMail
SquirrelMail es un webmail desarrollado en PHP, con soporte para IMAP y SMTP. Fue creado por Nathan y Luke Ehresman. Posee licencia opensource. Este webmail es compatible con la mayoría de los navegadores. Sigue el standard HTML 4.0.
Se puede encontrar más información en su sitio web oficial, donde también podemos descargarlo. A continuación veremos como instalarlo. Cuenta con un gran número de lenguajes y también con plugins.
Se debe descomprimir el paquete descargado hacia un directorio en nuestro servidor web. En el directorio “Config” contraremos ficheros de configuración para PERL y PHP. En nuestro caso seleccionaremos PHP. Tomaremos el archivo con el nombre “config_default.php” y lo renombraremos con el nombre “config.php”. Se debe dar permiso de escritura al directorio “data”.
Requerimientos
-
PHP 4 o superior
-
Servidor web.
- Servidor IMAP.
Configuración del archivo config.php Mostraremos las principales variables de configuración de SquirrelMail, que deben ser modificadas.
Esta variable contiene la versión del webmail: $config_version = '1.4.0'; Preferencias organizacionales: $org_name = "SquirrelMail"; Ruta de la imagen que se mostrará: $org_logo = SM_PATH . 'images/sm_logo.png'; Tamaño de ancho del logo: $org_logo_width = '308'; Tamaño de alto del logo: $org_logo_height = '111'; Titulo del webmail: $org_title = "SquirrelMail $version"; Definimos si utilizaremos Sendmail como servidor de correo.(True=SI, False = NO): $useSendmail = false; Configuracion del servidor SMTP y del Puerto: $smtpServerAddress = 'localhost'; $smtpPort = 25; Ruta del directorio de sendmail: $sendmail_path = '/usr/sbin/sendmail'; Nombre o IP del servidor IMAP y Puerto: $imapServerAddress = 'localhost'; $imapPort = 143;
Luego podemos acceder al webmail desde nuestro navegador y acceder a nuestro correo electrónico, si las configuraciones se han realizado correctamente.
NOCC Webmail
El webmail NOCC está desarrollado en PHP. Es una aplicación Opensource, distribuida bajo la licencia GPL. Permite el envío de correos electrónicos usando Sendmail o SMTP. Disponible en más de 36 idiomas y temas de apariencia. No utiliza frames, tampoco requiere tener habilitadas las cookies. Tampoco requiere de base de datos, compatible con Windows y Linux.

Requerimientos
-
Versiones superiores a PHP 4.1.0
-
Servidor IMAP o POP3.
- Servidor web.
¿Cómo instalar NOCC?
El primer paso para instalar NOCC es descargarlo en nuestro ordenador y luego descomprimirlo hacia un directorio de nuestro servidor web. En el directorio encontraremos un archivo de configuración llamado conf.php.dist que demos renombrar hacia conf.php.
Configuración del archivo conf.php:
Dirección del servidor y el puerto SMTP por defecto. $conf->default_smtp_server = 'hvil.hlg.sld.cu'; $conf->default_smtp_port = 25; Ruta del directorio temporal $conf->tmpdir = '/tmp'; Lenguaje por defecto $conf->default_lang = 'es'; Tema del webmail por defecto $conf->default_theme = 'standard'; Reporte de errores y alertas $conf->debug_level = E_ALL & ~E_NOTICE; Cantidad de mensajes por página $conf->msg_per_page = '25'; Firma de los mensajes salientes elaborados por los usuarios que utilicen nuestro webmail $conf->ad = "¨Nuestra Empresa"; Tamaño máximo de los adjuntos $conf->memory_limit="20M";
Al terminar la configuración podemos acceder a nuestro webmail. Introduciendo nombre de usuario, contraseña, dirección del servidor de correo a conectar. También seleccionaremos el tipo de protocolo y el puerto. Así como el lenguaje y el tema del webmail.

[INTRO]
Continuando con la línea de estos mini-mini-howto, esta vez regreso a la escena con un pequeño documento para tener nuestro propio servidor de correo basado en Postfix (http://www.postfix.org). Postfix es un MTA (Mail Transfer Agent) que nace como una alternativa para sustituir al viejo y archi reconocido Sendmail (http://www.sendmail.org). ¿Qué cual es la diferencia entonces? Sendmail ha sido un MTA (al igual que Postfix) que ha evolucionado con el tiempo, inicialmente Sendmail fue un MTA que nació con muchas deficiencias, incluso aquellos geeks (like me) que han leído un poco sobre el tema, se acordarán del famoso gusano Morris (http://en.wikipedia.org/wiki/Morris_worm) el cual, entre otros atributos (que recomiendo lean), explotaba una vulnerabilidad de Sendmail. Incluso, durante aquella época, populaba un chiste entre los geeks el cual decía: “¿y cual es la nueva vulnerabilidad de Sendmail para hoy?”. Bien, no es que Sendmail sea malo, por el contrario, como cualquier software, éste ha evolucionado con el tiempo y mejorado mucho más. Si algo hay que saber sobre Sendmail, es que es uno de los servidores de correo más utilizados en el mundo. De hecho, yo todavía tengo que seguir manteniendo y administrando bastantes servidores de correo basados en Sendmail.
Pero bueno, no vinimos aquí a saber de Sendmail, como lo dije al principio, esta vez vamos a conocer a un viejo también archi conocido Postfix. Postfix nace como una alternativa más segura, más rápida, más simple de administrar y lo suficientemente compatible con Sendmail. Postfix es una creación de Wietse Zweitze Venema (http://www.porcupine.org/wietse/).
Para este documento asumo como distribución de Linux, las siguientes: Redhat 9, Fedora Core 3 ó Fedora Core 4.
[HOWTO]
Descargamos el RPM de la distribución que tengamos, para ello nos podemos apoyar en Rpmfind.net y buscar allí el término “postfix” para encontrar un grande listado de recursos en donde podemos descargar esta maravilla de servidor de correo.
Si todo se instaló sin problemas, entonces nos vamos para /etc/postfix.
Una vez en el directorio de configuración de Postfix, por seguridad nos hacemos una copia del archivo main.cf.
El “.ori” no es de “orines”, “orinoco” ni nada por el estilo, el “.ori” es de “original”. Esto es bueno hacerlo por si no somos muy diestros al editar archivos y por si algo va mal, pues ponemos el archivo de configuración original y listo, “no ha pasado nada”.
Ahora si, revisemos un poco de teoría para comenzar a configurar nuestro “Behold the power of Postfix” (me acuerda eso de una buena canción de Chemical Brothers).
Ahora si, con la explicación anterior, agregamos al final del archivo main.cf, los parámetros explicados:
[DE LAS VERIFICACIONES]
¿Más carreta?. Si señor, más carreta. Pues lo primero que deberíamos verificar es lo siguiente:
Para esto, ejecutamos:
¿Qué no sabes hablar SMTP?, pues bueno, yo al principio tampoco sabía pero me metí a clases de Inglés y estaba tan de buenas que en el instituto donde estaba aprendiendo Inglés también enseñaban SMTP. También es interesante aprender hablar LDAP, BGP-4, HTTP, entre otras cosas. No, ya dejémonos de tanta bobada, 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 pepito@diginet.com.co
Voy a enviarle un mensaje de prueba a pepito@diginet.com.co, diciendo que yo soy mrwolf@pulpfiction.com.
[DEL ARCHIVO DE CONFIGURACION]
El formato general del archivo de configuración (main.cf) sigue el siguiente formato. (El siguiente texto es tomado textualmente de la documentación ofiicial de Postfix. http://www.postfix.org/postconf.5.html).
Cada línea de configuración obedece al formato “parametro = value”. Los espacios en blanco alrededor del signo “=” son ignorados, igualmente sucede con los espacios en blanco al final de cada línea.
Líneas vacías y líneas que solo contengan espacios en blanco son ignoradas. Igualmente se ignoran todas las líneas que cuyo primer caracter no sea el espacio en blanco sino el caracter “#”.
Cada línea válida de configuración comienza con texto diferente de espacio en blanco. Sin embargo, una línea que comience con espacio en blanco, seguirá siendo una línea de configuración válida.
El valor asignado a un parámetro puede hacer referencia a los valores de otros parámetros:
Las expresiones”$name”, “${name}” o “$(name)” son recursivamente reemplazadas por el valor del parámetro al que están haciendo referencia.
La expresión “${name?value}” se extiende a “value” cuando “$name” no está vacía. Solo se soporta en versiones de Postfix 2.2 ó superiores.
La expresión “${name:value}” se extiende a “value” cuiando “$name” está vacía. Solo se soporta en versiones de Postfix 2.2 ó superiores.
Cuando un mismo parámetro es definido varias veces, solo aplica a la configuración, la última instacia encontrada del mismo.
[DEL RELAY]
Como yo ya se que muchos de ustedes se han preguntado: “¿y sobre el relay qué?”. Bien, que digo sobre el relay…mmmmm…a ver yo pienso…mmmmm…No, la verdad es que Postfix es tan bueno, que por defecto sin decirle nada es capaz de hacer Relay a todo el conjunto de clientes que se encuentren en la misma subred de cada interface de red que tengamos conectada al sistema. Por ejemplo, suponiendo que tenemos una máquina con tres interfaces de red así:
Suponiendo que la interface con la IP 200.1.2.3 es nuestra interface externa, Postfix es capaz de hacerle Relay por defecto a todos los clientes que se encuentren en la subred 10.1.0.0/255.255.0.0 y la subred 192.168.1.0/255.255.255.0. Postfix también sabe que la interface 200.1.2.3 es la externa y que a esa subred no se le debe hacer Relay. Sin embargo hay dos parámetros en el archivo de configuración de Postfix, que pueden sintonizar al gusto de ustedes el tema del Relay. Ambos parámetros son los siguientes:
No voy a entrar a explicarlos, son sumamente simples y como Postfix le hace Relay por defecto a los clientes que se encuentran en la misma subred creo que no hace falta entrar ahora en esos detalles. Si se pasan por esta página http://www.postfix.org/BASIC_CONFIGURATION_README.html, se van a dar cuenta lo simples que son.
Entre otras cosas, ¿qué es el Relay?. Tomen esta explicación del concepto de Open Relay.
- http://es.wikipedia.org/wiki/Open_Relay
[DE LO QUE NO SE DIJO]
Si, lastimosamente necesitaría unas buenas 8 horas teóricas y unas cuatro prácticas para poner todos los elementos básicos que envuelven al tema de correo. Se me queda en el otro costal el tema del DNS (como sintonizamos el DNS para resolver nuestro dominio de Internet y así recibir el correo), el enmascaramiento de dominios con Postfix (Domain Masquerade), el servicio POP3 y configuraciones adicionales bastante interesantes como Antispam, los Alias y sus bondades, dominios virtuales, entre muchas otras cosas. Bueno, algún día sacaré tiempo para escribir sobre estos asuntos mundanos (jajajajaja).
[FINAL]
Más que un artículo sobre la instalación de Postfix, me gustaría aclarar que es un artículo sobre la configuración básica y el detalle (así sea superficial) de algunos de sus pormenores, espero sus comentarios en mi dirección de contacto: juanmuno [[at]] juanfelipe [[dot]] net, no sean muy duros…jajaja, escriban lo que se les antoje.
Bueno, sin más que decir en este artículo, me despido de ustedes.
Juan Felipe Muñoz – Fernández.
Validaciones SMTP
Hola Miguel.
Gracias por tus comentarios.
Con respecto a tu duda, aquí te dejo unos interesantes enlaces sobre validaciones que pueden hacerse en los MTA’s con respecto al protocolo SMTP.
- http://slett.net/spam-filtering-for-mx/smtpchecks.html
- http://www.kobitosan.net/postfix/origdocs/antispam-en.html
- http://www.postfix.org/uce.html
No te puedo explicar más por ahora debido a mi falta de tiempo, pero quizá en estos días me anime y escriba otro artículo sobre este tipo de validaciones con Postfix.
Saludos.
Juan Felipe Muñoz – Fernández
PD: Los articulos están en Ingles. Espero no sea problema. Puedes escribirme a mi correo. Preferiblemente utiliza cualquiera de mis claves públicas para remitirme algo por ese medio.