Next Previous Contents

1. Installazione

1.1 Installazione

Il codice del nymserver originale lo si puo' ottenere mandando una mail a source@nym.alias.net

Da qualche tempo e' in corso un aggiornamento del programma per permettere il supporto delle chiavi DH, e quindi l'utilizzo senza problemi di GPG e delle ultime versioni di PGP.

Al momento delle scrittura di questo documento il codice e' disponibile solo in CVS dal sito

http://www.sourceforge.net/projects/nymserv

dove sono presente le istruzioni per chi non e' solito usare il CVS, che ovviamente dovete avere installato (e' presente in tutte le principali distribuzioni linux).

Questo documento trattera' specificatamente quest'ultima versione del nymserver.

Come primo passo bisogna creare un utente dedicato al nym server.

Se avete gia' un remailer installato tanto meglio, altrimenti dovrete installarne uno, e per questo vi rimando alla guida sull'installazione del remailer mixmaster.

Parto quindi dal presupposto che abbiate creato un utente e un gruppo anon, e che il remailer sia installato in /home/anon/Mix/.

Potete creare un utente nymserv (che dovra' avere accesso al remailer), oppure usare l'utente anon gia' utilizzato per il remailer. Io ho optato per quest'ultima soluzione.

Le operazioni indicate da qui' in avanti andranno eseguite dall'utente anon se non diversamente specificato.

$ cd ~

cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/nymserv login

Vi verra' chiesta una password, premete semplicemente il tasto Enter

cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/nymserv co nymserv

A questo punto dovreste avere una directory ~/nymserv che contiene 3 files:

README
nymserver.pl - che e' lo script vero e proprio
setup.sh - che vi aiutera' nella creazione delle chiavi.

Lanciate setup.sh e create la vostra chiave DH, quando vi chiedera' il "Real Name" metteteci il nome che avra' il vostro nym, mentre come indirizzo metteteci config@nym.esempio.it

config e' obbligatorio, nym.esempio.it e' ovviamente personalizzabile.

Alla fine della creazione della chiave vi ritroverete una directory /home/anon/Nym con una sottodirectory pgp

GPG potrebbe lamentarsi del fatto che i permessi della directory /home/anon/Nym/pgp non sono sicuri, controllate che i permessi siano rwx per l'utente anon, altrimenti modificateli

$ chmod 700 /home/anon/Nym/pgp

Adesso dobbiamo modificare la chiave creata aggiungendogli un altro ID, in questo modo:

$ cd ~/Nym/pgp

Questo per assicurarsi di essere nella directory giusta per lanciare i comandi seguenti.

$ gpg --no-default-keyring --secret-keyring ./secring.pgp --list-secret-keys

dovrebbe mostrarvi la chiave appena creata, segnatevi il KeyID

Ci potrebbero essere dei messaggi del GPG come questi:

gpg: /home/anon/.gnupg: directory created
gpg: new configuration file `/home/anon/.gnupg/gpg.conf' created
gpg: keyblock resource `/home/anon/.gnupg/pubring.gpg': file open error

e' normale, se lanciate di nuovo il comando di cui sopra il GPG creera' anche il file ~/.gnupg/pubring.gpg che sara' comunque vuoto perche' le chiavi del nym resteranno nella directory ~/Nym/pgp/.

I messaggi di errore segnalati sono dovuti al fatto che GPG si aspetta di trovare una directory ~/.gnupg contenente i file gpg.conf e pubring.gpg, e se non ci sono li crea.

Ora lanciate:

$ gpg --no-default-keyring --secret-keyring ~/Nym/pgp/secring.pgp --keyring ~/Nym/pgp/pubring.pgp --edit-key config@nym.esempio.it

potete digitare "help" per avere la lista dei comandi, e usate il comando adduid per inserire un altro UID, che dovra' avere l'indirizzo e-mail send@nym.esempio.it

Se avete una chiave che usate come remailer-admin potete usarla per firmare la chiave del nym server:

$ gpg --no-default-keyring --keyring ~/Nym/pgp/pubring.pgp --keyring  /.gnupg/pubring.gpg -u remailer-admin@esempio.it --sign-key nymserverKEYID

Verificate che la firma ci sia:

$ gpg --no-default-keyring --keyring ~/Nym/pgp/pubring.pgp --list-sigs nymserverKeyID

Poi copiate il file ~/Nym/pgp/pubring.pgp in ~/Nym/ring-proto.pgp

Questo file contiene la chiave pubblica del vostro nym, e dopo aver aggiunto lo User-ID andava aggiornato (e' una copia esatta del file pubring.pgp).

Bisogna anche creare un file vuoto nella directory del gpg:

$ touch ~/Nym/.gnupg/noring.gpg

Infine create queste directory:

$ mkdir ~/Nym/users
$ mkdir ~/Nym/queue

Nella directory users create i files postmaster.forward e admin.forward che contengano il vostro indirizzo e-mail

Bisogna creare anche un file users/remailer-key.reply che contenga la chiave pubblica del nym, in modo che se qualcuno manda una mail all'indirizzo remailer-key@nym.esempio.it gli venga spedita la chiave. I comandi qua' sotto servono a creare questo file:

echo 'From: nobody@nym.esempio.it' > users/remailer-key.reply
echo 'Subject: PGP key for nym.esempio.it' >> users/remailer-key.reply
echo '' >> users/remailer-key.reply
gpg --armor --export $NYM_KEY_ID >> users/remailer-key.reply

Se volete create nello stesso modo un file help.reply che contenga invece della chiave del remailer un file di spiegazioni.

Nella directory ~/Nym/pgp create un file chiamato passphrase che contenga la password della chiave segreta del nym. Date i permessi 600 a questo file !! Non deve essere leggibile da altri utenti.

A questo punto dovete ancora copiare il file nymserver.pl dalla directory ~/nymserv/ alla directory ~/Nym/, dopodiche' editatelo, assicuratevi che la prima riga indichi il percorso corretto del perl, dopodiche spostatevi alla riga 50, dove inizia una sezione di poche righe dove bisogna specificare un po' di dati:

my $HOMEDIR = '/home/anon/Nym';
my $HOSTNAME = 'nym.esempio.it';
my $GPG      = '/usr/local/bin/gpg';  
my $SENDMAIL = '/usr/sbin/sendmail';
my $QMAIL_CODES = 0; # Use qmail rather than sendmail exit codes
my $REMAIL = '/home/anon/Mix/mix -SR --UNENCRYPTED=y';

# Specify your nymserver key ID right here.
my $NYMKEYID = '798E65E7';

Questi sono dati che dovrete sistemare/adattare al vostro sistema, il NYMKEYID e' il Key ID della chiave che avete creato prima.

La stringa --UNENCRYPTED=y e' facoltativa, serve se il remailer che avete installato non accetta messaggi non criptati.

Ovviamente il vostro sistema dovra' essere un grado di accettare posta per nym.esempio.it, quindi presumibilmente dovrete modificare il DNS, e impostare il vostro MTA a gestire correttamente la posta da e per questo nome di dominio. Le istruzioni per sendmail sono descritte nel file README prelevato dal CVS, se usate postfix invece potete regolarvi in diversi modi: (questi comandi vanno eseguiti come root)

un'opzione consiste nell'impostare il file /etc/postfix/master in modo da aggiungere un transport:

nymserv          unix  -       n       n       -       -       pipe
    flags=FR user=anon argv=/home/anon/Nym/nymserver.pl -d ${user}

nel file main.cf aggiungere nym.esempio.it tra i relay_domains

e infine nel file transport aggiungere:

nym.esempio.it nymserv:

in modo che tutta la posta in ingresso per il dominio nym.esempio.it sia gestito dal transport nymserv, che la passa in pipe allo script nymserver.pl come definito nel file master.cf.

Ricordatevi di lanciare

# postmap /etc/postfix/transport

# postfix reload

per rendere effettive le modifiche.

Un altro modo di procedere consiste nel dire a postfix di spedire tutta la posta destinata a nym.esempio.it all'utente anon, inserendo queste righe nel file /etc/postfix/virtual:

@nym.esempio.it anon

poi nel file main.cf inserite questa riga:

virtual_maps = hash:/etc/postfix/virtual

e aggiungete nym.esempio.it alla riga che definisce le mydestination:

$mydestination = $myhostname, localhost.$mydomain, nym.esempio.it

e ricordatevi di lanciare

# postmap /etc/postfix/virtual

# postfix reload

In questo modo l'utente anon riceve sia i messaggi destinati al remailer, e sia quelli destinati al nym, che saranno poi smistati con una corretta configurazione del procmail, ad. es. questa dovrebbe funzionare:

        # logghiamo tutto per capire se funziona come deve, 
        LOGFILE=/home/anon/procmail.log
        VERBOSE=ON

        :0 :
        * ^X-Original-To: config@nym\.esempio\.it*
        * ^Subject: remailer-key
        | /home/anon/Nym/nymserver.pl -d remailer-key


        :0 :
        * ^To: .*\@nym\.esempio\.it*
        {
               :0 
               * ^To: \/[^@]+
               {
                               ADDR = `echo "$MATCH" | cut -d "<" -f 2`
               }
 
               :0 
               | /home/users/anon/Nym/nymserver.pl -d $ADDR
        }


        :0:
        *
        |/home/anon/Mix/mix -RM

Ossia i messaggi che arrivano per il nym saranno passati in pipe allo script nymserver.pl con il parametro -d user, dove user e' l'utente a cui e' indirizzato il messaggio (config, send, list, etc. etc.) e tutto il resto va al remailer.

Alla variabile ADDR viene assegnato il valore equivalente al nome utente che precede la chiocciola ma che segue un eventuale segno minore. Questo per evitare che messaggi spediti a "Tizio <tizio@nym.esempio.it>" vengano passati allo script usando come utente "Tizio <tizio" che corrisponde al risultato della variabile $MATCH e che causa un errore perche' non viene giustamente riconosciuto come indirizzo valido.

Nel caso in cui l'utente sia config e il subject sia "remailer-key" il msg viene passato a remailer-key@nym.esempio.it in modo da restituire la chiave del remailer.

Nota:
Se avete una versione di postfix non aggiornata l'header X-Original-To non esiste, e quindi dovete trovare un modo per intercettare le mail per il dominio nym.esempio.it, perche' il vecchio postfix in una configurazione normale "perde" il virtual domain quando passa il messaggio all'utente anon e lo trasforma nel dominio della macchina.

La prima soluzione e' piu' "pulita", ma se lavorate su un server con delle configurazioni complicate per quanto riguarda local_recipient_maps etc. o non potete agire sul postfix di sistema la seconda puo' essere piu' comoda, e inoltre consultare il logfile del procmail di un utente e' certamente piu' semplice che andare a leggersi il logfile di sistema del postfix.

L'inconveniente di questa configurazione e' che i messaggi in cui il nym e' messo in Cc, o ci sono indirizzi multipli nel campo "To" non vanno a finire al nym ma finiscono in una mailbox del remailer, da dove potete editare gli header sistemandoli e poi bouncare il messaggio di nuovo all'utente nym a cui era destinato.

Se usate qmail, exim o altro non so dirvi come impostare la cosa, se qualcuno di voi mi manda le istruzioni saro' lieto di inserirle in questa guida.

I requisiti per poter far girare un nymserver sono minimi a livello di hardware, anche un 486 non dovrebbe avere problemi. Per quanto riguarda il software e' necessario avere perl 5.003 o superiore, con i moduli DB_File, POSIX, Socket, Crypt::OpenPGP e Digest::MD5

Innanzitutto come root dovete lanciare questo comandi:

# cd /usr/include; h2ph *.h sys/*.h

Io ho dovuto eseguirlo anche su altre sottodirectory di /usr/include come asm-i386, immagino dipenda dalla distribuzione con cui si lavora.

Lanciate lo script in questo modo:

$ ~/Nym/nymserver.pl -d list

e vedete se vi errori vi da, in genere risulta abbastanza chiaro capire cosa vi manca (che sia un file .h o un modulo del perl).

Tenete presente che Crypt::OpenPGP richiede molti moduli per supportare un'ampia gamma di algoritmi.

Se nell'installare il modulo Crypt::IDEA (necessario) in fase di compilazione avete problemi provate a modificare la linea 66 del file IDEA.xs, modificando sv_undef in PL_sv_undef, e rilanciate il make.

Per concludere ricontrolliamo i permessi in modo che dalla directory /home/anon/Nym (compresa) solo l'utente anon abbia accesso ai file, quindi le directory avranno i permessi settati a 700, mentre i file a 600, tranne lo scripr nymserver.pl che avra' anch'esso i permessi di lettura, scrittura ed esecuzione (700).

Se invece intendete usare il transport di postfix e non il procmail per il delivery dei messaggi, puo' essere che dobbiate ritoccare un po' i permessi perche' sara' l'utente coi cui permessi gira il postfix ad aver bisogno quantomeno del permesso di esecuzione sullo script perl, quindi puo' essere che dobbiate giocare un po', magari creando un gruppo apposito.

Bene, a questo punto non vi resta altro che verificare che tutto funzioni, e per quello che ho visto io i problemi si presentano a a 3 livelli:

$ ./nymserver.pl -d list

per verificare che col perl tutto funzioni bene,

poi mandando una mail a list@nym.esempio.it per vedere se vi risponde.

Se non vi risponde avete probabilmente sbagliato qualcosa a livello dell'MTA, e quindi andate a vedervi i log dell'MTA e/o del procmail

E infine cercate di crearvi un nym, se non vi risponde i problemi sono probabilmente a livello dei permessi o comunque legati al gpg e il log del procmail puo' tornarvi utile.


Next Previous Contents