correo multidomino

26
Servidor de Correo Multidominio

Upload: guiro-lin

Post on 12-Jun-2015

624 views

Category:

Self Improvement


0 download

DESCRIPTION

por acá les dejo un how to para elaborar un correo multidominio... espero les guste...

TRANSCRIPT

Page 1: Correo multidomino

Servidor de Correo Multidominio

Page 2: Correo multidomino

SERVIDOR DE CORREO MULTIDOMINIO

Problemática:

Al analizar la demanda de sus servicios de correo electrónico, una empresa de hosting se da cuenta que posee recursos de sobra, y decide empezar a vender servicios de hosting de correo electrónico. Por tanto necesita configurar servicios de correo tolerantes a fallos, que sean capaces de responder a múltiples dominios y que autentique a sus clientes en una base de datos de credenciales (LDAP). El servicio de correo que se brinde dependerá de la clasificación de los clientes, permitiéndoles determinadas casillas de correo, espacio de almacenamiento, antispam y antivirus, correo electrónico seguro, y otros elementos, en función del tipo de contrato que se establezca.

Para solucionar esta problemática se ha realizado un servidor multidominio utilizando las siguientes herramientas:

LDAP como base de datos para almacenar la información de los diferentes dominios y usuarios que se tendrán.

POSTFIX como agente de transferencia de correo.

COURIER como servidor IMAP

Apache2

BIND para DNS

Squirrelmail como web mail

Spamassassin para controlar el spam

El siguiente es un esquema de red de nuestro servidor:

Page 3: Correo multidomino

HOW TO

Para comenzar nuestro servidor de correo debemos configurar nuestro DNS:

DNS

Domain Name System o DNS (sistema de nombres de dominio) es un sistema de nomenclatura jerárquica para computadoras, servicios o cualquier recurso conectado a Internet o a una red privada

Instalamos

#apt-get install bind9

De Nuevo vemos en que Puerto está escuchando

#netstat -tapn

Primero creamos la zona para el dominio que deseamos crear en el archivo #/etc/bind/named.conf.local

Y agregamos la zona con este formato:

zone "mailhosting.com.sv"{

type master;

file "/etc/bind/db.mailhosting";

};

Ahora creamos el archivo de la zona que lleva por nombre db.mailhosting, podemos copiar uno que ya existe en los archivos de bind de esta manera:

# cp /etc/bind/db.local /etc/bind/db.mailhosting

Y nos quedaria el archive modificado de la siguiente manera:

; archivo de configuracion de la zona

;

$TTL 604800

Page 4: Correo multidomino

@ IN SOA mailhosting.com.sv. dns.mailhosting.com.sv. (

2 ; Serial

604800 ; Refresh

86400 ; Retry

2419200 ; Expire

604800 ) ; Negative Cache TTL

;

@ IN NS mailhosting.com.sv.

@ IN A aqui va al ip

www IN CNAME mailhosting.com.sv.

@ IN MX 10 mailhosting.com.sv.

La configuración de este archivo depende de nuestra configuración y de nuestra ip que tenemos asignada.

Luego reiniciamos el servicio

#/etc/init.d/bind9 restart

Luego ponemos en el archivo #nano /etc/resolv.conf y agregamos la línea

nameserver “y la ip que se tiene asignada”

Para probar los archivos de la zona se utiliza el comando named-checkconf –z aquí nos muestra los errores que nuestro archivo tiene.

Para probar si nos resuelve el dns hacemos ping y el dominio y veremos si nos responde y pone la ip que tiene asignada.

El siguiente paso es crear las zonas inversas

Creamos una nueva zona en el archivo

#/etc/bind/named.conf.local

zone "1.168.192.in-addr.arpa"{

type master;

file "/etc/bind/db.192”;

Page 5: Correo multidomino

};

Ahora creamos el archivo para la zona inversa

#nano /etc/bind/db.192

;

; archive de la zona inversa

;

$TTL 604800

@ IN SOA mailhosting.com.sv. dns.mailhosting.com.sv. (

1 ; Serial

604800 ; Refresh

86400 ; Retry

2419200 ; Expire

604800 ) ; Negative Cache TTL

;

@ IN NS localhost.

2 IN PTR mailhosting.com.sv.

Reiniciamos de Nuevo el servicio

#/etc/init.d/bind restart

Y se pueden verificar los archivos de la zona de Nuevo y hacer ping con nuestra ip para ver si resuelve la zona inversa.

Page 6: Correo multidomino

POSTFIX

Postfix es un servidor de correo de software libre, un programa informático para el enrutamiento y envío de correo electrónico,

Configurando POSTFIX:

Instalar Postfix al instalarlo pedirá el nombre del dominio:

#apt-get install postfix

Page 7: Correo multidomino

Luego vemos si está escuchando #netstat –tapn | grep LISTEN

Agregamos un grupo para postfix

# addgroup -gid 1005 vmail (el numero de id de grupo es importante)

Ahora creamos la carpeta donde se irán a almacenar los archivos

#mkdir /home/vmail

Ahora creamos un usuario en el grupo vmail este usuario será el encargado de la entrega de los correos.

#useradd –d /home/vmail –g 1005 –u 1005 vmail

Le demos permisos

# chown -R vmail:vmail /home/vmail/

Ahora se configura en archivo principal de configuración de Postfix

# nano /etc/postfix/main.cf

Page 8: Correo multidomino

Se agregan las siguientes líneas al archivo de configuración para utilizar dominios virtuales:

virtual_mailbox_domain= /etc/postfix/vhost.txt

virtual_mailbox_base= /home/vmail

virtual_mailbox_maps= hash:/etc/postfix/maps.txt

virtual_uid_maps= static:1005

virtual_gid_maps= static:1005

Ahora vamos a crear los archivos vhost.txt y maps.txt

#nano /etc/postfix/vhost.txt (este archivo llevara en nombre del dominio)

#nano /etc/postfix/maps.txt (es importante que lleve la pleca al final la dirección)

[email protected] protocolos.com/juan/

Ahora vamos a hacer que el archivo maps.txt lo pueda leer postfix como hash

# postmap -f /etc/postfix/maps.txt

Ahora reiniciamos el servicio para que se lleven a acabo todos los cambios.

# /etc/init.d/postfix restart

Ahora ya podemos realizar una prueba para ver si está bien el archivo

# postmap -q [email protected] hash:/etc/postfix/maps.txt

Esto nos debe de devolver el mailbox de la siguiente manera: protocolos.com/juan/

Ahora vamos a probar mandar correos para que cree las carpetas correspondientes

# telnet localhost 25

Trying 127.0.0.1...

Connected to protocolos.mailhosting.com.sv.

Escape character is '^]'.

220 protocolos.mailhosting.com.sv ESMTP Postfix (Debian/GNU)

Page 9: Correo multidomino

mail [email protected]>

250 2.1.0 Ok

rcpt [email protected]>

250 2.1.5 Ok

DATA

354 End data with <CR><LF>.<CR><LF>

holaaa

.

250 2.0.0 Ok: queued as E0CE46FC77

quit

Para verificar que mando el correo se deben de ver si creo las carpetas del usuario en este caso [email protected] las carpetas están en /home/vmail/protocolos/juan

También se puede verificar en el log /var/log/mail.log

Page 10: Correo multidomino

LDAP

LDAP son las siglas de Lightweight Directory Access Protocol (Protocolo Ligero de Acceso a Directorios) que hacen referencia a un protocolo a nivel de aplicación el cual permite el acceso a un servicio de directorio ordenado y distribuido para buscar diversa información en un entorno de red. LDAP también es considerado una base de datos (aunque su sistema de almacenamiento puede ser diferente) a la que pueden realizarse consultas.

Antes de configurar ldap se debe cambiar el nombre del dominio (protocolos.mailhosting.com.sv)

Configurar ldap:

Instalar (slapd, ldap-utils)

Page 11: Correo multidomino

Pide la contraseña de administración de ldap

Para ver en qué puerto está escuchando ldap se pone

#netstat -tapn | grep LISTEN

Se detiene slapd

#/etc/init.d/slapd stop

Luego instalamos Courier-authlib-ldap para obtener el esquema

Luego de que se baje se descomprime gzip –d

#gzip –d /usr/share/doc/Courier-authlib-ldap/authldap.schema.gz

Al descomprimir copiamos el esquema a los esquemas de ldap

#cp /usr/share/doc/Courier-auth-ldap/authldap /etc/ldap/schema.

Ahora agregamos el esquema:

Antes de agregar el esquema tenemos que verificar que nuestro árbol si está bien con esta instrucción:

Page 12: Correo multidomino

# ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn=config"

Ahora hay que pasar el esquema a ldif pero antes vemos el esquema authldap.schema y vemos las dependencias del esquema al verlo vemos

que este depende de nis.schema el cual depende de cosine.schema.

En el esquema se deben de descomentar las siguientes líneas si no causara conflictos:

#attributetype ( 1.3.6.1.4.1.10018.1.1.14 NAME 'mailhost'

# DESC 'Host to which incoming POP/IMAP connections should be proxied'

# EQUALITY caseIgnoreIA5Match

# SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )

Ahora hay que crear un archivo que incluya todos los schemas debemos tener en cuenta las dependencias. El archivo se creara en /tmp y tener cualquier nombre por ejemplo /tmp/archivo.conf el archivo tendrá lo siguiente:

include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/authldap.schema

Ahora se crea el directorio /tmp/directorio

Luego haremos un slapdtest

#slaptest -f /tmp/archivo.conf -F /tmp/directorio

Luego lo copiamos a los esquemas de ldap de esta manera

Page 13: Correo multidomino

#cp/tmp/directorio/cn\=config/cn\=schema/cn\=\{4\}authldap.ldif /etc/ldap/slapd.d/cn\=config/cn\=schema/

Luego damos los permisos convenientes para ldap y reiniciamos ldap # chown openldap:openldap /etc/ldap/slapd.d/cn\=config/cn\=schema/cn\=\{4\}authldap.ldif # /etc/init.d/slapd restart

Para crear los usuarios creamos un archivo con lo siguiente:

//Este usuario lector solo se utilizara con permisos de lectura

dn: cn=lector,dc=mailhosting,dc=com,dc=sv

cn: lector

objectclass: person

objectclass: simpleSecurityObject

objectclass: top

sn: lector

userpassword: {MD5}3TgaBQ8Zh+e1x7cylv1JpQ==

dn: o=administradores,dc=mailhosting,dc=com,dc=sv

o: administradores

objectclass: organization

objectclass: top

dn: o=Dominios,dc=mailhosting,dc=com,dc=sv

o: Dominios

objectclass: organization

objectclass: top

Luego se agregan entidades en nuestro árbol en este caso se crearan dos una para dominios y una para administradores:

#ldapadd -D "cn=admin,dc=mailhosting,dc=com,dc=sv" -W -f Escritorio/base.ldif

Page 14: Correo multidomino

Ahora vamos a crear un usuario para cada parte de nuestro árbol para dominios vamos a crear protocolos.com , vamos a crear un usuario Beatriz para el dominios protocolos.com

dn: [email protected],o=administradores,dc=mailhosting,dc=com,dc=sv

cn: protocolos.com

objectclass: person

objectclass: shadowAccount

objectclass: top

shadowflag: 1

sn: protocolos.com

uid: [email protected]

userpassword: {MD5}gTaWsOiOoF1FOAwf11tAcA==

dn: dc=protocolos.com,o=Dominios,dc=mailhosting,dc=com,dc=sv

businesscategory: 3

dc: protocolos.com

l: activa

o: protocolos.com

objectclass: dcObject

objectclass: organization

objectclass: top

dn:[email protected],dc=protocolos.com,o=Dominios,dc=mailhosting,dc=com,dc=sv

cn: beatriz

disableshared: activa

homedirectory: /home/vmail

mail: [email protected]

mailbox: protocolos.com/beatriz/

objectclass: CourierMailAccount

Page 15: Correo multidomino

objectclass: person

objectclass: top

sn: nick

uid: [email protected]

userpassword: {MD5}MjJCCXNoV35vOqwDxtzttg==

Luego agregamos el archivo a ldap

#ldapadd -D "cn=admin,dc=mailhosting,dc=com,dc=sv" -W -f Escritorio/dominio.ldif

UNIR LDAP CON POSTFIX

Se instala el paquete postfix-ldap

#apt-get install postfix-ldap

Creamos una carpeta dentro de postfix para guardar los archivos de consulta a ldap.

#mkdir /etc/postfix/ldap

Ahora vamos a crear un archivo .cf para poner los dominios desde ldap.

#nano /etc/postfix/ldap/dominios.cf

server_host = 127.0.0.1

server_port = 389

version = 3

ldap_bind= yes

bind_dn = cn=lector,dc=mailhosting,dc=com,dc=sv

bind_pw = lector

search_base = o=Dominios,dc=mailhosting,dc=com,dc=sv

query_filter = (&(objectClass=dcObject)(l=activa)(dc=%s))

result_attribute = dc

Page 16: Correo multidomino

También se crea un archive .cf para los usuarios

#nano /etc/postfix/ldap/maps.cf

server_host = 127.0.0.1

server_port = 389

version = 3

ldap_bind= yes

bind_dn = cn=lector,dc=mailhosting,dc=com,dc=sv

bind_pw = lector

search_base = o=Dominios,dc=mailhosting,dc=com,dc=sv

query_filter = (&(objectClass=CourierMailAccount)(disableshared=activa)(mail=%s))

result_attribute = mailbox

Ahora hay que modificar el archivo main.cf de postfix para que trabaje con ldap:

# nano /etc/postfix/main.cf

virtual_mailbox_domains=ldap:/etc/postfix/ldap/dominios.cf

virtual_mailbox_maps= ldap:/etc/postfix/ldap/maps.cf

Otra vez para probar se puede mandar correo mediante telnet y ver el log.

Page 17: Correo multidomino

SERVIDOR IMAP

Instalar Courier

#apt-get install courier-imap Courier-pop

Luego hará una pregunta y se contesta que no:

Luego vemos en que puerto esta escuchanto

#netstat –tapn

Ahora nos vamos al archivo de configuración de courier

# nano /etc/courier/authdaemonrc

Y cambiaremos esta línea

authmodulelist="authpam"

por esta

authmodulelist="authpam authldap" para que este ligado con ldap pero si existe algún problema esto se puede modificar, el DEBUG_LOGIN=1 para ver los errores.

Page 18: Correo multidomino

Luego vamos al archivo de configuración

# nano /etc/courier/authldaprc

LDAP_URI ldap://localhost (aquí se pone la dirección de nuestro ldap en nuestro caso localhost)

LDAP_BASEDN o=Dominios,dc=mailhosting,dc=com,dc=sv (en esta se modifica la base donde se ira a buscar)

LDAP_BINDPW sucontraseña (y aquí se pone la contraseña para ldap)

LDAP_MAIL mail (esta es la respuesta que queremos en nuestro caso en mail )

Descomentamos estas línea:

# LDAP_FILTER (objectClass=CourierMailAccount)

# LDAP_GLOB_UID vmail

# LDAP_GLOB_GID vmail

# LDAP_MAILDIRQUOTA quota

Y colocamos el query

LDAP_FILTER (&(objectClass=CourierMailAccount)(disableshared=activa))

Comentar esta linea:

#LDAP_DEFAULTDELIVERY defaultDelivery

Ahora se reinicia

# /etc/init.d/Courier-authdaemond restart

Ahora se puede probar:

Page 19: Correo multidomino

# telnet localhost 110

Trying 127.0.0.1...

Connected to protocolos.mailhosting.com.sv.

Escape character is '^]'.

+OK Hello there.

user [email protected]

+OK Password required.

pass beatriz

+OK logged in.

Page 20: Correo multidomino

HTTP

Se instala:

#apt-get install apache2-mpm-prefork

ahora vamos a crear sitios virtuales los cuales nos serviran para el ordenamiento de nuestor servidor.

Copiamos el sitio por default que tiene apache para crear nuestro sitios todo esto lo hacemos en sites-available

# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/malihosting

Ahora modificamos el archivo

# /etc/apache2/sites-available/mailhosting

Se deja el archivo de la siguiente manera

ServerAdmin webmaster@localhost

ServerName www.mailhosting.com.sv

ServerAlias mailhosting.com.sv

DocumentRoot /var/www/mailhosting

<Directory />

Options FollowSymLinks

AllowOverride None

</Directory>

<Directory /var/www/mailhosting/>

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

allow from all

Page 21: Correo multidomino

</Directory>

Creamos el archivo donde ira a buscar nuestra pagina a mostrar

#mkdir /var/www/mailhosting

Habilitamos el dominio virtual

# a2ensite mailhosting

Ahora recargaremos el servidor apache

# /etc/init.d/apache2 reload

Copiamos una pagina inicial para que aparezca en nuestro dominio

#cp /var/www/index.html /var/www/mailhosting/

Page 22: Correo multidomino

WEB MAIL

Un webmail es un cliente de correo electrónico, que provee una interfaz web por la que acceder al correo electrónico.

Es esta ocasión utilizamos el web mail Squirrelmail

Instalamos

#apt-get install squirrelmail

Luego lo configuramos

# squirrelmail-configure:

Aparece el siguiente menú:

Page 23: Correo multidomino

Luego aparece esta pantalla y elegimos Courier:

Page 24: Correo multidomino

Ahora necesitamos crear un link para que se pueda entrar a squirrelmail

Entramos a la carpeta del dominio #cd /var/www/mailhosting

Y creamos ahí el link #ln -s /usr/share/squirrelmail/ correo

Ya con esto podemos entrar a un navegador y entrar al correo que hemos creado.

Configuración para reconocer Spam

Instalar el paquete de spamassassin

#apt-get install spamassassin spamc

vamos a crear un usuario específico y un grupo de spamassassin

#groupadd -g 5001 spamd #useradd -u 5001 -g spamd -s /sbin/nologin -d /var/lib/spamassassin spamd #mkdir /var/lib/spamassassin #chown spamd:spamd /var/lib/spamassassin

Ahora, tenemos que cambiar algunos parámetros en / etc / default / spamassassin y debe de quedar de la siguiente manera:

ENABLED=1

SAHOME=”/var/lib/spamassassin/”

OPTIONS=”—creat-prefs –max-children 5 –username spamd –helper-home-

Dir ${SAHOME} –s ${SAHOME}spamd.log”

PIDFILE=”${SAHOME}spamd.pid”

Page 25: Correo multidomino

vamos a editar el archivo / etc / spamassassin / local.cf y hacer que se parezca a lo siguiente:

#Enable the Bayes system

Use_bayes 1

Use_bayes_rules 1

#Eneble Bayes auto-learning

Bayes_auto_learn 1

#Enable or disable network checks

Skip_rb1_checks 0

Use_razor2 0

Use_dcc 0

Use_pyzor 0

Iniciamos el servicio

#/etc/init.d/spamassassin start

Ahora, tenemos que decirle a postfix para va a usar spamassassin. En nuestro caso,spamassassin va a ser invocado una vez postfix ha terminado con el correo electrónico. para decirle a postfix que va a usar spamassassin, vamos a editar el archivo / etc / postfix /master.cf y cambiar la línea:

Smtp inet n - - - - smtp

Y que aparezca esto:

Smtp inet n - - - - smtp -o content_filter=spamassassin

Y agregamos las siguientes lineas

Page 26: Correo multidomino

Spamassassin unix - n n - - pipe

User=spamd argv=/usr/bin/spamc –f –e

/usr/sbin/sendmail –io –f $(sender) $(recipient)

Y al final reiniciamos postfix

#/etc/init.d/postfix reload