E-mail Linux amb Postfix

De Cacauet Wiki
Salta a la navegació Salta a la cerca

Intro

Postfix és un servei de correu electrònic de codi obert força estàndard en servidors i hostings. Correspon a la part del MTA del Sistema de correu electrònic, pel que s'ocupa d'enviar emails a altres servidors, i guardar els missatges entrants en les carpetes dels usuaris pertinents.

Postfix NO gestiona les connexions de bústia de correu POP3 o IMAP (necessàries per poder accedir des dels clients Thunderbird, Outlook o des de dispositius mòbils). D'això se n'ocupen els mòduls fetchmail del sistema de correu, i en Linux es sol implementar amb els paquets Dovecot o Courier.

La configuració del sistema de correu es pot fer bàsicament de dues maneres:

  • Mailbox: un arxiu per usuari, típicament anomenat mbox i que sol estar al home directory de cada usuari. És el sistema per defecte.
  • Maildirs: enlloc d'un arxiu es guarden tots els emails de cada usuari en la carpeta Mailbox dins de cada home directory, i dins d'aquesta hi ha les possibles subcarpetes per organitzar el correu. És imprescindible si volem utilitzar el servei IMAP.


Configuració Lloc d'Internet

És la més senzilla de realitzar. Només podem utilitzar aquesta configuració si tenim una IP fixa (no dinàmica) per part del nostre ISP. Si tenim una IP dinàmica els servidors d'Internet ens refusaran com a remitent, ja que solen ser spammers.

Quan s'instal·la Postfix només cal tirar aquesta opció "Lloc d'Internet", introduir el domini en el què estem (indicarà el remitent) i ja podem enviar missatges.

Si en algun moment volem reconfigurar-ho sempre es pot fer:

# dpkg-reconfigure postfix


Enviament amb la comanda mail

Podem enviar emails des de la shell amb la comanda mail. Cal que instal·lem el paquet mailutils.

# apt-get install mailutils

Podem comprovar si s'envien exitosament fent:

$ mail [email protected]
Cc: <Enter>
Subject: prova 1 <Enter>
aquest es el cos del missatge
Atentament

Enric <Ctrl+D>

...i mirem la nostra bústia aviam si ens ha arribat. Pot trigar alguns minuts depenent de la configuració del sistema (el correu no sempre s'envia immediatament).

Si posem la comanda mail sense destinatari entrarem en un programa interactiu per llegir els missatges entrants.


Comprovació de la cua de missatges pendents d'enviar

Si experimentem problemes en l'enviament d'emails podem chequejar-ho al logfile corresponent:

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

Enviament erroni

Si trobem una sortida d'aquest tipus és que el servidor destinatari ens està ignorant. status=deferred indica que s'abandona l'enviament d'aquest missatge.

Nov 12 15:38:10 xinxan postfix/smtp[3941]: connect to ALT2.ASPMX.L.GOOGLE.COM[74.125.68.26]:25: Connection timed out
Nov 12 15:38:10 xinxan postfix/smtp[3941]: connect to ALT1.ASPMX.L.GOOGLE.COM[2a00:1450:4010:c07::1a]:25:
Network is unreachable
Nov 12 15:38:10 xinxan postfix/smtp[3941]: E7FC2201589: to=<[email protected]>, relay=none, delay=61, delays=0.18/0.03/61/0,
dsn=4.4.1, status=deferred (connect to ALT1.ASPMX.L.GOOGLE.COM[2a00:1450:4010:c07::1a]:25: Network is unreachable)

Això sol indicar que tenim una IP dinàmica i que ens ignora expressament tal i com hem indicat abans. Si volem poder enviar correus des d'aquesta ubicació, haurem de configurar Postfix per utilitzar un smarthost o accedint a un compte remot.

Enviament exitós

En canvi, si tot ha anat bé, trobarem aquest registre. status=sent indica que el missatge s'ha enviat correctament (i per tant després apareix "removed" de la cua d'enviament):

Nov 12 15:43:58 beach postfix/smtp[25869]: Host offered STARTTLS: [ASPMX.L.GOOGLE.COM]
Nov 12 15:43:58 beach postfix/smtp[25869]: 27179BC006F: to=<[email protected]>, relay=ASPMX.L.GOOGLE.COM[74.125.133.26]:25,
delay=1.4, delays=0.52/0.02/0.66/0.23, dsn=2.0.0, status=sent (250 2.0.0 OK 1447339415 u8si18997094wja.11 - gsmtp)
Nov 12 15:43:58 beach postfix/qmgr[1272]: 27179BC006F: removed

Per suposat la darrera comprovació és que aparegui a la nostra bústia d'entrada de destí. Vigileu que de vegades pot haver anat a parar a la carpeta Spam.


Client en línia de comandes Alpine

Instal·leu el client de correu electrònic alpine per fer una gestió més còmoda dels correus des de la shell.

# apt-get install alpine


Configuració utilitzant compte extern gmail

Primer caldrà configurar Postfix amb dpkg-reconfigure (explicat més amunt) com a "site d'internet" (per exemple, no és gaire rellevant).

Caldrà configurar l'arxiu /etc/postfix/main.cf afegint les següents línies:

relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_use_tls = yes

Creeu el següent arxiu /etc/postfix/sasl_passwd i poseu el següent contingut:

[smtp.gmail.com]:587    [email protected]:password

Li donem els permisos (perquè ningú tafaneji la contrasenya) i el convertim al format .db

# chmod 400 /etc/postfix/sasl_passwd
# postmap /etc/postfix/sasl_passwd

Validem el nostre certificat de confiança:

# cat /etc/ssl/certs/Thawte_Premium_Server_CA.pem | sudo tee -a /etc/postfix/cacert.pem

Recarreguem el nostre el servei

# sudo service postfix reload

Habilitant apps menys segures en Gmail

Les darreres mesures de seguretat de Google impedeixen que utilitzis "aplicacions menys segures". Aquest és el cas de postfix, que no permet una 2-step authentication via web browser com demana ara Google.

Podem habilitar l'ús d'aplicacions menys segures en aquest link:

https://www.google.com/settings/security/lesssecureapps

...i val a dir que és dificil de trobar en els menus de configuració del compte de Google. Ufuf per trobar això...


Configuració en Maildirs enlloc de Mailboxes

Podeu seguir els passos d'aquest tutorial, però hi ha algunes coses que no son del tot correctes:

  1. Cal crear la carpeta ~/Mailbox/ en cada usuari manualment amb els subdirectoris cur , new , tmp a dintre.
    OJU amb els permisos! L'usuari ha de ser el propietari de les carpetes indicades.
  2. ...


Utilitzant túnel SSH per enviar via SMTP

Segons aquest article podem configurar el nostre postfix per enviar email a través d'un túnel SSH. Això és útil si estem darrera d'un tallafocs que ens impedeix l'accés als ports 25 remots o similars de correu sortint. És molt habitual trobar-se això com a mesura de seguretat i evitar spammers des del nostre lloc de treball.

Necessitem, això sí, una màquina remota amb accés SSH i que tingui una configuració de Postfix funcionant (ja sigui com a lloc d'internet amb IP fixa o bé a través d'un correu extern com descrit més amunt).

Un ordinador ha de fer el túnel:

$ ssh -L 0.0.0.0:8025:localhost:25 usuari@maquina_remota

0.0.0.0 permet les connexions des de qualsevol màquina de la xarxa local. La resta redirigeix el port 8025 de la màquina al 25 de la màquina remota.

Si el Postfix remot té una configuració correcta, els Postfix locals poden accedir-hi afegint aquest configuració a /etc/postfix/main.conf:

default_transport = smtp:localhost:8025

Això sí, el Postfix remot ha de permetre les connexions no-només-locals, cosa que és molt insegura. Ho podem permetre sempre i quan estigui darrera d'un firewall i només podem accedir al port 25 a través del tunel. És qüestió d'afegir un element més a mynetworks del servidor Postfix remot:

mynetworks = ... 192.168.1.0/24

(per exemple de xarxa local)