O Simple Mail Transfer Protocol (SMTP) funciona facilitando a transferência de mensagens de e-mail entre servidores. Quando um email é enviado, o cliente SMTP do lado do remetente estabelece uma conexão com o servidor SMTP, normalmente usando TCP. O cliente e o servidor se comunicam por meio de uma série de comandos e respostas para transferir o email. O processo envolve a identificação do cliente, a especificação dos endereços do remetente e do destinatário e a transmissão do conteúdo da mensagem. O servidor então encaminha o e-mail para o servidor de e-mail do destinatário ou o armazena até que o destinatário o recupere.
O protocolo SMTP opera através de um conjunto de estágios definidos: estabelecimento da conexão, transação de correio e término da conexão. Inicialmente, o cliente estabelece uma conexão TCP com o servidor, geralmente na porta 25. O cliente envia um comando HELO ou EHLO ao servidor, que responde com uma saudação. O cliente então emite um comando MAIL FROM para especificar o endereço de e-mail do remetente, seguido por comandos RCPT TO para especificar o(s) destinatário(s). Após o servidor reconhecer esses comandos, o cliente envia um comando DATA para iniciar a transmissão do conteúdo do email. A mensagem é enviada, terminando com um único ponto final em uma nova linha. O servidor confirma o recebimento da mensagem e o cliente envia um comando QUIT para encerrar a conexão.
O SMTP normalmente usa a porta 25 para comunicação entre servidores de correio. Para transmissão criptografada usando SSL/TLS, a porta 465 é frequentemente usada. Outra porta comum para SMTP com criptografia STARTTLS é a porta 587, recomendada para envio de e-mail de cliente para servidor para garantir uma transmissão segura.
O Simple Mail Transfer Protocol inclui vários comandos usados durante o processo de transmissão de email. Os comandos principais incluem HELO ou EHLO para identificar o cliente para o servidor, MAIL FROM para especificar o endereço do remetente, RCPT TO para especificar o endereço do destinatário, DATA para iniciar a transferência do conteúdo do email, RSET para redefinir a transação de correio atual, VRFY para verifique um endereço de e-mail, EXPN para expandir uma lista de discussão e QUIT para encerrar a sessão. Cada comando é seguido por uma resposta do servidor que indica o sucesso ou a falha da operação.