## Servizi email

Il processo per portare una email da una persona a un'altra all'interno di una rete o attraverso internet, comporta l'utilizzo di diversi sistemi che cooperano tra loro. Ognuno di questi sistemi deve essere configurato correttamente. Colui che spedisce una email utilizza un Mail User Agent (MUA), o client email, per spedire il messaggio attraverso uno o più Mail Transfer Agents (MTA), l'ultimo dei quali lo consegnerà a un Mail Delivery Agent (MDA) per la consegna nella casella di posta del destinatario, che la preleverà utilizzando un client email attraverso un server POP3 o IMAP.

### Postfix

Postfix è il Mail Transfer Agent (MTA) predefinito di Ubuntu. Cerca di essere facile da amministrare e sicuro ed è compatibile con l'MTA sendmail. Questa sezione espone come installare e configurare postfix e anche come configurare un server SMTP utilizzando un collegamento sicuro (per l'invio di email in sicurezza).

#### Installazione

Per installare postfix con SMTP AUTH e TLS (Transport Layer Security) eseguire il seguente comando:

    sudo apt-get install postfix

Premere Invio a ogni domanda posta durante il processo di installazione, la configurazione sarà svolta al passo successivo.

#### Configurazione di base

Per configurare postfix eseguire il seguente comando:

    sudo dpkg-reconfigure postfix

Sarà visualizzata l'interfaccia grafica. A ogni schermata selezionare i seguenti valori:

- Ok

- Internet Site

- NONE

- mail.example.com

- mail.example.com, localhost.localdomain, localhost

- No

- 127.0.0.0/8

- Sì

- 0

- +

- tutti

Sostituire mail.example.com con il nome del proprio host server.

#### Autenticazione SMTP

I passi successivi sono la configurazione di postfix per l'uso di SASL per SMTP AUTH. Invece di modificare i file di configurazione a mano, è possibile utilizzare lo strumento postconf per impostare tutti i parametri di postfix. I parametri di configurazione vengono salvati nel file `/etc/postfix/main.cf`. Per riconfigurare un particolare parametro è possibile utilizzare nuovamente il comando precedente o modificare il file a mano.

1. Configurare Postfix per l'esecuzione di SMTP AUTH utilizzando SASL (saslauthd):

       postconf -e 'smtpd_sasl_local_domain ='
       postconf -e 'smtpd_sasl_auth_enable = yes'
       postconf -e 'smtpd_sasl_security_options = noanonymous'
       postconf -e 'broken_sasl_auth_clients = yes'
       postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
       postconf -e 'inet_interfaces = all'
       echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf
       echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf

2. Quindi, configurare i certificati digitali per TLS. Quando vengono poste delle domande, seguire le istruzioni e rispondere correttamente.

       openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
       chmod 600 smtpd.key
       openssl req -new -key smtpd.key -out smtpd.csr
       openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
       openssl rsa -in smtpd.key -out smtpd.key.unencrypted
       mv -f smtpd.key.unencrypted smtpd.key
       openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650
       mv smtpd.key /etc/ssl/private/
       mv smtpd.crt /etc/ssl/certs/
       mv cakey.pem /etc/ssl/private/
       mv cacert.pem /etc/ssl/certs/

   È possibile ottenere un certificato digitale da un ente che distrubuisce certificati. In alternativa è possibile crearsi i propri certificati. Per maggiori informazioni fare riferimento a la sezione chiamata “Creare un certificato auto-firmato”.

3. Configurare Postfix affinché esegua cifratura TLS sia per le email in arrivo sia per quelle in uscita:

       postconf -e 'smtpd_tls_auth_only = no'
       postconf -e 'smtp_use_tls = yes'
       postconf -e 'smtpd_use_tls = yes'
       postconf -e 'smtp_tls_note_starttls_offer = yes'
       postconf -e 'smtpd_tls_key_file = /etc/ssl/private/smtpd.key'
       postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt'
       postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'
       postconf -e 'smtpd_tls_loglevel = 1'
       postconf -e 'smtpd_tls_received_header = yes'
       postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
       postconf -e 'tls_random_source = dev:/dev/urandom'
       postconf -e 'myhostname = mail.example.com'

Una volta eseguiti tutti i comandi, SMTP AUTH è configurato per postfix. Il certificato auto-firmato è creato per TLS ed è configurato per l'uso con postfix.

Ora, il file `/etc/postfix/main.cf` dovrebbe essere simile a questo.

La configurazione iniziale di postfix è completata. Eseguire il seguente comando per avviare il demone postfix:

                  sudo /etc/init.d/postfix start

Ora il demone postfix è installato, configurato e funziona correttamente. Postfix supporta anche SMTP AUTH come descritto in RFC2554. È basato su SASL, ma è necessario abilitare l'autenticazione SASL prima di poter utilizzare SMTP.

#### Configurare SASL

Le applicazioni libsasl2, sasl2-bin e libsasl2-modules sono necessarie per abilitare l'utilizzo di SASL con SMTP AUTH. È possibile installare queste applicazioni se non lo si è già fatto.

    apt-get install libsasl2 sasl2-bin

È necessario apportare alcune modifice prima di un corretto funzionamento. Questo perché Postfix viene eseguito in chroot su `/var/spool/postfix`, SASL necessita di essere configurato per poter girare nella falsa root (`/var/run/saslauthd` diventa `/var/spool/postfix/var/run/saslauthd`):

    mkdir -p /var/spool/postfix/var/run/saslauthd
    rm -rf /var/run/saslauthd

Per attivare saslauthd, modificare il file `/etc/default/saslauthd` e cambiare o aggiungere la variabile START. Per configurare saslauthd affinché possa girare nella falsa root, aggiungere le variabili PWDIR, PIDFILE e PARAMS. Infine configurare la variabile MECHANISMS a piacere. Il file dovrebbe essere all'incirca come questo:

    # This needs to be uncommented before saslauthd will be run
    # automatically
    START=yes

    PWDIR="/var/spool/postfix/var/run/saslauthd"
    PARAMS="-m ${PWDIR}"
    PIDFILE="${PWDIR}/saslauthd.pid"

    # You must specify the authentication mechanisms you wish to use.
    # This defaults to "pam" for PAM support, but may also include
    # "shadow" or "sasldb", like this:
    # MECHANISMS="pam shadow"

    MECHANISMS="pam"

È possibile utilizzare shadow al posto di pam. Questo utilizzerà il trasferimento delle password con l'hashing MD5 ed è perfettamente sicuro. Il nome utente e la password necessari per l'autenticazione sono quelle dell'utente nel sistema in uso.

Aggiornare lo "stato" di `/var/spool/portfix/var/run/saslauthd`. Lo script init di saslauthd utilizza queste impostazioni per creare la directory mancante con i permessi appropriati:

    dpkg-statoverride --force --update --add root sasl 755 /var/spool/postfix/var/run/saslauthd

#### Test

La configurazione di SMTP AUTH è completata. Ora è necessario avviare il tutto ed eseguire dei test. Per avviare il demone SASL utilizzare il seguente comando:

                  sudo /etc/init.d/saslauthd start

Per controllare se SMTP AUTH e TLS funzionano perfettamente, eseguire il seguente comando:

                  telnet mail.example.com 25

Una volta stabilito il collegamento con il server postfix, digitare:

    ehlo mail.example.com

Se compaiono le seguenti righe, allora tutto è a posto. Digitare quit per uscire.

    250-STARTTLS
    250-AUTH LOGIN PLAIN
    250-AUTH=LOGIN PLAIN
    250 8BITMIME

### Exim4

Exim4 è un altro MTA (Message Transfer Agent) sviluppato dalla Cambridge University per essere utilizzato nei sistemi Unix collegati in Internet. Exim può essere installato al posto di sendmail, sebbene la configurazione di exim sia un po' diversa da quella di sendmail.

#### Installazione

Per installare exim4, digitare il seguente comando:

    sudo apt-get install exim4 exim4-base exim4-config

#### Configurazione

Per configurare exim4, eseguire il seguente comando:

    sudo dpkg-reconfigure exim4-config

Viene visualizzata l'interfaccia grafica. Questa consente di configurare molti parametri. Per esempio, in exim4 i file di configurazione sono suddivisi in molti file, se si vuole avere un unico file è possibile impostare ciò all'interno di questa interfaccia.

Tutti i parametri impostati all'interno dell'interfaccia grafica sono salvati nel file `/etc/exim4/update-exim4.conf.conf`. Se si desidera rieseguire la configurazione è possibile rieseguire il wizard di configurazione o modificare manualmente il file utilizzando l'editor di testo preferito. Una volta configurato, è possibile utilizzare il seguente comando per generare il file di configurazione principale:

    sudo update-exim4.conf

Questo file, una volta creato, è salvato in `/var/lib/exim4/config.autogenerated`.

Per nessun motivo modificare il file `/var/lib/exim4/config.autogenerated`. È aggiornato automaticamente ogni volta che viene eseguito il comando update-exim4.conf

Per avviare il demone exim4 utilizzare il seguente comando: sudo /etc/init.d/exim4 start

### Server Dovecot

Dovecot è un Mail Delivery Agent, progettato per garantire la sicurezza. Supporta la maggior parte dei formati di caselle di posta: mbox o maildir. Questa sezione espone come configurarlo come server imap o pop3.

#### Installazione

Per installare dovecot eseguire in un terminale il seguente comando:

    sudo apt-get install dovecot-common dovecot-imapd dovecot-pop3d

#### Configurazione

Per configurare dovecot è possibile modificare il file `/etc/dovecot/dovecot.conf`. È possibile utilizzare il protocollo preferito. Può essere pop3, pop3s (pop3 sicuro), imap e imaps (imap sicuro). Una descrizione di questi protocolli va oltre lo scopo di questa guida. Per maggiori informazioni fare riferimento agli articoli presenti su wikipedia riguardo POP3 e IMAP.

IMAPS e POP3S sono molto più sicuri rispetto IMAP e POP3 perché utilizzano la cifratura SSL durante la connessione. Una volta scelto il protocollo, modificare la seguente riga nel file `/etc/dovecot/dovecot.conf`:

    protocols = pop3 pop3s imap imaps

Questo abilita i protocolli all'avvio di dovecot. Quindi aggiungere le seguenti righe nella sezione pop3 del file `/etc/dovecot/dovecot.conf`:

    pop3_uidl_format = %08Xu%08Xv

Selezionare la tipologia di casella di posta. Dovecot supporta i formati maildir e mbox. Questi sono i formati più utilizzati, hanno i loro pregi e i loro difetti. Per maggiori informazioni consultare il sito web di dovecot.

Una volta scelta la tipologia della casella di posta, modificare il file `/etc/dovecot/dovecot.conf` e cambiare la seguente riga:

    default_mail_env = maildir:~/Maildir # (per maildir)
    o
    default_mail_env = mbox:~/mail:INBOX=/var/spool/mail/%u # (per mbox)

È necessario configurare l'MTA (Mail Transport Agent) per trasferire le email in arrivo in questo tipo di casella, se diversa da quella configurata.

Una volta configurato dovecot, avviare il demone dovecot per testare la configurazione:

                  sudo /etc/init.d/dovecot start

Se è stato abilitato il supporto imap o pop3 è possibile effettuare il login con i comandi telnet localhost pop3 o telnet localhost. Se l'output è simile a questo, l'installazione ha avuto successo:

    telnet localhost pop3
    Trying 127.0.0.1...
    Connected to localhost.localdomain.
    Escape character is '^]'.
    +OK Dovecot ready.

#### Configurazione di Dovecot SSL

Per configurare dovecot affinché utilizzi SSL, è possibile modificare il file `/etc/dovecot/dovecot.conf` e cambiare le seguenti righe:

    ssl_cert_file = /etc/ssl/certs/dovecot.pem
    ssl_key_file = /etc/ssl/private/dovecot.pem
    ssl_disable = no
    disable_plaintext_auth = no

I file cert e key sono creati automaticamente da dovecot durante l'installazione. Notare che queste chiavi non sono firmate e si riceverà un errore di "bad signature" quando ci si collega da un client. Per ovviare a questo problema, è possibile utilizzare dei certificati commerciali o, meglio ancora, i propri certificati SSL.

#### Configurazione del firewall per un server email

Per accedere al server mail da un altro computer, è necessario configurare il firewall affinché consenta i collegamenti al server sulle porte necessarie.

- IMAP - 143

- IMAPS - 993

- POP3 - 110

- POP3S - 995

### Mailman

Mailman è un programma open source per la gestione di discussioni elettroniche e newsletter. Molte mailing list open source (incluse tutte le mailing list di Ubuntu) utilizzano Mailman come software. È molto potente e facile da installare.

#### Installazione

Mailman fornisce un'interfaccia web per i compiti amministrativi e per gli utenti. È quindi richiesto apache con il supporto mod_perl. Mailman utilizza un server mail esterno per inviare e ricevere le email. Funziona molto bene con i seguenti server mail:

- Postfix

- Exim

- Sendmail

- Qmail

Verrà descritto come installare mailman, il server web apache e il server mail Exim. Se si desidera installare mailman con un server mail diverso, fare riferimento alla sezione «Riferimenti».

##### Apache2

Per installare apache2 fare riferimento a la sezione chiamata “Installazione”.

##### Exim4

Per installare Exim4 digitare i seguenti comandi in un terminale:

    sudo apt-get install exim4
    sudo apt-get install exim4-base
    sudo apt-get install exim4-config

Una volta installato exim4, tutti i file di configurazione sono contenuti nella directory `/etc/exim4`. In Ubuntu, in modo predefinito, i file di configurazione sono suddivisi in diversi file. È comunque possibile cambiare questo comportamento modificando la seguente variabile all'interno del file `/etc/exim4/update-exim4.conf`:

- dc_use_split_config='true'

##### Mailman

Per installare mailman, in un terminale digitare il seguente comando:

    sudo apt-get install mailman

Questo copia i file di installazione nella directory `/var/lib/mailman, gli script CGI nella directory /usr/lib/cgi-bin/application, crea l'utente list e il gruppo list. Il proprietario del processo mailman sar`

#### Configurazione

Questa sezione assume che le applicazioni mailman, apache2 e exim4 siano state installate con successo. Ora è necessario configurarle.

##### Apache2

Una volta installato apache2, è possibile aggiungere le seguenti righe al file `/etc/apache2/apache2.conf`:

    Alias /images/mailman/ "/usr/share/images/mailman/"
    Alias /pipermail/ "/var/lib/mailman/archives/public/"

mailman utilizza apache2 per eseguire gli script CGI. Gli script CGI di mailman sono installati all'interno della directory `/usr/lib/cgi-bin/mailman`. L'URL di mailman quindi risulta http://hostname/cgi-bin/mailman/. È possibile apportare cambiamenti al file `/etc/apache2/apache2.conf` per modificarne il comportamento.

##### Exim4

Una volta installato Exim4, è possibile avviare il server exim digitando il seguente comando in un terminale:

    sudo apt-get /etc/init.d/exim4 start

Per poter utilizzare mailman con exim4, è necessario configurare exim4 per questo scopo. Come precedentemente detto, in modo predefinito, exim4 utilizza file di configurazione multipli di diversi tipi. Per maggiori informazioni fare riferimento al sito web di Exim. Per avviare mailman è necessario aggiungere un nuovo file di configurazione alle seguenti tipologie di configurazione:

- Main

- Transport

- Router

Exim crea un file di configurazione principale ordinando tutti questi piccoli file di configurazione. L'ordine di questi file è molto importante.

##### Main

Tutti i file di configurazione appartenenti al tipo main sono archiviati nella directory `/etc/exim4/conf.d/main/`. È possibile aggiungere il seguente contenuto a un nuovo file di configurazione chiamato `04_exim4-config_mailman`:

    # start
    # Home dir for your Mailman installation -- aka Mailman's prefix
    # directory.
    # On Ubuntu this should be "/var/lib/mailman"
    # This is normally the same as ~mailman
    MM_HOME=/var/lib/mailman
    #
    # User and group for Mailman, should match your --with-mail-gid
    # switch to Mailman's configure script. Value is normally "mailman"
    MM_UID=list
    MM_GID=list
    #
    # Domains that your lists are in - colon separated list
    # you may wish to add these into local_domains as well
    domainlist mm_domains=hostname.com
    #
    # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    #
    # These values are derived from the ones above and should not need
    # editing unless you have munged your mailman installation
    #
    # The path of the Mailman mail wrapper script
    MM_WRAP=MM_HOME/mail/mailman
    #
    # The path of the list config file (used as a required file when
    # verifying list addresses)
    MM_LISTCHK=MM_HOME/lists/${lc::$local_part}/config.pck
    # end

##### Transport

Tutti i file di configurazione appartenenti al tipo transport sono archiviati nella directory `/etc/exim4/conf.d/transport/`. È possibile aggiungere il seguente contenuto a un nuovo file di configurazione chiamato `40_exim4-config_mailman`:

      mailman_transport:
       driver = pipe
       command = MM_WRAP \
                   '${if def:local_part_suffix \
                        {${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}}} \
                        {post}}' \
                   $local_part
        current_directory = MM_HOME
        home_directory = MM_HOME
        user = MM_UID
        group = MM_GID

##### Router

Tutti i file di configurazione appartenenti al tipo router sono archiviati nella directory `/etc/exim4/conf.d/router/`. È possibile aggiungere il seguente contenuto a un nuovo file di configurazione chiamato `101_exim4-config_mailman`:

      mailman_router:
       driver = accept
       require_files = MM_HOME/lists/$local_part/config.pck
       local_part_suffix_optional
       local_part_suffix = -bounces : -bounces+* : \
                          -confirm+* : -join : -leave : \
                          -owner : -request : -admin
       transport = mailman_transport

L'ordine dei file di configurazione main e transport può essere qualsiasi. L'ordine dei file di configurazione del tipo router deve essere lo stesso. Questo particolare file deve apparire prima del file `200_exim4-config_primary`. Questi file contengono le stesse informazioni, ma il primo ha la precedenza. Per maggiori informazioni fare riferimento alla sezione «Riferimenti».

##### Mailman

Una volta installato mailman è possibile avviarlo digitando il seguente comando:

    sudo /etc/init.d/mailman start

Quindi, è necessario creare la mailing list di base. Digitare il seguente comando per creare la mailing list:

    sudo /usr/sbin/newlist mailman

      Enter the email address of the person running the list: bhuvan at ubuntu.com
      Initial mailman password:
      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:

      ## 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"

      Hit enter to notify mailman owner..

      #

Dato che è stato configurato exim al riconoscimento di tutte le email in arrivo da mailman, non è necessario inserire altre voci nel file `/etc/aliases`. Se sono state fatte modifiche a file di configurazione, assicurarsi di riavviare i servizi modificati prima di continuare.

#### Amministrazione

Si assume una installazione predefinita. Gli script CGI di mailman sono all'interno della directory /usr/lib/cgi-bin/mailman/. mailman fornisce uno strumento di amministrazione basato sul web. Per accedere a questa pagina indirizzare il browser web al seguente URL:

http://hostname/cgi-bin/mailman/admin

La mailing list predefinita, mailman, compare a schermo. Facendo clic clic sul nome, viene chiesta la password di autenticazione. Una volta inserita la password corretta è possibile modificare le impostazioni della mailing list. È possibile creare una nuova mailing list utilizzando le utility a riga di comando (/usr/sbin/newlist). In alternativa, è possibile creare una nuova mailing list tramite l'interfaccia web.

#### Utenti

Mailman fornisce un'interfaccia web per gli utenti. Per accedere a questa pagina, indirizzare il browser web al seguente URL:

http://hostname/cgi-bin/mailman/listinfo

La mailing list predefinita, mailman, compare a schermo. Facendo clic sul nome, viene presentato il modulo di iscrizione. È possibile inserire il proprio indirizzo email, il nome (opzionale) e la password per completare l'iscrizione. Viene così inviata una email di invito all'indirizzo specificato. È possibile seguire le istruzioni contenute nell'email per completare l'iscirzione.

#### Riferimenti

GNU Mailman - Manuale di installazione

HOWTO - Using Exim 4 and Mailman 2.1 together

Database |  | Capitolo 5. Reti Windows