Configurare il server SMTP – Una guida step-by-step

On Luglio 31, 2024
10min read
Zakhar Yung Technical Content Writer @Mailtrap
Set up smtp server

Nel nostro articolo sui migliori server SMTP gratuiti, abbiamo discusso delle soluzioni basate su cloud per l’invio di email. Queste sono abbastanza comuni per progetti di tutte le dimensioni.

Ma cosa succede se non vuoi utilizzare i servizi di relay SMTP forniti da Gmail o dalle sue alternative? In questo articolo ti insegneremo come configurare un server SMTP locale e non dipendere da nessun altro per l’invio di email.

Hai davvero bisogno di un server SMTP?

Utilizzare un server SMTP in uscita è il metodo tradizionale per inviare email. Un server SMTP è un computer o un’app che invia email utilizzando il Simple Mail Transfer Protocol (SMTP).

Una soluzione alternativa è bypassare il server SMTP e inviare email direttamente al destinatario. Questo processo è noto come Direct Send e puoi utilizzarlo attraverso specifici programmi software per email.

Tuttavia, il Direct Send non è molto affidabile, ecco perché:

  • Non può essere utilizzato se il port 25 è bloccato dal tuo fornitore di servizi internet (ISP).
  • Non è adatto per l’invio di email di massa a causa di molteplici connessioni a molti server diversi.
  • Non può inviare email non personalizzate.
  • Può essere bloccato dai filtri email poiché le email non vengono inviate da un server SMTP regolare.

Quindi, mettiamo da parte il Direct Send e scopriamo perché qualcuno vorrebbe eseguire il proprio server SMTP.

Pro e contro di un server SMTP locale

ProsContro
Nessun limite giornaliero o orario sul numero di email in uscita.
Reportistica istantanea.
Privacy e controllo di tutte le tue email in uscita.
Nessun IP condiviso.
Gestire un server SMTP locale richiede tempo e impegno.
Il tasso di rimbalzo può aumentare del 20-30%.

Per riassumere il confronto, ecco il commento che abbiamo trovato su Reddit:

Commento su Reddit su quanto sia difficile configurare un server SMTP

Fonte: Reddit

Le soluzioni di invio basate su cloud come Email API/SMTP di Mailtrap offrono tutti i vantaggi elencati sopra. Tali soluzioni di terze parti sono più sicure offrendo comunque il controllo completo sulla tua infrastruttura email.

Tuttavia, hanno ancora il fattore di dipendenza. Quindi, se vuoi eliminare la dipendenza, puoi ovviamente configurare un server SMTP utilizzando software specifici.

Requisiti per un server SMTP locale

Non ci sono requisiti specifici finora. Tuttavia, dovresti essere preparato per quanto segue:

  • Alcuni ISP possono bloccare il port 25. Puoi risolvere questo problema contattando il tuo fornitore di servizi Internet e scoprendo quali limitazioni possono imporre. Inoltre, devi richiedere il server DNS corretto e il permesso per la risoluzione del record MX.
  • Per email di massa, probabilmente dovresti optare per un dominio e un indirizzo IP fisso associato a esso – questo aumenterà la tua resistenza ai filtri antispam.

Configurazione rapida del server SMTP

Ora, passiamo all’atto pratico. Poiché stai per configurare un server SMTP sul tuo computer, è fondamentale tenere presente il sistema operativo o OS. Quindi, spiegheremo come configurare un server SMTP locale su macOS, Windows e Linux.

Nota importante: se invii email di test all’indirizzo email reale, potresti non trovarle nella casella di posta in arrivo. Non dimenticare di controllare la tua cartella spam. I client di posta elettronica come Gmail, Yahoo, Outlook e altri sono sospettosi nei confronti dei nuovi mail transfer agent (MTA).

Assicurati di fare il backup del file di configurazione di Postfix prima di apportare qualsiasi modifica.

Come configurare un server SMTP locale su macOS

In passato, il server macOS era un’app potente che le persone usavano per gestire i servizi di rete e, come avrai indovinato, per configurare i server di posta. Utilizzava Postfix (un MTA) per impostazione predefinita.

Lentamente, Apple ha ridotto le funzionalità del server macOS e, nel 2022, lo ha interrotto completamente. L’app non sarà più aggiornata per adattarsi alle nuove versioni di macOS.

Le versioni esistenti del server macOS sono compatibili con Monterey e versioni precedenti di macOS. Ciò significa che puoi ancora usarlo per la configurazione del tuo server SMTP.

Nota: la configurazione può differire leggermente a seconda della versione del sistema operativo che stai utilizzando. Nel tutorial qui sotto, configureremo un server SMTP locale su macOS Big Sur. Per versioni precedenti o successive di macOS, fai riferimento al repository GitHub.

Postfix dovrebbe essere preinstallato sulla tua macchina. In caso contrario, puoi installarlo utilizzando un gestore di pacchetti di terze parti come Homebrew o MacPorts. Per Homebrew, esegui il seguente comando:

brew install postfix

Quindi crea un nuovo file di configurazione utilizzando il seguente codice:

sudo nano /etc/postfix/main.cf

Se Postfix è già installato, puoi accedervi eseguendo:

sudo vim /etc/postfix/main.cf

Indica a Postfix quale nome deve utilizzare per identificarsi agli altri server di posta. Aggiungi le seguenti righe:

myhostname = marco.esempio.com
myorigin = esempio.com

Se il tuo nome utente locale è Marco, la posta apparirà come proveniente da marco@esempio.com.

Ora è il momento di impostare il relay host. È la macchina che accetterà le email dopo l’autenticazione e le inoltrerà al server SMTP.

relayhost = mail.esempio.com:25

Il passaggio successivo è aggiungere l’IP della rete locale, definire i parametri TLS e abilitare SASL. Quest’ultimo richiede un file di configurazione aggiuntivo in cui viene memorizzata la password.

Crea il file sasl_passwd:

sudo vim /etc/postfix/sasl_passwd

Aggiungi la seguente riga:

mail.esempio.com:25 marco@esempio.com:<la tua password>

Salva il file con:

sudo postmap /etc/postfix/sasl_passwd

Ora torna al tuo file main.cf.

Il codice completo sarà simile a questo:

myhostname = mailserver.my.home
myorigin = $myhostname

mydestination = $myhostname, mailserver.my.home, localhost.localdomain, localhost
relayhost = mail.esempio.com:25
mynetworks = 127.0.0.0/8, [::1]/128

smtpd_client_restrictions = permit_mynetworks permit_sasl_authenticated permit
recipient_delimiter = +
tls_random_source = dev:/dev/urandom
smtpd_tls_ciphers = medium

inet_interfaces = all
smtpd_use_tls=yes
smtpd_tls_cert_file=/etc/certs/mailserver.my.home.crt
smtpd_tls_key_file=/etc/ssl/private/mailserver.my.home.key
smtpd_tls_security_level=may

smtp_tls_CApath=/opt/homebrew/etc/ssl/
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated permit_inet_interfaces defer_unauth_destination
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps =  hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous

sender_canonical_maps = hash:/etc/postfix/sender_canonical

virtual_maps = hash:/etc/postfix/virtual

home_mailbox = Maildir/

sender_dependent_relayhost_maps = hash:/etc/postfix/relayhost_map

Ora dobbiamo impostare Postfix per essere eseguito automaticamente all’avvio e riavviarlo. Per questo, dobbiamo copiare il plist master di Postfix fuori dalla cartella di sistema (cartella ‘System’).

sudo cp /System/Library/LaunchDaemons/com.apple.postfix.master.plist /Library/LaunchDaemons/org.postfix.custom.plist 

Quindi dobbiamo eseguire:

sudo vi /Library/LaunchDaemons/org.postfix.custom.plist

Il valore Com.apple.postfix.master dovrebbe essere sostituito con org.postfix.custom.

Ora dovremmo rimuovere queste righe per evitare di uscire dopo 60s:

<string>-e</string>
<string>60</string>

e aggiungere queste prima di </dict>

<key>KeepAlive</key>
<true/>
<key>RunAtLoad</key>
<true/>

È ora di rilanciare il Daemon

sudo launchctl unload /Library/LaunchDaemons/org.postfix.custom.plist
sudo launchctl load /Library/LaunchDaemons/org.postfix.custom.plist

e verificare se è stato avviato.

sudo launchctl list | grep org.postfix

Quindi puoi controllare il port 25 di ascolto

sudo lsof -i -P | grep LISTEN 

e controllare il log.

log stream --predicate  '(process == "smtpd") || (process == "smtp")' --info

Come configurare un server SMTP su Linux

La maggior parte delle versioni di Linux viene fornita con le due implementazioni SMTP più comuni: Sendmail e Postfix. Sendmail ha un design piuttosto complesso e un’architettura meno sicura; ecco perché abbiamo scelto di nuovo Postfix.

Installazione

Se non hai Postfix sulla tua macchina, dovrai installarlo. Inoltre, avrai bisogno del pacchetto mailutils, che include i programmi necessari affinché Postfix funzioni:

sudo apt install mailutils postfix

Nella finestra di configurazione di Postfix, dovrai scegliere la configurazione di posta Internet Site. Infine, dovrai specificare il nome di sistema della posta. Dovrebbe essere lo stesso del nome che hai assegnato al nome di dominio che punta al tuo server. Usiamo esempio.com.

Configurazione

Ora, configuriamo Postfix per elaborare le richieste di invio di email da localhost. Per questo, devi modificare il file di configurazione principale main.cf:

sudo nano /etc/postfix/main.cf

Scorri verso il basso fino alla riga inet_interfaces = all e sostituiscila con inet_interfaces = loopback-only. Questo dirà a Postfix di accettare le email in arrivo solo su localhost.

Inoltre, devi modificare mydestination, che specifica l’elenco dei domini. Dovrebbe apparire così:

mydestination = $myhostname, localhost.$esempio.com, $esempio.com

Salva il file e riavvia Postfix.

sudo systemctl restart postfix

Infine, prova a inviare una email di test.

echo "Corpo dell'email di prova" | mail -s "Oggetto dell'email di prova" indirizzo_email_del_destinatario

Come configurare un server di relay SMTP locale su Windows

Per configurare il server SMTP su Windows, hai due opzioni principali:

  • Utilizzare opzioni software come MailEnable, Apache James o hMailServer. In questo tutorial, includeremo i passaggi per hMailServer poiché è l’opzione più popolare;
  • Utilizzare i servizi di Internet Information Services (IIS) su BizTalk Server o altri server con IIS installato.

Installazione utilizzando hMailServer

Scarica l’ultima versione di hMailServer e installala. All’inizio dell’installazione, devi prestare attenzione ai seguenti punti:

  • Nella finestra Select Components (seleziona componenti), assicurati che sia scelta l’installazione completa. I componenti Server e Administrative devono essere selezionati.
  • Nella finestra Select database server type (seleziona tipo di database server), seleziona il motore di database integrato.
  • Nella finestra hMailServer Security, crea una password per l’utente predefinito.

Una volta installato, è ora di eseguire e configurare hMailServer.

  • Fai clic su ‘Connect’ nella finestra di avvio e inserisci la password che hai impostato durante l’installazione.
  • Fai clic su ‘Add domain’ e inserisci il nome del tuo dominio nel campo corrispondente. Puoi utilizzare un nome di dominio fittizio poiché quello reale non è richiesto per inviare email. Ma, in tal caso, assicurati che il dominio fittizio non esista realmente. Fai clic su ‘Save’ e vedrai il tuo dominio creato nella scheda di sinistra.
  • Seleziona la cartella ‘Accounts’ nella scheda di sinistra e fai clic su ‘Add…’ per configurarne uno. Tutto ciò che devi fare qui è inserire un nome nel campo ‘Address’. Questo configurerà il tuo indirizzo email. Facoltativamente, puoi specificare una password. Fai clic su ‘Save’ e vai su ‘Settings’ nella scheda di sinistra.
  • Espandi il thread ‘Settings’ e seleziona ‘Protocols’. Deseleziona POP3 e IMAP. Per ulteriori informazioni su questi protocolli, leggi il nostro articolo di confronto su IMAP vs POP3 vs SMTP. Quindi, fai clic su ‘Save’.
  • Ora, seleziona ‘Advanced’ nel thread ‘Settings’ e inserisci localhost nel campo ‘Default domain’ nella scheda di destra. Fai clic su ‘Save’. Per finire con le impostazioni avanzate, seleziona ‘Auto-ban’ e deseleziona la casella ‘Enabled’. Fai clic su ‘Save’.
  • Alla fine, espandi il thread ‘Utilities’ e seleziona ‘Diagnostics’. Seleziona il tuo dominio per eseguire i test e fai clic su ‘Start’. Non siamo interessati a tutti i test, solo a ‘Collect server details’ e ‘Test outbound port’. Questi dovrebbero essere contrassegnati in verde.

Ecco fatto. Ora puoi inviare la tua email di test. Questo può essere fatto con PowerShell – ed è veloce e facile. Per ulteriori informazioni, leggi il nostro articolo su invio di email da PowerShell. Esegui la seguente riga (non dimenticare di inserire i tuoi dati):

Send-MailMessage -To "<indirizzo email del destinatario>" -From "<tuo indirizzo email>"  -Subject "Oggetto della tua email" -Body "Testo del corpo della tua email" -Credential "<tuo nome utente>" -SmtpServer "127.0.0.1" -Port 25

Nella finestra pop-up, dovrai inserire la tua password e poi avrai finito.

Installazione utilizzando IIS

La configurazione del relay SMTP con IIS richiede qualsiasi versione di Windows Server. Suddivideremo il processo di installazione generale. Per i dettagli sulla tua versione specifica, fai riferimento alla documentazione Microsoft.

Per installare il server SMTP, dovrai completare i seguenti passaggi:

  • Accedi al tuo ‘Server Manager’ e seleziona ‘Dashboard’ nella barra di navigazione a sinistra;
  • Scegli ‘Add roles and features’ per avviare il wizard. Questo ti permetterà di estendere la funzionalità del server e configurarlo per eseguire compiti specifici;
  • Vedrai la finestra ‘Before you begin’ che include informazioni importanti sull’installazione. Premi ‘Next’;
  • Scegli ‘Role-based or feature-based installation’ e premi ‘Next’ per continuare con il processo di configurazione;
  • Il passaggio successivo è selezionare il server che desideri utilizzare per l’installazione SMTP. In questa fase, puoi selezionare i server che hai aggiunto in precedenza. Un server locale è l’opzione predefinita qui;
  • In ‘Server roles’ puoi premere ‘Next’ senza scegliere alcuna opzione;
  • La scheda ‘Features’ è il luogo in cui selezioniamo il server SMTP. Potrebbe essere richiesto di configurare funzionalità aggiuntive del server. Fai clic su ‘Next’;
  • Una volta fatto ciò, vedrai la finestra di conferma. Contrassegna ‘Restart the destination server automatically if required’ per assicurarti che il server si riavvii dopo l’installazione. Questo avvierà l’installazione. Premi ‘Close’ quando il processo è terminato.

Dopo l’installazione, è necessario configurare il server virtuale SMTP. Per questo, abbiamo bisogno di IIS 6.0 Manager.

  • Il primo passo è aprire il gestore IIS. Può essere fatto cercando inetmgr6.exe in Start o accedendo a Server Manager e scegliendo ‘IIS Manager’ dal tab Tools;
  • Espandi il nome del computer per avere una visualizzazione ad albero del server. Fai clic con il pulsante destro del mouse su ‘SMTP Virtual Server #1’ e scegli ‘Properties’;
  • Scegli il pulsante ‘Relay’ nella scheda Access per modificare le impostazioni di relay del tuo server SMTP;
  • Il passaggio successivo è scegliere gli indirizzi IP che saranno autorizzati a inoltrare tramite questo server SMTP. Per concedere l’accesso solo al tuo computer, premi ‘Add’, digita ‘127.0.0.1’ e premi ‘OK’. Per aggiungere altri computer, dovrai inserire i loro indirizzi IP. Contrassegna ‘Enable logging’ per ricevere registrazioni dei messaggi di posta per una facile risoluzione dei problemi;
  • Vai alla scheda Delivery, seleziona ‘Outbound Security’ e scegli tra i metodi di autenticazione. Hai quattro opzioni: accesso anonimo, autenticazione di base, autenticazione integrata di Windows e crittografia TLS. Se stai utilizzando il server per scopi di test, è consigliato utilizzare l’accesso anonimo per garantire che la configurazione non fallisca il comando AUTH;
  • Nella stessa scheda, scegli ‘Outbound connections’. La porta TCP o SMTP predefinita è 25. Dovresti assicurarti che non sia bloccata. Se utilizzi qualsiasi altra porta, dovresti verificare se è aperta all’interno del tuo firewall;
  • Ora seleziona ‘Advanced’ per espandere le opzioni avanzate del tuo server virtuale SMTP. Tipicamente, i Fully Qualified Domain Names saranno elencati qui. Dovresti lasciare vuoto il campo Smart Host. Tieni presente che alcuni fornitori di rete potrebbero richiedere lo Smart Host – un server che gestirà la consegna;
  • Premi ‘OK’ e riavvia il server per applicare le impostazioni.

Una volta completati questi passaggi, dovresti testare le impostazioni con Telnet. Se riesci a inviare email con successo, significa che hai un server email SMTP funzionante.

È un server SMTP buono per i test?

Nella maggior parte dei casi, le persone configurano server SMTP locali per scopi di test. Se stai sviluppando un’app che invierà email, dovrai testare questa funzione, e un vero server SMTP in esecuzione sulla tua macchina locale potrebbe sembrare una buona opzione. Ma, lo è davvero?

Da una parte, installare e configurare un server SMTP locale non è problematico. Tuttavia, c’è una soluzione molto migliore.

Mailtrap è una piattaforma di Email Delivery che soddisfa tutte le tue esigenze legate alle email. Ti permette di testare, inviare e controllare la tua infrastruttura email attraverso una singola piattaforma.

Invece di configurazioni lunghe del server SMTP locale, puoi utilizzare Email Testing di Mailtrap – una sandbox per email con un ambiente sicuro per testare, ispezionare e debuggare le email. Tutto questo può essere fatto in staging, il che significa che la tua app può inviare un’email, ma non sarà consegnata al destinatario effettivo.

Invece, l’email di test andrà alla casella di posta della Sandbox. Pertanto, non ci sono rischi di spamming agli utenti.

Dalla casella di posta, è possibile convalidare l’HTML/CSS della tua email e vedere rapidamente i risultati dell’analisi spam verificati dal filtro Apache SpamAssassin.

Email Testing di Mailtrap - Pagina dell'analisi dello spam

Il processo di installazione è semplice. Tutto quello che devi fare è aggiornare le impostazioni SMTP con le credenziali pertinenti:

  • Host: sandbox.smtp.mailtrap.io
  • Port: 25 o 465 o 587 o 2525
  • Nome utente: unico per ogni casella di posta
  • Password: unica per ogni casella di posta

In alternativa, puoi copiare e incollare un frammento di codice pronto per l’uso che appare una volta selezionata la lingua pertinente dal menu a discesa.

Integrazione API di Email Testing di Mailtrap

Quando la tua app entra in produzione, puoi utilizzare Email API/SMTP di Mailtrap per raggiungere le caselle di posta dei destinatari. È un’infrastruttura email che offre alti tassi di deliverability grazie al suo design.

A differenza del server SMTP locale, forniamo record DNS per i protocolli di autenticazione SPF, DKIM e DMARC. Eseguiamo anche controlli di sicurezza per la massima protezione e supportiamo connessioni crittografate.

Una volta inviate le email, Email API/SMTP ti consentirà di accedere a statistiche molto dettagliate e utili.

Concludendo

Gestire un server di posta locale può a volte essere una seccatura. È richiesta una grande quantità di conoscenze e impegno per ottenere una buona deliverability delle email utilizzando il proprio server SMTP. Ecco perché ti consigliamo di scegliere un’API e un servizio SMTP come Email API/SMTP di Mailtrap.

Un server SMTP locale è forse buono per scopi di test, ma Email Testing di Mailtrap, o altri strumenti di test delle email, faranno un lavoro migliore.

Quindi, hai davvero bisogno di un server SMTP locale? Solo tu puoi rispondere a questa domanda. Buona fortuna!

Article by Zakhar Yung Technical Content Writer @Mailtrap