Mutt-i, GnuPG e PGP Howto <author>Andrés Seco <htmlurl url="mailto:AndresSH@ctv.es" name="AndresSH@ctv.es"> e J.Horacio M.G. <htmlurl url="mailto:homega@ciberia.es" name="homega@ciberia.es"> <date>v.12, Febbraio 2000 <abstract> Questo documento spiega brevemente come configurare <em/Mutt-i/, <em/PGP/ nelle sue diverse versioni (2.6.x, 5.x) e <em/GnuPG/. Si segnalano i problemi più comuni che si possono incontrare quando si inviano e-mail firmate o cifrate che devono essere lette da mail client che non osservano PGP/MIME come definito nella RFC 2015 e che girano su sistemi operativi differenti. Inoltre, è presente un esempio di configurazione di procmail per inviare automaticamente le chiavi pubbliche in risposta a messaggi che le richiedano, come fanno i key server. La traduzione è stata curata da <htmlurl url="mailto:marcocova@infinito.it" name="Marco Cova"> </abstract> <toc> <sect>Introduzione <p> Questo documento spiega brevemente come configurare <em/Mutt-i/, <em/PGP/ nelle sue diverse versioni (2.6.x, 5.x) e <em/GnuPG/, così da poter usare in breve tempo un mail client in grado di gestire cifratura e firma digitale dei messaggi. A questo scopo, saranno inclusi dei file di configurazione di esempio. Tuttavia, per ottenere la migliore performance e per sfruttare fino in fondo le possibilità dei programmi che si useranno, sarà necessario leggerne la documentazione e riconfigurare i file di esempio. Inoltre, verranno commentati alcuni problemi derivanti dal fatto che molti mail user agent, sia per Linux che per altri sistemi operativi, non rispettano l'RFC 2015 per quello che riguarda PGP/MIME. Sarà presentato un ulteriore esempio di configurazione di procmail, che spiegherà come fare in modo che il mail client invii una chiave pubblica su richiesta. Questo documento è stato tradotto dall'originale spagnolo da Andrés Seco <htmlurl url="mailto:AndresSH@ctv.es" name="AndresSH@ctv.es">, rivisto e corretto da Jordi Mallach Pérez <htmlurl url="mailto:jordi-sd@softhome.net" name="jordi-sd@softhome.net"> e J.Horacio M.G. <htmlurl url="mailto:homega@ciberia.es" name="homega@ciberia.es">. E' stato terminato nell'ottobre del 1999. Vorremmo ringraziare Roland Rosenfeld <htmlurl url="mailto:roland@spinnaker.de" name="roland@spinnaker.de">, Christophe Pernod <htmlurl url="mailto:xtof.pernod@wanadoo.fr" name="xtof.pernod@wanadoo.fr">, Denis Alan Hainsworth <htmlurl url="mailto:denis@cs.brandeis.edu" name="denis@cs.brandeis.edu"> e Angel Carrasco <htmlurl url="mailto:acarrasco@jet.es" name="acarrasco@jet.es"> per le loro correzioni e suggerimenti. <sect>Copyright and discharge of responsability <p> This document is <tt>copyright © 1999 Andres Seco and J.Horacio M.G.</tt>, and it's free. You can distribute it under the terms of the <bf/GNU General Public License/, which you can get at <htmlurl url="http://www.gnu.org/copyleft/gpl.html" name="http://www.gnu.org/copyleft/gpl.html">. You can get unofficial translated issues somewhere in the internet, as well as the Spanish translated copy at <htmlurl url="http://visar.csustan.edu/~carlos/gpl-es.html" name="http://visar.csustan.edu/~carlos/gpl-es.html"> or Lucas <htmlurl url="http://www.lucas.org" name="http://www.lucas.org">. Information and other contents in this document are the best of our knowledge. However, we may have make errors. So you should determine if you want to follow the instructions given in this document. Nobody is responsible for any damage in your computers and any other loss derived from the use of the information contained herein. THE AUTHORS AND MAINTAINERS ARE NOT RESPONSIBLE FOR ANY DAMAGE INCURRED DUE TO ACTIONS TAKEN BASED ON INFORMATION CONTAINED IN THIS DOCUMENT. Of course, we are open to all type of suggestions and corrections on the content of this document. <sect>Inviare e ricevere e-mail su Internet <p> Questo documento non tratta il problema dello scambio di messaggi tra una macchina locale e altri nodi (all'interno di una rete locale o in Internet). Questo scambio dovrebbe essere portato a termine da messages transfer agent (MTA) quali, ad esempio, <tt/sendmail/ <htmlurl url="http://www.sendmail.org" name="http://www.sendmail.org">, <tt/qmail/ <htmlurl url="http://www.qmail.org" name="http://www.qmail.org">, <tt/exim/ <htmlurl url="http://www.exim.org" name="http://www.exim.org">, <tt/smail/ <htmlurl url="ftp://ftp.planix.com/pub/Smail" name="ftp://ftp.planix.com/pub/Smail">, etc. In questo documento, pertanto, si presuppone che questo metodo per la ricezione e l'invio dei messaggi sia già installato e correttamente funzionante. Se si è in grado di inviare un messaggio e leggere la posta con il comando <tt/mail/ dalla linea di comando del proprio computer, <tscreen>$ mail -s <subject> <user@domain.net>&nl; scrivi qui il testo, e terminalo con un punto sulla prossima linea&nl; .</tscreen> allora deve già essere installato un qualche tipo di MTA che si occupa del trasferimento del messaggio. Altrimenti, si possono ottenere le informazioni necessarie a configurarlo nelle pagine di manuale di <em/smail/: <tscreen>$ man smail</tscreen> o del MTA che è installato, e <em/fetchmail/: <tscreen>$ man fetchmail</tscreen> o in qualche altro documento, che faccia riferimento a questi programmi. <sect>Configurazione di Mutt <p> Il prossimo file è un buon esempio per iniziare ad usare <em/Mutt/ in modo non molto sofisticato, utilizzando il path per il file degli alias, dei messaggi inviati e di quelli posposti. Lo si può ulteriormente personalizzare leggendo le indicazioni contenute nelle pagine di manuale di <em/Mutt/ e in <tt>/usr/doc/mutt/</tt> o <tt>/usr/doc/mutt-i/</tt>. Semplice esempio di <tt>˜/.muttrc</tt>: <tscreen><verb> set folder=~/Mail set alias_file=.alias set postponed=.postponed set record=SendMessages set signature=.signature my_hdr From: Name Surname <Name@domain.com> source =.alias </verb></tscreen> E' necessario che la directory <tt>˜/Mail</tt> esista, cioè che esista quella che appare come un "segno di uguale" nel file di configurazione <tt/.muttrc/ (vale a dire, <tt/=.alias/ per <em/Mutt/ significa <tt>˜/Mail/.alias</tt>, e <tt/=.postponed/ è <tt>˜/Mail/.postponed</tt>). In ogni modo, è possibile tenere questi file in un'altra directory purché se ne indichi il percorso completo in <tt>˜/.muttrc</tt>, e si abbiano i permessi necessari per lavorarci. Si dovrà anche modificare la linea <tt/my_hdr/ con il proprio nome e il proprio indirizzo di posta elettronica. Nel file <tt>˜/Mail/.signature</tt> si può includere la signature che apparirà in tutti i messaggi inviati. Questo file di configurazione può risultare alla fine molto grande, così è pratica comune tenere in diversi file alcuni dei comandi di configurazione. D'ora in poi, le linee di configurazione riguardanti <em/PGP/ o <em/GnuPG/ e le macro della tastiera che personalizzeremo saranno tenute separate. Per fare questo, basta aggiungere le seguenti linee al file <tt>˜/.muttrc</tt>: <tscreen><verb> source = ~/Mail/.mutt.macros source = ~/Mail/.gnupgp.mutt </verb></tscreen> e usare i file <tt>˜/Mail/.mutt.macros</tt> e <tt>˜/Mail/.gnupgp.mutt</tt> per raccogliere le macro della tastiera e la configurazione di <em/PGP/ o <em/GnuPG/. Per avere informazioni più approfondite e complete riguardanti l'uso e la configurazione di <em/Mutt/ e sulle sue caratteristiche avanzate, si veda il manuale di Mutt <htmlurl url="http://www.mutt.org" name="http://www.mutt.org">. <sect>PGP e GnuPG <p> Prima di usare una qualsiasi delle versioni di <em/PGP/ con <em/Mutt-i/, sarà necessario configurare <em/PGP/ appropriatamente in modo tale che il file delle chiavi pubbliche (public keys ring) e quello delle chiavi private (private keys ring) esistano. Conviene provare PGP dalla linea di comando per vedere se firma e cifra correttamente. Esistono due versioni di <em/PGP/ per <em/Unix/: la <tt/2.6.3(i)/ e <tt/5.0(i)/, che chiameremo <bf/PGP2/ e <bf/PGP5/ rispettivamente. <bf/GnuPG/ è un nuovo programma di cifratura, sviluppato recentemente, in uno stato di sviluppo avanzato, open source e gratuito, sotto molti aspetti migliore di <bf/PGP/ (si veda il GnuPG mini howto <htmlurl url="http://www.dewinter.com/gnupg_howto" name="http://www.dewinter.com/gnupg_howto">). Si chiarirà anche il fatto che <em/PGP/, essendo un programma sviluppato negli Stati Uniti, è sottoposto ad alcune leggi restrittive riguardanti l'esportazione di programmi contenenti codice criptografico. Questa è la ragione dell'esistenza di una versione internazionale di quasi tutte le versioni binarie, cosa che si può notare dalla presenza della lettera &dquot;<bf/i/&dquot; (<bf/pgp - pgpi/). <sect1>PGP2 <p> <em/PGP2/ genera chiavi con l'algoritmo RSA <htmlurl url="http://www.rsa.com" name="http://www.rsa.com"> e utilizza IDEA <htmlurl url="http://www.ascom.ch" name="http://www.ascom.ch"> come algoritmo di cifrazione. Entrambi gli algoritmi sono proprietari e il loro uso è regolato dai rispettivi brevetti. Per utilizzarlo correttamente, lo si deve installare e avere una directory chiamata <tt>˜/.pgp</tt>, contenente il file di configurazione <tt/pgp-i.conf/ e i file delle chiavi pubbliche e private, <tt/pubring.pgp/ and <tt/secring.pgp/ rispettivamente. <sect1>PGP5 <p> Le chiavi generate da <em/PGP5/ sono di tipo <bf>DSS/DH</bf> (Digital Signature Standard / Diffie-Hellman). PGP5 usa <bf/CAST/, <bf/Triple-DES/ e <bf/IDEA/ come algoritmi di cifratura. PGP5 funziona con dati cifrati o firmati utilizzando <em/RSA/ (PGP2) e, per farlo, utilizza le chiavi generate da PGP2, dal momento che PGP5 non può generare quel tipo di chiavi. Al contrario, PGP2 non è in grado di utilizzare le chiavi <em>DSS/DH</em> create da PGP5. Questo comporta problemi di (in)compatibilità, dal momento che molti continuano ad usare PGP2 sotto <em>Unix/Linux</em>. Per utilizzare PGP5 correttamente, nella directory <tt>˜/.pgp</tt> ci devono essere il public e il private key ring (<tt/pubring.pkr/ e <tt/secring.skr/ rispettivamente) e il file di configurazione <tt/pgp.cfg/. Nel caso in cui si abbiano installate entrambe le versioni di <em/PGP/ (supponiamo che PGP2 sia stato installato e configurato prima di PGP5), creeremo il file di configurazione <tt>˜/.pgp/pgp.cfg</tt> di PGP5 come un link simbolico al file <tt>˜/.pgp/pgp-i.conf</tt> <tscreen>˜/.pgp$ ln -s pgp-i.conf pgp.cfg</tscreen> e aggiungeremo le seguenti linee in fondo al file <tt>˜/.pgp/pgp-i.conf</tt>: <tscreen><verb> PubRing = "~/.pgp/pubring.pkr" SecRing = "~/.pgp/secring.skr" RandSeed = "~/.pgp/randseed.bin" </verb></tscreen> I file con i key ring di versioni diverse possono coesistere senza alcun problema nella stessa directory. <sect1>GnuPG <p> <bf/GnuPG/ presenta le stesse funzionalità dei precedenti programmi. A differenza di <em/PGP/, <em/GnuPG/ non usa algoritmi con brevetti restrittivi. <em/PGP/ è gratuito per uso personale, ma non per uso commerciale e il suo sviluppo non è open. Si può utilizzare gratuitamente <em/GnuPG/ anche per scopi commerciali ed è open source, come il nostro sistema operativo preferito (anche il suo sviluppo e l'implementazione viene fatta principalmente sotto <em/Linux/): Le chiavi generate da <em/GnuPG/ sono di tipo <bf>DSA/ElGamal</bf> (<em/Digital Signature Algorithm/, noto anche come <em/DSS/). E' del tutto compatibile con <em/PGP/, eccetto per l'utilizzo da parte di quest'ultimo di algoritmi brevettati come <em/RSA/ e <em/IDEA/. Comunque, è possibile implementare una certa compatibilità tra loro (vedi il GnuPG mini HOWTO <htmlurl url="http://www.dewinter.com/gnupg_howto" name="http://www.dewinter.com/gnupg_howto"> per quanto concerne l'interazione con PGP2 e PGP5). <sect>Integrare PGP e Mutt <p> L'operazione da svolgere sul messaggio in uscita (firmare, cifrare o entrambe le cose) è scelta proprio prima di premere il tasto &dquot;<tt/y/&dquot; per inviare il messaggio, dal menu raggiungibile con l'opzione &dquot;<tt/p/&dquot;. Una volta scelta l'operazione da compiere, cambierà soltanto la linea <em/PGP/ nell'header del messaggio mostrato a video. Finché il messaggio non viene inviato con il comando &dquot;<tt/y/&dquot;, non verrà chiesto né di inserire la passphrase per attivare la firma del messaggio né quali chiavi pubbliche usare per la cifrature nel caso in cui il destinatario non sia stato trovato nel nostro public key ring. <bf/NOTA:/ se non si inserisce correttamente la passphrase, <em/Mutt/ sembra "bloccarsi". Ma non è così: attende solo che venga inserita nuovamente. Per farlo, si deve premere <tt/<Invio>/ e cancellare la passphrase dalla memoria con <tt/<Ctrl>F/. Poi, si deve ripetere l'invio del messaggio con &dquot;<tt/y/&dquot; e inserire di nuovo la passphrase. In questo modo, <em/Mutt/ userà <em>PGP/MIME</em> per inviare il messaggio e un nuovo file apparirà nella lista dei file da inviare firmati (nel caso in cui si sia scelto solo di firmare il messaggio) o cifrerà l'intero messaggio (tutte le sue parti <em/MIME/). Rimarranno solo due parti MIME: la prima contenente la versione PGP/MIME e la seconda il messaggio cifrato (contenente tutte le sue parti MIME) e firmato (se si è scelto di firmare il messaggio): <bf/Nota:/ se per qualche motivo il mail user agent del destinatario non è in grado di usare <em/MIME/, si dovrà includere la firma all'interno del corpo del messaggio. Si veda la sezione riguardante <em>application/pgp</em> alle voci <ref id="sec-app-pgp" name="PGP5"> e <ref id="sec-app-gpg" name="GnuPG">. <em/Mutt/ proverà a verificare la firma o a decifrare automaticamente i messaggi ricevuti che utilizzano <em>PGP/MIME</EM>. Si veda la sezione <ref id="sec-procmail.2" name="Note e trucchi per usare Procmail">, in cui si spiega come cambiare automaticamente il tipo <em/MIME/ dei messaggi ricevuti che non lo impostano correttamente. <sect1>File opzionali di configurazione <label id="sec-opcion"> <p> Nella sezione che segue si trovano modifiche al file di configurazione di <em/Mutt/ necessarie per usare facilmente <ref id="sec-conf-pgp2" name="PGP2">, <ref id="sec-conf-pgp5" name="PGP5">, e <ref id="sec-conf-gpg" name="GnuPG">. A questo scopo, utilizziamo un nuovo file di configurazione che abbiamo chiamato <tt/.gnupgp.mutt/ (qualsiasi altro nome va bene, purché si inserisca il nome prescelto all'interno del file di configurazione principale <tt>˜/.muttrc</tt>). Lo si può fare includendo il percorso completo del file <tt/.gnupgp.mutt/ in una linea alla fine del file <tt>˜/.muttrc</tt>. La directory in cui si inseriscono questo e altri file di configurazione opzionali può essere qualsiasi, purché si abbiano i permessi corretti (in una sezione precedente tali file sono stati inclusi nella directory <tt>˜/Mail/</tt>), ad esempio all'interno della propria home directory. Anche sul nome non ci sono vincoli. Si può creare la directory mutt.varios: <tscreen>˜$ mkdir mutt.varios</tscreen> in cui copiare (o creare) il file di configurazione opzionale <tt/.gnupgp.mutt/ e poi includere questo file nel file <tt/.muttrc/ col comando <tt/source/, in questo modo: <tscreen><verb> source ~/mutt.varios/.gnupgp.mutt </verb></tscreen> Ora <em/Mutt/ considererà le variabili di configurazioni inserite in <tt/.gnupgp.mutt/ come se fossero contenute direttamente in <tt/.muttrc/. Questo è un buon metodo per evitare di avere un file di configurazione enorme e disordinato, e può essere utilizzato per raggruppare altre variabili di configurazione. Per esempio, se usiamo <em/vim/ come editor in <em/Mutt/, possiamo indicare a <tt/.muttrc/ di utilizzare direttamente il file di configurazione di <em/vim/: <tt/.vimrc/. Innanzitutto, si deve copiare <tt>˜/.vimrc</tt> nella nostra directory contenente i file di configurazione opzionali, <tt>˜/mutt.varios/</tt>, e dargli un altro nome (per esempio <tt/vim.mutt/): <tscreen> $ cd /home/user ˜$ cp .vimrc mutt.varios/vim.mutt </tscreen> Poi, si devono cambiare le opzioni di configurazione che vogliamo siano diverse quando usiamo <em/vim/ come editor in <em/Mutt/, ed infine modificare <tt/.muttrc/: <tscreen><verb> set editor="/usr/bin/vim -u ~/mutt.varios/vim.mutt" </verb></tscreen> Con quest'ultima linea stiamo impostando <tt/Mutt/ in modo da usare un editor esterno, <em/Vim/, con le opzioni di configurazione desiderate. <sect1>Variabili di configurazione generale <label id="sec-conf-gen"> <p> Ci sono alcune variabili che verranno usate con tutti e tre i programmi di criptografia a chiave pubblica. Queste variabili sono booleane e possono essere <bf/set/ (attivate) o <bf/unset/ (disattivate). Nel file di configurazione (<tt>˜/.muttrc</tt>, <tt>˜/mutt.varios/.gnupgp.mutt</tt> o qualsiasi altro nome si preferisca), il simbolo (<bf/#/) è un commento e verrà ignorato. Lo useremo per di qui in avanti per commentare ciascuna variabile: <descrip> <tag/unset pgp_autosign/ # se questa variabile è attivata <em/Mutt/ chiederà di firmare tutti&nl; # i messaggi in uscita. <ref id="uno" name="(1)"> <tag/unset pgp_autoencrypt/ # se questa variabile è attivata <em/Mutt/ chiederà di criptare tutti&nl; # i messaggi in uscita. <ref id="uno" name="(1)"> <tag/set pgp_encryptself/ # salva una copia criptata di tutti i messaggi inviati che vogliamo criptare&nl; # (si deve porre <tt/set copy=yes/). <tag/set pgp_replysign/ # quando si risponde ad un messaggio firmato, la risposta sarà&nl; # anch'essa firmata. <tag/set pgp_replyencrypt/ # quando si risponde ad un messaggio cifrato, la risposta&nl; # sarà anch'essa cifrata. <tag/set pgp_verify_sig=yes/ # si desidera verificare automaticamente i messaggi firmati ricevuti?&nl; # Certo! <tag/set pgp_timeout=<n>/ # cancella la passphrase dalla memoria cache dopo <n> secondi&nl; # che la si è inserita. <ref id="dos" name="(2)"> <tag>set pgp_sign_as="0xABC123D4"</tag> # che chiave si vuole usare per firmare i messaggi in uscita?&nl; # <bf/Nota:/ si può impostare questa variabile col proprio user id, ma&nl; # questo può generare confusione se si hanno diverse chiavi e lo stesso user id.&nl; <tag/set pgp_strict_enc/ # usa &dquot;quoted-printable&dquot; quando PGP lo richiede.&nl; <tag/unset pgp_long_ids/ # non usa 64 bit key id, usa 32 bit key id.&nl; <tag/set pgp_sign_micalg=<some>/ # algoritmo per il controllo dell'integrità del messaggio.&nl; # <some> va scelto tra uno dei seguenti valori: <itemize> <item><bf/pgp-md5/&nl; se si usano chiavi RSA <item><bf/pgp-sha1/&nl; se si usano chiavi DSS (DSA) <item><bf/pgp-rmd160/&nl; </itemize> </descrip> Nelle prossime tre sezioni verranno spiegate le variabili di configurazione adatte a ciascuna delle versioni di PGP. La quarta sezione spiegherà come modificare queste variabili se si usano più versioni d PGP. (1)<label id="uno"> Dal momento che <em/Mutt/ chiede di inserire la passphrase ogni volta che si vuole firmare un messaggio e di scegliere un destinatario quando si vuole cifrare, può essere scomodo impostare questa variabile. Solitamente la si lascia disattivata. Questo in particolar modo è vero quando si vuole cifrare i messaggi, dal momento che non si hanno le chiavi pubbliche di tutti i destinatari. (2)<label id="dos"> A seconda del numero di messaggi che si vuole firmare o decifrare, si decide se tenere la passphrase nella memoria cache più o meno a lungo. Questa opzione permette di non inserire la passphrase ogni volta che si firma un nuovo messaggio o se ne decifra uno ricevuto. <bf/Attenzione:/ tenere la passphrase nella memoria cache non è sicuro, soprattutto in sistemi connessi alla rete. (3)<label id="tres"> Questo è necessario solo con la chiave che si usa per firmare. Quando la chiave viene scelta dal menu, sarà <em/Mutt/ a calcolare l'algoritmo più appropriato. <sect1>Variabili di configurazione per PGP2 <label id="sec-conf-pgp2"> <p> Per usare PGP2 con <em/Mutt-i/ si dovranno aggiungere le seguenti linee al file <tt>˜/mutt.varios/.gnupgp.mutt</tt>: <tscreen><verb> set pgp_default_version=pgp2 set pgp_key_version=default set pgp_receive_version=default set pgp_send_version=default set pgp_sign_micalg=pgp-md5 set pgp_v2=/usr/bin/pgp set pgp_v2_pubring=~/.pgp/pubring.pgp set pgp_v2_secring=~/.pgp/secring.pgp </verb></tscreen> Come già detto, i file <tt>˜/.pgp/pubring.pgp</tt> e <tt/secring.pgp/ devono esistere. Maggiori informazioni su PGP2 si possono ottenere col comando <tt/man pgp/. <sect1>Variabili di configurazione per PGP5 <label id="sec-conf-pgp5"> <p> Per usare PGP5 con <em/Mutt-i/ si dovranno aggiungere le seguenti linee al file <tt>˜/mutt.varios/.gnupgp.mutt</tt>: <tscreen><verb> set pgp_default_version=pgp5 set pgp_key_version=default set pgp_receive_version=default set pgp_send_version=default set pgp_sign_micalg=pgp-sha1 set pgp_v5=/usr/bin/pgp set pgp_v5_pubring=~/.pgp/pubring.pkr set pgp_v5_secring=~/.pgp/secring.skr </verb></tscreen> Anche in questo caso, i file <tt>˜/.pgp/pubring.pkr</tt> e <tt/secring.pkr/ devono esistere. Maggiori informazioni su PGP5 si possono ottenere col comando <tt/man pgp5/. <sect1>Variabili di configurazione per GnuPG <label id="sec-conf-gpg"> <p> Per usare <em/GnuPG/con <em/Mutt-i/ si dovranno aggiungere le seguenti linee al file <tt>˜/mutt.varios/.gnupgp.mutt</tt>: <tscreen><verb> set pgp_default_version=gpg set pgp_key_version=default set pgp_receive_version=default set pgp_send_version=default set pgp_sign_micalg=pgp-sha1 set pgp_gpg=/usr/bin/gpg set pgp_gpg_pubring=~/.gnupg/pubring.gpg set pgp_gpg_secring=~/.gnupg/secring.gpg </verb></tscreen> Al solito, i file <tt>˜/.gnupg/pubring.gpg</tt> e <tt/secring.gpg/ devono esistere. Maggiori informazioni su GnuPG si possono ottenere con i comandi <tt/man gpg.gnupg/, <tt/man gpgm/, e <tt/man gpg/. <sect1>Variabili di configurazione miste <label id="sec-conf-mix"> <p> Se non si ha intenzione di usare solamente una versione di questi programmi, si dovranno modificare alcune delle variabili presentate in precedenza. In realtà, si dovranno solo cambiare le variabili che impostano la versione utilizzata, rimuovendo quelle ridondanti. Ad esempio, per usare GnuPG per firmare i messaggi, tutti i comandi di <em/Mutt/ che fanno uso di Gnu/PGP chiameranno questo programma per apporre firme, decifrare, cifrare, verificare ecc. Per questo, si dovrà impostare la variabile di configurazione <tt/$set_pgp_default/ <bf/una sola volta/, in questo modo: <tscreen><verb> set pgp_default_version=gpg </verb></tscreen> Invece, per usare tutti e tre i programmi, il file <tt>˜/mutt.varios/.gnupgp.mutt</tt> potrebbe essere simile a questo: <tscreen><verb> set pgp_default_version=gpg # versione del programma da usare di default set pgp_key_version=default # chiave da usare di default # in questo caso, è gnupg a definirla set pgp_receive_version=default # il programma utilizzato per decifrare sarà quello indicato come default set pgp_send_version=default # di nuovo la versione definita nella prima riga (gpg) set pgp_gpg=/usr/bin/gpg # dove trovare l'eseguibile di GnuPG set pgp_gpg_pubring=~/.gnupg/pubring.gpg # il file delle chiavi pubbliche di GnuPG set pgp_gpg_secring=~/.gnupg/secring.gpg # il file delle chiavi segrete di GnuPG set pgp_v2=/usr/bin/pgp # dove trovare l'eseguibile di PGP2 set pgp_v2_pubring=~/.pgp/pubring.pgp # file delle chiavi pubbliche di PGP2 set pgp_v2_secring=~/.pgp/secring.pgp # file delle chiavi private di PGP2 set pgp_v5=/usr/bin/pgp # dove trovare l'eseguibile di PGP5 set pgp_v5_pubring=~/.pgp/pubring.pkr # file delle chiavi pubbliche di PGP5 set pgp_v5_secring=~/.pgp/secring.skr # file delle chiavi private di PGP5 </verb></tscreen> <sect>Macro interessanti per Mutt <p> <em/Mutt/ è molto configurabile e il suo modo operativo può essere modificato in modo molto flessibile a patto che le variabili di configurazione contenute in <tt/.muttrc/ siano ben impostate. In seguito, si trovano alcune macro utili nel caso in cui si vogliano generare messaggi firmati senza utilizzare lo standard <em>PGP/MIME</em>, in modo da poterli inviare a destinatari che non supportano questi tipi di messaggi. E' presentata anche una macro per modificare il file degli alias e ricaricarlo senza essere costretti ad uscire da <em/Mutt/ (quest'ultima macro non è collegata a <em>PGP/GnuPG</em> ed. è mostrata solo come un esempio della potenza delle macro in <em/Mutt/). E' possibile specificare quali key binding si vogliono usare con <em>PGP/GnuPG</em>. Anche qualora alcune di queste opzioni siano già state configurate, si possono cambiare o aggiungerne delle altre semplicemente modificando il file di configurazione. <sect1>Apporre la firma nel corpo del messaggio senza usare PGP/MIME con PGP5 <label id="sec-app-pgp"> <p> Prima che esistesse <em>PGP/MIME</em>, la firma di un messaggio era inclusa nel corpo del messaggio. Questo è un modo molto comune di inviare messaggi firmati in molti mail user agent. Se si ha intenzione di firmare i messaggi in questo modo, si hanno due opzioni: non modificare il tipo <em/MIME/ del messaggio o cambiarlo in <tt>application/pgp</tt>. Per implementare queste due modi di firmare in <em/Mutt/, si aggiungeranno le seguenti linee al file <tt>˜/mutt.varios/mutt.macros</tt>. Si deve aver già indicato il path di questo file nel file di configurazione principale, <tt/.muttrc/ (si faccia riferimento a <ref id="sec-opcion" name="File opzionali di configurazione">): <tscreen><verb> macro compose \Cp "F/usr/bin/pgps\ny" macro compose S "F/usr/bin/pgps\ny^T^Uapplication/pgp; format=text; x-action=sign\n" </verb></tscreen> Ora, premendo <tt/<Ctrl>p/ o <tt/S/ si è in grado di includere la firma nella parte del messaggio su cui si trova posizionato il cursore, prima di inviare il messaggio. <sect1>Apporre la firma nel corpo del messaggio senza usare PGP/MIME con GnuPG <label id="sec-app-gpg"> <p> Tutto come nel caso precedente solo con GnuPG. Le macro sono: <tscreen><verb> macro compose \CP "Fgpg --clearsign\ny" macro compose \CS "Fgpg --clearsign\ny^T^Uapplication/pgp; format=text; x-action=sign\n" </verb></tscreen> <sect1>Modificare il file degli alias e ricaricarlo <p> Inserendo questa macro nel file <tt>˜/mutt.varios/macros.mutt</tt> si sarà in grado di modificare il file degli alias con <em/vi/ (ma cambiando la linea si potrà usare anche un altro editor) senza dover uscire da <em/Mutt/, il tutto premendo <tt/<Alt>a/. <tscreen><verb> macro index \ea "!vi ~/Mail/.alias\n:source =.alias\n" </verb></tscreen> <sect1>Altri esempi di macro <p> Il seguente listato è stato ottenuto da Roland Rosenfeld e mostra come cambiare il programma utilizzato da Mutt per firmare/cifrare e come firmare senza utilizzare PGP/MIME utilizzando GnuPG <tscreen><verb> # ~/Mail/.muttrc.macros # file di configurazione della tastiera per Mutt-i # copiato, modificato e tradotto dall'originale: # ################################################################ # The ultimative Key-Bindings for Mutt # # # # (c) 1997-1999 Roland Rosenfeld <roland@spinnaker.rhein.de> # # # # $ Id: keybind,v 1.36 1999/02/20 19:36:28 roland Exp roland $ # ################################################################ # # Per utilizzarlo, aggiungere la seguente linea a ~/.muttrc: # source ~/Mail/.muttrc.macros # # Keybinding generici # (per tutti i menu di Mutt, escluso il pager!) # Con le tre opzioni successive possiamo cambiare i software utilizzato di default per cifrare: # <ESC>1 per usare GnuPG macro generic \e1 ":set pgp_default_version=gpg ?pgp_default_version\n"\ "Switch to GNU-PG" # <ESC>2 per usare PGP2 macro generic \e2 ":set pgp_default_version=pgp2 ?pgp_default_version\n"\ "Switch to PGP 2.*" # <ESC>5 per usare PGP5 macro generic \e5 ":set pgp_default_version=pgp5 ?pgp_default_version\n"\ "Switch to PGP 5.*" #NOTA: attenzione all'ultimo backspace alla fine delle macro precedenti: va inserito solo se si scrive quella linea e la successiva su righe differenti. # index, OpMain, MENU_MAIN # (Menu principale) # La prossima macro funziona solo nel menu principale (quello che appare quando si # lancia Mutt. La combinazione <CTRL>K permette di estrarre chiavi pubbliche da un messaggio # se questo ne contiene (lo si può sapere perché c'è una lettera K nella # riga del messaggio): macro pager \Ck ":set pipe_decode pgp_key_version=pgp2\n\e\ek:set pgp_key_version=pgp5\n\e\ek:set pgp_key_version=gpg\n\e\ek:set pgp_key_version=default nopipe_decode\n"\ "Extract PGP keys to PGP2, PGP 5, and GnuPG keyrings" # pager, OpPager, MENU_PAGER # (Menu del pager) # Permette la stessa operazione della precedente con la stessa combinazione di tasti, # ma in questo caso dal menu del pager: macro pager \e1 ":set pgp_default_version=gpg ?pgp_default_version\n"\ "switch to GNUPG" macro pager \e2 ":set pgp_default_version=pgp2 ?pgp_default_version\n"\ "switch to PGP 2.*" macro pager \e5 ":set pgp_default_version=pgp5 ?pgp_default_version\n"\ "switch to PGP 5.*" # compose, OpCompose+OpGerneric, MENU_COMPOSE # (Menu di composizione) # Le prossime operazioni sono utilizzate nel menu di composizione # Vale a dire, dopo che hai scritto il messaggio e lo hai chiuso per inviarlo, # proprio prima di premere il tasto "Y" che ti permette di inviarlo al MTA. # In questo caso, creiamo un menu che appare quando si preme la "P". # Le opzioni nel menu saranno collegate a MENU_PGP. Queste sono # le opzioni principali (cifratura e firma): bind compose p pgp-menu # Dal momento che molti programmi non possono usare PGP/MIME (soprattutto quelli M$), la combinazione <CTRL>P # ci permetterà di firmare i messaggi alla vecchia maniera (Application/PGP): macro compose \CP "Fgpg --clearsign\ny" # La seguente, <CTRL>S, ci permetterà di firmare usando PGP/MIME con la chiave privata # che abbiamo impostato di default. Questa macro non è necesaria, dal momento che # possiamo ottenere lo stesso risultato dal menu "P": macro compose \CS "Fgpg --clearsign\ny^T^Uapplication/pgp; format=text; x-action=sign\n" </verb></tscreen> Si possono aggiungere altre macro e alcune sono già configurate e attivate di default in versioni più recenti di Mutt. Alcune altre opzioni includono <itemize> <item><CTRL>K (estrae chiavi pubbliche da un messaggio) <item><ESC>K (allega una chiave pubblica a un messaggio) <item><CTRL>F (quando si usa la passphrase per firmare o decifrare un messaggio, questa rimane in memoria. Con questo comando la si può cancellare dalla memoria) <item>ecc... </itemize> Per vedere quale altre opzioni sono attive, si deve accedere al menu di aiuto (?) <sect>Note e trucchi per usare Procmail <sect1>Configurare Procmail per inviare automaticamente le proprie chiavi pubbliche <label id="sec-procmail.1"> <p> Dato che questo non è lo scopo principale di questo Howto, aggiungeremo che il modo più sicuro per ottenere una chiave pubblica da qualcuno è che questi ce la dia di persona, a mano. Poiché molte volte questo non è facilmente realizzabile, le persone si scambiano chiavi pubbliche via posta elettronica o cercandole in un key server, per quanto nessuno di questo metodi assicuri che la chiave ricevuta sia realmente la chiave di chi dovrebbe essere. Si possono usare altri mezzi di comunicazione considerati "sicuri" (cercare il possessore della chiave nell'elenco telefonico e chiedendogli di leggere la sua "fingerprint" per confrontarla con quella della chiave ottenuta attraverso percorsi non sicuri): Quello che vedremo è un "trucco" da inserire nel file <tt>.procmailrc</tt> per restituire la propria chiave pubblica al mittente di un messaggio che abbia un ben determinato <tt>Subject</tt>: <tscreen><verb> :0 h * ^Subject:[ ]+\/(|send)[ ]+key pub\>.* | mutt -s "Re: $MATCH" `formail -rtzxTo:` </clau/mykey.asc </verb></tscreen> Ciò che è indicato nel precedente paragrafo è: abbiamo una copia in ASCII della nostra chiave pubblica, in una certa directory (in questo caso in <tt>/clau</tt>) in un file chiamato <tt>mykey.asc</tt>. Quando procmail riceve un messaggio che include "send key pub" nel <tt>Subject:</tt>, invia quel file al mittente. IMPORTANTE: tra le parentesi è contenuto <bf>uno spazio</bf> e <bf>una tabulazione</bf>. <sect1>Verificare e decifrare automaticamente un messaggio senza PGP/MIME <label id="sec-procmail.2"> <p> Quando si riceve un messaggio firmato che utilizza PGP/MIME e lo si apre col proprio MUA preferito (Mutt, no?), questo riconosce il messaggio come PGP/MIME e controlla la firma se si possiede la chiave del mittente. Questi messaggi sono quelli con la lettera "S" nella prima parte della riga del messaggio in Mutt: <tscreen><verb> 36 S 05/09 Andres Seco Her ( 12K) Al fin </verb></tscreen> Invece i messaggi cifrati hanno la "P": <tscreen><verb> 12 P 03/24 Andres Seco Her (6,3K) Re: FW: Re: Mutt - pgp/gnupg </verb></tscreen> Ma se il messaggio è cifrato e ha il tipo MIME &dquot;application/pgp&dquot;, quando lo si apre Mutt non ne controlla la firma e la firma è contenuta all'interno del corpo del messaggio, come in questo caso: <tscreen><verb> -----BEGIN PGP SIGNED MESSAGE----- Date: Tue, 25 May 1999 13:04:26 +0200 From: La Corporación <bill@reboot.com> Subject: Actualización S.O. To: Sufrido Usuario <pepe@casa.es> Sufrido usuario: le comunicamos que puede usted adquirir la última actualización del programa O.E. con la adquisición de nuestro sistema operativo reboot99 por el módico precio de ... etc. -----BEGIN PGP SIGNATURE----- Version: 2.6.3ia Charset: noconv iKBGNpUBX0235VapRBUy1KklAQGl9wQA3SBMio0bbbajHAnyKMOlx3tcgNG7/UVC AbqXcUnyGGOo13Nbas95G34Fee3wsXIFo1obEfgiRzqPzZPLWoZdAnyTlZyTwCHe 6ifVpLTuaXvcn9/76rXoI6u9svN2cqHCgHuNASKHaK9034uq81PSdW4QdGLgLoeB vnGmxE+tGg32= =Xidf -----END PGP SIGNATURE----- </verb></tscreen> Per verificarlo, lo si deve salvare e usare la linea di comando. Tuttavia, è possibile convertire il tipo MIME di questo messaggio con <em/Procmail/ per permettere a <em/Mutt/ di riconoscerlo come <em>PGP/MIME</em>. Si deve solo aggiungere a <tt/.procmailrc/: <tscreen><verb> :0 * !^Content-Type: message/ * !^Content-Type: multipart/ * !^Content-Type: application/pgp { :0 fBw * ^-----BEGIN PGP MESSAGE----- * ^-----END PGP MESSAGE----- | formail \ -i "Content-Type: application/pgp; format=text; x-action=encrypt" :0 fBw * ^-----BEGIN PGP SIGNED MESSAGE----- * ^-----BEGIN PGP SIGNATURE----- * ^-----END PGP SIGNATURE----- | formail \ -i "Content-Type: application/pgp; format=text; x-action=sign" } </verb></tscreen> Si può notare che questo è valido per messaggi firmati e cifrati di tipo application/pgp. <sect1>Cambiare il tipo MIME per messaggi contenenti chiavi senza PGP/MIME <p> Se si riceve un public key block da un MUA che non rispetta <em>PGP/MIME</em>, si deve salvare il corpo del messaggio e poi inserirlo nel proprio public key ring. Però, inserendo queste linee in <tt/.procmailrc/, si potrà includere la chiave direttamente da mutt. <tscreen><verb> :0 fBw * ^-----BEGIN PGP PUBLIC KEY BLOCK----- * ^-----END PGP PUBLIC KEY BLOCK----- | formail -i "Content-Type: application/pgp-keys; format=text;" </verb></tscreen> Grazie a Denis Alan per questa nota su procmail. <sect>Scambiare messaggi firmati/cifrati con MUA e piattaforme differenti <p> All'inizio, la firma era inserita all'interno del testo. In seguito, è stato introdotto il tipo MIME <tt>application/pgp</tt> ad indicare che il successivo attachment era la firma o il messaggio cifrato. Infine, con le specifiche PGP/MIME, è stato possibile isolare la firma dal messaggio originale, così da non modificarlo assolutamente e in modo tale che chi non avesse PGP potesse vedere il messaggio come era originariamente (nel caso di messaggio firmato), senza alcun testo aggiunto all'inizio o alla fine da PGP. Attualmente, solo pochi mail user agent (MUA) sono in grado di integrare PGP e usare lo standard PGP/MIME. Così è necessario inviare i messaggi utilizzando il vecchio metodo quando si sa che il destinatario non supporta PGP/MIME. In Linux, i mail user agent che riconoscono PGP/MIME sono mutt-i e pine. In Windows, solo Eudora nelle versioni 3.x e 4.x può usare PGP/MIME. Se conoscete altri mail user agent che supportano PGP/MIME, ditemelo via e-mail, e li includerò qui. <sect>Programmi e versioni utilizzati <p> Per scrivere questo documento abbiamo utilizzato le seguenti versioni di Mutt: <itemize> <item>Mutt 0.93i - non si può usare GnuPG con questa versione. <item>Mutt 0.95.3i - possono essere usate tutte le versioni di PGP e GnuPG </itemize> Di seguito, le versioni di PGP e GnuPG: <itemize> <item>PGPi 5.0 <item>GnuPG 0.4.3 <item>GnuPG 0.9.4 </itemize> <sect>Ulteriori informazioni <p> La documentazione originale da cui questo documento è stato tratto può essere trovata nelle pagine di manuale di "mutt", "pgp", "pgp5", "gnupg", "procmail", nelle rispettive directory sotto /usr/doc e nei siti: <itemize> <item>Home Page Ufficiale di Mutt- <htmlurl url="http://www.mutt.org" name="http://www.mutt.org"> <item>Sito Principale di GnuPG - <htmlurl url="http://www.gnupg.org" name="http://www.gnupg.org"> <item>Sito di PGP International - <htmlurl url="http://www.pgpi.com" name="http://www.pgpi.com"> <item>Home Page Ufficiale di Procmail - <htmlurl url="http://www.procmail.org" name="http://www.procmail.org"> </itemize> Le RFC cui si fa riferimento in questo documento sono: <itemize> <item>1847 - Security Multiparts for MIME: Multipart/signed and Multipart/encripted <item>1848 - MIME Object Security Services <item>1991 - PGP Message Exchange Formats <item>2015 - MIME Security with Pretty Good Privacy (PGP) <item>2440 - OpenPGP Message Format </itemize> e possono essere trovate in /usr/doc/doc-rfc e in vari siti su Internet, ad esempio <htmlurl url="http://metalab.unc.edu" name="http://metalab.unc.edu"> e <htmlurl url="http://nic.mil" name="http://nic.mil">. Si possono ottenere informazioni sulle RFC in <htmlurl url="mailto:RFC-INFO@ISI.EDU" name="RFC-INFO@ISI.EDU"> </article>