[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico] [volume] [parte]
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.
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
.
Il secondo caso, quello dell'utente fittizio, è il più semplice da comprendere. Se si suppone di voler creare la lista prova, basterà 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 verrà creato e gestito il file ~/.forward
nel quale verranno 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.
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).
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.
Gli esempi mostrati possono adattarsi anche all'uso di Exim, con qualche differenza.
Una volta modificato il file /etc/aliases
non è necessario eseguire newaliases, perché ciò non avrebbe alcun significato.
Occorre verificare la proprietà e i permessi che utilizza Exim nella creazione di un file definito come alias all'interno di /etc/aliases
. Potrebbe trattarsi di nobody.
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 verranno 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/
.
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.
Dalla directory iniziale di SmartList si diramano alcune directory e file «nascosti», nel senso che iniziano con un punto.
|
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 |
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 era 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
.
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 delle pipeline 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, le pipeline vengono avviate 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 della pipeline, perché tanto poi i programmi di SmartList acquistano automaticamente i privilegi dell'utente root.
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.
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.
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.
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 (151.8).
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.
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 ... |
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 |
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.
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:
realizzando un file denominato reject
, contenente un elenco di mittenti (identificati dai rispettivi indirizzi di posta elettronica) da cui rifiutare gli accessi;
creando un programma o uno script, denominato subscreen, che, ricevendo l'indirizzo del mittente come primo argomento, deve restituire il valore zero quando l'accesso viene consentito.
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.
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.
Mailman (4) è un sistema per la gestione di una lista di posta elettronica, gestito attraverso programmi CGI (capitolo 162). Questo tipo di lista di posta elettronica dipende pertanto, oltre che da un MTA adatto, anche da un servente HTTP (parte xxx) 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>.
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 |
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.
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]
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 era 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. |
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 era stata definita per la personalizzazione dell'iscrizione alla lista; in seguito si riceverà 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 2003.01.01 --- Copyright © 2000-2003 Daniele Giacomini --daniele @ 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.
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.html
[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico]