Configuração
O mxout lê a configuração de um arquivo JSON e de variáveis de ambiente. Segredos (token de auth) e chaves DKIM nunca ficam embutidos no binário — chegam via variável de ambiente e arquivos montados externamente.
Arquivo de configuração (mxout.json)
O caminho do arquivo é definido pela variável MXOUT_CONFIG. O valor padrão é mxout.json no diretório de trabalho. Em container, o caminho convencional é /etc/mxout/mxout.json.
Campos
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
listen |
string | "0.0.0.0:8080" |
Endereço e porta em que a API HTTP escuta. |
helo_hostname |
string | — | Hostname enviado no EHLO/HELO SMTP. Deve coincidir com o PTR/rDNS do IP de saída. |
smtp_timeout_secs |
int | 30 |
Timeout em segundos por etapa do diálogo SMTP. |
domains |
objeto | — | Mapa de domínio para configuração DKIM. Veja estrutura abaixo. |
Estrutura de `domains`
Cada chave do objeto domains é o domínio do remetente (deve corresponder ao domínio do campo from no /send).
| Campo | Tipo | Descrição |
|---|---|---|
selector |
string | Seletor DKIM publicado no DNS (ex.: "mail"). |
key_path |
string | Caminho absoluto para a chave privada DKIM em formato PEM. |
Exemplo completo
{
"listen": "0.0.0.0:8080",
"helo_hostname": "mail.exemplo.com",
"smtp_timeout_secs": 30,
"domains": {
"exemplo.com": {
"selector": "mail",
"key_path": "/etc/mxout/keys/exemplo.com.pem"
},
"outro-dominio.com": {
"selector": "mxout",
"key_path": "/etc/mxout/keys/outro-dominio.com.pem"
}
}
}O token de autenticação não fica neste arquivo. Ele é definido exclusivamente pela variável de ambiente MXOUT_AUTH_TOKEN.
Variáveis de ambiente
| Variável | Descrição | Padrão | Exemplo |
|---|---|---|---|
MXOUT_CONFIG |
Caminho para o arquivo mxout.json. |
mxout.json |
/etc/mxout/mxout.json |
MXOUT_AUTH_TOKEN |
Token de autenticação para o endpoint /send. Ausente ou vazio = sem auth (registra aviso no boot). |
— (sem auth) | s3cr3t-t0ken-aqui |
MXOUT_DNS |
IP do resolver DNS upstream para resolução de MX. Necessário em containers scratch sem /etc/resolv.conf. |
Resolver do sistema | 1.1.1.1 |
RUST_LOG |
Nível de log do serviço. | info |
debug |
Sobre `MXOUT_AUTH_TOKEN`
Se a variável estiver ausente ou vazia, o endpoint /send fica acessível sem autenticação. O mxout registra um aviso visível nos logs na inicialização. Use somente em rede privada com controle de acesso na camada de rede.
Sobre `MXOUT_DNS`
Imagens baseadas em scratch não possuem /etc/resolv.conf. Sem MXOUT_DNS, o mxout não consegue resolver registros MX. Defina esta variável sempre que rodar o container a partir de uma imagem mínima.
Chaves DKIM
As chaves privadas DKIM são arquivos PEM referenciados por key_path no mxout.json. Elas devem ser montadas no container como volumes somente-leitura. Nunca inclua chaves privadas em imagens Docker ou repositórios.
Para gerar um par de chaves, consulte mxout-keygen.
Para publicar o registro DNS correspondente, consulte Configurar DNS.