Chi dovrebbe leggere questo articolo?
La guida è dedicata agli amministratori di sistema che implementano SmarterMail in ambienti high volume e/o ad organizzazioni che vogliono garantire al massimo i tempi di uptime del prodotto. Forniremo i requisiti di sistema minimi e alcune considerazioni per l’utilizzo di SmarterMail in un ambiente di failover.
Nota: il Failover richiede l’attivazione di SmarterMail Enterprise.

Panoramica sul Failover
SmarterMail Enterprise consente alle aziende di ridurre il rischio di interruzioni del servizio, eliminando i tempi di fermo: è sufficiente installare SmarterMail su un hot standby che diventa disponibile se il server di posta principale manifesta disservizi. La funzionalità di failover è fondamentale e assicura la continuità dei servizi di posta, garantendo una produttività ai massimi livelli possibili anche se c’è un errore nel server primario.
Come opera il Failover?
I componenti principali per le funzionalità di failover sono:
- un server primario che funge da server SmarterMail predefinito e gestisce le autorizzazioni del cluster;
- un server secondario che rimane collegato e disponibile in modalità “hot standby” fino a quando il server primario non riscontra problemi di natura hardware o di accesso alla rete.
Se il server primario riscontra dei problemi, puoi configurare SmarterMail in modo da attivare automaticamente il server secondario. In questo caso, il server secondario si assume la responsabilità dell’elaborazione dei thread in background e sostiene tutte le funzionalità e-mail. Questo server rimarrà in stato attivo finché non si verifica un altro problema o il mail server primario non torna in linea.
Nella fase di set up iniziale della funzione failover in SmarterMail, l’amministratore di sistema deve disattivare manualmente il nodo e il servizio SmarterMail sul server primario e, successivamente, avviare il nodo e il servizio SmarterMail sull’hot standby. In ogni caso, per automatizzare il failover e le strategie di recovery, puoi utilizzare dei sistemi di monitoraggio e degli script di cui troverai un esempio alla fine di questo articolo.
Requisiti minimi di sistema:
- Un minimo di due server con Microsoft Windows Server 2008 R2 o superiore. (Windows Server Core attualmente non è supportato).
- Tre indirizzi IP
- Entrambi i server devono avere i server time sincronizzati
- NFS / SMB share per i file di posta e di sistema. E’ raccomandabile che lo share sia su NAS / SAN in RAID 10
Aggiungere il Network Load Balancing ai tuoi server
Nota: La procedura va eseguita su ciascun server che verrà utilizzato nell’ambiente di failover.
- Aprire la console di gestione del server
- Fare clic destro su Features nel menù ad albero e selezionare Add Features
- Seleziona la casella Network Load Balancing e selezionare Next
- Fare clic su Install
- Una volta terminata l’installazione, fare clic su Close
Configurazione del Load Cluster Balancing per il failover
- Andare su Start > Administrative Tools > Network Load Balancing Manager
- Fare clic sulla voce di menu Cluster e selezionare New
- Nella finestra New Cluster: Connect, digitare l’IP del server primario nella casella di testo Host: e selezionare New
- Quando appaiono l’Interface Name e l’InterfaceIP, selezionare Interface Name e fare clic su Next
- Dato che questo è il nodo primario, assicurarsi che la priorità dell’host sia impostata su 1
- Nella finesta New Cluster: Host Parameters, confermare che l’indirizzo IP e la Subnet Mask siano corretti e cambiare lo stato iniziale dell’host in Stopped. Questa procedura serve per evitare eventuali problemi di connettività se una macchina si riavvia in modo casuale o manifesta un guasto di natura hardware. Se tutti i nodi sono impostati su Started come stato di host iniziale, il traffico verrà diviso tra le due (o più) macchine. Nota: puoi utilizzare dei software di monitoraggio per eseguire degli script che avviano e arrestano gli hot stand by in situazioni di guasto o di recovery. In caso contrario, il failover dovrà essere gestito manualmente.
- Fare clic su Next
- Nella finestra New Cluster: Cluster IP Addresses, fare clic su Add e digitare l’indirizzo IP del cluster e la Subnet Mask, come nel passaggio 6
- Selezionare Next
- Nella finestra New Cluster: Cluster Parameters, confermare l’indirizzo IP e la Subnet Mask, quindi immettere un Full Internet Name (opzionale)
- Verificare che la modalità operativa del cluster sia impostata su Multicast
- Fare clic su Next
- Nella finestra New Cluster: Port Rules, fare clic su Edit. Assicurarsi che le regole delle porte siano impostate suSingole Host nella sezione Filtering Mode. Nota: Se vuoi puoi limitare l’IP del cluster, in modo da lavorare su una singola porta o su un range di porte. Si può anche semplicemente consentire all’IP del cluster di lavorare su tutte le porte del server.
- Fare clic su OK
- Verificare le impostazioni e fare clic su Finish per completare l’installazione
Unire altri nodi al cluster
- Nel server secondario andare su Start > Administrative Tools > Network Load Balancing Manager
- Fare clic sulla voce di menu Cluster e selezionare Connect to Existing. Nota: prima di aggiungere un nodo secondario, bisogna accertarsi che il cluster esistente sia in esecuzione.
- Nella finestra Connect to Existing: Connect, inserire l’indirizzo IP del cluster esistente nella sezione Host: e fare clic su Connect
- Selezionare il cluster esistente che appare nella sezione Cluster e fare clic su Finish
- Nella finestra principale del Network Load Balancing Manager, espandere Network Load Balancing Clusters e fare clic destro su Cluster (potrebbe essere l’indirizzo IP del cluster) e selezionare Add Host to Cluster
- Nella finestra Add Host to Cluster: Connect, inserire l’indirizzo IP del server secondario nella sezione Host: e fare clic su Connect
- Quando appaiono l’Interface Name e l’Interface IP, selezionare Interface Name e fare clic su Next
- Nella finestra Add Host to Cluster: Host Parameters, confermare l’indirizzo IP e la Subnet Mask e assicurarsi che l’Initial Host State sia impostato su Stopped. Dato che stai aggiungendo il secondo nodo al cluster, la priorità va impostata su 2
- Fare clic su Next
- Proprio come con il nodo primario, nella finestra Add Host to Cluster: Port Rules si ha la possibilità di impostare le porte specifiche o l’intervallo di porte. Se si desidera settare queste regole, fare clic su Edit. In caso contrario, fare clic su Finish per completare la configurazione
- Attendere che i nodi convergano e, se necessario, interrompere il server secondario facendo clic destro sul il nome del secondo server e selezionare Host Control > Stop
Configurare una Directory di Shared Condiviso
- Utilizzando Network File Sharing (NFS) o Samba (SMB), creare una directory condivisa denominata SmarterMail, preferibilmente su NAS o SAN. NOTA: Si consiglia di hostare questa shared directory su un server in RAID 10.
- All’interno della nuova cartella SmarterMail, creare una cartella chiamata Service
- Configurare i permessi. Se servono permessi particolari, configurare il servizio di SmarterMail con le credenziali appropriate all’interno della console dei Servizi di Windows. Nota: Quando si eseguono gli aggiornamenti del software, bisogna applicare nuovamente le credenziali al servizio.
Configurare una nuova installazione di SmarterMail per il Failover
- Installare SmarterMail Enterprise su un server. Questo sarà il vostro hot standby. Lasciare tutte le impostazioni di configurazione di default e, al termine dell’installazione, configurare SmarterMail come un sito IIS.
- Arrestare il servizio SmarterMail sull’hot standby
- Nella cartella Service del server primario, modificare il file failoverConfig.xml nel seguente modo:
- SharedSystemFilesPath – Impostare la condivisione della rete e delle cartelle di sistema
- FailoverIPAddress – Impostare l’indirizzo IP del Load Balancer di rete
- IsEnabled – Impostare il parametro su True
- Salvare il file, quindi copiarlo nella cartella Service dell’hot standby e sostituire l’attuale failoverConfig.xml
- Copiare tutte le cartelle, DAT e file XML presenti in C:\Program Files (x86)\SmarterTools\SmarterMail\Service nella cartella Service nella directory di servizio condiviso che hai creato
- Avviare il servizio sul server hot standby e verificare che i percorsi puntino ai percorsi condivisi di rete
- Attivare la chiave Enterprise sull’hot standby nell’interfaccia admin SmarterMail andando su Settings > Activation > Licensing, quindi arrestare il servizio SmarterMail sul server
- Avviare il servizio sul server primario, quindi riattivare il codice di licenza Enterprise nell’interfaccia admin di SmarterMail
- Dopo la riattivazione della licenza, andare su Settings > Bindings > IP Address e collegare tutte le porte all’indirizzo IP del Load Balancer. Assicurarsi che nessun altro IP abbia delle porte connesse a queste.
- Entrambi i server sono ora impostati per il failover. Per verificarlo, puoi loggarti al server primario come amministratore di sistema, andare su Settings > Failover Servers: in questo modo puoi visualizzare i server che fanno parte del cluster di failover.
Aggiungere il failover ad un’installazione già esistente di SmarterMail
Nota: è necessario configurare entrambi i server per il Network Load Balancing e configurare una directory di servizio condiviso. Per ulteriori informazioni, consultare la procedura descritta in precedenza.
- Assicurarsi che sul server primario sia in esecuzione la versione più recente di SmarterMail e che sia configurato come un sito IIS. Assicurarsi anche che l’IIS sia connesso all’indirizzo IP del cluster
- Installare SmarterMail su un hot standby e configurarlo come un sito IIS. Assicurarsi che il nodo del cluster sia arrestato sull’hot standby e che l’IIS sia connesso all’IP del cluster
- Arrestare il servizio SmarterMail sull’hot standby
- Copiare tutti i dati della posta (situati in C:\SmarterMail\ di default) nella directory di servizi condivisi. Se possibile, utilizzare un robocopy in modo da evitare disservizi
- Una volta che il robocopy ha terminato, ripetere il passaggio per copiare solo i nuovi dati
- Arrestare il servizio SmarterMail sul server primario
- Nella cartella Service del server primario, modificare il file failoverConfig.xml:
- SharedSystemFilesPath – Impostare la condivisione della rete e delle cartelle di sistema
- FailoverIPAddress – Impostare l’indirizzo IP del Load Balancer di rete
- IsEnabled – Impostare il parametro su True
- Eseguire il robocopy ancora una volta per copiare tutti i file modificati e le restanti spool e-mail
- Copiare tutte le cartelle, DAT e file XML di C:\Program Files(x86)\SmarterTools\SmarterMail\Service nella cartella Service nella directory di servizio condiviso che hai creato
- Nella cartella di servizio condiviso, modificare il file domainlist.xml e modificare anche il percorso dei domini in base a quello dell’NFS\SMB. (Ad esempio, \\NAS01\SmarterMail\Domains\mydomain.com)
- Modificare il file mailconfig.xml e sostituire tutte le istanze del vecchio percorso fisico con il nuovo percorso di rete di SmarterMail. (Per esempio, se tutti i dati sono su E:\Smartermail, si dovrebbe eseguire una ricerca e una sostituzione di tutte le istanze E:\Smartermail con \\NAS01\Smartermail).
- Sul server primario, andare su Start > Administrative Tools > Network Load Balancing Manager e arrestare il nodo del cluster, quindi avviare il NLB sul nodo secondario
- Avviare il servizio SmarterMail sull’hot standby
- Accedere all’interfaccia web di SmarterMail sull’IP del cluster e loggarsi come amministratore di sistema
- Attivare la chiave Enterprise sull’hot standby andando su Settings > Activation > Licensing
- Verificare che le impostazioni e i dati vengano prelevati dalla directory di Servizio Condiviso
- Arrestare il servizio SmarterMail sull’hot standby e arrestare il nodo del cluster secondario
- Avviare il nodo del cluster e il servizio SmarterMail sul server primario
- Entrare nell’interfaccia web sul server primario e riattivare la chiave di licenza Enterprise andando su Settings > Activation > Licensing
- Verificare che i dati della posta elettronica e le impostazioni siano prelevati dalla directory di servizio condiviso
Script di Failover
Di seguito riportiamo un esempio di uno script PowerShell per automatizzare il failover di SmarterMail. In alternativa, puoi utilizzare un prodotto di monitoraggio come PRTG (o molti altri) per eseguire uno script nel caso in cui venisse rilevato un errore.
Configurare PowerShell sui Server
I server dovranno essere configurati per eseguire script remoti e consentire sessioni Remote PowerShell. Pertanto, in ogni server, bisogna eseguire i seguenti comandi all’interno di un’elevated PowerShell console:
- Set-ExecutionPolicy RemoteSigned – Premere Y per accettare
- Attiva-PSRemoting -force
Script di esempio – Stop di un Server Primario e Start dell’Hot Standby
Negli script riportati, sostituire la variabile “WAN” chiamata nel parametro -hostname con il nome della propria interfaccia. Puoi farlo con una console PowerShell sul server digitando Get-NlbClusterNodeNetworkInterface. Sostituire anche Server01 e Server02 con i nomi NetBIOS dei tuoi server.
$StopPrimary = New-PSSession -ComputerName Server01 Invoke-Command -Session $StopPrimary -ScriptBlock { Import-Module NetworkLoadBalancingClusters ; Stop-nlbclusternode -HostName Server01 -InterfaceName “WAN” ; import-module WebAdministration ; stop-webapppool SmarterMail; set-service -computerName Server01 -name mailservice -status stopped ; remove-pssession Server01}
$StartSecondary = New-PSSession -ComputerName Server02 Invoke-Command -Session $StartSecondary -ScriptBlock { Import-Module NetworkLoadBalancingClusters ; Start-nlbclusternode -HostName Server02 -InterfaceName “WAN” ; set-service -computerName Server02 -name mailservice -status running ; import-module WebAdministration ; start-webapppool SmarterMail ; remove-pssession Server02 }
Script di esempio – Fermare l’Hot Standby e Riavviare il Server Primario
Questi script possono essere utilizzati per portare il server primario di nuovo online e fermare l’hot standby dopo l’emissione di un segnale di all-clear da parte del software di monitoraggio.
$StopSecondary = New-PSSession -ComputerName Server02 Invoke-Command -Session $StopSecondary -ScriptBlock { Import-Module NetworkLoadBalancingClusters ; Stop-nlbclusternode -HostName Server02 -InterfaceName “WAN” ; import-module WebAdministration ; stop-webapppool SmarterMail; set-service -computerName Server02 -name mailservice -status stopped ; remove-pssession Server02}
$StartPrimary = New-PSSession -ComputerName Server01 Invoke-Command -Session $StartPrimary -ScriptBlock { Import-Module NetworkLoadBalancingClusters ; Start-nlbclusternode -HostName Server01 -InterfaceName “WAN” ; set-service -computerName Server01 -name mailservice -status running ; import-module WebAdministration ; start-webapppool SmarterMail ; remove-pssession Server01 }