lunes, 11 de julio de 2011

Servidor de Correos con Sendmail + Dovecot + Saslauthd +Bind9


Se utilizaran estas herramientas adicionales ya que prestan una mejor forma para la utilización del servidor ya que Sendmail por si solo no cuenta con Autenticación ni servicio de revisión de correos como es IMAP y POP3.

Que es Sendmail?
es un popular "agente de transporte de correo" (MTA - Mail Transport Agent) en Internet, cuya tarea consiste en "encaminar" los mensajes correos de forma que estos lleguen a su destino.
Se afirma que es el más popular MTA, compatible con sistemas Unix y el responsable de la mayoría de envío del correo de internet, aunque se le critica su alto número de alertas de seguridad (la mayoría de ellas parcheadas a las pocas horas), además de no ser sencillo de configurar.

Que es Dovecot ?
es un servidor de IMAP y POP3 de código abierto para sistemas GNU/Linux / UNIX-like, escrito fundamentalmente pensando en seguridad. Desarrollado por Timo Sirainen, Dovecot fue liberado por primera vez en julio del año 2002. Dovecot apunta fundamentalmente a ser un servidor de correo de código abierto ligero, rápido, fácil de instalar y por sobre todo seguro.

Que es Saslauthd ?
un proceso demonio que maneja las peticiones de autenticación de texto plano, en nombre de la biblioteca SASL

Que es Bind9?
(Berkeley Internet Name Domain, anteriormente : Berkeley Internet Name Daemon) es el servidor de DNS más comúnmente usado en Internet, especialmente en sistemas Unix, en los cuales es un Estándar de facto. Es patrocinado por la Internet Systems Consortium. BIND fue creado originalmente por cuatro estudiantes de grado en la University of California, Berkeley y liberado por primera vez en el 4.3BSD. Paul Vixie comenzó a mantenerlo en 1988 mientras trabajaba para la DEC.

Una nueva versión de BIND (BIND 9) fue escrita desde cero en parte para superar las dificultades arquitectónicas presentes anteriormente para auditar el código en las primeras versiones de BIND, y también para incorporar DNSSEC (DNS Security Extensions). BIND 9 incluye entre otras características importantes: TSIG, notificación DNS, nsupdate, IPv6, rndc flush, vistas, procesamiento en paralelo, y una arquitectura mejorada en cuanto a portabilidad. Es comúnmente usado en sistemas GNU/Linux.

Preparación Inicial:

Nota: la instalación es en Distros derivadas de Debian Para las Distros basadas en rpm podría cambiar los nombres de los paquetes no así los archivos de configuración. Esta instalacion se llevara acabo en Ubuntu Lucid .

Instalar los paquetes necesarios :
$ sudo apt-get install sendmail dovecot-pop3d dovecot-imapd sasl2-bin bind9

Configuracion del Servidor Bind9
Crearemos un dominio Llamado para este ejemplo
correo1.esto
para ello modificamos el siguiente archivo named.conf.default-zones . Le agregamos las siguientes lineas al final del archivo

zone "correo1.esto"{
type master;
file "/etc/bind/correo1.esto";
};
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.103";
};

Explicación de las lineas anteriores

zone "correo1.esto" // esta parte es donde se pone el dominio que crearemos

type master; // Esta area nos dice que el nombre de dominio es principal o maestro

file "/etc/bind/correo1.esto"; // en esta pare se declara el archivo que crearemos para la configuracion de nuestro nombre de dominio

Parte 2

zone "1.168.192.in-addr.arpa" { // En esta parte declaramos la zona inverza como se puede ver se declara la ip del servidor de forma inversa. La ip inversa que ponemos es la de la pc donde instalamos bind

Creando los archivos de configuración para el dominio

Utilizaremos los archivos db.local y db.127 Crearemos copia de estos dos archivos que usaremos como plantillas Renombrando con los nombres de la parte anterior

db.local lo cambiamos a correo1.esto

Contenido de correo1.esto Cambiamos todos los localhost por la direccion del ejemplo osea correo1.esto

;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA localhost. root.localhost. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
@ IN A 127.0.0.1
@ IN AAAA ::1

Quedara de la siguiente forma
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA correo1.esto. root.correo1.esto. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS correo1.esto.
@ IN A 192.168.0.103 // o la ip de nuestro server
@ IN MX 0 correo1.esto // Esta linea es la que nos permitira recibir // correos del exterior

Cambiando el nombre al archivo db.127 por db.103 nos aparecerá algo como
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA localhost. root.localhost. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
1.0.0 IN PTR localhost.

Debe de quedar algo asi:
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA correo1.esto. root.correo1.esto. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS correo1.esto.
103 IN PTR correo1.esto.

Configuración del hostname de la maquina
1° Reemplazamos el contenido de el archivo /etc/hostname , con el nombre de dominio que usaremos . En el ejemplo correo1.esto
2° lanzamos el comando sudo hostname correo1.esto
3° Reiniciar la pc.

Configuración de Sendmail

Necesitamos Modificar unas lineas en /etc/mail/sendmail.mc. esto sirve para poder recibir correo desde otras pc y del exterior

DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl
dnl DAEMON_OPTIONS(`Family=inet6, Name=MSP-v6, Port=submission, M=Ea')dnl
DAEMON_OPTIONS(`Family=inet, Name=MSP-v4, Port=submission, M=Ea', Addr=127.0.0.1')dnl

Debe de quedar asi :

DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp')dnl
dnl DAEMON_OPTIONS(`Family=inet6, Name=MSP-v6, Port=submission, M=Ea')dnl
DAEMON_OPTIONS(`Family=inet, Name=MSP-v4, Port=submission, M=Ea')dnl

Ejecutamos el comando sudo sendmailconfig

Configurar el archivo local-host-names

Como nuestras direcciones son "usuario@correo1.esto", nuestro servidor debe asumir como SUYOS todos los mensajes dirigidos a "@correo1.esto". Esto se consigue escribiendo "correo1.esto" en el archivo /etc/mail/local-host-names: Borramos todo lo que contenga el archivo y escribimos


correo1.esto
Permitir Clientes esto lo hacemos agregando las siguientes lineas e el archivo /etc/mail/access
Connect:192.168.1.103 OK
GreetPause:192.168.1.103 0
ClientRate:192.168.1.103 30
ClientConn:192.168.1.103 0

Iniciar DOVECOT
sudo service dovecor restart

INICIAR SASLAUTHD
Modificar el archivo /etc/default/saslauthd

LUEGO
sudo service saslauthd

AGREGAR USUARIOS
sudo saslpasswd2 nombre_de_usuario
Nota: El usuario debe existir en el sistema

Listo el servidor de correo Esta Funcionando

Nota: recomiendo el uso de thunderbird como cliente por su fácil configuración y usarlo como POP3 para un mejor uso claro