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: STARTTLSO usuário e a senha são os mesmos do canal HTTP — um cliente, uma credencial, dois caminhos. Ver Clientes.
O diálogo
EHLO → STARTTLS → EHLO → AUTH PLAIN|LOGIN → MAIL FROM → RCPT TO → DATAAUTH é 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:
- o certificado precisa ter sido emitido para o nome que a aplicação usa;
- 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.