Resumo

  • O RFC 5260 comprova uma comparação executada sobre um campo selecionado e normalizado, não a verdade histórica do horário escrito.
  • Uma decisão verificável preserva cabeçalhos ordenados, seleção, análise, fuso, versão do script, instante de execução, ramo escolhido e efeito observado.

A resposta automática começou um dia cedo demais

Uma equipe programou mensagens de ausência com currentdate. O script era correto e todas as consultas de horário dentro de uma execução usavam o mesmo instante, como exige o RFC 5260. A carga foi migrada para uma região cuja configuração local de fuso era diferente. Sem :zone, a janela civil mudou.

O relógio da execução respondeu corretamente à pergunta que recebeu. A organização havia esquecido de registrar a pergunta.

A ocorrência escolhida é parte da política

Sem index, o teste usa a primeira ocorrência do cabeçalho. :index conta desde um; :last conta a partir do fim. Em testes com vários nomes, a ordem escrita na lista também participa da contagem.

Isso cria coordenadas, não níveis de confiança. Inserir um gateway pode deslocar o segundo Received:. Reordenar nomes pode mudar qual campo ocupa a mesma posição numérica. O exemplo do RFC depende de deslocamento estável; não promete que a infraestrutura o preserve.

Quatro causas cabem em um falso

Campo ausente, sintaxe inválida, data impossível no calendário e valor válido fora da condição retornam falso. O fluxo do Sieve pode tratar todos igualmente, mas segurança e auditoria não deveriam fazê-lo.

O :count igual a um apenas confirma que o campo selecionado contém uma data válida. Não conta a cadeia inteira e não comprova quem escreveu o valor.

Fuso é contexto de execução

:originalzone mantém o deslocamento informado no campo. :zone projeta o instante para outro deslocamento fixo. Usar os dois é erro; omitir ambos usa o fuso local.

Um deslocamento preservado não prova localização, jurisdição ou histórico de horário de verão. Um fuso aplicado não autentica a fonte. Ele muda a representação civil usada pelo comparador.

Um instante coerente não é um relógio universal

Todos os currentdate de uma execução referem-se ao mesmo ponto, evitando contradição na virada do dia. O limite termina ali. Esse ponto não é envio, primeira recepção, entrega final, leitura ou aprovação.

O RFC reconhece que regras dependentes do tempo são mais difíceis de analisar. Sem host, fuso e instante capturado, o código não explica o ramo histórico.

Origem do campo determina a força da afirmação

Date: costuma ser inserido pelo remetente e pode ser alterado. O Received: superior costuma vir do sistema local e é mais difícil de falsificar externamente. Isso torna o segundo melhor para provar recepção local, não toda a rota ou os acontecimentos posteriores.

Analisar uma data com sucesso prova forma e calendário. Não prova custódia do relógio.

Recibo mínimo

Guardar hash da mensagem e dos cabeçalhos, inventário ordenado, nome e ocorrência real, :index, :last e ordem da lista, texto bruto, validade sintática e civil, deslocamento original, fuso usado, valor normalizado, parte da data, comparador e chaves, capacidades, identidade e versão do script, host e currentdate, motivo específico do falso, ação selecionada, execução e observação no destino.

O recibo não torna o horário verdadeiro. Ele impede que a conclusão sobreviva sem as premissas.

Sources