instalar un servidor de correo seguro en ubuntu

135
Instalar un Servidor de Correo Seguro en Ubuntu 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

Upload: vicente-blanco-barizo

Post on 12-Jun-2015

1.294 views

Category:

Education


9 download

TRANSCRIPT

Page 1: Instalar un servidor de correo seguro en ubuntu

Instalar un Servidor de Correo Seguro en UbuntuINSTALACIÓN DEL SERVIDORCONFIGURACIÓN DE LA REDINSTALACIÓN DE SOFTWARE NECESARIO PARA EL SERVIDOR DE CORREOCONFIGURACIÓN DE LA BASE DE DATOSCONFIGURACIÓN DE DOVECOTSMTP AUTENTIFICADOGESTIONANDO TUS CUENTAS DE CORREOSERVIDOR 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.

Page 2: Instalar un servidor de correo seguro en ubuntu

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.

seleccionamos el idioma español

Page 3: Instalar un servidor de correo seguro en ubuntu

entramos en la opción "Instalar Ubuntu Server"

Page 4: Instalar un servidor de correo seguro en ubuntu

elegimos nuestro país "México"

Page 5: Instalar un servidor de correo seguro en ubuntu

seleccionamos sí para configurar nuestro teclado

Page 6: Instalar un servidor de correo seguro en ubuntu

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

Page 7: Instalar un servidor de correo seguro en ubuntu

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

Page 8: Instalar un servidor de correo seguro en ubuntu

oprimimos la tecla

Page 9: Instalar un servidor de correo seguro en ubuntu

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

Page 10: Instalar un servidor de correo seguro en ubuntu
Page 11: Instalar un servidor de correo seguro en ubuntu
Page 12: Instalar un servidor de correo seguro en ubuntu
Page 13: Instalar un servidor de correo seguro en ubuntu

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.

Page 14: Instalar un servidor de correo seguro en ubuntu

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.

Page 15: Instalar un servidor de correo seguro en ubuntu
Page 16: Instalar un servidor de correo seguro en ubuntu

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

Page 17: Instalar un servidor de correo seguro en ubuntu
Page 18: Instalar un servidor de correo seguro en ubuntu

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

Page 19: Instalar un servidor de correo seguro en ubuntu

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.

Page 20: Instalar un servidor de correo seguro en ubuntu

elegimos la opción "sí"

Page 21: Instalar un servidor de correo seguro en ubuntu

seleccionamos el espacio espacio libre para nuestra tabla de particiones

Page 22: Instalar un servidor de correo seguro en ubuntu

creamos una partición nueva

Page 23: Instalar un servidor de correo seguro en ubuntu

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:

Page 24: Instalar un servidor de correo seguro en ubuntu

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

Page 25: Instalar un servidor de correo seguro en ubuntu

seleccionamos la partición primaria

Page 26: Instalar un servidor de correo seguro en ubuntu

y ahora queremos que la partición este al principio

Page 27: Instalar un servidor de correo seguro en ubuntu

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)

Page 28: Instalar un servidor de correo seguro en ubuntu

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

Page 29: Instalar un servidor de correo seguro en ubuntu

creamos las siguientes particiones

Page 30: Instalar un servidor de correo seguro en ubuntu
Page 31: Instalar un servidor de correo seguro en ubuntu
Page 32: Instalar un servidor de correo seguro en ubuntu
Page 33: Instalar un servidor de correo seguro en ubuntu
Page 34: Instalar un servidor de correo seguro en ubuntu
Page 35: Instalar un servidor de correo seguro en ubuntu
Page 36: Instalar un servidor de correo seguro en ubuntu

terminamos de definir las particiones

Page 37: Instalar un servidor de correo seguro en ubuntu

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

Page 38: Instalar un servidor de correo seguro en ubuntu

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

Page 39: Instalar un servidor de correo seguro en ubuntu

nombre corto del usuario de la cuenta

Page 40: Instalar un servidor de correo seguro en ubuntu
Page 41: Instalar un servidor de correo seguro en ubuntu

elegimos una contraseña y la repetimos para comprobarla

Page 42: Instalar un servidor de correo seguro en ubuntu

seleccionamos "no" en el cifrado de la carpeta personal

Page 43: Instalar un servidor de correo seguro en ubuntu

lo dejamos en blanco y seleccionamos continuar

Page 44: Instalar un servidor de correo seguro en ubuntu

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

Page 45: Instalar un servidor de correo seguro en ubuntu

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

Page 46: Instalar un servidor de correo seguro en ubuntu

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

Page 47: Instalar un servidor de correo seguro en ubuntu

ponemos "sí" para instalar GRUB

Page 48: Instalar un servidor de correo seguro en ubuntu

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 rootIntroduzca 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-serveraptitude 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

Page 49: Instalar un servidor de correo seguro en ubuntu

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:

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

Page 50: Instalar un servidor de correo seguro en ubuntu

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 interfaceauto loiface lo inet loopback

# The primary network interfaceauto eth0iface 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.0.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:

Page 51: Instalar un servidor de correo seguro en ubuntu

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## 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       OPTIONSnet     eth0            detect          dhcp,tcpflags,logmartians,nosmurfscp /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                 OPTIONSfw      firewallloc     ipv4net     ipv4

Page 52: Instalar un servidor de correo seguro en ubuntu

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)                                 OPTIONSloc     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           MASKFW      net     ACCEPTnet     FW      DROP            infonet     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## Shorewall version 4 - Routestopped File## For information about entries in this file, type "man shorewall-routestopped"

Page 53: Instalar un servidor de correo seguro en ubuntu

## 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 RELATEDSECTION NEWACCEPT         net         fw         tcp 52341ACCEPT         loc         fw         tcp 52341

ejecutamos

shorewall check

y lo reiniciamos

/etc/init.d/shorewall restart

lo agregamos al arranque editando:

nano /etc/default/shorewallstartup=1

Page 54: Instalar un servidor de correo seguro en ubuntu

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

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.

Page 55: Instalar un servidor de correo seguro en ubuntu

nos vamos al apartado Herramientas que se encuentra del lado izquierdo

Page 56: Instalar un servidor de correo seguro en ubuntu

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

Page 57: Instalar un servidor de correo seguro en ubuntu

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

Page 58: Instalar un servidor de correo seguro en ubuntu

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

Page 59: Instalar un servidor de correo seguro en ubuntu

seleccionamos entrada manual de puertos y después en siguiente

Page 60: Instalar un servidor de correo seguro en ubuntu

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

Page 61: Instalar un servidor de correo seguro en ubuntu

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

Page 62: Instalar un servidor de correo seguro en ubuntu

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".

Page 63: Instalar un servidor de correo seguro en ubuntu

y ahora damos click en "AGREGAR"

Page 64: Instalar un servidor de correo seguro en ubuntu

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 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.

Page 65: Instalar un servidor de correo seguro en ubuntu
Page 66: Instalar un servidor de correo seguro en ubuntu

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

Page 67: Instalar un servidor de correo seguro en ubuntu

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

Page 68: Instalar un servidor de correo seguro en ubuntu

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

Page 69: Instalar un servidor de correo seguro en ubuntu

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

Page 70: Instalar un servidor de correo seguro en ubuntu

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/

Page 71: Instalar un servidor de correo seguro en ubuntu

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

Page 72: Instalar un servidor de correo seguro en ubuntu

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"

Page 73: Instalar un servidor de correo seguro en ubuntu

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 …

Page 74: Instalar un servidor de correo seguro en ubuntu

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

Seguidamente introducimos la contraseña …

Page 75: Instalar un servidor de correo seguro en ubuntu

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 …

Page 76: Instalar un servidor de correo seguro en ubuntu

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

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

Page 77: Instalar un servidor de correo seguro en ubuntu

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   localhost192.168.0.100   server1.no-ip.org     server1

# The following lines are desirable for IPv6 capable hosts::1     localhost ip6-localhost ip6-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::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 lansearch lannameserver 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

Page 78: Instalar un servidor de correo seguro en ubuntu

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

/etc/init.d/apparmor stopupdate-rc.d -f apparmor removeaptitude 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: <-- yourrootsqlpasswordRepeat 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í:

Page 79: Instalar un servidor de correo seguro en ubuntu

root@server1:~# netstat -tap | grep mysqltcp 0 0 *:mysql *:* LISTEN 6796/mysqldroot@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 SiteSystem mail name: <-- server1.no-ip.org

ahora ejecutamos

dpkg-reconfigure postfix

y respondemos de la siguiente forma

General type of mail configuration: <-- Internet SiteSystem mail name: <-- server1.no-ip.orgRoot and postmaster mail recipient: <-- lo_dejamos_en_blancoOther destinations to accept mail for (blank for none): <-- server1.no-ip.org, localhost.no-ip.org, localhost.localdomain, localhostForce synchronous updates on mail queue? <-- NoLocal networks: <-- 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128Use procmail for local delivery? <-- YesMailbox size limit (bytes): <-- 0Local 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.confecho 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf

Creamos los certificados TLS:

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

Page 80: Instalar un servidor de correo seguro en ubuntu

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

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

chmod 600 smtpd.keyopenssl req -new -key smtpd.key -out smtpd.csr

Enter pass phrase for smtpd.key: <----AQUÍ_UNA_CONTRASEÑAYou are about to be asked to enter information that will be incorporatedinto 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 blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [AU]:MXState or Province Name (full name) [Some-State]:DISTRITO FEDERALLocality Name (eg, city) []:MEXICOOrganization Name (eg, company) [Internet Widgits Pty Ltd]:<--- ENTEROrganizational Unit Name (eg, section) []:<--- ENTERCommon Name (eg, YOUR name) []:<--- server1.no-ip.org (IMPORTANTÍSIMO)Email Address []:<--- ENTER

Please enter the following 'extra' attributesto be sent with your certificate requestA challenge password []:<--- ENTERAn 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.crtopenssl rsa -in smtpd.key -out smtpd.key.unencryptedmv -f smtpd.key.unencrypted smtpd.keyopenssl 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'

Page 81: Instalar un servidor de correo seguro en ubuntu

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

readme_directory = no

# TLS parameterssmtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crtsmtpd_tls_key_file = /etc/postfix/ssl/smtpd.keysmtpd_use_tls = yessmtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scachesmtp_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.comalias_maps = hash:/etc/aliasesalias_database = hash:/etc/aliasesmyorigin = /etc/mailnamemydestination = server1.example.com, localhost.example.com, localhost.localdomain, localhostrelayhost =mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128mailbox_command = procmail -a "$EXTENSION"mailbox_size_limit = 0recipient_delimiter = +inet_interfaces = allinet_protocols = allsmtpd_sasl_local_domain =smtpd_sasl_auth_enable = yessmtpd_sasl_security_options = noanonymousbroken_sasl_auth_clients = yessmtpd_sasl_authenticated_header = yes

Page 82: Instalar un servidor de correo seguro en ubuntu

smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destinationsmtpd_tls_auth_only = nosmtp_use_tls = yessmtp_tls_note_starttls_offer = yessmtpd_tls_CAfile = /etc/postfix/ssl/cacert.pemsmtpd_tls_loglevel = 1smtpd_tls_received_header = yessmtpd_tls_session_cache_timeout = 3600stls_random_source = dev:/dev/urandom

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=""

Page 83: Instalar un servidor de correo seguro en ubuntu

# 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.## 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

Page 84: Instalar un servidor de correo seguro en ubuntu

para salir ejecutamos

quit

en resumen veríamos lo siguiente:

root@server1:/etc/postfix/ssl# telnet localhost 25Trying ::1...Connected to localhost.localdomain.Escape character is '^]'.220 server1.no-ip.org ESMTP Postfix (Ubuntu)ehlo localhost250-server1.example.com250-PIPELINING250-SIZE 10240000250-VRFY250-ETRN250-STARTTLS250-AUTH PLAIN LOGIN250-AUTH=PLAIN LOGIN250-ENHANCEDSTATUSCODES250-8BITMIME250 DSNquit221 2.0.0 ByeConnection 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

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

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

cambiamos la linea DirectoryIndex:

<IfModule mod_dir.c>

Page 85: Instalar un servidor de correo seguro en ubuntu

          #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 ssla2enmod rewritea2enmod suexeca2enmod includea2enmod dav_fsa2enmod 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: <-- apache2Configure database for phpmyadmin with dbconfig-common? <-- No

Habilitamos los modulos

a2enmod suexec rewrite ssl actions includea2enmod 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

Page 86: Instalar un servidor de correo seguro en ubuntu

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 -pEnter 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 35Server 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":

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

Page 87: Instalar un servidor de correo seguro en ubuntu

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 = mailuserpassword = aquí_va_la_contraseña_del_usuario_mailuserhosts = 127.0.0.1dbname = mailserverquery = 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.

Page 88: Instalar un servidor de correo seguro en ubuntu

Volvemos a entrar a MySQL

mysql -u mailuser -p mailserver

ejecutamos

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, '[email protected]', MD5('summersun'));

salimos y creamos el siguiente archivo:

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

con el siguiente contenido

user = mailuserpassword = aquí_va_la_contraseña_del_usuario_mailuserhosts = 127.0.0.1dbname = mailserverquery = 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 [email protected] 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

Page 89: Instalar un servidor de correo seguro en ubuntu

INSERT INTO virtual_aliases (id, domain_id, source, destination)VALUES (1, 1, '[email protected]', '[email protected]'),(2, 1, '[email protected]', '[email protected]');

creamos el archivo

nano /etc/postfix/mysql-virtual-alias-maps.cfuser = mailuserpassword = aquí_va_la_contraseña_del_usuario_mailuserhosts = 127.0.0.1dbname = mailserverquery = SELECT destination FROM virtual_aliases WHERE source='%s'

ejecutamos

postmap -q [email protected] mysql:/etc/postfix/mysql-virtual-alias-maps.cf

tiene que arrojar los destinos esperados

[email protected],[email protected]

creamos el archivo

nano /etc/postfix/mysql-email2email.cf

lo editamos con el siguiente contenido

user = mailuserpassword = aquí_va_la_contraseña_del_usuario_mailuserhosts = 127.0.0.1dbname = mailserverquery = SELECT email FROM virtual_users WHERE email='%s'

ejecutamos

postmap -q [email protected] mysql:/etc/postfix/mysql-email2email.cf

tenemos que observar [email protected]

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-*.cfchmod u=rw,g=r,o= /etc/postfix/mysql-*.cf

Editamos /etc/postfix/master.cf

nano /etc/postfix/master.cf

tenemos que añadir

Page 90: Instalar un servidor de correo seguro en ubuntu

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=dovecotpostconf -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 vmailuseradd -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

Page 91: Instalar un servidor de correo seguro en ubuntu

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

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

Page 92: Instalar un servidor de correo seguro en ubuntu

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        group = postfix    }}

ahora buscamos

:/protocol lda

y lo modificamos de esta forma

Page 93: Instalar un servidor de correo seguro en ubuntu

protocol lda {    log_path = /var/vmail/dovecot-deliver.log    auth_socket_path = /var/run/dovecot/auth-master    postmaster_address = [email protected]    mail_plugins = cmusieve}

Acuerdese de cambiar la dirección de correo anterior [email protected] 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 = mysqlconnect = host=127.0.0.1 dbname=mailserver user=mailuser password=aquí_va_la_contraseña_para_el_usuario_mailuserdefault_pass_scheme = PLAIN-MD5password_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 updovecot: auth-worker(default): mysql: Connected to 127.0.0.1 (mymailserver)

corregimos los permisos

Page 94: Instalar un servidor de correo seguro en ubuntu

chgrp vmail /etc/dovecot/dovecot.confchmod 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 incorporatedinto 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 blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [AU]:MXState or Province Name (full name) [Some-State]:Distrito FederalLocality Name (eg, city) []:MexicoOrganization Name (eg, company) [Internet Widgits Pty Ltd]:Organizational Unit Name (eg, section) []:Common Name (eg, YOUR name) []:server1.no-ip.orgEmail 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=dovecotpostconf -e smtpd_sasl_path=private/authpostconf -e smtpd_sasl_auth_enable=yes

Page 95: Instalar un servidor de correo seguro en ubuntu

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.pempostconf -e smtpd_tls_cert_file=/etc/ssl/certs/postfix.pempostconf -e smtpd_tls_key_file=/etc/ssl/private/postfix.pempostconf -e smtpd_use_tls=yespostconf -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

Page 96: Instalar un servidor de correo seguro en ubuntu

$final_spam_destiny = D_DISCARD; # ubuntu default, recommended as sender is usually faked

quedaría de la siguiente forma el archivo completo:

use strict;

## 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]:10024postconf -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):

Page 97: Instalar un servidor de correo seguro en ubuntu

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    -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks    -o local_header_rewrite_clients=

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 = (    ['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

Page 98: Instalar un servidor de correo seguro en ubuntu

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-virtualenvapt-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

Page 99: Instalar un servidor de correo seguro en ubuntu

. 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

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/shexec 2>&1echo 'ISPwebAdmin starting.'cd /var/vmail/ispwebadmin

Page 100: Instalar un servidor de correo seguro en ubuntu

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 daemontoolssvc -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 -eLOG=/var/log/runit-ispwebadmintest -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

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:

Page 101: Instalar un servidor de correo seguro en ubuntu

[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:[email protected]/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

Page 102: Instalar un servidor de correo seguro en ubuntu

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       localhost127.0.1.1       server1.lan  server1192.168.1.100   server1.no-ip.org    server1127.0.0.0       server1.no-ip.org

# The following lines are desirable for IPv6 capable hosts::1     localhost ip6-localhost ip6-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::2 ip6-allrouters

Page 103: Instalar un servidor de correo seguro en ubuntu

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 serverOPTIONS="-u bind -t /var/lib/named"

Page 104: Instalar un servidor de correo seguro en ubuntu

creamos los siguientes directorios:

mkdir -p /var/lib/named/etcmkdir /var/lib/named/devmkdir -p /var/lib/named/var/cache/bindmkdir -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 3mknod /var/lib/named/dev/random c 1 8chmod 666 /var/lib/named/dev/null /var/lib/named/dev/randomchown -R bind:bind /var/lib/named/var/*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;

Page 105: Instalar un servidor de correo seguro en ubuntu

        file "/etc/bind/zones/no-ip.org.db";        };

zone "3.13.10.in-addr.arpa" {     type master;     file "/etc/bind/zones/rev.0.168.192.in-addr.arpa";};

creamos el directorio

mkdir /etc/bind/zones

creamos el archivo

nano /etc/bind/zones/no-ip.org.db$TTL 1500@  IN SOA server1.tm.local. root (                             2007062703        ;serial                             28800             ;refresh                             3600              ;retry                             604800            ;expire                             38400 )           ;minimum 25 minutesno-ip.org.      IN      NS      server1.no-ip.org.server1         IN      A       192.168.0.100no-ip.org.      IN      MX      10    server1.no-ip.org.

no olviden modificar server1 por el nombre de su subdominio!!! que eligieron durante la configuración de la IP externa en la parte II de este tutorial

ahora creamos el archivo /etc/bind/zones/rev.3.13.10.in-addr.arpa

nano /etc/bind/zones/rev.3.13.10.in-addr.arpa$TTL 1500@  IN SOA server1.tm.local. root (                             2007062703        ;serial                             28800             ;refresh                             3600              ;retry                             604800            ;expire                             38400 )           ;minimum 25 minutes

                     IN    NS     server1.no-ip.org.100                  IN    PTR    server1.no-ip.org.

editamos el archivo /etc/bind/named.conf.options y descomentamos la sección (quitando los símbolos "//" al inicio) que se vea como está

forwarders {      # Replace the address below with the address of your ISP DNS server      0.0.0.0;};

tenemos que modificar esta dirección con el DNS que nos provee nuestro ISP

ahora editamos

Page 106: Instalar un servidor de correo seguro en ubuntu

nano /etc/resolv.conf

y agregamos

search no-ip.orgnameserver 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).

Page 107: Instalar un servidor de correo seguro en ubuntu

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

Page 108: Instalar un servidor de correo seguro en ubuntu

Entramos al asistente SPF para crear los Registros MX (mail exchange record):

Page 109: Instalar un servidor de correo seguro en ubuntu

En la parte de arriba hay un enlace a Openspf.org:

Page 110: Instalar un servidor de correo seguro en ubuntu

y hay un explicación de los errores comunes para crear los registros SPF, se los traduzco aquí:

Errores comunes al crear un registro SPF

Los registros SPF puede ser muy simples (v = spf1 a-all), pero también puede ser bastantes complejos, para dar cuenta de la multitud de diferentes configuraciones de

Page 111: Instalar un servidor de correo seguro en ubuntu

servidor de correo saliente que existen en Internet. Los recién llegados a SPF a menudo parecen cometer errores similares al crear su primer registro SPF. En general, usted debe:

* Comience haciendo una lista de servidores de correo* Crear una lista de sus dominios* Lista un servidor una sola vez* Sólo lista los servidores de correo saliente* Utilice únicamente "mx" si el MX es usado para el correo saliente* Utilice "mx" con los nombres de dominio, no los nombres de servidor de correo* No dé por sentado - especialmente si usted es un proveedor de Internet* Sólo se "incluyen" registros SPF existentes* Publicar los registros SPF para los nombres HELO utilizado por los servidores de correo* Publicar los registros nulos SPF para que tu dominio no envíe mensajes de correo* Pon a prueba tu nuevo registro SPF para asegurarse de que es válido* Publicar su registro SPF en el servidor DNS correcto* Permitir el almacenamiento en caché de DNS durante la prueba* Dile a tus usuarios!

Comience haciendo una lista de servidores de correo

El objetivo de SPF es hacer publico los dominios de sus servidores de correo. A menudo ayuda a hacer una lista antes de comenzar. Tenga en cuenta si alguno de los siguientes se utilizan para enviar correo:

* Servidor web* Servidor de correo en la oficina (por ejemplo, Microsoft Exchange)* Servidor de correo de su ISP* Servidor de correo de sus usuarios finales "ISP de casa"* Cualquier otro servidor de correo

Sólo el servidor de correo final es relevante. Si su empresa tiene una configuración más complicada cuando un servidor de correo interno rutas a través de un servidor de correo saliente para la entrega al mundo, sería sólo el servidor de correo saliente se enumeran en el SPF.

Crear una lista de sus dominios

Lo más probable es que haya más de un dominio. Los dominios que no sean utilizadas por usted todavía puede ser objeto de abuso por los spammers! Ver también Publicar registros SPF nulos para ...

Listar un servidor una sola vez

En última instancia, las búsquedas SPF resuelve en una dirección IP. No es necesario enumerar el mismo servidor con varios nombres de host (por ejemplo, "example.com" y "www.example.com", que tanto se resuelven en la misma IP). De hecho, hacerlo es un poco más difícil en los servidores DNS desde un servidor de recepción progresando a

Page 112: Instalar un servidor de correo seguro en ubuntu

través de sus registros podrá ser obligado a realizar múltiples búsquedas de DNS, cuando sólo hace referencia al nombre del servidor una vez hubiera sido suficiente.

Si la IP del servidor raramente cambia, puede utilizar el IP4:x.x.x.x (o IP6) notación para los destinatarios pueden evitar por completo las búsquedas de DNS. Dado que hay un límite de 10 búsquedas de DNS por registro SPF, especificando una dirección IP o rango de direcciones es preferible que las largas listas de servidores de correo saliente.

A menudo un registro SPF se puede condensar a algo como "v=spf1 IP4:x.x.x.x -all" si sólo hay un servidor de correo saliente.

Sólo listar servidores de correo saliente

Objetivo de SPF es la publicación de una lista de servidores de correo saliente. Los servidores que no entrega su correspondencia en el mundo, tales como servidores web o servidores de correo entrante solamente, no debe aparecer.Utilice sólo "mx" si los servidores MX se utilizan para el correo saliente.

A veces, cuando se utiliza la configuración es fácil añadir el mecanismo "mx". Sin embargo los registros MX se utilizan para enrutar el correo entrante para su organización, y el mismo servidor puede o no pueden utilizarse para el correo saliente. Si la dirección IP de su servidor de correo saliente está cubierto por una a, IP4, u otro mecanismo, no es necesario hacer referencia que el servidor de nuevo utilice el mecanismo "mx" (véase la listar un servidor una sola vez arriba). Si los servidores que aparecen en los registros MX sólo se utilizan para el correo entrante, no es necesario utilizar el mecanismo de mx.

Utilice "mx" con los nombres de dominio, no los nombres de servidor de correo

Especificar mx:mailserver.example.com es generalmente incorrecta, a menos que realmente quieren validación SPF para buscar todos los hosts que acepte correo para el dominio "mailserver.example.com". (Por lo general, no habrá ningún host tal, porque "mailserver.example.com" en sí es un host, no un dominio.) Esto no se mostrará como un error de sintaxis, sin embargo, simplemente no coinciden con nada.

El uso correcto de validación con los registros MX para "example.com" es mx:example.com, o si desea especificar un nombre de host particular del servidor de correo o una IP, a:mailserver.example.com ip4:x.x.x.x Por último, tenga en cuenta que cuando la regla SPF se almacena como un registro DNS asociado con "example.com", entonces "example.com" es el dominio predeterminado para la regla, entonces mx por su propia cuenta (sin dominio especificado explícita) es suficiente para comprobar la dirección IP del remitente en contra de todos los MX en el host de correo enlistados para "example.com", en ese contexto.

No dé por sentado - especialmente si usted es un proveedor de Internet

Si usted recibe e-mail por los demás, no basta con crear un registro SPF para un cliente sin investigar los servidores de correo electrónico que utiliza los clientes. Usted puede encontrar que ha impedido u obstaculizado a su cliente la entrega de correo saliente de

Page 113: Instalar un servidor de correo seguro en ubuntu

su servidor de correo en la oficina, por ejemplo, o de los usuarios finales que envían correo a través de servidor de correo ISP de su casa.

Sólo "incluir" registros SPF existentes

Digamos que usted desea incluir a su web de la empresa servidores de correo saliente en su registro SPF. Digamos también que Network Solutions aloja el sitio web y el correo electrónico. Usted puede tener la tentación de usar algo como "include:networksolutions.com" en su registro SPF. Sin embargo, hay dos posibles problemas con esto. Al escribir estas líneas, Network Solutions no publica un registro SPF para el dominio networksolutions.com. Por lo tanto el uso incluyen: networksolutions.com inmediatamente hace a su registro no válido.

El otro problema es más sutil: "include:networksolutions.com" se incluyen los servidores de correo autorizados a enviar correo desde el dominio networksolutions.com. Esto puede o no puede ser la misma lista de servidores de correo que utiliza Network Solutions para enviar correo usando clientes de dominios! A veces, un proveedor de Internet va a crear un registro SPF especial que los clientes pueden incluir en su registro, como "as_spf.example.com". Si desea utilizar el servidor de correo de su ISP usted debe preguntar a ellos si mantienen un registro SPF para que sus clientes lo incluyan, o de lo contrario tendrá que cambiar su registro cada vez que su proveedor de Internet, añade, quita o cambia un servidor de correo nombre y/o la dirección.

Publicar los registros SPF para para HELO utilizado por los servidores de correo

Comprobación de nombres HELO/EHLO es recomendado por el RFC SPF. La publicación de los registros de estos nombres es una parte importante del protocolo SPF. HELO o EHLO en su versión moderna se utiliza cuando el correo es de <>, incluso si el receptor no hace el 100% de las comprobaciones HELO.

La publicación de una regla HELO implica la creación de un registro SPF vinculados con el FQDN HELO que se utiliza su servidor de correo (por ejemplo: "mailserver.example.com"). Normalmente esto debería ser una regla SPF totalmente independiente a la que se comprueba con las direcciones en el dominio que podría estar asociado con, por ejemplo "example.com". Un ejemplo sencillo de dos políticas pueden ser:

example.com. IN TXT "v=spf1 mx -all"mailserver.example.com. IN TXT "v=spf1 mx -all"

La primera regla sería activado por cualquier dirección que termina en "@example.com", y se validan como un correo electrónico sólo si se trata de una dirección IP asociada a un registro MX para "example.com". La segunda regla sería activado por una identificación HELO de "mailserver.example.com", y que valida el correo electrónico sólo si proviene de la dirección IP asociada a ese servidor.

Otra razón para tomar en cuenta los nombres de HELO tiene que ver con la publicación de registros SPF nulos para tu dominio que no envíe mensajes de correo. Suponga que usted consulta la información de que la FAQ, pero no pensar en los nombres HELO, sin

Page 114: Instalar un servidor de correo seguro en ubuntu

darse cuenta que puede negar el derecho de los servidores para enviar correo electrónico. Un ejemplo: que una nube de servidores web puedan enviar formularios de correo electrónico, usando "[email protected]" como la dirección del remitente. Cada servidor web utiliza (como debería) su propio nombre como parámetro HELO.

www.example.com. IN TXT "v=spf1 -all"web01.example.com. IN TXT "v=spf1 -all"web02.example.com. IN TXT "v=spf1 -all"web03.example.com. IN TXT "v=spf1 -all"

A pesar de que no hay direcciones de correo electrónico como "[email protected]", el nombre de "web03.example.com" se utiliza para el correo electrónico!

Si no publican una política SPF para dominios tales, serán juego de spoofers. Y si lo hace publicar una política de SPF, es mejor permitir a su host utilizar su propio nombre.

Publicar registros SPF nulos para que tu dominio no envíe mensajes de correo

Una vez que haya protegido sus dominios de envío de correo con SPF, si alguien está tratando de hacer spoof (suplantar su identidad), a continuación, lo primero que intentaremos es inundar de dominios que no son de envío de correo. Publicación de "v=spf1 -all", dice que un dominio no envía correo. A modo de ejemplo, podría publicar:

example.com. IN TXT "v = spf1 a:mail.example.com -all"mail.example.com. IN TXT "v=spf1 -all"www.example.com. IN TXT "v=spf1 -all"

Pon a prueba tu nuevo registro SPF para asegurarse de que es válido

Use una herramienta de prueba para probar cualquier nuevo registro SPF.Anuncie su registro SPF en el servidor DNS correcto

SPF está basado en las búsquedas de DNS, así que para que el mundo pueda encontrar el registro SPF usted necesita crear esto en el servidor DNS correcto. Si usted no sabe que están en la "autoridad" (principal) de los servidores DNS de su dominio, hacer una búsqueda "whois" en su dominio o pregunte a su empresa de alojamiento web.

Permitir el almacenamiento en caché de DNS durante la prueba

Recuerde que si usted está usando una utilidad de pruebas para buscar su registro SPF en el DNS, es necesario esperar hasta que su TTL (Time to Live) expire y el cambio se propague al mundo antes la utilidad no verá ningún cambio. A menudo es más fácil pegar su registro SPF en el lugar de la utilidad, de modo que los cambios se verán de inmediato.

Dile a tus usuarios

Page 115: Instalar un servidor de correo seguro en ubuntu

No se olvide de dar instrucciones a las personas que necesitan enviar correo utilizando el dominio que acaba de protejer. Es posible que necesite configurar SMTP AUTH en su cliente de correo electrónico, por ejemplo, y que tendrá que asignar un nombre de usuario y contraseña. Si el envío de los ordenadores del hotel (o lo que sea) está prohibido, lo que necesitan saber sobre ella.

____________________________________________________________________________________________________________________________

Entonces ya podemos crear nuestro SPF:

ya sea en la página de openspf

Page 116: Instalar un servidor de correo seguro en ubuntu

o en la de no-ip que es donde se "debe" hacer:

Con esto terminamos la configuración de nuestro registros DNS que podemos colocar en nuestro servidor DNS.

Page 117: Instalar un servidor de correo seguro en ubuntu

INSTALACIÓN DEL WEBMAIL

Instalación de Squirrelmail

aptitude install squirrelmailln -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 Preferences2. Server Settings3. Folder Defaults4. General Options5. Themes6. Address Books7. Message of the Day (MOTD)8. Plugins9. Database10. Languages

D. Set pre-defined settings for specific IMAP servers

C Turn color onS Save dataQ 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 somepreferences that work better with some servers that don't work sowell with others. If you select your IMAP server, this option willset some pre-defined settings for that server.

Please note that you will still need to go through and make sureeverything is correct. This does not change everything. There areonly a few settings that this will change.

Please select your IMAP server:bincimap = Binc IMAP servercourier = Courier IMAP servercyrus = Cyrus IMAP server

Page 118: Instalar un servidor de correo seguro en ubuntu

dovecot = Dovecot Secure IMAP serverexchange = Microsoft Exchange IMAP serverhmailserver = hMailServermacosx = Mac OS X Mailservermercury32 = Mercury/32uw = University of Washington's IMAP servergmail = IMAP access to Google mail (Gmail) accounts

quit = Do not change anythingCommand >> dovecot

elegimos a dovecot como servidor IMAP

imap_server_type = dovecotdefault_folder_prefix =trash_folder = Trashsent_folder = Sentdraft_folder = Draftsshow_prefix_option = falsedefault_sub_of_inbox = falseshow_contain_subfolders_option = falseoptional_delimiter = detectdelete_folder = false

Press any key to continue...

presionamos cualquier tecla para continuar

SquirrelMail Configuration : Read: config.php (1.4.0)---------------------------------------------------------Main Menu --1. Organization Preferences2. Server Settings3. Folder Defaults4. General Options5. Themes6. Address Books7. Message of the Day (MOTD)8. Plugins9. Database10. Languages

D. Set pre-defined settings for specific IMAP servers

C Turn color onS Save dataQ Quit

Command >> <-- S

Page 119: Instalar un servidor de correo seguro en ubuntu

SquirrelMail Configuration : Read: config.php (1.4.0)---------------------------------------------------------Main Menu --1. Organization Preferences2. Server Settings3. Folder Defaults4. General Options5. Themes6. Address Books7. Message of the Day (MOTD)8. Plugins9. Database10. Languages

D. Set pre-defined settings for specific IMAP servers

C Turn color onS Save dataQ Quit

Command >> S

Data saved in config.phpPress enter to continue... <-- ENTER

SquirrelMail Configuration : Read: config.php (1.4.0)---------------------------------------------------------Main Menu --1. Organization Preferences2. Server Settings3. Folder Defaults4. General Options5. Themes6. Address Books7. Message of the Day (MOTD)8. Plugins9. Database10. Languages

D. Set pre-defined settings for specific IMAP servers

C Turn color onS Save dataQ 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)

Page 120: Instalar un servidor de correo seguro en ubuntu

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 archivotar -xvzf roundcubemail-0.4.2.tar.gz#Eliminamos el tar.gzrm -fr roundcubemail-0.4.2.tar.gz#entramos al directoriocd roundcubemail-0.4.2#eliminamos el instaladorrm -fr installer#cambiamos los permisoschmod 755 temp logs#entramos a la carpeta de configuracióncd config#renombramos el archivo db.inc.php.distcp db.inc.php.dist db.inc.php#renombramos el archivo main.inc.php.distcp main.inc.php.dist main.inc.php#nos logueamos como root en mysqlmysql -u root -p mysql#Digitamos nuestra contraseña de root en mysqlEnter password:#En el prompt de mysql insertamos el siguiente comando para crear la base de datos roundcubedbmysql> create database roundcubedb;#Creamos el usuario roundcubeuser y creamos su contraseñamysql> grant all privileges on roundcubedb.* to roundcubeuser@localhost identified by 'PONGAN_AQUÍ_SU_PASSWORD_NO_QUITEN_LAS_COMILLAS' with grant option;#Recargamos las tablas de permisosmysql> flush privileges;#Salimos de mysqlmysql> quit

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:

Page 121: Instalar un servidor de correo seguro en ubuntu

[...]$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,

Page 122: Instalar un servidor de correo seguro en ubuntu

`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`),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` (`contact_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,`changed` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',`del` tinyint(1) NOT NULL DEFAULT '0',`name` varchar(128) NOT NULL,`email` varchar(128) NOT NULL,`firstname` varchar(128) NOT NULL,`surname` varchar(128) NOT NULL,`vcard` text NULL,`user_id` int(10) UNSIGNED NOT NULL DEFAULT '0',PRIMARY KEY(`contact_id`),INDEX `user_contacts_index` (`user_id`,`email`),CONSTRAINT `user_id_fk_contacts` FOREIGN KEY (`user_id`)   REFERENCES `users`(`user_id`)   /*!40008     ON DELETE CASCADE

Page 123: Instalar un servidor de correo seguro en ubuntu

     ON UPDATE CASCADE */) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;-- Table structure for table `identities`CREATE TABLE `identities` (`identity_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,`del` tinyint(1) NOT NULL DEFAULT '0',`standard` tinyint(1) NOT NULL DEFAULT '0',`name` varchar(128) NOT NULL,`organization` varchar(128) NOT NULL DEFAULT '',`email` varchar(128) NOT NULL,`reply-to` varchar(128) NOT NULL DEFAULT '',`bcc` varchar(128) NOT NULL DEFAULT '',`signature` text,`html_signature` tinyint(1) NOT NULL DEFAULT '0',`user_id` int(10) UNSIGNED NOT NULL DEFAULT '0',PRIMARY KEY(`identity_id`),CONSTRAINT `user_id_fk_identities` 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 */;/*!40014 SET FOREIGN_KEY_CHECKS=1 */;

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

Page 124: Instalar un servidor de correo seguro en ubuntu

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

Page 125: Instalar un servidor de correo seguro en ubuntu

Le damos en continuar y con esto terminaremos esta parte.

Ahora ejecutamos

cd /usr/sharemv squirrelmail squirrelmail.bakmv 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

Page 126: Instalar un servidor de correo seguro en ubuntu

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 › 4141 lecturas Comentarios page (13 comments) Responder