Correo Electr nico Avanzado - jdiezfoto.es · content_filter=amavisfeed:127.0.0.1:10024. AntiSpam -...

94
Correo Electrónico Avanzado Juan Díez-Yanguas Barber

Transcript of Correo Electr nico Avanzado - jdiezfoto.es · content_filter=amavisfeed:127.0.0.1:10024. AntiSpam -...

Correo Electrónico Avanzado

Juan Díez-Yanguas Barber

Contenidos

Introducción

Configuración de Postfix y Dovecot

Postfix Admin. Usuarios y dominios virtuales

Webmail. RoundCube Mail

AntiSpam - Antivirus

Introducción

Servicio de red que tiene como obejtivo el envío y recepción de mensajes

Permite el envío de texto y otro tipo de documentos adjuntos (Extensiones MIME)

Introducción

User Agent

Message Transfer Agent

25/TCP

DNS

MXIN A

Entrega Local

Relay

NO

SI

POP3/IMAP

SMTP

IntroducciónComponentes

Protocolo de envío: SMTP

Gestión de buzones: POP3 / IMAP

Herramientas de administración

Servicio Webmail

AntiSpam - Antivirus

Respuestas automáticas ...

IntroducciónCliente en terminal

$mail

Cola de salida postfix$posqueue  -­‐p

Formato de Buzones

MailBox /var/spool/mail

Maildir $HOME

Nuevo certificadoopenssl  req  -­‐new  -­‐x509  -­‐nodes  -­‐out  cert.pem  -­‐keyout  key.pem  -­‐days  3650

IntroducciónTLS: Sucesor de SSL. Securización de las conexiones de red mediante métodos criptográficos

STARTTLS: Extensión a los protocolos de comunicación en texto plano. Permite comunicación cifrada usando los mismos sin necesidad de usar otros puertos.

PostfixInstalaciónyum  install  postfix

Configuración/etc/postfix/main.cf

/etc/postfix/master.cf

Configuraciónservice  postfix  start

service  saslauthd  start

Postfix - Main.cfmyhostname

Nombre del host

Por defecto: gethostname()mydomain

Nombre de dominio

Por defecto $myhostname menos primer componente

Postfix - Main.cfmyorigin

Dominio de origen de los mensajes enviados

Por defecto: $myhostname

inet_interfaces

Interfaces en las que escucha el servidor

Por defecto: all

Postfix - Main.cfmydestination

Dominios seleccionados como entrega localmynetworks,  mynetworks_style

Orígenes de confianza: relayrelay_domains

Dominios de relay permitidos a cualquier usuario

Por defecto: $mydestination

Postfix - Main.cfdisable_vrfy_command

Deshabilita comando VRFY. Preguntar si una cuenta de correo existe o no

smtpd_use_tls

Servidor admite STARTTLS. No obliga a su uso

smtpd_tls_auth_only

Las conexiones SMTP-AUTH se realizarán solo mediante canales seguros

Postfix - Main.cfsmtpd_tls_cert_file/smtpd_tls_key_file

Certificado y clave privada del servidorsmtpd_sasl_auth_enable

Activa SMTP-AUTHbroken_sasl_auth_clients

Política a seguir con clientes sin soporte para SMTP-AUTH

Postfix - Main.cfsmtpd_sasl_security_options

Opciones en caso de fallo de los métodos de autenticación.

Recomendado: nonanonymous

tls_random_source

Recomendado: dev:/dev/urandom

Postfix - Main.cf

smtpd_recipient_restrictions  =  permit_sasl_authenticated,  permit_mynetworks,  reject_unauth_destination

Relay habilitado para usuarios autenticados

Postfix - Configuración Cliente

Dovecot

DovecotInstalación

yum  install  dovecot

Configuración/etc/dovecot.conf

Certificados instalados. Crea PKI completa en la instalación/etc/pki/dovecot

Serviciosservice  dovecot  start

Inicio de Sesionopenssl  s_client  -­‐connect  mail.sample.com:pop3s

Dovecot

Dovecot - Configuración

Dovecot - Configuraciónprotocols

Protocolos activos: pop3(s), imap(s)mail_location

Formato y ubicación de los buzones

Ejemplo: ~/Maildirpop3_uidl_format

UIDL (Unique Mail Identifier)

%08Xu%08Xv: Requerido en Outlook 2003 vía POP3

Dovecot - Configuración

Dovecot - Configuraciónssl_disable

Seguridad de Dovecot

Activar seguridad: ssl_disable=no

ssl_cert_file  /  ssl_key_file

Certificados de SSL

Posibilidad de ser diferentes para los distintos protocolos: protocol  imap  {...}

Dovecot - Configuracióndisable_plaintext_auth  =  yes

Deshabilita autenticación con texto plano salvo que se haya establecido primero un canal seguro SSL/TLS

Inicios de sesión que no son en texto plano han sido diseñados para ser seguros incluso si capa de seguridad SSL dado que usan hashes MD5 y DES

Dovecot - Configuración del cliente

Postfix Admin

Postfix con soporte para MySQLpostconf  -­‐m

Instalación de MySQLyum  install  mysql-­‐server  mysqladmin  -­‐u  root  password  root

Postfix Admin

Configuración MySQLcreate  database  postfix;

CREATE  USER  postfixu  IDENTIFIED  BY  'postfix';

GRANT  ALL  PRIVILEGES  ON  *  .  *  TO  postfixu;

FLUSH  PRIVILEGES;

mysqladmin  -­‐u  postfixu  password  postfix

Postfix AdminInstalación (tar.gz)

Directorio: /usr/share/wgettar  -­‐xvzf

mv  postfixadmin-­‐2.3.6  postfixadmin

Configuración/usr/share/postfixadmin/config.inc.php

Postfix Admin$CONF[‘configured’]  =  true;

Configurado y listo para iniciar$CONF[‘postfix_admin_url’]  =  ‘/mailadmin’;

URL de acceso a la administración$CONF[‘domain_path’]  =  ‘YES’;

Buzones guardados separados por dominios

Postfix Admin

Configuración de acceso a MySQL$CONF[‘database_type’]  =  ‘mysql’;

$CONF[‘database_host’]  =  ‘localhost’;

$CONF[‘database_user’]  =  ‘postfixu’;

$CONF[‘database_password’]  =  ‘postfix’;

$CONF[‘database_name’]  =  ‘postfix’;

Postfix - Admin$CONF[‘encrypt’]  =  ‘md5crypt’;

Activa encriptación de las contraseñas de acceso

$CONF[‘emailcheck_resolve_domain’]=‘NO’;

Verifica la resolución de dominios al crear nuevas cuentas

Postfix AdminConfiguración Apache

Configuración: /etc/httpd/conf/httpd.confAlias  /mailadmin  /usr/share/postfixadmin

<Directory  “/usr/share/postfixadmin”>

Order  allow,deny

Allow  from  all

</Directory>

Instalación de PHPyum  install  php  php-­‐mysql  php-­‐imap  php-­‐mbstring

Inicio del servidor web y MySQLservice  httpd  startservice  mysqld  start

Postfix Admin

Configuración de Password para setup$CONF[‘setup_password’]

Crear cuenta de administración

Crear dominios virtuales

Crear buzones virtuales

Postfix Admin

Postfix AdminNuevo Dominio virtual

Postfix AdminNuevo Buzón virtual

Postfix - Servidores y cuentas virtuales

Crear usuario real de soporteuseradd  vmail  -­‐p  vmail

UID: 505

GID: 505

Home: /home/vmail/

Postfix - Servidores y cuentas virtuales

Dominios Virtuales: /etc/postfix/mysql-domains.cfhosts  =  localhostuser  =  postfixupassword  =  postfixdbname  =  postfixtable  =  domainselect_field  =  domainwhere_field  =  domainadditional_conditions  =  and  backupmx  =  '0'  and  active  =  '1'

Postfix - Servidores y cuentas virtuales

Usuarios virtuales: /etc/postfix/mysql-users.cfhosts  =  localhostuser  =  postfixupassword  =  postfixdbname  =  postfixtable  =  mailboxselect_field  =  maildirwhere_field  =  usernameadditional_conditions  =  and  active  =  '1'result_format  =  %sMaildir/

%s ----> dominio/usuario@dominio/Maildir/. %u/Maildir ---->/dominio/usuario/Maildir/.

Postfix - Servidores y cuentas virtuales

Alias virtuales: etc/postfix/mysql-aliases.cfhosts  =  localhostuser  =  postfixupassword  =  postfixdbname  =  postfixtable  =  aliasselect_field  =  gotowhere_field  =  addressadditional_conditions  =  and  active  =  '1'

Postfix - Servidores y cuentas virtuales

Test de configuración$postmap  -­‐q  efirel.com  mysql:mysql-­‐domains.cf

-­‐>efirel.com

$postmap  -­‐q  [email protected]  mysql:mysql-­‐users.cf

-­‐>efirel.com/[email protected]/Maildir/

$postmap  -­‐q  [email protected]  mysql:mysql-­‐aliases.cf

-­‐>[email protected]

Postfix - Servidores y cuentas virtuales

Configuración en Main.cfvirtual_mailbox_domains  =  mysql:/etc/postfix/mysql-­‐domains.cf

virtual_mailbox_maps  =  mysql:/etc/postfix/mysql-­‐users.cf

virtual_alias_maps  =  mysql:/etc/postfix/mysql-­‐aliases.cf

virtual_mailbox_base  =  /home/vmail

virtual_uid_maps  =  static:505

virtual_gid_maps  =  static:505

Postfix - Servidores y cuentas virtuales

mydestination  =  $myhostname,  localhost.$mydomain,  localhost

No debe aparecer $mydomain, los dominios ahora están en la BD. De ponerlo no llega a buscar en la BD

#home_mailbox  =  Maildir/

Ahora los directorios de los buzones vienen de la BD

Dovecot - Servidores y cuentas virtuales

auth_username_format  =  %Lu

Formato de búsqueda del usuario en la base de datos, tratamiento anterior a la búsqueda.

%Lu: Cambio a minúsculas

Dovecot - Servidores y cuentas virtuales

Configuración con MySQLpassdb  sql  {

args  =  /etc/dovecot-­‐mysql.conf

}

Configuración del usuario real de soporteuserdb  static  {

args  =  uid=505  gid=505  home=/home/vmail/%d/%u

}

#Ser  coherente  con  la  configuración  de  Postfix  en  la  ubicación  de  los  buzones

%d ->Dominio%u ->Usuario (usuario@dominio)%n ->Usuario (usuario sin dominio)

Dovecot - Servidores y cuentas virtuales

Posible problema: Incoherencia en la ubicación de los buzones

Ser coherentemail_location  =  maildir:/home/vmail/%d/%u/Maildir

Comentar configuración anterior#mail_location  =  maildir:~/Maildir

Dovecot - Servidores y cuentas virtuales

Fichero de configuración de acceso a MySQL

driver  =  mysql

connect  =  host=localhost  dbname=postfix  user=postfixu  password=postfix

default_pass_scheme  =  CRYPT

password_query  =  SELECT  password  FROM  mailbox  WHERE  username  =  '%u'  AND  active  =  '1'

Posible fallo: Formato de la contraseña

Ser coherente con la configuración de la Base de Datos

Formato de la contraseña, en la BD está como MD5, si se pone PLAIN falla por no hacer la huella MD5 en la comparación

Webmail - RoundCubeInstalación (tar.gz)

Directorio: /usr/share/wget

tar  -­‐xvzf

mv  roundcubemail-­‐0.9.0  roundcubemail

Configuración/usr/share/roundcubemail/config/main.inc.php

/usr/share/roundcubemail/config/db.inc.php

Asistente: http://domain/webmail/installer

Webmail - RoundCube

Configuración apache

Configuración: /etc/httpd/conf/httpd.confAlias  /webmail  /usr/share/roundcubemail

<Directory  “/usr/share/roundcubemail”>

Order  allow,deny

Allow  from  all

</Directory>

Webmail - RoundCube

Webmail - RoundCube

Requisitos

PHP 5.2.1 o superior

Json

Xml Parser

MySQL 5.3 o superior

Webmail - RoundCube

Webmail - RoundCube

Cumpliendo los requisitos

Activar repositorios de Epel/etc/yum.repos.d/epel.repo[epel]enabled  =  1

Webmail - RoundCube

Cumpliendo los requisitos

Comprobar disponibilidad de los paquetes de php instalados en las versiones posteriores

$yum  list  installed  |  grep  php  |  cut  -­‐d'  '  -­‐f1

$yum  search  php53  |  cut  -­‐d'  '  -­‐f1  |  grep  php

Webmail - RoundCube

Cumpliendo los requisitos

Eliminar versiones anteriores de php$yum  remove  php  php-­‐cli  php-­‐common  php-­‐imap  php-­‐mbstring  php-­‐mysql  php-­‐pdo

Webmail - RoundCube

Cumpliendo los requisitos

Instalación de las versiones actuales de php53

$yum  install  php53  php53-­‐cli  php53-­‐common  php53-­‐imap  php53-­‐mbstring  php53-­‐mysql  php53-­‐pdo

Webmail - RoundCube

Cumpliendo los requisitos

Otros paquetes necesariosyum  install  php53-­‐mcrypt

yum  install  php53-­‐intl

yum  install  php53-­‐xml

Webmail - RoundCube

Cumpliendo los requisitos

Configuración de la zona horaria de php/etc/php.inidate.timezone  =  “Europe/Madrid”

Webmail - RoundCube

Configuración de la Base de DatosCREATE  DATABASE  roundcube;/usr/share/roundcubemail/SQL/mysql.initial.sql

El asistente de configuración puede crear el Schema de la Base de Datos

Webmail - RoundCube

Webmail - RoundCube

Webmail - RoundCube

Webmail - RoundCube

Webmail - RoundCube

Webmail - RoundCube

Webmail - RoundCube

Webmail - RoundCube

Webmail - RoundCube

Webmail - RoundCube

Webmail - RoundCube

Completando la configuración

Crear el Schema de MySQL con el asistente

Permisos de lectura$chmod  666  /usr/share/roundcubemail/temp/

$chmod  666  /usr/share/roundcubemail/logs/

Webmail - RoundCube

Webmail - RoundCube

Webmail - RoundCube

Configuración adicional una vez completada la instalación

Desactivar el instalador. Dos opciones$rm  -­‐rf  /usr/share/roundcubemail/config/main.inc.php

$rcmail_config[‘enable_installer’]  =  false;

Webmail - RoundCube

Webmail - RoundCubehttp://domain/webmail

Webmail - RoundCubehttp://domain/webmail

AntiSpam - Antivirus

Amavisd-new

SpamAssassin

ClamAV

AntiSpam - AntivirusPostfix

25/TCP

Amavisd-new

127.0.0.1: 10024

Postfix

127.0.0.1: 10025

AntiSpam - AntivirusInstalación. Repositorios de Epel activados

yum  install  spamassassinyum  install  clamav

yum  install  amavisd-­‐newyum  install  clamav-­‐update

Configuración/etc/clamd.conf

/etc/mail/spamassassin/local.cf/etc/amavisd/amavisd.conf

Serviciosservice  amavisd  start

service  clamd  startservice  spamassassin  start

AntiSpam - Antivirus

Configuración Amavisd-new$mydomain  =  ‘efirel.com’

$myhostname  =  ‘server.efirel.com’

AntiSpam - AntivirusConfiguración Amavisd-new$max_servers

Procesos concurrentes de amavisd$daemon_user  /  $daemon_group

Usuario y grupo de ejecución de los procesos$inet_socket_port

Puerto de escucha del filtro amavisd$notify_method  /  $forward_method

Puerto y dirección en la que se devuelven los correos procesados

AntiSpam - Antivirus

AntiSpam - AntivirusSocket de conexión entre Amavisd y ClamAV

AntiSpam - AntivirusConfiguración SpamAssassin

report_safe                          1

use_bayes                              1

bayes_auto_learn                1

skip_rbl_checks                  0

use_razor2                            1

use_dcc                                  1

use_pyzor                              1

whitelist_from  *@efirel.com

AntiSpam - Antivirus

Configuración del Socket en ClamAV/etc/clamd.confLocalSocket  /var/run/clamav/clamd.sock

#TCPSocket  3310

AntiSpam - AntivirusConfiguración del filtro de contenido en Postfix/etc/postfix/master.cf

#  ==========================================================================

#  service  type    private  unpriv    chroot    wakeup    maxproc  command  +  args

#                              (yes)      (yes)      (yes)      (never)  (100)

#  ==========================================================================

amavisfeed  unix        -­‐              -­‐              n                -­‐            2          lmtp

       -­‐o  lmtp_data_done_timeout=1200

       -­‐o  lmtp_send_xforward_command=yes

       -­‐o  disable_dns_lookups=yes

       -­‐o  max_use=20

AntiSpam - Antivirus

Configuración del filtro de contenido en Postfix/etc/postfix/main.cfcontent_filter  =  amavisfeed:127.0.0.1:10024

AntiSpam - AntivirusNueva instancia de Postfix a la escucha de nuevos correos analizados de Amavisd-new/etc/postfix/master.cf

#  ==========================================================================

#  service  type    private  unpriv    chroot    wakeup    maxproc  command  +  args

#                              (yes)      (yes)      (yes)      (never)  (100)

#  ==========================================================================

127.0.0.1:10025  inet  n        -­‐              n              -­‐              -­‐          smtpd

       -­‐o  content_filter=

       -­‐o  smtpd_delay_reject=no

       -­‐o  smtpd_tls_security_level=none

AntiSpam - Antivirus

Amavisd-new crea ficheros para que sean analizados por ClamAV. Problema de permisos/var/spool/amavisd/var/spool/amavisd/tmp

AntiSpam - AntivirusSolución al conflicto de permisos

Añadir usuario bajo el que se ejecuta ClamAV al grupo del usuario de Amavisd/etc/group

AntiSpam - AntivirusSolución al conflicto de permisos

Añadir usuario bajo el que se ejecuta ClamAV al grupo del usuario de Amavisd/etc/group

AntiSpam - Antivirus

Solución al conflicto de permisos/etc/clamd.confAllowSuplementaryGroups  yes

AntiSpam - Antivirus

Permitir el acceso a los directorios de Amavisd-newchmod  755  /var/spool/amavisd/chmod  755  /var/spool/amavisd/tmp/

Preguntas