Introducción
Para configurar el Servidor de Correo Electrónico
bajo Ubuntu necesitaremos:
·
PostFix:
Envío y Recepción de correo a través del protocolo SMTP
Envío y Recepción de correo a través del protocolo SMTP
·
DOVECOT:
Es el servidor POP e IMAP que gestiona los directorios locales del correo. Además gestiona la autentificación de correo para la descarga de correos
Es el servidor POP e IMAP que gestiona los directorios locales del correo. Además gestiona la autentificación de correo para la descarga de correos
·
MySQL:
Base de Datos
Base de Datos
·
AMAVISD + CLAMav:
Es un gestor para la organización de antivirus y filtro antispam. Es necesario para integrar CLAMav, que es el antivirus más popular y eficaz para LINUX
Es un gestor para la organización de antivirus y filtro antispam. Es necesario para integrar CLAMav, que es el antivirus más popular y eficaz para LINUX
·
SpamAssassin
·
PostGrey:
Es un componente que gestiona las llamadas LISTAS GRISES, un pequeño script escrito en perl. El Grey Listin en un método mediante el cual deniega el primer envío de un remitente desconocido mediante error 450.
Así luchamos contra el spam y su recepción.
Además gestiona listas negras, si recibimos correo desde una dirección o IP que se encuentra en la lista negra, la rechaza.
Es un componente que gestiona las llamadas LISTAS GRISES, un pequeño script escrito en perl. El Grey Listin en un método mediante el cual deniega el primer envío de un remitente desconocido mediante error 450.
Así luchamos contra el spam y su recepción.
Además gestiona listas negras, si recibimos correo desde una dirección o IP que se encuentra en la lista negra, la rechaza.
·
Horde GroupWare:
Es una interfaz Web como la de WebMail + Trabajo en grupo + integración de Herramientas de Seguridad + calendario + tareas + carpetas compartidas,…
Es una interfaz Web como la de WebMail + Trabajo en grupo + integración de Herramientas de Seguridad + calendario + tareas + carpetas compartidas,…
Conexión
Arrancamos la Máquina Virtual de Ubuntu y
buscamos su IP por eth que corresponda.
# if config -a
# ifconfig eth4 up
# dhclient eth4
# ifconfig
En el terminal del anfitrión nos conectamos a
nuestro Ubuntu Virtual mediante SSH.
mensajeria@AULA2-PC03 ~ $ ssh root@192.168.2.165
-p 2222
Y a trabajar!!!!
Instalación
El servidor de correo electrónico debe tener un
Nombre de Host Completamente Cualificado (FQDN)
Este nombre de host debe ser el mismo que se dé
en A, ejemplo, mail.guadalux.org
Es importante porque el nombre de host va
especificado en el encabezado del correo.
Para cambiar dicho nombre:
# hostname mail.guadalux.org
# hostname
# nano /etc/hostname
Modificamos
este nombre que aparece por el de mail.guadalux.org y borremos el otro.
# nano /etc/hosts
Es
algo parecido a un DNS embebido para resolver rutas. Asocia un nombre a una IP.
Añado
en primera línea 127.0.0.1 mail.guadalux.org
# ping mail.guadalux.org
Generar certificados mediante ssl-cert
Vamos a generar los certificados SSL
autogenerados que por defecto van a ser incluidos en nuestro servidor de
correo.
# apt-get install ssl-cert
# make-ssl-cert generate-default-snakeoil
--force-overwrite
Instalamos servidor web, mysql y php en un solo paquete:
# apt-get install lamp-server^
Paquetes adicionales para php:
# apt-get install php-apc php5-memcache php5-curl
php5-gd php-xml-parse
Configuramos php para deshabilitar el valor expse-php:
# nano /etc/php5/apache2/php.ini
expse_php:
Off
# service apache2 restart
Configuramos apache para redirigir el tráfico hacia https:
# nano /etc/apache2/conf.d/security
Server
Tokens Prod
Server
Signature Off
Habilitamos mod rewriter(modo redirecciones) y mod SSL(modo
certificados)
# a2enmod rewrite ssl
# a2ensite default-ssl
# service apache2 reload
# service apache2 restart
Comprobamos la configuración del sitio por defecto de apache:
# nano /etc/apache2/site-available/default
Options
FollowsSymLinks
Allow
Override All
# nano /etc/apache2/site-available/default-ssl
Options
FollowsSymLinks
Allow
Override All
SSLEngine
on
(Miramos
rutas de los certificados)
# service apache2 restart
Ahora vemos nuestra IP mediante ifconfig y la ponemos en un navegador
del anfitrión desde donde estamos trabajando: IT WORKS!!!!
Configuramos para que todo lo que venga por el puerto 80 del servidor,
se redirija a la URL indicada:
# nano /var/www/.htaccess
RewriteEngine
On
RewriteCond
% {SERVER_PORT} 80
RewriteRule
^/?(.*) https://mail.guadalux.org/$1[R,L]
RewriteRule
^/?(.*) https://%SERVER_NAME/$1[R,L]
Instalar y configurar memcached para optimizar el rendimiento del
WebMail:
# apt-get install memcached
Le asigno 64 Megas:
# nano /etc/memcached.conf
-m
64
Instalación de componentes:
# apt-get install mail-server^
Nos sale un asistente donde señalaremos internet y escribiremos mail.guadalux.org
Algunos paquetes complementarios para usar PostFix con MySQL:
# apt-get install postfix-mysql dovecot-mysql
dovecot-imapd postgrey
Herramientas de seguridad:
# apt-get install amavis clamav clamav-daemon
spamassassin php5-imap
# service apache2 restart
Paquetes para aumentar las capacidades de detección de virus:
# apt-get install libnet-dns-perl pyzor razor arj
bzip2 cabextract cpio file gzip nomarch pax unzip zip
Creamos una nueva BD en mysql:
# mysql –u root –p
Password:
root
> create
database mail;
> grant all
on mail.* to ‘mail’@’localhost’ identified by ‘mail’;
Se
han dado todos los permisos al usuario mail
con pasw mail para todo mail
(mail.*)
>
quit;
Instalamos PostFix Admin:
Es una interfaz de administración web donde
gestionamos PostFix. También vamos a implementar el esquema de mysql.
Vamos a la URL
sourceforge.net/projects/postfixadmin, lo descargamos para poder conseguir la
URL de descarga y copiamos esta URL,…
# cd /usr/src/
# mkdir postfixadmin
# cd postfixadmin
# wget URL copiada
# tar xvfz postfixadmin
# cd postfixadmin
# mkdir /var/www/postfixadmin
# mv * /var/www/postfixadmin
Como todo lo que hay dentro de www debe de tener como propietario el
propietario de apache, cambiamos de propietario a postfixadmin:
# chown –R www-data:www-data
/var/www/postfixadmin
Tanto el directorio y los subdirectorios se han cambiado de
propietario, ahora es de www-data.
# cd /var/www
# ls –l
Editamos las propiedades de PostFix Admin:
# cd postfixadmin
# nano config.inc.php
$CONF[‘configured’]=true;
$CONF[‘postfix-admin-url’]=’https://192.168.2.165/postfixadmin’;
$CONF[‘database-host’]=’localhost’;
$CONF[‘database-user’]=’mail’;
$CONF[‘database-pasw’]=’mail’;
$CONF[‘database-name’]=’mail’;
$CONF[‘admin_email’]=’postmaster@guadalux.org’;
$CONF[‘smtp-server’]=’localhost’;
$CONF[‘smtp-port’]=’25’;
$CONF[‘encrypt’]=’md5crypt’;
Nos vamos al navegador de nuestro anfitrión y ponemos:
https://192.168.2.165/postfixadmin/setup.php
Seguimos el asistente de instalación:
Password
de postmaster: postmaster
Copiamos
y pegamos las instrucciones tal y como nos indican.
postmaster
postmaster@guadalux.org
postmaster
postmaster
https://192.168.2.165/postfixadmin/login.php
Y finalizamos restringiendo el acceso al setup por seguridad:
# nano .htaccess
deny
from all
Configuración:
Usu: postmaster@guadalux.org
Pass: postmaster
Nuevo dominio:
Dominio:
guadalux.org
Descripción:
guadalux
Alias:
0
Buzones:
0
Nuevo Buzon
Creamos un nuevo usuario
# useradd –r –u150 –g mail –d /var/vmail –s
/sbin/nologin –c “Virtual maildir” vmail
# mkdir /var/vmail
# chmod 770 /var/vmail
Vemos el propietario del root y lo cambiamos:
# chown vmail:mail /var/vmail
Configuración de DOVECOT
Gestión de IMAP y POP completa, gestión de
directorio de almacenamiento, de autentificación y de enrutamiento de correo
que entra desde PostFix.
1º – Configurar que la autentificación o
almacenamiento se realice en la BD que PostFix a creado.
# nano /etc/dovecot/conf.d/auth-sql.conf.ext
passdb{
driver=sql
args=/etc/dovecot/dovecot-sql.conf.ext
}
userdb{
driver=sql
args=/etc/dovecot/dovecot-sql.conf.ext
}
# nano /etc/dovecot/dovecot-sql.conf.ext
#X
driver=mysql
#X connect
= host=localhost dbname=mail user=mail password=mail
#X
default-pass-scheme=MD5-CRYPT
#X password_query
= SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home,
'maildir:/var/vmail/%d/%n' as userdb_mail,
150 as userdb_uid, 8 as userdb_gid FROM mailbox
WHERE username = '%u' AND active ='1'
#X
user_query=SELECT '/var/vmail/%d/%n' as home, 'maildir:/var/vmail/%d/%n' as
mail, 150 as uid, 8 as gid, concat('dirsize:storage=',quota) as quota FROM mail
WHERE username='%n' AND active='1'
# nano /etc/dovecot/conf.d/10_auth.conf
#X
disable_plaintext_auth=yes
deshabilita
la autentificación en texto plano, solo admite cifrado
#X
!include auth-sql.conf.ext
y
comentamos el anterior
auth_mechanisms
= plain login
#nano /etc/dovecot/conf.d/10_mail.conf
#X
mail_location=maildir:/var/vmail/%d/%n
#X
mail_uid=vmail
#X
mail_gid=mail
#X
firt_valid_uid=150
#Xlast_valid_uid=150
Para
que no se creen mas usuarios de sistema de correl electronico
# mkdir /etc/certs
# cd /etc/certs
# wget http://dovecot.org/doc/mkcert.sk
# chmod +x mkcert.sh
# nano mkcert.sh
CERFILE=$CERTDIR/certificado.pem
KEYFILE=$KEYDIR/certificado.pem
En la URL anterior del certificado abrimos el
openssl.cnf, lo copiamos y pegamops en …
# nano /etc/ssl/dovecot-openssl.cnf
Modificamos
los datos, ES, Sevilla, …
C=ES
C=ES
ST=Sevilla
L=Sevilla
O=Fundación Guadalux
OU=Departamento de Sistemas
CN=mail.guadalux.org
emailAdress=postmaster@guadalux.org
L=Sevilla
O=Fundación Guadalux
OU=Departamento de Sistemas
CN=mail.guadalux.org
emailAdress=postmaster@guadalux.org
# nano mkcert.sh
SSLDIR=/etc/ssl
OpenSSLCONFIG=/etc/ssl/dovwecot-openssl.cnf
# ./mkcert.sh
Vamos a habilitar los certificados:
# nano /etc/dovecot/conf.d/10-ssl.cnf
ssl=yes
ssl-cert=
ssl-key=
Enlazamos DOVECOT con PostFix:
# nano /etc/dovecot/conf.d/10-master.conf
mode=0600
user=vmail
group=mail
#X
unix_listener /var/.......
#X
mode = 0660
user=postfix
group=postfix
# nano /etc/dovecot/conf.d/15_lda.conf
#X
postmaster.......=postmaster@guadalux.org
Cambiamos configuración para que sea accesible
desde DOVECOT como WebMail:
# chown -R vmail:dovecot /etc/dovecot
# chmod -R o-rwx /etc/dovecot
AMAVIS y SpamASSASSIM
# adduser clamav amavis
# adduser amavis clamav
Habilitamos amavis ya que por defecto se
encuentra deshabilitado:
# nano /etc/amavis/conf.d/15_content_filter_mode
#X
@bypass......
#X
\%bypass.......
Lo mismo con SPAMASSASSIM:
# nano /etc/default/spamassassim
#X
enable=1
#X
cron=1
# nano /etc/amavis/conf.d/50_user
Antes
del 1 ponemos, …
$max_servers=3;
indicando que habrá tres procesos simultáneos de Amavis como máximo
$sa_tag_level_defet=-9999;
nivel por defecto para etiquetas
@lookup_sql_dsn=(['DBI:mysql:database=mail;host=127.0.0.1;port=3306','mail','mail'])$sql_select_policy='SELECT
domain FROM domain WHERE concat(“@”,domain) in /%k)';$log_level=2; nivel 2 que
implica guardar errores y warnings
# service
amavis restart
# service
spamassassin restart
Configuración de PostFix:
root@mail:~# cd /etc/postfix/
Pueda manejar la autentificacion de usuarios
desde la BD
root@mail:/etc/postfix# nano
mysql_virtual_alias_domainaliases_maps.cf
Para que postfix sea capaz de enrutar el correo a
los alias de correo
root@mail:/etc/postfix# nano
mysql_virtual_alias_maps.cf
root@mail:/etc/postfix# nano
mysql_virtual_domains_maps.cf
root@mail:/etc/postfix# nano
mysql_virtual_mailbox_domainaliases_maps.cf
root@mail:/etc/postfix# nano
mysql_virtual_mailbox_maps.cf
root@mail:/etc/postfix# nano header_checks
main.cf es el fichero principal de PostFix, lo
eliminamos y copiamos el contenido de lo nuestro.
Habilitamos la autentificacion cifrada, que no
permita la autentificacion anonima.
root@mail:/etc/postfix# rm main.cf
root@mail:/etc/postfix# nano main.cf
Cambiamos estas lineas:
smtpd_sasl_type
= dovecot
→ Habilitamos la autentificacion cifrada, que
no
permita
la autentificacion anonima.
smtpd_tls_cert_file=/etc/ssl/certs/certificado.pem
smtpd_tls_key_file=/etc/ssl/private/certificado.pem
myhostname =
mail.guadalux.org
master.cf es el fichero principal de PostFix, lo
eliminamos y copiamos el contenido de lo nuestro.
Se ha habilitado la autentificación, porque
forzamos como medida de seguridad que el SMTP sea el 465, SMTP sobre SSL
(SMTPS).
Se ha añadido un SOCKET para que amavis pueda
conectar con PostFix.
También creamos un SOCKET para que DOVECOT se
conecte con PostFix.
root@mail:/etc/postfix# rm master.cf
root@mail:/etc/postfix# nano master.cf
root@mail:/etc/postfix# service postfix restart
root@mail:/etc/postfix# service spamassassin
restart
root@mail:/etc/postfix# service clamav-daemon
restart
root@mail:/etc/postfix# service amavis restart
Si me falla un servicio debemos verlo en los LOG,
que se encuentra en /var/log. Hay distintos directorios para distintos
servicios.
El log del correo en sí. Nos encontramos log de
varios.
root@mail:/etc/postfix# tail -f /var/log/mail.log
Es el log de errores.
root@mail:/etc/postfix# tail -f /var/log/mail.err
Ya podemos configurarlo en el Thunderbird!!!
WebMail
Usaremos para WebMail HORDE GroupWare, es de los
mejores que existen y han implementado algunas mejoras, adaptado a trabajos en
grupos, a moviles, IMAP y cifrado.
Esta hecho en php y una apache para correr, y
necesita que instalemos algunas dependencias:
root@mail:/var/www/postfixadmin# apt-get install
php5-dev php5-sasl php-pear php5-tidy php5-imagick
root@mail:/var/www/postfixadmin# apt-get install
php5-geoip libgeoip1 geoip-bin geoip-database php-xml-serializer php5-memcache
php-soap php5-intl libidn11-dev libmagickwand-dev libmagick++4 imagemagick
libsasl2-dev libssh2-php libphp-jpgraph php-http-webdav-server
root@mail:/var/www/postfixadmin# pecl
channel-update pear.php.net
root@mail:/var/www/postfixadmin# pear
channel-update pear.php.net
root@mail:/var/www/postfixadmin# pecl install lzf
root@mail:/var/www/postfixadmin# pear install
--alldeps channel://pear.php.net/Date_Holidays-0.21.5
root@mail:/var/www/postfixadmin# pear install
--alldeps channel://pear.php.net/Numbers_Words-0.16.2
root@mail:/var/www/postfixadmin# pear install
--alldeps channel://pear.php.net/Text_CAPTCHA-0.4.3
root@mail:/var/www/postfixadmin# pear
channel-discover pear.horde.org
root@mail:/var/www/postfixadmin# pear install
horde/Horde_role
root@mail:/var/www/postfixadmin# pear run-scripts
horde/Horde_Role
Filesystem
location for the base Horde application : /var/www
root@mail:/var/www/postfixadmin# pear install -a
-B horde/webmail
Habilitamos las extensiones de Apache para Horde:
# echo
“extension=memcache.so”>/etc/php5/conf.d/memcache.ini
este comando echo es el que usamos para escribir
valores en un fichero (habitualmente la propia pantalla pero en este caso
direccionamos a un fichero concreto)
# echo
“extension=lzf.so”>/etc/php5/conf.d/lzf.ini
# service apache2 restart
# cd /var/www
# ls -l
y vemos que no es el propietario www-data sino
root. Hay que cambiarlo.
# chown -R www-data:www-data /var/www/
# nano /var/www/.htaccess
para modificar la regla que hará que siempre que
se pide http se redireccione a https (SEGURIDAD). Se ejecutará el script
rampage.php
RewriteRule
^(.*) https://mail.guadalux.org/$1 [L]
y comentas la
linea que existe de RewriteRule
Creación de una base de datos en mysql para usar Horde
Configuración previa en anfitrión
Previamente debemos editar # nano /etc/hosts (EN EL ANFITRIÓN, no en el remoto)
192.168.2.165 mail.guadalux.org
(formato IP host donde se resuelve)
para poder usar el navegador del anfitrión ya que
nuestro host no se resuelve en ningun DNS. Esto se hace en desarrollo, en
producción no sería necesario ya que configuraríamos la DNS y un dominio real)
Comprobamos esto entrando en el navegador del
anfitrión, poniendo
https://mail.guadalux.org
y debe salir “INTERNAL SERVER ERROR”
Creación base datos Horde
Entramos en la consola de mysql con
# mysql -u root -p
y la clave que pusimos al instalar mysql que era
“root”
> create database horde; creación de la base de
datos
> grant all
on horde.* to 'horde'@'localhost' identified by 'hordepassword';
con esta línea damos permiso a horde para usar la base de datos y todas sus tablas.
con esta línea damos permiso a horde para usar la base de datos y todas sus tablas.
> quit
Tareas programadas
# nano /etc/crontab (fichero para las tareas
programadas)
Crearemos
tareas programadas para alarmas de Horde, para que le funcionen a los usuarios
cuando las configuren). Realmente lo que haremos será que comprobaremos cada
cinco minutos las alarmas definidas y si las hay las muestra en pantalla
Al final del fichero...
#
# Alarmas HORDE
*/5 * * * * /usr(bin/horde-alarmas
Configuraciones en el webmail
# cd
/var/www/config
# cp
conf.php.dist conf.php
y nos
encontramos que el usuario de nuevo es root luego hay que cambiarlo
# chown -R
www-data:www-data conf.php
en esta
ocasión vamos a editar el fichero usando un asistente web aunque previamente
debemos añadir al fichero .htaccess que antes se modificó la siguiente línea
despues de “ON”
# nano
/var/www/.htaccess
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
# rm /var/www/index.html
Entramos en
https://mail.guadalux.org y nos debe aparecer el asistente Horde Groupware
5.1.2
(símbolo
rueda) Administración / Configuración
Hacemos
clic a la derecha sobre “la
configuración está desactualizada” y entramos en Database (pestaña)
mysql
horde
hordepassword
UNIX Sockets
horde
utf-8
horde
hordepassword
UNIX Sockets
horde
utf-8
Picar sobre El
esquema SQL DB está obsoleto para convertirlo en El
esquema SQL DB está listo.
Vemos que en #
tail -f /var/log/mail.err salen muchos errores de acceso
ERROR QUE NOS
DABA
# postconf -n
Ves toda la
configuración
# dovecot
Nos da un
error, por lo tanto
# nano
/etc/dovecot/conf.d/auth-sql.conf.ext
passdb {
driver=sql
args=/etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver=sql
args=/etc/dovecot/dovecot-sql.conf.ext
}
# dovecot
Ya no da error
# nano
/etc/dovecot/conf.d/10-ssl.conf
ssl_cert =
ssl_key =