Messa a punto di fdm
Da Wiki di NetBSD Italia.
(Nuova pagina: Questo breve testo introdurra' le basi di fdm guidando il lettore attraverso un basilare processo di configurazione. Verranno mostrate le caratteristiche essenziali, giusto per stimola...) |
(→Aggiungere la verifica dei certificati SSL: semplifico di moltissimo tutta la procedura, sia santificato il principio KISS (ed anche Claudio per l'idea :-))) |
||
(27 revisioni intermedie non mostrate.) | |||
Riga 1: | Riga 1: | ||
- | Questo breve testo | + | Questo breve testo introdurrà le basi di fdm guidando il lettore attraverso |
un basilare processo di configurazione. Verranno mostrate le caratteristiche | un basilare processo di configurazione. Verranno mostrate le caratteristiche | ||
essenziali, giusto per stimolare l'approfondimento del programma. | essenziali, giusto per stimolare l'approfondimento del programma. | ||
== Introduzione == | == Introduzione == | ||
- | '''Fdm''' | + | '''Fdm''' è un programma per il download (''fetching'') e lo smistamento |
- | (''delivery'') della posta. Fondamentalmente si | + | (''delivery'') della posta (''mail''), da cui presumibilmente il nome (''fdm''). |
- | fra i 2 programmi | + | Fondamentalmente si può considerare un ibrido fra i 2 programmi più famosi e |
- | fdm fornisce qualche | + | diffusi: fetchmail e procmail. In aggiunta, fdm fornisce qualche funzionalità |
- | (Perl-Extended Regular Expression) che consente dei criteri di filtraggio | + | aggiuntiva come il supporto pcre (Perl-Extended Regular Expression) che consente |
- | molto potenti, macro per la configurazione condizionale, integrazione con | + | dei criteri di filtraggio molto potenti, macro per la configurazione condizionale, |
- | la shell o molto altro. Supporta sia MailBox MailDir sui principali | + | 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. | protocolli come POP3, IMAP e le rispettive versioni sicure POP3s e IMAPs. | ||
- | |||
== Installazione == | == Installazione == | ||
- | Attualmente il pacchetto non | + | Attualmente il pacchetto non è ancora stato importato su pkgsrc ma è già |
completamente funzionante il pacchetto di pkgsrc-wip (incluso il supporto | completamente funzionante il pacchetto di pkgsrc-wip (incluso il supporto | ||
per DESTDIR). Per tanto l'installazione si riduce al consueto utilizzo di | per DESTDIR). Per tanto l'installazione si riduce al consueto utilizzo di | ||
Riga 31: | Riga 30: | ||
$ make install clean clean-depends | $ make install clean clean-depends | ||
- | A questo punto fdm | + | A questo punto fdm è installato. |
- | + | ||
== Configurazione == | == Configurazione == | ||
Data la vasta gamma di direttive, opzioni e parametri di configurazione vari | Data la vasta gamma di direttive, opzioni e parametri di configurazione vari | ||
risulta molto complesso, se non impossibile, soddisfare tutte le esigenze in | risulta molto complesso, se non impossibile, soddisfare tutte le esigenze in | ||
- | questa guida. Motivo per cui | + | questa guida. Motivo per cui verrà esposta una semplice configurazione di |
base valida per la maggior parte degli utenti con esigenze contenute. In altre | base valida per la maggior parte degli utenti con esigenze contenute. In altre | ||
- | parole si | + | 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 | + | * 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; | * Filtrare alcune liste di discussione e smistarle nelle relative mailbox; | ||
Riga 48: | Riga 45: | ||
* Reindirizzare tutta la posta non filtrata nella MailBox principale (banale). | * 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 | + | === Aggiunta di un account === |
Gli account di posta possono essere configurati utilizzando la direttiva | Gli account di posta possono essere configurati utilizzando la direttiva | ||
'''account''' la quale contiene tutte le informazioni necessarie all'autenticazione | '''account''' la quale contiene tutte le informazioni necessarie all'autenticazione | ||
e il download della posta dal server remoto. Tuttavia essa non contiene alcuna | e il download della posta dal server remoto. Tuttavia essa non contiene alcuna | ||
- | informazione relativa al percorso locale sul quale | + | informazione relativa al percorso locale sul quale risiederà la posta ottenuta. |
- | Questo compito | + | Questo compito è delegato alle cosiddette '''azioni''' (vedi più avanti). |
# Account di prova | # Account di prova | ||
Riga 68: | Riga 69: | ||
} | } | ||
- | L'opzione '''folders''' | + | L'opzione '''folders''' è opzionale, qualora questa non fosse specificata il |
- | solo folder ''Inbox'' | + | solo folder ''Inbox'' sarà utilizzato di default. Una volta aggiunto il primo |
- | account | + | account basterà seguire lo stesso identico procedimento per tutti gli altri. |
- | Non c' | + | Non c'è limite per il numero di account. |
- | + | ||
=== Azioni === | === Azioni === | ||
- | Al fine di comprendere a pieno i passi di configurazione mostrati in seguito, | + | Al fine di comprendere a pieno i passi di configurazione mostrati in seguito, è |
- | necessario avere un minimo di | + | necessario avere un minimo di familiarità col concetto di '''azione'''. |
Per la consegna (e il filtraggio) della posta viene effettuato mediante le | Per la consegna (e il filtraggio) della posta viene effettuato mediante le | ||
cosiddette '''azioni''' che sono dei comandi che vengono eseguiti automaticamente | cosiddette '''azioni''' che sono dei comandi che vengono eseguiti automaticamente | ||
quando un filtro corrisponde ad una determinata regola di filtraggio. Quindi ogni | quando un filtro corrisponde ad una determinata regola di filtraggio. Quindi ogni | ||
- | regola | + | regola è associata ad una azione la quale verrà eseguita '''solo''' per quelle |
email che rispettano tale regola (eventualmente nessuna). Di norma queste regole | email che rispettano tale regola (eventualmente nessuna). Di norma queste regole | ||
- | sono delle espressioni regolari o, come si | + | sono delle espressioni regolari o, come si vedrà in seguito per lo smistamento |
della posta ''non filtrata'' sulla MailBox principale, delle semplici parole | della posta ''non filtrata'' sulla MailBox principale, delle semplici parole | ||
chiave. | chiave. | ||
- | |||
=== Destinazioni (MailBox) === | === Destinazioni (MailBox) === | ||
La posta viene smistata nelle varie MailBox in base a dei criteri di filtraggio | 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. | ben precisi, applicati secondo l'ordine in cui compaiono nel file di configurazione. | ||
- | Qualora non si abbia la | + | Qualora non si abbia la necessità di utilizzare dei filtri (come nel caso della |
- | MailBox principale) si | + | MailBox principale) si dovrà comunque utilizzare una '''azione''' a tale scopo. |
Per definire una azione bisogna utilizzare la parola '''action''' seguita da una | Per definire una azione bisogna utilizzare la parola '''action''' seguita da una | ||
- | serie di argomenti. La forma generale | + | serie di argomenti. La forma generale è questa: |
action <nome> [<utente>] <tipo> <parametri> | action <nome> [<utente>] <tipo> <parametri> | ||
Riga 100: | Riga 99: | ||
Gli argomenti hanno i seguenti significati: | Gli argomenti hanno i seguenti significati: | ||
- | * '''nome''': corrisponde all'etichetta dell'azione, utilizzata per eseguire | + | * '''nome''': corrisponde all'etichetta dell'azione, utilizzata per eseguire successivamente l'azione (tutte le volte che si desidera) |
- | successivamente l'azione (tutte le volte che si desidera) | + | |
- | * '''utente''': il nome o l'ID (UID) dell'utente (o una lista di utenti) che | + | * '''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 | + | * '''tipo''': il protocollo da utilizzare come pop3, imap, le relative versioni ed il caso speciale '''stdin''' che legge dallo standard input |
- | ed il caso speciale '''stdin''' che legge dallo standard input | + | |
- | * '''parametri''': le opzioni associate all'azione come ''keep'' che mantiene | + | * '''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 |
- | la posta sul server, ''new-only'' che scarica solo la posta non letta, e | + | |
- | via | + | |
Una volta impostata l'azione da eseguire si possono realizzare le regole | Una volta impostata l'azione da eseguire si possono realizzare le regole | ||
Riga 120: | Riga 114: | ||
Le cui opzioni sono rappresentano rispettivamente la condizione da soddisfare | 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 | + | (come sopra, ma questi hanno priorità rispetto a quelli specificati nelle |
azioni o negli account), l'azione da eseguire (definita in precedenza) ed | azioni o negli account), l'azione da eseguire (definita in precedenza) ed | ||
- | opzionalmente la direttiva continue la quale | + | opzionalmente la direttiva continue la quale anziché terminare il filtraggio |
lascia ''scorrere'' la posta verso le regole successive. | lascia ''scorrere'' la posta verso le regole successive. | ||
- | L'esempio pratico | + | L'esempio pratico chiariràtutto quello che è stato descritto fin'ora: |
# MailBox principale | # MailBox principale | ||
action "mbox" mbox "/var/mail/nome_utente" | action "mbox" mbox "/var/mail/nome_utente" | ||
- | + | ||
# Liste di discussione | # Liste di discussione | ||
action "regional-it" mbox "~/.mailboxes/ML-regional-it" | action "regional-it" mbox "~/.mailboxes/ML-regional-it" | ||
Riga 138: | Riga 132: | ||
In sintesi, sono state definite 4 azioni che spostano l'email corrente nella | In sintesi, sono state definite 4 azioni che spostano l'email corrente nella | ||
mailbox relativa, specificata come ultimo argomento. In questo modo ogni volta | mailbox relativa, specificata come ultimo argomento. In questo modo ogni volta | ||
- | che | + | che verrà chiamata una di queste azioni l'email corrente verrà automaticamente |
smistata nella mailbox ed eventuali altre regole verranno ignorate. | smistata nella mailbox ed eventuali altre regole verranno ignorate. | ||
Riga 144: | Riga 138: | ||
Per associare una regola ad un'azione si utilizza la direttiva '''match''' la | Per associare una regola ad un'azione si utilizza la direttiva '''match''' la | ||
quale dopo avere verificato che l'espressione regolare corrisponda all'email | quale dopo avere verificato che l'espressione regolare corrisponda all'email | ||
- | corrente, provvede a chiamare l'azione relativa (che in questo caso si | + | 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 | di smistare l'email nella corretta mailbox di destinazione). Come esempio concreto | ||
associamo le azioni di cui sopra a delle regole: | associamo le azioni di cui sopra a delle regole: | ||
Riga 154: | Riga 148: | ||
Queste regole provvedono a smistare la posta proveniente dalle liste di discussione | Queste regole provvedono a smistare la posta proveniente dalle liste di discussione | ||
''regional-it@'' e ''pkgsrc-wip-*@'' (-discuss e -review) rispettivamente nelle | ''regional-it@'' e ''pkgsrc-wip-*@'' (-discuss e -review) rispettivamente nelle | ||
- | mailbox ''~/.mailboxes/ML-regional'' | + | mailbox ''~/.mailboxes/ML-regional-it'' e ''~/.mailboxes/ML-pkgsrc-wip''. Infine, |
- | l'ultima regola salva tutta la posta rimanente (che non | + | 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). | principale (/var/mail/nome_utente). | ||
In questo modo stiamo informando fdm che l'account con etichetta '''prova''' | 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 | utilizzando il nome utente '''prova@gmail.com''' abbinato alla password | ||
'''password_di_prova''' ottenendo la posta dai folder elencati all'interno | '''password_di_prova''' ottenendo la posta dai folder elencati all'interno | ||
- | del | + | del costrutto '''folder'''. Per molte opzioni è possibile, per ragioni di |
chiarezza, interscambiare il plurale col singolare. In effetti '''folder''' | chiarezza, interscambiare il plurale col singolare. In effetti '''folder''' | ||
e '''folders''' sono analoghi. | 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 == | == Conclusioni == | ||
- | In questo documento si | + | In questo documento si è cercato di introdurre brevemente verso i basilari |
passi di configurazione di fdm, lasciando eventuali approfondimenti alla relativa | passi di configurazione di fdm, lasciando eventuali approfondimenti alla relativa | ||
pagina di manuale e/o altre fonti sul web. Tuttavia, quanto mostrato rende chiare | pagina di manuale e/o altre fonti sul web. Tuttavia, quanto mostrato rende chiare | ||
- | le | + | le potenzialitàdi questo programma il quale fornisce caratteristiche molto |
avanzate e rare (se non uniche) fra i software per il ''fetching'' della posta. | 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. | Oltre alle direttive mostrate qui ne esistono molte altre molto complesse. | ||
Anche '''match''' e '''action''' sono molto potenti e consentono di effettuare | Anche '''match''' e '''action''' sono molto potenti e consentono di effettuare | ||
- | operazioni particolari anche nidificate. | + | operazioni particolari anche nidificate. È possibile ad esempio nidificare 2 |
match come segue: | match come segue: | ||
match all actions { | match all actions { | ||
rewrite "rev" | rewrite "rev" | ||
- | + | tag "reversed" | |
} continue | } continue | ||
- | Questo lascia intuire come sia possibile soddisfare qualsiasi esigenza. | + | Questo lascia intuire come sia possibile soddisfare qualsiasi tipo di esigenza. |
+ | [[Categoria:pkgsrc]] | ||
[[Categoria:Tutorial]] | [[Categoria:Tutorial]] |
Versione corrente delle 12:41, 12 set 2009
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.