User Tools

Site Tools


doc:appunti:linux:sa:mailman

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:sa:mailman [2010/04/12 13:45] niccolodoc:appunti:linux:sa:mailman [2020/09/25 17:45] (current) – [Migrazione] niccolo
Line 33: Line 33:
 ===== Exim ===== ===== Exim =====
  
-Ma noi si usa **Exim** con i domini virtuali, leggere le istruzioni ''/usr/share/doc/mailman/README.EXIM.gz''. Nel file di configurazione di exim4 si devono aggiungere un router e un transport. Attenzione al router: conviene metterlo subito prima di quello che seleziona i virtual domains.+Ma noi si usa **Exim** con i domini virtuali, leggere le istruzioni ''/usr/share/doc/mailman/README.EXIM.gz''. 
 + 
 +Nel file di configurazione di exim4 si devono aggiungere un router e un transport. Attenzione al router: conviene metterlo subito prima di quello che seleziona i virtual domains.
  
 <file> <file>
Line 43: Line 45:
 mailman_router: mailman_router:
     driver = accept     driver = accept
-    domains = rigacci.org+    domains = /etc/exim4/domains-mailman.lst
     require_files = /var/lib/mailman/lists/${lc::$local_part}/config.pck     require_files = /var/lib/mailman/lists/${lc::$local_part}/config.pck
     local_part_suffix_optional     local_part_suffix_optional
Line 70: Line 72:
 </file> </file>
  
-Questa configurazione non supporta l'esistenza di liste con lo stesso nome sotto domini di posta differenti, è in generale una limitazione di mailman.+Ogni dominio gestito da Mailman (si consiglia di crearne di appositi, del tipo **lists.dominio.org**) deve essere elencato nel file **''/etc/exim4/domains-mailman.lst''** oltre che tra i domini virtuali normali (parametro **''dc_other_hostnames''** del file **''/etc/exim4/update-exim4.conf.conf''**). 
 + 
 +Questa configurazione non supporta l'esistenza di liste con lo stesso nome sotto domini differenti, è in generale una limitazione di mailman.
  
 In ''**/etc/mailman/mm_cfg.py**'' si mette la direttiva ''MTA=None'' per evitare che il comando ''**newlist**'' mostri messaggi fuorvianti che invitano a creare gli alias. In ''**/etc/mailman/mm_cfg.py**'' si mette la direttiva ''MTA=None'' per evitare che il comando ''**newlist**'' mostri messaggi fuorvianti che invitano a creare gli alias.
Line 76: Line 80:
 ===== Postfix ===== ===== Postfix =====
  
-Primo approccio che non gestisce i domini virtuali. Ad esempio è impossibile avere un indirizzo tipo **''info@''** condiviso tra un dominio e una lista. Basta aggiungere alcune righe in **''/etc/aliases''** (ricordarsi poi di eseguire **''newaliases''**):+==== Con /etc/aliases ==== 
 + 
 +Questo metodo non gestisce i domini virtuali. Ad esempio è impossibile avere un indirizzo tipo **''info@''** condiviso tra un dominio e una lista. Basta aggiungere alcune righe in **''/etc/aliases''** (ricordarsi poi di eseguire **''newaliases''**):
  
 <file> <file>
Line 92: Line 98:
 </file> </file>
  
-Altrimenti si usa un **filtro di trasporto** specifico postfix-mailman. Anzitutto occorre un file **''/etc/postfix/transport''** che indica quale dominio viene gestito da ''mailman'':+==== Con filtro di trasporto ==== 
 + 
 +Si usa un **filtro di trasporto** specifico postfix-mailman. Anzitutto occorre un file **''/etc/postfix/transport''** che indica quale dominio viene gestito dal filtro ''mailman'':
  
 <file> <file>
Line 98: Line 106:
 </file> </file>
  
-Il file deve essere compilato con +Per sicurezza verificare che in ''/etc/postfix/master.cf'' sia effettivamente definito il trasporto //mailman//Il file deve essere compilato con **''postmap''**:
  
 <code> <code>
Line 104: Line 112:
 </code> </code>
  
-Per sicurezza verificare che in ''/etc/postfix/master.cf'' sia effettivamente definito il trasporto //mailman//.+Infine si aggiunge la configurazione in **''/etc/postfix/main.cf''**: 
 + 
 +<file> 
 +# Mailing lists with MailMan: 
 +relay_domains = lists.domain.org 
 +transport_maps = hash:/etc/postfix/transport 
 +# Feed the MailMan transport with one mail at time. 
 +mailman_destination_recipient_limit = 1 
 +</file> 
 + 
 +In questo modo non ci si deve preoccupare di aggiungere gli alias per ogni lista che si crea o si elimina.
  
 ===== Creare una lista ===== ===== Creare una lista =====
Line 203: Line 221:
 </code> </code>
  
-Bisogna **ANCHE** copiare in  **''/etc/mailman''** (o fare un symling) i template che stanno **''in /usr/share/mailman''**.+Bisogna **ANCHE** copiare in  **''/etc/mailman''** (o fare un symlink) i template che stanno **''in /usr/share/mailman''**.
  
 Infatti Mailman cerca i template per i messaggi di notifica in **''/var/lib/mailman/templates''**, che in Debian è un link simbolico a **''/etc/mailman''**. Infatti Mailman cerca i template per i messaggi di notifica in **''/var/lib/mailman/templates''**, che in Debian è un link simbolico a **''/etc/mailman''**.
  
 Il sintomo del problema è che i messaggi di notifica vengono scritti con il Subject in italiano, ma il contenuto in inglese. Il sintomo del problema è che i messaggi di notifica vengono scritti con il Subject in italiano, ma il contenuto in inglese.
 +
 +===== Charset UTF-8 =====
 +
 +Disgraziatamente Mailman prevede per l'italiano la codifica ISO-8859-1, quindi l'archivio web delle mail viene prodotto in questa codifica e le pagine web contengono il seguente meta tag:
 +
 +<code html>
 +<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 +</code>
 +
 +Tale impostazione è contenuta in ''/usr/lib/mailman/Mailman/Defaults.py'', per non dover modificare questo file si procede come segue:
 +
 +  - Verificare che i file in **''/etc/mailman/it/''** siano in ASCII oppure in UTF-8, eventualmente usare **''iconv''** per convertirli.
 +  - Impostare in **''/etc/mailman/mm_cfg.py''** le seguenti direttive: <code>DEFAULT_SERVER_LANGUAGE = 'it'
 +DEFAULT_CHARSET = 'utf-8'
 +add_language('it', 'Italian', 'utf-8', 'ltr')</code>
 +
 +Rimane il problema dei messaggi in **''/var/lib/mailman/messages/''** che dopo averli convertiti vanno anche ricompilati:
 +
 +<code>
 +cd /var/lib/mailman/messages/it/LC_MESSAGES/
 +mv mailman.po mailman.po.bak
 +mv mailman.mo mailman.mo.bak
 +cat mailman.po.bak | iconv -f ISO_8859-1 -t UTF-8 > mailman.po
 +msgfmt -o mailman.mo mailman.po
 +</code>
 +
 +Il comando **''msgfmt(1)''** è fornito dal pacchetto Debian **gettext**.
  
 ===== Newsletter (one-way mailing list) ===== ===== Newsletter (one-way mailing list) =====
Line 267: Line 312:
 </code> </code>
  
 +===== Migrazione =====
 +
 +Per spostare una mailing list da un server ad un altro (stessa versione di MailMan), questi sono i file e le directory da copiare:
 +
 +  * /var/lib/mailman/lists/<listname>/
 +  * /var/lib/mailman/data/heldmsg-<listname>-*
 +  * /var/lib/mailman/archives/private/<listname>/
 +  * /var/lib/mailman/archives/private/<listname>.mbox/
 +  * /var/lib/mailman/archives/public/<listname>
 +
 +Se cambia l'URL della lista eseguire anche:
 +
 +<code>
 +/var/lib/mailman/bin/withlist -l -r fix_url <listname> -u <new_url>
 +</code>
 +
 +===== Abuso della form di registrazione (SPAM) =====
 +
 +Capita di vedere tentativi automatizzati e malevoli di sottoscrivere indirizzi email ad una lista. Non è chiara l'utilità di questi tentativi, ma la **conferma di registrazione** viene inviata ad un destinatario che eventualmente **segnala il messaggio come SPAM** con tutte le conseguenze del caso (il server finisce in qualche **blacklist**).
 +
 +Come spiegato in questo articolo **[[https://www.ralfj.de/blog/2018/06/02/mailman-subscription-spam.html|Fighting Mailman Subscription Spam: The Easy Way]]** è sufficiente aggiungere una riga al file **/etc/mailman/mm_cfg.py**:
 +
 +<code>
 +SUBSCRIBE_FORM_SECRET = "Kw4Qb4MF9Yoe2Tvldu7O8KFK"
 +</code>
 +
 +Questa impostazione attiva un **[[wpit>Cross-site_request_forgery|CSRF token]]** nella form di registrazione che impone il caricamento della form prima della sottomissione. Se questo parametro esiste, viene controllato anche il tempo intercorso fra il caricamento della form e la sua sottimissione: se è inferiore ai 5 secondi il submit viene rifiutato. In generale un bot agisce molto rapidamente e quindi fallirà il sumbit del form.
doc/appunti/linux/sa/mailman.1271072739.txt.gz · Last modified: 2010/04/12 13:45 by niccolo