12 de abril de 2005

Comandos SMTP

Quem lida com o Microsoft Exchange Server ou com sistemas de correio electrónico em geral, sabe que os comandos SMTP podem ser muito úteis para troubleshooting.
O protocolo SMTP foi apresentado ao mundo por volta de 1982, no documento RFC821. Desde então este protocolo sofreu algumas alterações, existindo um novo RFC, o 2821.
Voltando então ao troubleshooting, utilizando os comandos SMTP por telnet é possível despistar problemas relacionados com esta componente do Exchange Server.
Primeiro de tudo é preciso fazer telnet ao servidor Exchange em questão. Por defeito o cliente Telnet do Windows não faz display dos caracteres digitados, pelo que será conveniente correr primeiro o Telnet e dar o comando "set local_echo" (no Windows XP é "set localecho").
Uma vez que nos estamos a ligar a uma sessão SMTP, o porto em questão é o 25, pelo que o comando telnet será:

C:> telnet servidor 25

Ao que a resposta será:

220 servidor.company.com Microsoft ESMTP MAIL Service, Version: 6.0.3790.211 ready at Tue, 12 Apr 2005 09:23:18 +0100

Os comandos telnet suportados são:

Extended HELLO (EHLO) or HELLO (HELO)
MAIL (MAIL)
RECIPIENT (RCPT)
DATA (DATA)
RESET (RSET)
VERIFY (VRFY)
EXPAND (EXPN)
HELP (HELP
NOOP (NOOP)
QUIT (QUIT)

Basicamente, o que vamos precisar é de iniciar comunicação com um HELO, identificarmo-nos com um MAIL FROM, definir o destinatário com um RCPT TO e escrever o texto com o comando DATA. A sequência total seria:

HELO
250 servidor.company.com Hello [10.100.100.190]
MAIL FROM:<rui.jm.silva@company.com>
250 2.1.0 rui.jm.silva@company.com....Sender OK
RCPT TO:<someone@company.com>
250 2.1.5 someone@company.com
DATA
354 Start mail input; end with .
SUBJECT: Teste de SMTP
Mensagem de teste do blog http://ehlo.blogspot.com
.
250 2.6.0 <SERVIDORxhbzagpc534ys000049fd@servidor.company.com> Queued mail for delivery
QUIT
221 2.0.0 servidor.company.com Service closing transmission channel

Notem que a inserção de texto deve acabar com um ponto (.) numa linha vazia.
Por esta altura já devemos ter uma mensagem na caixa de correio do destinatário.
A Microsoft tem um artigo que também fala sobre este assunto, XFOR: Telnet to Port 25 to Test SMTP Communication.

2 comentários:

Cordep disse...

Como fazer para se enviar emails para multiplos enderecos ao memso tempo?!

Anónimo disse...

Basta adicionar varias veses o comando rcpt to: