correo electr nico avanzado · correo electr nico avanzado juan díez-yanguas barber. contenidos...
TRANSCRIPT
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
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
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