Posta a manovella

Da MontelLUG.
Menu
MontelLUG frontpage
Aiuto: Come modificare le pagine
Torna indietro

Vediamo una classica configurazione della posta per una macchina casalinga con connessione dial-up fatta su una macchina Debian.
Useremo i seguenti strumenti: exim (il server mail predefinito Debian) o in alternativa esmtp (un MTA leggero), fetchmail (per scaricare la posta dal proprio account), procmail (per smistare la posta prelevata fra diverse mbox) e mutt (per leggere, scrivere e archiviare le mail).

Exim

Innanzitutto configuriamo il server mail perché si occupi di gestire la posta locale e perché usi il server mail del nostro provider per spedire la posta esterna.
Questo va fatto perché molti siti rifiutano la posta da "sconosciuti" perché potenziale spam e perché altrimenti una mail da 1 Mb spedita a 10 persone ruberebbe 10 Mb della nostra banda, anziché 1...

Digitare:

# dpkg-reconfigure exim4-config

e scegliere come Tipo di configurazione del sistema di posta il valore posta inviata tramite uno smarthost; ricevuta via SMTP o fetchmail e quando chiede di inserire il nome host del sistema a cui viene inviata la posta in uscita mettere il proprio server smtp (per es. mail.provider.it).
Alle altre domande lasciare il valore di default.

A questo punto possiamo spedire mail interne agli utenti del nostro computer (noi compresi), cosa utile il piú delle volte perché molti programmi di controllo usano le mail per notificare errori o paranoie varie.

Esmtp

Esmtp è un MTA fatto apposta per chi spedisce la posta tramite un relay server.
Al momento dell'installazione con apt-get vengono chiesti il server esterno, il nome dell'account e la password.
Volendo si possono gestire più identità con diversi server.
esmtp si occupa sia di spedire la posta esterna che di passare al procmail la posta interna, senza tenere aperta la porta 25 del computer.

Fetchmail

Il fetchmail si occupa di prendere la posta dal nostro account mail da qualche parte e rispedirla al nostro utente locale passandola all'exim. Si può fare un file di configurazione globale in cui ci sono gli account di tutti gli utenti del computer in modo che vengano prelevate le mail di tutti in un colpo solo o un file per ogni utente che dovrà arrangiarsi a lanciare il fetchmail.

Vediamo entrambe le configurazioni nel caso di un protocollo POP3 criptato

File locale

Basta creare un file nella propria home chiamato .fetchmailrc cosí fatto:

set bouncemail
set no spambounce
set properties ""
poll popmail.provider.it with proto POP3
       user 'nome-esterno' there with password 'pippo' is 'nome-locale' here options fetchall ssl

Volendo si può usare il programma fetchmailconf che lo genera automaticamente dopo qualche domanda...
N.B. Il fetchmail passa la posta al server mail locale tramite la porta 25. Se si usa l' estmp è quindi necessario dirgli di passarla direttamente al sendmail, aggiungendo questa riga in testa al .fethmailrc

defaults mda "/usr/bin/esmtp -f %F %T"

A questo punto basta scrivere

$ fetchmail

perché il programma si occupi di scaricare la posta di nome-esterno@provider.it e rispedirla all'utente nome-locale. Digitando invece

$ fetchmail -d 120

Il programma rimarrà in memoria e controllerà la posta automaticamente ogni 120 secondi.

File globale

In Debian basta creare un file di configurazione simile al precedente chiamato /etc/fetchmailrc perché automaticamente venga scaricata tutta la posta degli utenti ogni 5 minuti.
Per ulteriori dettagli si guardi in /usr/share/doc/fetchmail, che contiene anche un esempio di fetchmailrc...

Procmail

A questo punto dobbiamo decidere in quali file o directory organizzare la nostra posta e dire al procmail di smistarla per noi in base ad alcune semplici (o complicatissime) regole.
Procmail viene eseguito automaticamente ogni volta che ci arriva della posta e, se opportunamente configurato, si occupa di smistarla.

Vediamo un esempio

Immagianiamo di voler memorizzare le mail in diverse caselle in formato mbox nella cartella ~/Mail, a seconda se appartengano o no a qualche mailing-list o siano spedite da qualcuno in particolare.
Creiamo con touch le seguenti mbox: ~/Mail/nuove/montellug ~/Mail/nuove/news che procmail andrà a riempire (le mail che non rientrano in questa categoria continueranno a stare in /var/mail/nome-locale).

Per definire le regole di smistaggio creiamo il seguente file .procmailrc:

:0:
* ^Subject:.*(\[montellug\]|\[members\]|montellug\.it).*$
Mail/nuove/montellug

:0:
* ^From:.*(@lescienze\.it|@info\.nature\.com|science-mailer@liontamer\.stanford\.edu)\.*$
Mail/nuove/news

Le regole sono date con espressioni regolari (e strani simboletti per il procmail :) in triplette di righe.
La prima riga :0: dice al procmail di analizzare l'header delle mail, la seconda contiene l'espressione regolare da verificare, la terza l'mbox in cui copiare la mail nel caso sia verificata l'espressione regolare.

In pratica basta copiare dai numerosi esempi in man procmailex per fare un po' di tutto senza addentrarsi nei meandri di man awk, man grep, man 7 regex per maneggiare le espressioni regolari.

Mutt

Siamo quasi pronti per leggere la posta col miglior MUA esistente (si veda in proposito Il Nirvana con Mutt).
Adesso dobbiamo istruire il mutt, spiegandogli quali sono le cartelle in cui arriva nuova posta e dove archiviarla.
Al solito si fa editando un file, ~/.muttrc:

# compila automaticamente campo From
set use_from = yes
set from = "nick <nome@provider.com>"

# scelta e ordinamento campi header
ignore *
unignore From: Reply-To To Cc Subject Organization Date X-Mailer Lines User-Agent
hdr_order From: Reply-To X-Mailer User-Agent Organization Date Cc To Subject Lines

# dove salvare posta inviata
set record='~/Mail/spedita'

# default mbox
set mbox='~/Mail/archivio/varie'

# cartella posta
set folder='~/Mail'

# mbox di arrivo mail
mailboxes '~/Mail/nuove/montellug'
mailboxes '~/Mail/nuove/news'
mailboxes '/var/mail/nome-locale'

# dove archiviare le mail
mbox-hook '~/Mail/nuove/montellug' '~/Mail/archivio/montellug'
mbox-hook '~/Mail/nuove/news' '~/Mail/archivio/news'

Adesso lanciando mutt -y (magari dando un alias mutt="mutt -y") ci troviamo davanti la lista delle mailbox di ingresso posta, con segnate quelle con nuove mail.
Premendo tab si naviga invece nella directory Mail per aprire le mbox di archivio...

Buon divertimento :)