[Attenzione, questa versione e` da considerarsi *PROVVISORIA*, l'ho resa
disponibile solamente per aiutare chi sta configurando adesso il suo
point, ma deve essere rivista, parzialmente riorganizzata e completata.
Non so quando potra` uscire il prossimo aggiornamento, spero che non
ci siano troppi bug. - 96/10/25]
[Fate attenzione soprattutto ai path, potrebbero essere diversi a seconda
della distribuzione usata.]
[Ora e` molto meno provvisoria, ma fate comunque attenzione: hic sunt leones.]

Ifmail HOWTO - versione 1.99999999 - 30 dicembre 1997
Versioni >= 1.99 di Marco d'Itri, md@linux.it, 2:332/206.10
Versioni <= 1.9 di Luca Maranzano, liuk@linux.it

Questo file contiene una guida per configurare e gestire un Point o una
BBS in tecnologia Fido sotto Linux, utilizzando il seguente software:

*) INN: InterNetNews, per gestire le news (echomail)
*) sendmail: Mail Transfer Agent per gestire la posta (matrix)
		(o in alternativa qmail)
*) Ifmail-tx: mailer per scambiare pacchetti di posta con i nodi Fido,
           e gateway tra fido e internet.
*) Un Newsreader fra i vari disponibili: trn, nn, tin, xrn, knews, ecc ecc.
*) Un Mailreader fra i vari disponibili: elm, pine, emacs, ecc ecc.

INN e sendmail vengono forniti di serie in tutte le distribuzioni di Linux,
per l'installazione sull'hard disk fate riferimento al programma di setup
specifico della vostra distribuzione. Lo stesso discorso vale per i vari
Mail e News reader.

Ifmail-tx invece e` un pacchetto a parte, e potete trovare l'ultima versione
aggiornata su internet presso ftp://ftp.z2.fidonet.org/pub/linux/Fido/
oppure presso ILS. Ifmail-tx e` un derivato del vecchio ifmail.
E` compreso nella distribuzione Debian suddiviso nei pacchetti ifmail, ifgate
e ifcico.

L'ultima versione di questo documento e` reperibile presso il sito ftp
di ILS: ftp://ftp.linux.it/pub/ILS/People/md/Ifmail-HOWTO.tgz oppure
presso ftp://svpop.com.dist.unige.it/pub/People/md/Ifmail-HOWTO.tgz .


                           - * - * - * - * -

 - 1 - Configurazione di INN

Partiamo dalla precondizione di aver gia` scompattato e installato il
pacchetto della distribuzione. Sconsiglio di compilarlo a mano, visto
che ci sono molte cose da configurare.

INN e` basato su un sistema client/server: c'e` un demone di sistema 'innd'
(che gira sempre imperterrito) al quale si possono dare dei comandi di
controllo con il programma /usr/lib/news/bin/ctlinnd o /usr/sbin/ctlinnd
(come dice il nome) e a cui i programmi utente (tin, trn o nn) si collegano
per spedire e/o leggere gli articoli della base messaggi mediante il
protocollo NNTP.

Nella distribuzione slackware sia i binari che i file di configurazione
di INN sono in /usr/lib/news, ma poiche` questa sistemazione non e`
conforme a FHS (ex FSSTND, lo standard che definisce l'organizzazione del
file system) si prevede che cambiera` in una delle prossime versioni della
distribuzione. In futuro potrete trovare i file di configurazione in
/etc/news, se non ci sono cercateli con locate(1), o leggete le man page.
E` una buona regola (per evitare problemi di permessi) operare come "news"
quando si cambia qualcosa che riguarda le news, o quando si fa "manutenzione".
Come root e` sufficiente fare 'su -l news'.

Innanzitutto vediamo in generale tutti i file di configurazione per INN;
riportero` come esempi i miei file; il mio linux box si chiama wonderland
e appartiene al dominio linux.it; se non si e` collegati in qualche
modo ad Internet il vostro computer dovra` comunque essere configurato
per essere in rete con se stesso, cioe` usando il loopback: con il
programma netconfig della Slackware, ad esempio, assegnerete un nome e un
dominio fittizio (ma forse l'avete gia` fatto quando avete installato il
tutto). Il mio indirizzo fido e` 2:332/206.10, e come dimostrazione per
la configurazione di un secondo network ftn configurero` il sistema per
il funzionamento anche come 42:391/102@guidenet.ftn.
Attenzione a *NON* assegnare come nome il proprio indirizzo Fido
opportunamente trasformato nel formato Internet se non siete assolutamente
sicuri di sapere cosa state facendo, perche` ifmail potrebbe avere dei
problemi (se siete interessati leggete la sua documentazione).


Adesso seguono i file in /etc/news (o in /usr/lib/news) che devono essere
modificati per il funzionamento del gateway. Se avete gia` configurato
tutto perche` funzioni anche per le news usenet allora ci saranno anche
delle altre linee, state attenti a non toglierle. Se invece non avete ancora
installato innd assicuratevi di eliminare le linee della configurazione di
esempio.

 * inn.conf: e` la configurazione di inews
pathhost e` l'hostname che inn inserisce nell'header Path, server e` la
macchina a cui inews si collega per spedire le news con NNTP, cioe` la vostra,
e organization e` il default che viene messo automaticamente se gli articoli
scritti da voi non hanno l'header Organization.
Attenzione a impostare correttamente il campo fromhost, e` quello che sara`
aggiunto di default da inews nell'header From di ogni articolo nel caso il
newsreader non lo specificasse. Deve contenere il domain a cui volete che
chi vi legge possa rispondervi via mail. Se non avete una connessione a
internet non e` usato e dovete metterci il vostro FQDN (cioe` l'hostname
completo del domain), altrimenti decidete voi cosa e` meglio, in molti
casi ci si mette il domain del vostro indirizzo di email. Dopo ogni
modifica a questo file puo` essere necessario riavviare inn.
-------------------------------------------------------------------------
fromhost:       linux.it
pathhost:       wonderland
organization:   Md's Linux Box
server:         wonderland.linux.it
-------------------------------------------------------------------------


 * control.ctl: non viene usato per messaggi provenienti da fido.

 * distrib.pats: indica cosa mettere di default nell'header Distribution
di un articolo in base al gruppo di appartenenza. Lasciatelo stare.

 * expire.ctl: definisce i tempi con cui gli articoli vengono eliminati da
/var/spool/news. Bisogna mettere le regole piu` generali per prime, e quelle
man mano piu` restrittive dopo. Per ulteriori dettagli su cosa mettere negli
ultimi tre campi leggete la man page, se siete pigri invece mettete in tutti
e tre il numero di giorni per cui volete conservare gli articoli.
-------------------------------------------------------------------------
## Default is 7 days
*:A:7:7:7

fido.ita.unix:A:2:10:10
fido.ita.pc_hard:A:2:4:4
fido.ita.comms_phone:A:2:5:5
-------------------------------------------------------------------------

 * hosts.nntp: ci si mettono gli host internet che ci mandano le news con
il protocollo NNTP, dovete aggiungere il vostro FQDN (il perche` e` spiegato
nelle faq di inn) e basta.
Se prendete le news internet con suck o qualche programma simile *non*
dovete mettere il nome del news server remoto.

 * moderators: non e` usato per fido.

 * newsfeeds: e` il file forse piu` complicato di tutta la baracca;
definisce le regole con cui gli articoli che arrivano vengono
distribuiti ai nostri feed (point, downlink e uplink).
Anche qui e` fortemente consigliato leggere newsfeeds(5), alcuni
suggerimenti su come configurarlo sono scritti piu` avanti.
-------------------------------------------------------------------------
ME:*,!junk::

# Gateway to FidoNet (ifnews)
f206.n332\
	:!*,fido.*\
	:Tf,Wfb:

f102.n391.z42.guidenet.ftn/f102.n391\
	:!*,gnet.*\
	:Tf,Wfb:
-------------------------------------------------------------------------

 * newsgroups: contiene l'elenco dei gruppi disponibili e la relativa
descrizione (e` opzionale), viene letto dai vari programmi utente
(tin e trn ad es.). Il formato e`:
-------------------------------------------------------------------------
nome.del.news.group		descrizione
-------------------------------------------------------------------------

 * nnrp.access: definisce quali host si possono collegare al server con un
newsreader per leggere e/o spedire articoli. In pratica solo localhost lo
puo` fare.
-------------------------------------------------------------------------
*:: -no- : -no- :!*
wonderland.linux.it:Read Post:::*
localhost:Read Post:::*
-------------------------------------------------------------------------

Tutte le distribuzioni decenti avranno gia` creato queste directory,
se esistono lasciatele stare, altrimenti createle cosi`:
Per fare prima aprite una virtual console per root e una per news e
copiate queste righe con il mouse, una per volta, parentesi comprese.

root# ( cd /var/log; mkdir news; chown news.news news; chmod 775 news )
news$ ( cd /var/log/news; mkdir OLD; chmod 775 OLD )
root# ( cd /var/spool; mkdir news; chown news.news news; chmod 775 news )
news$ ( cd /var/spool/news; umask 02; mkdir out.going control junk in.coming )
news$ ( cd /var/spool/news/in.coming; mkdir bad tmp )

Bene, in /var/log/news ci finiranno un nel po` di log, e in OLD i backup
giornalieri degli ultimi 7 giorni di logging.

In /var/spool/news/ ci finiranno le directory di ogni newsgroup;
ad esempio per l'area UNIX.ITA di Fido io ho definito il corrispondente
newsgroup fido.ita.unix; per cui tutti i messaggi saranno salvati in
/var/spool/news/fido/ita/unix/, ognuno numerato con un numero progressivo.
Per la creazione dei newsgroup useremo il comando ctlinnd, che vedremo dopo.

Se in /var/lib/news mancassero i file history* allora createli con
makehistory (leggete la man page).

Poi servono 2 alias di sistema per l'utente news e usenet a cui i programmi
di manutenzione mandano posta, per cui aggiungete in /etc/aliases:
-------------------------------------------------------------------------
news: usenet
usenet: <il vostro username>
-------------------------------------------------------------------------

Ancora 2 file importanti (creati nella directory di prima, qualunque fosse):
il file active e` l'elenco dei newsgroup disponibili con i contatori
degli articoli e il flag di posting. Se non e` gia` stato creato dalla
distribuzione bisogna crearlo a mano mettendoci i 2 gruppi che abbiamo
creato prima (junk e control) che sono *necessari*.
Il file ha questo formato:
-------------------------------------------------------------------------
control 0000000000 0000000001 y
junk 0000000000 0000000001 y
-------------------------------------------------------------------------

i token sono separati da uno spazio e sono tutti e 4 obbligatori:
1) nome del newsgroup
2) numero dell'articolo piu` recente (10 cifre con gli opportuni zeri)
3) numero dell'articolo piu` vecchio (10 cifre)
4) il carattere 'y', flag per il posting (sempre y se si usa solo fidotech).

Come al solito: 'man active' per saperne di piu`. Se a causa di un crash
di sistema i file active e/o history venissero rovinati si puo` rimediare
con i programmi makeactive e makehistory. Anche se alcune distribuzioni
forniscono un active con qualche migliaio di newsgroup vi sconsiglio di
usarlo, visto che sicuramente non li riceverete mai e sprecherete solo ram.

Bene... dovremmo quasi esserci; ora si puo` provare a far partire il
demone: bisogna lanciare lo script della vostra distribuzione:
/etc/init.d/inn start		[Debian]
/etc/rc.d/init.d/inn start	[Red Hat]
/etc/rc.d/rc.news		[Slackware?]

Per controllare tutto provate prima ad usare /usr/lib/news/bin/inncheck:
vi dira` un po` di cose che non vanno; eventuali errori di permessi per
alcuni file si possono trascurare. Un output accettabile
potrebbe essere:

/usr/lib/news/expire.ctl:0: mode 640, should be 440
/usr/lib/news/inn.conf:0: mode 644, should be 444
/usr/lib/news/newsfeeds:0: mode 644, should be 444
/etc/news/newsfeeds:0: warning you accept all incoming article distributions
/usr/lib/news/nntpsend.ctl:0: mode 640, should be 440

Dopo aver lanciato rc.news, controllate con 'ps x' che innd stia girando, 
se lo fa allora il grosso del lavoro e` stato fatto. Se invece 
sfortunatamente innd non sta girando controllate cosa e` successo con
root# tail -20 /var/log/news/news.*

Inn registra tutto quello che fa e cio` che va storto con il demone
syslogd, per cui i messaggi finiranno in quei file. Sono sempre da
tenere d'occhio, in generale, non solo per innd.
Se innd si lamenta di non potere prendere il controllo della porta 119,
commentate in /etc/inetd.conf la linea che inizia con 'nntp'.

Se tutto e` ok fate in modo che a ogni boot il news server venga caricato
per essere pronto a processare i messaggi: chi usa la Slackware deve
aggiungere in /etc/rc.d/rc.local lo script rc.news, mentre chi usa la
Debian o la Red Hat deve assicurarsi che esista il link in /etc/rc?.d/,
esattamente come si e` fatto con sendmail.
Consiglio di modificare in rc.news (/etc/news/boot per la debian) la
variabile FLAGS e di aggiungere il parametro -c0 per disabilitare il
controllo sulla data degli articoli processati, altrimenti molti articoli
provenienti da fido sarebbero rifiutati perche` troppo vecchi.

Ora vediamo di aggiungere un po` di gruppi: il comando da usare e`

# ctlinnd newgroup nome.del.gruppo

ctlinnd vi rispondera` con un Ok. Questa operazione e` da fare per
ogni area che desiderate. Oltre a creare le directory corrispondenti
in /var/spool/news/, verranno modificati anche i file active e
active.times con le nuove informazioni.
Per adottare una strategia furba nello scegliere i nomi dei gruppi
leggete piu` avanti.

Per controllare che tutto funga si puo` usare il comando:

# ctlinnd mode

che vi dira` qualcosa del tipo:

Server running
Allowing remote connections
Parameters c 0 i 0 (0) l 1000000 o 243 t 30 normal specified
Not reserved
Readers separate enabled

Con ctlinnd si possono dare un mucchio di comandi diversi al server 
nonche` modificarne i parametri; come al solito le man page di ctlinnd
e di innd sono letture consigliate :-).

Dopo aver creato i gruppi la prima cosa da provare e` il posting
di messaggi; un metodo brutale ma efficace e` quello "manuale":

user$ inews -h
Newsgroups: junk
Subject: test

posting test
^D           <<--- Ctrl-D == EOF

Se dopo il ctrl-D non vedete nulla e` un buon segno :-) provate
ad andare in /var/spool/news/junk/ e a vedere cosa c'e`. I file log e
history dovrebbero avere una riga nuova in fondo che dice cosa e`
successo.
Se invece ci fossero problemi rivedete un po` tutto e soprattutto
rileggete bene (per l'ennesima volta) le varie man page.

Nota IMPORTANTE: Assicuratevi che nel sistema vi sia UN solo inews,
e che sia quello di INN. Tipicamente alcuni newsreader 
installano il loro inews (serve come avrete intuito a fare l'inject
di un messaggio) e questo puo` creare dei problemi. Per cui fate un
bel 'locate inews' e dopo aver eliminato o rinominato i vari inews
sparsi per il disco, fate un link simbolico in /usr/bin all'inews
vero e proprio, per esempio:
root# ln -s /usr/lib/news/bin/inews /usr/bin

Bene! Le news dovrebbero essere abbastanza a posto. L'unica cosa 
da fare giornalmente e` lanciare /usr/lib/news/bin/news.daily;
tipicamente si fa da crontab nelle ore meno impegnative (io lo
lancio alle 5 di mattina). Si occupa di cancellare i messaggi vecchi
e di archiviare e rinumerare i log in /var/log/news/*.
Ritorneremo sulla crontab piu` avanti.

Ogni tanto e` meglio andare a vedere cosa c'e` in /var/spool/news/incoming/bad
dove finiscono gli articoli che INN ha rifiutato e fare pulizia.

Nota IMPORTANTISSIMA: Ogni volta che si modifica qualche file di 
configurazione (es: newsfeeds), se innd sta girando e` *OBBLIGATORIO*
dirgli di ricaricare in memoria il file appena cambiato con il comando:

# ctlinnd reload newsfeeds x

Questo vale solo per alcuni file, non per tutti (vedere ctlinnd(8)).

Provate ad usare uno dei tanti news reader (il mio preferito e` tin)
e a spedire qualche articolo *nel gruppo junk* (cosi` non andranno da
nessuna parte) in modo da controllare bene il funzionamento del
posting locale.

Altri doc da leggere sono le FAQ di INN che si trovano in /usr/doc/news/
(molto interessante la parte 3!). Per saperne di piu` sul formato standard
delle news di Usenet vi rimando all'RFC 1036 (ftp://ds.internic.net/rfc/).


                           - * - * - * - * -

 - 2 - Configurazione di sendmail

[Nota: ormai siamo nel 1997 e sendmail ha fatto il suo tempo. Adesso riflettete
e pensate a una buona ragione per installare sendmail rispetto a un altro MTA.
Se non ne trovate nessuna correte su www.qmail.org e scaricate qmail, quindi
saltate questa sezione e leggete il file "qmail" allegato. Se vi collegate
a un provider con PPP scaricate anche serialmail, sempre dallo stesso
posto. Per vostra convenienza ho creato un mirror di qmail presso
ftp://svpop.com.dist.unige.it/pub/koobera/ .]

Come al solito si parte dal presupposto che il package sia gia` installato
con gli opportuni tool di amministrazione di sistema.

Sendmail e` il Mail Transfer Agent del vostro sistema Linux, cioe` il
programma si occupa di ricevere e mandare la posta. L'eseguibile si trova
in /usr/sbin, e solitamente sono presenti link simbolici in /usr/bin e in
/usr/lib.
Il programma e` regolato da un unico file di configurazione, /etc/sendmail.cf.
Questo file, che a prima vista puo` spaventare, ha una sintassi estremamente
semplice per velocizzare il parsing da parte del programma, ma a meno che
la vostra configurazione sia particolarmente complessa non dovrete modificarlo
direttamente, ma solo attraverso dei file che saranno trasformati in un
sendmail.cf dal macro processor m4. Quindi per configurare con successo il
vostro sendmail avete bisogno di installare due cose: m4, che consiste in
un binario in /usr/bin, e i file con le macro presi dalla distribuzione
di sendmail. La debian li installa di default, Red Hat non so.
Se avete la distribuzione slackware potete installarli con
il comando 'setup', altrimenti dovete cercarli e installarli a mano.
Le macro si trovano o nel pacchetto originale di sendmail, presso
ftp://ftp.cs.berkley.edu/ucb/sendmail/, o su sunsite.unc.edu, tra la
roba di linux.

Prenderemo in esame il caso di un sistema in cui sia necessario gestire
il routing di netmail in tecnologia fido, di email diretta verso uno
smarthost (nel mio caso usando il protocollo UUCP, forse voi userete
SMTP) e naturalmente della mail locale per gli utenti del sistema.

Iniziate installando in /usr/lib/sendmail.cf i file per m4 e poi
copiate cosi` quelli che ho allegato a questo documento:
cp ifmail.m4 /usr/lib/sendmail.cf/mailer/
cp wonderland.mc /etc/mail/<nome_del_vostro_sistema>.mc
cp mailertable Makefile /etc/mail

(Altre distribuzioni tengono la libreria di file per m4 in directory
diverse, per esempio con la slackware sono in /usr/src/sendmail/cf/.)

Il primo file contiene la definizione del mailer ifmail, cioe` vengono
definite le impostazioni per il programma a cui sara` mandata la posta per
le reti fidotech. Non c'e` nulla da modificare, eventuali path diversi
possono essere specificati con dei define nel file principale.
Il secondo file e` il piu` importante, contiene le impostazioni per la
vostra macchina e va modificato con molta attenzione.

Intanto bisogna chiarire il funzionamento di 'dnl', che significa "delete
to new line", e si usa o per inserire commenti, o dopo ogni define per
evitare di riempire sendmail.cf di newline inutili. La riga con include()
deve essere lasciata cosi`, serve per richiamare le definizioni delle macro.
Io uso le FEATURE nodns (se usate smtp non vi servira`) e local_procmail.
Le macro MAILER specificano di inserire nel sendmail.cf le istruzioni dai
file nella directory .../mailer/, decidete quali vi servono, ricordando
che 'local' e` obbligatorio, e che 'ifmail' e` quello appena installato
che contiene le definizioni per l'uso del nostro gateway.

define(`IFMAIL_MAILER_MAX', 100000)dnl
Sono le dimensioni massime di una matrix, quelle piu` grandi vengono
rimbalzate. Se non volete imporre limiti commentate la riga.

define(`SMART_HOST', `uucp-dom:ils')dnl
Questo invece e` il sistema a cui mandate tutta la posta internet, una
configurazione comune puo` essere qualcosa tipo `smtp:mail.my.provider.it'.
di default e` commentato perche` specificato nella mailertable.

MASQUERADE_AS contiene il domain che volete venga inserito nell'header
From dei vostri messaggi. Se per esempio il vostro vero domain e`
user99.provider.it, ma il vostro provider vi permette di ricevere posta
a mail.provider.it, dovete inserire la linea MASQUERADE_AS(mail.provider.it),
insieme alla linea FEATURE(masquerade_envelope), che serve a fare in modo
che possiate ricevere anche gli eventuali messaggi di errore, che altrimenti
verrebbero persi.

Cwwonderland.linux.it ecc...
La classe 'w' contiene la lista completa dei vostri aka, qui devono essere
indicati tutti i domain per cui sendmail deve accettare posta locale.
Inserite quelli fido e quelli internet, ma *non* il domain che vi maschera
(io per esempio sono mascherato da linux.it).
Assicuratevi di avere messo gli indirizzi giusti in questa classe,
altrimenti ci saranno ogni tipo di problemi di routing.

LOCAL_RULE_3
Queste linee saranno aggiunte nel set di regole 96, che serve per
canonizzare gli indirizzi, cioe` per trasformarli nella forma usata
internamente da sendmail. Ci sono le 6 zone di fidonet (*non*
si puo` mettere solo il domain fidonet.org, esistono anche indirizzi come
ftp.fidonet.org che sono veramente nel dns) e il top level domain fittizio
"ftn" che e` usato dalle altre reti fidotech.
[Questa parte e` stata spostata nel file ifmail.mc. In ogni caso non avete
bisogno di modificarla.]

LOCAL_NET_CONFIG
Questa sezione contiene eventuali routing espliciti, ma non e` piu`
necessario aggiungere regole qui, visto che si puo` usare la mailertable.

Se volete fare delle modifiche alle regole di riscrittura qui ci sono alcune
informazioni, ma la lettura del manuale di sendmail (/usr/doc/sendmail/op.txt)
e` fortemente consigliata.

Le regole di sendmail sono costituite da 4 parti: il carattere R iniziale,
il lato sinistro (LHS) che viene confrontato con l'indirizzo, il lato destro
(RHS) che viene sostituito all'indirizzo se il confronto e` positivo, e un
commento opzionale, con gli ultimi 3 campi ***OBBLIGATORIAMENTE*** separati
da uno o piu` tab (quindi attenzione!).
Nel ruleset 0 il domain nel LHS deve terminare con un punto, perche` e`
stato canonicalizzato dai ruleset 3 e 96.
Gli spazi sono ignorati e i vari simboli hanno questo significato:
nel LHS:
 $* qualsiasi numero di tokens
 $+ uno o piu` tokens
 $- un solo token
nel RHS:
 $<n> corrisponde al n-esimo parametro $ del LHS
 $: indica che dopo la sostituzione la regola non deve piu` essere usata
    in un eventuale ciclo successivo
 $@ indica il sistema a cui viene mandato il messaggio (da non confondere
    con il destinatario del messaggio)
 $# specifica il mailer da usare e indica la fine del confronto delle regole

Le regole sono organizzate in ruleset, ciascuno con un suo compito, e vengono
eseguite ciclicamente all'interno di ogni set finche` non ne viene eseguita
una contenente $#.


Il routing della email (e quindi anche della netmail) viene definito nel
file /etc/mail/mailertable, di cui vi allego un esempio. Ha il formato:
<DOMAIN DI DESTINAZIONE>	<MAILER>:<NODO RELAY>
E` necessario specificare tutte e 6 le zone di fido e si devono
aggiungere righe per ogni altra rete fidotech a cui si manda posta.
Se il primo campo e` "." tutti i messaggi che non sono gia` instradati
da una riga precedente verranno mandati a quel nodo (nel mio caso con
uucp, molti useranno il mailer smtp).
Il mailer nel caso di fido e` sempre ifmail.

Il file /etc/aliases contiene gli alias di sistema. Il formato e` semplice:
alias: address1,address2,...,addressn

Abbiamo visto, ad esempio, che nella configurazione delle news e` necessario
avere questi 2 alias:
news: usenet
usenet: md

Cosi` tutta la posta indirizzata al sottosistema news viene mandata a me.

Quando ifunpack scompatta i pacchetti e ci trova una matrix verra`
richiamato sendmail per piazzare il matrix nella mailbox dell'utente
che corrisponde al nostro nome. Dato che il destinatario e` identificato
con Nome Cognome, bisogna aggiungere un alias in /etc/aliases, cosi`:

Nome.Cognome: user
Esempio:
marco.d\'itri: md

*NON* usate root, ma se non l'avete ancora fatto create un account per voi
in /etc/passwd.
[In realta` quest'ultimo alias non dovrebbe essere necessario, visto che
ifmail ha gia` un sistema di remapping automatico degli indirizzi attraverso
un database in formato dbm (i file ifdbm.*) e che dovrete ricordarvi di
inizializzare subito dopo l'installazione mandano una matrix a una persona
in ciascuno dei vostri net (fatelo, e` importante), ma per sicurezza e`
meglio metterlo.]

Tutti questi file devono essere compilati (in sendmail.cf o nelle loro
forme binarie), ma il Makefile fornito da me dovrebbe fare tutto
automaticamente, quindi basta andare nella directory /etc/mail e lanciare
make.

Controllate che il processo sendmail stia girando. Tale processo deve
essere lanciato in fase di boot dagli script che stanno in /etc/rc.d.
Chi usa la slackware ha nel file /etc/rc.d/rc.inet2:

if [ -x /usr/sbin/sendmail ]; then
	echo -n "sendmail "
	/usr/sbin/sendmail -q10m
fi

Dovreste avere qualcosa del genere, cercate con grep :-).

Chi usa un init di tipo System V (Debian, Red Hat) deve attivare sendmail
in un modo diverso, che consiste nel creare un symlink nelle directory
/etc/rc?.d/ (/etc/rc.d/rc?.d per la Red Hat) che punti al file in .../init.d.
Questo si puo` fare a mano (solo se siete capaci!) oppure con un programma
apposta, con la debian usate "update-rc.d sendmail default".
Solitamente non dovrete fare nulla di tutto questo, visto che sendmail viene
gia` installato correttamente.

Bene, ora possiamo provare a vedere se qualcosa funziona: si lancia sendmail
con il parametro -bt, e si inserisce un indirizzo da provare e le regole
di riscrittura con cui deve essere processato, per i nostri scopi la 3 e
la 0 in quest'ordine. Per esempio sul mio sistema si puo` provare:
md#sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 3,0 zz@p99.f999.n331.z2.fidonet.org
rewrite: ruleset  3   input: zz @ p99 . f999 . n331 . z2 . fidonet . org
rewrite: ruleset 96   input: zz < @ p99 . f999 . n331 . z2 . fidonet . org >
rewrite: ruleset 96 returns: zz < @ p99 . f999 . n331 . z2 . fidonet . org . >
rewrite: ruleset  3 returns: zz < @ p99 . f999 . n331 . z2 . fidonet . org . >
rewrite: ruleset  0   input: zz < @ p99 . f999 . n331 . z2 . fidonet . org . >
rewrite: ruleset 98   input: zz < @ p99 . f999 . n331 . z2 . fidonet . org . >
rewrite: ruleset 98 returns: zz < @ p99 . f999 . n331 . z2 . fidonet . org . >
rewrite: ruleset  0 returns: $# ifmail $@ f206 . n332 $: zz < @ p99 . f999 .
 n331 . z2 . fidonet . org >

Il nodo 2:332/206 e` il mio boss a cui mando tutta la posta fido.
Ovviamente quello che interessa a sendmail e` il domain, l'utente e`
una cosa che viene gestita dal solo mailer locale.

- Il file di log dove andare a vedere che e` successo e` /var/log/mail
o /var/log/daemon, ma puo` cambiare con la distribuzione (controllate
/etc/syslog.conf).
Nel caso sendmail non funzionasse provate a guardare cosa c'e` dentro.
Se la vostra distribuzione non lo fa ricordatevi di azzerarlo
periodicamente perche` se ricevete molta posta si ingrandira` in poco tempo.

                           - * - * - * - * -

 - 3 - Installazione e Configurazione di IFmail

Chi usa la distribuzione debian puo` installare il mio pacchetto ifmail con
dpkg e saltare direttamente al punto in cui viene spiegato come configurarlo.

Vi siete procurati i sorgenti di ifmail?? Si? 

Intanto scompattiamo il pacchetto, ad esempio in /usr/src:
root# cd /usr/src
root# tar xzvvf /path/ifmail-2.X.tgz

Ifmail compie tutte le sue operazioni girando come utente ftn, quindi
bisognera` creare un utente e il rispettivo gruppo:

adduser --system --home /var/spool/ftn --group --uid 64000 --gid 64000 \
  --disabled-password --gecos Fidonet ftn
chsh -s /bin/sh ftn

L'UID deve venire scelto a seconda della propria distribuzione, io vi
consiglio di usare 64000 che e` quello che Debian gli ha riservato.

Creiamo subito la directory dove verranno installati tutti i binari di
ifmail, nonche` la directory di spool e quella per i backup dei pacchetti:

root# mkdir -p /etc/ifmail
root# mkdir -p /usr/local/lib/ifmail
root# ln -s /usr/local/lib/ifmail /usr/lib/ifmail
root# mkdir -p /var/log/ifmail
root# chown ftn.adm /var/log/ifmail
root# mkdir -p /var/spool/ftn
root# mkdir -p /var/spool/ftn/BAK
root# mkdir -p /var/spool/ftn/nl.d
root# chown ftn.ftn /var/spool/ftn -R

Ho cambiato alcuni path rispetto alla distribuzione di ifmail perche`
l'installazione sia il piu` possibile conforme a FHS, i principali
file e directory sono:
/etc/ifmail/: contiene i file di configurazione ed e` la home di ftn
/var/spool/ftn/: con dentro:
 {inb/,outb/,...}: inbound e outbound per fido e per le altre zone
 BAK/: backup dei vecchi pacchetti
 ifdbm.{dir,pag}: il database usato delle voci di /etc/ifmail/config sysalias
	e myfqdn, lo metto qui anche se dovrebbe stare in /var/run/ifmail
 ifmsgids.{dir,pag}: e` il database dei messaggi nelle directory di outbound
        temporanee che devono ancora essere compressi con ifpack, per la
        sistemazione vale quanto scritto sopra
 nl.d/: nodelist
 seq: serve a ifcico, per la sistemazione vale quanto scritto sopra
/usr/lib/ifmail/: qui ci vanno i binari e tutti gli script

Questo documento considera ifmail installato in /usr/lib/ifmail, se fate
l'installazione a mano allora mettetelo fisicamente in /usr/local/lib/ifmail,
ma fate un symlink da /usr/lib/ifmail e fate finta di niente. :-)

Adesso passiamo alla compilazione di ifmail. Nella directory dei sorgenti
(assumiamo che sia /usr/src/ifmail) prendiamo in considerazione il
file CONFIG.

I define di OPTS vanno bene, invece e` necessario configurare correttamente
le varie opzioni del programma, usate questi flag:

GEN_OPTS    = -DLEVEL=0 -DTERMAIL_HACK \
		-DDONT_REGATE -DSLAVE_SENDS_NAK_TOO \
		-DRNEWSB -DJE \
		-DRESTAMP_OLD_POSTINGS=25 -DBELEIVE_ZFIN=1 \
		-DRELAXED -DHAS_TCP -DAREAS_HACKING \
		-DRESTAMP_FUTURE_POSTINGS -DFSCHTML -DMACHIGAI \
		-DALLOW_RETURNPATH -DGATEBAU_MSGID

OPTSi	    += -DHAS_STATFS -DSTATFS_IN_VFS_H -DHAS_SETSID -DHAS_NDBM_H \
		-DDONT_HAVE_TM_GMTOFF -DHAS_TERMIOS_H -DASCII_LOCKFILES \
		-DHAS_FSYNC -DHAS_IOCTL_H -DHAS_REGEX_H \
		-DNEED_BSY \
		-DNEED_FORK \
		-DINT32=long -DINT16=short

Assicuratevi che le seguenti variabili siano cosi` definite:
BINDIR = /usr/lib/ifmail
MAPTABDIR = "/usr/lib/ifmail/maptabs"
LOCKDIR     = "/var/lock"
NEWSSPOOL   = "/var/spool/news"
YACC = bison -y
LEX = flex
LDFLAGS = -s

Ora potete tranquillamente eseguire 'make', in qualche minuto i binari
saranno pronti per essere installati.

Nel frattempo la compilazione e` sicuramente terminata, per cui tornate
alla VC o all'xterm dove eravamo prima e se tutto e` andato bene eseguite
'make install'. I binari saranno installati in /usr/lib/ifmail/.
Inoltre e` necessario copiare in /usr/lib/ifmail/maptabs i file
necessari a fare le conversioni (leggete README.charset per saperne di piu`),
per i nodi italiani dovrebbero bastare cp437__iso-8859-1, iso-8859-1__cp437
e mac__iso-8859-1.

Per prima cosa bisogna rimediare a un buco di sicurezza enorme che
viene aperto dalla procedura di installazione. Controllate che il binario
"ifmail" abbia questi permessi:
-rwsr-xr--   1 ftn      news        69273 Aug  6 22:31 ifmail*
E` importantissimo che non sia eseguibile da tutti, altrimenti chiunque
potra` mandare matrix in crash dove vuole. In questo modo e` eseguibile
solo dai due programmi che ne hanno la necessita`, e cioe`:
 - sendmail, che se e` stato configurato correttamente eseguira` ifmail
   assumendo uid=ftn e gid=ftn
 - lo script nella crontab di news, che gira con gruppo news e quindi puo`
   eseguire ifmail, che essendo setgid ifmail assumera` uid=ftn.

Il secondo grosso buco e` costituito dai permessi di ifcico, che di
default e` eseguibile da tutti ed e` sgid uucp. I permessi corretti che
devono essere assegnati sono quelli di un normale eseguibile, cioe`:
-rwxr-xr-x   1 root     root       161452 Aug  5 11:48 ifcico*

Poiche` le mie porte seriali (/dev/ttyS[0-3]) hanno permessi 660
e owner root.dialout, bisognera` fare in modo che uucico (che gira con
uid=ftn) possa accedervi. Lo si fa aggiungendo l'utente ftn al gruppo
dialout (o a quello usato dalla vostra distribuzione, per esempio uucp)
o con il comando apposito (con la Debian si usa "addgroup ftn dialout")
oppure aggiungendolo a mano in /etc/group.
Eventualmente potete eliminare il bit suid dagli altri binari che lo
hanno, ma e` una questione di esigenze e gusti personali. Io per non
sbagliarmi l'ho tolto a tutti e non ho problemi, quindi consiglio a
tutti voi di fare lo stesso.
Il programma ifroute potete cancellarlo, visto che e` assolutamente inutile.
Se non ricevete i nodediff potete eliminare anche nlpatch.


Occupiamoci ora del file di configurazione di ifmail, /etc/ifmail/config. 
Copiate in /etc/ifmail quello di esempio che ho allegato a questo documento
e modificatelo secondo necessita`. Dovrebbe essere abbastanza ben commentato,
ma in particolare fate attenzione a modificare le opzioni:

gatebaugroup    fido.
Questa opzione indica a ifmail di generare dei kludge ^AMSGID conformi
allo standard tedesco GATEBAU per tutti i newsgroup che iniziano con "fido.".
Per i nodi fidonet deve essere abilitata a partire dal 15 agosto 1997, per
le altre reti vedete voi. Io consiglio a tutti di abilitarla perche` in
questo modo il threading degli articoli potra` essere fatto correttamente
(altrimenti il Message-ID degli articoli scritti sul sistema locale
saranno differenti dai ^AMSGID dell'echomail che esce dal gateway), ma
tenete presente che i nodi che usano ifmail normale 2.10 (e possibilmente
anche le versioni successive) non potranno leggere la vostra echomail a
causa di un bug del programma.

address: deve esserci una riga address per ogni vostro aka. Se viene
 aggiunto anche un domain questo verra` messo nella origin;
password: potete inserire la password direttamente nel file oppure ancora
 meglio in un file specificato con la direttiva include. Ovunque le
 mettiate ricordate di impostare il file con permessi 600 e owner ftn;
packetpasswd: se il boss usa le password di pacchetto mettetela qui;
sysalias: deve puntare a un file vuoto, *non* a /etc/aliases
myfqdn: il nome completo della vostra macchina;
nodelist: dovete avere una riga nodelist per ogni nodelist installata. Il
 nome va specificato senza l'estensione numerica finale;
maptabdir: /usr/lib/ifmail/maptabs
default???char: leggete README.charset per saperne di piu`, oppure lasciate
 il default;
max*size: usate valori abbastanza grandi da non fare alcun splitting;
rnews: fate molta attenzione, il path deve essere quello di rnews;
packer: qui dovete specificare un compattatore per un formato che il vostro
 boss puo` scompattare;
nonpacked: puo` essere usato se volete mandare le matrix non compresse o
 cose simili;
newslog: /var/lib/news/history
refdbm: assicuratevi che sia commentato
ModemPort: specifica il device (/dev/ttyS?) a cui e` collegato il modem
 e la velocita` da usare;
PhoneTrans: qui inserite il prefisso della vostra citta`!
ModemReset e ModemDial: il default funziona, se il vostro modem richiede
 stringhe particolari allora questo e` il posto dove metterle.
Inoltre inserite alla fine i dati che vengono comunicati con l'EMSI.

Assicuratevi che tutti i path corrispondano, specialmente quelli dei
compattatori, create le directory mancanti (per esempio nl.d) e assicuratevi
che tutto quello che si trova sotto /var/spool/ftn sia posseduto da
ftn.ftn.
E` comodo cambiare (da root) il proprio id in quello di ifmail con 'su -l ftn'.

Ora occupiamoci del file /etc/ifmail/Areas, che definisce il mapping fra gli
echotag stile Fido e i newsgroup. Il formato e`:
ECHOTAG_FIDO		nome_newsgroup			distribuzione

La distribuzione potete non specificarla, a meno di esigenze particolari
I commenti iniziano con uno spazio.
Qui c'e` un esempio dal mio:
-----------------------------------------------------------------------------
 AREA			newsgroup			distribution
POINT.AHB		fido.sv.point_ahb
VIRUS.ITA		fido.ita.virus
MSD_NEWS.332		fido.332.msd_news
UNIX.ITA		fido.ita.unix
GUIDA			gnet.guida
------------------------------------------------------------------------------

Come si puo` intuire, per decidere i nomi dei gruppi ho usato la regola:
A.B -> fido.b.a
salvo alcuni gruppi come quelli locali, che ho raggruppato sotto fido.sv.*.
Seguendo questa regola vi ricorderete sempre quali sono le corrispondenze
e il vostro setup sara` standard (preciso che lo standard l'ho definito io,
se qualcuno ha idee migliori mi faccia sapere) e immediatamente comprensibile
agli altri.
Ho allegato uno script che aggancia automaticamente un'area fido e crea
il newsgroup aggiornando /etc/ifmail/Areas e /usr/lib/news/newsgroups.

Ovviamente se siete collegati a un network ftn che non usa la convenzione
.ITA per i suffissi delle aree vi conviene usare una strategia diversa,
per esempio l'area XXXZZZ della rete yyynet puo` diventare yyy.xxxzzz.

A questo punto potete creare tutti i newsgroup di cui avete bisogno
con il comando ctlinnd come ho gia` spiegato piu` sopra.

Con ifmail e` distribuito uno script send-ifmail che dovrebbe mandare
periodicamente l'echomail a ifnews, ma non sono mai riuscito a farlo
funzionare, cosi` l'ho sostituito con lo script fidosend che vi allego
e che io tengo in /etc/news.

Un altro script interessante e` /usr/src/ifmail/misc/contrib/ifreq, per
gestire i f'req, copiatelo in /usr/lib/ifmail, e cambiategli
l'owner a ftn.uucp; magari modificatelo per sistemare i valori di default.
Stesso discorso per /usr/src/ifmail/misc/contrib/ifman, uno script in Perl
comodo per mandare file.

Occupiamoci ora delle nodelist: ne avremo una per ogni dominio di 
appartenenza, come abbiamo specificato nel file di configurazione.
E` *FONDAMENTALE* che in ogni nodelist ci sia all'inizio una riga con
la keyword Zone e il numero di zona corrispondente, nel caso di Fido e di 
guidenet ad esempio:

Zone,2,Europe_&_more,Belgium,Ward_Dossche,32-3-4480880,9600,CM,XX,ZYX,U,K12
Zone,42,The_Hitch_hikers_guide_to_the_galaxy_network,The_Universe,Zaphod_Beeblebrox,000,9600,MO,V32B,XA

Allego uno script "nlc" che lo fa automaticamente e provvede a mandare al
postmaster un diff della nuova nodelist.
A questo punto con id ftn lanciamo ifindex per costruire il database.

Se tutto e` ok, nel file /var/log/ifmail/iflog ci sara` qualcosa tipo:
May 20 21:44:32 wonderland ifindex[1420]: Nodelist index rebuild requested
May 20 21:44:39 wonderland ifindex[1420]: nodelist 0(651): too long line junked
May 20 21:44:39 wonderland ifindex[1420]: 619 entries in nodelist
 "/var/spool/ftn/nl.d/region[.???]"
May 20 21:44:40 wonderland ifindex[1420]: 6 entries in nodelist
 "/var/spool/ftn/nl.d/guidenet[.???]"
May 20 21:44:40 wonderland ifindex[1420]: Total 625 entries in nodelist index
May 20 21:44:40 wonderland ifindex[1420]: rc=0

E in /var/spool/ftn/nl.d/:
-rw-r--r--   2 ftn      ftn         51200 Oct 30 16:15 index.dir
-rw-r--r--   2 ftn      ftn         51200 Oct 30 16:15 index.pag

Oppure in iflog finiranno gli opportuni messaggi di errore se qualcosa
non funziona.

In /var/log/ifmail ci sono alcuni file di log di ifmail:
iflog: il principale, con tutte le informazioni tra cui le password di
 sessione, quindi assicuratevi che non sia leggibile da tutti;
ifdebug: con le informazioni di debug, abilitate con l'opzione -x, che
 puo` avere i seguenti valori:

----------------------------------------------------------------------------
#	bit	description
#
#	0	output regardless of verbose value
a	1
b	2	system calls: exec(), mkdir(), popen() etc.
c	3	creating and filling packet, file attaches
d	4	uucp locking
e	5	reading packet/messages
f	6	AKA matching, address substitution
g	7	scanning outbound
h	8	address lists processing (seen-by, path, etc.)
i	9	AREAS/newsgroups processing
j	10	session flow, handshaking
k	11	file transfer protocols
l	12	file lists, requests and attaches
m	13	logical expression parser
n	14	finite state machine (entry/exit)
o	15	finite state machine (every state)
p	16	parsing confuguration
q	17	parsing RFC headers
r	18	I/O (less verbose)
s	19	I/O (max. verbose)
t	20	nodelist processing (less verbose)
u	21	nodelist processing (max. verbose)
v	22
w	23
x	24
y	25
z	26
-----------------------------------------------------------------------------

Nel caso che ad esempio abbiate problemi con la Matrix, potete ad
esempio ricopiare il pacchetto (preventivamente backuppato in .../BAK)
nella directory di inbound (/var/spool/ftn/inb/), e poi lanciare
'ifunpack -x efipq'. A questo punto in /tmp/ifmail ci finiranno i
messaggi mentre in /var/log/ifmail/{ifdebug,iflog} tutti i dati del caso.

                           - * - * - * - * -

 - 4 - Completamento del Puzzle :)

 *** - Per eseguire il Poll dal proprio boss: 
si usa lo script ifpoll, che deve essere lanciato con id ftn (tenetelo
bene a mente!). Come argomento opzionale si fornisce l'indirizzo del
nodo in formato Internet. Visto che quello fornito con ifmail non mi
piaceva ne ho scritto uno piu` carino, che allego al documento, che tra le
altre cose fa un tail del log della chiamata in corso su tty24, in modo
che con altgr-f12 si possa vedere cosa succede.
Ricordate di impostare nel file la variabile NODE e i timeout che preferite,
e di creare /dev/tty24 con i comandi:
mknod /dev/tty24 c 4 24
chmod 644 /dev/tty24
chown root.tty /dev/tty24

Aggiungo anche ahbpoll, una versione di ifpoll che prova tra le diverse
linee del proprio boss e che dovete modificare con gli indirizzi adatti.

 *** - Per eseguire un file request:
si usa lo script ifreq, da lanciare sempre con id ftn, ad esempio:

ftn:~./ifreq FILES 2:332/206

Con ifstat si controlla cosa c'e` in coda.

 *** - Per mandare un file:
si puo` usare lo script ifman in questo modo:

ftn:~./ifman send miofile.zip 332:206 crash

Purtroppo lo script accetta solo address 2d. Se il nodo a cui si
manda il file non appartiene al dominio di default bisogna spostare a mano
il relativo file .clo da /var/spool/ftn/outb alla directory di
outbound per il dominio appropriato.

 *** - Per mandare una matrix:
si usa un mail reader (ad esempio mutt) e si manda il messaggio
all'indirizzo fido convertito nel formato Internet. Dopo averlo mandato
controllate cosa c'e` nella spool di ifmail (con ifstat!) e verificate
che tutto quadri, oppure se c'e` qualcosa che non va guardate in
/var/log/maillog. Il responsabile della mail e` sempre e comunque
sendmail, che in base alle regole impostate nella mailertable
capisce a chi deve mandare il messaggio, richiamando il mailer
opportuno, nel nostro caso /usr/lib/ifmail/ifmail.

 *** - Ricezione dei messaggi Echo (news)
quando ifunpack scompatta i pacchetti e ci trova dei messaggi Echo,
dopo la necessaria conversione dal formato FTN a quello RFC, e dopo aver
sostituito al TAG dell'area a cui il messaggio appartiene il corrispondente
newsgroup, passera` il messaggio a /usr/lib/news/rnews (NB: e` specificato
nel config di ifmail) che in pratica lo sistemera` nella base messaggi
gestita da INN aggiornando opportunamente i log history e log.

A questo punto i messaggi sono leggibili attraverso un news reader a vostra
scelta. Se qualcosa non quadra come al solito si spulceranno a dovere
i soliti file, e al limite si riprocesseranno i pacchetti abilitando
il debug con i flag del caso.

 *** - Spedizione di messaggi Echo (news)
Avrete gia` provato a postare qualche messaggio in locale, e spero che
tutto funzioni a dovere. A questo punto dobbiamo fare in modo che
i messaggi che scriviamo vengano opportunamente esportati ai nodi di
competenza. Il file che comanda questo e` /usr/lib/newsfeeds, che abbiamo gia`
visto e di cui avrete gia` senz'altro capito il funzionamento. E` importante
notare comunque che avendo piu` di un AKA e` consigliabile far si`
che il primario sia quello Fidonet. Inoltre per i nodi che appartengono
ad altri domini diversi da quello principale nel newsfeed e` necessario
specificare tutto il nome per esteso (fXXX.nXXX.zX.alternet.ftn), e
aggiungere (separato da uno / ) anche l'indirizzo nel formato fXXX.nXXX.
Rivediamo 2 entry del newsfeed per Fido (aka primario) e per GuideNet:

f206.n332\
        :!*,fido.*,!fido.sv.*\
        :Tf,Wfb:

Dunque: f206.n332 indica il nome del batchfile che finira` in
/var/spool/news/out.going e che contiene info relative a quali messaggi
mandare (ricordiamoci che ad ogni messaggio corrisponde un file !).
Il secondo parametro e`: !*,fido.*,!fido.sv.*, che vuol dire che INN
dovra` mettere nel batchfile f206.n332, solo i messaggi appartenenti
ai newsgroup che combaceranno con fido.*, ma NON quelli che si
chiamano fido.sv.* (che potrei mandare a un'altro uplink).
Gli altri parametri sono quelli standard per questo tipo
di batchfile. I \ servono solo per poter scrivere su piu` righe
tutte queste informazioni. Notate che *volendo* si potrebbero anche
specificare tutti i singoli newsgroup uno per uno, ma e` ovviamente
piu` comodo usare una regular expression di wildmat(3).

Esempio per il mio uplink guidenet:

f102.n391.z42.guidenet.ftn/f102.n391\
        :!*,gnet.*\
        :Tf,Wfb:

Stesso discorso: f102.n391.z42.guidenet.ftn sara` il nome del batchfile, e
la stringa f102.n391 e` quella contenuta nel kludge PATH (o meglio
nell'header Path, che e` la sua forma su internet) che e` 2d e che viene
usata per sapere su quali nodi il messaggio e` *gia`* stato e dove quindi
NON deve ritornare. Il resto e` analogo all'entry vista per Fido.

Nel caso che abbiate AKA su diversi domini, che pero` fanno riferimento
ad un unico uplink, specificate le entry separatamente per ogni AKA,
e lasciate fare a ifcico lo sporco lavoro di sapere a chi mandare i 
pacchetti opportuni (AKA matching).

Un'altra entry possibile e` quella per l'overview database, per esempio:
overview:*:Tc,WO:/usr/lib/news/overchan

Una volta configurato newsfeeds, non resta che lanciare (con id news!)
lo script /etc/news/fidosend dandogli come parametro il nome del batchfile
da mandare, che non fara` altro che processare il batchfile in
/var/spool/news/out.going mandandolo a ifnews, che convertira` i messaggi
dal formato RFC al formato FTN e preparera` i pacchetti nella directory
di outbound per il nodo e dominio relativo. Ricordate di eseguire
fidosend per ogni uplink di ogni rete FTN a cui siete collegati.

Per automatizzare il tutto useremo la crontab. Ricordate che fin tanto
che non lancerete fidosend i vostri messaggi non andranno da nessuna parte;
e` ragionevole ad esempio lanciarlo una volta ogni mezz'ora. Nella crontab
delle news ci saranno anche alcune operazioni di manutenzione utili, per
cui e` *obbligatorio* installarla! Ovviamente se il vostro computer non
e` sempre acceso dovrete eseguire a mano *OGNI* *GIORNO* news.daily

-----------------------------------------------------------------------------
# send news batches to your news feed 
0,30 * * * *	/etc/news/fidosend f206.n332
1,31 * * * *	/etc/news/fidosend f102.n391.z42.guidenet.ftn

# Daily housekeeping ... expires news and other things ...
0 5 * * *		/usr/lib/news/bin/news.daily expireover

# offer spooled news - that was spooled into the incoming directory when the 
# innd server wasn't available - again to the innd server.
16 * * * *		/usr/lib/news/rnews -U
-----------------------------------------------------------------------------

Per installare questa crontab si usa il comando:
root$ crontab -u news -e

e si aggiungono le linee viste sopra.

 
                           - * - * - * - * -
 - 4 - Patch per ifmail

 *** - premessa

Nella prima meta` del 1996 si e` tenuta nell'area fidonet UNIX.ITA una
animata discussione sulla presenza di una serie di kludge ^ARFC-*
che ifmail normalmente aggiunge durante la conversione dei messaggi dal
formato internet a quello fido per veicolare in una rete FTN alcune
informazioni non previste dal formato pkt, ma usate in internet.
Nelle faq di ifmail l'autore scrive espressamente di considerarli
fondamentali e avverte di non rimuoverli, ma in fondo non e` necessario
essere cosi` rigorosi nella decisione. Chi installera` un gateway
tra internet e una rete FTN (che e` l'unico caso considerato dall'autore),
allora dovra` mantenere tutto, visto che non e` considerata una buona
norma eliminare arbitrariamente informazioni dalla posta altrui, ma chi
invece gestisce un gateway solo per il proprio point o per la propria
bbs, allora dovrebbe leggere con attenzione questo capitolo, visto che
probabilmente non avra` necessita` di mantenere nessuno dei kludge ^ARFC-*.
Aggiungo che l'attuale coordinamento italiano di fidonet si e` espresso
in maniera (per ora) ufficiosa contro l'uso di questi kludges, ritenendoli
off policy poiche` veicolanti informazioni non necessarie al normale
routing della posta.

 *** - soluzioni

Questa discussione e` basata sul fatto che i point e le bbs che usano
ifmail in alternativa a un vero tosser FTN sono considerati dal resto
della rete esattamente come gli altri nodi, e quindi non hanno nessuno
status particolare di gateway, che li autorizzi a generare informazioni
differenti da quelle previste dal formato pkt.

Adesso esaminiamo una per una alcune situazioni particolari che a
prima vista potrebbero rendere necessario l'impiego di alcuni kludge:

- bbs distribuita su piu` computer
Un sysop gestisce la sua bbs su una LAN, e ha sia utenti normali che
si collegano via modem che utenti che possono collegarsi a una (definita)
macchina della LAN. Il sistema con ifmail che riceve una matrix dall'esterno
deve essere in grado, al momento di convertirla in mail, di mandarla
all'host su cui l'utente ha l'account, altrimenti il messaggio sarebbe
rimbalzato indietro da sendmail. Ci sono diverse soluzioni attuabili:
innanzitutto si puo` lasciare uscire il kludge ^ARFC-From: in modo che
il remoto che usa ifmail possa rispondere direttamente via internet (se
uno dei due sistemi non e` connesso a internet pero` il messaggio
rimbalzera`, e non tutti gli altri usano ifmail);
si puo` chiedere a chi deve mandare matrix verso il nodo di inserire un
kludge ^ARFC-To: <indirizzo>, ma possono farlo solo i point e non e`
detto che chi ne abbia bisogno sappia come fare e ne abbia voglia;
con le patch tx si puo` forzare l'uso dei kludges REPLYTO/REPLYADDR,
ma questo funziona solo se che risponde ha un editore che li supporta, e
nel caso il mittente usi ifmail entrambi devono essere connessi a internet.
La soluzione definitiva, che non richiede nulla al mittente consiste nell'uso
database dbm mantenuto da ifmail che automaticamente rimappa nelle matrix
dirette al proprio sistema il nome del destinatario con il suo indirizzo
internet, l'unica accortezza da adottare consiste nell'inizializzare
correttamente il database, o facendo spedire da ogni utente una matrix
verso l'esterno, oppure editandolo a mano con lo script in perl "edalias"
fornito con ifmail nella directory .../ifmail/misc/contrib/.
In alternativa si puo` attivare l'user database di sendmail che risulta
piu` comodo da modificare se gli utenti cambiano spesso indirizzo, ma
nelle situazioni normali il supporto fornito di default da ifmail e`
sufficiente a garantire una completa funzionalita` del sistema.

- presenza contemporanea di un gateway ufficiale per un'altra rete FTN
In questo caso ci si ritrova a dovere gestire due gruppi separati di
aree echo, quello della rete in cui si e` un normale nodo, per cui valgono
tutte le considerazioni gia` fatte (e quindi non devono avere kludges),
e quello della rete dove opera come gateway, in cui deve mantenere le
informazioni degli header dei messaggi provenienti da internet.
E` necessario creare una copia del mailer ifmail e aggiungere il parametro
"-l 1", che converte tutti gli header i kludge.
Per le news invece bisogna modificare gli script che mandano gli articoli ai
nodi della rete con il gateway (cioe` quelli come il mio fidosend) in modo
che venga usato "-l 1" e configurare in newsfeeds lo script da usare a
seconda dei casi.

Allego il file lrk-3 che contiene la patch "LRK ][ - la vendetta", che
dovrebbe consentire di eliminare tutti i kludge superflui (LRK infatti
significa Less Rfc Kludges) dai propri messaggi nel caso si usi ifmail
classico. Io comunque consiglio di installare ifmail-tx.

Naturalmente chi pensa che quanto e` scritto sopra sia sbagliato si
senta libero di scrivermi, ma prima di farlo legga i messaggi archiviati
su ftp.linux.it, visto che probabilmente le sue obbiezioni sono gia` state
discusse in passato.

Ringrazio per avere discusso della faccenda per lungo tempo, in ordine
sparso: Maurizio Codogno indimenticato ex moderatore di UNIX.ITA, Andrea
Baldoni, Marco Gaiarin, Pierluigi De Rosa, Luca Villani, Fausto Saporito,
Osvaldo Baquero, Diego Roversi.
Un archivio dei piu` interessanti tra questi messaggi e` disponibile presso:
ftp://ftp.linux.it/pub/ILS/People/md/ifkludges-UNIX_ITA.tgz


                           - * - * - * - * -

 - 5 - Consigli pratici e gran finale

 *** - Newsreader

Il mio newsreader preferito e` tin, che dalla versione 1.3 (attenti a non
prenderne una piu` vecchia) ha il supporto per ifmail, aggiungendo l'header
X-Comment-To quando necessario. L'installazione non richiede suggerimenti
particolari, quindi fate riferimento alla sua documentazione.
L'unico consiglio che vi do` e quello di usare l'inews di inn invece di
quello integrato in tin, e non preoccuparsi dei file che tin vuole che
siano messi in /etc.

Un altro newsreader e` trn, io non lo uso, ma liuk scriveva:

La man page spiega tutto per bene, comunque se avete problemi con il
posting provate a impostare la variabile di ambiente NNTPSERVER a localhost
(in bash: export NNTPSERVER=localhost, in csh: setenv NNTPSERVER localhost).

Dato che molte opzioni vengono abilitate in base a variabili di ambiente,
io ho questo file nella mia home directory, di cui faccio il source
nel .bash_profile. 
----------------------------------------------------------------------------
# ~/.trnrc
# settings for trn, the Threaded News Reader
#
# Command Line options:
TRNINIT="-x -e -X -F\" >\""
#
# Hide Fidonet Kludges
HIDELINE="^X-FTN"
#
# NEWSHEADER definition
#
NEWSHEADER="Newsgroups: %(%F=^\$?%C:%F)
Subject: %(%S=^\$?%\"\n\nSubject: \":Re: %S)
%(%R=^\$?:References: %R
)Sender:
Distribution: %(%i=^\$?%\"\nDistribution: \":%D)
Organization: %o
X-Comment-To: %f\n\n"
#
ATTRIBUTION="%f writes:\n"
#
YOUSAID="In article %i \n of newsgroup %C you write about \"%s\":\n"
#
MAILCALL="(New Mail)"

export NEWSHEADER HIDELINE TRNINIT ATTRIBUTION MAILCALL YOUSAID
----------------------------------------------------------------------------

 *** - Conversione fra indirizzi formato FTN e formato Internet

f2i.c contiene un programma che converte un indirizzo 4d in uno internet.
Accetta l'indirizzo come parametro o su stdin, per esempio:
ifpoll `f2i 2:332/206`

 *** - BBS:
Se gestite una bbs c'e` qualche modifica da fare. Provate a leggere bbs/README
oppure contattatemi.

 *** - Casi Disperati

Se proprio non riuscite a cavare un ragno dal buco, io sono disponibile
a fornire aiuto, per quanto mi e` possibile.
L'unica cosa che chiedo e` un report il piu` dettagliato possibile sul
problema che avete, che includa gli opportuni logfile per capire bene
di che si tratta. Sono reperibile ai seguenti indirizzi:

md@linux.it
2:332/206.10@fidonet.org

Sempre agli stessi indirizzi sono ben accetti suggerimenti, correzioni,
inviti a cena, accrediti bancari, ecc ecc. Saranno altresi` passati
direttamente a /dev/null flames e richieste di aiuto poco dettagliate.

 *** - Disclaimer and copyleft

#include <std/disclaimer.h>

(C) Copyright 1994-1997 by Marco d'Itri e Luca Maranzano
Il copyright di questo HOWTO e` di Marco d'Itri e di Luca Maranzano,
e potete copiarlo liberamente secondo la Licenza Pubblica Generica GNU (GPL).

Se quanto e` stato scritto vi torna utile e riuscite a installare ifmail,
apprezzero` moltissimo un messaggio con le vostre impressioni.

                        - * - E - N - D - * -

