Messa a punto di fdm

Da Wiki di NetBSD Italia.

Versione delle 12:41, 12 set 2009, autore: Leot (Discussione | contributi)
(diff) ← Versione meno recente | Versione corrente (diff) | Versione più recente → (diff)

Questo breve testo introdurrà le basi di fdm guidando il lettore attraverso un basilare processo di configurazione. Verranno mostrate le caratteristiche essenziali, giusto per stimolare l'approfondimento del programma.

Indice

Introduzione

Fdm è un programma per il download (fetching) e lo smistamento (delivery) della posta (mail), da cui presumibilmente il nome (fdm). Fondamentalmente si può considerare un ibrido fra i 2 programmi più famosi e diffusi: fetchmail e procmail. In aggiunta, fdm fornisce qualche funzionalità aggiuntiva come il supporto pcre (Perl-Extended Regular Expression) che consente dei criteri di filtraggio molto potenti, macro per la configurazione condizionale, integrazione con la shell o molto altro. Supporta sia MailBox MailDir sui principali protocolli come POP3, IMAP e le rispettive versioni sicure POP3s e IMAPs.

Installazione

Attualmente il pacchetto non è ancora stato importato su pkgsrc ma è già completamente funzionante il pacchetto di pkgsrc-wip (incluso il supporto per DESTDIR). Per tanto l'installazione si riduce al consueto utilizzo di pkgsrc, con la sola aggiunta del comando relativo al prelevamente dello stesso dal repository di pkgsrc-wip.

  • Download del pacchetto
$ cd /usr/pkgsrc
$ cvs -d :pserver:anonymous@pkgsrc-wip.cvs.sf.net:/cvsroot/pkgsrc-wip co -P wip/fdm
  • Installazione
$ cd wip/fdm
$ make install clean clean-depends

A questo punto fdm è installato.

Configurazione

Data la vasta gamma di direttive, opzioni e parametri di configurazione vari risulta molto complesso, se non impossibile, soddisfare tutte le esigenze in questa guida. Motivo per cui verrà esposta una semplice configurazione di base valida per la maggior parte degli utenti con esigenze contenute. In altre parole si configurerà fdm in modo tale da effettuare le seguenti operazioni:

  • Scaricare la posta da diversi folder di un server IMAP (molto utile nel caso di account come GMail, che mantengono la posta in folder differenti);
  • Filtrare alcune liste di discussione e smistarle nelle relative mailbox;
  • Reindirizzare tutta la posta non filtrata nella MailBox principale (banale).

Si ricorda inoltre che il file di configurazione principale di fdm è ~/.fdm.conf, se questo file non è presente verrà utilizzato il file di configurazione $PKG_SYSCONFBASE/fdm.conf. Perciò il file più opportuno da utilizzare per le prossime sezioni è ~/.fdm.conf.

Aggiunta di un account

Gli account di posta possono essere configurati utilizzando la direttiva account la quale contiene tutte le informazioni necessarie all'autenticazione e il download della posta dal server remoto. Tuttavia essa non contiene alcuna informazione relativa al percorso locale sul quale risiederà la posta ottenuta. Questo compito è delegato alle cosiddette azioni (vedi più avanti).

# Account di prova
account "prova" imaps
   server "imap.gmail.com"
   user "prova@gmail.com"
   pass "password_di_prova"
   folders {
      "Inbox"
      "[Gmail]/Spam"
      "[Gmail]/Trash"
      "[Gmail]/Starred"
   }

L'opzione folders è opzionale, qualora questa non fosse specificata il solo folder Inbox sarà utilizzato di default. Una volta aggiunto il primo account basterà seguire lo stesso identico procedimento per tutti gli altri. Non c'è limite per il numero di account.

Azioni

Al fine di comprendere a pieno i passi di configurazione mostrati in seguito, è necessario avere un minimo di familiarità col concetto di azione. Per la consegna (e il filtraggio) della posta viene effettuato mediante le cosiddette azioni che sono dei comandi che vengono eseguiti automaticamente quando un filtro corrisponde ad una determinata regola di filtraggio. Quindi ogni regola è associata ad una azione la quale verrà eseguita solo per quelle email che rispettano tale regola (eventualmente nessuna). Di norma queste regole sono delle espressioni regolari o, come si vedrà in seguito per lo smistamento della posta non filtrata sulla MailBox principale, delle semplici parole chiave.

Destinazioni (MailBox)

La posta viene smistata nelle varie MailBox in base a dei criteri di filtraggio ben precisi, applicati secondo l'ordine in cui compaiono nel file di configurazione. Qualora non si abbia la necessità di utilizzare dei filtri (come nel caso della MailBox principale) si dovrà comunque utilizzare una azione a tale scopo.

Per definire una azione bisogna utilizzare la parola action seguita da una serie di argomenti. La forma generale è questa:

action <nome> [<utente>] <tipo> <parametri>

Gli argomenti hanno i seguenti significati:

  • nome: corrisponde all'etichetta dell'azione, utilizzata per eseguire successivamente l'azione (tutte le volte che si desidera)
  • utente: il nome o l'ID (UID) dell'utente (o una lista di utenti) che eseguirà l'azione (opzionale)
  • tipo: il protocollo da utilizzare come pop3, imap, le relative versioni ed il caso speciale stdin che legge dallo standard input
  • parametri: le opzioni associate all'azione come keep che mantiene la posta sul server, new-only che scarica solo la posta non letta, e così via

Una volta impostata l'azione da eseguire si possono realizzare le regole che la utilizzeranno. A tal proposito fdm mette a disposizione la direttiva match che utilizza la seguente forma:

match <condizione> [<utenti>] <azioni> [continue]

Le cui opzioni sono rappresentano rispettivamente la condizione da soddisfare affinché l'azione corrispondente venga presa in considerazione, gli utenti (come sopra, ma questi hanno priorità rispetto a quelli specificati nelle azioni o negli account), l'azione da eseguire (definita in precedenza) ed opzionalmente la direttiva continue la quale anziché terminare il filtraggio lascia scorrere la posta verso le regole successive.

L'esempio pratico chiariràtutto quello che è stato descritto fin'ora:

# MailBox principale
action "mbox" mbox "/var/mail/nome_utente"

# Liste di discussione
action "regional-it" mbox "~/.mailboxes/ML-regional-it"
action "pkgsrc-wip" mbox "~/.mailboxes/ML-pkgsrc-wip"
action "dwm" mbox "~/.mailboxes/ML-dwm"

In sintesi, sono state definite 4 azioni che spostano l'email corrente nella mailbox relativa, specificata come ultimo argomento. In questo modo ogni volta che verrà chiamata una di queste azioni l'email corrente verrà automaticamente smistata nella mailbox ed eventuali altre regole verranno ignorate.

Regole

Per associare una regola ad un'azione si utilizza la direttiva match la quale dopo avere verificato che l'espressione regolare corrisponda all'email corrente, provvede a chiamare l'azione relativa (che in questo caso si occuperà di smistare l'email nella corretta mailbox di destinazione). Come esempio concreto associamo le azioni di cui sopra a delle regole:

match "^(List-Id|Cc|To):.*pkgsrc-wip-.*\\.lists\\.sourceforge\\.net" in headers action "pkgsrc-wip"
match "^(Delivered-To|Cc|To):.*regional-it@netbsd\\.org" in headers action "regional-it"
match all action "mbox"

Queste regole provvedono a smistare la posta proveniente dalle liste di discussione regional-it@ e pkgsrc-wip-*@ (-discuss e -review) rispettivamente nelle mailbox ~/.mailboxes/ML-regional-it e ~/.mailboxes/ML-pkgsrc-wip. Infine, l'ultima regola salva tutta la posta rimanente (che non è stata filtrata o che è passata attraverso regole che contengono l'opzione continue) sulla mailbox principale (/var/mail/nome_utente).

In questo modo stiamo informando fdm che l'account con etichetta prova instaurerà una connessione IMAPs (sicura) sul server imap.gmail.com utilizzando il nome utente prova@gmail.com abbinato alla password password_di_prova ottenendo la posta dai folder elencati all'interno del costrutto folder. Per molte opzioni è possibile, per ragioni di chiarezza, interscambiare il plurale col singolare. In effetti folder e folders sono analoghi.

Aggiungere la verifica dei certificati SSL

fdm può anche verificare l'autenticità del certificato SSL, si ha però prima bisogno dei certificati che salveremo nella directory .certs:

$ mkdir ${HOME}/.certs/
$ cd ${HOME}/.certs/
$ ftp http://cool.haxx.se/cvs.cgi/*checkout*/curl/lib/mk-ca-bundle.pl
$ perl mk-ca-bundle.pl

aggiungiamo nella configurazione prima di account:

set verify-certificates

ed infine aggiungere al .profile:

export SSL_CERT_FILE="${HOME}/.certs/ca-bundle.crt"

Verificare la correttezza del file di configurazione e utilizzare fdm

Una volta che fdm è configurato risulta molto utile (quasi doveroso) accertarsi che il file di configurazione sia corretto utilizzando il flag -n di fdm, ad esempio:

$ fdm -n
/home/leot/.fdm.conf: world readable or writable
/home/leot/.fdm.conf: duplicate action: netbsd-users at line 53

Gli errori sono piuttosto esplicativi, perciò la correzione risulta semplice:

  • File di configurazione errato (notare netbsd-users che viene ripetuto due volte):
[...]
action "netbsd-tech-x11" mbox "~/Mail/News/netbsd-tech-x11"
action "netbsd-users" mbox "~/Mail/News/netbsd-users"
action "netbsd-users" mbox "~/Mail/News/netbsd-users"
action "netbsd-www-changes" mbox "~/Mail/News/netbsd-www-changes"
[...]
  • File di configurazione corretto:
[...]
action "netbsd-tech-x11" mbox "~/Mail/News/netbsd-tech-x11"
action "netbsd-users" mbox "~/Mail/News/netbsd-users"
action "netbsd-www-changes" mbox "~/Mail/News/netbsd-www-changes"
[...]
  • Infine assegniamo i giusti permessi al file ~/.fdm.conf:
$ chmod 600 ~/.fdm.conf

E ricontrolliamo se ora la configurazione è corretta:

$ fdm -n

Perfetto! Ora possiamo iniziare a scaricare le email:

$ fdm fetch

fdm in perfetta filosofia Unix sarà silenziosissimo, per un pò di output si può utilizzare l'opzione -v:

$ fdm -v fetch

In alternativa è possibile controllare il numero di email disponibili senza effettuare il download con il comando poll, in questo modo:

$ fdm poll

Entrambe possono essere abbreviati in qualsiasi modo togliendo un numero di caratteri arbitrario (eventualmente anche tutti tranne uno), come nel seguente esempio che chiama il comando fetch:

$ fdm -v f

Conclusioni

In questo documento si è cercato di introdurre brevemente verso i basilari passi di configurazione di fdm, lasciando eventuali approfondimenti alla relativa pagina di manuale e/o altre fonti sul web. Tuttavia, quanto mostrato rende chiare le potenzialitàdi questo programma il quale fornisce caratteristiche molto avanzate e rare (se non uniche) fra i software per il fetching della posta. Oltre alle direttive mostrate qui ne esistono molte altre molto complesse. Anche match e action sono molto potenti e consentono di effettuare operazioni particolari anche nidificate. È possibile ad esempio nidificare 2 match come segue:

match all actions {
   rewrite "rev"
   tag "reversed"
} continue

Questo lascia intuire come sia possibile soddisfare qualsiasi tipo di esigenza.

Strumenti personali