fix(tls): sem watcher nao ha veredito, e o README passa a explicar os modos
Com TLS_MODE=acme o certificado e emitido por este servico, nao vigiado em disco, portanto nao ha watcher para estar saudavel. O painel reportava false e mostrava "indisponivel" em permanencia, ao lado de um certificado perfeitamente valido. Passa a ser null, e a pagina nao mostra veredito nenhum. O README ganha uma seccao sobre os dois modos de certificado. O modo traefik falha de duas maneiras silenciosas -- sem router para o PRIMARY_MAIL_HOST o nome nunca chega ao acme.json, e o acme.json fica em 600 do root, ilegivel para o utilizador nao-root do contentor. Nos dois casos o HTTPS continua a funcionar porque quem o serve e o proxy, enquanto as portas de correio caem no autoassinado e sao recusadas por qualquer cliente que verifique. Foi exactamente o que aconteceu nesta instalacao. Actualizado tambem o que ja nao esta por acabar: a resposta de ausencia, a assinatura e as regras Sieve sao consumidas, e a reconciliacao de DNS conduz o estado em vez de o relatar. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
1e7c6a118c
commit
7f8d9b7ff1
7 files changed
+119
-29
No files matched your search
@@ -43,13 +43,16 @@ func (a *adminTlsAPI) handleStatus(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
status := map[string]any{
|
||||
"tls_mode": a.tlsMode,
|
||||
"mail_host": a.mailHost,
|
||||
"has_certificate": a.source.HasCertificateFor(a.mailHost),
|
||||
"unknown_sni_total": a.source.UnknownSNICount(),
|
||||
"last_reload": nil,
|
||||
"last_change": nil,
|
||||
"watcher_healthy": false,
|
||||
"tls_mode": a.tlsMode,
|
||||
"mail_host": a.mailHost,
|
||||
"has_certificate": a.source.HasCertificateFor(a.mailHost),
|
||||
"unknown_sni_total": a.source.UnknownSNICount(),
|
||||
"last_reload": nil,
|
||||
"last_change": nil,
|
||||
// Null, not false. A source that reloads from disk reports a time and
|
||||
// gets a verdict; one that issues its own certificate has no watcher to
|
||||
// be unhealthy, and saying "unavailable" there is a false alarm.
|
||||
"watcher_healthy": nil,
|
||||
"certificate_expires": nil,
|
||||
"expires_in_days": nil,
|
||||
"state": "UNKNOWN",
|
||||
|
||||
Reference in new issue
Block a user