Internet Service Provider con Debian: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
nessun oggetto della modifica
Nessun oggetto della modifica
 
(16 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 ([[OpenSSH: configurazione di base]]) con autenticazione via chiave: [[Ssh e autenticazione tramite chiavi]].
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 <tt>/etc/dovecot/conf.d</tt>. Il file di configurazione principale <tt>/etc/dovecot/dovecot.conf</tt> non richiede alcuna modifica e attraverso la direttiva
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 <tt>/etc/dovecot/conf.d/</tt> 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.
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 <tt> john@example.org</tt> avrà le sue email archiviate in <tt>/var/vmail/example.org/john/Maildir</tt>.
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 <tt> /etc/dovecot/conf.d/auth-sql.conf.ext</tt> e dice a Dovecot come accedere al database MySQL e dove trovare le informazioni sugli account. Accertiamoci che contenga le linee:
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 <tt>postconf -e smtpd_tls_auth_only=yes</tt> è da utilizzarsi '''solo''' se vogliamo che i nostri utenti siano costretti a utilizzare SSL per scaricare e inviare la loro posta.
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 <tt>/etc/default/spamassassin</tt> ci sia la riga:
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 <tt>/var/log/mail.log</tt> dovremmo trovare una cosa del genere:
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 <tt>/var/lib/amavis/virusmails/C/virus-ClS0k87Qzm4Q</tt> per essere eventualmente analizzata.
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
reject_rbl_client dnsbl.sorbs.net
        check_client_access hash:/etc/postfix/access
reject_rbl_client bl.spamcop.net
        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_rbl_client dnsbl-1.uceprotect.net
reject_rbl_client dnsbl-1.uceprotect.net
        check_client_access hash:/etc/postfix/access
         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 <tt>Mailman</tt>, probabilmente il più diffuso mailing list manager open-source.
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 <tt>lists.example.com</tt> in cui installeremo <tt>Mailman</tt>. <tt>lists.example.com</tt> sarà anche la parte destra dell'indirizzo delle mailing list che creeremo in Mailman, quindi ogni mailing list avrà un indirizzo del tipo <tt><nome_lista>@lists.example.com</tt>.
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 452: Riga 2 474:
</VirtualHost>
</VirtualHost>
</pre>
</pre>
L'ultima direttiva <tt>ScriptAlias / /usr/lib/cgi-bin/mailman/listinfo</tt> è opzionale; ha senso se non abbiamo nessun file index nella root del virtual host e vogliamo che digitando <tt>http://lists.example.com/</tt> si venga diretti automaticamente verso <tt>http://lists.example.com/listinfo</tt>.
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/>
<br/>
Quindi creiamo la document root <tt>/var/www/lists</tt>, abilitiamo il nuovo Virtual Host e riavviamo Apache:
Quindi creiamo la document root <code>/var/www/lists</code>, abilitiamo il nuovo Virtual Host e riavviamo Apache:
<pre>
<pre>
# mkdir /var/www/lists
# mkdir /var/www/lists
Riga 2 460: Riga 2 482:
# /etc/init.d/apache2 restart
# /etc/init.d/apache2 restart
</pre>
</pre>
Dato che stiamo usando un Virtual Host, dobbiamo sistemare alcune variabili nella configurazione di Mailman in <tt>/etc/mailman/mm_cfg.py</tt>:
Dato che stiamo usando un Virtual Host, dobbiamo sistemare alcune variabili nella configurazione di Mailman in <code>/etc/mailman/mm_cfg.py</code>:
<pre>
<pre>
# nano /etc/mailman/mm_cfg.py
# nano /etc/mailman/mm_cfg.py
Riga 2 472: Riga 2 494:
DEFAULT_URL_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 [http://http://workaround.org/ Workaround.org].
Questa guida è basata sull'originale di Christoph Haas pubblicata sul sito [http://workaround.org/ Workaround.org].
<br/>
<br/>
<br/>
<br/>

Menu di navigazione