Submissão SMTP

Desde a v1.0.0 o mxout tem porta SMTP própria. Existe por um motivo prático: Mautic, WordPress, o mail() do PHP e praticamente todo sistema pronto sabem configurar host/porta/usuário/senha — mas nenhum sabe chamar uma API HTTP sem adaptador.

Não é MX de entrada. É submissão: só aceita mensagem de quem se autentica, e só para sair. Não recebe e-mail endereçado aos seus domínios.

Configurar uma aplicação

Host:     <host do mxout>
Porta:    2525
Usuário:  cli_<id>
Senha:    a senha mostrada na criação do cliente
TLS:      STARTTLS

O usuário e a senha são os mesmos do canal HTTP — um cliente, uma credencial, dois caminhos. Ver Clientes.

EHLO → STARTTLS → EHLO → AUTH PLAIN|LOGIN → MAIL FROM → RCPT TO → DATA

AUTH é obrigatório antes do MAIL FROM. Sem credencial não existe caminho para dentro — é o que separa submissão de relay aberto.

Depois do STARTTLS a sessão é zerada (RFC 3207): saudação e autenticação feitas antes do TLS não valem, para que nada negociado em claro seja aproveitado.

As recusas, e o que cada uma quer dizer

Resposta Situação O que fazer
530 5.7.0 MAIL FROM sem autenticar configure usuário e senha na aplicação
535 5.7.8 credencial inválida senha errada, ou cliente desabilitado
550 5.7.1 remetente não autorizado domínio fora da lista do cliente autorize o domínio para esse cliente
550 5.7.1 header From não confere From do MIME diverge do envelope corrija a aplicação: os dois têm que bater
552 5.3.4 mensagem acima do limite reduza anexos
452 4.5.3 destinatários demais divida o envio

A recusa por From divergente é a proteção contra personificação: sem ela, um cliente autorizado a a.com poderia enviar mensagens que aparecem como vindas de b.com.

Credencial inexistente, senha errada e cliente desabilitado devolvem a mesma resposta, no mesmo tempo — a diferença enumeraria clientes.

TLS

O certificado é auto-assinado por padrão, gerado no primeiro boot. Serve para aplicação que exige criptografia mas aceita certificado não confiável (verify=False ou equivalente).

Para certificado real, aponte smtp_tls_cert e smtp_tls_key na configuração. Duas condições para funcionar de fato:

  1. o certificado precisa ter sido emitido para o nome que a aplicação usa;
  2. a aplicação precisa conectar por esse nome — senão a validação de hostname falha.

Um certificado cobre o servidor, não os domínios remetentes. Quem prova a legitimidade de cada domínio é o DKIM/SPF/DMARC.

Com smtp_require_tls, o AUTH só é aceito depois do STARTTLS — impede credencial em claro na rede. Ligue depois que todas as aplicações já falarem TLS, senão quebra quem ainda manda em claro.

Depois do `250`

A mensagem foi aceita, não necessariamente entregue. No modo assíncrono ela entra na fila e sai no próximo tick; o resultado real da conversa com o MX de destino aparece na fila e no ledger.

By Borlot.com.br on 02/08/2026