[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [volume] [parte]


Capitolo 321.   Liste di posta elettronica

Una lista di posta elettronica, o mailing-list, o più semplicemente lista, è un servizio attraverso cui un gruppo di persone può inviare dei messaggi di posta elettronica a tutti i partecipanti, creando in pratica un mezzo per discutere di un certo argomento. Sotto questo aspetto, la mailing-list compie lo stesso servizio di un newsgroup, con la differenza che ci si deve iscrivere presso il servente (o il «robot») che offre il servizio e che i messaggi vengono inviati a tutti i partecipanti iscritti.

Dal momento che la lista di posta elettronica richiede questa forma di iscrizione, tende a escludere i visitatori occasionali (o casuali), ma permette ugualmente l'accesso a un numero di utenti più vasto: tutti quelli che hanno la possibilità di usare la posta elettronica. Infatti, per quanto riguarda i newsgroup, sono rari gli utenti di Internet che possono accedere a tutti i gruppi di discussione.

Il servizio di una lista di posta elettronica viene svolto normalmente da un programma che si occupa di ricevere la posta da un certo indirizzo e conseguentemente di rispedire i messaggi a tutti gli iscritti. Per iscriversi occorre inviare un messaggio speciale al programma che lo gestisce, contenente il nome della lista e l'indirizzo di posta elettronica di colui che si iscrive; in modo analogo si interviene per cancellare l'iscrizione.

Dal punto di vista amministrativo, si distinguono due tipi di liste: moderate e non moderate. Una lista moderata è quella in cui tutti i messaggi, prima di essere ritrasmessi agli iscritti, vengono controllati da uno o più moderatori; l'altro tipo di lista non viene controllata da alcuno.

In questo capitolo si fa riferimento implicitamente all'utilizzo di Sendmail. Tuttavia, le indicazioni date possono adattarsi a Exim, anche se non in modo identico. Quando necessario vengono aggiunte delle note riferite alle particolarità di Exim.

321.1   Lista elementare

Prima di vedere il funzionamento di un applicativo organizzato per la gestione di una lista, conviene apprenderne i rudimenti realizzandone una elementare attraverso la gestione degli alias.

Se l'obiettivo che ci si prefigge è solo quello di definire un indirizzo di posta elettronica che serva come punto di riferimento per il proseguimento (forward) dei messaggi a un elenco di persone, si può agire in due modi differenti: modificando il file /etc/aliases, oppure creando un utente fittizio che possieda nella sua directory personale il file ~/.forward.

321.1.1   Utente fittizio

Il secondo caso, quello dell'utente fittizio, è il più semplice da comprendere. Se si suppone di voler creare la lista prova, basta registrare un utente con lo stesso nome nel sistema operativo, facendo opportunamente in modo che questo non abbia una parola d'ordine valida e nemmeno una shell funzionante. Nella sua directory personale si crea e si gestisce il file ~/.forward nel quale vanno inseriti gli indirizzi degli utenti iscritti alla lista prova.

È tutto qui; spetta all'amministratore del servizio l'aggiornamento manuale di questo file. Eventualmente, questo amministratore potrebbe essere un utente diverso dall'utente root, per cui si potrebbe anche fare in modo che l'utenza prova possa funzionare regolarmente (con parola d'ordine e shell), lasciandola usare a questo amministratore.

Il limite principale di questo sistema sta nel fatto che il nome utilizzato per la lista deve rispettare i vincoli imposti dalla registrazione degli utenti nel sistema operativo.

321.1.2   Alias

Il metodo della creazione dell'alias è più efficace. Generalmente si crea un file contenente l'elenco degli indirizzi degli iscritti alla lista e si fa in modo che un alias faccia riferimento a tutti questi indirizzi. Per esempio, se nel file /etc/aliases viene inserita la riga seguente,

prova:          :include:/var/liste/prova/iscritti

si fa in modo che tutti i messaggi diretti all'indirizzo prova siano poi rinviati a tutti gli indirizzi indicati nel file /var/liste/prova/iscritti. Dal momento che con questo sistema si hanno maggiori possibilità nella definizione dei nomi, si può aggiungere convenientemente un alias per l'amministratore del servizio, come nell'esempio seguente:

prova:          :include:/var/liste/prova/iscritti
prova-admin     daniele

Bisogna sempre ricordare, quando si interviene nel file /etc/aliases, che poi occorre rigenerare il file /etc/aliases.db attraverso il comando newaliases. Tuttavia, una volta creata la lista nel modo appena descritto, quando si interviene nel file degli iscritti non si deve più avviare newaliases, perché non c'è stato alcun intervento nel file /etc/aliases. Questo, tra le altre cose, garantisce che l'amministratore della lista possa essere una persona diversa dall'utente root, purché abbia i privilegi necessari per intervenire nella directory di appoggio della lista (/var/liste/prova/ in questo caso).

321.1.3   Archiviazione di una copia dei messaggi

In entrambi i casi visti è possibile mantenere un archivio dei messaggi ricevuti dalla lista, con la semplice aggiunta di un indirizzo che faccia riferimento a un file su disco. Per esempio, il file ~prova/.forward potrebbe iniziare nel modo seguente:

"/home/prova/archivio"
Tizio Tizi <tizio@dinkel.brot.dg>
Caio Cai <caio@dinkel.brot.dg>
...

Nello stesso modo, il file /var/liste/prova/iscritti potrebbe iniziare come segue:

"/var/liste/prova/archivio"
Tizio Tizi <tizio@dinkel.brot.dg>
Caio Cai <caio@dinkel.brot.dg>
...

Bisogna fare attenzione ai permessi. È molto probabile che il file venga creato con i privilegi dell'utente mail. La prima volta conviene fare in modo che la directory che deve accogliere tale file abbia tutti i permessi necessari alla scrittura da parte di chiunque, in modo da vedere cosa viene creato effettivamente. Successivamente si possono regolare i permessi in modo più preciso.

321.1.4   Particolarità per Exim

Gli esempi mostrati possono adattarsi anche all'uso di Exim, con qualche differenza.

321.2   SmartList

SmartList (1) (2) è un applicativo in grado di gestire una lista di posta elettronica. Il principio di funzionamento è abbastanza semplice: attraverso una serie di alias del sistema di gestione dei messaggi di posta elettronica (Sendmail per intenderci), SmartList riceve i messaggi destinati all'indirizzo della lista e quindi li ritrasmette a tutti gli iscritti.

SmartList richiede la predisposizione di un utente e di un gruppo specifici per la gestione del servizio; a seconda della distribuzione GNU può trattarsi di list o listserv o qualcosa di simile.

L'applicativo si distribuisce in una serie di directory il cui punto di origine comune è la directory personale dell'utente fittizio del servizio (directory home). Questa sua particolarità fa sì che SmartList non abbia una collocazione tradizionale nel file system di un sistema GNU. Alcune distribuzioni GNU possono collocare l'applicativo da qualche parte al di sotto della gerarchia /var/, ma forse la posizione più corretta è a partire da /home/.

Negli esempi che vengono proposti si suppone di avere installato SmartList in modo che l'utente fittizio corrispondente sia listserv e che la directory personale di tale utente (cioè l'inizio della gerarchia di SmartList) sia /home/listserv/.

321.2.1   File «/etc/passwd»

Si è accennato al fatto che deve esistere un utente fittizio (e un gruppo corrispondente) e che la sua directory personale deve coincidere al punto di inizio della gerarchia di SmartList. Dal momento che la collocazione di questo applicativo non è scontata, può darsi che si debba ritoccare il file /etc/passwd. Di sicuro deve essere controllato, per verificare che la directory iniziale corrisponda a quanto esiste effettivamente.

listserv:!!:504:504::/home/listserv:/bin/bash

L'utente abbinato a SmartList ha anche una shell, ma non può avere una parola d'ordine valida.

321.2.2   Struttura della gerarchia di SmartList

Dalla directory iniziale di SmartList si diramano alcune directory e file «nascosti», nel senso che iniziano con un punto.

listserv/
      |-- .bin/
      |-- .etc/
      |-- .examples/
      `-- .procmailrc

Questa impostazione conferma la sua natura di directory personale. La directory .bin/ contiene gli eseguibili e gli script che compongono l'applicativo; la directory .etc/ contiene file di configurazione; la directory .examples/ contiene solo esempi. Infine, il file .procmailrc è necessario a personalizzare il comportamento di procmail, utilizzato da SmartList per l'elaborazione dei messaggi.

Per poter intervenire su SmartList, per esempio per creare o eliminare una lista, occorre usare gli strumenti contenuti nella directory .bin/. Per questo, è opportuno che questa sia compresa tra i percorsi di ricerca degli eseguibili, ovvero nell'elenco contenuto nella variabile di ambiente PATH. Quando si interviene con questi programmi, occorre anche che la directory corrente sia la directory iniziale di SmartList.

Quando si genera una lista nuova, viene creata una directory con lo stesso nome e al suo interno vengono collocati una serie di file di configurazione contenenti, tra le altre cose, i messaggi che vengono utilizzati automaticamente per guidare gli utenti che si iscrivono alla lista. SmartList genera tali file a partire da quanto già predisposto all'interno della directory .etc/: in alcuni casi vengono fatte delle copie, in altri dei collegamenti. Ciò permette di uniformare certi aspetti della gestione delle liste. Tuttavia, gli script utilizzati per ottenere questo sono predisposti per generare dei collegamenti fisici, mentre, forse, dei collegamenti simbolici sarebbero più pratici da gestire; soprattutto quando si vuole cambiare qualcosa in una lista in modo indipendente dalla configurazione generale, essendo i collegamenti simbolici più facili da individuare.

Se lo si desidera, si può modificare lo script responsabile della preparazione della directory di una lista in modo che invece dei collegamenti fisici si possano generare dei collegamenti simbolici. Si tratta di intervenire su .bin/createlist; precisamente, basta modificare la riga

ln=ln                   # /bin/ln

in modo che diventi come quella seguente:

ln="ln -s"              # /bin/ln

321.2.3   Creazione ed eliminazione di una lista

Per creare o eliminare una lista ci si deve posizionare nella directory iniziale di SmartList e da lì utilizzare createlist o removelist. Ciò, tenendo presente che questi due script si trovano all'interno di .bin/, che deve essere raggiungibile attraverso i percorsi di ricerca per gli eseguibili.

La sintassi per creare una lista è la seguente:

createlist [-a] nome_lista [email_amministratore]

Se viene usata l'opzione -a, invece di creare una lista vera e propria si crea un archivio. Specificando l'indirizzo di posta elettronica di un amministratore, si vuole indicare esplicitamente la persona da contattare in caso di problemi con la lista; inoltre, questa è la persona che (teoricamente) può intervenire nell'amministrazione della lista attraverso l'uso della stessa posta elettronica.

L'esempio seguente crea la lista prova amministrata da tizio@dinkel.brot.dg.

cd ~listserv[Invio]

createlist prova tizio@dinkel.brot.dg[Invio]

Installed the following files:

root   listserv  1024 Jun  3 prova
root   listserv     4 Jun  3 prova/accept -> dist
root   listserv  1024 Jun  3 prova/archive
root   listserv    19 Jun  3 prova/archive.txt -> ../.etc/archive.txt
root   listserv  1024 Jun  3 prova/archive/latest
root   listserv    62 Jun  3 prova/dist
root   listserv    16 Jun  3 prova/help.txt -> ../.etc/help.txt
root   listserv  4076 Jun  3 prova/rc.custom
root   listserv    15 Jun  3 prova/rc.init -> ../.etc/rc.init
root   listserv    18 Jun  3 prova/rc.request -> ../.etc/rc.request
root   listserv    17 Jun  3 prova/rc.submit -> ../.etc/rc.submit
root   listserv    14 Jun  3 prova/reject -> ../.etc/reject
root   listserv    21 Jun  3 prova/subscribe.txt -> ../.etc/subscribe.txt
root   listserv    23 Jun  3 prova/unsubscribe.txt -> ../.etc/unsubscribe.txt

Lo script informa su quanto ha prodotto: precisamente ha creato la directory prova/ e vi ha posto all'interno una serie di file. Se prima di utilizzare lo script, questo è stato modificato come suggerito in precedenza (in modo da generare dei collegamenti simbolici), ciò che si vede qui è il risultato che si ottiene.(3)

Subito dopo, createlist suggerisce anche le modifiche da apportare al file /etc/aliases.

Now make the following entries in your /etc/aliases file:
########################################################################
prova: "|exec /home/listserv/.bin/flist prova"
prova-request: "|exec /home/listserv/.bin/flist prova-request"
prova-dist: :include:/home/listserv/prova/dist
########################################################################
And make sure to run newaliases afterwards.

Una volta inseriti questi alias, come suggerisce lo stesso createlist, si deve avviare newaliases.

newaliases[Invio]

/etc/aliases: 18 aliases, longest 48 bytes, 313 bytes total 

A questo punto la lista prova è pronta e funzionante: l'indirizzo prova-request@... serve per iscriversi, per ritirarsi e per ottenere informazioni; l'indirizzo prova@... è quello che viene usato per l'uso normale della lista.

Per eliminare una lista, si utilizza lo script removelist con la sintassi seguente:

remove nome_lista

L'esempio seguente, elimina la lista prova.

removelist prova[Invio]

Expunging /home/listserv/prova, countdown initiated:
                                                     3
                                                       2
                                                         1
                                                           zero
Don't forget to remove the corresponding entries from
the /etc/aliases file:
########################################################################
prova:
prova-request:
prova-dist:
########################################################################

L'effetto è abbastanza logico: viene eliminata la directory prova/ con tutto il suo contenuto di file, collegamenti e sottodirectory. Come si può intuire, per finire l'operazione occorre eliminare gli alias all'interno del file /etc/aliases.

321.2.4   Varianti per Exim

Se l'MTA è Exim, le righe da includere nel file /etc/aliases devono essere un po' diverse e precisamente sono quelle seguenti. In pratica, non si può usare il comando interno di shell exec.

prova:         "| /home/listserv/.bin/flist prova"
prova-request: "| /home/listserv/.bin/flist prova-request"
prova-dist:    :include:/home/listserv/prova/dist

Inoltre, dal momento che si usano dei condotti tra gli alias, è necessario che sia stato stabilito nella configurazione di Exim quale utente e gruppo usare come proprietari del processo relativo. Nella parte della configurazione riferita ai driver di direzione (director), dovrebbe apparire la definizione degli alias di sistema in un modo simile a quello seguente:

system_aliases:
  driver = aliasfile;
  file = /etc/aliases,
  search_type = lsearch
  user = exim
  group = mail

Secondo questo esempio, i condotti vengono avviati con i privilegi dell'utente exim e del gruppo mail.

È probabile che gli eseguibili di SmartList abbiano il bit SUID attivo, appartenendo all'utente root (SUID-root). In tal caso, non è importante quali siano i privilegi utilizzati per l'avvio del condotto, perché tanto poi i programmi di SmartList acquistano automaticamente i privilegi dell'utente root.

321.2.5   Organizzazione dei permessi e amministrazione delle liste

SmartList è organizzato in modo che tutto quello che serve per l'amministrazione del servizio possa essere svolto da un utente che faccia parte anche del gruppo a cui appartiene l'utente fittizio della gestione di questo sistema (listserv o altro). Per evitare errori, la directory iniziale di SmartList deve avere il bit SGID attivo, assicurando così che tutto ciò che discende da questa appartenga allo stesso gruppo della directory.

In questa situazione, il meccanismo può funzionare solo se, quando si interviene nei file delle liste, si utilizza una maschera dei permessi pari a 0078. Questa consente di avere i permessi di scrittura anche per il gruppo, mentre toglie tutti i permessi per chi non abbia i privilegi dell'utente o del gruppo proprietari.

Dal momento che SmartList, per se stesso, richiede solo che il suo gruppo fittizio abbia tutti i permessi necessari a intervenire nei file (e nelle directory) delle liste, si può affidare l'amministrazione di liste differenti ad amministratori diversi, senza che questi abbiano i privilegi del gruppo di SmartList. Basta abbinare ai file delle liste rispettive la proprietà dell'utente amministratore. In pratica, si utilizza lo script donatelist secondo la sintassi seguente:

donatelist utente nome_lista

L'esempio seguente, affida la lista prova all'utente tizio.

donatelist tizio prova[Invio]

tizio    listserv  1024 Jun  3 .
listserv listserv  1024 Jun  3 ..
tizio    listserv  1024 Jun  3 prova
root     listserv     4 Jun  3 prova/accept -> dist
tizio    listserv  1024 Jun  3 prova/archive
root     listserv    19 Jun  3 prova/archive.txt -> ../.etc/archive.txt
tizio    listserv  1024 Jun  3 prova/archive/latest
tizio    listserv    62 Jun  3 prova/dist
root     listserv    16 Jun  3 prova/help.txt -> ../.etc/help.txt
tizio    listserv  4076 Jun  3 prova/rc.custom
root     listserv    15 Jun  3 prova/rc.init -> ../.etc/rc.init
root     listserv    18 Jun  3 prova/rc.request -> ../.etc/rc.request
root     listserv    17 Jun  3 prova/rc.submit -> ../.etc/rc.submit
root     listserv    14 Jun  3 prova/reject -> ../.etc/reject
root     listserv    21 Jun  3 prova/subscribe.txt -> ../.etc/subscribe.txt
root     listserv    23 Jun  3 prova/unsubscribe.txt -> ../.etc/unsubscribe.txt

Anche in questo caso il listato che si ottiene rappresenta il contenuto della directory corrispondente alla lista, da cui si può osservare che è stata cambiata la proprietà dei soli file e directory, mentre i collegamenti sono rimasti correttamente inalterati.

Ormai dovrebbe essere chiara la logica attraverso cui si configura una lista. Se certe impostazioni globali, espresse attraverso i collegamenti, non vanno bene, basta eliminare i collegamenti desiderati e produrre delle varianti locali. Naturalmente, nello stesso modo in cui si hanno queste impostazioni globali, si possono definire gruppi di configurazioni, a cui puntare i collegamenti che si desiderano.

321.2.6   Configurazione

La configurazione di SmartList si divide in due parti: una globale, che riguarda potenzialmente tutte le liste gestite, e una particolare per ogni lista. La configurazione globale è contenuta nella directory .etc/ e viene usata per generare dei collegamenti nella directory di ogni lista, all'atto della creazione (come è stato mostrato). La configurazione particolare è costituita dai file che sono stati copiati nelle directory delle liste, la cui modifica, in tal modo, non può influenzare il comportamento delle altre liste.

È chiaro che se in una lista si desidera personalizzare qualche aspetto che riguarda file condivisi, basta cancellare il collegamento corrispondente e fare una copia locale di quel file.

I file più importanti da considerare sono rc.init, fornito generalmente alle directory delle liste in forma di collegamento, e rc.custom che viene copiato necessariamente perché non può essere condiviso in ogni caso.

Vanno verificati entrambi i file: il primo almeno una volta quando si attiva il servizio; il secondo alla creazione di ogni lista nuova. I file sono commentati adeguatamente e questo dovrebbe bastare per capire il senso delle varie definizioni. In particolare, è importante verificare la definizione della variabile domain, all'inizio del file rc.init: deve contenere il dominio completo del nodo in cui si trovano a funzionare le liste. Eventualmente, se si vogliono gestire liste differenti su domini virtuali diversi, basta fare una copia del file rc.init nella directory di ogni lista, cambiando opportunamente la definizione di tali domini.

321.2.7   Iscrizione e ritiro dalla lista

L'utente qualunque che desidera iscriversi alla lista, deve inviare un messaggio all'indirizzo lista-request@... (nel caso degli esempi proposti si tratta di prova-request@...), in cui, nell'oggetto o nel corpo del messaggio, appaia esclusivamente la parola subscribe.

Nello stesso modo, l'utente che vuole eliminare la propria iscrizione alla lista, deve inviare un messaggio contenente esclusivamente la parola unsubscribe.

321.2.8   Manutenzione

L'amministratore della lista, definito al momento della sua creazione, può utilizzare la posta elettronica per dare alcuni comandi elementari. In pratica può aggiungere o eliminare degli iscritti. Per ottenere ciò deve inviare un messaggio all'indirizzo lista-request@... (nel caso degli esempi proposti si tratta di prova-request@...) in cui la voce X-Command deve essere usata per contenere il comando. Naturalmente, il risultato è un messaggio di risposta contenente l'esito del comando.

Si deve utilizzare la sintassi seguente:

email_amministratore parola_d'ordine comando

I comandi fondamentali sono:

subscribe email_nuovo_iscritto
unsubscribe email_vecchio_iscritto
help | info

I primi due comandi servono per aggiungere o eliminare un iscritto alla lista; l'ultimo serve a ottenere un riepilogo dei comandi disponibili (ne esistono altri).

La parola d'ordine viene definita all'interno del file rc.custom (contenuto nella directory della lista) e assieme a questa si può modificare il nome dell'intestazione da usare per inviare i comandi di amministrazione. L'esempio seguente mostra una possibile modifica del file rc.custom per fare in modo di poter usare il campo del X-Admin: al posto di X-Command:.

X_COMMAND               =       X-Admin
X_COMMAND_PASSWORD      =       Marameo         # put the password for
                                                # X-Command mails here

In origine, nel file rc.custom, queste righe sono semplicemente commentate con il simbolo #. Bisogna togliere il commento e poi definire i valori da assegnare.

Si potrebbe essere tentati di utilizzare l'oggetto (il campo Subject:) come sostituto di X-Command:. Questa non è una buona idea, in quanto provoca degli effetti collaterali abbastanza pesanti. Precisamente, non è più possibile per gli utenti utilizzare l'oggetto per iscriversi o cancellarsi dalla lista e nemmeno per usare altri servizi: se viene fatto erroneamente, non ricevono alcun avvertimento e solo l'amministratore ne è informato attraverso l'indicazione di un «comando sospetto». Ciò significa oltretutto che l'amministratore verrebbe disturbato continuamente con segnalazioni di errore fasulle.

Naturalmente, l'amministratore, per poter utilizzare l'intestazione X-Command: deve configurare opportunamente il proprio programma MUA. Per esempio, nel caso di Pine, occorre intervenire nel campo customized-hdrs (313.9).

È bene considerare che, anche se non si vuole utilizzare questo meccanismo, esiste una parola d'ordine predefinita che potrebbe essere usata da qualcun altro. Pertanto, è almeno opportuno indicare una parola d'ordine in ogni caso.

L'amministratore della lista può intervenire ugualmente per cambiare l'elenco degli iscritti modificando direttamente il file che lo contiene. Si tratta di dist, composto semplicemente da una serie di righe, ognuna delle quali riporta esclusivamente l'indirizzo di posta elettronica di uno dei destinatari.

321.2.9   Messaggi automatici

SmartList, come robot, deve inviare alcuni messaggi automatici a seguito dell'esecuzione di operazioni particolari, come l'iscrizione o la cancellazione in una lista. È evidente che sia opportuno tradurli e adattarli alle proprie esigenze particolari.

Il file help.txt contenuto nella directory della lista viene utilizzato come risposta a una richiesta help inviata all'indirizzo lista-request@... (come sempre si può usare l'oggetto o il corpo del messaggio per scrivere la parola help).

Tale file dovrebbe contenere le informazioni generali per usare tutte le liste che si gestiscono, per cui è generalmente un collegamento a un file uguale per tutte.

Volendo, si può aggiungere nella directory della lista un file di informazioni aggiuntivo e specifico. Deve trattarsi di info.txt e il suo contenuto viene accodato semplicemente a quello di help.txt.

                        General info
                        ------------
Subcription/unsubscription/info requests should always be sent to the -request
address of a mailinglist.
If a mailinglist for example is called "thelist@some.domain", then the -request
address can be inferred from this to be: "thelist-request@some.domain".

To subscribe to a mailinglist, simply send a message with the word "subscribe"
in the Subject: field to the -request address of that list.

To unsubscribe from a mailinglist, simply send a message with the word (you
guessed it :-) "unsubscribe" in the Subject: field to the -request address of
that list.
...

SmartList, come altri applicativi del genere, mantiene un archivio dei messaggi ricevuti, che può essere consultato (in modo piuttosto scomodo) attraverso alcuni comandi da inviare all'indirizzo lista-request@.... Il contenuto del file archive.txt serve a descrivere la procedura da utilizzare per questo scopo e si ottiene quando all'indirizzo lista-request@... si invia un messaggio con il comando archive help nell'oggetto.

This archive server knows the following commands:

get filename ...
ls directory ...
egrep case_insensitive_regular_expression filename ...
maxfiles nnn
version
...

321.2.10   Configurazione dell'archivio

L'archivio dei messaggi si trova nella directory archive/latest/ discendente dalla directory della lista a cui si riferisce. Ogni messaggio viene memorizzato in un file differente.

La configurazione normale dell'archivio prevede che vengano conservati solo gli ultimi due messaggi; se si vuole amministrare un archivio, è evidente che tale numero deve essere aumentato. La modifica alla configurazione deve essere fatta nel file rc.custom, come nell'esempio seguente, in cui si stabilisce un massimo di 100 messaggi.

archive_hist    =       100             # number of messages left archived

321.2.11   Consultazione dell'archivio

Per consultare l'archivio si utilizzano una serie di comandi specifici, da inserire nel corpo di un messaggio di posta elettronica inviato all'indirizzo lista-request@.... Quello che conta è che nell'oggetto venga indicata la parola archive. I comandi possono essere più di uno in uno stesso messaggio e seguono le regole descritte nella guida contenuta nel file archive.txt. Questa, come già accennato, si ottiene inviando la richiesta archive help.

321.2.12   Filtri di accesso

Una lista di discussione è il destinatario ideale di messaggi pubblicitari di vario tipo, o più semplicemente di spam. Sotto questo aspetto, lo studio di un valido sistema di filtro contro gli utilizzi impropri è più che opportuno.

Per quanto riguarda il controllo dell'iscrizione alla lista, SmartList permette di intervenire nella directory della lista da controllare, in particolare nel modo seguente:

Anche l'invio dei messaggi alla lista può essere controllato, precisamente attraverso il file accept. Generalmente questo è un collegamento al file dist, quello che contiene l'elenco degli iscritti a cui inviare copia di tutti i messaggi della lista. In tal modo, solo gli iscritti possono inviare messaggi alla lista.

321.2.13   Liste moderate

Fino a questo punto è stato descritto come creare e gestire una lista non moderata. Per ottenere una lista moderata occorre indicare gli indirizzi di posta elettronica dei moderatori nel file moderators. La sola esistenza di questo file, nella directory della lista da moderare, fa sì che i messaggi vengano trasmessi solo ai moderatori; successivamente, uno di questi, dopo averli controllati ed eventualmente modificati, può ritrasmetterli aggiungendo la voce Approved, seguita dal suo indirizzo di posta elettronica. I messaggi «firmati» in questo modo vengono rispediti a tutti gli iscritti alla lista.

321.3   Mailman

Mailman (4) è un sistema per la gestione di una lista di posta elettronica, gestito attraverso programmi CGI (capitolo 330). Questo tipo di lista di posta elettronica dipende pertanto, oltre che da un MTA adatto, anche da un servente HTTP (parte liv) in grado di consentire il funzionamento di programmi CGI; inoltre richiede di configurare Cron per la gestione delle operazioni periodiche.

Nella descrizione che qui viene fatta di Mailman, si trascura completamente, o quasi, ciò che riguarda la configurazione di Cron, dell'MTA e del servente HTTP, perché è molto probabile che la propria distribuzione GNU sia in grado di predisporre tutto questo in modo automatico, nel momento dell'installazione del pacchetto che corrisponde a questo applicativo. Eventualmente si può leggere la documentazione originale di Mailman che dovrebbe essere accessibile a partire da <http://www.gnu.org/software/mailman/mailman.html>.

321.3.1   Privilegi durante il funzionamento

Quando un programma di Mailman viene messo in funzione, dovrebbe acquisire privilegi limitati. Per questo, di solito gli si associa un utente e un gruppo particolari, che potrebbero corrispondere a un nome del tipo mailman, oppure list. In condizioni normali, se si installa Mailman da un pacchetto predisposto per la propria distribuzione GNU, tutto dovrebbe essere sistemato in modo automatico, compreso l'aggiornamento del file /etc/aliases, con la ridirezione della posta elettronica destinata a questo utente fittizio, verso l'utente root.

Nel caso particolare di Exim, può essere necessario stabilire l'utente e il gruppo con cui devono funzionare i programmi avviati attraverso gli alias. Per esempio, se si usa l'utenza fittizia list si potrebbe intervenire in un modo simile a quello seguente, nel suo file di configurazione:

system_aliases:
  driver = aliasfile;
  file = /etc/aliases,
  search_type = lsearch
  user = list
  group = list

321.3.2   Configurazione

La configurazione particolare di Mailman è contenuta in un file denominato mm_cfg.py, che potrebbe trovarsi nella directory /etc/mailman/. Come suggerisce l'estensione, si tratta di uno script di Python.

La parte più significativa di questo file riguarda la dichiarazione di alcune variabili, come si vede dall'estratto seguente:

##############################################################
# Put YOUR site-specific configuration below, in mm_cfg.py . #
# See Defaults.py for explanations of the values.            #

DEFAULT_HOST_NAME = 'dinkel.brot.dg'
DEFAULT_URL       = 'http://dinkel.brot.dg/cgi-bin/mailman'
DELIVERED_BY_URL  = '/doc/mailman/images/mailman.jpg'

MAILMAN_OWNER     = 'mailman-owner@%s' % DEFAULT_HOST_NAME

PUBLIC_ARCHIVE_URL = '/pipermail'
PRIVATE_ARCHIVE_URL = '/mailman/private'

USE_ENVELOPE_SENDER = 0

Per prima cosa, si può osservare che i programmi CGI di Mailman dovrebbero essere accessibili a partire da http://dinkel.brot.dg/cgi-bin/mailman/; pertanto, il servente HTTP deve risultare configurato per consentire l'accesso in questo modo a tali file. In base all'esempio, si può verificare che ciò sia così provando a interrogare l'indirizzo http://dinkel.brot.dg/cgi-bin/mailman/admin, dal quale si deve ottenere una pagina di informazioni sull'amministrazione delle liste.

Come si può intuire dalla configurazione, si definisce che l'amministratore del sistema Mailman si chiama mailman-owner@..., pertanto è necessario definire a chi deve corrispondere effettivamente questo indirizzo, intervenendo nel file /etc/aliases e avviando successivamente newaliases (se necessario). Supponendo che si tratti effettivamente dell'utente tizio, potrebbe essere una riga come quella seguente:

mailman-owner: tizio

Infine, è necessario definire una parola d'ordine per l'amministrazione complessiva. Per questo si usa il programma mmsitepass:

mmsitepass[Invio]

New password: digitazione_all'oscuro[Invio]

Again to confirm password: digitazione_all'oscuro[Invio]

In questo modo, la parola d'ordine viene annotata, in modo cifrato per evitare che possa essere individuata facilmente.

321.3.3   Creazione e cancellazione di una lista

La creazione di una lista di Mailman è guidata dal programma newlist, che si usa in pratica come nell'esempio seguente, in cui si crea la lista prova@...:

newlist[Invio]

Enter the name of the new list: prova[Invio]

Enter the email of the person running the list: caio@dinkel.brot.dg[Invio]

Initial prova password: digitazione_all'oscuro[Invio]

Entry for aliases file:

## prova mailing list
## created: 29-Aug-2002 root
prova:                  "|/var/lib/mailman/mail/wrapper post prova"
prova-admin:            "|/var/lib/mailman/mail/wrapper mailowner prova"
prova-request:          "|/var/lib/mailman/mail/wrapper mailcmd prova"
prova-owner:            prova-admin

Hit enter to continue with prova owner notification...

Come si vede dal messaggio che si ottiene, è necessario intervenire poi manualmente nel file /etc/aliases, per aggiungere alcune righe. In questo modo, gli indirizzi prova@..., prova-admin@..., prova-request@... e prova-owner@... possono poi funzionare regolarmente per la gestione e l'accesso alla lista.

Per eliminare una lista, si procede in modo analogo, con l'aiuto del programma rmlist, che se usato con l'opzione -a, cancella anche l'archivio dei messaggi:

rmlist -a prova[Invio]

Infine, è possibile consultare rapidamente l'elenco degli iscritti a una lista con il comando list_members:(5)

list_members prova[Invio]

321.3.4   Amministrazione della lista

Mailman è fatto per essere utilizzato prevalentemente attraverso un navigatore, con il protocollo HTTP. Per verificare l'esistenza della lista appena creata, basta consultare il programma CGI admin, che secondo la configurazione già vista in precedenza, dovrebbe essere accessibile all'indirizzo http://dinkel.brot.dg/cgi-bin/mailman/admin. Ciò che si dovrebbe vedere è rappresentato dal listato seguente:

                 dinkel.brot.dg mailing lists - Admin Links

   Welcome!

   Below is the collection of publicly-advertised mailman mailing lists
   on dinkel.brot.dg. Click on a list name to visit the configuration
   pages for that list. To visit the administrators configuration page
   for an unadvertised list, open a URL similar to this one, but with a
   '/' and the list name appended.

   General list information can be found at the mailing list overview
   page.

   (Send questions and comments to mailman-owner@dinkel.brot.dg.)


   List Description
   Prova [no description available]

Per configurare meglio la lista prova@... è sufficiente seguire il riferimento ipertestuale che si trova in corrispondenza del nome che appare sulla pagina, che in pratica porta all'indirizzo http://dinkel.brot.dg/cgi-bin/mailman/admin/prova. Come spiega la stessa pagina, se esistono delle liste non pubblicizzate, la loro configurazione si raggiunge in questo modo, mettendo il loro nome dopo quello del programma CGI admin.

   Prova Administrative Authentication

                                            List Administrative Password:

   ______________________________
   Let me in...

   Important: From this point on, you must have cookies enabled in your
   browser, otherwise no administrative changes will take effect.

   Session cookies are used in Mailman's administrative interface so that
   you don't need to re-authenticate with every administrative operation.
   This cookie will expire automatically when you exit your browser, or
   you can explicitly expire the cookie by hitting the Logout link under
   Other Administrative Activities (which you'll see once you
   successfully log in).

La pagina che si ottiene serve a richiedere l'identificazione dell'amministratore della lista in base alla parola d'ordine, come inserito quando è stato utilizzato il programma newlist. Superata questa fase si raggiunge la pagina di configurazione vera e propria, che corrisponde però allo stesso indirizzo precedente.(6)

Prova mailing list administration
General Options Section

     ----------------------------------------------------------------------

         Configuration Categories          Other Administrative Activities    
     * General Options                    * Tend to pending administrative    
     * Membership Management                requests                          
     * Privacy Options                    * Go to the general list            
     * Regular-member (non-digest)          information page                  
       Options                            * Edit the HTML for the public list 
     * Digest-member Options                pages                             
     * Bounce Options                     * Go to list archives               
     * Archival Options                   * Logout                            
     * Mail-News and News-Mail gateways 
     * Auto-responder                   

     ----------------------------------------------------------------------

   Make your changes below, and then submit them using the button at the
   bottom. (You can change your password there, too.)

   General Options                
    Fundamental list characteristics, including descriptive info and basic
    behaviors.                    
            Description                             Value                     
    The public name of this list                                              
       (make case-changes only).  Prova___________________________________
                       (Details)  
          The list admin's email                                              
       address - having multiple  caio@dinkel.brot.dg_____________________    
            admins/addresses (on  ________________________________________    
          separate lines) is ok.  ________________________________________
                       (Details)  
      A terse phrase identifying  _________________________________________   
            this list. (Details)  
     An introductory description  ________________________________________    
      - a few paragraphs - about  ________________________________________    
            the list. It will be  ________________________________________    
       included, as html, at the  ________________________________________    
       top of the listinfo page.  ________________________________________    
     Carriage returns will end a  ________________________________________    
     paragraph - see the details  ________________________________________    
        for more info. (Details)  
      Prefix for subject line of  [Prova]_________________________________   
        list postings. (Details)  
    List-specific text prepended  ________________________________________    
       to new-subscriber welcome  ________________________________________    
               message (Details)  ________________________________________    
                                  ________________________________________    
     Text sent to people leaving  ________________________________________    
          the list. If empty, no  ________________________________________    
      special text will be added  ________________________________________    
     to the unsubscribe message.  ________________________________________    
                       (Details)  
       Where are replies to list                                              
    messages directed? Poster is  (*) Poster ( ) This     ( ) Explicit        
        strongly recommended for             list         address            
             most mailing lists.  
                       (Details)  
      Explicit Reply-To: header.  _________________________________________   
                       (Details)  
    (Administrivia filter) Check                                              
     postings and intercept ones  
                 that seem to be  ( ) No (*) Yes 
        administrative requests?  
                       (Details)  
     Send password reminders to,                                              
    eg, "-owner" address instead  (*) No ( ) Yes 
            of directly to user.  
                       (Details)  
        Suffix for use when this                                              
         list is an umbrella for  
       other lists, according to  -owner___________________________________
             setting of previous  
        "umbrella_list" setting.  
                       (Details)  
           Send monthly password                                              
      reminders or no? Overrides  ( ) No (*) Yes 
            the previous option.  
                       (Details)  
       Send welcome message when  ( ) No (*) Yes                              
     people subscribe? (Details)  
        Should administrator get                                              
         immediate notice of new  
      requests, as well as daily  ( ) No (*) Yes 
         notices about collected  
                 ones? (Details)  
        Should administrator get                                              
                      notices of  (*) No ( ) Yes 
        subscribes/unsubscribes?  
                       (Details)  
        Send mail to poster when                                              
       their posting is held for  (*) Yes ( ) No 
             approval? (Details)  
       Maximum length in Kb of a                                              
      message body. Use 0 for no  40______
                limit. (Details)  
    Host name this list prefers.  dinkel.brot.dg____________________________   
                       (Details)  
        Base URL for Mailman web                                              
     interface. The URL must end  
       in a single "/". See also  http://dinkel.brot.dg/cgi-bin/mailman/____
    the details for an important  
      warning when changing this  
                value. (Details)  

                      To Change The Administrator Password
+--------------------------------------+ +-------------------------------------+ 
|   Enter current|_____________________| |      Enter new|_____________________| 
|       password:|                     | |      password:|                     | 
+--------------------------------------+ |---------------+---------------------| 
                                         |    Confirm new|_____________________| 
                                         |      password:|                     | 
                                         +-------------------------------------+ 

                            [ Submit Your Changes ] 

Quello che si vede sopra riguarda solo la configurazione generale, mentre sono disponibili altre voci per altre caratteristiche da configurare.

Al termine del lavoro, è bene indicare a Mailman la conclusione dell'attività selezionando la voce logout.

321.3.5   Accesso alla lista da parte degli utilizzatori normali

Gli utenti che possono avere interesse a iscriversi a una lista di quelle amministrate devono raggiungere l'indirizzo http://dinkel.brot.dg/cgi-bin/mailman/listinfo:

   dinkel.brot.dg Mailing Lists
   Welcome!                   
                              
   Below is a listing of all the public mailing lists on dinkel.brot.dg.
   Click on a list name to get more information about the list, or to
   subscribe, unsubscribe, and change the preferences on your subscription.
   To visit the info page for an unadvertised list, open a URL similar to
   this one, but with a '/' and the list name appended.
                              
   List administrators, you can visit the list admin overview page to find
   the management interface for your list.
                              
   (Send questions or comments to mailman-owner@dinkel.brot.dg.)
                                                                              
   List                       Description                                     
   Prova                      [no description available]                      

Seguendo il riferimento ipertestuale corrispondente al nome della lista a cui si è interessati, si arriva alla pagina dalla quale ci si può iscrivere:

    About Prova                            
    To see the collection of prior postings to the list, visit the Prova
    Archives.                              
    Using Prova                            
    To post a message to all the list members, send email to
    prova@dinkel.brot.dg.                  
                                           
    You can subscribe to the list, or change your existing subscription, in
    the sections below.                    
    Subscribing to Prova                   
    Subscribe to Prova by filling out the following form. You will be sent
    email requesting confirmation, to prevent others from gratuitously
    subscribing you. This is a public list, which means that the members
    list is openly available (but we obscure the addresses so they are not
    easily recognizable by spammers).      
                                           
      Your email    _______________________________     
      address:                                       
      You must enter a privacy password. This provides
      only mild security, but should prevent others
      from messing with your subscription. Do not use a
      valuable password as it will occasionally be
      emailed back to you in cleartext. Once a month,
      your password will be emailed to you as a
      reminder.                            
      Pick a        ________________                    
      password:                                      
      Reenter                                           
      password to   ________________                  
      confirm:                                       
      Would you                                      
      like to                                        
      receive list  (*) No ( ) Yes                   
      mail batched                                   
      in a daily                                     
      digest?                                        
                        [ Subscribe ]      
    Prova Subscribers                      
    Click here for the list of Prova subscribers: [ Visit Subscriber list ]
                                           
    To change your subscription (set options like digest and delivery modes,
    get a reminder of your password, or unsubscribe from Prova), either
    enter your subscription email address: 
                                           
                _______________________________ [ Edit Options ]
                                           
    ... or select your entry from the subscribers list (see above).

Chi si iscrive, indicando l'indirizzo di posta elettronica e la parola d'ordine per poter gestire la propria configurazione personale, viene richiesta successivamente una conferma via posta elettronica, simile a questa:

From: prova-request@dinkel.brot.dg
To: daniele@dinkel.brot.dg
Reply-To: prova-request@dinkel.brot.dg
Subject: Prova -- confirmation of subscription -- request 779881

Prova -- confirmation of subscription -- request 779881

We have received a request from 192.168.1.1 for subscription of your
email address, <daniele@dinkel.brot.dg>, to the prova@dinkel.brot.dg
mailing list.  To confirm the request, please send a message to
prova-request@dinkel.brot.dg, and either:

- maintain the subject line as is (the reply's additional "Re:" is
ok),

- or include the following line - and only the following line - in the
message body: 

confirm 779881

(Simply sending a 'reply' to this message should work from most email
interfaces, since that usually leaves the subject line in the right
form.)

If you do not wish to subscribe to this list, please simply disregard
this message.  Send questions to prova-admin@dinkel.brot.dg.

Di solito è sufficiente rispondere a questo messaggio, senza includere il testo precedente per ottenere l'iscrizione. A iscrizione avvenuta si riceve un messaggio di conferma, in cui è annotata la parola d'ordine che è stata definita per la personalizzazione dell'iscrizione alla lista; in seguito si riceve mensilmente un promemoria del genere.

Per accedere alla gestione della configurazione personalizzata, si parte dalla stessa pagina già vista in precedenza, mettendo soltanto il proprio indirizzo di posta elettronica nella parte inferiore:

    About Prova                            
    ...
    ...
    Prova Subscribers                      
    Click here for the list of Prova subscribers: [ Visit Subscriber list ]
                                           
    To change your subscription (set options like digest and delivery modes,
    get a reminder of your password, or unsubscribe from Prova), either
    enter your subscription email address: 
                                           
                _______________________________ [ Edit Options ]
                                           
    ... or select your entry from the subscribers list (see above).

Da lì si accede a una pagina in cui è possibile richiedere la cancellazione dalla lista o la modifica delle caratteristiche configurabili, con l'inserimento della parola d'ordine personale.

Appunti di informatica libera 2007.02 --- Copyright © 2000-2007 Daniele Giacomini -- <daniele (ad) swlibero·org>


1) SmartList   GNU GPL o Artistic

2) Procmail   GNU GPL o Artistic

3) Il listato che si ottiene è generato attraverso il comando ls -l. Nell'esempio si mostra un listato con meno colonne per non perdere le informazioni sulla parte destra, a causa del tipo di composizione tipografica adottato.

4) Mailman   GNU GPL

5) Sono disponibili anche altri comandi, ma in generale è più semplice il controllo attraverso l'interfaccia dei programmi CGI.

6) Come spiega Mailman stesso, è necessario che il navigatore sia in grado di accettare i cookie.


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome liste_di_posta_elettronica.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico]

Valid ISO-HTML!

CSS validator!