4 069
contributi
Nessun oggetto della modifica |
|||
(19 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 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 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 389: | Riga 2 411: | ||
== Gestire una Mailing List == | == Gestire una Mailing List == | ||
Nel caso volessimo installare anche un servizio per la gestione di mailing list, possiamo appoggiarci a < | 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/> | <br/> | ||
Configureremo un virtual host con hostname < | 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 === | === Installazione di Mailman === | ||
Riga 2 411: | Riga 2 433: | ||
Note that you also need to start mailman after that, using /etc/init.d/mailman start. <-- Ok | Note that you also need to start mailman after that, using /etc/init.d/mailman start. <-- Ok | ||
</pre> | </pre> | ||
=== Configurazione di Mailman === | |||
Mailman ha già un suo file di configurazione per Apache quasi pronto. Dobbiamo solo copiarlo nella directory corretta: | Mailman ha già un suo file di configurazione per Apache quasi pronto. Dobbiamo solo copiarlo nella directory corretta: | ||
<pre> | <pre> | ||
Riga 2 418: | Riga 2 442: | ||
<pre> | <pre> | ||
# nano /etc/apache2/sites-available/mailman.conf | # 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> | </pre> | ||
== Credits == | == Credits == | ||
Questa guida è basata sull'originale di Christoph Haas pubblicata sul sito [ | Questa guida è basata sull'originale di Christoph Haas pubblicata sul sito [http://workaround.org/ Workaround.org]. | ||
<br/> | <br/> | ||
<br/> | <br/> |