P11. Servidor de correu segur
Contingut
Enunciat
Seguint les instruccions de l'activitat 1, heu de crear un servidor de correu amb SSL.
Requeriments previs
Començarem amb dues màquines virtuals CentOS 7 minimal netes. Una servirà com a DNS i l'altra serà la que donarà el servei de correu. Podríem instal·lar els 2 serveis a la mateixa màquina per estalviar recursos; però en cas de conflicte o problemes serà més fàcil poder gestionar-ho si per a cada servei fem servir una màquina diferent.
Per al servidor DNS podrem utilitzar la nostra documentació per a crear un servidor DNS separat o bé instal·lar-lo a la mateixa màquina que servirà de correu electrònic.
També haurem de deshabilitar sendmail com a MTA per a evitar conflictes amb postfix si és que aquest està instal·lat (en versions noves de CentOS ja no ve preinstal·lat).
systemctl disable sendmail systemctl stop sendmail
Procediment
Per a tenir un servidor de correu electrònic necessitarem tenir 2 servidors: el primer serà un SMTP per a enviar correus. El segon, serà un servidor POP/IMAP que serà el servidor que rebi els correus. L'SMTP el muntarem amb Postfix i el POP/IMAP amb Dovecot.
Postfix (SMTP)
Instal·lació
Començarem instal·lant el paquet necessari amb yum
en cas que no estigui instal·lat.
yum install postfix -y
Configuració
L'arxiu de configuració principal de Postfix és /etc/postfix/main.cf
. L'haurem d'editar de la següent manera per a quadrar els paràmetres del nostre servidor amb els de la configuració:
- Línia 75: la descomentarem i escriurem el nom de domini corresponent al servidor de correu.
myhostname = mail.boeck.cat
- Línia 83: descomentarem i escriurem només el domini de la nostra xarxa.
mydomain = boeck.cat
- Línia 99: descomentem.
myorigin = $mydomain
- Línia 113: descomentem.
inet_interfaces = all
- Línia 116: comentem
#inet_interfaces = localhost
- L´inia 164: comentem
#mydestination = $myhostname, localhost.$mydomain, localhost
- Línia 165: descomentem
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
- Línia 264: descomentem i editem de manera que s'hi reflexin les xarxes del servidor; en aquest cas corresponen a la xarxa vboxnet0, la loopback del servidor i la NAT de VirtualBox, respectivament.
mynetworks = 192.168.56.0/24, 127.0.0.0/8, 10.0.2.0/24
- Línia 419: descomentem.
home_mailbox = Maildir/
- Línia 572: descomentem i editem.
smtpd_banner = $myhostname ESMTP
- Línia 681-688: afegim.
message_size_limit=10485760 mailbox_size_limit=1073741824 smtpd_sasl_type= dovecot smtpd_sasl_path= private/auth smtpd_sasl_auth_enable= yes smtpd_sasl_security_options= noanonymous smtpd_sasl_local_domain= $myhostname smtpd_recipient_restictions=permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject
També haurem de modificar l'arxiu /etc/postfix/header_checks
i afegir al principi aquestes directives per rebutjar correus que no tinguin adreça de correu al remitent.
/^From:.*<#.*@.*>/ REJECT /^Return-Path:.*<#.*@.*>/ REJECT
A l'arxiu /etc/postfix/body_checks
afegirem una directiva de rebuig si en el cos del correu electrònic s'hi troba el text example.com.
/^(|[^>].*)example.com/ REJECT
Posada en marxa
Com tots els serveis, els habilitarem a l'engegada i els posarem en marxa amb enable
i start
; o bé restart
si aja estava funcionant i volem aplciar els canvis de la configuració.
systemctl enable postfix systemctl start postfix
Dovecot (POP/IMAP)
Dovecot és el servei que permet recuperar els correus electrònics per a llegir-los, ja sigui utilitzant el protocol POP o IMAP.
Instal·lació
L'instal·larem amb yum
.
yum install dovecot -y
Configuració
Haurem de modificar 3 arxius:
- 1. /etc/dovecot/conf.d/10-auth.conf
- Línia 10: descomentar i editar.
disable_plaintext_auth = no
- Línia 100: editar.
auth_mechanisms = plain login
- 2. /etc/dovecot/conf.d/10-mail.conf
- Línia 30: descomentar i editar.
mail_location =maildir:~/Maildir
- 3. /etc/dovecot/conf.d/10-master.conf
- Línia 95-100: descomentar i editar.
# Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { mode = 0666 user postfix group postfix }
Posada en marxa
Com qualsevol servei.
systemctl enable dovecot systemctl start dovecot
Configuració de Postfix i Dovecot amb SSL
Crear certificat SSL
Primer de tot haurem de crear un certificat SSL amb la seva clau privada:
[root@mail ~]# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/certs/server.key -out /etc/pki/tls/certs/server.crt Generating a 2048 bit RSA private key .....+++ ................+++ writing new private key to '/etc/pki/tls/certs/server.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:ES State or Province Name (full name) []:Catalunya Locality Name (eg, city) [Default City]:Tona Organization Name (eg, company) [Default Company Ltd]:Boeck Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:mail.boeck.cat Email Address []:guillem@boeck.cat
Configuració
Editarem /etc/postfix/main.cf
i afegirem al final:
smtpd_use_tls = yes smtpd_tls_cert_file = /etc/pki/tls/certs/server.crt smtpd_tls_key_file = /etc/pki/tls/certs/server.key smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache
De manera que definim que Postfix faci servir TLS i li passem el certificat i la clau privada que utilitzarà per a xifrar les comunicacions. Aquests certificats són autosignats i generats a l'apartat anterior; per tant, no seran confiables per un tercer.
A l'arxiu /etc/postfix/master.cf
:
- Línia 26-28: descomentar.
smtps inet n - n - - smtpd # -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes
A l'arxiu /etc/dovecot/conf.d/10-ssl.conf
:
- Línia 8: editar.
ssl = yes
- Línia 14-15: descomentar i editar
ssl_cert = </etc/pki/tls/certs/server.crt ssl_key = </etc/pki/tls/certs/server.key
RoundCube
Requeriments
El programari de Roundcube necessita un servidor web i un de bases de dades. En el nostre cas instal·larem Apache i MariaDB per a suplir la dependència.
yum install httpd mariadb-server -y
els posarem en marxa i habilitarem l'arrencada on boot amb
systemctl enable httpd systemctl enable mariadb systemctl start httpd systemctl start mariadb
haurem d'obrir el port 80 del firewall per a poder accedir a roundcube des de qualsevol màquina de la xarxa; com ara el nostre Fedora amfitrió:
firewall-cmd --add-service=http --permanent firewall-cmd --reload
Configuració MySQL
Primer de tot executarem l'script mysql_secure_installation
per a definir una contrasenya de root i esborrar taules d'exemple i usuaris anònims.
Després crearem un usuari per a roundcube i una base de dades on tingui tots els permisos. En aquest cas:
- Usuari: roundcube
- Contrasenya: password
- Nom BBDD: roundcube
mysql -uroot -p create database roundcube character set utf8 collate utf8_bin; grant all privileges on roundcube.* to roundcube@localhost identified by 'password';
Instal·lació
Instal·larem roundcube des del repositori epel:
yum install epel-release -y yum install roundcubemail -y
S'instal·la sobre /usr/share/roundcubemail
.
El següent pas és importar una base de dades inicial:
cd /usr/share/roundcubemail/SQL/ mysql -uroundcube -p -b roundcube < mysql.initial.sql
Configuració
Primer de tot haurem de modificar la configuració de l'Apache perquè ens permeti accedir des de qualsevol màquina remota al directori on es troba la interfície gràfica de Roundcube. Editarem /etc/httpd/conf.d/roundcubemail.conf
.
- Línies 13 i 30: editar.
Require all granted
I farem restart d'Apache per tal d'aplicar els canvis
systemctl restart httpd
També crec necessari obrir els ports corresponents al servei SMTP i IMAP sobre SSL per tal de poder fer servir aquests servidors de correu des de la xarxa:
firewall-cmd --add-service=smtps --permanent firewall-cmd --add-service=imaps --permanent firewall-cmd --reload
Llavors podrem accedir a http://mail.boeck.cat/roundcubemail/installer (havent configurat prèviament el Fedora perquè utilitzi el DNS que hem muntat anteriorment) i començar a posar a punt el Roundcube via web
Si ens fixem, veurem que ens falta l'extensió PHP per a utilitzar MySQL (o MariaDB). L'haurem d'instal·lar i reiniciar Apache:
yum install php-mysql -y systemctl restart httpd
Un cop fet això, veurem un OK en l'apartat corresponent:
Els apartats importants a configurar són els següents:
Definim host, usuari, password i nom de la base de dades que volem que utilitzi
Haurem de canviar el port d'IMAP per a utilitzar el de IMAP+SSL → 993
També editarem el port SMTP per a usar SMTP+SSL → 465
Finalment, a baix de tot, farem clic a Create Config i descarregarem l'arxiu de configuració que després haurem de pujar al servidor, a la ruta /etc/roundcubemail/config.inc.php
Per acabar, clicarem Continue i avançarem a la pantalla de test on podrem veure si Roundcube té permisos correctes en diversos apartats:
Prova de funcionament
Crearem un parell d'usuaris Linux:
useradd guillem passwd guillem useradd julian passwd julian
Des de la mateixa interfície de prova del RoundCube podem provar el servei SMTP (enviament de correu):
Per a comprovar que hagi arribat, puc utilitzar un client de correu de terminal com ara mutt
. D'aquesta manera, puc veure des del servidor DNS que el correu s'hagi enviat:
su julian mutt -f ~/Maildir
Veiem que hi ha un correu de prova de Roundcube enviat per guillem@boeck.cat
Des de la interfície de Roundcube em puc autenticar com a julian i veure la safata d'entrada on, en efecte, hi ha el correu que he enviat de prova.
Faig doble clic i l'obro per llegir.
Si per exemple, Julian llegeix el missatge i el vol respondre; ho pot fer:
I Guillem pot accedir al servidor i llegir-ne la resposta: