I cookie permettono il funzionamento di alcuni servizi di questo sito. Utilizzando questi servizi, accetti l'utilizzo dei cookie da parte nostra. [ Leggi dettagli ]

Link sponsorizzati

Valutazione attuale: 5 / 5

Stella attivaStella attivaStella attivaStella attivaStella attiva
 

Introduzione a Postfix

Questa guida ti insegnerà come installare un mail server base.

Postfix è un demone di posta SMTP (categorizzato comunemente come Mail Transfer Agent, o MTA) attualmente compilabile ed eseguibile sui sistemi operativi AIX, BSD, HP-UX, IRIX, Linux, Mac OS X, Solaris, Tru64 UNIX e in genere su tutti i sistemi operativi Unix-like dotati di un compilatore ANSI C, librerie di sviluppo compatibili POSIX e che abbia anche le librerie necessarie per gestire i socket BSD. Postfix è estremamente flessibile. Fra i pregi ci sono l'enorme tolleranza e capacità di contenimento riguardo ai buffer overflow ed è capace di gestire grandi quantità di messaggi di posta elettronica. Attualmente è presente nella quasi totalità delle distribuzioni Linux e scelto come MTA di default su molte di queste. Postfix si struttura in diversi demoni che svolgono ognuno una sola funzione, ognuno dei quali eseguito con diritti minimi. Questo garantisce che qualsiasi bug o exploit che coinvolga uno dei "pezzi" di Postfix non comprometta l'intero sistema di delivery delle e-mail. Un solo processo deve avere diritti privilegiati, tutti gli altri hanno diritti minimi e spesso un file di configurazione proprio, pochi di questi ultimi hanno la capacità di scrivere sulle periferiche di memorizzazione di massa.

Mail server


Postfix ha diverse centinaia di parametri di configurazione. Se desideri amministrare un server mail che soddisfi in modo affidabile i requisiti richiesti da un'organizzazione aziendale, dovrai continuare ad approfondire il tema. Questa guida non sarà sufficiente a fare di te un amministratore di mail server, però, se vuoi acquisire familiarità con Postfix o configurare un mail server per te e un paio di amici, questo tutorial ti sarà di certo utile.

Introduzione a Dovecot

Non ho intenzione di spendere molte parole... Anche Dovecot è enorme (di seguito trovi il wiki per Dovecot 2) ma ti dico solo qualcosa su di esso. Dovecot è un Mail Delivery Agent progettato per garantire la sicurezza. 

L'obiettivo principale degli sviluppatori di Dovecot è la sicurezza. E' scritto con il linguaggio C per ottenere maggiori prestazioni relativamente alla velocità di esecuzione, e implementa diverse funzioni di controllo dei dati per incrementare la sicurezza.

Per memorizzare le email, Dovecot utilizza sia il formato standard mbox sia il formato Maildir. Questo lo rende compatibile con altri mail server concorrenti, facilitando la migrazione tra un sistema di posta e l'altro. Altri sistemi di posta spnp UW-IMAP e Courier.

Dovecot è semplice da configurare, visto che il file di configurazione è modificabile tramite un qualsiasi editor di testo. Questo programma ha il compito di fornire le e-mail agli utenti di posta. Questi ultimi possono corrispondere agli utenti del sistema operativo che ospita il servizio Dovecot (in tal caso si utilizza il database degli utenti /etc/passwd), oppure si possono creare utenti indipendenti dal sistema operativo e permettere a Dovecot di gestirli. In tal caso l'elenco dgli utenti con le relative password e informazioni può essere memorizzato in un database (quale MySQL e PostgreSQL) oppure in un servizio LDAP. 

Questo articolo spiega quasi ogni singolo passaggio da compiere nel dettaglio. Volendo puoi sorvolare sulle spiegazioni e passare avanti (a proprio rischio e pericolo).

Questa guida presuppone (ed è stata costruita utilizzando) la seguente configurazione:

  • Debian 7.8 wheezy x64_86
  • Postfix 2.9.6
  • Dovecot 2.1.7

Qualsiasi sistema operativo basato su Debian dovrebbe andare ma non posso dire lo stesso delle diverse versioni di Postfix e Dovecot, quindi se precedenti, aggiorna all'ultima versione prima di seguire i passi illustrati. 

Questa guida presuppone anche un paio di cose su di te:

  • Avere sottomano una confortevole linea di comando GNU/Linux con il layout generale e i principi di funzionamento di un sistema GNU/Linux come Debian;
  • Il sistema locale è un sistema GNU/Linux o ragionevolmente compatibile (MinGW, Cygwin, Mac OS X, * BSD);
  • Sapere come ottenere un rootshell sulla droplet;
  • Saper usare un editor di testo (ad esempio vim, nano, emacs, o editor standard, ndr) su Linux.

Per impostazione predefinita, i comandi saranno inseriti e i file modificati da un rootshell sul droplet. Le parti di comandi che devono essere personalizzati saranno evidenziati in rosso.

Installazione del sistema

I seguenti ingredienti sono necessari per rendere il tuo droplet pronto per essere un mail server:

  • Un dominio, supponiamo che è "mydomain.com";
  • Un hostname per il tuo server di posta, supponiamo "mail.mydomain.com";
  • Un certificato SSL valido per "mail.mydomain.com".


Configurazione certificato SSL

Per SSL ti serve un certificato e una chiave privata. In questo passo il certificato viene salvato nella cartella /etc/ssl/certs/mailcert.pem e la chiave viene salvata in /etc/ssl/private/mail.key. Assicurati che la chiave sia leggibile solo da root.

Se vuoi ottenere un certificato SSL, dovrai inviare una richiesta ad una Autorità di Certificazione universalmente riconosciuta e pagare per il rilascio del certificato.
Rivolgersi ad una Autorità di certificazione è fondamentale per evitare che il web-browser generi un allarme durante la visita delle nostre pagine crittografate raggiungibili tramite il protocollo HTTPS.

Nel caso in cui il certificato SSL venga utilizzato solo per scopi personali ed il suo utilizzo non coinvolga in nessun modo terzi, allora è possibile, e talvolta raccomandabile, utilizzare un certificato auto-firmato che si può ottenere in pochi minuti, gratuitamente ed in totale autonomia. L'esempio più calzante di tale situazione è costituito dal caso in cui siamo in fase di sviluppo di un sito web e questo preveda l'utilizzo di connessioni cifrate. Fintantoché non creeremo una versione pubblica del sito, non sarà conveniente acquistare un certificato ma ne potremo utilizzare uno auto-firmato tramite una Autorità di Certificazione fittizia che creeremo appositamente.

Lo stesso dicasi nel caso in cui abbiamo un sito web pubblico ma siamo gli unici ad accedere alle sue sezioni fornite tramite protocollo HTTPS o siamo gli unici ad accedere a servizi aggiuntivi (presenti sull'host che ospita il nostro sito) quali: FTP, server di posta elettronica o altri servizi che fanno utilizzo del protocollo TLS/SSL per trasferire dati in modo sicuro.
Inoltre, potremmo decidere di utilizzare i certificati auto-firmati per accedere a servizi offerti da server posti all'interno di una piccola LAN ad uso privato.

La creazione di un certificato di prova autofirmato è facile da eseguire:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/mail.key
-out /etc/ssl/certs/mailcert.pem

Puoi lasciare i valori di default semplicemente premendo Invio a tutte le domande poste. Non utilizzare questo certificato per siti in produzione!

La maggior parte delle autorità di certificazione richiedono l'invio della richiesta di certificato (CSR) per ottenere, dopo aver pagato il servizio, il certificato del sito più gli altri certificati della catena. Puoi generare il file con il seguente comando:

sudo openssl req -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/mail.key -out
mailcert.csr

Inserire le informazioni richieste correttamente, come segue (verificare presso l'AC le informazioni necessarie nel file CSR): 

Generating a 2048 bit RSA private key
.............................+++
................+++
writing new private key to 'mail.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: US
State or Province Name (full name) [Some-State]: Virginia
Locality Name (eg, city) []: Langley
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Network Services Association
Organizational Unit Name (eg, section) []: Infrastructure Services
Common Name (e.g. server FQDN or YOUR name) []: mail.mydomain.com
Email Address []: postmaster@mydomain.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Configurazione DNS

È necessario configurare il DNS con un record A che punti all'IP del mail server e un record MX che punta all'hostname del mail server.

Generalmente l'operazione non è complicata: recati nella zona DNS del tuo pannello di controllo, crea un nuovo dominio oppure seleziona uno già creato in passato, fai clic sul pulsante "Aggiungi record" e aggiungi un record A che punta all'indirizzo IP del mail server, poi aggiungi un record MX che punta al record A.

Verificare DNS

Attendi un massimo di 24 ore per la corretta propagazione delle zone DNS e successivamente, verifica la configurazione dei records DNS. Puoi controllare i cambiamenti con i comandi dig e host

[root@yourbase] ~# dig MX mydomain.com +short @ns1.provider.com
50 mail.mydomain.com.
[root@yourbase] ~# host mail.mydomain.com ns1.provider.com
Using domain server:
Name: ns1.provider.com
Address: 198.199.120.125#53
Aliases:

mail.mydomain.com has address 82.196.9.119

Postfix

Adesso installiamo Postfix per ricevere e inviare la posta per gli utenti locali.

L'MTA di default su Debian è Exim. Prima di tutto facciamo sparire Exim poi, dopo aver installato Postfix, dobbiamo fermarlo perché non vogliamo che sia in esecuzione mentre che lavoriamo.

aptitude remove exim4 && aptitude install postfix && postfix stop

Un piccolo promemoria: Postfix gestisce i suoi demoni da solo e non ha bisogno del sistema dei servizi (init.d). postfix start, postfix stop e postfix reload sono equivalenti a service postfix start, service postfix stop and service postfix reload.

Configurazione Postfix

Postfix ha due file di configurazione principali che risiedono in /etc/postfix: il primo, main.cf, riguarda i parametri del mail server inteso come l'intero ambiente Postfix quali ad esempio i domini di riferimento, come gestire lo smistamento delle e-mail, quali alias adottare, ecc. Il secondo, master.cf, invece riguarda il comportamento dei specifici demoni, ad esempio come gestire le code, su quali porte stare in ascolto, ecc. Quest'ultimo difficilmente necessiterà di essere modificato.

In primo luogo, configura il file master.cf (in /etc/postfix) in corrispondenza di submission inet n, come riportato di seguito:

submission inet n - - - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_wrappermode=no
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth

Poi passiamo al file main.cf. Inizieremo con una lavagna pulita qui - esegui cp /etc/postfix/main.cf /etc/postfix/main.cf.orig, se desideri salvare il file di configurazione di default (fai lo stesso /usr/share/postfix/main.cf.dist), quindi apri il file e cancella il suo contenuto oppure cancella il file main.cf e creane uno nuovo.

Inserisci il primo pezzo di informazioni (informazioni sul dominio che Postfix sta gestendo):

myhostname = mail.domain.com
myorigin = /etc/mailname
mydestination = mail.domain.com, domain.com, localhost, localhost.localdomain
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

In queste prime righe abbiamo impostato il nome host e l'origine di default (per convenzione Debian in /etc/mailname) che corrisponde a domain.com. Puoi indicare il nome in modo esplicito, se non disponi del file /etc/mailname. L'origine di default viene utilizzata per costruire l'indirizzo 'From' per gli utenti locali (@domain.com). mydestination indica i domini di destinazione che postfix accetta e lasciamo "relayhost" vuoto per disabilitare l'inoltro delle email(non ci occorre un server di posta fittizio che viene usato per inoltrare mail a un altro server smtp in grado di portarle a destinazione).

In teoria ad ogni utente locale del tuo server corrisponde una sola casella mail. Si possono però creare degli alias che corrispondano ad un particolare utente, un secondo indirizzo a cui inviare mail per quel dato user. Di default esiste il file /etc/aliases che contiene una lista di alias a sinistra e i rispettivi utenti ai quali appartengono a destra. In /etc/postfix/main.cf basta solo aggiungere:

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

Poi impostiamo SSL:

smtpd_tls_cert_file=/etc/ssl/certs/mailcert.pem
smtpd_tls_key_file=/etc/ssl/private/mail.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_security_level=may
smtpd_tls_protocols = !SSLv2, !SSLv3

Abbiamo indicato il file cert e la chiave per esso, abilitato TLS e impostato i file della cache. Poi rendiamo TLS opzionale, perché non ci è permesso fare richieste TLS a un server smtp pubblico per RFC2487. Vietiamo SSLv2 e SSLv3, in modo che solo TLSv1.0 sia consentito perchè garantisce una protezione più elevata (SSLv2 e SSLv3 sono obsoleti).

Un'altra impostazione che va bene come default ma deve essere specificato in modo esplicito è il localrecipientmaps:

local_recipient_maps = proxy:unix:passwd.byname $alias_maps

Il parametro local_recipient_maps specifica le tabelle di consultazione con tutti i nomi o gli indirizzi dei destinatari locali. Un indirizzo è locale quando il suo dominio corrisponde a $mydestination, $inet_interfaces o $proxy_interfaces. Se un nome utente o un indirizzo locale non è elencato in $local_recipient_maps, il server Postfix SMTP rifiuterà l'indirizzo con l'errore "User unknown in local recipient table".

Configurazione Alias

È possibile reindirizzare gli indirizzi contenuti in /etc/aliases a root o ad un utente specifico. Ecco come fare:

mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root

Se desideri reindirizzare tutto a uno specifico utente locale devi solo aggiungere la riga seguente:

root: yourname

Postfix risolverà l'intera catena di alias per te e reindirizzerà tutte le email a "yourname".  

Dopo aver aggiornato il file /etc/aliases, esegui il comando:

newaliases

per compilare il file del database Postfix utilizzato per la ricerca veloce.

Dovecot

Fai un respiro profondo, abbiamo quasi finito.

Installa i pacchetti necessari:

aptitude install dovecot-core dovecot-imapd

Dovresti farlo. Se desideri tutti i pacchetti di default, esegui:

aptitude install dovecot-common

A questo punto, vai in /etc/dovecot/dovecot.conf e cancella il file (questa volta la configurazione di default include una serie di file di configurazione subordinati in /etc/dovecot/conf.d che non vogliamo).

Ora inserisci la seguente configurazione:

disable_plaintext_auth = no
mail_privileged_group = mail
mail_location = mbox:~/mail:INBOX=/var/mail/%u
userdb {
driver = passwd
}
passdb {
args = %s
driver = pam
}
protocols = " imap"

La prima riga consente l'autenticazione in chiaro (l'autenticazione "in chiaro" sarà gestita attraverso il protocollo TLS), poi diciamo a Dovecot di utilizzare il gruppo di sistema "mail" per l'accesso alle caselle di posta locali, la cartella locale dove risiedono le caselle e-mail, utilizzare il sistema di autenticazione Unix per autenticare gli utenti e abilitare IMAP.

Se vuoi, puoi dire a Dovecot di aggiungere automaticamente il Cestino e la cartella Inviati a ciascuna casella postale:

protocol imap {
mail_plugins = " autocreate"
}
plugin {
autocreate = Trash
autocreate2 = Sent
autosubscribe = Trash
autosubscribe2 = Sent
}

Quindi, apriamo un socket che permette a Postfix di autenticarsi attraverso Dovecot:

service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0660
user = postfix
}
}

E infine aggiungiamo la configurazione SSL:

ssl=required
ssl_cert = </etc/ssl/certs/mailcert.pem
ssl_key = </etc/ssl/private/mail.key

Nota le parentesi angolari! Dicono a Dovecot di leggere da un file.

Fine

Salvare, chiudere tutti i file di configurazione ed eseguire:

newaliases

postfix start

service dovecot restart

Ultima cosa, verifica che i permessi alla cartella /var/mail siano 1777, in caso contrario imposta i corretti permessi:

chmod 1777 /var/mail

Abbiamo impostato questi permessi alla directory /mail per evitare che utenti ordinari cancellino o spostino i file appartenenti agli altri utenti, pur consentendo a chiunque di creare nuovi file e directory (sticky bit, lettera t all'ultimo posto).

Dovresti essere pronto a partire. Metti alla prova la tua configurazione con un client e-mail, ad esempio Mozilla Thunderbird. Dovresti essere in grado di inviare e ricevere mail da tutto il mondo e a tutto il mondo!

Continua

Verifica che l'invio delle e-mail sia funzionante:

~# mail email_destinatario@domain.tld
Subject: test email from postfix
this is a test
.
EOT

L'e-mail da "root@yourdomain.com" dovrebbe essere recapitata a breve a "email_destinatario@domain.tld" (utilizza un indirizzo email valido, ovviamente). Se l'email arriva, prova a rispondere e verifica la risposta (la ricezione potrebbe richiedere un minuto):

~# mail
Heirloom mailx version 12.5 6/20/10. Type ? for help.
"/var/mail/root": 1 message
>N 1 Your Name Wed Nov 13 23:45 41/1966 Re: test email from postf

E se premi il tasto Invio, verrà visualizzato il messaggio (quindi digita q e premi Invio per lasciare il client email).

Ricorda, se hai impostato il reindirizzamento delle e-mail ad un determinato utente, l'email spedita in risposta a root sarà recapitata a quell'utente.

La stessa cosa funziona con un client di posta elettronica locale. Aggiungi un nuovo utente di sistema:

~# adduser joe
Adding user `joe' ...
Adding new group `joe' (1001) ...
Adding new user `joe' (1001) with group `joe' ...
Creating home directory `/home/joe' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: Enter password here
Retype new UNIX password: Enter password here
passwd: password updated successfully
Changing the user information for joe
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y

La password inserita qui è la password da utilizzare per l'e-mail. Joe ora può utilizzare l'indirizzo joe@yourdomain.com con un client mail locale come Thunderbird. In Thunderbird, è sufficiente aggiungere un nuovo account (File -> Nuovo -> Account email esistente), inserire joe@yourdomain.com e la password nella finestra di dialogo.

Se il client e-mail non rileva automaticamente le impostazioni necessarie: il nome utente per la connessione IMAP è Joe, la porta è 143 e il metodo di autenticazione è password in chiaro via STARTTLS. Per SMTP è lo stesso ma porta 587.

Se qualcosa non funziona, verifica la presenza di messaggi di errore nel registro di sistema con la coda -n 50 /var/log/syslog e nel log mail con la coda -n 50 /var/log/mail.log.

Ho scritto e condiviso questo articolo su WORCOM, fallo anche tu. Invia ora un nuovo articolo!
Autore: Antonio Liggieri
Esperto di computer e in sicurezza informatica, webmaster, webdesigner, webdeveloper e webmarketer. Sono il fondatore di WORCOM. Amo l'informatica, le arti marziali e il bodybuilding.


Ho anche scritto:

Link sponsorizzati