You are on page 1of 68

Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

¡Regístrate ya! | Ingresar

Red social de Ubuntu en español UbuntuHispano Buscar

Inicio Usuarios Wiki Videos Foro

Envíos recientes Usuarios Mi cuenta Información Contacto

Principal » Wiki » Redes

Instalar un Servidor de Correo Seguro en Ubuntu


Ver Comentarios

ES IMPORTANTE ACLARAR QUE CON LO QUE SE LLEVA EN ESTA GUÍA EL USUARIO ES CAPAZ DE ENVIAR CORREO EN SU RED
LOCAL, PERO RECIBIR CORREO DESDE CUALQUIER DOMINIO (ES DECIR, @gmail.com o @hotmail.com POR DECIR ALGO). LA
CLAVE PARA ENVIAR CORREOS AL EXTERIOR ES CONFIGURAR A POSTFIX CON UN CERTIFICADO QUE HAYA SIDO VALIDADO POR
UNA ENTIDAD CERTIFICADORA COMO NETWORKSOLUTIONS AUNQUE TAMBIÉN ES POSIBLE OBTENER CERTIFICADOS GRATUITOS
COMO SE DESCRIBE EN http://koti.kapsi.fi/ptk/postfix/postfix-tls-cacert.shtml
INSTALACIÓN DEL SERVIDOR
CONFIGURACIÓN DE LA RED
INSTALACIÓN DE SOFTWARE NECESARIO PARA EL SERVIDOR DE CORREO
CONFIGURACIÓN DE LA BASE DE DATOS
CONFIGURACIÓN DE DOVECOT
SMTP AUTENTIFICADO
GESTIONANDO TUS CUENTAS DE CORREO
SERVIDOR DE NOMBRES DE DOMINIO (DNS)
INSTALACIÓN DEL WEBMAIL

INSTALACIÓN DEL SERVIDOR


¿Cuál es el mejor sistema operativo para servidores?.
Existen un amplia gama de opciones algunas con costo y otras gratuitas sin duda por excelencia entre los mejores sistemas operativos para servidores son:
UNIX (Solaris)
BSD (FreeBSD)
GNU/Linux (RHEL)
Entonces si tenemos excelentes opciones como las mencionadas u otras como podrían ser OpenIndiana, OpenBSD, NetBSD, Centos, Debian. Por qué
elegimos Ubuntu Server.
Desde mi muy personal punto de vista para mi la gestión de paquetes por dpkg (aptitude) es magnífica, a diferencia de rpm (yum). Respecto a la facilidad, a la
resolución de dependencias y a la velocidad de instalación.
Entonces, ¿Por qué no elegir Debian que ha sido una de las distribuciones que vio nacer a tantas más a la par de Slackware otra de las distribuciones más
viejas que actualmente siguen en desarrollo?. Debian libera sus versiones estables en un tiempo más prolongado por lo que para tener las versiones de los
paquetes más recientes tenemos que tener nuestros repositorios con la versión testing y puede provoca errores en las dependencias.
Por otra parte Ubuntu libera una versión estable cada seis meses con sus repositorios actualizados, tienen el respaldo para el soporte técnico de Canonical y
una enorme comunidad que sigue en crecimiento, que les puede servir de mucho apoyo. Sumado a la comunidad Debian que en conocimientos técnicos es
maravillosa y ya que Ubuntu se basa en Debian la documentación es complementaria.
Con esta breve introducción iniciamos con la configuración de nuestro servidor.
Primero tenemos que instalar el sistema operativo y podemos encontrar las imagenes iso AQUÍ la última versión en este momento es "Ubuntu 10.10 (Maverick
Meerkat)" en ese link pueden encontrar para procesadores de 64 bits o 32 bits.
En este caso seleccionaré el siguiente (32 bits):
ubuntu-10.10-server-i386.iso
Una vez que ya descargamos el archivo de formato ".iso" podemos quemarlo con un software gratuito y excelente para los usuarios de güin2 llamado ImgBurn
que lo encuentran aquí, en su pagina oficial o instalarlo por medio de unetbootin en una USB.
A continuación arrancamos con el CD dentro de nuestra unidad óptica y veremos la siguiente pantalla.

1 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

seleccionamos el idioma español

entramos en la opción "Instalar Ubuntu Server"

2 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

elegimos nuestro país "México"

seleccionamos sí para configurar nuestro teclado

3 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

buscamos en nuestro teclado los símbolos y letras que nos piden (+, y, u, r, etc)

ahora buscamos si el símbolo "Ç" se encuentra en nuestro teclado y si está seleccionamos sí.

4 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

oprimimos la tecla

con estos pasos nos configuró nuestro teclado y encontró que el idioma es "es".

5 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

6 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

Si tenemos conectado nuestro modem a la computadora por cable ethernet entonces la configuración se hará con el protocolo DHCP para obtener los
parámetros de configuración de red automáticamente.

7 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

Seleccionamos el nombre de la máquina (por defecto es ubuntu), este parámetro puede ser modificado por motivos de seguridad para no dar información acerca
de nuestro sistema operativo, poniendo un nombre que no de información.

8 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

en este caso la zona horaria es de acuerdo a la ubicación ciudad de méxico

9 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

ahora toca la parte del particionado y seleccionamos particionado "manual"

aquí en el ejemplo el disco duro virtual tiene un tamaño de 10 GB pero no importa más o menos indicaremos cuales son los tamaños de las particiones
necesarias.

10 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

elegimos la opción "sí"

seleccionamos el espacio espacio libre para nuestra tabla de particiones

11 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

creamos una partición nueva

ponemos el tamaño de la partición en este ejemplo que para nada es el recomendable se seleccionaron dos particiones una / (raíz) y lo demás para swap (área
de intercambio).
Pero las particiones recomendable con los respectivos tamaños son las siguientes:

12 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

Imagen tomada de "Implementación de Servidores con GNU/Linux"

seleccionamos la partición primaria

13 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

y ahora queremos que la partición este al principio

El sistema de ficheros para todas nuestras particiones excepto para la partición swap es "EXT4".
Como está indicado en la imagen anterior las particiones recomendadas son:
/boot con sistema de ficheros EXT4 y tipo de partición primaria (100MB)
/ con sistema de ficheros EXT4 y tipo de partición primaria (1024MB)
swap con sistema de ficheros "área de intercambio" (doble de la memoria ram o en algunos casos no es necesaria cuando la potencia del ordenador es muy
grande)
/tmp con sistema de ficheros EXT4 y tipo de partición lógica (4.2GB)
/usr con sistema de ficheros EXT4 y tipo de partición lógica (8 GB)
/var con sistema de ficheros EXT4 y tipo de partición lógica (mitad del disco duro restante)
/home con sistema de ficheros EXT4 y tipo de partición lógica (la otra mitad del disco duro restante)

14 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

seleccionamos "se ha terminado de definir la partición"

creamos las siguientes particiones

15 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

16 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

17 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

18 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

terminamos de definir las particiones

aceptamos con "sí" para que se escriban los cambios en el disco

19 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

nombre de nuestro nuevo usuario (nombre y apellido o solo nombre)

nombre corto del usuario de la cuenta

20 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

elegimos una contraseña y la repetimos para comprobarla

21 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

seleccionamos "no" en el cifrado de la carpeta personal

lo dejamos en blanco y seleccionamos continuar

22 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

en esta parte difieren en cuál es la mejor opción para administrar las actualizaciones de seguridad y los parches por instalar. Es recomendable si es minucioso
que elija la opción "sin actualizaciones automáticas" pero es posible que complemente la opción de "instalar actualizaciones de seguridad automáticamente" y
revisando en paginas como debian-security-announce, y algunas más para mantener su sistema seguro.
Manual de Seguridad de Debian

En este punto el único paquete que instalaremos es "OpenSSH server" y lo seleccionamos con la tecla space.

23 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

después de darle en continuar y que se instalen lo paquetes veremos la siguiente pantalla

ponemos "sí" para instalar GRUB

24 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

y con esto terminamos con la instalación del servidor, ahora vamos a instalar las aplicaciones que son necesarias para tener el servidor de correo.

CONFIGURACIÓN DE LA RED
Una vez que el servidor ya está instalado entramos a nuestra pantalla principal de Ubuntu Server que notaremos no tienen interfaz gráfica (todo a base de linea
de comandos).
Nos logueamos como superusuario

sudo su

Creamos una contraseña para el usuario root

sudo passwd root


Introduzca la nueva contraseña de UNIX:
Vuelva a escribir la nueva contraseña de UNIX:

Instalamos OpenSSH y arreglamos el comportamiento extraño de vi (para los que lo utilizarán como editor de textos)

aptitude install ssh openssh-server


aptitude install vim-nox

La finalidad de instalar un servidor ssh es que podamos ingresar a nuestro servidor en el momento que deseemos y desde cualquier lugar que nos encontremos.
Hay clientes ssh como putty que se pueden instalar en nuestro celular y podemos entrar al servidor para modificar alguna de las configuraciones o simplemente
administrarlo desde la comodidad de nuestra cama.
AQUÍ podemos encontrar una lista comparativa de clientes ssh, así como bajo que sistema operativo funcionan.
Algunos clientes que recomiendo para guin2 son putty o Tunnelier (Bitvise), son gratuitos y excelentes opciones.

SSH (Secure SHell, en español: intérprete de órdenes segura) es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder a máquinas
remotas a través de una red. Permite manejar por completo la computadora mediante un intérprete de comandos, y también puede redirigir el tráfico de X para
poder ejecutar programas gráficos si tenemos un Servidor X (en sistemas Unix y Windows) corriendo.
Además de la conexión a otros dispositivos, SSH nos permite copiar datos de forma segura (tanto ficheros sueltos como simular sesiones FTP cifradas),
gestionar claves RSA para no escribir claves al conectar a los dispositivos y pasar los datos de cualquier otra aplicación por un canal seguro tunelizado mediante
SSH.
Acerca de OpenSSH.
OpenSSH (Open Secure Shell) es una alternativa de código abierto, con licencia BSD, hacia la implementación propietaria y de código cerrado SSH creada por
Tatu Ylönen. OpenSSH es un proyecto creado por el equipo de desarrollo de OpenBSD y actualmente dirigido por Theo de Raadt. Se considera es más segura
que su contraparte propietaria debido a la constante auditoría que se realiza sobre el código fuente por parte de una gran comunidad de desarrolladores, una
ventaja que brinda al tratarse de un proyecto de fuente abierta.
Para instalar OpenSSH se ejecuta el siguiente comando:

25 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

sudo aptitude install ssh openssh-server

Una forma de elevar considerablemente la seguridad al servicio de SSH, es cambiar el número de puerto utilizado por el servicio, por otro que solo conozca el
administrador del sistema. A este tipo de técnicas se les conoce como Seguridad por Oscuridad. La mayoría de los delincuentes informáticos utiliza guiones que
buscan servidores que respondan a peticiones a través del puerto 22. Cambiar de puerto el servicio de SSH disminuye considerablemente la posibilidad de una
intrusión a través de este servicio.

Port 22

SSH trabaja a través del puerto 22 por TCP. Puede elegirse cualquier otro puerto entre el 1025 y 65535. ejemplo:
Entramos al archivo de configuración de OpenSSH

sudo nano /etc/ssh/sshd_config

Y en el apartado de port seleccionamos el puerto en este caso como ejemplo se seleccionó el puerto 52341

Port 52341

Reiniciamos el servicio

sudo /etc/init.d/ssh restart

Configuración de la LAN para tener un IP fija (LOCAL)

nano /etc/network/interfaces

# This file describes the network interfaces available on your system


# and how to activate them. For more information, see interfaces(5).

# The loopback network interface


auto lo
iface lo inet loopback

# The primary network interface


auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.254

Los valores anteriores tienen que ser modificados dependiendo de nuestra red, para obtener la información de acuerdo a tu red ejecutar los siguientes
comandos.

ifconfig

- "Direc. inet" es lo mismo que "address" en /etc/network/interfaces


- "Másc" es lo mismo que "netmask" en /etc/network/interfaces
- network tiene el siguiente formato 192.168.x.0. Lo determinas con tu address, si es 192.168.0.100 entonces tu network es 192.168.0.0, otro ejemplo si tu ip es
192.168.1.75 entonces tu network es 192.168.1.0
- "Difus" es lo mismo que "broadcast" en /etc/network/interfaces
Falta el último parámetro (gateway) eso lo determinas con el siguiente comando:

ip neigh

la ip que te sale en la línea es la de tu puerta de enlace o gateway en /etc/network/interfaces.


Guardamos con Ctrl mas la letra O y cerramos con Ctrl mas la letra X.
Reiniciamos la interfaz de red

/etc/init.d/networking restart

CONFIGURACIÓN DEL FIREWALL PARA EL SERVICIO SSH


Instalamos Shorewall

sudo aptitude install shorewall-common shorewall-perl shorewall-doc

copiamos el archivo de configuración

cp /usr/share/doc/shorewall/default-config/interfaces /etc/shorewall/

lo editamos

nano /etc/shorewall/interfaces

#
# Shorewall version 4 - Interfaces File

26 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

#
# For information about entries in this file, type "man shorewall-interfaces"
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-interfaces.html
#
##########... INTERFACE BROADCAST OPTIONS
net eth0 detect dhcp,tcpflags,logmartians,nosmurfs

cp /usr/share/doc/shorewall/default-config/zones /etc/shorewall/

lo editamos

nano /etc/shorewall/zones

#
# Shorewall version 4 - Zones File
#
# For information about this file, type "man shorewall-zones"
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-zones.html
#
###############... TYPE OPTIONS IN OUT
# OPTIONS OPTIONS
fw firewall
loc ipv4
net ipv4

copiamos otro de los archivos de configuración

cp /usr/share/doc/shorewall/default-config/hosts /etc/shorewall/

lo editamos

nano /etc/shorewall/hosts

#
# Shorewall version 4 - Hosts file
#
# For information about entries in this file, type "man shorewall-hosts"
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-hosts.html
#
###############... HOST(S) OPTIONS
loc eth0:192.168.1.0/24

copiamos

cp /usr/share/doc/shorewall/default-config/policy /etc/shorewall/

nano /etc/shorewall/policy

lo editamos

#
# Shorewall version 4 - Policy File
#
# For information about entries in this file, type "man shorewall-policy"
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-policy.html
#
##############... DEST POLICY LOG LIMIT: CONNLIMIT:
# LEVEL BURST MASK
FW net ACCEPT
net FW DROP info
net all DROP info
# The FOLLOWING POLICY MUST BE LAST
all all REJECT info

copiamos

cp /usr/share/doc/shorewall/default-config/routestopped /etc/shorewall/

editamos

nano /etc/shorewall/routestopped

27 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

#
# Shorewall version 4 - Routestopped File
#
# For information about entries in this file, type "man shorewall-routestopped"
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-routestopped.html
#
# See http://shorewall.net/starting_and_stopping_shorewall.htm for additional
# information.
#
###############################################################################
#INTERFACE HOST(S) OPTIONS PROTO DEST SOURCE
# PORT(S) PORT(S)
eth0 0.0.0.0 routeback

copiamos

cp /usr/share/doc/shorewall/default-config/rules /etc/shorewall/

editamos

nano /etc/shorewall/rules

#
# Shorewall version 4 - Rules File
#
# For information on the settings in this file, type "man shorewall-rules"
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-rules.html
#
###############################################################################$
#ACTION SOURCE DEST PROTO DEST SOURCE $
# PORT PORT(S) $
#SECTION ESTABLISHED
#SECTION RELATED
SECTION NEW
ACCEPT net fw tcp 52341
ACCEPT loc fw tcp 52341

ejecutamos

shorewall check

y lo reiniciamos

/etc/init.d/shorewall restart

lo agregamos al arranque editando:

nano /etc/default/shorewall

startup=1

Configuración de Modem/Router para permitir el acceso por el puerto 52341 para el servicio SSH

28 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

Para entrar a nuestra configuración del Modem (desde alguna otra computadora que no sea donde tenemos instalado Ubuntu Server porque no tiene interfaz
gráfica y que se encuentre conectada a nuestra red interna (LAN)) introducimos la IP que nos aparece con el comando.

ip neigh

y el resultado del comando es

192.168.1.254 dev wlan0 lladdr 00:26:44:0d:ea:3e REACHABLE

Abrimos nuestro navegador WEB (firefox) y ponemos la IP 192.168.1.254 para este caso depende del comando la IP que pondrán en su navegador.

29 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

nos vamos al apartado Herramientas que se encuentra del lado izquierdo

ahora a la parte de "Compartición de Juegos & Aplicaciones"

30 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

vamos a "Crear un nuevo juego o aplicación"

aquí ponemos el nombre del puerto que queremos abrir en nuestro modem puede ser (Servicio SSH o el número del puerto PUERTO52341).

31 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

seleccionamos entrada manual de puertos y después en siguiente

en el intervalo de puertos ponemos 52341-52341 porque solo queremos abrir un puerto

32 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

luego vamos a la parte de "Asignar un juego o aplicación a un dispositivo de red local"

en la parte de "Juego o Aplicación" buscamos "PUERTO52341" y en dispositivo buscamos el "nombre de la máquina" que elegimos para nuestro equipo durante
la instalación de nuestro sistema operativo para servidor "Ubuntu Server".

33 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

y ahora damos click en "AGREGAR"

una vez que ya abrimos el puerto en nuestro servidor podemos entrar desde cualquier parte del mundo (siempre y cuando sepamos la ip externa de nuestro
servidor o nuestro dominio) por ejemplo en este momento yo estoy en Ubuntu Desktop como sistema operativo de mi computadora de escritorio pero dentro de
mi LAN (red interna) y si quiero entrar a mi servidor pongo lo siguiente en una terminal.
NOTA IMPORTANTE: POR FAVOR CAMBIEN EL PUERTO PARA SU SERVIDOR SSH QUE NO SEA EL MISMO QUE EL DE ESTA GUÍA "52341", POR

34 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

MOTIVOS DE SEGURIDAD. ARRIBA VIENEN EL INTERVALO PARA SELECCIONAR EL PUERTO QUE GUSTEN.

ssh -p 52341 192.168.1.100

después nos pide nuestra contraseña, y con esto ya entramos a nuestro servidor desde nuestra computadora de escritorio.

antes de terminar con esta parte del servidor SSH quiero comentarles que también pueden acceder a los archivos de su servidor si van en la barra de
herramientas de "ubuntu desktop" a "Lugares" y después "Conectar con el servidor..." nos abre la siguiente ventana

35 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

ponemos la IP del servidor (interna, porque aún no hemos configurado nuestra ip externa para que sea fija o tener un dominio) por lo que por el momento si
salimos de nuestra red local no podríamos accesar. También introducimos el puerto por el que queremos entrar

ahora nos pide el usuario y la contraseña a la que queremos ingresar


y por último al dar click en conectar veremos la siguiente pantalla

36 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

así que ya podemos acceder a nuestros archivos sin ningún problema

CONFIGURACIÓN DE IP PÚBLICA
Una vez que ya tenemos configurada nuestra lan para que tenga una ip fija, ahora vamos a configurar una ip pública como fija utilizando (no-ip).
Primero tenemos que registrarnos en la pagina:

http://www.no-ip.com/newUser.php

37 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

Una vez que ya confirmamos nuestro registro a través del correo que proporcionamos. Nos logueamos en la siguiente pagina:

http://www.no-ip.com/login/

38 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

ya dentro vamos a ver la siguiente pagina en la cuál vamos a darle un click al icono encerrado en color rojo

39 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

En el apartado de Hostname information nos encontramos con opciones por llenar:


Hostname: Aquí deben poner la pagina que quieran para su servidor (yo como ejemplo pondré server1)
El dominio: Como va a ser gratuito nos vamos al apartado de No-IP Free Domains que está adelante de hostname y elegimos el que queramos (yo elegiré para
lo que sigue en la configuración el dominio "no-ip.org".
Por lo que quedaría así server1.no-ip.org y es el que utilizaré de aquí en adelante.
Y por último seleccionamos la opción "create host"

40 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

Bueno eso es todo lo que tenemos que hacer en la pagina de no-ip ahora vamos a configurar no-ip en ubuntu.
Ya desde una terminal ejecutamos los siguientes comandos:

sudo apt-get install no-ip

Durante la instalación veremos una pantalla como esta …

Aquí tenemos que introducir nuestra cuenta de correo de usuario en no-ip.com …

41 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

Seguidamente introducimos la contraseña …

Introducimos en minutos con que frecuencia queremos que nuestro servidor envíe nuestra IP hacia no-ip.com ( 30 es un buen numero ) …

Este apartado lo podemos dejar en blanco sin problemas ya que se supone que solo tenemos esta cuenta para solo nuestro servidor …

Aquí debemos introducir el nombre con el que está identificada nuestra tarjeta de red. ( Esto podemos verlo con el comando ifconfig ) …

42 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

para esta ultima opción seleccionamos No y listo.

Configuración de la RED
HOSTNAME
Un FQDN (Fully Qualified Domain Name) es un nombre que incluye el nombre de la computadora y el nombre de dominio asociado a ese equipo. Por ejemplo,
dada la computadora llamada «serv1» y el nombre de dominio «bar.com», el FQDN será «serv1.bar.com», a su vez un FQDN asociado a serv1 podría ser
«post.serv1.bar.com».
La longitud máxima permitida para un FQDN es 255 caracteres (bytes), con una restricción adicional a 63 bytes por etiqueta dentro de un nombre de dominio.
Las etiquetas FQDN se restringen a un juego de caracteres limitado: letras A-Z de ASCII, los dígitos, y el carácter «-» , y no distinguen mayúsculas de
minúsculas.
La sintaxis de los nombres de dominio se discute en varios RFCs -- RFC 1035, RFC 1123 y RFC 2181. En 2004 se añadieron algunos caracteres como «ä, ö, ü,
é, à, è...» como caracteres permitidos para las etiquetas.
Ahora entramos a /etc/hosts

nano /etc/hosts

y lo modificamos de la siguiente manera (recuerden que aquí pondrán el host que crearon en la pagina de no-ip)

127.0.0.1 localhost.localdomain localhost


192.168.0.100 server1.no-ip.org server1

# The following lines are desirable for IPv6 capable hosts


::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

ahora ejecutamos

echo server1.no-ip.org > /etc/hostname


/etc/init.d/hostname restart

para ver el resultado ejecutamos

hostname

Editamos /etc/resolv.conf

nano /etc/resolv.conf

y enseguida modificamos de la siguiente manera:

domain lan
search lan
nameserver aquí_va_la_ip_del_gateway

Fuentes: Linux para todos, The perfect Server (Ubuntu 10.10) y SSH/OpenSSH Configuring

INSTALACIÓN DE SOFTWARE NECESARIO PARA EL SERVIDOR DE CORREO


Ya hemos instalado el sistema operativo y configurado la red, ahora vamos a continuar instalando algunos paquetes necesarios.
Antes vamos a cambiar de Shell por defecto (seleccionando "no" en instalar dash en /bin/sh?)

dpkg-reconfigure dash

Install dash as /bin/sh? <--No


Inhabilitamos AppArmor

43 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

/etc/init.d/apparmor stop
update-rc.d -f apparmor remove
aptitude remove apparmor apparmor-utils

Instalamos algunos paquetes que nos pueden servir de mucho

aptitude install binutils cpp fetchmail flex gcc libarchive-zip-perl libc6-dev libcompress-zlib-perl libdb4.6-dev
libpcre3 libpopt-dev lynx m4 make ncftp nmap openssl perl perl-modules unzip zip zlib1g-dev autoconf automake1.9
libtool bison autotools-dev g++ build-essential

Ahora vamos a instalar MySQL


nos pedirá ingresar una contraseña de root por favor ingresen una buena contraseña

aptitude install mysql-server mysql-client libmysqlclient16-dev

New password for the MySQL "root" user: <-- yourrootsqlpassword


Repeat password for the MySQL "root" user: <-- yourrootsqlpassword
Editamos /etc/mysql/my.cnf y comentamos la línea bind-address = 127.0.0.1 añadiendo el símbolo "#" al principio

nano /etc/mysql/my.cnf

[...]
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1
[...]

Reiniciamos MySQL

/etc/init.d/mysql restart

vemos si ya está habilitado

netstat -tap | grep mysql

se tendría que ver así:


root@server1:~# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 6796/mysqld
root@server1:~#
Instalamos Postfix con SMTP-AUTH y TLS

aptitude install postfix libsasl2-2 sasl2-bin libsasl2-modules procmail

Respondemos a dos preguntas que nos harán de la siguiente forma


General type of mail configuration: <-- Internet Site
System mail name: <-- server1.no-ip.org
ahora ejecutamos

dpkg-reconfigure postfix

y respondemos de la siguiente forma

General type of mail configuration: <-- Internet Site


System mail name: <-- server1.no-ip.org
Root and postmaster mail recipient: <-- lo_dejamos_en_blanco
Other destinations to accept mail for (blank for none): <-- server1.no-ip.org, localhost.no-ip.org, localhost.localdomain, localhost
Force synchronous updates on mail queue? <-- No
Local networks: <-- 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
Use procmail for local delivery? <-- Yes
Mailbox size limit (bytes): <-- 0
Local address extension character: <-- +
Internet protocols to use: <-- all
Ejecutamos los siguientes comandos (dar doble click sobre cada línea para no equivocarse al copiarlas)

postconf -e 'smtpd_sasl_local_domain ='


postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'smtpd_sasl_security_options = noanonymous'
postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_sasl_authenticated_header = yes'
postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
postconf -e 'inet_interfaces = all'
echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf
echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf

44 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

Creamos los certificados TLS:


En todos los casos hay que poner una contraseña para cada uno de los certificados smtpd.key, smtpd.crs

mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024

296 semi-random bytes loaded


Generating RSA private key, 1024 bit long modulus
................++++++
...................................++++++
e is 65537 (0x10001)
Enter pass phrase for smtpd.key:<--------Aquí ponemos una contraseña
Verifying - Enter pass phrase for smtpd.key:<--------Verificamos la contraseña

chmod 600 smtpd.key


openssl req -new -key smtpd.key -out smtpd.csr

Enter pass phrase for smtpd.key: <----AQUÍ_UNA_CONTRASEÑA


You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:MX
State or Province Name (full name) [Some-State]:DISTRITO FEDERAL
Locality Name (eg, city) []:MEXICO
Organization Name (eg, company) [Internet Widgits Pty Ltd]:<--- ENTER
Organizational Unit Name (eg, section) []:<--- ENTER
Common Name (eg, YOUR name) []:<--- server1.no-ip.org (IMPORTANTÍSIMO)
Email Address []:<--- ENTER
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:<--- ENTER
An optional company name []:<--- ENTER
Y con los demás también hacemos lo mismo

openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt

openssl rsa -in smtpd.key -out smtpd.key.unencrypted

mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

Ahora configuramos Postfix para TLS

postconf -e 'myhostname = server1.no-ip.org'

postconf -e 'smtpd_tls_auth_only = no'


postconf -e 'smtp_use_tls = yes'
postconf -e 'smtpd_use_tls = yes'
postconf -e 'smtp_tls_note_starttls_offer = yes'
postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key'
postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt'
postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem'
postconf -e 'smtpd_tls_loglevel = 1'
postconf -e 'smtpd_tls_received_header = yes'
postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
postconf -e 'tls_random_source = dev:/dev/urandom'

ahora vemos el contenido de nuestro /etc/postfix/main.cf

cat /etc/postfix/main.cf

# See /usr/share/postfix/main.cf.dist for a commented, more complete version

# Debian specific: Specifying a file name will cause the first


# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)


biff = no

# appending .domain is the MUA's job.


append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings


#delay_warning_time = 4h

45 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

readme_directory = no

# TLS parameters
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for


# information on enabling SSL in the smtp client.

myhostname = server1.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = server1.example.com, localhost.example.com, localhost.localdomain, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
smtpd_sasl_local_domain =
creamos un directorio

mkdir -p /var/spool/postfix/var/run/saslauthd

editamos /etc/default/saslauthd. Cambiamos START a yes y cambiamos la línea OPTIONS="-c -m /var/run/saslauthd" a OPTIONS="-c -m /var/spool/postfix
/var/run/saslauthd -r":

nano /etc/default/saslauthd

#
# Settings for saslauthd daemon
# Please read /usr/share/doc/sasl2-bin/README.Debian for details.
#

# Should saslauthd run automatically on startup? (default: no)


START=yes

# Description of this saslauthd instance. Recommended.


# (suggestion: SASL Authentication Daemon)
DESC="SASL Authentication Daemon"

# Short name of this saslauthd instance. Strongly recommended.


# (suggestion: saslauthd)
NAME="saslauthd"

# Which authentication mechanisms should saslauthd use? (default: pam)


#
# Available options in this Debian package:
# getpwent -- use the getpwent() library function
# kerberos5 -- use Kerberos 5
# pam -- use PAM
# rimap -- use a remote IMAP server
# shadow -- use the local shadow password file
# sasldb -- use the local sasldb database file
# ldap -- use LDAP (configuration is in /etc/saslauthd.conf)
#
# Only one option may be used at a time. See the saslauthd man page
# for more information.
#
# Example: MECHANISMS="pam"
MECHANISMS="pam"

# Additional options for this mechanism. (default: none)


# See the saslauthd man page for information about mech-specific options.
MECH_OPTIONS=""

# How many saslauthd processes should we run? (default: 5)


# A value of 0 will fork a new process for each connection.
THREADS=5

# Other options (default: -c -m /var/run/saslauthd)


# Note: You MUST specify the -m option or saslauthd won't run!
#
# WARNING: DO NOT SPECIFY THE -d OPTION.
# The -d option will cause saslauthd to run in the foreground instead of as
# a daemon. This will PREVENT YOUR SYSTEM FROM BOOTING PROPERLY. If you wish
# to run saslauthd in debug mode, please run it by hand to be safe.

46 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

#
# See /usr/share/doc/sasl2-bin/README.Debian for Debian-specific information.
# See the saslauthd man page and the output of 'saslauthd -h' for general
# information about these options.
#
# Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd"
#OPTIONS="-c -m /var/run/saslauthd"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"

Añadimos el usuario postfix al grupo sasl

adduser postfix sasl

Reiniciamos Postfix e iniciamos saslauthd:

/etc/init.d/postfix restart
/etc/init.d/saslauthd start

Ahora necesitamos ver que SMTP-AUTH y TLS trabajan apropiadamente

telnet localhost 25

Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 server1.no-ip.org ESMTP Postfix (Ubuntu)
cuando veamos lo anterior ya estamos dentro de telnet ahora ejecutamos

ehlo localhost

y tenemos que ver las líneas


250-STARTTLS
y
250-AUTH PLAIN LOGIN
para salir ejecutamos

quit

en resumen veríamos lo siguiente:

root@server1:/etc/postfix/ssl# telnet localhost 25


Trying ::1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 server1.no-ip.org ESMTP Postfix (Ubuntu)
ehlo localhost
250-server1.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.
root@server1:/etc/postfix/ssl#

Servidor WEB apache


Ahora vamos a instalar el servidor web apache para la administración de MySQL vía WEB utilizando phpmyadmin.
Apache/PHP5/Ruby/Python/WebDAV
Instalamos Apache

aptitude install apache2 apache2-doc apache2-mpm-prefork apache2-utils apache2-suexec libexpat1 ssl-cert

Ahora instalamos PHP5, Ruby, and Python

aptitude install libapache2-mod-php5 libapache2-mod-ruby libapache2-mod-python php5 php5-common php5-curl php5-dev


php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql
php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

47 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

Editamos /etc/apache2/mods-available/dir.conf:

nano /etc/apache2/mods-available/dir.conf

cambiamos la linea DirectoryIndex:

<IfModule mod_dir.c>

#DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm


DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl index.xhtml
</IfModule>

Habilitamos los modulos de Apache (SSL, rewrite, suexec, include, and WebDAV):

a2enmod ssl
a2enmod rewrite
a2enmod suexec
a2enmod include
a2enmod dav_fs
a2enmod dav

Reiniciamos Apache

/etc/init.d/apache2 restart

Instalamos Amavisd-new, SpamAssassin, And Clamav

aptitude install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract
apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl
libnet-ident-perl zip libnet-dns-perl

Instalamos Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear, y mcrypt

aptitude install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert


libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid
apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libopenssl-ruby
libapache2-mod-ruby

veremos las siguiente preguntas


Web server to reconfigure automatically: <-- apache2
Configure database for phpmyadmin with dbconfig-common? <-- No
Habilitamos los modulos

a2enmod suexec rewrite ssl actions include

a2enmod dav_fs dav auth_digest

Reiniciamos Apache

/etc/init.d/apache2 restart

Instalación de Dovecot, Squirrelmail y algo más

aptitude install dovecot-pop3d dovecot-imapd lha arj unrar zoo nomarch cpio lzop cabextract squirrelmail mutt
postfix-mysql

Con esto hemos terminado con la instalación de algo de software necesario y un poco de configuración

CONFIGURACIÓN DE LA BASE DE DATOS


Nos logueamos como root en MySQL

mysql -u root -p
Enter password: <-------Tecleamos el password que elegimos durante la instalación de MySQL

Veremos lo siguiente

Welcome to the MySQL monitor. Commands end with ; or \g.


Your MySQL connection id is 35
Server version: 5.1.49-1ubuntu8.1 (Ubuntu)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Ya estamos dentro de MySQL, ahora creamos una base de datos con nombre "mailserver":

48 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

create database mailserver;

ahora creamos el usuario "mailuser"

GRANT SELECT ON mailserver.*


TO 'mailuser'@'127.0.0.1'
IDENTIFIED BY 'aquí_una_contraseña';

Atención poner una contraseña donde se señala!!.

flush privileges;

y después salimos

exit

Ahora entramos a nuestra base de datos

mysql -u mailuser -p mailserver


Enter password:

Ponemos el password que seleccionamos para el usuario mailuser


Vamos a crear las siguientes tablas:
a) virtual domains

CREATE TABLE `virtual_domains` (


`id` int(11) NOT NULL auto_increment,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

b) virtual users

CREATE TABLE `virtual_users` (


`id` int(11) NOT NULL auto_increment,
`domain_id` int(11) NOT NULL,
`password` varchar(32) NOT NULL,
`email` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`),
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

c) virtual aliases

CREATE TABLE IF NOT EXISTS `virtual_aliases` (


`id` int(11) NOT NULL auto_increment,
`domain_id` int(11) NOT NULL,
`source` varchar(100) NOT NULL,
`destination` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Creamos los siguientes archivos:

nano /etc/postfix/mysql-virtual-mailbox-domains.cf

y dentro ponemos lo siguiente:

user = mailuser
password = aquí_va_la_contraseña_del_usuario_mailuser
hosts = 127.0.0.1
dbname = mailserver
query = SELECT 1 FROM virtual_domains WHERE name='%s'

guardamos con la tecla Ctrl más la letra O y cerramos con Ctrl + X.


Ahora ponemos el siguiente comando en la terminal

postconf -e virtual_mailbox_domains=mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf

Vamos a crear un ejemplo de dominio de correo virtual.


Volvemos a entrar a MySQL

mysql -u mailuser -p mailserver

ejecutamos

49 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

INSERT INTO virtual_domains (id, name) VALUES (1, 'example.com');

salimos con exit de MySQL

exit

ejecutamos en la terminal

postmap -q example.com mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf

debemos obtener un "1" como resultado


Ahora creamos un ejemplo de usuario virtual

mysql -u mailuser -p mailserver

INSERT INTO virtual_users (id, domain_id, email, password)


VALUES (1, 1, 'john@example.com', MD5('summersun'));

salimos y creamos el siguiente archivo:

nano /etc/postfix/mysql-virtual-mailbox-maps.cf

con el siguiente contenido

user = mailuser
password = aquí_va_la_contraseña_del_usuario_mailuser
hosts = 127.0.0.1
dbname = mailserver
query = SELECT 1 FROM virtual_users WHERE email='%s'

guardamos y ejecutamos lo siguiente en la terminal

postconf -e virtual_mailbox_maps=mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf

ejecutamos

postmap -q john@example.com mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf

tiene que devolver un "1".


Ahora vamos a configurar el ejemplo del envío de mensajes de una dirección de correo a otra.

mysql -u mailuser -p mailserver

INSERT INTO virtual_aliases (id, domain_id, source, destination)


VALUES (1, 1, 'john@example.com', 'john@example.com'),
(2, 1, 'john@example.com', 'devnull@workaround.org');

creamos el archivo

nano /etc/postfix/mysql-virtual-alias-maps.cf

user = mailuser
password = aquí_va_la_contraseña_del_usuario_mailuser
hosts = 127.0.0.1
dbname = mailserver
query = SELECT destination FROM virtual_aliases WHERE source='%s'

ejecutamos

postmap -q john@example.com mysql:/etc/postfix/mysql-virtual-alias-maps.cf

tiene que arrojar los destinos esperados

john@example.com,devnull@workaround.org

creamos el archivo

nano /etc/postfix/mysql-email2email.cf

lo editamos con el siguiente contenido

user = mailuser
password = aquí_va_la_contraseña_del_usuario_mailuser
hosts = 127.0.0.1
dbname = mailserver
query = SELECT email FROM virtual_users WHERE email='%s'

ejecutamos

50 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

postmap -q john@example.com mysql:/etc/postfix/mysql-email2email.cf

tenemos que observar john@example.com

postconf -e virtual_alias_maps=mysql:/etc/postfix/mysql-virtual-alias-maps.cf,mysql:/etc/postfix/mysql-email2email.cf

ejecutamos los siguientes dos comandos

chgrp postfix /etc/postfix/mysql-*.cf


chmod u=rw,g=r,o= /etc/postfix/mysql-*.cf

Editamos /etc/postfix/master.cf

nano /etc/postfix/master.cf

tenemos que añadir

dovecot unix - n n - - pipe


flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}

se vería de la siguiente forma

...
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent. See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
...

reiniciamos postfix

postfix reload

ejecutamos estos dos comandos

postconf -e virtual_transport=dovecot
postconf -e dovecot_destination_recipient_limit=1

Ahora pasaremos a la configuración de Dovecot

CONFIGURACIÓN DE DOVECOT
Agregamos un grupo y un usuario del sistema

groupadd -g 5000 vmail


useradd -g vmail -u 5000 vmail -d /var/vmail -m

Si aún no ha instalado dovecot por favor hagalo

aptitude install dovecot-pop3d dovecot-imapd lha arj unrar zoo nomarch cpio lzop cabextract squirrelmail mutt

Editamos /etc/dovecot/dovecot.conf, como este archivo es demasiado grande y el buscador de nano no me ha dado buenos resultados para facilitar su edición;
vamos a utilizar "vi"

vi /etc/dovecot/dovecot.conf

una vez dentro de vi podemos observar en color azul todo lo que está comentado y en negro u otros tonos lo descomentado, buscamos lo siguiente para definir
los protocolos a ofrecer por defecto son:

protocols = imap imaps pop3 pop3s

ahora podemos hacer una búsqueda de la siguiente configuración tecleando

:/disable_plaintext_auth

y nos colocará en la línea

#disable_plaintext_auth = yes

51 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

la descomentamos tecleando la letra "i" y ya podemos editar el archivo como en cualquier otro editor. Debe quedar entonces de la siguiente forma.

disable_plaintext_auth = yes

Para regresar y hacer la siguiente búsqueda tecleamos "Esc" y escribimos

:/#mail_location

tecleamos "i" para insertar y lo modificamos de la siguiente forma

mail_location = maildir:/var/vmail/%d/%n/Maildir

salimos con del modo insertar con "Esc"


y ahora buscamos

:/namespace private {

y lo editamos descomentando las siguientes líneas

namespace private {
separator = .
prefix = INBOX.
inbox = yes
}

Atención cada una de las líneas hasta la del símbolo "}" deben quedar sin el símbolo # al inicio
ahora buscamos

:/auth default

y en esa sección modificamos de esta forma

mechanisms = plain login

ahora buscamos

:/passdb sql

y lo editamos así

passdb sql {
args = /etc/dovecot/dovecot-sql.conf
}

quedaría así:

# SQL database </usr/share/doc/dovecot-common/wiki/AuthDatabase.SQL.txt>


passdb sql {
# Path for SQL configuration file
args = /etc/dovecot/dovecot-sql.conf
}

y ahora buscamos

:/userdb static

y lo editamos con la tecla "i" de la siguiente forma

userdb static {
args = uid=5000 gid=5000 home=/var/vmail/%d/%n allow_all_users=yes
}

ahora buscamos

:/socket listen

y debe quedar

socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0600
user = vmail
}

client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix

52 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

group = postfix
}
}

ahora buscamos

:/protocol lda

y lo modificamos de esta forma

protocol lda {
log_path = /var/vmail/dovecot-deliver.log
auth_socket_path = /var/run/dovecot/auth-master
postmaster_address = postmaster@example.com
mail_plugins = cmusieve
}

Acuerdese de cambiar la dirección de correo anterior postmaster@example.com por una válida donde se pueda contactar con el administrador.
Para guardar todos los cambios hechos en vi tecleamos "Esc" y después tecleamos ":wq"

:wq

Ahora creamos el archivo

nano /etc/logrotate.d/dovecot-deliver

y copiamos lo siguiente:

/var/vmail/dovecot-deliver.log {
weekly
rotate 14
compress
}

guardamos y salimos
Edita /etc/dovecot/dovecot-sql.conf y cambia estas opciones:

driver = mysql
connect = host=127.0.0.1 dbname=mailserver user=mailuser password=aquí_va_la_contraseña_para_el_usuario_mailuser
default_pass_scheme = PLAIN-MD5
password_query = SELECT email, password FROM virtual_users WHERE email='%u';

Reinicia Dovecot

/etc/init.d/dovecot restart

ahora vemos el registro de /var/log/mail.log

tail /var/log/mail.log

y dentro de las líneas busca

dovecot: Dovecot v1.0.rc15 starting up


dovecot: auth-worker(default): mysql: Connected to 127.0.0.1 (mymailserver)

corregimos los permisos

chgrp vmail /etc/dovecot/dovecot.conf


chmod g+r /etc/dovecot/dovecot.conf

creamos un certificado

openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/dovecot.pem -keyout /etc/ssl/private/dovecot.pem

El certificado y la llave se crearán mientras te hace unas cuantas cuestiones:

Generating a 1024 bit RSA private key


.........++++++
............................++++++
writing new private key to '/etc/ssl/certs/dovecot.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----

53 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

Country Name (2 letter code) [AU]:MX


State or Province Name (full name) [Some-State]:Distrito Federal
Locality Name (eg, city) []:Mexico
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:server1.no-ip.org
Email Address []:

Seguramente deberías rellenarlo con tu propia información. La opción más importante es la Common Name que debería contener el nombre totalmente
cualificado de tu servidor de correo. Ah, y este certificado será válido for 10 años (3650 días), ajusta este periodo como quieras.
cambiamos los permisos

chmod o= /etc/ssl/private/dovecot.pem

reiniciamos dovecot

/etc/init.d/dovecot restart

con esto hemos terminado la configuración de Dovecot ahora vamos a probar nuestra configuración.

SMTP AUTENTIFICADO
Ejecutamos

postconf -e smtpd_sasl_type=dovecot
postconf -e smtpd_sasl_path=private/auth
postconf -e smtpd_sasl_auth_enable=yes
postconf -e smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination

/etc/init.d/postfix restart

si aún no han creado los certificados para postfix pueden hacerlo en este momento

openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/postfix.pem -keyout /etc/ssl/private/postfix.pem

Tiene que seguir el mismo procedimiento que realizamos para Dovecot. Acuérdate de ajustar el "Common Name" al nombre del host totalmente cualificado.
También podrías usar el mismo certificado que has creado para Dovecot si el nombre del servidor es el mismo. En ese caso, usa los siguientes archivos /etc/ssl
/certs/dovecot.pem y /etc/ssl/private/dovecot.pem.

chmod o= /etc/ssl/private/postfix.pem

postconf -e smtpd_tls_cert_file=/etc/ssl/certs/postfix.pem
postconf -e smtpd_tls_key_file=/etc/ssl/private/postfix.pem
postconf -e smtpd_use_tls=yes
postconf -e smtpd_tls_auth_only=yes

AMaViS: filtrando spam y viruses


Editamos /etc/amavis/conf.d/15-content_filter_mode

nano /etc/amavis/conf.d/15-content_filter_mode

debemos eliminar el carácter "#" de las líneas que comienzan por @bypass_... y así habilitas los filtros de correo basura y virus. (Es un poco confuso que
habilitando la opción "bypass", realmente habilites el escáner de virus y correo basura.)

#@bypass_virus_checks_maps = (
# \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
#@bypass_spam_checks_maps = (
# \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

Ahora editamos /etc/amavis/conf.d/50-user

nano /etc/amavis/conf.d/50-user

@local_domains_acl = qw(.);
$log_level = 1;
$syslog_priority = 'info';
# $sa_tag_level_deflt = 2.0; # add spam info headers if at, or above that level
# $sa_tag2_level_deflt = 6.31; # add 'spam detected' headers at that level
$sa_kill_level_deflt = 8.0; # triggers spam evasive actions
# $sa_dsn_cutoff_level = 10; # spam level beyond which a DSN is not sent
# $final_spam_destiny = D_PASS;
# $final_spam_destiny = D_REJECT; # default
# $final_spam_destiny = D_BOUNCE; # debian default
$final_spam_destiny = D_DISCARD; # ubuntu default, recommended as sender is usually faked

quedaría de la siguiente forma el archivo completo:

use strict;

54 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

# Place your configuration directives here. They will override those in


# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

@local_domains_acl = qw(.);
$log_level = 1;
$syslog_priority = 'info';
# $sa_tag_level_deflt = 2.0; # add spam info headers if at, or above that level
# $sa_tag2_level_deflt = 6.31; # add 'spam detected' headers at that level
$sa_kill_level_deflt = 8.0; # triggers spam evasive actions
# $sa_dsn_cutoff_level = 10; # spam level beyond which a DSN is not sent
# $final_spam_destiny = D_PASS;
# $final_spam_destiny = D_REJECT; # default
# $final_spam_destiny = D_BOUNCE; # debian default
$final_spam_destiny = D_DISCARD; # ubuntu default, recommended as sender is usually faked

#------------ Do not modify anything below this line -------------


1; # ensure a defined return

Reiniciamos

/etc/init.d/amavis restart

Verificamos que amavis este escuchando en el puerto tcp 10024

netstat -nap | grep 10024

tcp 0 0 127.0.0.1:10024 0.0.0.0:* LISTEN 12345/amavisd


ejecutamos

postconf -e content_filter=smtp-amavis:[127.0.0.1]:10024
postconf -e receive_override_options=no_address_mappings

Editamos /etc/postfix/master.cf

nano /etc/postfix/master.cf

y añadimos esto (puede ser al final del archivo):

smtp-amavis unix - - n - 2 smtp


-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o max_use=20

127.0.0.1:10025 inet n - - - - smtpd


-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=reject_unauth_pipelining
-o smtpd_end_of_data_restrictions=
-o mynetworks=127.0.0.0/8
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
guardamos, cerramos y reiniciamos postfix

postfix reload

ejecutamos

adduser clamav amavis


/etc/init.d/clamav-daemon restart

Edite el archivo /etc/amavis/conf.d/50-user y, antes del "1;", ponga estas líneas:

@lookup_sql_dsn = (

55 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

['DBI:mysql:database=mailserver;host=127.0.0.1;port=3306',
'mailuser',
'mailuser2009']);

$sql_select_policy = 'SELECT name FROM virtual_domains WHERE CONCAT("@",name) IN (%k)';

Reiniciamos

/etc/init.d/amavis restart

ejecutamos

chmod o= /etc/amavis/conf.d/50-user

GESTIONANDO TUS CUENTAS DE CORREO


ISPwebAdmin (interfaz web)
creamos la tabla

mysql -u mailuser -p mailserver

ejecutamos

CREATE TABLE IF NOT EXISTS `admins` (


`id` int(11) NOT NULL auto_increment,
`username` varchar(40) NOT NULL,
`pwhash` varchar(32) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

también en MySQL ejecutamos

INSERT INTO mailserver.admins (username,pwhash) VALUES ('postmaster', MD5('aquí_pon_un_pass'));


quit;

Instalamos

aptitude install python-virtualenv


apt-get build-dep python-mysqldb

Inicia una sesión en vmail:

su -s /bin/bash vmail

Acondiciona la aplicación:
cambiamos de directorio

cd /var/vmail

creamos un directorio

mkdir ispwebadmin

entramos al directorio

cd ispwebadmin

ejecutamos

virtualenv .

ejecutamos

. bin/activate

descargamos

wget http://workaround.org/sites/default/files/ispwebadmin-1.0.2.tar_.gz

renombramos

mv ispwebadmin-1.0.2.tar_.gz ispwebadmin-1.0.2.tar.gz

ejecutamos

easy_install ispwebadmin*.tar.gz

ejecutamos

56 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

paster make-config ispwebadmin run.ini

ejecutamos para ver el archivo de configuración, después veremos como rellenarlo

vi run.ini

salimos y ejecutamos

paster serve run.ini

Autoinicio usando runit


Abrimos una segunda terminal, no cierren la primera porque regresaremos a configurar el archivo run.ini

aptitude install runit

creamos el directorio

mkdir /etc/sv/ispwebadmin

entramos al directorio

cd /etc/sv/ispwebadmin

creamos el archivo /etc/sv/ispwebadmin/run

nano /etc/sv/ispwebadmin/run

y pegamos lo siguiente:

#!/bin/sh
exec 2>&1
echo 'ISPwebAdmin starting.'
cd /var/vmail/ispwebadmin
sudo -u vmail PYTHON_EGG_CACHE=/var/vmail/ispwebadmin/.python-eggs bin/paster serve run.ini

hacemos el script ejecutable

chmod u+x /etc/sv/ispwebadmin/run

creamos un enlace simbólico

ln -s /etc/sv/ispwebadmin /etc/service/

El servicio debería de iniciarse automáticamente, para comprobar que funciona:

sv status /etc/service/ispwebadmin

run: ispwebadmin: (pid 3335) 0s; run: log: (pid 3326) 4s


para detenerlo:

sv stop /etc/service/ispwebadmin

ok: down: ispwebadmin: 1s, normally up


para iniciarlo

apt-get install daemontools

svc -u /etc/service/ispwebadmin

ok: run: ispwebadmin: (pid 3956) 1s


crear el archivo /etc/sv/ispwebadmin/log/run

nano /etc/sv/ispwebadmin/log/run

con el contenido:

#!/bin/sh -e
LOG=/var/log/runit-ispwebadmin
test -d "$LOG" || mkdir -p -m2750 "$LOG"
exec svlogd -tt "$LOG"

Configurando del archivo INI


Regresamos a la terminal donde iniciamos la sesión en vmail y ejecutamos:
en el directorio /var/vmail/ispwebadmin

nano run.ini

57 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

El archivo ini que has creado con "paster make-config something.ini" contiene una configuración específica para la instalación de tu servidor de correo. Antes de
ejecutar la interfaz web revisa las siguientes opciones:
[server:main] -> host
La dirección IP que escucha el servidor web en "0.0.0.0" se puede usar para todas las interfaces.
[server:main] -> port
El puerto TCP que escucha el servidor web.
[app:main] -> ispwebadmin.maildir_location
La ruta de tu directorio donde se almacenan las cuentas de correo de usuarios virtuales. Si has seguido este turorial, debería ser "/var/vmail".
[app:main] -> ispwebadmin.postmaster
La dirección de correo que se usa como dirección abuse@ y postmaster@ para los dominios creados recientemente. Necesitas tener esas cuentas para cada
dominio.
[app:main] -> sqlalchemy.url
Esta parte es muy importante!, es la cadena de acceso que define cómo acceder a tu base de datos.

mysql://root:seoroct3@mailserver.example.com/mailserver?charset=utf8

en resumen sería

mysql://nombre_del_usuario_de_la_base_de_datos:contraseña_del_usuario@localhost/nombre_de_basededatos?charset=utf8

Por último para entrar ponemos la siguiente dirección en un explorador web: http://192.168.1.100:5000
y les arroja la siguiente pantalla

si no pueden loguearse con el usuario y la contraseña que eligieron cuando ejecutaron el comando:

INSERT INTO mailserver.admins (username,pwhash) VALUES ('postmaster', MD5('aquí_pon_un_pass'));

deben añadir lo siguiente a su /etc/hosts

127.0.0.1 localhost
127.0.1.1 server1.lan server1
192.168.1.100 server1.no-ip.org server1
127.0.0.0 server1.no-ip.org

# The following lines are desirable for IPv6 capable hosts


::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix

58 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

SERVIDOR DE NOMBRES DE DOMINIO (DNS)


Instalamos

aptitude install bind9

paramos

/etc/init.d/bind9 stop

editamos /etc/default/bind9, debe quedar de la siguiente forma:

# run resolvconf?
RESOLVCONF=yes

# startup options for the server


OPTIONS="-u bind -t /var/lib/named"

creamos los siguientes directorios:

mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/run/bind/run

movemos el directorio de configuración

mv /etc/bind /var/lib/named/etc

creamos un enlace simbólico

ln -s /var/lib/named/etc/bind /etc/bind

ejecutamos los siguientes comandos:

mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
chown -R bind:bind /var/lib/named/var/*

59 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

chown -R bind:bind /var/lib/named/etc/bind

creamos el siguiente archivo:

nano /etc/rsyslog.d/bind-chroot.conf

e insertamos lo siguiente

$AddUnixListenSocket /var/lib/named/dev/log

reiniciamos el demonio

/etc/init.d/rsyslog restart

e iniciamos bind9

/etc/init.d/bind9 start

ejecutamos

tail /var/log/syslog

Configuración de BIND
editamos

nano /etc/bind/named.conf.local

insertamos

zone "no-ip.org" {
type master;
file "/var/lib/bind/no-ip.org.hosts";
};
zone "1.168.192.in-addr.arpa" {
type master;
file "/var/lib/bind/192.168.1.rev";
};

entramos al directorio /var/lib/bind

cd /var/lib/bind

creamos el archivo

nano /var/lib/bind/no-ip.org.hosts

$ttl 38400
no-ip.org. IN SOA server1.no-ip.org. root.itechtron. (
1317849150
10800
3600
604800
38400 )
no-ip.org. IN NS server1.no-ip.org.
server1.no-ip.org. IN A 192.168.1.100
www.no-ip.org. IN CNAME server1.no-ip.org.
server1.no-ip.org. IN MX 5 mx

no olviden modificar server1 por el nombre de su máquina (host)!!! que eligieron durante la configuración de la IP externa en la parte II de este tutorial
ahora creamos el archivo /var/lib/bind/192.168.1.rev

nano /var/lib/bind/192.168.1.rev

$ttl 38400
1.168.192.in-addr.arpa. IN SOA server1.no-ip.org. root.itechtron. (
1317849313
10800
3600
604800
38400 )
1.168.192.in-addr.arpa. IN NS server1.no-ip.org.
100.1.168.192.in-addr.arpa. IN PTR server1.no-ip.org.

no olviden modificar server1 por el nombre de su máquina (host)!!! que eligieron durante la configuración de la IP externa en la parte II de este tutorial
ahora editamos

nano /etc/resolv.conf

60 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

y agregamos

domain no-ip.org
nameserver 192.168.1.100 <------------ o la IP de tu servidor (local)

con esto terminamos la configuración de nuestro servidor DNS

Cómo configurar no-ip para crear los registros MX


1. Acceder a su cuenta en No-IP.com.
2. En la parte izquierda, en Host/Redirects (Host/Redireccionamientos). Están las entradas de los dominios para configurar los txt records y entré a la parte
Modify (Modificar).

Una vez dentro de la configuración hay un apartado "MX record":

61 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

En ese apartado se pondría de la siguiente manera "server1.no-ip.org" y le pondríamos una prioridad de 5:

Reiniciamos el servicio de bind:

/etc/init.d/bind9 restart

INSTALACIÓN DEL WEBMAIL


Instalación de Squirrelmail

aptitude install squirrelmail

ln -s /usr/share/squirrelmail/ /var/www/webmail

entramos a la configuración de squirrelmail

squirrelmail-configure

SquirrelMail Configuration : Read: config.php (1.4.0)


---------------------------------------------------------
Main Menu --
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options

62 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages
D. Set pre-defined settings for specific IMAP servers
C Turn color on
S Save data
Q Quit
Command >> <-- D
Entramos a la opción "D" presionándola en nuestro teclado
SquirrelMail Configuration : Read: config.php
---------------------------------------------------------
While we have been building SquirrelMail, we have discovered some
preferences that work better with some servers that don't work so
well with others. If you select your IMAP server, this option will
set some pre-defined settings for that server.
Please note that you will still need to go through and make sure
everything is correct. This does not change everything. There are
only a few settings that this will change.
Please select your IMAP server:
bincimap = Binc IMAP server
courier = Courier IMAP server
cyrus = Cyrus IMAP server
dovecot = Dovecot Secure IMAP server
exchange = Microsoft Exchange IMAP server
hmailserver = hMailServer
macosx = Mac OS X Mailserver
mercury32 = Mercury/32
uw = University of Washington's IMAP server
gmail = IMAP access to Google mail (Gmail) accounts
quit = Do not change anything
Command >> dovecot
elegimos a dovecot como servidor IMAP
imap_server_type = dovecot
default_folder_prefix =
trash_folder = Trash
sent_folder = Sent
draft_folder = Drafts
show_prefix_option = false
default_sub_of_inbox = false
show_contain_subfolders_option = false
optional_delimiter = detect
delete_folder = false
Press any key to continue...
presionamos cualquier tecla para continuar
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages
D. Set pre-defined settings for specific IMAP servers
C Turn color on
S Save data
Q Quit
Command >> <-- S
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes

63 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages
D. Set pre-defined settings for specific IMAP servers
C Turn color on
S Save data
Q Quit
Command >> S
Data saved in config.php
Press enter to continue... <-- ENTER
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages
D. Set pre-defined settings for specific IMAP servers
C Turn color on
S Save data
Q Quit
Command >> <-- Q
ya quedó configurado ahora para entrar ponemos en el explorador WEB http://server1.no-ip.org/webmail o http://192.168.1.100/webmail (recuerda que debes
poner la ip local del servidor)

Cambiar a Squirrelmail por RoundCube sin desinstalarlo


Si no te gusta Squirrelmail por su apariencia puedes instalar una alternativa mucho más bonita llamada Rouncube. Los pasos para su instalación se describen a
continuación.
#Cambiamos de Directorio

cd /usr/share

#Descargamos roundcube

wget http://nchc.dl.sourceforge.net/sourceforge/roundcubemail/roundcubemail-0.4.2.tar.gz

#Extraemos el archivo
tar -xvzf roundcubemail-0.4.2.tar.gz
#Eliminamos el tar.gz
rm -fr roundcubemail-0.4.2.tar.gz
#entramos al directorio
cd roundcubemail-0.4.2
#eliminamos el instalador
rm -fr installer
#cambiamos los permisos
chmod 755 temp logs
#entramos a la carpeta de configuración
cd config
#renombramos el archivo db.inc.php.dist
cp db.inc.php.dist db.inc.php
#renombramos el archivo main.inc.php.dist
cp main.inc.php.dist main.inc.php
#nos logueamos como root en mysql
mysql -u root -p mysql
#Digitamos nuestra contraseña de root en mysql
Enter password:
#En el prompt de mysql insertamos el siguiente comando para crear la base de datos roundcubedb
mysql> create database roundcubedb;
#Creamos el usuario roundcubeuser y creamos su contraseña
mysql> grant all privileges on roundcubedb.* to roundcubeuser@localhost identified by
Editar db.inc.php de la siguiente forma:

nano db.inc.php

$rcmail_config['db_dsnw'] = ‘mysql://roundcubeuser:AQUÍ_SU_PASS@localhost/roundcubedb’;

y editar main.inc.php:

64 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

[...]
$rcmail_config['message_cache_lifetime'] = '10d';
[...]
$rcmail_config['default_host'] = '';
[...]
$rcmail_config['smtp_server'] = '';
[...]
$rcmail_config['session_lifetime'] = 10;
[...]
$rcmail_config['create_default_folders'] = FALSE;
[...]

lo cambiamos a

[...]
$rcmail_config['message_cache_lifetime'] = '30m';
[...]
$rcmail_config['default_host'] = 'localhost';
[...]
$rcmail_config['smtp_server'] = '%h';
[...]
$rcmail_config['session_lifetime'] = 30;
[...]
$rcmail_config['create_default_folders'] = TRUE;
[...]

Entrar a la carpeta SQL y copiar el contenido de mysql.initial.sql

nano /usr/share/roundcubemail-0.4.2/SQL/mysql.initial.sql

-- RoundCube Webmail initial database structure


/*!40014 SET FOREIGN_KEY_CHECKS=0 */;
-- Table structure for table `session`
CREATE TABLE `session` (
`sess_id` varchar(40) NOT NULL,
`created` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
`changed` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
`ip` varchar(40) NOT NULL,
`vars` mediumtext NOT NULL,
PRIMARY KEY(`sess_id`),
INDEX `changed_index` (`changed`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
-- Table structure for table `users`
CREATE TABLE `users` (
`user_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`username` varchar(128) NOT NULL,
`mail_host` varchar(128) NOT NULL,
`alias` varchar(128) NOT NULL,
`created` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
`last_login` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
`language` varchar(5),
`preferences` text,
PRIMARY KEY(`user_id`),
INDEX `username_index` (`username`),
INDEX `alias_index` (`alias`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
-- Table structure for table `messages`
CREATE TABLE `messages` (
`message_id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`user_id` int(10) UNSIGNED NOT NULL DEFAULT '0',
`del` tinyint(1) NOT NULL DEFAULT '0',
`cache_key` varchar(128) /*!40101 CHARACTER SET ascii COLLATE ascii_general_ci */ NOT NULL,
`created` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
`idx` int(11) UNSIGNED NOT NULL DEFAULT '0',
`uid` int(11) UNSIGNED NOT NULL DEFAULT '0',
`subject` varchar(255) NOT NULL,
`from` varchar(255) NOT NULL,
`to` varchar(255) NOT NULL,
`cc` varchar(255) NOT NULL,
`date` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
`size` int(11) UNSIGNED NOT NULL DEFAULT '0',
`headers` text NOT NULL,
`structure` text,
PRIMARY KEY(`message_id`),
INDEX `created_index` (`created`),
INDEX `index_index` (`user_id`, `cache_key`, `idx`),
UNIQUE `uniqueness` (`user_id`, `cache_key`, `uid`),

65 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

CONSTRAINT `user_id_fk_messages` FOREIGN KEY (`user_id`)


REFERENCES `users`(`user_id`)
/*!40008
ON DELETE CASCADE
ON UPDATE CASCADE */
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
-- Table structure for table `cache`
CREATE TABLE `cache` (
`cache_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`cache_key` varchar(128) /*!40101 CHARACTER SET ascii COLLATE ascii_general_ci */ NOT NULL ,
`created` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
`data` longtext NOT NULL,
`user_id` int(10) UNSIGNED NOT NULL DEFAULT '0',
PRIMARY KEY(`cache_id`),
INDEX `created_index` (`created`),
INDEX `user_cache_index` (`user_id`,`cache_key`),
CONSTRAINT `user_id_fk_cache` FOREIGN KEY (`user_id`)
REFERENCES `users`(`user_id`)
/*!40008
ON DELETE CASCADE
ON UPDATE CASCADE */
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
-- Table structure for table `contacts`
CREATE TABLE `contacts` (
entramos con la ip del servidor en este caso http://192.168.1.100/phpmyadmin para configurar MySQL.
En usuario ponemos root y en para la contraseña la que seleccionaron al instalar MySQL
Una vez dentro veremos la siguiente pantalla

del lado izquierdo vamos a la base de datos que creamos para roundcube (roundcubedb) y después entramos a la pestaña que tiene por nombre SQL en el
cuadro de texto copiamos el contenido de mysql.initial.sql
como en la siguiente imagen

66 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

Le damos en continuar y con esto terminaremos esta parte.


Ahora ejecutamos

cd /usr/share
mv squirrelmail squirrelmail.bak
mv roundcubemail-0.4.2 squirrelmail

Para entrar es de la misma forma que con la que entrabamos con Squirrelmail: http://server1.no-ip.org/webmail o http://192.168.1.100/webmail

67 de 68 20/11/11 08:53
Instalar un Servidor de Correo Seguro en Ubuntu | Ubuntu H... http://www.ubuntuhispano.org/wiki/instalar-servidor-correo...

con esto tenemos un servidor de correo totalmente funcional que incluso marca el correo basura.

‹ Configuración para acceso entre ordenadores de una red local. arriba Programación ›

7421 lecturas Comentarios page (14 comments) Responder

68 de 68 20/11/11 08:53

You might also like