SMTP e IMAP com senhas de app

Conectar clientes de e-mail e sistemas legados por SMTP e IMAP com senhas de aplicativo: hosts, portas, autoconfig.

SMTP e IMAP (clientes de e-mail)

Este guia mostra como usar uma caixa do Asender Mail num cliente de e-mail (Thunderbird, Apple Mail, Outlook, celular) ou em código, por IMAP (ler) e SMTP de submissão (enviar), em vez de usar o webmail ou a API HTTP.

Disponibilidade: em implantação. O gateway de IMAP/SMTP está construído e testado, mas ainda não está liberado ao público: o serviço só é ligado nas máquinas em que a operação o declara, e a autoconfiguração (autoconfig e registros SRV no DNS) depende desse mesmo passo. Os endereços, portas e comportamentos abaixo são os definidos no código, mas não configure clientes de produção até este aviso sair deste guia. Para enviar e-mail agora, use a API de envio.

Resumo

IMAP (leitura)SMTP (envio)
Servidorimap.asender.com.brsmtp.asender.com.br
Porta e segurança993, SSL/TLS (TLS implícito)465, SSL/TLS (TLS implícito) ou 587, STARTTLS
Usuárioo endereço completo da caixa (voce@seudominio.com.br)o mesmo
Senhasenha de aplicativo com escopo mail:imapsenha de aplicativo com escopo mail:smtp
Autenticaçãosenha normal (PLAIN/LOGIN), só dentro de TLSPLAIN ou LOGIN, só dentro de TLS

Fatos que evitam tentativa e erro:

1. Crie uma senha de aplicativo

A senha de aplicativo é uma credencial própria para o programa de e-mail, no lugar da senha da conta.

  1. Entre em https://auth.asender.net e abra Minha conta → Dispositivos (https://auth.asender.net/conta/dispositivos).
  2. Na seção Senhas de aplicativo, clique em Criar senha.
  3. Dê um nome ao aplicativo (por exemplo, "Thunderbird no notebook", até 60 caracteres) e marque o que ele pode fazer: Ler e organizar e-mails (IMAP), que dá o escopo mail:imap, e/ou Enviar e-mails (SMTP), que dá o escopo mail:smtp.
  4. Confirme com o seu segundo fator, se for pedido (a criação exige reautenticação).
  5. Copie a senha agora. Ela aparece uma única vez; depois só é possível criar outra. O formato é asp_ seguido de dois blocos (asp_XXXXXXXX_…).

Regras:

2. Configuração automática

Thunderbird

O Thunderbird procura https://autoconfig.<domínio-do-e-mail>/mail/config-v1.1.xml. Para o seu domínio responder, é preciso este registro DNS (e o domínio verificado no Asender):

autoconfig.seudominio.com.br.   CNAME   autoconfig.asender.com.br.

O Asender responde 200 com um XML que aponta o IMAP para imap.asender.com.br:993 (SSL) e o SMTP para smtp.asender.com.br:465 (SSL), com usuário %EMAILADDRESS%:

<?xml version="1.0" encoding="UTF-8"?>
<clientConfig version="1.1">
  <emailProvider id="seudominio.com.br">
    <domain>seudominio.com.br</domain>
    <displayName>Asender E-mail (seudominio.com.br)</displayName>
    <displayShortName>Asender</displayShortName>
    <incomingServer type="imap">
      <hostname>imap.asender.com.br</hostname>
      <port>993</port>
      <socketType>SSL</socketType>
      <authentication>password-cleartext</authentication>
      <username>%EMAILADDRESS%</username>
    </incomingServer>
    <outgoingServer type="smtp">
      <hostname>smtp.asender.com.br</hostname>
      <port>465</port>
      <socketType>SSL</socketType>
      <authentication>password-cleartext</authentication>
      <username>%EMAILADDRESS%</username>
    </outgoingServer>
  </emailProvider>
</clientConfig>

("password-cleartext" é o nome que o Thunderbird dá à senha enviada dentro do TLS; a conexão é sempre criptografada.) Detalhes do comportamento da rota:

Registros SRV (RFC 6186)

Para clientes que descobrem servidores por SRV, o grupo "Clientes de e-mail (IMAP/SMTP)" do domínio publica:

_imaps._tcp.seudominio.com.br.         SRV  0 1 993  imap.asender.com.br.
_submissions._tcp.seudominio.com.br.   SRV  0 1 465  smtp.asender.com.br.
_submission._tcp.seudominio.com.br.    SRV  0 1 587  smtp.asender.com.br.

Em Admin → Domínios do painel, o card "Clientes de e-mail (IMAP/SMTP)" mostra se o grupo está publicado e oferece aplicá-lo (na Cloudflare) ou ver os registros para publicar à mão. Ele é opcional: não bloqueia a verificação do domínio, e a configuração manual continua valendo.

Apple Mail e Outlook

3. Configuração manual, passo a passo

Os nomes dos menus mudam entre versões; o que importa são os valores.

Thunderbird

  1. Conta → Configurar conta de e-mail e informe nome, endereço (voce@seudominio.com.br) e a senha de aplicativo.
  2. Se o autoconfig não responder, clique em Configuração manual. Em Entrada, escolha o protocolo IMAP, servidor imap.asender.com.br, porta 993, segurança SSL/TLS e autenticação Senha normal. Em Saída, servidor smtp.asender.com.br, porta 465 com SSL/TLS (ou 587 com STARTTLS) e autenticação Senha normal. O nome de usuário, nos dois, é o endereço completo.
  3. Para ler e enviar, a senha de aplicativo precisa ter os dois escopos (ou crie duas senhas e informe cada uma no seu servidor).

Apple Mail (macOS e iOS)

  1. Ajustes → Contas de Internet → Adicionar Conta → Outra e escolha Conta de e-mail. Informe nome, endereço e a senha de aplicativo.
  2. Quando a configuração automática falhar, escolha Configuração manual com tipo de conta IMAP. Servidor de entrada: imap.asender.com.br (porta 993, SSL ligado). Servidor de saída: smtp.asender.com.br (porta 465 com SSL, ou 587 com STARTTLS). Usuário: o endereço completo; senha: a senha de aplicativo.
  3. Em Avançado, confira que Usar SSL está ligado e a autenticação é Senha.

Outlook (versão clássica para Windows)

  1. Arquivo → Adicionar Conta, digite o endereço, abra Opções avançadas e marque Permitir configurar manualmente minha conta, escolhendo IMAP.
  2. Em Entrada, informe imap.asender.com.br, porta 993, método de criptografia SSL/TLS. Em Saída, smtp.asender.com.br, porta 465 com SSL/TLS (ou 587 com STARTTLS).
  3. Quando pedir a senha, use a senha de aplicativo.

Celular (Android e iOS)

Adicione uma conta "Outro/IMAP" com os mesmos valores: IMAP imap.asender.com.br 993 SSL, SMTP smtp.asender.com.br 465 SSL (ou 587 STARTTLS), usuário igual ao endereço, senha de aplicativo.

4. Configuração por código

Em todos os exemplos, o usuário é o endereço completo da caixa, a senha é a senha de aplicativo e o From tem de ser a própria caixa ou uma identidade ("enviar como") dela — veja Regras de envio.

Node.js (Nodemailer)

import nodemailer from "nodemailer";

const transporte = nodemailer.createTransport({
  host: "smtp.asender.com.br",
  port: 465,
  secure: true, // TLS implícito; para a 587 use port: 587, secure: false, requireTLS: true
  auth: { user: process.env.SMTP_USUARIO, pass: process.env.SMTP_SENHA_APP },
});

const info = await transporte.sendMail({
  from: process.env.SMTP_USUARIO, // a própria caixa, ex.: voce@seudominio.com.br
  to: "cliente@exemplo.test",
  subject: "Proposta comercial",
  text: "Olá, segue a proposta que conversamos.",
});
console.log("aceita:", info.messageId);

Python (smtplib e imaplib)

Envio:

import os
import smtplib
import ssl
from email.message import EmailMessage

msg = EmailMessage()
msg["From"] = os.environ["SMTP_USUARIO"]  # a própria caixa
msg["To"] = "cliente@exemplo.test"
msg["Subject"] = "Proposta comercial"
msg.set_content("Olá, segue a proposta que conversamos.")

contexto = ssl.create_default_context()  # valida o certificado e o nome do servidor
with smtplib.SMTP_SSL("smtp.asender.com.br", 465, context=contexto, timeout=60) as s:
    s.login(os.environ["SMTP_USUARIO"], os.environ["SMTP_SENHA_APP"])
    s.send_message(msg)

# Alternativa na 587 (STARTTLS obrigatório antes do login):
# with smtplib.SMTP("smtp.asender.com.br", 587, timeout=60) as s:
#     s.starttls(context=contexto)
#     s.login(...)
#     s.send_message(msg)

Leitura (IMAP):

import imaplib
import os

with imaplib.IMAP4_SSL("imap.asender.com.br", 993) as c:
    c.login(os.environ["SMTP_USUARIO"], os.environ["SMTP_SENHA_APP"])
    c.select("INBOX", readonly=True)
    _, dados = c.search(None, "UNSEEN")
    for num in dados[0].split()[:10]:
        _, partes = c.fetch(num, "(BODY.PEEK[HEADER.FIELDS (FROM SUBJECT)])")
        print(partes[0][1].decode("utf-8", "replace"))

PHP (PHPMailer)

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php'; // composer require phpmailer/phpmailer

$mail = new PHPMailer(true);
try {
    $mail->isSMTP();
    $mail->Host       = 'smtp.asender.com.br';
    $mail->SMTPAuth   = true;
    $mail->Username   = getenv('SMTP_USUARIO');   // endereço completo da caixa
    $mail->Password   = getenv('SMTP_SENHA_APP'); // senha de aplicativo
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // 465; para a 587: ENCRYPTION_STARTTLS e Port = 587
    $mail->Port       = 465;
    $mail->CharSet    = 'UTF-8';

    $mail->setFrom(getenv('SMTP_USUARIO'));
    $mail->addAddress('cliente@exemplo.test');
    $mail->Subject = 'Proposta comercial';
    $mail->Body    = 'Olá, segue a proposta que conversamos.';
    $mail->send();
} catch (Exception $e) {
    error_log('falha no envio: ' . $mail->ErrorInfo);
}
Use sempre destinatários de teste (@exemplo.test, .invalid, .example) em ambientes que não sejam de produção. Fora de produção, um destinatário real faz o envio ser recusado de propósito.

Regras de envio

O SMTP do Asender é uma submissão autenticada: ele recebe a mensagem pronta do seu cliente, confere se você pode enviá-la e a entrega ao serviço de envio do Asender, que assina o e-mail com o DKIM do seu domínio e o despacha. Por isso:

Limites

LimiteValor
Tamanho da mensagem (SMTP)25 MiB de mensagem completa, depois da codificação (anexos crescem cerca de 33% em base64). Acima: 552 5.3.4
Destinatários por mensagem (SMTP)100. Acima: 452 4.5.3
Conexões simultâneas por IP20, no SMTP e no IMAP. Acima: 421 4.7.0 (SMTP) ou BYE Too many connections (IMAP)
Conexões IMAP simultâneas por usuário15
Tamanho de um APPEND (IMAP)25 MiB
Prazo por comando60 s de leitura/escrita; 90 s para o envio e a autenticação terminarem
Tentativas de loginapós falhas repetidas (10 do mesmo IP, 20 do mesmo usuário ou 10 da mesma senha, em 15 min), o acesso é bloqueado com espera crescente (de 2 s até 15 min); toda falha de login demora de 1 a 3 s de propósito

O gateway SMTP não aplica, no seu próprio código, um limite de mensagens por minuto; o teto de envio é a quota do plano (acima) e o limite de conexões por IP.

O que o IMAP oferece

IMAP4rev1 com IDLE (notificação de novas mensagens), UIDPLUS, MOVE, SPECIAL-USE, NAMESPACE, CHILDREN, ESEARCH, LIST-EXTENDED, LIST-STATUS, LITERAL+ e APPENDLIMIT. Não há CONDSTORE/QRESYNC nem IMAP4rev2.

As pastas padrão da caixa são Entrada (INBOX), Enviados, Rascunhos, Arquivo, Spam e Lixeira, e o servidor as marca com SPECIAL-USE (\Sent, \Drafts, \Archive, \Junk, \Trash); use o atributo, e não o nome, para descobrir qual é qual. A quarentena de segurança nunca aparece no IMAP.

Mensagens de erro comuns

RespostaSignificado
535 5.7.8 (SMTP) ou Authentication failed (IMAP)usuário, senha ou escopo errados — o servidor nunca diz qual: usuário inexistente, senha errada ou revogada, escopo ausente e caixa sem acesso dão a mesma resposta
523 / 530 5.7.0 (SMTP)tentou autenticar sem TLS (na 587, falta o STARTTLS) ou mandou um comando sem estar logado
454 4.7.0 (SMTP)a autenticação está temporariamente indisponível; tente de novo em instantes
451 4.3.0 (SMTP)não foi possível entregar agora; o cliente mantém a mensagem e tenta de novo
553 5.7.1 (SMTP)o remetente não é a caixa autenticada nem uma identidade dela
552 5.3.4 (SMTP)mensagem maior que o limite
452 4.2.2 (SMTP)quota de envio do plano esgotada
550 5.1.1 (SMTP)destinatário em supressão global
554 5.7.1 (SMTP)envio externo bloqueado neste ambiente (fora de produção)

SMTP ou API de envio: quando usar cada um

SMTP de submissão (este guia)API de envio transacional
Para quêpessoas e programas que já falam SMTP/IMAP: cliente de e-mail, impressora, CMS, biblioteca legadasistemas que enviam e-mail por código: confirmações, recibos, códigos de verificação (OTP)
Rotasmtp.asender.com.br (465/587)POST https://api.asender.net/v1/emails/send (remetente de domínio verificado) ou POST https://api.mail.asender.net/v1/emails (a partir de uma caixa existente)
Credencialsenha de aplicativo de um usuário (mail:smtp)chave de API da conta (sk_…, escopo email:send)
Remetentea caixa (ou identidade) autenticadaqualquer endereço de domínio verificado (/v1/emails/send) ou uma caixa existente (/v1/emails)
Idempotêncianão há; o cliente reenvia a mensagemIdempotency-Key
Cópia em Enviadossó se o cliente fizer o APPENDa Mail API grava em Enviados
Erroscódigos SMTPJSON com status HTTP
Disponibilidadeem implantaçãodisponível

Regra prática: código seu enviando mensagens de sistema usa a API (chave de API, idempotência, resposta estruturada, 202 imediato). Uma pessoa usando uma caixa — ou um software que só sabe SMTP — usa o SMTP com a senha de aplicativo dela. Detalhes das APIs: Mail API e Plataforma.