Sono un paio d’anni che usiamo, con soddisfazione, Scalix sia per la nostra struttura, che per quella dei nostri clienti. Innumerevoli sono i vantaggi offerti da Scalix rispetto ad Exchange:
Ovviamente anche Scalix, dato che il suo competitor è proprio Exchange, cerca di combattere nello stesso campo (Windows), offrendo un sistema di autenticazione integrato SSO (Single Sign On) basato su Active Directory: in pratica l’accesso a Scalix tramite Outlook avviene nell’ambito delle credenziali di accesso a Windows (esattamente come Exchange).
Anche Scalix comunque, come tutti i server di posta, soffre. E soffre si di un male che non ha nulla a che vedere con l’aspetto tecnico: la “pigrizia” degli utenti. Pigrizia che porta a mantenere nelle caselle postali migliaia di messaggi, risalenti alla notte dei tempi, nell’eterna convinzione che prima o poi mi serviranno anche queste mail vecchie. Tutto questo trasforma il server di posta in un archiviatore mostruoso sul quale gli utenti avranno sempre modo di lamentarsi perchè diventa lento nelle ricerche.
Ovviamente il lavoro dell’archiviatore NON lo deve fare il server di posta. Piuttosto dei servizi specifici che tengano traccia di tutte le email che passano dal server e le organizzino in archivi debitamente indicizzati che poi andranno interrogati successivamente. Tenendo la posta “archiviata” a parte è poi possibile tenere il mail server “snello” con dei clean-up periodici (magari settimanali) che eliminino dalle mailbox tutto quello che non è lavoro quotidiano.
La nostra scelta è caduta su MailArchiva, un software open, disponibile sia in versione “community” (gratuita) sia in versione “enterprise” (a pagamento). Abbiamo adottato la versione community per l’archiviazione della posta.
Sia Scalix che MailArchiva permettono l’integrazione con Active Directory per l’autenticazione degli utenti e la loro configurazione è decisamente alla portata. Tuttavia MailArchiva, se attivata l’autenticazione con Active Directory, non trova nessuna mail per gli utenti. Perchè ? Il motivo è molto semplice. MailArchiva “legge” gli indirizzi email associati all’utente nell’attributo proxyAddresses dello schema di Active Directory (l’impostazione predefinita per chi ha installato Exchange) mentre Scalix scrive gli indirizzi email in un suo attributo nominato scalixEmailAddress. Ne consegue che MailArchiva non sa quali siano le email di pertinenza dell’utente che ha effettuato l’accesso e, a meno che non sia un admin, non ne mostra nessuna. La soluzione proposta dal team di MailArchiva è quella di passare ad un sistema di autenticazione LDAP e di specificare quale sia l’attributo dello schema che specifica l’indirizzo email : a meno che non abbiate la versione Enterprise (a pagamento) è una spina nel sedere.
La vera soluzione è molto più semplice e di facile implementazione. Basta copiare gli indirizzi email presenti nell’attributo scalixEmailAddress e metterli anche nell’attributo proxyAddresses (che è un attributo standard di Active Directory e quindi presente anche se non avete Exchange montato). I due attributi hanno forme sintattiche leggermente diverse ma con un piccolo script (facilmente schedulabile) potete mantenere allineate le informazioni.
Siete pigri ? … vabbè … ecco lo script per farlo.
Scarica lo zip ed estrai il contenuto (incluse sottodirectory) in una cartella di tua scelta. Per lanciare l’allineamento tra i due attributi basta eseguire, da una macchina membro del dominio e nelle credenziali di un utente che ha diritti di scrittura su AD:
cscript ScxPAUtil.wsf
Verrano eseguite le seguenti operazioni :
Semplice e lineare. Ora MailArchiva “vede” le email corrette.
Si può avere PowerShell su Windows 2000 ? Si
Da dove scarico l’installer di PowerShell per Windows 2000 ? Non lo puoi scaricare perchè non esiste. PowerShell non è nemmeno minimamente supportata per Windows 2000 e vi sono pure dei dubbi sul fatto che sia legale installarla su Windows 2000. E quand’anche riuscissi ad installarla, non ti aspettare che funzioni senza problemi.
Se tutto questo non ti spaventa e vuoi per forza avere PowerShell v. 1.0 sul tuo “vecchio”, fedelissimo e ormai super stabile Windows 2000 … ecco come fare.
WindowsXP-KB926139-v2-x86-ENU.exe /extractInstallPWS2000.bat. Lo script copierà i file necessari, genererà gli assembly ed infine li registra nella GAC (Global Assembly Cache). Inoltre crea il collegamento a PowerShell nel menu start.La procedura si conclude qui.
Attenzione. Questa procedura serve solo per l’installazione. Non è previsto uno script per la disinstallazione e non troverai PowerShell installato nella sezione “Add/Remove Programs” del pannello di controllo. Se vuoi rimuovere PowerShell dovrai farlo a mano, seguendo a ritroso i passi scritti nel batch di installazione.
Buona PowerShell a tutti.
30 dic
Posted by: Andrea Lanfranchi in: Mondo IT, Programmazione
In questo mio precedente articolo mi sono già cimentato nell’implementazione di un sistema di backup utilizzando 7-zip come archiviatore. Purtroppo lo script batch che ne è uscito fuori, per quanto funzionante, è soggetto a molte, troppe limitazioni: una su tutte, la pratica impossibilità di maneggiare correttamente in un file batch nomi di file o cartelle che contengano caratteri speciali come “&” (ampersand).
Da non trascurare nemmeno le non eccellenti performance generali dello script che, non potendo gestire delle vere e proprie variabili, è costretto ad impostare continuamente variabili di ambiente. Insomma … la cara vecchia shell DOS è alla frusta da un bel pezzo, specialmente se paragonata alle estese e flessibilissime shell di comando Linux.
Forse proprio per quest’ultimo motivo (l’arretratezza delle shell di comando), Microsoft ha, ormai da un pezzo, la sua PowerShell. In pochissime parole : “Una eccellente implementazione del framework .Net in una console a riga di comando“. Troppo complicato ? Nahhhh.
PowerShell è forse uno dei maggiori balzi in avanti registrati nelle tecniche di scripting per Windows, nonchè la chiave di volta per la risoluzione dei problemi del mio script di backup con 7-zip.
E’ così nato il nuovo script : 7zBackup.ps1 . L’intero progetto è ospitato su Codeplex (la piattaforma Microsoft per la condivisione di progetti open) e non me ne vogliano gli amici italiani se è tutto in inglese. La soluzione offerta da questo script è, per me, molto interessante e con l’inglese è più facile trovare dei contributors o dei tester.
Le procedure di backup sono sempre una bella gatta da pelare. Personalmente non amo sistemi di backup “proprietari” che utilizzano codifiche esclusive perchè gli archivi generati (indipendentemente dal fatto che si tratti di copie su nastro o su disco) non sono facilmente portabili. A parte sistemi di classe enterprise che consentono procedure di disaster recovery, quello che mi aspetto da un archivio di backup è la semplice possibilità di portarlo, all’occorrenza, su un’altra macchina e di ripristinare i file senza dover installare pesanti software specifici. Insomma … che l’archivio di backup generato sia leggibile facilmente e ovunque con minime installazioni.
Il diminuito costo dello storage rende sempre più frequente l’utilizzo di backup su file (utilizzando SAN, NAS o gli stessi dischi dei server) relegando le copie su tape library ad ambiti sempre più ristretti e specializzati. In questo contesto ho sempre preferito, per il backup dei dati su server Windows, l’utilizzo dell’utilità di backup Microsoft (NTBackup) per i motivi che ho descritto sopra soprattutto la portabilità (leggo lo stesso archivio su un altro server Windows senza dover installare praticamente nulla).
L’utilizzo di NTBackup porta vantaggi ma anche svantaggi:
Ho deciso allora di “cimentarmi” nella creazione di un batch di automazione per il backup che rispondesse ai seguenti requisiti:
Il risultato è 7backup.bat : un singolo script batch (.bat) la cui esecuzione è facilmente schedulabile con minimi ed intuitivi switch da riga di comando.
Attenzione !! Questo script utilizza i junction points come caratteristica del file system NTFS. I Junction points vengono rappresentati da Windows Explorer come normali cartelle. MAI e ripeto MAI cancellare un junction point utlizzando Windows Explorer perchè questo porta alla cancellazione anche dei dati nella cartella di destinazione (ovvero quella oggetto del puntamento junction).
Disclaimer : questo script è stato testato con cura tuttavia può non essere esente da errori. Non utilizzatelo in ambienti ad alta criticità senza prima averlo testato adeguatamente su computer di prova. L’utilizzo del software è a vostra completa discrezione e rischio. Non rispondo di perdite di dati e non fornisco supporto diretto se non per il tramite, secondo tempo e disponibilità, di questo sito web.
I requisiti per il funzionamento sono :
Lo script batch è interamente documentato (in inglese) e tutte le impostazioni rilevanti possono essere codificate come costanti o passate da riga di comando. Solo due valori devono essere impostati a mano. Per fare questo potete editare il file 7backup.bat con un normale editor di testo come notepad (vi consiglio comunque di dotarvi di Notepad++). I valori rilevanti sono :
:: 7-zip executable path.
:: If you have installed 7zip using standard path, then you do not need to
:: change this
SET BK-7ZBIN=%ProgramFiles%\7-zip\7z.exe
In questa variabile dovrete inserire il percorso completo che punta all’applicazione 7-zip. Se avete installato 7-zip con le impostazioni standard non dovreste avere bisogno di modificare nulla.
L’altra variabile rilevante è la seguente:
:: Junction executable path.
:: Find where Junction.exe is and set it here. If Junction.exe is in
:: a directory within the PATH variable you can simply indicate
:: junction.exe
SET BK-JUNCTION=%ProgramFiles%\SysInternalsSuite\Junction.exe
Le applicazioni di SysInternals non prevedono una procedura di setup e quindi possono essere inserite in qualsiasi percorso. Prendetevi un momento per individuare Junction.exe all’interno del computer ed indicate quindi il percorso in cui si trova. Se il percorso prevede directory con spazi NON mettete le virgolette. Verranno aggiunte automaticamente dallo script quando serviranno.
A questo punto potete provare ad eseguire il batch senza nessun parametro. Viene emessa la schermata di aiuto come segue:
Tutti gli switch di comando sono spiegati e documentati.
Non resta altro che creare una “lista” di directory che vorrete backuppare. Con un normale editor scrivete l’elenco delle directory da backuppare, una per riga, indicandone il percorso completo inclusa la lettera di unità. Ad esempio:
C:\Dir1\Dati
C:\Dir3
D:\Archivi
Salvate il file in formato testo e annotatevi la posizione.
Attenzione. Non è ammessa l’indicazione di una Directory e di una sua Sottodirectory. Per esempio non è possibile indicare:
C:\Dir1\Dati
C:\Dir1\Dati\Commerciale
Questo perchè la procedura crea, per ogni directory elencata, un junction point nell’area di lavoro, includendo automaticamente tutte le sottodirectory. Il mancato rispetto di questa regola può portare a risultati imprevedibili e loop infiniti.
Potete ora lanciare il backup come ad esempio seguente:
7backup.bat --dirlist "C:\Mie Selezioni\Lista.txt" --type full --destdir "F:\MieiBackup" --rotation 3
Questo produrrà la generazione di un archivio di backup completo (ovvero di tutti i file contenuti nelle directory indicate nel file c:\Mie Selezioni\Lista.txt). Il file archivio verrà depositato nella directory F:\MieiBackup dove verranno mantenuti solo i 3 più recenti backup dello stesso tipo.
Alcune cose da considerare:
Ogni commento o integrazione è bene accetto.
| L | M | M | G | V | S | D |
|---|---|---|---|---|---|---|
| « lug | ||||||
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 | |||||