Introduzione

Postfix è un noto Mail Transfer Agent (MTA) open source che può essere utilizzato per instradare e recapitare la posta elettronica su un sistema Linux. Si stima che circa il 25% dei server di posta pubblici su Internet esegua Postfix.

In questa guida, imparerai come installare e configurare Postfix su un server Ubuntu 20.04 LTS Focal Fossa. Quindi, testerai che Postfix è in grado di instradare correttamente la posta installando s-nail un Mail User Agent (MUA), noto anche come client di posta elettronica.

Questo tutorial serve per aiutarti a far funzionare Postfix rapidamente con solo alcune funzionalità di posta elettronica bare-bones. Entro la fine di questa guida non avrai un server di posta completo con tutte le funzionalità, ma avrai alcuni dei componenti fondamentali di tale configurazione per aiutarti a iniziare.

Prerequisiti

Per seguire questa guida, avrai bisogno di quanto segue:

  • Un server che esegue Ubuntu 20.04 LTS per funzionare come server di posta Postfix. Questo server dovrebbe avere un utente non root con privilegi sudo e un firewall configurato con UFW.
  • Un nome di dominio completo che punta al tuo server Ubuntu 20.04. Tieni presente che se prevedi di accedere alla posta da una posizione esterna, dovrai assicurarti di avere un record MX che punti anche al tuo server di posta.

Si noti che questo tutorial presuppone che si stia configurando un host con il nome FQDN di mail.example.com. Ove necessario, assicurarsi di modificare example.com o mail.example.com con il proprio nome di dominio completo.

Se desideri installare Postfix su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:

ssh [email protected]_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:

ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh [email protected]_DEL_SERVER -p PORTA

Installare Postfix

Postfix è incluso nei repository predefiniti di Ubuntu, quindi puoi installarlo con APT.

Per iniziare, aggiorna la cache apt dei pacchetti:

sudo apt update

Quindi installare il pacchetto postfix con il seguente comando. Si noti che qui passiamo la variabile ambientale DEBIAN_PRIORITY=low in questo comando di installazione. Ciò permetterà al processo di installazione di configurare alcune opzioni aggiuntive:

sudo DEBIAN_PRIORITY=low apt install postfix

Questo processo di installazione aprirà una serie di istruzioni interattive. Ai fini di questa esercitazione, utilizzare le seguenti informazioni per compilare i prompt:

  • General type of mail configuration?: Per questo, scegli Internet Site poiché corrisponde alle esigenze della nostra infrastruttura.
  • System mail name: questo è il dominio di base utilizzato per creare un indirizzo e-mail valido quando viene fornita solo la parte dell'account dell'indirizzo. Ad esempio, supponiamo che l'hostname del tuo server sia mail.example.com. Probabilmente vorrai impostare il nome della posta di sistema in questo modo example.com, così Postfix utilizzerà l'indirizzo [email protected].
  • Root and postmaster mail recipient: questo è l'account Linux a cui verrà inoltrata la posta indirizzata a [email protected] e [email protected]. Usa il tuo account principale per questo. In questo caso di esempio, noviello.
  • Other destinations to accept mail for: definisce le destinazioni di posta che questa istanza di Postfix accetterà. Se è necessario aggiungere altri domini che questo server sarà responsabile della ricezione, aggiungere quelli qui. Altrimenti, il valore predefinito sarà sufficiente.
  • Force synchronous updates on mail queue?: Poiché probabilmente stai utilizzando un filesystem con journal, seleziona No qui.
  • Local networks: questo è un elenco delle reti per le quali il server di posta è configurato per l'inoltro dei messaggi. L'impostazione predefinita funzionerà per la maggior parte degli scenari. Se scegli di modificarlo, assicurati di essere molto restrittivo per quanto riguarda la portata della rete.
  • Mailbox size limit: può essere utilizzato per limitare la dimensione dei messaggi. Impostandolo su 0 disabilita qualsiasi restrizione dimensionale.
  • Local address extension character: questo è il carattere che può essere utilizzato per separare la parte normale dell'indirizzo da un'estensione (utilizzato per creare alias dinamici). L'impostazione predefinita + funzionerà per questo tutorial.
  • Internet protocols to use: scegli se limitare la versione dell'IP supportata da Postfix. Ai fini di questa esercitazione, selezionare All.

Ad esempio, queste sono le impostazioni utilizzate in questa guida:

  • General type of mail configuration?: Sito Internet
  • System mail name: example.com (non mail.example.com)
  • Root and postmaster mail recipient: il nome utente del tuo account Linux principale (noviello nel mio caso)
  • Other destinations to accept mail for: $myhostname, example.com, mail.example.com, localhost.example.com, localhost
  • Force synchronous updates on mail queue?: No
  • Local networks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
  • Mailbox size limit: 0
  • Local address extension character: +
  • Internet protocols to use: All
Nota: se hai necessità di modificare queste impostazioni, puoi farlo digitando il comando: sudo dpkg-reconfigure postfix. I prompt verranno precompilati con le risposte precedenti.

Al termine del processo di installazione, sei pronto per effettuare alcuni aggiornamenti alla configurazione di Postfix.

Modificare la configurazione di Postfix

Ora puoi regolare alcune impostazioni che il processo di installazione del pacchetto non ti ha richiesto. Molte delle impostazioni di configurazione di Postfix sono definite nel file /etc/postfix/main.cf. Anziché modificare direttamente questo file, è possibile utilizzare il comando Postfix postconf per eseguire query o impostare le impostazioni di configurazione.

Per iniziare, imposta la posizione per la casella di posta dell'utente Ubuntu non root. In questa guida, utilizzeremo il formato Maildir, che separa i messaggi in singoli file che vengono quindi spostati tra le directory in base all'azione dell'utente. L'opzione alternativa non trattata in questa guida è il formato mbox, che memorizza tutti i messaggi in un singolo file.

Impostare la variabile home_mailbox su Maildir/. Successivamente, creerai una struttura di directory con quel nome all'interno della home directory dell'utente. Configura digitando home_mailbox:

sudo postconf -e 'home_mailbox= Maildir/'

Successivamente, imposta la posizione della tabella virtual_alias_maps, che mappa gli account di posta elettronica arbitrari sugli account di sistema Linux. Eseguire il comando seguente, che mappa il percorso della tabella su un file di database hash denominato /etc/postfix/virtual:

sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'

Ora che hai definito la posizione del file delle mappe virtuali nel tuo file main.cf, puoi creare il file stesso e iniziare a mappare gli account e-mail sugli account utente sul tuo sistema Linux. Crea il file con il tuo editor di testo preferito; in questo esempio utilizzeremo nano:

sudo nano /etc/postfix/virtual

Elenca tutti gli indirizzi per i quali desideri accettare la posta elettronica, seguiti da uno spazio bianco e dall'utente Linux a cui desideri che la posta venga recapitata.

Ad esempio, se si desidera accettare e-mail all'indirizzo [email protected] e [email protected] e si desidera che tali e-mail vengano recapitate all'utente noviello di Linux, è possibile impostare il file in questo modo:

[email protected] noviello
[email protected] noviello
/etc/postfix/virtual

Dopo aver mappato tutti gli indirizzi sugli account server appropriati, salvare e chiudere il file. Se è stato utilizzato nano, fare premere CTRL + X, Y, quindi ENTER.

Applicare la mappatura digitando:

sudo postmap /etc/postfix/virtual

Riavvia il processo Postfix per essere sicuro che tutte le modifiche siano state applicate:

sudo systemctl restart postfix

Supponendo di aver avere installato e configurato un firewall con UFW. Questo bloccherà le connessioni esterne ai servizi sul tuo server per impostazione predefinita a meno che tali connessioni non siano esplicitamente consentite, quindi dovrai aggiungere una regola firewall per consentire un'eccezione per Postfix.

È possibile consentire le connessioni al servizio digitando:

sudo ufw allow Postfix

Con ciò Postfix è configurato e pronto ad accettare connessioni esterne. Tuttavia, non sei ancora pronto per provarlo con un client di posta. Prima di poter installare un client e utilizzarlo per interagire con la posta recapitata sul server, è necessario apportare alcune modifiche alla configurazione del server Ubuntu.

Installare il client di posta e inizializzare la struttura di Maildir

Per interagire con la posta consegnata, questo passaggio ti guiderà attraverso il processo di installazione del pacchetto s-nail. Questa è una variante ricca di funzionalità del client BSD xmail che può gestire correttamente il formato Maildir.

Prima di installare il client, tuttavia, sarebbe prudente assicurarsi che la variabile di ambiente MAIL sia impostata correttamente. s-nail cercherà questa variabile per capire dove trovare la posta per il tuo utente.

Per assicurarsi che la variabile MAIL è impostata a prescindere da come si accede all'account - sia per mezzo ssh, su, su -, o sudo, per esempio - è necessario impostare la variabile nel file /etc/bash.bashrc e aggiungerla a un file all'interno di /etc/profile.d per assicurarsi che sia impostato per tutti gli utenti per impostazione predefinita.

Per aggiungere la variabile a questi file, digitare:

echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh

Per leggere la variabile nella sessione corrente, eseguire il comando source del file /etc/profile.d/mail.sh:

source /etc/profile.d/mail.sh

Adesso installare il client di posta elettronica s-nail con APT:

sudo apt install s-nail

Prima di eseguire il client, è necessario regolare alcune impostazioni. Apri il file /etc/s-nail.rc nel tuo editor:

sudo nano /etc/s-nail.rc

Nella parte inferiore del file, aggiungi le seguenti opzioni:

. . .
set emptystart
set folder=Maildir
set record=+sent
/etc/s-nail.rc

Ecco cosa fanno queste righe:

  • set emptystart: consente al client di aprirsi anche con una casella di posta vuota.
  • set folder=Maildir: imposta la directory Maildir sulla variabile interna folder.
  • set record=+sent: crea un file mbox sent per archiviare la posta inviata all'interno di qualsiasi directory impostata come variabile folder, in questo caso Maildir.

Salva e chiudi il file al termine. Ora sei pronto per inizializzare la struttura Maildir del tuo sistema.

Un modo rapido per creare la struttura Maildir nella tua home directory è inviarti un'email con il comando s-nail. Poiché il file sent sarà disponibile solo dopo la creazione di Maildir, è necessario disabilitare la scrittura su di esso per questa e-mail iniziale utilizzando l'opzione -Snorecord.

Quindi invia l'e-mail inviando una stringa al comando s-nail. Modifica il comando per contrassegnare l'utente Linux come destinatario:

echo 'init' | s-nail -s 'init' -Snorecord root
Nota: potresti ottenere la seguente risposta come messaggio di output: Can't canonicalize "/home/noviello/Maildir". Questo è normale e può apparire solo quando si invia questo primo messaggio.

Verificare che la directory sia stata creata cercando la directory ~/Maildir:

ls -R ~/Maildir

Vedrai che la struttura della directory è stata creata e che un nuovo file di messaggi è nella directory ~/Maildir/new:

/home/noviello/Maildir/:
cur  new  tmp

/home/noviello/Maildir/cur:

/home/noviello/Maildir/new:
1590659140.V801I3ffaeM732608.mail.example.com

/home/noviello/Maildir/tmp:

Ora che la struttura della directory è stata creata, sei pronto per testare il client s-nail visualizzando il messaggio init che hai inviato e inviando un messaggio a un indirizzo email esterno.

Test del client

Per aprire il client, eseguire il comando s-nail:

s-nail

Nella tua console, vedrai una casella di posta in arrivo con il messaggio init in attesa:

s-nail version v14.9.15.  Type `?' for help
"/home/noviello/Maildir": 1 message 1 new
>N  1 [email protected]     2020-05-28 11:45   14/402   init

Premere ENTER per visualizzare il messaggio:

[-- Message  1 -- 14 lines, 402 bytes --]:
From [email protected] Thu May 28 11:45:40 2020
Date: Thu, 28 May 2020 11:45:40 +0200
To: [email protected]
Subject: init
Message-Id: <[email protected]>
From: [email protected]

init

È possibile tornare all'elenco dei messaggi digitando h, quindi ENTER:

h
>R  1 [email protected]     2020-05-28 11:45   14/402   init

Si noti che il messaggio ora ha uno stato di R, che indica che è stato letto.

Poiché questo messaggio non è molto utile, puoi eliminarlo premendo d, quindi ENTER:

d

Per tornare al terminale, digitare q e quindi ENTER:

q

Come test finale, controlla se s-nail è in grado di inviare correttamente i messaggi di posta elettronica. Per fare ciò, puoi reindirizzare il contenuto di un file di testo nel processo s-nail, come hai fatto con il messaggio init che hai inviato nel passaggio precedente.

Inizia scrivendo un messaggio di prova in un editor di testo:

nano ~/test_message

All'interno, inserisci alcuni messaggi che desideri inviare:

Hello,

This is a test.  Please confirm receipt!
~/test_message

Salvare e chiudere il file dopo aver scritto il messaggio.

Quindi, utilizzare il comando cat per reindirizzare il messaggio al processo s-nail. Puoi farlo con il seguente esempio, che utilizza queste opzioni:

  • -s: Definisce l'oggetto del messaggio di posta elettronica.
  • -r: Una modifica facoltativa al campo "From:" dell'e-mail. Per impostazione predefinita, l'utente Linux con cui si è effettuato l'accesso verrà utilizzato per popolare questo campo. L'opzione -r ti consente di sovrascriverlo con un indirizzo valido, come uno di quelli che hai definito nel file /etc/postfix/virtual. Nel comando seguente lo specifichiamo per meglio capire come utilizzarlo.

Inoltre, assicurati di inserire a un indirizzo email valido a cui hai accesso:

cat ~/test_message | s-nail -s 'Test email subject line' -r [email protected] [email protected]

Quindi, vai alla posta in arrivo per l'indirizzo e-mail a cui hai inviato il messaggio. Vedrai il tuo messaggio in attesa lì quasi immediatamente.

Nota: se il messaggio non è presente nella posta in arrivo, potrebbe essere stato recapitato nella cartella Spam.

Puoi visualizzare i messaggi inviati all'interno del tuo client s-nail. Riavvia il client interattivo:

s-nail

Dal client di posta elettronica, visualizzare i messaggi inviati digitando:

file +sent

Vedrai un output come questo:

+[/home/noviello/Maildir/]sent: 1 message 1 new
▸N  1 [email protected] 2020-05-28 11:47   12/302   Test email subject line 

Puoi gestire la posta inviata usando gli stessi comandi che usi per la posta in arrivo.

Conclusione

Ora hai Postfix configurato sul tuo server Ubuntu 20.04 LTS Focal Fossa. La gestione dei server di posta elettronica può essere un compito difficile per i nuovi amministratori di sistema, ma con questa configurazione, dovresti avere abbastanza funzionalità di posta elettronica MTA per iniziare.