4 069
contributi
Nessun oggetto della modifica |
|||
(56 versioni intermedie di 4 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{Versioni compatibili|Lenny|Squeeze|Wheezy}} | {{Versioni compatibili|Lenny|Squeeze|Wheezy}} | ||
{{Warningbox|La guida NON è compatibile con Jessie. E' in fase di realizzazione una nuova guida.}} | |||
<br/> | |||
== Introduzione == | == Introduzione == | ||
In questa guida cercheremo di raccogliere tutte le informazioni per arrivare a un'installazione di Debian che fornisca i seguenti servizi, comuni presso qualsiasi Internet Service Provider: | In questa guida cercheremo di raccogliere tutte le informazioni per arrivare a un'installazione di Debian che fornisca i seguenti servizi, comuni presso qualsiasi Internet Service Provider: | ||
Riga 19: | Riga 21: | ||
Può essere utile impostare anche un server NTP esterno per sincronizzare l'ora del nostro server con un'autorità nazionale: [[Impostare e modificare data e ora]]. | Può essere utile impostare anche un server NTP esterno per sincronizzare l'ora del nostro server con un'autorità nazionale: [[Impostare e modificare data e ora]]. | ||
<br/> | <br/> | ||
Poichè il server andrà quasi sicuramente gestito da remoto occorrerà installare e configurare anche l'accesso SSH ([[ | Poichè il server andrà quasi sicuramente gestito da remoto occorrerà installare e configurare anche l'accesso SSH ([[SSH | guida su SSH]]) con autenticazione via chiave. | ||
=== Installazione ambiente LAMP === | === Installazione ambiente LAMP === | ||
Riga 155: | Riga 157: | ||
<br/> | <br/> | ||
<br/> | <br/> | ||
{{Warningbox|DEPRECATO: al posto di | {{Warningbox|DEPRECATO: al posto di Squirrelmail è possibile installare una diversa interfaccia webmail, Roundcube:}} | ||
<pre> | <pre> | ||
# aptitude install squirrelmail | # aptitude install squirrelmail | ||
Riga 316: | Riga 318: | ||
query = SELECT 1 FROM virtual_domains WHERE name='%s' | query = SELECT 1 FROM virtual_domains WHERE name='%s' | ||
</pre> | </pre> | ||
{{Box|NOTA|Potrebbe venirvi la tentazione di scrivere "localhost" al posto di "127.0.0.1" nel file precedente. Non va fatto!! "localhost" farà sì che Postfix cerchi il file socket MySQL, non trovandolo perchè gira in una chroot | {{Box|NOTA|Potrebbe venirvi la tentazione di scrivere "localhost" al posto di "127.0.0.1" nel file precedente. Non va fatto!! "localhost" farà sì che Postfix cerchi il file socket MySQL, non trovandolo perchè gira in una chroot jail. Al contrario "127.0.0.1" utilizzerà una connessione TCP sulla porta 3306, che risponderà anche se Postfix funziona all'interno di una gabbia chroot}} | ||
<br/> | <br/> | ||
Adesso dobbiamo fare in modo che Postfix utilizzi questa mappatura: | Adesso dobbiamo fare in modo che Postfix utilizzi questa mappatura: | ||
Riga 516: | Riga 518: | ||
Siamo pronti per iniziare. I files di configurazione di Dovecot si trovano in <code>/etc/dovecot</code>. | Siamo pronti per iniziare. I files di configurazione di Dovecot si trovano in <code>/etc/dovecot</code>. | ||
<br/> | <br/> | ||
Fino a Debian Squeeze la configurazione di Dovecot era tutta contenuta in due file; da Debian Wheezy la configurazione è stata spezzata in una trentina di file, contenuti tutti nella directory < | Fino a Debian Squeeze la configurazione di Dovecot era tutta contenuta in due file; da Debian Wheezy la configurazione è stata spezzata in una trentina di file, contenuti tutti nella directory <code>/etc/dovecot/conf.d</code>. Il file di configurazione principale <code>/etc/dovecot/dovecot.conf</code> non richiede alcuna modifica e attraverso la direttiva | ||
<pre> | <pre> | ||
!include conf.d/*.conf | !include conf.d/*.conf | ||
</pre> | </pre> | ||
carica tutti i file presenti in < | carica tutti i file presenti in <code>/etc/dovecot/conf.d/</code> che terminano in ".conf" in sequenza. Quindi "10-auth.conf" sarà caricato per primo e "90-quota.conf" per ultimo. Il grosso vantaggio di questa situazione è che potremo modificare o rimpiazzare parti della configurazione senza sovrascriverla interamente; lo svantaggio è che la migrazione da una versione precedente di Dovecot può diventare un'operazione difficoltosa. | ||
==== Fino a Debian Squeeze ==== | ==== Fino a Debian Squeeze ==== | ||
Riga 704: | Riga 706: | ||
mail_location = maildir:/var/vmail/%d/%n/Maildir | mail_location = maildir:/var/vmail/%d/%n/Maildir | ||
</pre> | </pre> | ||
Questa sarà la directory dove Dovecot cercherà le email di ogni specifico utente. Ad esempio l'utente < | Questa sarà la directory dove Dovecot cercherà le email di ogni specifico utente. Ad esempio l'utente <code> john@example.org</code> avrà le sue email archiviate in <code>/var/vmail/example.org/john/Maildir</code>. | ||
<br/> | <br/> | ||
Cambiamo la direttiva ''auth_socket_path'' in | Cambiamo la direttiva ''auth_socket_path'' in | ||
Riga 745: | Riga 747: | ||
===== /etc/dovecot/dovecot-sql.conf.ext ===== | ===== /etc/dovecot/dovecot-sql.conf.ext ===== | ||
Questo file è richiamato dal file < | Questo file è richiamato dal file <code> /etc/dovecot/conf.d/auth-sql.conf.ext</code> e dice a Dovecot come accedere al database MySQL e dove trovare le informazioni sugli account. Accertiamoci che contenga le linee: | ||
<pre> | <pre> | ||
driver = mysql | driver = mysql | ||
Riga 1 066: | Riga 1 068: | ||
** <code>permit_sasl_authenticated</code>: l'utente si è autenticato, oppure | ** <code>permit_sasl_authenticated</code>: l'utente si è autenticato, oppure | ||
** <code>reject_unauth_destination</code>: la mail è destinata a un utente di un nostro dominio virtuale | ** <code>reject_unauth_destination</code>: la mail è destinata a un utente di un nostro dominio virtuale | ||
NOTA: la direttiva < | NOTA: la direttiva <code>postconf -e smtpd_tls_auth_only=yes</code> è da utilizzarsi '''solo''' se vogliamo che i nostri utenti siano costretti a utilizzare SSL per scaricare e inviare la loro posta. | ||
<br/> | <br/> | ||
<br/> | <br/> | ||
Riga 1 179: | Riga 1 181: | ||
# sa-update && service spamassassin restart | # sa-update && service spamassassin restart | ||
</pre> | </pre> | ||
Controlliamo che il servizio di aggiornamento automatico si sia abilitato, verificando che in < | Controlliamo che il servizio di aggiornamento automatico si sia abilitato, verificando che in <code>/etc/default/spamassassin</code> ci sia la riga: | ||
<pre> | <pre> | ||
CRON=1 | CRON=1 | ||
Riga 1 400: | Riga 1 402: | ||
</pre> | </pre> | ||
Tra le altre righe in < | Tra le altre righe in <code>/var/log/mail.log</code> dovremmo trovare una cosa del genere: | ||
<pre> | <pre> | ||
29 23:16:23 sirius amavis[4558]: (04558-02) Blocked INFECTED (ClamAV-Test-File) {DiscardedOutbound,Quarantined}, LOCAL [::1]:44226 [::1] <root@mailserver.example.org> -> <john@example.org>, quarantine: C/virus-ClS0k87Qzm4Q, Queue-ID: 6608ED6B, Message-ID: <20131029221623.6608ED6B@sirius.localdomain>, mail_id: ClS0k87Qzm4Q, Hits: -, size: 1547, 128 ms | 29 23:16:23 sirius amavis[4558]: (04558-02) Blocked INFECTED (ClamAV-Test-File) {DiscardedOutbound,Quarantined}, LOCAL [::1]:44226 [::1] <root@mailserver.example.org> -> <john@example.org>, quarantine: C/virus-ClS0k87Qzm4Q, Queue-ID: 6608ED6B, Message-ID: <20131029221623.6608ED6B@sirius.localdomain>, mail_id: ClS0k87Qzm4Q, Hits: -, size: 1547, 128 ms | ||
Riga 1 406: | Riga 1 408: | ||
segno che ClamAV è intervenuto correttamente, bloccando l'email infetta. | segno che ClamAV è intervenuto correttamente, bloccando l'email infetta. | ||
<br/> | <br/> | ||
La mail infetta è stata spostata in < | La mail infetta è stata spostata in <code>/var/lib/amavis/virusmails/C/virus-ClS0k87Qzm4Q</code> per essere eventualmente analizzata. | ||
<br/> | <br/> | ||
Riga 1 640: | Riga 1 642: | ||
# nano /etc/postfix/header_checks | # nano /etc/postfix/header_checks | ||
</pre> | </pre> | ||
con contenuto: | con contenuto (da scrivere in una riga sola): | ||
<pre> | <pre> | ||
/^Content-(Disposition|Type).*name\s*=\s*"?(.*(\.|=2E)( | /^Content-(Disposition|Type).*name\s*=\s*"?(.*(\.|=2E)( | ||
Riga 1 765: | Riga 1 767: | ||
#reject_invalid_hostname | #reject_invalid_hostname | ||
reject_rbl_client zen.spamhaus.org | reject_rbl_client zen.spamhaus.org | ||
reject_rbl_client multi.uribl.com | |||
reject_rbl_client dsn.rfc-ignorant.org | |||
reject_rbl_client dul.dnsbl.sorbs.net | |||
reject_rbl_client list.dsbl.org | |||
reject_rbl_client sbl-xbl.spamhaus.org | |||
reject_rbl_client bl.spamcop.net | |||
reject_rbl_client dnsbl.sorbs.net | |||
reject_rbl_client cbl.abuseat.org | |||
reject_rbl_client ix.dnsbl.manitu.net | |||
reject_rbl_client combined.rbl.msrbl.net | |||
reject_rbl_client rabl.nuclearelephant.com | |||
#reject_unknown_client | #reject_unknown_client | ||
permit | permit | ||
Riga 1 773: | Riga 1 786: | ||
permit_sasl_authenticated | permit_sasl_authenticated | ||
reject_unauth_destination | reject_unauth_destination | ||
check_client_access hash:/etc/postfix/access | |||
reject_rbl_client zen.spamhaus.org | |||
reject_rbl_client multi.uribl.com | |||
reject_rbl_client dsn.rfc-ignorant.org | |||
reject_rbl_client dul.dnsbl.sorbs.net | |||
reject_rbl_client list.dsbl.org | |||
reject_rbl_client sbl-xbl.spamhaus.org | |||
reject_rbl_client bl.spamcop.net | |||
reject_rbl_client dnsbl.sorbs.net | |||
reject_rbl_client cbl.abuseat.org | |||
reject_rbl_client ix.dnsbl.manitu.net | |||
reject_rbl_client combined.rbl.msrbl.net | |||
reject_rbl_client rabl.nuclearelephant.com | |||
reject_rbl_client dnsbl-1.uceprotect.net | reject_rbl_client dnsbl-1.uceprotect.net | ||
reject_unknown_sender_domain | reject_unknown_sender_domain | ||
reject_unauth_pipelining | reject_unauth_pipelining | ||
Riga 2 158: | Riga 2 180: | ||
$rcmail_config['force_https'] = true; | $rcmail_config['force_https'] = true; | ||
</pre> | </pre> | ||
{{Suggerimento|Se il server su cui è installato Roundcube è diverso da quello su cui girano Postfix e Dovecot, dovrete impostare correttamente Roundcube affinchè possa connettersi al server remoto: <nowiki>$rcmail_config['smtp_server'] = 'tls://12.34.56.78';</nowiki>}} | |||
Quindi modifichiamo il file che definisce il Virtual Host di Roundcube: | Quindi modifichiamo il file che definisce il Virtual Host di Roundcube: | ||
<pre> | <pre> | ||
Riga 2 189: | Riga 2 212: | ||
Quindi andiamo in <code>/var/lib/roundcube/skins/classic <oppure larry>/images</code> e sostituiamo il file <code>roundcube_logo.png</code> con una PNG contenente il nostro logo. | Quindi andiamo in <code>/var/lib/roundcube/skins/classic <oppure larry>/images</code> e sostituiamo il file <code>roundcube_logo.png</code> con una PNG contenente il nostro logo. | ||
=== Filtri server-side: Sieve === | === Filtri server-side: Sieve per Roundcube === | ||
Arrivati a questo punto siamo in possesso di un mail server completamente funzionale, che tagga addirittura le mail di spam; però il compito di filtrare le mail taggate come spam è lasciato al client di posta dell'utente finale. | Arrivati a questo punto siamo in possesso di un mail server completamente funzionale, che tagga addirittura le mail di spam; però il compito di filtrare le mail taggate come spam è lasciato al client di posta dell'utente finale. | ||
<br/> | <br/> | ||
Utilizzando Sieve, un mail filter simile a procmail (che non utilizziamo perchè non lavora con le mailbox virtuali) possiamo fare in modo che le | Utilizzando Sieve, un mail filter simile a procmail (che non utilizziamo perchè non lavora con le mailbox virtuali) possiamo fare in modo che i nostri utenti riescano a impostare dei filtri e delle regole ''server-side''. | ||
<br/> | |||
Roundcube è già pienamente compatibile con Sieve, dobbiamo solo informarlo della sua installazione: | |||
<pre> | |||
# cp /usr/share/roundcube/plugins/managesieve/config.inc.php.dist /etc/roundcube/plugins/managesieve/config.inc.php | |||
</pre> | |||
Ora apriamo il file di configurazione del plugin: | |||
<pre> | |||
# nano /etc/roundcube/plugins/managesieve/config.inc.php | |||
</pre> | |||
e impostiamo la corretta porta TCP dove Dovecot si aspetta le connessioni da Sieve: | |||
<pre> | |||
$rcmail_config['managesieve_port'] = 4190; | |||
</pre> | |||
Quindi abilitiamo il plugin ''managesieve'' in RoundCube: | |||
<pre> | |||
# nano /etc/roundcube/main.inc.php | |||
</pre> | |||
<pre> | |||
$rcmail_config['plugins'] = array('managesieve'); | |||
</pre> | |||
A questo punto, dalla schermata ''Impostazioni'' di ''Roundcube'' ogni utente troverà una nuova scheda chiamata ''Filtri'', dove potrà impostare tutti i filtri che gli interessano. | |||
<br/> | <br/> | ||
Creiamo un file di configurazione per Sieve: | |||
<pre> | <pre> | ||
# nano /var/vmail/globalsieverc | # nano /var/vmail/globalsieverc | ||
Riga 2 201: | Riga 2 245: | ||
<pre> | <pre> | ||
require ["fileinto"]; | require ["fileinto"]; | ||
# | |||
# Sposto lo spam in un folder apposito | |||
if header :contains "X-Spam-Flag" ["YES"] { | if header :contains "X-Spam-Flag" ["YES"] { | ||
fileinto "Junk"; | |||
stop; | |||
} | } | ||
</pre> | </pre> | ||
Riga 2 213: | Riga 2 258: | ||
Quindi modifichiamo la configurazione di Dovecot e inseriamo un plugin per il global filtering delle mail: | Quindi modifichiamo la configurazione di Dovecot e inseriamo un plugin per il global filtering delle mail: | ||
<pre> | <pre> | ||
# nano /etc/dovecot/ | # nano /etc/dovecot/conf.d/15-lda.conf | ||
</pre> | </pre> | ||
e decommentando la voce: | |||
<pre> | <pre> | ||
mail_plugins = $mail_plugins sieve | |||
</pre> | </pre> | ||
<pre> | <pre> | ||
# /etc/ | # nano /etc/dovecot/conf.d/90-sieve.conf | ||
</pre> | </pre> | ||
<pre> | <pre> | ||
plugin { | |||
sieve = ~/.dovecot.sieve | |||
sieve_dir = ~/sieve | |||
sieve_before = /var/vmail/globalsieverc | |||
} | |||
</pre> | </pre> | ||
Riavviamo Dovecot: | |||
<pre> | <pre> | ||
# /etc/init.d/dovecot restart | |||
</pre> | </pre> | ||
=== | === Filtri server-side: Sieve per Squirrelmail === | ||
Managesieve è un'interfaccia low-level per amministrare gli script di Sieve. Per abilitarla è necessario aggiungere <code>managesieve</code> alla linea <code>protocols</code> del nostro file <code>/etc/dovecot/dovecot.conf</code>; nella sezione <code>protocol managesieve</code> dovremmo trovare la linea <code>sieve=~/.dovecot.sieve</code> già impostata. Con questa impostazione il filtro Sieve per il nostro utente sarà posizionato in <code>/var/mail/example.com/john/.dovecot.sieve</code>. | Managesieve è un'interfaccia low-level per amministrare gli script di Sieve. Per abilitarla è necessario aggiungere <code>managesieve</code> alla linea <code>protocols</code> del nostro file <code>/etc/dovecot/dovecot.conf</code>; nella sezione <code>protocol managesieve</code> dovremmo trovare la linea <code>sieve=~/.dovecot.sieve</code> già impostata. Con questa impostazione il filtro Sieve per il nostro utente sarà posizionato in <code>/var/mail/example.com/john/.dovecot.sieve</code>. | ||
<br/> | |||
Sicuramente i nostri utenti non avranno voglia di impararsi il linguaggio di filtering di Sieve e avranno quindi bisogno di una maniera comoda di amministrare i loro filtri. Questo può essere fatto attraverso il plugin ''avelsieve'' di Squirrelmail: | Sicuramente i nostri utenti non avranno voglia di impararsi il linguaggio di filtering di Sieve e avranno quindi bisogno di una maniera comoda di amministrare i loro filtri. Questo può essere fatto attraverso il plugin ''avelsieve'' di Squirrelmail: | ||
<pre> | <pre> | ||
Riga 2 282: | Riga 2 323: | ||
* [[Razor]] | * [[Razor]] | ||
=== Troubleshooting | == Il mio server è stato blacklistato! == | ||
Se abbiamo problemi nell'inviare o ricevere mail possiamo: | Ci siamo prodigati per proteggere il nostro mailserver, ma è accaduto lo stesso: il nostro indirizzo IP è stato inserito in una o più blacklist. | ||
* controllare il file di log <code>/var/log/mail.log</code>; quasi tutti i problemi sono elencati in questo file, con messaggi di errore più o meno chiari | <br/> | ||
Che cosa possiamo fare? | |||
# Verificare in quali blacklist siamo stati inseriti; possiamo utilizzare alcuni tool online che in pochi attimi ci daranno il responso: | |||
* [http://mxtoolbox.com/blacklists.aspx MxToolbox] | |||
* [http://whatismyipaddress.com/blacklist-check What Is my IP address] | |||
# Scrivere ai gestori della blacklist chiedendo la rimozione del nostro IP: non funzionerà, ma almeno potremo dire di averci provato! | |||
# Verificare come è successo, analizzando tutta la configurazione e scandagliando i log | |||
# Avvertire i clienti dell'inconveniente, invitandoli a controllare a loro volta le loro configurazioni e le loro postazioni | |||
# In attesa che il nostro IP venga sbloccato, se possediamo più indirizzi IP possiamo configurare un secondo IP virtuale sulla nostra scheda di rete e inoltrare tutto il traffico di posta verso questo nuovo indirizzo, con il comando: | |||
<pre> | |||
# iptables -t nat -A POSTROUTING -p tcp --dport 25 -j SNAT --to-source NUOVO.INDIRIZZO.IP.ALIAS | |||
</pre> | |||
{{Warningbox|Se non abbiamo risolto il problema alla radice, in breve tempo anche il nuovo indirizzo IP finirà blacklistato}} | |||
<br/> | |||
Se abbiamo localizzato il dominio che sta inviando spam dal nostro mailserver, possiamo temporaneamente disabilitarlo dall'invio di nuove mail, dopo averlo comunicato agli intestatari. | |||
<br/> | |||
Per farlo dobbiamo modificare il file di configurazione di Postfix: | |||
<pre> | |||
# nano /etc/postfix/main.cf | |||
</pre> | |||
aggiungendo la sezione: | |||
<pre> | |||
smtpd_sender_restrictions = | |||
check_sender_access hash:/etc/postfix/sender_access | |||
</pre> | |||
Quindi creiamo il file: | |||
<pre> | |||
# nano /etc/postfix/sender_access | |||
</pre> | |||
di contenuto simile a questo: | |||
<pre> | |||
janedoe@acme.local REJECT | |||
acme.com REJECT | |||
bugsbunny@acme.com OK | |||
</pre> | |||
Infine informiamo Postfix: | |||
<pre> | |||
# postmap /etc/postfix/sender_access | |||
</pre> | |||
e riavviamo il demone: | |||
<pre> | |||
# /etc/init.d/postfix restart | |||
</pre> | |||
== Troubleshooting == | |||
Se abbiamo problemi nell'inviare o ricevere mail possiamo: | |||
* controllare il file di log <code>/var/log/mail.log</code>; quasi tutti i problemi sono elencati in questo file, con messaggi di errore più o meno chiari | |||
* eseguire il comando <code>postfix check</code>: se l'output è vuoto significa che Postfix è configurato bene | * eseguire il comando <code>postfix check</code>: se l'output è vuoto significa che Postfix è configurato bene | ||
* verificare la coda delle mail con il comando <code>postqueue -p -v</code> | * verificare la coda delle mail con il comando <code>postqueue -p -v</code> | ||
Riga 2 294: | Riga 2 381: | ||
</pre> | </pre> | ||
=== Credits | == Statistiche e report == | ||
Questa guida è basata sull'originale di Christoph Haas pubblicata sul sito [ | Il pacchetto <code>pflogsumm</code> (Postfix Log Summary) è comodo per avere un sommario di ciò che succede sul nostro mailserver: | ||
<pre> | |||
# apt-get install pflogsumm | |||
</pre> | |||
Per utilizzarlo basta indicargli il percorso del file di log di Postfix: | |||
<pre> | |||
# pflogsumm /var/log/mail.log | |||
messages | |||
129 received | |||
331 delivered | |||
1 forwarded | |||
8 deferred (59 deferrals) | |||
3 bounced | |||
586 rejected (63%) | |||
0 reject warnings | |||
0 held | |||
0 discarded (0%) | |||
3108k bytes received | |||
3967k bytes delivered | |||
36 senders | |||
28 sending hosts/domains | |||
229 recipients | |||
147 recipient hosts/domains | |||
</pre> | |||
== Gestire una Mailing List == | |||
Nel caso volessimo installare anche un servizio per la gestione di mailing list, possiamo appoggiarci a <code>Mailman</code>, probabilmente il più diffuso mailing list manager open-source. | |||
<br/> | |||
Configureremo un virtual host con hostname <code>lists.example.com</code> in cui installeremo Mailman. <code>lists.example.com</code> sarà anche la parte destra dell'indirizzo delle mailing list che creeremo in Mailman, quindi ogni mailing list avrà un indirizzo del tipo <code><nome_lista>@lists.example.com</code>. | |||
=== Installazione di Mailman === | |||
Mailman si appoggerà a Apache per il suo frontend. | |||
<br> | |||
Installiamo il software: | |||
<pre> | |||
# apt-get install mailman | |||
</pre> | |||
Durante l'installazione ci verranno poste le seguenti domande: | |||
<pre> | |||
Languages to support: <-- it (Italian) | |||
</pre> | |||
<pre> | |||
Missing site list | |||
Mailman needs a so-called "site list", which is the list from which password reminders and such are sent out from. | |||
This list needs to be created before mailman will start. | |||
To create the list, run "newlist mailman" and follow the instructions on-screen. | |||
Note that you also need to start mailman after that, using /etc/init.d/mailman start. <-- Ok | |||
</pre> | |||
=== Configurazione di Mailman === | |||
Mailman ha già un suo file di configurazione per Apache quasi pronto. Dobbiamo solo copiarlo nella directory corretta: | |||
<pre> | |||
# cp /etc/mailman/apache.conf /etc/apache2/sites-available/mailman.conf | |||
</pre> | |||
e modificare alcune cose: | |||
<pre> | |||
# nano /etc/apache2/sites-available/mailman.conf | |||
</pre> | |||
Alla fine del file, dopo la sezione commentata del virtual host già presente (da lasciare commentata!), aggiungiamo la configurazione del nostro virtual host: | |||
<pre> | |||
[...] | |||
<VirtualHost *:80> | |||
ServerName lists.example.com | |||
DocumentRoot /var/www/lists | |||
ErrorLog /var/log/apache2/lists-error.log | |||
CustomLog /var/log/apache2/lists-access.log combined | |||
<Directory /var/lib/mailman/archives/> | |||
Options FollowSymLinks | |||
AllowOverride None | |||
</Directory> | |||
Alias /pipermail/ /var/lib/mailman/archives/public/ | |||
Alias /images/mailman/ /usr/share/images/mailman/ | |||
ScriptAlias /admin /usr/lib/cgi-bin/mailman/admin | |||
ScriptAlias /admindb /usr/lib/cgi-bin/mailman/admindb | |||
ScriptAlias /confirm /usr/lib/cgi-bin/mailman/confirm | |||
ScriptAlias /create /usr/lib/cgi-bin/mailman/create | |||
ScriptAlias /edithtml /usr/lib/cgi-bin/mailman/edithtml | |||
ScriptAlias /listinfo /usr/lib/cgi-bin/mailman/listinfo | |||
ScriptAlias /options /usr/lib/cgi-bin/mailman/options | |||
ScriptAlias /private /usr/lib/cgi-bin/mailman/private | |||
ScriptAlias /rmlist /usr/lib/cgi-bin/mailman/rmlist | |||
ScriptAlias /roster /usr/lib/cgi-bin/mailman/roster | |||
ScriptAlias /subscribe /usr/lib/cgi-bin/mailman/subscribe | |||
ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/ | |||
ScriptAlias / /usr/lib/cgi-bin/mailman/listinfo | |||
</VirtualHost> | |||
</pre> | |||
L'ultima direttiva <code>ScriptAlias / /usr/lib/cgi-bin/mailman/listinfo</code> è opzionale; ha senso se non abbiamo nessun file index nella root del virtual host e vogliamo che digitando <code>http://lists.example.com/</code> si venga diretti automaticamente verso <code>http://lists.example.com/listinfo</code>. | |||
<br/> | |||
Quindi creiamo la document root <code>/var/www/lists</code>, abilitiamo il nuovo Virtual Host e riavviamo Apache: | |||
<pre> | |||
# mkdir /var/www/lists | |||
# a2ensite mailman.conf | |||
# /etc/init.d/apache2 restart | |||
</pre> | |||
Dato che stiamo usando un Virtual Host, dobbiamo sistemare alcune variabili nella configurazione di Mailman in <code>/etc/mailman/mm_cfg.py</code>: | |||
<pre> | |||
# nano /etc/mailman/mm_cfg.py | |||
</pre> | |||
<pre> | |||
[...] | |||
DEFAULT_URL_PATTERN = 'http://%s/' | |||
[...] | |||
DEFAULT_EMAIL_HOST = 'lists.example.com' | |||
[...] | |||
DEFAULT_URL_HOST = 'lists.example.com' | |||
[...] | |||
</pre> | |||
=== Configurazione di Postfix === | |||
Ora dobbiamo configurare Postfix. Impostiamo alcune direttive per Mailman: | |||
<pre> | |||
# postconf -e 'relay_domains = lists.example.com' | |||
# postconf -e 'mailman_destination_recipient_limit = 1' | |||
</pre> | |||
Quindi apriamo il file: | |||
<pre> | |||
# nano /etc/postfix/master.cf | |||
</pre> | |||
e controlliamo che siano presenti le seguenti linee (di default dovrebbero esserci): | |||
<pre> | |||
[...] | |||
mailman unix - n n - - pipe | |||
flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py | |||
${nexthop} ${user} | |||
[...] | |||
</pre> | |||
Ora dobbiamo associare il dominio <code>lists.example.com</code> al corretto ''transport'' <code>mailman:</code>. Questa operazione è possibile in diversi modi: nel nostro setup non abbiamo configurato i transport di Postfix all'interno del database MySQL degli utenti virtuali, quindi procederemo con la configurazione attraverso un file di testo. | |||
<br/> | |||
Iniziamo con introdurre la direttiva seguente nella configurazione di Postfix: | |||
<pre> | |||
# postconf -e 'transport_maps = hash:/etc/postfix/transport' | |||
</pre> | |||
Quindi creiamo il file | |||
<pre> | |||
# nano /etc/postfix/transport | |||
</pre> | |||
e diamogli il contenuto: | |||
<pre> | |||
lists.example.com mailman: | |||
</pre> | |||
Creiamo l'hash del file: | |||
<pre> | |||
# postmap -v /etc/postfix/transport | |||
</pre> | |||
e riavviamo Postfix: | |||
<pre> | |||
# /etc/init.d/postfix restart | |||
</pre> | |||
=== Creazione della prima lista === | |||
Prima di avviare Mailman, è necessario creare una lista chiamata <code>mailman</code>; è obbligatoria, senza di questa Mailman non partirà: | |||
<pre> | |||
# newlist --urlhost=lists.example.com --emailhost=lists.example.com mailman | |||
</pre> | |||
Solitamente gli switch <code>--urlhost</code> e <code>--emailhost</code> non sono necessari, dal momento che abbiamo già configurato il file <code>/etc/mailman/mm_cfg.py</code>, ma per sicurezza sono solito indicarli esplicitamente. | |||
<br/> | |||
Dovremo rispondere ad alcune domande: | |||
<pre> | |||
Enter the email of the person running the list: <-- Indicare l'amministratore della lista, ad esempio amministratore@example.com | |||
Initial mailman password: <-- La password per amministrare la lista | |||
</pre> | |||
Prima di poter utilizzare la lista dovremo modificare il file <code>/etc/aliases</code> come indicato da Mailman, cioè aggiungendo le seguenti linee: | |||
<pre> | |||
## mailman mailing list | |||
mailman: "|/var/lib/mailman/mail/mailman post mailman" | |||
mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman" | |||
mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman" | |||
mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman" | |||
mailman-join: "|/var/lib/mailman/mail/mailman join mailman" | |||
mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman" | |||
mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman" | |||
mailman-request: "|/var/lib/mailman/mail/mailman request mailman" | |||
mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman" | |||
mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman" | |||
</pre> | |||
Infine premiamo Enter e chiudiamo la procedura di creazione della lista: | |||
<pre> | |||
Hit enter to notify mailman owner... <-- ENTER | |||
</pre> | |||
Apriamo quindi <code>/etc/aliases</code> e modifichiamolo come suggerito: | |||
<pre> | |||
# nano /etc/aliases | |||
</pre> | |||
<pre> | |||
[...] | |||
## mailman mailing list | |||
mailman: "|/var/lib/mailman/mail/mailman post mailman" | |||
mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman" | |||
mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman" | |||
mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman" | |||
mailman-join: "|/var/lib/mailman/mail/mailman join mailman" | |||
mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman" | |||
mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman" | |||
mailman-request: "|/var/lib/mailman/mail/mailman request mailman" | |||
mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman" | |||
mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman" | |||
</pre> | |||
Quindi aggiorniamo la configurazione degli alias e riavviamo Postfix: | |||
<pre> | |||
# newaliases | |||
# /etc/init.d/postfix restart | |||
</pre> | |||
Ora siamo pronti per avviare Mailman: | |||
<pre> | |||
# /etc/init.d/mailman start | |||
</pre> | |||
=== Amministrazione di Mailman === | |||
Da questo momento possiamo amministrare le liste attraverso l'interfaccia web di Mailman, raggiungibile all'indirizzo: | |||
<pre> | |||
http://lists.example.com/admin | |||
</pre> | |||
=== Creazione di nuove liste === | |||
Possiamo creare nuove mailing list con questa procedura: | |||
<pre> | |||
# newlist --urlhost=lists.example.com --emailhost=lists.example.com testlist2 | |||
</pre> | |||
<pre> | |||
Enter the email of the person running the list: <-- amministratore2@example.com | |||
Initial testlist2 password: <-- Password dell'amministratore | |||
To finish creating your mailing list, you must edit your /etc/aliases (or | |||
equivalent) file by adding the following lines, and possibly running the | |||
`newaliases' program: | |||
## testlist2 mailing list | |||
testlist2: "|/var/lib/mailman/mail/mailman post testlist2" | |||
testlist2-admin: "|/var/lib/mailman/mail/mailman admin testlist2" | |||
testlist2-bounces: "|/var/lib/mailman/mail/mailman bounces testlist2" | |||
testlist2-confirm: "|/var/lib/mailman/mail/mailman confirm testlist2" | |||
testlist2-join: "|/var/lib/mailman/mail/mailman join testlist2" | |||
testlist2-leave: "|/var/lib/mailman/mail/mailman leave testlist2" | |||
testlist2-owner: "|/var/lib/mailman/mail/mailman owner testlist2" | |||
testlist2-request: "|/var/lib/mailman/mail/mailman request testlist2" | |||
testlist2-subscribe: "|/var/lib/mailman/mail/mailman subscribe testlist2" | |||
testlist2-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe testlist2" | |||
Hit enter to notify testlist2 owner... <-- ENTER | |||
</pre> | |||
Quindi modifichiamo: | |||
<pre> | |||
# nano /etc/aliases | |||
</pre> | |||
aggiungendo | |||
<pre> | |||
[...] | |||
## testlist2 mailing list | |||
testlist2: "|/var/lib/mailman/mail/mailman post testlist2" | |||
testlist2-admin: "|/var/lib/mailman/mail/mailman admin testlist2" | |||
testlist2-bounces: "|/var/lib/mailman/mail/mailman bounces testlist2" | |||
testlist2-confirm: "|/var/lib/mailman/mail/mailman confirm testlist2" | |||
testlist2-join: "|/var/lib/mailman/mail/mailman join testlist2" | |||
testlist2-leave: "|/var/lib/mailman/mail/mailman leave testlist2" | |||
testlist2-owner: "|/var/lib/mailman/mail/mailman owner testlist2" | |||
testlist2-request: "|/var/lib/mailman/mail/mailman request testlist2" | |||
testlist2-subscribe: "|/var/lib/mailman/mail/mailman subscribe testlist2" | |||
testlist2-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe testlist2" | |||
</pre> | |||
Infine: | |||
<pre> | |||
# newaliases | |||
# /etc/init.d/postfix restart | |||
</pre> | |||
== Credits == | |||
Questa guida è basata sull'originale di Christoph Haas pubblicata sul sito [http://workaround.org/ Workaround.org]. | |||
<br/> | <br/> | ||
<br/> | <br/> | ||
Riga 2 302: | Riga 2 660: | ||
{{Autori | {{Autori | ||
|Autore = [[Utente:Ferdybassi|Ferdybassi]] 22:22, 2 apr 2011 (CEST) | |Autore = [[Utente:Ferdybassi|Ferdybassi]] 22:22, 2 apr 2011 (CEST) | ||
|Verificata_da = | |||
: risca 10:52, 6 apr 2014 (CEST) | |||
|Numero_revisori = 1 | |||
}} | }} | ||