Esta é a interface usada pelo painel. As três operações usam GET e recebem user e password na query string, conforme o contrato desta instalação.
URL basehttps://matrix.spfbl.net
A resposta é JSON. O campo result informa o resultado da operação; HTTP 200, sozinho, não confirma sucesso. Para usar a API no navegador, o Matrix precisa permitir CORS para a origem do painel. A sessão local de 60 minutos é uma regra do painel, não um token emitido pela API.
GET/history/
Consulta o histórico da conta. Também é a chamada usada pelo painel para validar as credenciais.
Parâmetro
Obrigatório
Descrição
user
Sim
E-mail da conta Matrix.
password
Sim
Senha da conta, codificada como parâmetro de URL.
begin
Não
Cursor retornado no campo next da resposta anterior. Omitir na primeira consulta.
GET/white/
Solicita a liberação associada ao registro identificado por timekey. A confirmação de política não comprova entrega SMTP nem reenvio de uma mensagem.
Parâmetros obrigatórios:user, password e timekey.
GET/block/
Solicita o bloqueio associado ao registro identificado por timekey. Esta chamada altera a política no Matrix.
Parâmetros obrigatórios:user, password e timekey.
Identificador da mensagem
Use timekey quando presente no histórico, ou key como compatibilidade. Envie sempre com o nome timekey nas ações. Preserve o identificador como texto; não o substitua por queueid e não faça cálculos com ele. O painel aceita de 10 a 20 dígitos nas ações. Um identificador numérico acima do limite seguro do JavaScript deve ser fornecido pela API como string.
Respostas e paginação
Exemplo ilustrativo de histórico; os campos disponíveis variam conforme o registro.
Resultado e explicação da operação. O result dentro de cada mensagem representa seu status.
message, next
Lista de mensagens e cursor para a próxima consulta.
timekey / key
Identificação, deduplicação e ações.
arrival, departure
Datas de recepção e da mensagem. O backend aceita o formato de e-mail do Matrix (ano com dois ou quatro dígitos) e ISO, normalizando o fuso para UTC. Para métricas, usa-se recepção; uma data de recepção inválida permite recorrer a departure.
client, queueid
Servidor de recepção e identificador de fila.
ip, fqdn
Origem da mensagem.
sender, from, replyto
Remetente do envelope, remetente do cabeçalho e endereço de resposta.
recipient, subject
Destinatário e assunto.
result, filter da mensagem
Status e motivo de filtragem. O painel prioriza um result reconhecido e usa filter como fallback.
Como percorrer o histórico
Consulte /history/ sem begin.
Acrescente as mensagens e elimine duplicados pelo identificador.
Se houver next, use seu valor como begin, mesmo que o lote tenha poucos ou nenhum registro.
Quando next estiver ausente, vazio ou nulo, a consulta terminou. Se o cursor repetir, interrompa e trate como histórico parcial.
O painel usa uma API PHP na mesma origem para manter um SQLite privado por conta, com até três meses de histórico. Após validar o login, as consultas e os filtros usam o banco. Reabrir uma sessão válida mostra os dados salvos antes de sincronizar. Cada lote insere ou atualiza registros por timekey; mensagens ausentes da API permanecem até vencerem.
As credenciais validadas ficam criptografadas no banco privado para permitir atualização diária mesmo após sair do painel. O cron consulta cada conta, percorre os lotes e atualiza os registros. Senha recusada suspende a atualização automática até um novo login válido. A coleta automática não renova o prazo de uso: contas sem acesso ao painel por mais de três meses deixam de ser sincronizadas e são removidas na limpeza.
A sincronização respeita next/begin, com pelo menos cinco segundos entre lotes. Lotes conhecidos são revisados; três lotes vazios, cursor repetido, falha ou mil lotes por execução permitem retomada com indicação de histórico parcial. HTTP 429 respeita Retry-After.
Você pode liberar ou bloquear e-mails já carregados enquanto os próximos lotes chegam. A ação aguarda a operação atual e tem prioridade sobre o próximo lote na mesma aba. Somente a mensagem com ação pendente fica desabilitada. Se o servidor estiver ocupado antes de enviar a ação, o painel aguarda por até 30 segundos; falhas de rede, timeout e resultados incertos não repetem a ação.
Filtros e exportação no painel
Período e servidor filtram o histórico privado no SQLite e são compartilhados entre tabela, cards e gráfico. Hoje e Últimos 7 dias terminam no horário da última atualização; Datas específicas inclui os dias inicial e final no fuso local, sem aceitar datas futuras. Busca e status refinam a tabela e o CSV. O PHP aplica os filtros e a paginação no banco; a interface recebe a página solicitada e as métricas agregadas.
O CSV contém todos os resultados filtrados e informa o período, servidor, busca, status selecionados, horários de atualização/exportação e se o histórico está completo ou parcial. O formato usa UTF-8 com BOM e separador ponto e vírgula. Status original e política aplicada são colunas separadas.
O painel aceita DONE ou VALID por compatibilidade. Após a confirmação, grava a última ação confirmada no SQLite com seu horário, preservando os campos originais. O status histórico, seus filtros e os indicadores permanecem baseados em result/filter; a política é exibida separadamente nos detalhes e no CSV. A última ação permanece entre sessões, separada do resultado histórico atualizado pelo Matrix.
Resultados e tratamento
Resultado
Interpretação
VALID
Histórico autorizado; também aceito nas ações por compatibilidade do painel.
DONE
Ação confirmada.
INVALID
Credencial ou parâmetro inválido; consulte information.
EXPIRED
Sessão expirada.
NOTFOUND
Registro não encontrado.
UNAVAILABLE, FAIL
Serviço indisponível ou falha da solicitação.
Os códigos adicionais constam no servidor público consultado; a implantação Matrix pode variar. Em erro HTTP, JSON inválido ou timeout, não considere a operação confirmada. Após timeout de uma ação, consulte o histórico antes de repeti-la: o servidor pode já ter processado a chamada.
Ferramenta / API Web
Gerador de cURL
Preencha a operação e copie o comando para Bash. A senha será solicitada no terminal, e enviada na URL pelo cURL conforme exigido pelo Matrix.
Bash / cURL
Preencha os campos para gerar o comando.
Geração local. A página não consulta o Matrix e não armazena credenciais. Requer Bash e cURL com suporte a --fail-with-body (7.76 ou superior).
02 / Terminal
API SSH / cliente SPFBL
“API SSH” aqui significa executar /usr/local/bin/spfbl em um servidor acessível por SSH. O cliente faz a comunicação com o serviço SPFBL configurado nesse servidor. Não é um endpoint HTTP.
Acesse um servidor que já tenha o cliente instalado e configurado.
Verifique a versão com /usr/local/bin/spfbl version e consulte /usr/local/bin/spfbl --help.
Escolha um comando de usuário ou administrador conforme as permissões da sua instalação.
O catálogo abaixo cobre o helper v2.17 fornecido. [argumento] significa opcional; alternativas aparecem como operações separadas. O usuário SSH não é necessariamente a conta Matrix. Ser root no servidor não garante autorização administrativa no Matrix.
Argumentos que o resumo omite
No cliente público v2.17, block find exige um token; white sender exige um remetente; superblock split e superblock overlap exigem CIDR. analise dump e analise drop recebem o nome da análise ou ALL. O gerador inclui esses argumentos. Os valores de peer set … send receive precisam ser confirmados no seu servidor.
Exemplos práticos
Ferramenta / Cliente SPFBL
Gerador de comandos
Selecione uma operação. Gere o comando para uma sessão já aberta ou inclua a conexão SSH.
Shell / SPFBL
Selecione a operação e preencha os campos.
O comando é apenas gerado. A execução acontece no seu terminal, com as permissões do usuário informado. Caminhos de arquivos se referem ao servidor onde o cliente será executado.
Referência completa do cliente
Expanda um grupo para ver sintaxe, finalidade, argumentos e exemplos. Os exemplos alteram dados quando executados; confira a operação indicada.
Como interpretar a saída
As respostas do cliente são texto, não o JSON da API Web. Leia a saída e o código de término de cada comando. Não há uma tabela universal de códigos: por exemplo, block find pode retornar código 1 quando encontra um registro. A disponibilidade e os privilégios dependem da configuração do serviço.
As configurações do cliente e do Matrix podem diferir do código público. Os exemplos não foram executados em produção. A versão desta documentação acompanha o painel; a versão do cliente é independente.