Archives For Microsoft Exchange

Mi sono ritrovato ad affrontare un “non problema“, costituito dalla migrazione di posta elettronica accumulata per anni, da portare su un account Office 365. Il tutto però non potendo passare da un Outlook sulla macchina interessata, rendendo di fatto più interessante la richiesta. Migrare la tua posta elettronica senza perdere niente di quanto ricevuto e spedito in tanti anni di attività, credo sia un passaggio importante e delicato, che però è possibile affrontare in maniera semplice con lo strumento giusto, io ho dato un’occhiata a MailStore Home.

Migrare la posta dal tuo client Home a Office 365 (Exchange Online) 6

Nella sua versione casalinga e gratuita, MailStore offre un programma completo, che aiuta chiunque a spostare materiale così tanto delicato e al quale possiamo difficilmente rinunciare. Io ho avuto a che fare con un ambiente basato su Thunderbird e un account che per anni ha scaricato posta in POP3, non lasciando quindi alcunché sul server a distanza di qualche giorno (il solito intervallo del “cancella tutto dopo 15 giorni di permanenza sul server di posta“), men che meno la posta spedita (conservata direttamente in locale). Dall’altro lato, un account WebMail di Office 365, senza quindi la possibilità di installare in locale un Microsoft Outlook con il quale catturare rapidamente tutta la corrispondenza salvata.

MailStore Home è stata la mia ancora di salvezza che, configurata opportunamente, mi ha permesso di caricare tutto il materiale online, portando pazienza, mettendo poi mano all’account di Office 365 giusto per riorganizzare le mail (perché l’esportazione viene eseguita in una cartella con un nome dato dal programma). Lo avevo già utilizzato in passato (per tenere sotto backup il mio account di GMail, preferendogli poi però Gmvault), stavolta è servito eccome :-)

Configurazione da “pronti, via

Scarica MailStore Home dalla pagina ufficiale e, una volta avviato, scegli se installarlo sulla tua macchina o avviarlo in modalità portable (creerà una cartella ad-hoc), io ho preferito quest’ultima. A questo punto l’interfaccia del programma è sufficientemente parlante e logica. Ho caricato una piccola galleria immagini per spiegarti

Ti riporto qui di seguito le istruzioni, nel caso in cui tu abbia problemi nel leggerle direttamente dalla galleria:

  • Spostati in Archivia e-mail, fai clic sul programma di posta che intendi portare su Exchange Online (nel mio caso Thunderbird) e permetti al programma di conservare copia del suo intero archivio di posta (impiegherà diverso tempo, sulla base di quanta posta hai accumulato, porta pazienza).
  • Fai clic su Esporta e-mail. Crea un nuovo profilo in base alla tua “destinazione” (nel mio caso, Cassetta postale di Exchange, valida per Office 365). Inserisci i dettagli richiesti a video, quindi tenta una connessione per verificare che tutto vada bene.
  • Tutto corretto? Bene, salva il profilo, sei pronto a procedere.
  • Fai doppio clic sul profilo appena creato.
  • Ti si presenterà la schermata che ti chiederà che tipo di mail migrare. A te basterà dargli in pasto quelle precedentemente salvate da Thunderbird, ora memorizzate all’interno di MailStore Home. Seleziona tutto ciò che ti interessa portare sul server Exchange.
  • Il processo di migrazione è cominciato. Vai a fare merenda, impiegherà diverso tempo. Puoi comunque continuare a lavorare, a patto di non aprire Thunderbird nel frattempo, così che non ci sia posta elettronica che sfugga alla migrazione. Utilizza poi solo la WebMail (o client alternativo) che punti al tuo nuovo account Office 365.

Salvo errori o problemi nel processo, tutta la tua posta elettronica è ora sul tuo nuovo account, al sicuro. Potrai finalmente pensionare il vecchio metodo di salvataggio della tua corrispondenza.

Condividi l'articolo con i tuoi contatti:

La funzione di Message Trace di Office 365, quindi Exchange in cloud, funziona abbastanza bene. Si dichiara l’intervallo da analizzare e il mittente o il destinatario sul quale devi effettuare delle verifiche. A quel punto ti basterà mettere la visualizzazione in ordine di oggetto mail e cercare ciò che ti interessa realmente. E se invece si potesse saltare questo step, avere da subito maggiore profondità (in giorni) e cercare per oggetto della mail senza specificare un mittente o un destinatario? Si può fare, basta aggirare l’ostacolo passando –come spesso accade– da PowerShell.

PowerShell: un Message Trace basato sull'oggetto della mail

Ho cercato sul web qualcuno con la mia stessa esigenza. L’ho trovato e ho potuto osservarne il lavoro. Tutto parte dallo script proposto su blogs.perficient.com/microsoft/2016/03/office-365-script-to-perform-message-trace-by-subject. È la giusta base di partenza alla quale vanno modificate solo un paio di cose, soprattutto per quello che riguarda il modo di trattare il parametro di data e ora, secondo quanto spiegato qui.

La modifica è banale e riguarda esclusivamente il modo in cui viene formato l’output del Get-Date, parametro senza il quale lo script va in errore e non è capace di svolgere correttamente il suo lavoro:

[DateTime]$DateEnd = Get-Date -format "MM/dd/yyyy HH:mm"

Così facendo, non è necessario intervenire ulteriormente sullo script originale (a meno che tu non voglia modificare il formato di output nelle 3 volte in cui viene richiamato nel corso dello script, nda). Ho caricato la versione modificata dello script su GitHub, ed è entrata a far parte della “suite” dedicata all’amministrazione di Office 365 via PowerShell: github.com/gioxx/o365/blob/master/Get-MessageTraceBySubject.ps1

Il risultato funziona, impiega il suo tempo, presenta infine le mail che è riuscito a individuare e che contengono quell’oggetto ricercato (attento, usa le wildcard quanto non sei sicuro del titolo completo dato a una mail). Il file di log viene prodotto nella stessa cartella in cui risiede lo script, a meno di andare a lanciare lo stesso con il parametro -LogFile $percorso, per esempio .\Get-MessageTraceBySubject.ps1 -LogFile C:\MessageTrace.txt

Buon lavoro :-)

Condividi l'articolo con i tuoi contatti:

Pillole

Le pillole sono articoli di veloce lettura dedicati a notizie, script o qualsiasi altra cosa possa essere "divorata e messa in pratica" con poco. Uno spazio del blog riservato ai post "a bruciapelo"!

Per la serie “sbagliando si impara“, anche se in realtà vale anche quella che dice che l’errore davanti ai propri occhi è anche quello che continua a sfuggire pure alla centesima rilettura, oggi prendo appunti su PowerShell e ordinamento dei risultati richiesti.

Nello specifico volevo ottenere una lista di contatti con un preciso dominio impostato nel PrimarySMTPAddress (WindowsEmailAddress), ho pensato bene quindi di lanciare un comando semplice (il Get-MailContact), filtrare in output solo ciò che mi interessava e pretendere di ordinare l’output dopo averlo già generato:

PS C:\PS1\PS1> Get-MailContact -ResultSize unlimited | where {$_.WindowsEmailAddress -like "*@contoso.com"} | ft name,Alias,WindowsEmailAddress | sort name
out-lineoutput : L'oggetto di tipo "Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData" non è valido oppure non è stato specificato nella sequenza corretta. L'errore dipende probabilmente da un comando "format-*" specificato dall'utente in conflitto con la formattazione predefinita.
    + CategoryInfo          : InvalidData: (:) [out-lineoutput], InvalidOperationException
    + FullyQualifiedErrorId : ConsoleLineOutputOutOfSequencePacket,Microsoft.PowerShell.Commands.OutLineOutputCommand

Per una illogica del mio unico neurone alla ricerca di aria fresca, mi ostinavo a chiedere un sort in seguito alla formattazione della tabella in output, quando in realtà il sort va chiesto prima di preparare i risultati da mostrare a video (cosa abbastanza normale a pensarci a sangue freddo, non trovi?). Il modo giusto per chiederlo è quindi anteporlo al Format-Table:

Get-MailContact -ResultSize unlimited | where {$_.WindowsEmailAddress -like "*@contoso.com"} | sort name | ft name,Alias,WindowsEmailAddress

Che produce un risultato a video assolutamente preciso, secondo richiesta impartita:

Sbagliando si impara: PowerShell, Sort e Format-Table

Metto da parte, lezione imparata, nel frattempo mi bastono da solo.

G

Condividi l'articolo con i tuoi contatti:

Pillole

Le pillole sono articoli di veloce lettura dedicati a notizie, script o qualsiasi altra cosa possa essere "divorata e messa in pratica" con poco. Uno spazio del blog riservato ai post "a bruciapelo"!

Uno di quei consigli che sono facili da ricordare e da recuperare con una ricerca nel blog, in case of emergency. Gestisci un tenant con centinaia (se non di più) persone registrate e non puoi certo ricordare uno a uno gli indirizzi di posta gestiti, soprattutto quando si parla di persone con uno o più alias a testa, shared mailbox, contatti e chissà quanto altro ancora, Exchange è un mondo infinito, nella sua soluzione cloud è poi in continua evoluzione.

Come cerchi un indirizzo di posta elettronica all’interno del tenant? Come capisci a chi o cosa è stato assegnato? Tutto sommato semplice: usi l’ennesima query.

Get-Recipient -Filter {EmailAddresses -like "*mario.rossi*"}

Powershell office 365 cercare un indirizzo di posta

In un solo colpo trovi qualsiasi cosa abbia uno specifico (o parte del) indirizzo di posta elettronica tra quelli a lui assegnati, a prescindere che si tratti di una mailbox (personal o shared non importa), un contatto mail, un mail user. Nella query che ho riportato qui sopra il *mario.rossi* cerca qualunque indirizzo contenga quel nome.cognome, a prescindere dalla sua posizione, ignorando totalmente il dominio. Funziona, è immediato, è maledettamente comodo, soprattutto quando ti ritrovi di fronte alla domanda secca di un tuo superiore oppure un errore di PowerShell quando si tenta di creare una casella di posta elettronica con lo stesso indirizzo di posta di qualcosa di già esistente.

Per ovvi motivi, il filtro può funzionare con qualsiasi parametro facente compatibile con il Get-Recipient, basterà modificare un tantinello la richiesta da far eseguire a PowerShell, per esempio:

Get-Recipient -Filter { Name -like "*alessio*"}

Ricercherà qualsiasi cosa abbia “Alessio” nel campo nome, a prescindere -ancora una volta- che si tratti di casella di posta, contatto o gruppo (e non solo).

Buon lavoro.

G

Condividi l'articolo con i tuoi contatti: