Utilizzare Telnet per testare le comunicazioni SMTP in server Exchange
È possibile usare Telnet per testare la comunicazione SMTP (Simple Mail Transfer Protocol) tra server di messaggistica. SMTP è il protocollo usato per inviare messaggi di posta elettronica da un server di messaggistica a un altro. L'uso di Telnet può essere utile se si verificano problemi durante l'invio o la ricezione di messaggi perché è possibile inviare manualmente comandi SMTP a un server di messaggistica. In cambio, il server risponderà con risposte che verrebbero restituite in una connessione tipica. Questi risultati possono talvolta aiutare a capire perché non è possibile inviare o ricevere messaggi.
È possibile usare Telnet per testare la comunicazione SMTP con:
Testare il flusso di posta elettronica da Internet all'organizzazione di Exchange.
Testare il flusso di posta elettronica da Exchange a un altro server di messaggistica su Internet.
Consiglio
Si sapeva che, invece di usare Telnet per testare la connettività SMTP, è possibile usare Microsoft Remote Connectivity Analyzer all'indirizzo https://testconnectivity.microsoft.com/? Con l'analizzatore connettività remota è possibile scegliere il test di connettività da eseguire, in questo caso smtp in ingresso Email e seguire le istruzioni visualizzate. Verranno illustrate le informazioni necessarie per l'immissione, verrà eseguito il test per l'utente e quindi verranno restituiti i risultati. Provalo!
Che cosa è necessario sapere prima di iniziare?
Tempo stimato per il completamento: 15 minuti
Le autorizzazioni di Exchange non sono applicabili alle procedure descritte in questo argomento. Queste procedure vengono eseguite nel sistema operativo del server Exchange o di un computer client.
Questo argomento illustra come usare Telnet Client, incluso in Windows. I client Telnet di terze parti potrebbero richiedere una sintassi diversa da quella illustrata in questo argomento.
La procedura descritta in questo argomento illustra come connettersi a un server con connessione Internet che consente connessioni anonime tramite la porta TCP 25. Se si sta tentando di connettersi a questo server da Internet, è necessario assicurarsi che il server Exchange sia raggiungibile da Internet sulla porta TCP 25. Analogamente, se si sta tentando di raggiungere un server su Internet dal server Exchange, è necessario assicurarsi che il server Exchange possa aprire una connessione a Internet sulla porta TCP 25.
Si potrebbero notare alcuni connettori di ricezione che usano la porta TCP 2525. Si tratta di connettori di ricezione interni e non vengono usati per accettare connessioni SMTP anonime.
Se si sta testando una connessione in un server di messaggistica remota, è necessario eseguire i passaggi descritti in questo argomento nel server Exchange. I server di messaggistica remota vengono spesso configurati per assicurarsi che l'indirizzo IP da cui proviene la connessione SMTP corrisponda al dominio nell'indirizzo di posta elettronica del mittente.
Per informazioni sui tasti di scelta rapida che è possibile utilizzare con le procedure in questo argomento, vedere Tasti di scelta rapida nell'interfaccia di amministrazione di Exchange.
Consiglio
Problemi? È possibile richiedere supporto nei forum di Exchange. I forum sono disponibili sui seguenti siti: Exchange Server, Exchange Online o Exchange Online Protection.
Passaggio 1: Installare il client Telnet nel computer
Nella maggior parte delle versioni di Windows è necessario installare il client Telnet prima di poterlo usare. Per installarlo, vedere Installare Client Telnet.
Passaggio 2: Trovare il nome di dominio completo o l'indirizzo IP del server SMTP di destinazione
Per connettersi a un server SMTP usando Telnet sulla porta 25, è necessario usare il nome di dominio completo (FQDN), ad esempio mail.contoso.com, o l'indirizzo IP del server SMTP. Se non si conosce l'FQDN o l'indirizzo IP, è possibile usare lo strumento da riga di comando Nslookup per trovare il record MX per il dominio di destinazione.
Nota
I criteri di rete potrebbero impedire l'uso dello strumento Nslookup per eseguire query sui server DNS pubblici su Internet. In alternativa, è possibile usare uno dei siti Web di ricerca DNS o ricerca di record MX disponibili gratuitamente su Internet.
Al prompt dei comandi digitare
nslookup
e quindi premere INVIO. Il comando consente di aprire la sessione di Nslookup.Digitare
set type=mx
, quindi premere INVIO.Digitare il nome del dominio per cui si desidera trovare il record MX. Ad esempio, per trovare il record MX per il dominio fabrikam.com, digitare
fabrikam.com.
e quindi premere INVIO.Nota
Quando si usa un punto finale ( . ), si impedisce l'aggiunta involontaria di suffissi DNS predefiniti al nome di dominio.
L'output del comando avrà questo aspetto:
fabrikam.com mx preference=10, mail exchanger = mail1.fabrikam.com fabrikam.com mx preference=20, mail exchanger = mail2.fabrikam.com mail1.fabrikam.com internet address = 192.168.1.10 mail2 fabrikam.com internet address = 192.168.1.20
Come server di destinazione è possibile utilizzare qualsiasi nome host o indirizzo IP associato ai record MX. Un valore inferiore per la preferenza (preferenza = 10 e 20) indica un server SMTP preferito. Per il bilanciamento del carico e la tolleranza di errore vengono usati più record MX e valori di preferenza diversi.
Quando si è pronti per terminare la sessione Nslookup, digitare
exit
e quindi premere INVIO.
Passaggio 3: Verifica della comunicazione SMTP tramite Telnet sulla porta 25
In questo esempio verranno usati i valori seguenti. Quando si eseguono i comandi nel server, sostituire questi valori con quelli per il server SMTP, il dominio e così via dell'organizzazione.
- Server SMTP di destinazione: mail1.fabrikam.com
- Dominio di origine: contoso.com
- Indirizzo di posta elettronica del mittente: chris@contoso.com
- Indirizzo di posta elettronica del destinatario: kate@fabrikam.com
- Oggetto messaggio: Test da Contoso
- Corpo del messaggio: si tratta di un messaggio di test
Consiglio
I comandi nel client Telnet non fanno distinzione tra maiuscole e minuscole. I verbi del comando SMTP in questo esempio sono in maiuscolo per maggiore chiarezza. Non è possibile usare la chiave backspace nella sessione Telnet dopo la connessione al server SMTP di destinazione. Se si commette un errore durante la digitazione di un comando SMTP, è necessario premere INVIO e quindi digitare di nuovo il comando. I comandi SMTP o gli errori di sintassi non riconosciuti generano un messaggio di errore simile al seguente: 500 5.3.3 Unrecognized command
.
Aprire una finestra del prompt dei comandi, digitare
telnet
e quindi premere INVIO.Il comando consente di aprire la sessione di Telnet.
Digitare
set localecho
, quindi premere INVIO.Questo comando facoltativo consente di visualizzare i caratteri durante la digitazione e potrebbe essere necessario per alcuni server SMTP.
Digitare
set logfile <filename>
, quindi premere INVIO.Questo comando facoltativo abilita la registrazione e specifica il file di log per la sessione Telnet. Se si specifica solo un nome di file, il file di log si trova nella cartella corrente. Se si specificano un percorso e un nome di file, il percorso deve trovarsi nel computer locale e potrebbe essere necessario immettere il percorso e il nome del file nel formato Windows DOS 8.3 (nome breve senza spazi). Il percorso deve esistere, ma il file di log viene creato automaticamente.
Digitare
OPEN mail1.fabrikam.com 25
, quindi premere INVIO.Digitare
EHLO contoso.com
, quindi premere INVIO.Digitare
MAIL FROM:<chris@contoso.com>
, quindi premere INVIO.Digitare
RCPT TO:<kate@fabrikam.com> NOTIFY=success,failure
, quindi premere INVIO.Il comando NOTIFY facoltativo specifica i messaggi di notifica dello stato di recapito specifici (noti anche come messaggi di mancato recapito, report non recapitabili o DDR) che l'SMTP deve fornire. In questo esempio si richiede un messaggio DSN per il recapito dei messaggi riuscito o non riuscito.
Digitare
DATA
, quindi premere INVIO.Digitare
Subject: Test from Contoso
, quindi premere INVIO.Premere di nuovo INVIO.
È necessaria una riga vuota tra il campo Oggetto: e il corpo del messaggio.
Digitare
This is a test message
, quindi premere INVIO.Digitare un punto (
.
), quindi premere INVIO.Per disconnettersi dal server SMTP, digitare
QUIT
e quindi premere INVIO.Per chiudere la sessione Telnet, digitare
quit
e quindi premere INVIO.
Ecco l'aspetto di una sessione riuscita con i passaggi precedenti:
C:\Windows\System32> telnet
Microsoft Telnet> set localecho
Microsoft Telnet> set logfile c:\TelnetTest.txt
Microsoft Telnet> OPEN mail1.fabrikam.com 25
220 mail1.fabrikam.com Microsoft ESMTP MAIL Service ready at Fri, 5 Aug 2016 16:24:41 -0700
EHLO contoso.com
250-mail1.fabrikam.com Hello [172.16.0.5]
250-SIZE 37748736
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-X-ANONYMOUSTLS
250-AUTH NTLM
250-X-EXPS GSSAPI NTLM
250-8BITMIME
250-BINARYMIME
250-CHUNKING
250 XRDST
MAIL FROM: <chris@contoso.com>
250 2.1.0 Sender OK
RCPT TO: <kate@fabrikam.com> NOTIFY=success,failure
250 2.1.5 Recipient OK
DATA
354 Start mail input; end with <CRLF>.<CRLF>
Subject: test
This is a test message.
.
250 2.6.0 <c89b4fcc-3ad1-4758-a1ab-1e820065d622@mail1.fabrikam.com> [InternalId=5111011082268, Hostname=mail1.fabrikam.com] Queued mail for delivery
QUIT
221 2.0.0 Service closing transmission channel
Passaggio 4: Messaggi di esito positivo ed errore nella sessione Telnet
In questa sezione vengono fornite informazioni sulle risposte di esito positivo e negativo ai comandi usati nell'esempio precedente.
Nota
I codici di risposta SMTP a tre cifre definiti in RFC 5321 sono gli stessi per tutti i server di messaggistica SMTP, ma le descrizioni di testo nelle risposte potrebbero essere leggermente diverse.
Codici di risposta SMTP
I server SMTP rispondono ai comandi con un'ampia gamma di codici di risposta numerici nel formato x.y.z dove:
- X indica se il comando era valido, non valido o incompleto.
- Y indica il tipo di risposta inviata.
- Z fornisce informazioni aggiuntive sul comando
Quando viene ricevuta una risposta dal server che ha aperto la connessione, può indicare se il server remoto ha accettato il comando ed è pronto per quello successivo o se si è verificato un errore.
La prima cifra (X) è particolarmente importante da comprendere perché indica l'esito positivo o negativo del comando inviato. Ecco i valori possibili e i relativi significati.
Codice di risposta | Significato |
---|---|
2.y.z | Il comando inviato è stato completato correttamente nel server remoto. Il server remoto è pronto per il comando successivo. |
3.y.z | Il comando è stato accettato, ma il server remoto richiede altre informazioni prima che l'operazione possa essere completata. Il server di invio deve inviare un nuovo comando con le informazioni necessarie. |
4.y.z | Il comando non è stato accettato dal server remoto per un motivo che potrebbe essere temporaneo. Il server di invio deve provare a connettersi di nuovo in un secondo momento per verificare se il server remoto può accettare correttamente il comando. Il server di invio continuerà a ritentare la connessione fino a quando non viene completata una connessione corretta (indicata da un codice 2.y.z) o non riesce definitivamente (indicato da un codice 5.y.z). Un esempio di errore temporaneo è lo spazio di archiviazione insufficiente nel server remoto. Una volta reso disponibile più spazio, il server remoto dovrebbe essere in grado di accettare correttamente il comando. |
5.y.z | Il comando non è stato accettato dal server remoto per un motivo che non è recuperabile. Il server di invio non ritenterà la connessione e invierà un report di mancato recapito all'utente che ha inviato il messaggio. Un esempio di errore irreversibile è un messaggio inviato a un indirizzo di posta elettronica che non esiste. |
La tabella precedente si basa sulle informazioni fornite da RFC 5321 (Simple Mail Transfer Protocol), sezione 4.2.1. Altre informazioni, incluse le descrizioni della seconda (Y) e della terza (Z) cifre dei codici di risposta SMTP sono incluse in questa sezione e nelle sezioni 4.2.2 e 4.2.3.
Comando OPEN
Risposta riuscita: 220 mail1.fabrikam.com Microsoft ESMTP MAIL Service ready at <day-date-time>
Risposta di errore: Connecting to mail1.fabrikam.com...Could not open connection to the host, on port 25: Connect failed
Possibili motivi di errore:
- Il server SMTP di destinazione non è disponibile.
- Restrizioni per il firewall di destinazione.
- Restrizioni per il firewall di origine.
- FQDN o indirizzo IP non corretto per il server SMTP di destinazione.
- Numero di porta non corretto.
Comando EHLO
Risposta riuscita: 250 mail1.fabrikam.com Hello [<sourceIPaddress>]
Risposta di errore: 501 5.5.4 Invalid domain name
Possibili motivi di errore:
- Caratteri non validi nel nome di dominio.
- Restrizioni di connessione nel server SMTP di destinazione.
Nota
EHLO è il verbo ESMTP (Extended Simple Message Transfer Protocol) definito in RFC 5321. I server ESMTP possono annunciare le funzionalità durante la connessione iniziale. Queste funzionalità includono le dimensioni massime accettate dei messaggi e i metodi di autenticazione supportati. HELO indica il comando SMTP precedente definito in RFC 821. La maggior parte dei server di messaggistica SMTP supporta ESMTP ed EHLO. Se il server non Exchange a cui si sta tentando di connettersi non supporta EHLO, è invece possibile usare HELO.
Comando MAIL FROM
Risposta riuscita: 250 2.1.0 Sender OK
Risposta di errore: 550 5.1.7 Invalid address
Possibili motivi di errore: errore di sintassi nell'indirizzo di posta elettronica del mittente.
Risposta di errore: 530 5.7.1 Client was not authenticated
Possibili motivi di errore: il server di destinazione non accetta invii di messaggi anonimi. Questo errore viene visualizzato se si tenta di usare Telnet per inviare un messaggio direttamente a un server Cassette postali che non dispone di un connettore di ricezione configurato per accettare connessioni anonime.
Comando RCPT TO
Risposta riuscita: 250 2.1.5 Recipient OK
Risposta di errore: 550 5.1.1 User unknown
Possibili motivi di errore: il destinatario specificato non esiste.