UsbMount: Gestione automatizzata delle periferiche USB di memorizzazione: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
Riga 1: Riga 1:
==Introduzione==
==Introduzione==


In questa guida spiegher� come sostituire il filtro antispam di evolution (che usa spamassassin) con un filtro molto pi� veloce (in quanto bayesiano): bogofilter.
Da qualche anno si sono diffusi i 'pen drive', delle pennine usb con dei chip di memoria, per portare sempre con se ogni informazione.
Usando Evolution ho notato che il filtro antispam che richiede l'uso di spamassassin � molto lento soprattutto inserendo i controlli esterni (ovvero ogni mail viene confrontata con una lista di mail-spam note). Vi sar� capitato forse anche di usare Thunderbird che include un filtro anti-spam bayesiano (� un tecnica statistica) e di notare che questo tipo di filtro � molto pi� veloce ed ugualmente accurato (non so in termini assoluti quale sia il migliore ma per usi SOHO entrambi sono ampiamente soddisfacenti).
Linux, in questo campo, ha sempre sofferto di un problema: il mount e umount delle periferiche...
Ora, grazie a questo interessante pacchetto, è possibile automatizzare questa procedura e, anzi, renderla ancora più semplice e comoda.


possibile usare un filtro bayesiano anche con evolution, con conseguente aumento della velocit. A tal scopo basta usare bogofilter, un filtro antispam bayessiano da linea di comando. Per i pi smaliziati descriver sinteticamente il procedimento, gli altri troveranno informazioni pi dettagliate nel seguito. In pratica basta usare la funzionalit di evolution di creare filtri che come condizione di verifica discriminano il valore di ritorno di un programma al quale stata mandata in pipe l'email. molto pi semplice di quello che sembra in realt. Il vantaggio di velocit notevole anche perch si possono filtrare prima tutte le mail delle mailing list e mandare al filtro antispam solo le altre email. Lo svantaggio che, usando una tecnica statistica, bisogna inizialmente "istruire" bogofilter a riconoscere lo spam, ma la cosa non presenta problemi se si dispone gi di alcune decine di email di spam.
==Usare bogofilter sulle mailbox di Evolution==
Evolution mette le mail in /home/$USER/.evolution/mail/local/, un file (in formato mbox) per ogni cartella che abbiamo in Evolution. Le email della cartella "Posta in arrivo" compreso lo spam ("da Cestinare") st tutta nel file Inbox: evolution aggiunge infatti un header che gli permette di distinguere lo spam dall'ham (prosciutto in inglese: tutto ci che non spam). Ora, per istruire bogofilter molto pi comodo di disporre dello spam in un file separato. A tal scopo apriamo evolution e spostiamo tutta la posta in "Da cestinare" in una nuova cartella che chiameremo fantasiosamente Spam.
Per istruire ora bogofilter su cosa sia spam, scriveremo in un terminale dalla cartella /home/$USER/.evolution/mail/local/:


==Installazione==
Usbmount è incluso in Debian a partire da Sarge (quindi è presente anche in Testing ed Unstable).<br/>
L'installazione, quindi, è alla ''debian way'':
<pre>
<pre>
    $ cat Spam | bogofilter -M -s
# apt-get install usbmount
</pre>
</pre>


 
L'errore che si potrebbe riscontrare è la mancanza di udev, la cui risoluzione è molto semplice:
dove "Spam" � la cartella di evolution (qui file mbox) in cui abbiamo spostato lo spam. Se abbiamo indicato come spam un file di mail "pulite" possiamo annullare l'operazione con lo stesso comando sostituendo -S al posto di -s.
 
Per indicare quali mail non sono spam scriveremo invece:
 
<pre>
<pre>
    $ cat Inbox | bogofilter -M -n
# apt-get install udev
</pre>
</pre>




Potremo ripetere il precendente comando anche per gli altri file corrispondenti a posta "pulita". Ad esempio io l'ho anche eseguito sugli altri file che contenevano i messaggi delle mailing list a cui sono iscritto. Se abbiamo indicato come mail "pulite" un file contentente spam, possiamo annullare l'operazione con lo stesso comando sostituendo -N al posto di -n.
==Configurazione==


Per vedere quanto adesso sia chiara a bogofilter la differenza tra spam e ham possiamo visualizzare un diagramma con il comando (dalla home):
Il pacchetto non necessita di riconfigurazione, in quanto i valori di default sono ottimali. Analizziamo comunque i file di configurazione e le opzioni: il file contenente la configurazione di usbmount è '''/etc/usbmount/usbmount.conf'''.<br/>
Le direttive sono:<br/>


<pre>
; MOUNTPOINTS : Indicano le directory in cui dovranno essere montate le periferiche. Viene sempre utilizzata la prima disponibile (cosa molto comoda) e, se non sono presenti, vengono create.<br/>
    $ bogoutil -H .bogofilter/wordlist.db
</pre>


; FILESYSTEMS : Contiene la lista dei filesystem da provare, quando si esegue il mount del device. Il mio consiglio è di avere prima vfat e poi msdos, per evitare problemi di 'storpiatura' dei nomi dei file.<br/>


dovremmo vedere in istogramma con due massimi nettamente distinti, questo vuol dire che a bogofilter � abbastanza chiara la differenza tra spam e ham. Ad esempio ecco come appare il mio istogramma, dopo aver inserito alcune centinaia di email come ham e una ottantina di mail come spam:
; MOUNTOPTIONS : Serve per indicare le opzioni da passare al mount del device. Se non è presente, consiglio l'aggiunta dell'opzione 'quiet' che elimina i messaggi di errore relativi all'assenza di permessi nei filesystem di tipo fat.<br/>


<pre>
; FS_MOUNTOPTIONS : Configurazioni specifiche per un determinato filesystem. La sintassi è del tipo <pre>-fstype=TYPE,OPTIONS</pre> dove '''TYPE''' è la stringa identificativa del filesystem, e '''OPTIONS''' sono le opzioni da assegnare a quel determinato filesystem (''man mount'' per i dettagli su tutte le opzioni disponibili).
    Histogram
    score  count  pct  histogram
    0.00    59199 81.65 ################################################
    0.05      178  0.25 #
    0.10      114  0.16 #
    0.15      114  0.16 #
    0.20      139  0.19 #
    0.25      159  0.22 #
    0.30      139  0.19 #
    0.35      147  0.20 #
    0.40      160  0.22 #
    0.45      201  0.28 #
    0.50      151  0.21 #
    0.55      187  0.26 #
    0.60      150  0.21 #
    0.65      155  0.21 #
    0.70      243  0.34 #
    0.75      227  0.31 #
    0.80      251  0.35 #
    0.85      324  0.45 #
    0.90      356  0.49 #
    0.95    9905 13.66 #########
    tot    72499
    hapaxes:  ham  30363 (41.88%), spam      2 ( 0.00%)
      pure:  ham  59036 (81.43%), spam    9161 (12.64%)
</pre>


; VERBOSE : Utile per il debug (e se qualche cosa non va come deve). In caso di dubbio, lasciare su 'no'.<br/>


Se abbiamo una email possiamo ora controllare se sia spam o meno dandola in pipe a bogofilter con il seguente comando:
===Supporto a vfat===
Nell'installazione di default non è configurato il supporto per il filesystem vfat (quello utilizzato normalmente nelle fotocamere digitali e nelle pennine usb). Per abilitarlo sono necessarie tre piccole modifiche al file di configurazione '''/etc/usbmount/usbmount.conf'''.


<pre>
Per prima cosa dobbiamo aggiungere, alla lista dei filesystem riconoscibili, quello '''vfat'''. Dopo la modifica, la riga dell'opzione '''FILESYSTEMS''' dovrebbe essere simile alla seguente:
    $ cat messaggio | bogofilter
<pre>FILESYSTEMS="vfat ext2 ext3"</pre>
</pre>
come si può notare ho posizionato vfat all'inizio della riga, così da guadagnare un po' di tempo nella fase di riconoscimento.


Dal messaggio di attenzione posto sopra l'opzione appena modificata notiamo che è necessario modificare anche '''MOUNTOPTIONS''', aggiungendo l'opzione ''sync'' (se non già presente):
<pre>MOUNTOPTIONS="sync,noexec,nodev,noatime"</pre>


Se il valore di ritorno (echo $?) � 0 la mail sar� spam, se � 1 sar� ham, se � 2 bogofilter � incerto.
La seconda modifica riguarda le opzioni da passare al comando di mount per il filesystem vfat... prendiamo spunto dal commento riportato sopra l'opzione '''FS_MOUNTOPTIONS''', e modifichiamo la riga nel seguente modo:
<pre>FS_MOUNTOPTIONS="-fstype=vfat,gid=floppy,dmask=0007,fmask=0117"</pre>
Ovviamente le opzioni sono personalizzabili a piacimento.


Da qui si capisce come sia possibile costruire un piccolo script al quale mandare in pasto (in pipe, tecnicamente) le nostre mail ed a seconda del valore di ritorno evolution sposter� o meno il messagio nella cartella dello Spam. Un esempio � il seguente:
Per applicare i cambiamenti, riavviamo hotplug:
<pre># /etc/init.d/hotplug restart</pre>


<pre>
"P.S" Salve, una piccola notazione che mi permetto di precisare, sperando che lo staff poi provvedera' a confermare o meno. La questione e' molto semplice ho eseguito alla lettera l'how to .. finche' non mi blocco in questo piccolo problema:
    #!/bin/sh
Per applicare i cambiamenti, riavviamo hotplug:
    # antispam - Wrapper per bogofilter
<pre># /etc/init.d/hotplug restart</pre>
    #
Ebbene si, il mio sistema dice:
    # Dare in pipe a questo script l'email da controllare
<pre>root:~# /etc/init.d/hotplug restart
    # Ritorna:
-su: /etc/init.d/hotplug: No such file or directory</pre>
    #  0  per lo spam
Brutta storia. Tramite il canale IRC di riferimento: irc.azzurra.org #debianizzati ho chiesto ed mi han riposto - ed esattamente " ciprignoletta " - che non si chiama piu' hotplug bensi' *hald*. Non mi perdo di coraggio e provo a riavviarlo:
    #  1  per l'ham
<pre>root:~# /etc/init.d/hald restart
    #  2  se il messaggio e' incerto
-su: /etc/init.d/hald: No such file or directory</pre>
    #
Nulla!!! Neanche' questo va a buon fine.
Sicche' soffermandomi per un po' mi son detto l'unica cosa da provare e' quello di stoppare e startare udev e bene si signori:
<pre>root:~# /etc/init.d/udev stop
Stopping the hotplug events dispatcher: udevd.</pre>


    SPAMBOX="/home/$USER/.evolution/mail/local/Spam"
<pre>root:~# /etc/init.d/udev start
    HAMBOX="/home/$USER/.evolution/mail/local/Inbox"
Starting the hotplug events dispatcher: udevd.
Synthesizing the initial hotplug events...done.
Waiting for /dev to be fully populated...done.</pre>
Ed ora funziona alla grande.
Ai posteri l'ardua sentenza. Bau


    # Commentare se non si vuole istruire bogofilter sullo spam ogni volta
==Utilizzo==
    # che si scarica la posta
    cat $SPAMBOX | bogofilter -M -s
   
    # Commentare se non si vuole istruire bogofilter sull'ham ogni volta
    # che si scarica la posta
    cat $HAMBOX | bogofilter -M -n


   
L'utilizzo è piuttosto semplice.
    # Controlla il messaggio dato in pipe (legge lo stdin)
È sufficiente inserire il dispositivo, aspettare un secondo, e recarsi nella directory /media/usb (o usb0, usb1, ...), dove verrà montata la periferica.
    bogofilter
Per poter leggere e scrivere, bisogna appartenere al gruppo 'floppy': per ottenere ciò e sufficiente un
 
<pre>
    # Valore di ritorno
# adduser nomeutente floppy
    RESULT=$?
 
    echo $RESULT
    exit $RESULT
</pre>
</pre>
Ovviamente il gruppo è modificabile nelle impostazioni di usbmount.
Per quanto riguarda l'umount, non bisogna preoccuparsi: le periferiche sono montate con la flag 'sync' attiva, che comporta un accesso in scrittura in tempo reale. Per evitare perdite di dati basta aspettare il termine della copia dei dati, dopo di che è possibile rimuoverla direttamente (facendo attenzione a non aver aperte applicazioni che accedono al mountpoint del device).


Potete, ad esempio, salvare lo script precedente col nome antispam, copiarlo nel PATH (ad es. /usr/local/bin/) e renderlo eseguibile (chmod +x antispam). Ogni volta che viene mandato in pipe una email a questo script, bogofilter viene aggiornato su cosa spam e su cosa no e poi ci dir se il messagio passato spam o meno.
==Configurare Evolution per l'uso di bogofilter==
Non ci resta ora che configurare Evolution. Disabilitiamo innanzi tutto il filtro antispam integrato di evolution. Poi creiamo un nuovo filtro per la posta in entrata. Come condizione di verifica del filtro (riquadro '''Se''') mettiamo "In pipe a programma", come nome del programma il nome dello script (/usr/local/antispam) e come valore di ritorno 0. Ora baster aggiungere l'azione da compiere (riquadro '''allora''') che sar ovviamente "Sposta nella cartella" Spam.
Ultimo consiglio che do quello di inserire il filtro antispam alla fine della lista filtri (se ne avete altri), spostandolo in basso. Inserendo poi negli altri filtri come azione oltre a "Sposta nella cartella" anche "Arresta l'elaborazione" in modo che se il messagio corrisponde al filtro non verr pi processato dai filtri successivi. In questo modo arriveranno a bogofilter molti meno messaggi e l'elaborazione sar ancora pi veloce. Io uso questo metodo perch non arriva spam alle mailng list a cui sono iscritto. Se vi arrivase spam anche dalle mailing list, potete non usarlo e fare filtrare tutto a bogofilter.


==Conclusioni==
==Conclusioni==


UsbMount è una utility ancora giovane, che sicuramente verrà migliorata, ed ampliata. Sicuramente diventerà un must su tutti i computer (sinceramente, non riesco a farne a meno ^_^)!


Concludo dicendo che questa � solo una delle implementazioni possibili. Ad esempio per velocizzare ulteriormente il controllo antispam si possono commentare i cat nello script, e poi di tanto in tanto aggiornare a mano bogofilter su cosa � spam e cosa � ham. Oppure si pu� usare questo procedimento con una altro programma di posta (MUA) diverso da Evolution.Le possibilit� sono infinite. Spero di essere riuscito a spiegare la logica delle cose (piuttosto che aver dato una soluzione bell'e pronta) in modo che ognuno di voi possa adattare quanto detto per rispondere alle proprie esigenze, e anche (perch� no) al proprio capriccio. E, in fondo, non � proprio questo il bello di usare software libero?
---- [[User:MaXeR|MaXeR]]
 
[[Categoria:Sistema]][[Categoria:Desktop]]
Happy hacking!
 
----
Autore: [[Utente:TheNoise|~ The_Noise]]

Versione delle 17:02, 6 nov 2007

Introduzione

Da qualche anno si sono diffusi i 'pen drive', delle pennine usb con dei chip di memoria, per portare sempre con se ogni informazione. Linux, in questo campo, ha sempre sofferto di un problema: il mount e umount delle periferiche... Ora, grazie a questo interessante pacchetto, è possibile automatizzare questa procedura e, anzi, renderla ancora più semplice e comoda.


Installazione

Usbmount è incluso in Debian a partire da Sarge (quindi è presente anche in Testing ed Unstable).
L'installazione, quindi, è alla debian way:

# apt-get install usbmount

L'errore che si potrebbe riscontrare è la mancanza di udev, la cui risoluzione è molto semplice:

# apt-get install udev


Configurazione

Il pacchetto non necessita di riconfigurazione, in quanto i valori di default sono ottimali. Analizziamo comunque i file di configurazione e le opzioni: il file contenente la configurazione di usbmount è /etc/usbmount/usbmount.conf.
Le direttive sono:

MOUNTPOINTS
Indicano le directory in cui dovranno essere montate le periferiche. Viene sempre utilizzata la prima disponibile (cosa molto comoda) e, se non sono presenti, vengono create.
FILESYSTEMS
Contiene la lista dei filesystem da provare, quando si esegue il mount del device. Il mio consiglio è di avere prima vfat e poi msdos, per evitare problemi di 'storpiatura' dei nomi dei file.
MOUNTOPTIONS
Serve per indicare le opzioni da passare al mount del device. Se non è presente, consiglio l'aggiunta dell'opzione 'quiet' che elimina i messaggi di errore relativi all'assenza di permessi nei filesystem di tipo fat.
FS_MOUNTOPTIONS
Configurazioni specifiche per un determinato filesystem. La sintassi è del tipo
-fstype=TYPE,OPTIONS
dove TYPE è la stringa identificativa del filesystem, e OPTIONS sono le opzioni da assegnare a quel determinato filesystem (man mount per i dettagli su tutte le opzioni disponibili).
VERBOSE
Utile per il debug (e se qualche cosa non va come deve). In caso di dubbio, lasciare su 'no'.

Supporto a vfat

Nell'installazione di default non è configurato il supporto per il filesystem vfat (quello utilizzato normalmente nelle fotocamere digitali e nelle pennine usb). Per abilitarlo sono necessarie tre piccole modifiche al file di configurazione /etc/usbmount/usbmount.conf.

Per prima cosa dobbiamo aggiungere, alla lista dei filesystem riconoscibili, quello vfat. Dopo la modifica, la riga dell'opzione FILESYSTEMS dovrebbe essere simile alla seguente:

FILESYSTEMS="vfat ext2 ext3"

come si può notare ho posizionato vfat all'inizio della riga, così da guadagnare un po' di tempo nella fase di riconoscimento.

Dal messaggio di attenzione posto sopra l'opzione appena modificata notiamo che è necessario modificare anche MOUNTOPTIONS, aggiungendo l'opzione sync (se non già presente):

MOUNTOPTIONS="sync,noexec,nodev,noatime"

La seconda modifica riguarda le opzioni da passare al comando di mount per il filesystem vfat... prendiamo spunto dal commento riportato sopra l'opzione FS_MOUNTOPTIONS, e modifichiamo la riga nel seguente modo:

FS_MOUNTOPTIONS="-fstype=vfat,gid=floppy,dmask=0007,fmask=0117"

Ovviamente le opzioni sono personalizzabili a piacimento.

Per applicare i cambiamenti, riavviamo hotplug:

# /etc/init.d/hotplug restart

"P.S" Salve, una piccola notazione che mi permetto di precisare, sperando che lo staff poi provvedera' a confermare o meno. La questione e' molto semplice ho eseguito alla lettera l'how to .. finche' non mi blocco in questo piccolo problema: Per applicare i cambiamenti, riavviamo hotplug:

# /etc/init.d/hotplug restart

Ebbene si, il mio sistema dice:

root:~# /etc/init.d/hotplug restart
-su: /etc/init.d/hotplug: No such file or directory

Brutta storia. Tramite il canale IRC di riferimento: irc.azzurra.org #debianizzati ho chiesto ed mi han riposto - ed esattamente " ciprignoletta " - che non si chiama piu' hotplug bensi' *hald*. Non mi perdo di coraggio e provo a riavviarlo:

root:~# /etc/init.d/hald restart
-su: /etc/init.d/hald: No such file or directory

Nulla!!! Neanche' questo va a buon fine. Sicche' soffermandomi per un po' mi son detto l'unica cosa da provare e' quello di stoppare e startare udev e bene si signori:

root:~# /etc/init.d/udev stop
Stopping the hotplug events dispatcher: udevd.
root:~# /etc/init.d/udev start
Starting the hotplug events dispatcher: udevd.
Synthesizing the initial hotplug events...done.
Waiting for /dev to be fully populated...done.

Ed ora funziona alla grande. Ai posteri l'ardua sentenza. Bau

Utilizzo

L'utilizzo è piuttosto semplice. È sufficiente inserire il dispositivo, aspettare un secondo, e recarsi nella directory /media/usb (o usb0, usb1, ...), dove verrà montata la periferica. Per poter leggere e scrivere, bisogna appartenere al gruppo 'floppy': per ottenere ciò e sufficiente un

# adduser nomeutente floppy

Ovviamente il gruppo è modificabile nelle impostazioni di usbmount. Per quanto riguarda l'umount, non bisogna preoccuparsi: le periferiche sono montate con la flag 'sync' attiva, che comporta un accesso in scrittura in tempo reale. Per evitare perdite di dati basta aspettare il termine della copia dei dati, dopo di che è possibile rimuoverla direttamente (facendo attenzione a non aver aperte applicazioni che accedono al mountpoint del device).


Conclusioni

UsbMount è una utility ancora giovane, che sicuramente verrà migliorata, ed ampliata. Sicuramente diventerà un must su tutti i computer (sinceramente, non riesco a farne a meno ^_^)!


MaXeR