Nel mondo dell'email, ci sono molte sfaccettature nel testing, ma uno dei test più semplici che puoi fare è semplicemente utilizzare telnet su un dato server SMTP. Questo controllo SMTP è utile per determinare se esistono o meno i problemi più basilari.
Il server è attivo?
C'è un firewall che blocca le comunicazioni?
Il server di posta consente il relay di un particolare dominio/indirizzo email?
Quali comandi SMTP supporta il server di posta?
Il server risponde con il nome host corretto?
La connessione funziona al di fuori di qualsiasi software o API di terze parti?
Tutte queste domande e altre possono essere risolte con un semplice test telnet.
Prima di iniziare, assicurati di aprire il nostro articolo complementare a questo post: Dove vengono inviati i messaggi di rimbalzo? in una nuova scheda in modo da poterlo leggere dopo aver finito con questo blog.
Come nota, i comandi utilizzati nei seguenti esempi (insieme ad altri comandi aggiuntivi) sono trattati nella sezione 4.1 di RFC 2821.
Come inviare un'email utilizzando Telnet?
Inviare email tramite telnet può aiutarti a identificare problemi di deliverability nella tua configurazione attuale.
Prima di inviare un'email utilizzando telnet, conferma che telnet sia installato e abilitato sul tuo computer. La maggior parte dei computer viene fornita con un client telnet preinstallato. Per quelle versioni di Windows che non lo hanno, uno può essere installato aprendo la sezione “Programmi e funzionalità” del pannello di controllo e selezionando “Attiva o disattiva le funzionalità di Windows”. Con questa finestra aperta, seleziona “client telnet” e poi clicca su OK.
Una volta verificato che un client telnet sia installato sul server, apri la finestra del terminale in cui inserirai i tuoi comandi di prompt. Su Windows, usa il tasto Windows + R, digita “cmd” e premi invio. Per gli utenti Mac, troverai l'icona del terminale aprendo Finder e cercando “Utility” nella pagina Applicazioni, oppure inserendo “terminal” nella funzione di ricerca del Launchpad.
Successivamente, dobbiamo trovare un server di posta a cui accedere. Per questo, avremo bisogno del record DNS MX per un dato dominio. Questo può essere trovato con il seguente comando (per questi esempi verrà utilizzato port25.com, ma qualsiasi dominio può essere sostituito):
Windows:
nslookup -type=mx port25.com
Risposta non autorevole:
port25.com MX preference = 100, mail exchanger = mail.port25.com
Linux:
nslookup -type=mx port25.com
Risposta non autorevole:
port25.com mail exchanger = 100 mail.port25.com.
SMTP utilizza uno dei tre porti — 25, 465 o 587, che Microsoft Outlook utilizza comunemente. Se il tuo relay SMTP utilizza un porto diverso da 25 come mostrato nell'esempio, utilizzerai il porto specificato dalla risposta del server di scambio di posta a nslookup. Puoi anche verificare il porto su cui si basa il tuo SMTP chiedendo al tuo amministratore o accedendo al server di scambio di posta e rivedendo i protocolli.
Successivamente abbiamo bisogno del DNS PTR per l'IP che andremo ad utilizzare. Prima di tutto dobbiamo sapere quale indirizzo IP l'internet vede come nostro. Per trovare quello possiamo usare un sito web come:
Con l'indirizzo IP esegui il seguente comando, dove A.B.C.D è l'indirizzo IP.
Windows:
nslookup -type=ptr A.B.C.D
Risposta non autorevole:
D.C.B.A.in-addr.arpa nome = server.example.com
Linux:
nslookup -type=ptr A.B.C.D
Risposta non autorevole:
D.C.B.A.in-addr.arpa nome = server.example.com
server.example.com è solo un esempio e i tuoi risultati saranno diversi.
Quindi ora che abbiamo il record MX per port25.com e il PTR per l'IP che andremo ad utilizzare, è tempo di accedere al server SMTP. Per farlo, usa il seguente comando:
telnet mail.port25.com 25
Qualcosa di simile a quanto segue dovrebbe ora essere visualizzato:
Cercando 69.63.149.30... Connesso a mail.port25.com (69.63.149.30). Il carattere di escape è '^]'. 220 mail.port25.com (PowerMTA(TM) v4.0) servizio ESMTP pronto
Se ricevi un messaggio di errore come “impossibile connettersi” a questo punto, o il numero di porta è corretto o il server di posta ha problemi.
Il primo comando che dobbiamo emettere al server di posta per il nostro tester di email SMTP è l'EHLO o HELO. Questo è un saluto di base che avvia la comunicazione tra il client telnet e il server SMTP. Viene anche passato il DNS PTR per l'indirizzo IP da cui ci stiamo connettendo come determinato in precedenza.
EHLO server.example.com
Qualcosa di simile a quanto segue dovrebbe essere restituito:
250-mail.port25.com dice ciao 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-CHUNKING 250-8BITMIME 250-XACK 250-XMRG 250-SIZE 54525952 250-VERP 250 DSN
Questo mostra i comandi SMTP che il server SMTP accetta. Non tutti i server SMTP supportano gli stessi set di comandi. Ad esempio, yahoo mostra solo i seguenti:
250-8BITMIME 250-SIZE 41943040 250 PIPELINING
E aol mostra solo uno con:
250 DSN
Il comando successivo che dobbiamo emettere è il comando MAIL FROM. Questo determina l'indirizzo a cui vengono inviati i rimbalzi. Questo non è lo stesso dell'intestazione da cui, che è l'indirizzo email mostrato in un client email.
MAIL FROM: <support@port25.com> 250 2.1.0 MAIL ok
Assicurati di utilizzare il nome di dominio corrispondente al dominio del tuo server di posta. Ad esempio, se il dominio della tua email è anycompany.com, vorrai usare you@anycompany.com invece di una email esterna come you@free-mail-provider.com. Variazioni nei nomi di dominio possono causare un messaggio di errore.
Ora che il comando MAIL FROM è stato inviato, possiamo inviare il comando RCPT TO . Questo comando dice al server di posta SMTP a chi deve essere inviato il messaggio. Questo può essere lo stesso o diverso dall'intestazione to, che è l'indirizzo email mostrato nel client email.
RCPT TO: <support@port25.com> 250 2.1.5 <support@port25.com> ok
Controlla di nuovo l'indirizzo del tuo destinatario prima di inviare il comando RCPT TO — un messaggio di errore visualizzato qui può indicare un destinatario email con errore di ortografia o bloccato.
L'ultimo comando da eseguire prima di iniziare il corpo del messaggio è il comando DATA. Questo comando fa sapere al server di posta SMTP che tutto il resto che sta per essere inviato è il corpo del messaggio (che contiene anche le intestazioni).
DATA 354 invia messaggio
È importante notare che se un server di posta supporta PIPELINING, come mail.port25.com, il server di posta SMTP potrebbe attendere fino a quando il comando DATA non viene emesso prima di rispondere a qualsiasi altro comando dopo l'EHLO/HELO. In questo caso, inserisci i comandi MAIL FROM, RCPT TO, e DATA prima di attendere una risposta.
Ora che il comando DATA è stato inviato possiamo iniziare a inviare i contenuti del messaggio. Questo inizia con le varie intestazioni. Al minimo, un messaggio dovrebbe contenere un to, da, oggetto e intestazione data. Le intestazioni inserite qui saranno mostrate all'utente nel proprio client email.
Da: "John Smith" <jsmith@port25.com> A: "Jane Doe" <jdoe@port25.com> Oggetto: messaggio di prova inviato da una sessione telnet manuale Data: Mer, 11 Mag 2011 16:19:57 -0400
Con le intestazioni impostate, ora aggiungiamo una riga vuota con un ritorno a capo (basta premere invio due volte) e poi iniziamo il corpo effettivo del messaggio.
Ciao Mondo, questo è un messaggio di prova inviato da una sessione telnet manuale. Cordiali saluti, amministratore SMTP
Con il messaggio completo, dobbiamo far sapere al server SMTP che abbiamo finito con il messaggio e vogliamo che il server di posta SMTP lo accetti. Questo si fa con un punto su una riga da solo. Se durante la stesura di un messaggio è necessario un punto su una riga da solo, è necessario mettere 2 punti, il primo che sfugge al secondo.
. 250 2.6.0 messaggio ricevuto
Se ricevi un messaggio di errore invece della notifica “ricevuto”, annota i dettagli pertinenti e contatta il tuo fornitore di email per ulteriori assistenza.
Infine, il comando QUIT viene inviato per chiudere la connessione:
QUIT 221 2.0.0 mail.port25.com dice addio
Con ciò, il server di posta ha ora accettato il messaggio per la consegna, il tuo test di invio email telnet è completo, e dovrebbe trovarsi nella casella di posta dell'indirizzo RCPT TO!!!
Qui ci sono tutti i comandi senza interruzione:
telnet mail.port25.com 25 Cercando 69.63.149.30... Connesso a mail.port25.com (69.63.149.30). Il carattere di escape è '^]'. 220 mail.port25.com (PowerMTA(TM) v4.0) servizio ESMTP pronto EHLO server.example.com 250-mail.port25.com dice ciao 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-CHUNKING 250-8BITMIME 250-XACK 250-XMRG 250-SIZE 54525952 250-VERP 250 DSN MAIL FROM: <support@port25.com> 250 2.1.0 MAIL ok RCPT TO: <support@port25.com> 250 2.1.5 <support@port25.com> ok DATA 354 invia messaggio Da: "John Smith" <jsmith@port25.com> A: "Jane Doe" <jdoe@port25.com> Oggetto: messaggio di prova inviato da una sessione telnet manuale Data: Mer, 11 Mag 2011 16:19:57 -0400 Ciao Mondo, questo è un messaggio di prova inviato da una sessione telnet manuale. Cordiali saluti, amministratore SMTP . 250 2.6.0 messaggio ricevuto QUIT 221 2.0.0 mail.port25.com dice addio
Inviare un'email utilizzando telnet ti consente di testare rapidamente le capacità di connessione a un costo inferiore rispetto a costosi strumenti diagnostici o software.
Come testare SMTP utilizzando l'autenticazione Telnet?
Ora che sai come controllare una connessione SMTP con telnet, discuteremo le procedure di autenticazione. L'autenticazione SMTP aiuta a prevenire che grandi quantità di spam raggiungano le caselle di posta dei lettori, anche se non tutti i server di scambio di posta lo richiedono.
La principale differenza nei protocolli di autenticazione moderni è la presenza di una codifica base64. Base64 converte i dati binari nel formato ASCII-testo richiesto dai server di posta per una trasmissione dati riuscita. È un modo per rappresentare le tue credenziali di accesso — una qualche combinazione di testo — in formato numerico che il computer può comprendere.
Puoi generare la tua base64 usando software o strumenti online gratuiti. Una volta che comunichi le informazioni al server di posta, esso confronta questi dati con i suoi record per determinare l'autenticazione.
Per testare l'autenticazione SMTP tramite telnet, completa i seguenti passaggi:
Apri il terminale e collegati al server di posta utilizzando il nome del server telnet e il comando di accesso — mail.port25.com nell'esempio sopra.
Saluta il server con EHLO o HELO, inserisci AUTH LOGIN e attendi la risposta del computer.
Inserisci il nome utente codificato in base64 e lascia che il server risponda.
Inserisci la password codificata in base64 e dovresti ricevere una risposta come “autenticazione riuscita”.
Procedi con MAIL FROM, RCPT TO, DATA e QUIT per inviare la tua email autenticata.