Documentazione di Ubuntu → Ubuntu 10.04 → Guida a Ubuntu server → Servizi email → Postfix

## 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).

Questa guida non spiega come configurare Virtual Domains di Postfix. Per informazioni sui Virtual Domains e altre configurazioni avanzate, consultare la sezione chiamata «Riferimenti».

### Installazione

Per installare postfix eseguire il seguente comando:

    sudo apt-get install postfix

Premere "Invio" quando il processo di installazione pone delle domande, la configurazione verrà effettuata in dettaglio al passo successivo.

### Configurazione di base

Per configurare postfix, eseguire il seguente comando:

    sudo dpkg-reconfigure postfix

Viene visualizzata l'interfaccia utente. In ogni schermata selezionare i seguenti valori:

- Internet Site

- mail.example.com

- steve

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

- No

- 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24

- 0

- +

- tutti

Replace mail.example.com with the domain for which you'll accept email, 192.168.0.0/24 with the actual network and class range of your mail server, and steve with the appropriate username.

A questo punto è utile decidere quale formato usare per la mailbox. Postfix, come impostazione predefinita, utilizza mbox come formato. Invece di modificare il file di configurazione, è possibile usare il comando postconf per configurare tutti i parametri di postfix che vengono salvati nel file `/etc/postfix/main.cf`. Per riconfigurare un particolare parametro, è sempre possibile eseguire il comando precedente o modificare il file.

Per configurare la casella di posta per Maildir:

    sudo postconf -e 'home_mailbox = Maildir/'

Questo posizionerà le nuove mail in /home/NOME_UTENTE/Maildir e sarà quindi necessario configurare il proprio MDA (Mail Delivery Agent) affinché utilizzi lo stesso percorso.

### Autenticazione SMTP

SMTP-AUTH consente a un client di identificarsi attraverso un meccanismo di autenticazione (SASL). TLS (Transport Layer Security) dovrebbe essere usato per cifrare il processo di autenticazione. Una volta autenticato, il server SMTP consentirà ai client di scaricare le email.

1. Configurare Postfix per SMTP-AUTH usando SASL (Dovecot SASL):

       sudo postconf -e 'smtpd_sasl_type = dovecot'
       sudo postconf -e 'smtpd_sasl_path = private/auth-client'
       sudo postconf -e 'smtpd_sasl_local_domain ='
       sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
       sudo postconf -e 'broken_sasl_auth_clients = yes'
       sudo postconf -e 'smtpd_sasl_auth_enable = yes'
       sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
       sudo postconf -e 'inet_interfaces = all'

   La configurazione smtpd_sasl_path è un percorso relativo alla directory di Postfix.

2. Ora, ottenere un certificato digitale per TLS (per maggiori informazioni consultare la sezione chiamata «Certificati»). In questo esempio viene usata anche una Autorità di Certificazione (CA). Per informazioni su come generare un certificato CA, consultare la sezione chiamata «Autorità di Certificazione».

   È possibile ottenere un certificato da un'autorità di certificazione, ma diversamente dai client web, i client SMTP non pongono problemi riguardo i certificati auto-firmati ed è quindi possibile crearne uno. Per maggiori informazioni, consultare la sezione chiamata «Creare un certificato auto-firmato».

3. Ottenuto un certificato, configurare Postfix affinché fornisca cifratura TLS per le mail in entrate e in uscita:

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

4. If you are using your own Certificate Authority to sign the certificate enter:

       sudo postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'

   Again, for more details about certificates see la sezione chiamata «Certificati».

Una volta eseguiti tutti i comandi, Postfix è configurato per SMTP-AUTH ed è stato creato un certificato auto-firmato per la cifratura TLS.

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

La configurazione iniziale di postfix è completa, eseguire il seguente comando per riavviarne il demone:

    sudo /etc/init.d/postfix restart

Postfix supporta SMTP-AUTH come descritto in RFC2554 ed è basato su SASL. È comunque ancora necessario impostare l'autenticazione SASL prima di poter usare SMTP-AUTH.

### Configurare SASL

Postfix supporta due implementazioni SASL: Cyrus SASL e Dovecot SASL. Per abilitare Dovecot SASL è necessario installare il pacchetto dovecot-common. In un terminale digitare:

    sudo apt-get install dovecot-common

Modificare quindi il file `/etc/dovecot/dovecot.conf`. Nella sezione auth default de-commentare l'opzione socket listen e modificare come di seguito:

      socket listen {
        #master {
          # Master socket provides access to userdb information. It's typically
          # used to give Dovecot's local delivery agent access to userdb so it
          # can find mailbox locations.
          #path = /var/run/dovecot/auth-master
          #mode = 0600
          # Default user/group is the one who started dovecot-auth (root)
          #user =
          #group =
        #}
        client {
          # The client socket is generally safe to export to everyone. Typical use
          # is to export it to your SMTP server so it can do SMTP AUTH lookups
          # using it.
          path = /var/spool/postfix/private/auth-client
          mode = 0660
          user = postfix
          group = postfix
        }
      }

Affinché i client Outlook utilizzino SMTPAUTH, nella sezione auth default del file /etc/dovecot/dovecot.conf, aggiungere "login":

      mechanisms = plain login

Una volta configurato Dovecot, riavviarlo:

    sudo /etc/init.d/dovecot restart

### Postfix-Dovecot

Un'altra opzione per configurare Postfix per SMTP-AUTH consiste nell'usare il pacchetto dovecot-postfix. Questo pacchetto installa Dovecot e configura Postfix sia all'uso di autenticazione SASL che come MDA (Mail Delivery Agent) e configura Dovecot per IMAP, IMAPS, POP3 e POP3S.

Potrebbe essere utile o meno avere IMAP, IMAPS, POP3 o POP3S sul proprio server mail, per esempio se il server viene configurato come gateway mail o come filtro spam/virus. Se fosse questo il caso, potrebbe essere più facile usare i comandi precedenti per la configurazione di Postfix per SMTPAUTH.

Per installare il pacchetto, in un terminale digitare:

    sudo apt-get install dovecot-postfix

Il server mail dovrebbe essere funzionante, anche se è possibile modificarne ulteriormente la configurazione. Il pacchetto, per esempio, utilizza il certificato e la chiave presi dal pacchetto ssl-cert, ma con un server in produzione dovrebbero essere usati un certificato e una chiave generati appositamente per l'host. Per maggiori informazioni, consultare la sezione chiamata «Certificati».

Ottenuto un certificato personalizzato e una chiave per l'host, modificare le seguenti opzioni nel file `/etc/postfix/main.cf`:

    smtpd_tls_cert_file = /etc/ssl/certs/ssl-mail.pem
    smtpd_tls_key_file = /etc/ssl/private/ssl-mail.key

Riavviare Postfix:

    sudo /etc/init.d/postfix restart

### Test

La configurazione di SMTP-AUTH è completa ed è ora necessario provarla.

Per verificare se SMTP-AUTH e TLS funzionano correttamente, eseguire il seguente comando:

    telnet mail.example.com 25

Una volta stabilita la connessione al server mail Postfix, digitare:

    ehlo mail.example.com

Se, tra tutte le righe, viene visualizzato anche questo, allora funziona correttamente. Digitare quit per uscire.

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

### Risoluzione problemi

Questa sezione descrive alcuni metodi comuni per determinare la cause dei problemi che potrebbero verificarsi.

#### Evitare l'uso di chroot

Il pacchetto postfix di Ubuntu viene installato, in modo predefinito e per ragioni di sicurezza, all'interno di un ambiente chroot.

Per terminate l'operazione chroot, localizzare la seguente riga nel file `/etc/postfix/master.cf`:

    smtp      inet  n       -       -       -       -       smtpd

e modicarlo come segue:

    smtp      inet  n       -       n       -       -       smtpd

È necessario riavviare Postfix affinché utilizzi la nuova configurazione. In un terminale, digitare:

    sudo /etc/init.d/postfix restart

#### File di registro

Postfix invia tutti i messaggi di registrazione in `/var/log/mail.log`. I messaggi di errore e gli avvisi possono andar persi nell'output della registrazione normale, per questo vengono anche registrati in `/var/log/mail.err` e `/var/log/mail.warn` rispettivamente.

Per visualizzare in tempo reale i messaggi che vengono registrati, usare il comando tail -f:

    tail -f /var/log/mail.err

Il livello di dettaglio delle registrazioni può essere incrementato. Di seguito vengono riportate alcune opzioni di configurazione per aumentare i dettagli di registrazione in alcune delle aree descritte precedentemente.

- Per aumentare la registrazione delle attività TLS, impostare l'opzione smtpd_tls_loglevel a un valore compreso tra 1 e 4.

      sudo postconf -e 'smtpd_tls_loglevel = 4'

- Se si riscontrano problemi nell'inviare o nel ricevere email da uno specifico dominio, è possibile aggiungere tale dominio al parametro debug_peer_list.

      sudo postconf -e 'debug_peer_list = problem.domain'

- È possibile incrementare il livello di registrazione di qualsiasi demone Postfix modificando il file `/etc/postfix/master.cf` e aggiungendo -v subito dopo la voce. Per esempio, modificare la voce smtp:

      smtp unix  - - - - - smtp -v

È importante notare che dopo aver apportato una delle modifiche alla registrazione, il processo Postfix deve essere riavviato affinché riconosca la nuova configurazione: sudo /etc/init.d/postfix reload

- Per incrementare il livello di informazioni registrate durante la risoluzione di problemi con SASL, è possibile impostare le seguenti opzioni nel file `/etc/dovecot/dovecot.conf`

      auth_debug=yes
      auth_debug_passwords=yes

Proprio come Postfix, modificando la configurazione di Dovecot il processo deve essere ricaricato: sudo /etc/init.d/dovecot reload.

Alcune delle opzioni precedenti possono aumentare drasticamente la quantità di informazioni inviata ai file di registrazione. Ricordarsi di ripristinare il livello di registrazione al valore predefinito dopo aver corretto il problema, quindi ricaricare il demone appropriato affinché la configurazione abbia effetto.

#### Riferimenti

Amministrare un server Postfix può essere un compito molto complicato e potrebbe essere necessario richiedere aiuto alla comunità.

Un ottimo punto per richiedere assistenza riguardo Postfix, e per partecipare nella comunità di Ubuntu Server, è il canale IRC #ubuntu-server su freenode. È anche possibile lasciare un messaggio in uno dei tanti forum.

Per informazioni dettagliate riguardo Postfix, gli sviluppatori Ubuntu consigliano il libro The Book of Postfix.

In fine, il sito web di Postfix dispone di ottima documentazione riguardo le diverse opzioni di configurazione.

Also, the Ubuntu Wiki Postifx page has more information.

Capitolo 14. Servizi email |  | Exim4