Servidor de Correu electrònic

De MAnteniment INformatic Kike VIlchez
Dreceres ràpides: navegació, cerca

Introducció

Configura un servidor de correu per enviar i rebre correu electrònic en el teu servidor Ubuntu, per fer-ho instal·larem els serveis POSTFIX, SENDMAIL i DOVECOT i aplicarem les corresponents configuracions per poder accedir amb un client de correu o un lector web com roundcube o el complement Mail per Nextcloud. Configurarem el servidor per utilitzar el directori dels usuaris com a bústia o directori de correu ( MailDir) .

Terminología

Abans cal saber que es:

  • MUA - Mail User Agent o el client de correu, per exemple Thunderbird
  • MTA - Mail Transfer Agent o l'Agent que s'encarregarà d'enviar els correus, en aquest cas POSTFIX.
  • MDA - Mail Delivery Agent o Agent de recogida de correu, en aquest cas DOVECOT.

Es molt recomanable configurar les zones DNS en el vostre servidor tot i tenir configurat un domini extern i les portes oberts.

Protocols SMTP, IMAP i POP3

Tallafocs

Caldrà obrir, si cal, les portes de gestió del correu amb:

sudo -s            # Per conertir l'usuari en root
ufw allow 25       # Port per enviament de correu SMTP
ufw allow 143
ufw allow 465      # Port per enviament segur SMTP
ufw allow 587      # Port per envament segur SMTP
ufw allow 993      # Port IMAP 
ufw allow 995      # Port POP3

o simplement amb:

ufw allow Postfix
ufw allow "Dovecot IMAP"

Podem comprovar la connexió a

Comprovar la connexió amb:

nc -zv 192.168.1.240 25
nc -zv mainkivi.info 25

Instal·lació

Farem la instal·lació d'un servidor per enviar correus des del nostre servidor amb certificat SSL i rebent per IMAP:

POSTFIX

POSTFIX és el servei MTA que es farà servir per enviar correos, en Ubuntu la instal·lació es fa amb:

sudo apt install postfix

Durant la instal·lació s'executarà un assistent demanant el tipus de configuració del servidor de correu, i en aquest cas marcarem:

                 ┌────────┤ Postfix Configuration ├─────────┐
                 │ Tipus de configuració del correu:        │ 
                 │                                          │ 
                 │     Sense configurar                     │ 
                 │     Lloc d'Internet                      │ 
                 │     Lloc d'Internet amb «smarthost»      │ 
                 │     Sistema satèl·lit                    │ 
                 │     Només local                          │ 
                 │                                          │ 
                 │                                          │ 
                 │         <D'acord>        <Cancel·la>     │ 
                 │                                          │ 
                 └──────────────────────────────────────────┘

En el següent pas indicarem el nom del domini ( si tenim configurat ja un servei DNS hauria de sortir autmàticament), per exemple:

 ┌────────────────────────┤ Postfix Configuration ├─────────────────────────┐
 │ El nom del correu és el nom de domini que s'utilitza per qualificar      │ 
 │ totes les adreces de correu sense nom de domini. Això inclou el correu   │ 
 │ provinent i destinat a root: no feu que la vostra màquina enviï el       │ 
 │ correu des de root@exemple.org a menys que root@exemple.org us ho hagi   │ 
 │ dit.                                                                     │ 
 │                                                                          │ 
 │ Aquest nom s'utilitzarà en altres programes. Hauria de ser el nom de     │ 
 │ domini completament qualificat (FQDN).                                   │ 
 │                                                                          │ 
 │ Per tant, si «foo@exemple.org» és una adreça de correu local, el valor   │ 
 │ correcte per a aquesta opció seria «exemple.org».                        │ 
 │                                                                          │ 
 │ Nom del correu del sistema:                                              │ 
 │                                                                          │ 
 │ mainkivi.info___________________________________________________________ │ 
 │                                                                          │ 
 │                   <D'acord>                  <Cancel·la>                 │ 
 │                                                                          │ 
 └──────────────────────────────────────────────────────────────────────────┘ 
                                                                              

Farem D'acord i esperem que l'assistent acabi. Continuarem editant el fitxer main.cf:

sudo nano /etc/postfix/main.cf

I editarem les últimes linies deixant-les així:

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = mail.mainkivi.info
mydomain = mainkivi.info
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, mainkivi.info, mail.mainkivi.info, localhost, localhost.localdomain, localhost
relayhost =
mynetworks = 192.168.1.0/24 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

En myhostname fiquem el nom de la zona DNS que servirà d'adreça de servei IMAP i SMTP. En mydomain s'indica el nom que ja hem ficat durant la instal·lació. També editem mydestination afegint el nom de la zona DNS i mynetworks afegint el rang d'IP local on es troba el servidor. Per últim afegiren dues línies més:

mail_spool_directory = /var/spool/mail
home_mailbox = Maildir/

Que indicaràn que l'usuari utilitzarà un directori per cada usuari pels directoris de correu. Tanquem l'editor i reiniciem el servei:

sudo service postfix restart

Aplicant el certificat SSL

Postfix, per defecte, porta un certificat auto-signat però podem aprofitar el certificat generat amb l'entitat certbot que també s'aplica al Servidor Web Apache. En el meu cas ho aplico amb les següents ordres:

  • Primer descarrego amb:
sudo apt install cerbot
  • I aplico el certificat automàticament amb:
sudo certbot certonly -d mainkivi.info,mail.mainkivi.info,www.mainkivi.info --apache --agree-tos --register-unsafely-without-email

En aquest cas ja aplico diferents dominis, aplico la configuració al servidor Apache, dono per llegit les condicions de contracte de l'entitat i el registro sense cap correu. Alternativament, es pot fer pas per pas manualment executant:

sudo certbot

Ara podem comprovar que s'ha creat el certificat (com root) al directori:

cd /etc/letsencrypt/live/mainkivi.info/

NOTA - el nom del directori canviarà segons el que hem escrit. Ara aplicarem aquest certificat en el servidor de sortida de correu electrònic editant de nou:

sudo nano /etc/postfix/main.cf

i editarem les linies de paràmetres TLS deixant-les de la següent manera:

smtpd_tls_cert_file = /etc/letsencrypt/live/mainkivi.info/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mainkivi.info/privkey.pem
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

Obviament, el directori ha de ser el generat pel certificat.

  • Més informació de certbot i letsencrypt en SSL

Ara reiniciem el servei i ja podem continuar configurant el servidor IMAP DOVECOT

DOVECOT

Ara configurarem el servidor de recollida de correu, per fer-ho farem servir Dovecot], un servei gratuït i lliure de recollida de correu IMAP i POP3. La diferencia principal entre aquests dos serveis és que amb POP3 es descarrega el correu al client de correu mentre que amb IMAP es visualitza en el client des del client. En aquest manual farem la configuració corresponent al servei IMAP. Primer instal·lem amb:

sudo apt-get install dovecot-imapd

Una vegada acabat, configurarem el servei. Tota la configuració es troba separada en diferents fitxers en:

cd /etc/dovecot/conf.d

Primer configurarem el fitxer 10-mail.conf on descomentarem la linia:

mail_location = maildir:~/Maildir

I comentem:

#mail_location = mbox:~/mail:INBOX=/var/mail/%u

Amb això cada usuari tendria la bustia en el seu directori. Tanquem el fitxer i continuem creant els directoris de correu amb:

sudo maildirmake.dovecot /etc/skel/Maildir
sudo maildirmake.dovecot /etc/skel/Maildir/.Drafts
sudo maildirmake.dovecot /etc/skel/Maildir/.Sent
sudo maildirmake.dovecot /etc/skel/Maildir/.Trash
sudo maildirmake.dovecot /etc/skel/Maildir/.Templates

I també en l'usuari actual:

sudo cp -r /etc/skel/Maildir /home/myuser/
sudo chown -R myuser:usergroup /home/myuser/Maildir
sudo chmod -R 700 /home/myuser/Maildir

On myuser és l'usuari actual i usergroup el grup que forma part l'usuari. D'aquesta manera tots els usuaris que es creen a partir d'ara, ja tindran el directori del correu preparat. Altra manera és copiant el directori Maildir manualment al directori de l'usuari.

Aplicant SSL

Podem aprofitar el certificat prèviament creat amb certbot i editem el fitxer 10-ssl.conf i canviem els paràmetres SSL de les primeres linies deixant-los:

# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
ssl = yes

# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
# dropping root privileges, so keep the key file unreadable by anyone but
# root. Included doc/mkcert.sh can be used to easily generate self-signed
# certificate, just make sure to update the domains in dovecot-openssl.cnf
ssl_cert = </etc/letsencrypt/live/mainkivi.info/fullchain.pem
ssl_key = </etc/letsencrypt/live/mainkivi.info/privkey.pem

On habilitem el suport SSL/TLS i indiquem la ruta del fitxer de certificat que ja hem aplicat en POSTFIX.

Ara ja podem reiniciar el servei amb:

sudo service dovecot restart

Configurant el client

Per enviar i rebre correus farem servir Thunderbird al ser un programa multi-plataforma gratuït i lliure i que a més ens trobarem en totes les distribucions Linux. Seguint amb la configuració feta, la configuració d'un compte hauria de ser ( i recordeu ficar l'adreça configurada en dovecot i postfix):

  • Paràmetres IMAP:
- Servidor IMAP - mail.mainkivi.info
- Seguretat - STARTTLS
- Port - 143
- Usuari - Un usuari local del sistema
- Password - La contrasenya d'aquest usuari
  • Paràmetres SMTP
- Servidor SMTP - mail.mainkii.info
- Seguretat - STARTTLS
- Port - 25
- Usuari - el mateix usuari local 
- Password - i la seva contrasenya

com que hem configurat el certificat per una entitat de confiança, no ens hauria d'avisar de falta de seguretat. Si tots aquests paràmetres són correctes, ja podem llegir i enviar correus.

Monitoritzant

Podem veure l'informe de configuració a:

/var/log/mail.log

i monitoritzant en temps real amb:

sudo tail -f /var/log/mail.log

També podem comprovar la connexió amb:

nc -zv mail.mainkivi.info 25

D'aquesta manera es farà una petita crida al servidor indicat pel port indicat i comprovarà si està obert el port i és accessible. També es pot fer amb un telnet:

telnet mail.mainkivi.info 25

Problemes coneguts

El primer problema el tindrem quan enviem correus a altres dominis segurs com pot ser GMAIL que, tot i que en l'enviament des del nostre equip no es mostri cap errada, Gmail l'enviarà directament al Correu brosa, això és degut a que la IP que fem servir per connectar-nos a internet segurament ja ha sigut utilitzada en un altre servidor de correu per fer SPAM i per tant el considera com a tal.

- Pendent de solució estable -

Referències

How To Setup Mail Server Using Postfix Dovecot with SSL Certificate on Ubuntu 18.04 LTS