Inizio Capitolo

Mailing List


Comunicare è condividere. E qualsiasi cosa condivisa raddoppia il piacere. [Italo Calvino]

Sfruttare le capacità di Mutt nella gestione di mailing list

Mutt ci consente di gestire efficacemente i messaggi appartenenti a mailing list; questa è una delle funzionalità più apprezzate da chi, penso a coloro che sviluppano progetti software, si tengono in contatto attraverso questo canale.

In primo luogo, Mutt ci aiuta a seguire le discussioni che si generano su una mailing list a cui siamo iscritti grazie alla sua capacità di gestire il threading dei messaggi, ovvero di visualizzare la catena che collega tra loro i messaggi con un subject (soggetto) comune.

In secondo luogo, Mutt dispone di comandi e variabili che consentono di rispondere e farsi rispondere adeguatamente (al corretto indirizzo). In questo capitolo li approfondiremo.

Nel capitolo non tratteremo invece di come recapitare in mailbox dedicate i messaggi in arrivo ed appartenenti a ciascuna mailing list a cui siamo iscritti. Questo è un compito che dobbiamo far assolvere a programmi di smistamento posta come, ad esempio, Procmail e che, nel caso di mailing list, è quanto mai opportuno, visto il loro usuale elevato "traffico".

Nel dettaglio, impareremo:

  1. Un minimo di base "teorica" sulle mailing list.
  2. Come far riconoscere a Mutt un messaggio di una mailing list.
  3. Come inviare o rispondere un messaggio ad una mailing list.
  4. Come istruire i rispondenti ad utilizzare il giusto indirizzo.
  5. Come istruire Mutt ad onorare l'header Mail-Followup-To.
  6. I passi seguiti da Mutt con esempi per ogni comando di risposta.
  7. Come archiviare automaticamente i messaggi letti.

Cos'è una mailing list


Una mailing list è, funzionalmente, un gruppo di persone che, attraverso la posta elettronica, discutono (virtualmente) insieme di un argomento di interesse comune.

Una mailing list è pertanto molto vicina ad un newsgroup (è sempre un gruppo di discussione, ma che si appoggia alla rete Usenet).

Tecnicamente parlando (e anche letteralmente parlando), una mailing list è un elenco di indirizzi email ai quali vengono rispediti i messaggi indirizzati (e ricevuti) alla casella di posta elettronica del gruppo.

Se la lista non è moderata gli iscritti ricevono tutti i messaggi. Qualora sia moderata, i messaggi ricevuti dalla lista vengono indirizzati agli iscritti dopo aver superato il vaglio del moderatore.

Per ricevere i messaggi della mailing list è pertanto necessario iscriversi.

Per scrivere messaggi alla mailing list può essere necessario iscriversi (se la mailing list è di tipo chiuso).

In liste ad alto traffico spesso il gestore offre un servizio cosiddetto di digest che consente di ricevere in un unico file tutti i messaggi arrivati alla lista in un certo intervallo di tempo (di solito un giorno, oppure una settimana).

Per favorire successive consultazioni, spesso il gestore organizza degli archivi storici accessibili via web dei messaggi transitati sulla mailing list.

Nel capitolo dedicato alle risorse disponibili in rete su Mutt sono elencate le mailing list dedicate al nostro client di posta.

Per meglio comprendere gli approfondimenti successivi, è bene specificare che un messaggio appartenente ad una mailing list ha:

  1. come mittente l'indirizzo email di chi ha scritto al gruppo
  2. come destinatario l'indirizzo email del gruppo

^top

Far riconoscere gli indirizzi della mailing list


Il primo passo per poter utilizzare con Mutt il comando di risposta specifico per le mailing list (list-reply) è di fargli riconoscere quali messaggi ricevuti appartengono ad una mailing list.

Mutt ci chiede di farlo utilizzando due comandi nel .muttrc:

  1. il comando subscribe, per indicare l'indirizzo di una mailing list a cui siamo iscritti.
  2. il comando lists, per indicare l'indirizzo di una mailing list a cui però non siamo iscritti.
## R I C O N O S C  I M E N T O   ML
#----------------------------------------------------------------------
# Informare Mutt che un certo address destinatario è un indirizzo di
# una mailing list permette di indirizzare correttamente la nostra
# risposta mediante il comando "L" (list reply)

# con subscribe si rendono note a Mutt le mailing list sottoscritte

subscribe mutt-users


# con lists si rendono noti a Mutt gli indirizzi e-mail che
# appartengono a delle mailing-list (non sottoscritte).

lists slrn-user


I messaggi appartenenti a mailing list vengono resi riconoscibili da Mutt segnandoli con lo status flag "L" nell'index menu.


^top

Inviare messaggi alla mailing list


Se siamo noi ad aprire una discussione, nulla cambia rispetto alla normale scrittura e invio di un messaggio, così come illustrato nel capitolo dedicato alla scrittura messaggi. Ovviamente dovremo indirizzarlo all'indirizzo email della lista.

Per inviare una risposta ad un messaggio appartenente ad una mailing list, non è invece adeguato il comando reply, che abbiamo illustrato nel capitolo dedicato alla lettura messaggi.

Il reply spedisce infatti la nostra risposta all'indirizzo dell'autore originale del messaggio (oppure a quello che Mutt trova eventualmente indicato nell'header Reply-To, in base a come abbiamo impostato la variabile reply_to, illustrata più avanti). Utilizzandolo, gli appartenenti alla mailing list verrebbero privati del contributo fornito dalla nostra risposta.

Potremmo utilizzare il group-reply (g): esso consente di rispondere inviando il nostro messaggio sia all'autore originale del messaggio (come primo destinatario) sia all'indirizzo della mailing list (in copia conoscenza).
Con altri programmi il group-reply è conosciuto come Rispondi a tutti (Reply to All).
Nemmeno il group-reply è opportuno, perchè l'autore di un messaggio che ottiene risposta finirebbe per riceverla due volte.

List-reply è il comando specifico per rispondere ai messaggi di mailing list:

Possiamo eseguire il list-reply sia dall'index menu, sia dal pager di lettura messaggi:

premendo L (List-reply)		rispondiamo alla mailing list

Sia il group-reply, sia il list-reply possono tuttavia modificare il loro comportamento standard in base al contenuto di un particolare header (Mail-Followup-To), che di seguito illustriamo.


^top

Istruire i rispondenti ad utilizzare il giusto indirizzo


Cosa ci aspettiamo quando inviamo un messaggio ad una mailing list non sottoscritta?
(sarà una mailing list di tipo aperto, ovvero che consente l'invio di messaggi anche da parte di non sottoscrittori)?

Non troppo scontatamente, che la risposta venga indirizzata correttamente. Se infatti la lista è aperta (ce ne sono poche, in verità di questo tipo), chi risponde ad un nostro messaggio non può sapere se siamo iscritti o meno alla lista.

Vediamo i due casi possibili:

  1. Messaggio inviato ad una mailing list aperta che abbiamo sottoscritto
  2. Messaggio inviato ad una mailing list aperta ma non sottoscritta

Come fare per aiutare i nostri rispondenti?
Mutt cerca di ridurre entrambi gli inconvenienti inserendo l'header Mail-Followup-To nel nostro messaggio in partenza, quando questo è destinato ad una mailing list.

Questo particolare header non è uno standard e non è pertanto riconosciuto e gestito da tutti i client di posta. Ciò significa che non eliminiamo del tutto, a seconda dei casi, il rischio della doppia o della mancata risposta.

Quei client di posta che sono in grado di "gestire" l'header Mail-Followup-To contenuto nel nostro messaggio, lo utilizzeranno per decidere dove indirizzare il messaggio di risposta quando si utilizzano i comandi list-reply, group-reply o equivalenti.

Vediamo la diversa valorizzazione, a cura di Mutt, dell'header Mail-Followup-To nei due casi:

  1. Messaggio inviato ad una mailing list da noi sottoscritta
    (indirizzo segnalato mediante subscribe)
  2. Messaggio inviato ad una mailing list da noi non sottoscritta
    (indirizzo segnalato mediante lists)

Su Mutt, la generazione dell'header Mail-Followup-To è attiva di default. Volendo disattivarla, dovremmo settare (a no) la variabile followup_to

## C R E A Z I O  N E   H E A  D E R   Mail-Followup-To
#------------------------------------------------------------------

# In caso di invio di un messaggio ad una mailing list, indica a Mutt
# se deve creare l'header Mail-Followup-To.
# In caso di invio ad una lista sottoscritta (subscribe), l'header avrà
# come valore l'indirizzo della mailing list.
# In caso di invio ad una lista non sottoscritta (lists), l'header
# conterrà sia l'address della lista che quello personale.
# Valore di default = yes

set followup_to = yes

Per approfondire, in inglese, di seguito due documenti interessanti su questo header:
The ''Mail-Followup-To'' header
Mail-Followup-To and Mail-Reply-To


Qualcuno può pensare che al Mail-Followup-To si possa sostituire un accorto utilizzo degli hook per settare l'header Reply-To in modo adeguato a seconda dei due casi analizzati sopra.

Purtroppo non sempre questa soluzione si rivelerebbe produttiva, stante la frequente abitudine dei gestori delle mailing list di intervenire su questo header sovrascrivendone il contenuto con l'indirizzo della mailing list.

Tale pratica scatena molte discussioni connesse alla privazione di libertà di scelta dell'utente. Le diverse posizioni possono essere approfondite (sempre in inglese) ai seguenti indirizzi:
"Reply-To" Munging Considered Harmful
"Reply-To" Munging Considered Useful

Mutt, l'omnisciente, conosce queste pratiche e ci consente di impostare una variabile per ignorare l'header Reply-To:, quando esso contiene lo stesso indirizzo dell'header To:.

In tal caso, è infatti probabile che il valore dell'header Reply-To: sia stato sovrascritto dal gestore della lista e non contenga, invece, l'indirizzo alternativo a cui il mittente originale vorrebbe che fossero inviate le risposte personali.

La variabile da impostare è ignore_list_reply_to.

# Se settato a yes, rispondendo ad un messaggio da una mailing list che
# ha uguali i campi To: e Reply-To:, Mutt ignora l'header reply-to.
# Valore di default = no

set ignore_list_reply_to = yes


^top

Istruire Mutt ad onorare l'header Mail-Followup-To


Cosa accade se, invece, siamo noi a ricevere un messaggio da una mailing list che contiene l'header Mail-Followup-To ed al quale ci apprestiamo a rispondere?

Di default Mutt è impostato per onorare automaticamente l'header Mail-Followup-To ma, volendo, potremmo modificare il suo comportamento, settando la variabile honor_followup_to. Personalmente preferisco l'opzione ask-yes per decidere al momento.

# indica a Mutt se deve rispettare il valore dell'header
# Mail-Followup-To quando si effettua un group-reply
# o un list-reply ad un messaggio di una mailing list.
# valore di default = yes

set honor_followup_to = ask-yes

Vediamo come si comporta Mutt quando è settato per onorare il contenuto dell'header Mail-Followup-To, a seconda che utilizziamo i comandi list-reply e group-reply:

  1. Mail-Followup-To e comando list-reply (L)
  2. Mail-Followup-To e comando group-reply (g)


^top

Esempi che restituiscono semplicità a ciò che appare complesso


La pratica sarà la migliore compagna del nostro viaggio di apprendimento delle funzionalità di Mutt, comprese quelle spiegate in questo capitolo.

Proviamo tuttavia a illustrare i vari passi che Mutt compie quando utilizziamo i diversi comandi di risposta disponibili (sia quelli meno opportuni, sia quello specifico).

Il messaggio esemplificativo è:
* = in realtà mutt-users non è una mailing list aperta.

Le esemplificazioni seguenti assumono che il nostro .muttrc abbia le variabili settate come di seguito riassunto:

set reply_to = ask-yes
subscribe mutt-users
set followup_to = yes
set ignore_list_reply_to = yes
set honor_followup_to = ask-yes

Il messaggio che utilizziamo per provare il comportamento di Mutt ha gli header di nostro interesse così valorizzati:

From: Autore <[email protected]>
To: Indirizzo.Lista.nel.To <[email protected]>
Mail-Followup-To: Indirizzo.Lista.nel.MFT <[email protected]>, [email protected]
Reply-To: [email protected]

Comando reply - esempio A.1
Premo r (reply)

Mutt mi chiede se voglio utilizzare l'indirizzo in Reply-To:
	Rispondo a [email protected]? ([sì]/no):

Se rispondo si indirizza così il messaggio:
	To: [email protected]

Se rispondo no:
	To: Autore <[email protected]>

Comando group-reply - esempio B.1
Premo g (group-reply)

Mutt mi chiede se voglio utilizzare l'indirizzo in Mail-Followup-To:
	Rispondo a Indirizzo.Lista.nel.MFT...? ([sì]/no): 

Se rispondo si indirizza così il messaggio:
	To: Indirizzo.Lista.nel.MFT <[email protected]>, [email protected]

Se rispondo no:
	Mutt mi chiede se voglio utilizzare l'indirizzo in Reply-To:
		Rispondo a [email protected]? ([sì]/no):

	Se rispondo si indirizza così il messaggio:
		To: [email protected]
		Cc: Indirizzo Lista nel To <[email protected]>

	Se rispondo no indirizza così il messaggio:
		To: Autore <[email protected]>
		Cc: Indirizzo Lista nel To <[email protected]>

Comando list-reply - esempio C
Premo L (list-reply)

Mutt mi chiede se voglio utilizzare l'indirizzo in Mail-Followup-To:
	Rispondo a Indirizzo.Lista.nel.MFT...? ([sì]/no): 

Se rispondo si indirizza così il messaggio:
	To: Indirizzo Lista nel To <[email protected]>
	Cc: [email protected]

Se rispondo no:
	To: Indirizzo Lista nel To <[email protected]>

Impostiamo ora l'header Reply-To: uguale all'Header To: per verificare come cambia il comportamento di Mutt quando entra in funzione il settaggio della variabile ignore_list_reply_to

From: Autore <[email protected]>
To: Indirizzo.Lista.nel.To <[email protected]>
Mail-Followup-To: Indirizzo.Lista.nel.MFT <[email protected]>, [email protected]
Reply-To: Indirizzo.Lista.nel.To <[email protected]>

Comando reply - esempio A.2
Premo r (reply)

Mutt non mi chiede se voglio utilizzare l'indirizzo in Reply-To
e indirizza direttamente in base all'header From:
	To: Autore <[email protected]>
Comando group-reply - esempio B.2
Premo g (group-reply)

Mutt mi chiede se voglio utilizzare l'indirizzo in Mail-Followup-To:
	Rispondo a Indirizzo.Lista.nel.MFT...? ([sì]/no): 

Se rispondo si indirizza così il messaggio:
	To: Indirizzo.Lista.nel.MFT <[email protected]>, [email protected]

Se rispondo no:
Mutt non mi chiede se voglio utilizzare l'indirizzo in Reply-To
e indirizza così il messaggio:
	To: Autore <[email protected]>
	Cc: Indirizzo Lista nel To <[email protected]>


^top

Archiviare i messaggi della mailing list


Una volta letti i messaggi della mailing list possiamo utilizzare un mbox-hook per archiviarli:

# per archiviare i messaggi delle mailing list letti e non cancellati
mbox-hook +/Lists/ML-mutt +/Archive/ML-mutt
mbox-hook +/Lists/ML-slrn +/Archive/ML-slrn

In caso di mailing list ad alto traffico, potrebbe essere preferita una archiviazione in mailbox mensili così come dall'esempio seguente:

# per archiviare i messaggi delle mailing list letti e non cancellati
mbox-hook +/Lists/ML-mutt "+/Archive/ML-mutt-`date +%Y-%m`"
mbox-hook +/Lists/ML-slrn "+/Archive/ML-slrn-`date +%Y-%m`"



^top

Conclusione

In questo settimo capitolo, relativamente ai messaggi da e per mailing list, abbiamo imparato:

  1. Cos'è una mailing list.
  2. Come settare Mutt per fargli riconoscere un messaggio di una mailing list.
  3. Il comando più opportuno per rispondere ad un messaggio.
  4. Come settare Mutt per agevolare risposte ai nostri messaggi al giusto indirizzo.
  5. Come settare Mutt affinchè noi si risponda al giusto indirizzo.
  6. I diversi indirizzi utilizzati in base ai diversi comandi di risposta.
  7. L'archiviazione automatica dei messaggi letti.


<< Capitolo Precedente Prossimo Capitolo >>