Guide / windows-server
Undici guasti in un laboratorio Exchange 2019, e le cause vere
Sei schemi ricorrenti da undici guasti diagnosticati: l'ipotesi sofisticata è quasi sempre sbagliata, e un sistema che rifiuta spesso ha ragione di rifiutare.
Sei macchine virtuali: un domain controller con DNS e autorità di certificazione, un server Exchange 2019, un server Trasporto Edge in una DMZ vera, un firewall, un gateway di sicurezza al posto di un servizio cloud, e un client a simulare il mondo esterno.
Durante la costruzione si sono rotte undici cose. In nove casi la causa reale si è rivelata diversa dalla prima ipotesi — e lo schema con cui differiva vale più di qualunque singolo rimedio.
Gli undici
| Sintomo osservato | Causa effettiva | Rimedio |
|---|---|---|
| Nessuna intestazione SCL sul messaggio di prova | Il Content Filter ignora la posta interna autenticata | Simulare un mittente esterno con una sessione SMTP anonima |
| Sessione PowerShell bloccata durante l’invio SMTP | Lettura bloccante dove il protocollo non prevede risposta | Leggere le risposte solo dove il protocollo le definisce |
| Ping fra le macchine senza risposta | ICMP non consentito dal firewall — non la modalità promiscua | Regola ICMP esplicita sull’interfaccia DMZ, più regola in ingresso su Windows |
| Installazione di Edge interrotta | Nome di dominio completo assente su un server in gruppo di lavoro | Assegnare a mano il suffisso DNS primario |
-RequestFile non riconosciuto | Parametro rimosso dagli aggiornamenti cumulativi del 2022 | Raccogliere la richiesta in una variabile e scrivere il file |
| Errore all’importazione della sottoscrizione | Sul server interno serve -FileData, non -FileName | Leggere il file in byte e passarlo come dati |
| Posta in uscita diretta al gateway invece che a Edge | Connettore manuale con costo inferiore a quello di EdgeSync | Disattivare il connettore manuale |
454 Relay access denied dal gateway | Invio verso la porta 25, riservata alla posta in ingresso | Usare la porta 26 sul connettore di invio |
| Errore HTTP 500.19 sulle directory virtuali | Permessi NTFS privi del gruppo IIS_IUSRS | Concedere lettura ed esecuzione con icacls |
| Elenco delle schede bridge vuoto | Componente di rete bridged dell’hypervisor non installato | Reinstallare il prodotto di virtualizzazione |
Macchina virtuale non avviabile, 0xc0000409 | Driver del kernel dell’hypervisor bloccato o assente | Riavviare l’host e reinstallare |
Sei schemi da tenere
L’ipotesi sofisticata non è quella probabile
Le macchine non si pingavano. La prima teoria è stata la modalità promiscua delle schede virtuali: una spiegazione raffinata, che però riguarda la capacità di osservare il traffico altrui, non quella di ricevere il proprio.
La causa vera era una regola di firewall mancante. La spiegazione più ordinaria possibile in una rete che ha un firewall dentro.
Il componente nuovo funziona, è quello vecchio a interferire
La posta saltava il server Edge. Tutta l’attenzione è andata sulla sottoscrizione EdgeSync, appena creata e quindi sospetta per definizione.
La sottoscrizione funzionava perfettamente. A interferire era un connettore di invio creato giorni prima e mai rimosso, che vinceva per costo inferiore.
Un sistema che rifiuta può avere ragione
Il gateway rispondeva 454 Relay access denied. Stava applicando la propria politica esattamente come configurata: la porta 25 accetta posta solo per i domini di inoltro che conosce. Il messaggio era diretto a un dominio esterno, quindi il rifiuto era corretto.
Nel gateway non c’era niente da riparare. C’era una porta da correggere sul mittente.
La documentazione invecchia
-RequestFile compare in innumerevoli guide per generare una richiesta di certificato. È stato rimosso in un aggiornamento cumulativo, per una ragione di sicurezza precisa: accettava percorsi UNC.
Seguire un tutorial senza verificare la versione produce un errore che sembra un problema di sintassi propria.
L’assenza è un’informazione
Tre diagnosi su undici si fondano interamente su qualcosa che nei log non c’era:
- l’assenza di una voce
DELIVERha provato che l’agente antimalware aveva intercettato il messaggio - l’assenza di qualunque evento sul server Edge ha provato che la posta prendeva un’altra strada
- l’assenza di
ANONYMOUS LOGONnei permessi del connettore ha provato che non c’era open relay
Lo strato sottostante fa parte del sistema
Due guasti su undici non c’entravano né con Exchange né con la rete. Erano l’hypervisor: un componente di rete bridged mancante, e un driver del kernel che impediva alla VM di avviarsi con 0xc0000409.
Due dettagli da rubare
Il Content Filter ignora la posta interna autenticata. È di progetto, e rende priva di senso qualunque prova antispam fatta dall’interno dell’organizzazione: nessuna intestazione SCL comparirà mai. Per provarlo davvero bisogna arrivare come arriva lo spam vero, con una sessione SMTP anonima dall’esterno.
Leggere SMTP a mano si blocca dove il protocollo tace. Scriptare una conversazione SMTP significa leggere una risposta dopo ogni comando, tranne dove il protocollo non ne prevede una. Una lettura bloccante in quel punto congela la sessione, e sembra esattamente un problema di rete.
Il filo comune
Nove casi su undici avevano una causa diversa dalla prima ipotesi, e la direzione dell’errore è costante: la prima ipotesi era quasi sempre più interessante della verità.
La modalità promiscua invece di una regola di firewall. Una sottoscrizione nuova rotta invece di un connettore vecchio che nessuno aveva tolto. Un gateway mal configurato invece di un gateway che faceva il suo mestiere.
Probabilmente c’è un motivo. Quando un sistema è nuovo, le parti di cui hai appena imparato l’esistenza sono quelle che ti vengono in mente — e raramente sono quelle che stanno sbagliando.