L’autore ha selezionato il fondo gratuito e Open Source per ricevere una donazione come parte del programma Write for DOnations.
Introduzione
Postfix è un agente di trasferimento di posta (MTA), un’applicazione utilizzata per inviare e ricevere e-mail. Può essere configurato in modo che possa essere utilizzato per inviare e-mail solo dall’applicazione locale., Ciò è utile in situazioni in cui devi inviare regolarmente notifiche e-mail dalle tue app o semplicemente avere un sacco di traffico in uscita che un fornitore di servizi di posta elettronica di terze parti non consentirà. È anche un’alternativa più leggera all’esecuzione di un server SMTP completo, pur mantenendo la funzionalità richiesta.
In questo tutorial, installerai e configurerai Postfix come server SMTP di sola invio. Potrai anche richiedere certificati TLS gratuiti da Let’s Encrypt per il tuo dominio e crittografare le e-mail in uscita che li utilizzano.
Prerequisiti
- Una Ubuntu 18.,04 server impostato con la configurazione iniziale del server con Ubuntu 18.04, compresa la creazione di un utente non root sudo.
- Un nome di dominio completamente registrato. Questo tutorial utilizzerà
your_domain
in tutto. È possibile acquistare un nome di dominio su Namecheap, ottenere uno gratuitamente su Freenom, o utilizzare il registrar di dominio di vostra scelta. - Un record DNS con
your_domain
che punta all’indirizzo IP pubblico del server. Puoi seguire questa introduzione a DigitalOcean DNS per i dettagli su come aggiungerli.,
Nota: il nome host del server e il nome del Droplet devono corrispondere ayour_domain
, poiché DigitalOcean imposta automaticamente i record PTR per l’indirizzo IP del Droplet in base al suo nome.
È possibile verificare il nome host del server digitando hostname
al prompt dei comandi. L’output deve corrispondere al nome che hai dato alla Droplet quando è stata creata.
Passo 1 — Installazione di Postfix
In questa fase, si installa Postfix., Il modo più veloce è installare il pacchettomailutils
, che raggruppa Postfix con alcuni programmi aggiuntivi che utilizzerai per testare l’invio di e-mail.
in Primo luogo, aggiornare il database dei pacchetti:
- sudo apt update
Quindi, installare Postfix eseguendo il seguente comando:
- sudo apt install mailutils
verso la fine del processo di installazione, si aprirà la finestra di configurazione di Postfix:
L’opzione predefinita è Internet Site
., Questa è l’opzione consigliata per il tuo caso d’uso, quindi premi TAB
e poi ENTER
. Se viene visualizzato solo il testo della descrizione, premereTAB
per selezionareOK
, quindiENTER
.,
Se non viene visualizzata automaticamente, eseguire il seguente comando per avviarlo:
- sudo dpkg-reconfigure postfix
Dopo di che, si otterrà un’altra configurazione prompt per quanto riguarda il Sistema di posta elettronica:
Il Sistema di posta elettronica nome deve essere lo stesso come il nome che hai assegnato al tuo server quando stavamo creando. Quando hai finito, premiTAB
, seguito daENTER
.
Ora avete installato Postfix e siete pronti per iniziare a configurarlo.,
Passo 2 — Configurazione di Postfix
In questo passaggio, configurerai Postfix per inviare e ricevere email solo dal server su cui è in esecuzione, ovvero dalocalhost
.
Affinché ciò accada, Postfix deve essere configurato per l’ascolto solo sull’interfaccia di loopback, l’interfaccia di rete virtuale che il server utilizza per comunicare internamente. Per apportare le modifiche, è necessario modificare il file di configurazione Postfix principale chiamato main.cf
, memorizzato in etc/postfix
.,
Aprire il file per la modifica utilizzando il vostro editor di testo preferito:
- sudo nano /etc/postfix/main.cf
Trovare le seguenti righe:
. . .mailbox_size_limit = 0recipient_delimiter = +inet_interfaces = all. . .
Impostare il valore del tag inet_interfaces
impostazione di loopback-only
:
. . .mailbox_size_limit = 0recipient_delimiter = +inet_interfaces = loopback-only. . .
un’Altra direttiva devi modificare è mydestination
, che viene utilizzato per specificare l’elenco di domini che vengono erogati via local_transport
e-mail di consegna di trasporto., Per impostazione predefinita, i valori sono simili a questi:
. . .mydestination = $myhostname, your_domain, localhost.com, , localhost. . .
Modificare la riga simile a questa:
. . .mydestination = localhost.$mydomain, localhost, $myhostname. . .
Se il vostro dominio è in realtà un sottodominio, e voi volete i messaggi di posta elettronica a guardare come se fossero stati inviati dal dominio principale, è possibile aggiungere la seguente riga alla fine del main.cf
:
...masquerade_domains = your_main_domain
L’impostazione facoltativamasquerade_domains
specifica per quali domini la parte del sottodominio verrà rimossa nell’indirizzo email.
Quando hai finito, salva e chiudi il file.
Nota: se stai ospitando più domini su un singolo server, anche gli altri domini possono essere passati a Postfix utilizzando la direttivamydestination
.
Quindi, riavvia Postfix eseguendo il seguente comando:
- sudo systemctl restart postfix
Hai configurato Postfix per inviare solo e-mail dal tuo server., Ora lo proverai inviando un messaggio di esempio a un indirizzo email.
Fase 3 — Collaudo il Server SMTP
In questo passaggio, potrai verificare se Postfix può inviare e-mail a un account di posta esterno utilizzando il mail
comando, che fa parte del mailutils
pacchetto installato nel primo passaggio.
Per inviare un’e-mail di prova, eseguire il seguente comando:
- echo "This is the body of the email" | mail -s "This is the subject line" your_email_address
È possibile modificare il corpo e l’oggetto dell’e-mail a proprio piacimento., Ricordarsi di sostituire your_email_address
con un indirizzo email valido a cui è possibile accedere.
Ora, controlla l’indirizzo email a cui hai inviato questo messaggio. Dovresti vedere il messaggio nella tua casella di posta. Se non è lì, controlla la tua cartella spam. A questo punto, tutte le email inviate sono in chiaro, il che rende i fornitori di servizi pensano che sia probabile spam. Potrai impostare la crittografia più tardi, nel passaggio 5.,
Se si riceve un errore dal comando mail
o non si riceve un messaggio dopo periodi di tempo prolungati, verificare che la configurazione Postfix modificata sia valida e che il nome del server e il nome host siano impostati sul dominio.
Si noti che con questa configurazione, l’indirizzo nel campoFrom
per le email di test inviate sarà sotto forma diyour_user_name@your_domain
, doveyour_user_name
è il nome utente dell’utente del server con cui è stato eseguito il comando.,
Ora hai inviato un’e-mail dal tuo server e verificato che sia stata ricevuta con successo. Nel passaggio successivo, verrà impostato l’inoltro e-mail per root
.
Passo 4 — Inoltro della posta di sistema
In questo passaggio, si imposta l’inoltro e-mail per l’utenteroot
, in modo che i messaggi generati dal sistema inviati sul server vengano inoltrati a un indirizzo e-mail esterno.
Il file /etc/aliases
contiene un elenco di nomi alternativi per i destinatari delle e-mail., Aprilo per la modifica:
- sudo nano /etc/aliases
Nel suo stato predefinito, si presenta così:
# See man 5 aliases for formatpostmaster: root
L’unica direttiva presente specifica che le email generate dal sistema vengono inviate a root
.
Aggiungi la seguente riga alla fine del file:
...root: your_email_address
Con questa riga, specifichi che le email inviate aroot
finiscono per essere inoltrate a un indirizzo email. Ricordati di sostituire your_email_address
con il tuo indirizzo email personale., Quando hai finito, salva e chiudi il file.
Affinché la modifica abbia effetto, eseguire il seguente comando:
- sudo newaliases
L’esecuzione dinewaliases
creerà un database di alias utilizzati dal comandomail
, che sono presi dal file di configurazione appena modificato.
Verifica che l’invio di email aroot
funzioni eseguendo:
- echo "This is the body of the email" | mail -s "This is the subject line" root
Dovresti ricevere l’email al tuo indirizzo email. Se non è lì, controlla la tua cartella spam.,
In questo passaggio, hai impostato l’inoltro dei messaggi generati dal sistema al tuo indirizzo email. Potrai ora attivare la crittografia dei messaggi, in modo che tutte le email inviate dal server sono immuni da manomissioni in transito e saranno visti come più legittimo.
Passo 5 — Abilitazione della crittografia SMTP
Ora abiliterai la crittografia SMTP richiedendo un certificato TLS gratuito da Let’s Encrypt per il tuo dominio (usando Certbot) e configurando Postfix per usarlo quando invii messaggi.
Ubuntu include Certbot nel loro repository di pacchetti predefinito, ma può accadere che non sia aggiornato., Invece, si aggiunge il repository ufficiale eseguendo il seguente comando:
- sudo add-apt-repository ppa:certbot/certbot
Premere ENTER
quando viene richiesto di accettare. Quindi, aggiornare la cache del gestore pacchetti del server:
- sudo apt update
Infine, installare l’ultima versione di Certbot:
- sudo apt install certbot -y
Come parte della configurazione iniziale del server nei prerequisiti, è stato installatoufw
, il firewall semplice. Dovrai configurarlo per consentire la porta HTTP80
, in modo che la verifica del dominio possa essere completata., Eseguire il seguente comando per attivarlo:
- sudo ufw allow 80
L’output sarà simile a questa:
OutputRule addedRule added (v6)
Ora che la porta è aperta, eseguire Certbot per ottenere un certificato:
- sudo certbot certonly --standalone --rsa-key-size 4096 --agree-tos --preferred-challenges http -d your_domain
Questo comando ordini Certbot per il rilascio di certificati con una chiave RSA di 4096 bit, per eseguire una temporanea standalone server web (--standalone
) per la verifica e il controllo tramite la porta 80
(--preferred-challenges http
)., Ricordati di sostituire your_domain
con il tuo dominio prima di eseguire il comando e inserisci il tuo indirizzo email quando richiesto.
L’output sarà simile a questo:
OutputSaving debug log to /var/log/letsencrypt/letsencrypt.logPlugins selected: Authenticator standalone, Installer NoneObtaining a new certificatePerforming the following challenges:http-01 challenge for `your_domain`Waiting for verification...Cleaning up challengesIMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/your_domain/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/your_domain/privkey.pem Your cert will expire on 2020-07-11. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Come scritto nelle note, il certificato e il file della chiave privata sono stati salvati sotto/etc/letsencrypt/live/your_domain
.
Ora che hai il tuo certificato, apri main.cf
per la modifica:
- sudo nano /etc/postfix/main.cf
Trova la seguente sezione:
Modificalo per assomigliare a questo, sostituendoyour_domain
con il tuo dominio dove necessario, che aggiornerà le tue impostazioni TLS per Postfix:
Una volta finito, salva e chiudi il file.
Applica le modifiche riavviando Postfix:
- sudo systemctl restart postfix
Ora, prova a inviare di nuovo un’email:
- echo "This is the body of an encrypted email" | mail -s "This is the subject line" your_email_address
Quindi, controlla l’indirizzo email che hai fornito. È possibile che il messaggio venga visualizzato immediatamente nella posta in arrivo, poiché i provider di posta elettronica sono molto più propensi a contrassegnare i messaggi non crittografati come spam.,
Puoi controllare le informazioni tecniche sul messaggio e-mail nel tuo client per vedere che il messaggio è effettivamente crittografato.
Conclusione
Ora hai un server di posta elettronica di solo invio, alimentato da Postfix. La crittografia di tutti i messaggi in uscita è un buon primo passo per i provider di posta elettronica non contrassegnare i messaggi come spam a titolo definitivo. Se lo stai facendo in uno scenario di sviluppo, questa misura dovrebbe essere sufficiente.,
Tuttavia, se il tuo caso d’uso è quello di inviare e-mail a potenziali utenti del sito (come e-mail di conferma per un’iscrizione alla bacheca), dovresti esaminare la creazione di record SPF, in modo che le e-mail del tuo server siano ancora più probabili essere considerate legittime.