Posted on

Migrare cassette postali IMAP a Microsoft 365 – Office 365 – Exchange online

Di seguito i passi necessari in sequenza per migrare un dominio IMAP su Exchange Online.

  1. Aggiungere il dominio al tenant Microsoft 365. Non dovete completare la configurazione del mail server.
  2. Aggiungere gli utenti di dominio a Microsoft 365. Ogni utente deve avere una licenza Microsoft 365 Business Basic, Standard o Premium
  3. Preparare il file csv per la migrazione, separato da virgola. Nella prima riga mettere EmailAddress,UserName,Password. Nelle righe successive i dati : “EmailAddress è l’account Microsoft, “UserName” è l’account del server imap e “Password” è la password del server imap

esempio di csv

EmailAddress,UserName,Password
terrya@contoso.edu,contoso\terry.adams,1091990
annb@contoso.edu,contoso\ann.beebe,2111991
paulc@contoso.edu,contoso\paul.cannon,3281986
  1. Entrare come amministratore in Microsoft 365 e andare nell’interfaccia di amministrazione di Exchange. (nb. questa guida riguarda l’interfaccia di amministrazione “classica” di Exchange. Selezionare “destinatari” a sinistra; selezionare “migrazione” in alto.
  2. A centro pagina c’è un pulsante con tre punti : …. Selezionandolo si inserisce l’endpoint cioè il server sorgente Imap. Nella finestra successiva aggiungere il nuovo endpoint (IMAP).
  3. Creare una nuova migrazione. lanciare la migrazione
  4. una volta terminata la migrazione, nel tenant, potete finire la configurazione del dominio per quello che riguarda il server di posta, seguendo le istruzioni sul tenant e modificando i vostri dns

Le Regole della migrazione

Si possono mettere tutti gli utenti in una migrazione. Quando una migrazione termina con errori, si può eliminare un utente dalla stessa ed inserire lo stesso utente in un altra migrazione. Si possono avere più migrazioni contemporaneamente ma non può esistere lo stesso utente in più di una migrazione. La migrazione può esistere per un massimo di 60 giorni.

Non è una migrazione

In realtà Microsoft fa una operazione più sofisticata di una “banale” migrazione : fa una sincronizzazione. Sincronizza l’intera cassetta postale imap sulla cassetta Exchange in una direzione (da imap ad exchange). E’ sofisticato ma meno efficace di una normale migrazione : la sincronizzazione non è in tempo reale ma dopo 24/30 ore. Quindi volendo sostituire il mail server gli utenti perderebbero almeno 24 ore di email.

Configurazione di outlook

Sui client Outlook potete aggiungere il nuovo account di Exchange online. Sarà uguale alla cassetta postale precedente, ma sarà gestita da Exchange. Per un certo periodo avrete quindi 2 cassette postali che gestiscono la stessa posta ma su server diversi: uno è il vecchio server imap , l’altro il nuovo server Exchange. Quando la migrazione sarà terminata e avrete spostato anche i record mx sul dns, potete cancellare la vecchia cassetta postale. Prima di farlo però dovete spostare anche i contatti ed il calendario dalla “vecchia” alla “nuova” :

Contatti : selezionate tutti i contatti, tasto destro, selezionate “sposta” e quindi “copia nella cartella…”, contatti della cassetta di Exchange.

Calendario : Per spostare gli appuntamenti tra i 2 calendari : visualizzate entrambi i calendari e trascinate gli appuntamenti dal vecchio al nuovo.

Problemi nella migrazione

Se avete problemi di sincronizzazione potete indagare usando PowerShell. Prima di tutto installare ExchangeOnlineManagement. 

Connettersi al tenant :

Connect-ExchangeOnline -UserPrincipalName <your Admin Username>

Compare la schermata di richiesta password.

Lista di tutti gli endpoint nel tenant

get-migrationendpoint|FL

Test dell’endpoint

Test-MigrationServerAvailability -Endpoint <Identity of the endpoint from above>

Vedere le impostazioni della migrazione di un utente

Get-SyncRequest -Mailbox  <user>

Esportare il dettaglio di una migrazione :

Get-MigrationUserStatistics <user> -IncludeSkippedItems -IncludeReport 
-DiagnosticInfo "showtimeslots, showtimeline, 
verbose" | Export-Clixml C:\temp\MigMyUser.xml

Le cassette postali Exchange hanno un limite di 35MB. Se durante la migrazione dovete spostare qualcosa di più grande dovete cambiare questo limite.

Set-Mailbox -Identity <user> -MaxReceiveSize 150MB

Documentazione :

Posted on

wordpress error on qtranslate switching from php 5 to php 7

Switching from php 5 to php 7, you will get this error on the qtranslate X plugin

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /public_html/wp-content/plugins/qtranslate-x/qtranslate_frontend.php on line 497

Warning: Parameter 2 to qtranxf_postsFilter() expected to be a reference, value given in /public_html/wp-includes/class-wp-hook.php on line 286

Solution

Using ftp open the file qtranslate-x/qtranslate_frontend.php. you need to make 3 substitutions :

  • In line 497 change
continue;

to

break;
  • In line 523 change
function qtranxf_postsFilter($posts,&$query) {//WP_Query

to

function qtranxf_postsFilter($posts,$query) {//WP_Query
  • in line 597 change
function qtranxf_excludeUntranslatedPosts($where,&$query) {//WP_Query

to

function qtranxf_excludeUntranslatedPosts($where,$query) {//WP_Query
Posted on

Velocità di un backup remoto

Per costruire un ambiente di backup si consiglia in letteratura di seguire la regola 3-2-1.

  • Fare 3 backup
  • Fare 2 backup su supporti diversi
  • Fare 1 backup in un altra sede rispetto ai dati di origine

Per eseguire la terza disposizione molto spesso pensiamo al Cloud; è un ottima soluzione ma i costi sono ancora abbastanza alti se parliamo di TB. Se invece dobbiamo salvare dei GB la soluzione è appetibile.

Per aziende che devono spostare TB di dati una soluzione può essere il backup in una sede remota, per esempio collegata con una vpn. I costi di salvataggio del dato saranno quindi assorbiti dai costi di acquisto di una unità NAS abbastanza capiente.

Cerchiamo di dettagliare una soluzione del genere.

Velocità del backup in vpn

La velocità del backup sarà determinata dalla velocita della connessione ad internet più lenta fra le 2 sedi. Supponiamo che le 2 sedi riescano a comunicare alla velocità di 300 Mb/s.

300 Mb/s = 300.000.000 b/s

300.000.000 b/s / 8 = 37.500.000 B/s = 37,5 MB/s

Per spostare 1GB di dati in una rete a 300 Mb/s impiegheremo 1.000 / 37,5 = 26,7 secondi

Per spostare 1GB di dati in una rete a 100 Mb/s impiegheremo 1.000 / 12,5 = 80 secondi

I software di backup hanno tutti la capacità di eseguire backup incrementali ma il primo backup che viene eseguito sarà, per forza di cose, molto lungo. Quindi va pianificato con attenzione.

Se vogliamo spostare una macchina virtuale da 20GB attraverso una rete a 300 Mb/s, impiegheremo circa 27 minuti. Impiegheremo 2 ore e 15 minuti per una macchina virtuale da 1TB.  I backup incrementali dei vari software presenti sul mercato, in condizioni “normali” di attività del server, consentono di arrivare per i backup successivi a tempi che equivalgono al 20% del primo backup.

Scelta del NAS di Backup

I dati della sede di origine vengono archiviati su Nas nella sede di destinazione. E’ chiaro che la scelta di un NAS dotato di una scheda ethernet a 10Gb/S non migliora un backup remoto di questo tipo visto che la velocita di trasferimento della vpn è minore di 1Gb/s.

I dischi del NAS potrebbero ulteriormente diminuire la velocità di copia ? Per rispondere diamo uno sguardo ad una tabella che cerca di dare un valore alle velocità di scrittura dei vari sistemi di dischi. Abbiamo prelevato i dati dal sito wikipedia per poi elaborarli.

Drive

(Type / RPM )

MB/s

(64KB block, random)

MB/s

(512KB block, random)

MB/s random

average

MB/s

(large block, sequential)

MB/s sequenzial

average

FC / 15 K 9.7 – 10.8 49.7 – 63.1 33,3 73.5 – 127.5 100,5
SAS / 15 K 11.2 – 12.3 58.9 – 68.9 37,8 91.5 – 126.3 108,9
FC / 10 K 8.3 – 9.2 40.9 – 53.1 27,9 58.1 – 107.2 82,65
SAS / 10 K 8.3 – 9.2 40.9 – 53.1 27,9 58.1 – 107.2 82,65
SAS/SATA / 7200 4.4 – 4.9 24.3 – 32.1 16,4 43.4 – 97.8 70,6
SATA / 5400 3.5 22.6 13,05 47,1 (estimate)
SSD 520 520

Normalmente i software di backup scrivono i dischi in maniera sequenziale, quindi, numeri alla mano, anche un hard disk sata 5400 potrebbe essere utile nel nostro scenario. Acquistare invece hard disk superiori ai 7200 rpm non porterebbe ad un miglioramento.

Posted on

Velocità dei dischi in RAID

Proviamo a fare un quadro delle velocità dei dischi quando vengono raggruppati in un RAID. Tratteremo l’argomento arrivando a definire le prestazioni del raid relativamente alle prestazioni del singolo disco e della sua numerosità. Ci sono altri parametri che influenzano la velocità (come per esempio la cache)  ma non sono così rilevanti in termini assoluti.

Per capire le prestazioni, osserviamo 2 misure : la velocità di lettura di dati da un raid e la velocità di scrittura dei dati in un raid.  Per arrivare a definire queste due variabili, in questo articolo indicheremo con “N” il numero dei dischi che compongono il raid e con “V” la velocità del singolo disco che compone il raid.

Le prestazioni di archiviazione vengono misurate in IOPS (operazioni di input/ouput per secondo). In effetti esistono due velocità diverse: parleremo di RIOPS per indicare le operazioni di lettura e WIOPS per indicare le operazioni di scrittura.

Quindi la variabile V che indica la velocità del singolo disco è in realtà la IOPS.

RAID 0

Il RAID 0 è il più semplice di tutti. Un certo numero di dischi vengono messi insieme e visti dal sistema come un unico grande disco. Non esiste ridondanza dei dati, quindi la rottura di uno solo dei nostri dischi comporta la perdita di tutti i dati.

Il RAID 0 è il più veloce di tutti.

velocità RAID 0 = (N dischi) * (V singolo disco)

In generale il RAID-0 composto da 2 dischi  è sempre più veloce di un singolo disco perché è possibile eseguire simultaneamente le operazioni di lettura e scrittura. Il RAID 0 divide i dati in blocchi e li distribuisce su più unità. Se per esempio devo leggere i numeri da 1 a 100 memorizzati dentro il mio raid, il controller del raid potrà leggere contemporaneamente i numeri da 1 a 50 e da 51 a 101 perché si trovano in blocchi diversi : quindi il tempo di lettura dei numeri a 1 a 100 sarà dimezzato.

RAID 1

Nel RAID 1 dati vengono copiati 2 volte. Ne consegue che la capacità totale dell’array ne risulterà dimezzata.

Il RAID 1 è utile per operazioni di lettura molto veloci, tuttavia è più lento durante la scrittura sui dischi, poiché i dati devono essere scritti due volte. RAID 1 richiede almeno due dischi fisici e può essere eseguito con un numero “pari” di dischi.

Dovendo scrivere 2 volte il dato la velocità si dimezza :

velocità SCRITTURA RAID 1 = (N dischi) * (V singolo disco) / 2

La velocità di lettura è uguale a quella del RAID 0 a parità di numero di dischi ma è doppia a parità di capacità totale : perché per avere la stessa capacità raddoppiamo ii dischi. Spiegando il raid 10  entreremo nel dettaglio dei calcoli perchè le velocità sono le stesse.

RAID 10

In pratica un RAID 10 è un raid 0 ma con i dati scritti 2 volte. E’ l’insieme di un raid 1 e di un raid 0 (1 + 0 = 10). Dato che lo stesso dato viene scritto 2 volte nel raid, la capacità totale del RAID risulta dimezzata.

Per fare un raid 10 occorrono minimo 4 dischi e numero di dischi pari.

 

Dovendo scrivere 2 volte il dato la velocità si dimezza :

velocità SCRITTURA RAID 10 = (N dischi) * (V singolo disco) / 2

In realtà a parità di capacità totale del raid e non del numero di dischi, la velocità di scrittura di un raid 0 coincide con quella del raid 10. Supponiamo di avere un raid 0 con 2 hard disk da 4TB, totale 8TB. Per avere la stessa capacità con un RAID 10, utilizzando lo stesso tipo di hard disk, dobbiamo comprare 4 dischi da 4TB. totale sempre 8TB (perché la capacità si dimezza).

velocità SCRITTURA RAID 0 = (N dischi) * (V singolo disco) = 2 * V

velocità SCRITTURA RAID 10 = (N dischi) * (V singolo disco) = 4 * V / 2 = 2 * V

Inoltre a parità di capacità, e quindi aumentando il numero di dischi per ottenere il raid 10, la velocità di lettura del raid 10 raddoppia rispetto al raid 0 per quanto detto sopra descrivendo la lettura dei dati in un raid 0

velocità LETTURA RAID 0 = (N dischi) * (V singolo disco) = 2 * V

velocità LETTURA RAID 10 = (N dischi) * (V singolo disco) = 4 * V

RAID 5

Per descrivere il RAID 5, introduciamo il concetto di parità. La parità è un valore di controllo dei dati : quando viene scritto un dato viene scritto anche il dato di parità che per esempio contiene il numero totale dei bit dei dati appena scritti. Questo è un dato di controllo : quando leggiamo i dati appena scritti se il numero totale dei bit non coincide con quelli di parità memorizzati prima, significa che il raid è in errore.

Per creare un raid 5 servono almeno 3 dischi. Uno dei dischi si può rompere ed il sistema continuerà a lavorare. Dovete però cambiare il disco rotto perchè, al successivo guasto di un altro disco, perderete tutti i dati.

La capacità totale di un array in RAID 5 e data dalla capacita totale dei dischi meno 1. Quindi nel RAID 5 si perde solo un disco. Per questo motivo è sicuramente il raid chc impiega meglio le capacità (e quindi il costo) dei dischi. Di contro è un raid molto lento.

Quando viene scritto un dato su un raid 5 il controller deve leggere la parità, verificarla e riscriverla. Ciò significa che un array RAID 5 dovrà leggere i dati, leggere la parità, scrivere i dati e infine scrivere la parità : quattro operazioni per ciascuna operazione effettiva di scrittura. La velocità di scrittura diminuisce, rispetto alla condizione normale di un fattore 4.

velocità SCRITTURA RAID 5 = (N dischi) * (V singolo disco) / 4

In un raid 5 uno dei dischi dell’array viene perso. Semplifichiamo dicendo che viene usato proprio per scrivere i dati di parità. Se quindi vogliamo ottenere un disco da 8 TB in raid 5, dobbiamo acquistare 3 dischi da 4TB.

velocità SCRITTURA RAID 5 = (N dischi) * (V singolo disco) = 3 * V / 4

velocità LETTURA RAID 5 = (N dischi) * (V singolo disco) = 3 * V

RAID 6

RAID 6 su RAID 5 con un ulteriore secondo livello di parità, quindi è più sicuro di RAID 5. Ogni operazione di scrittura richiede ai dischi di leggere i dati, leggere la prima parità, leggere la seconda parità, scrivere i dati, scrivere la prima parità e infine scrivere la seconda parità. La velocità di scrittura diminuisce, rispetto alla condizione normale di un fattore 6.

velocità SCRITTURA RAID 6 = (N dischi) * (V singolo disco) / 6

Quando si fa un raid un raid 6 si perdono ben 2 dischi. Se quindi vogliamo ottenere un disco da 8 TB in raid 6, dobbiamo acquistare 4 dischi da 4TB. (nb in questo esempio raid 10 e raid 6 richiedono  entrambi 4 dischi ma nessuno, in queste condizioni, farebbe il raid 6 rispetto al raid 10 perché questo è più veloce)

velocità SCRITTURA RAID 6 = (N dischi) * (V singolo disco) = 4 * V / 6 = 2 * V / 3   (2 terzi più lenta del 10)

velocità LETTURA RAID 6 = (N dischi) * (V singolo disco) = 4 * V

IOPS E INTERFACCE

Dispositivo IOPS Interfaccia
Unità RPM 5400 75-100 IOPS SATA III
Unità RPM 7200 125-150 IOPS SATA III
Unità RPM 10.000 140 IOPS SAS
Unità RPM 15.000 175-210 IOPS SAS
Unità SSD 40K-100K+ IOPS* SATA III

Documentazione

 

Posted on

Register a web application with Azure AD Portal App Registration to connect to a Microsoft 365 tenant

PowerShell Limits

Through Powershell it is possible to connect to a Microsoft 365 tenant to perform operations on users, groups and any other element of the tenant. When you use this tool, Powershell presents you with the mask for entering your account and password. You can write accounts and passwords directly in the Powershell script but it would be a serious security compromise.

Application

An alternative is to build a software that connects directly to the Tenant through customized keys present in the Tenant itself. In other words, it is necessary to communicate to the Tenant that there is a certain application that is authorized to access the Tenant. Furthermore, for each operation that you want to perform on the Tenant it is necessary to specify the appropriate permissions. To create these applications, we recommend that you follow the excellent tutorial “.Net Core console application for calling Microsoft Graph“.  This post proposes the images present in the previous tutorial only to specify how the application must be prepared on the Microsoft Tenant.

Register a web application with Azure AD Portal App Registration

Open a browser and navigate to the Azure Portal. Login using your account. Select the resource “Azure Active Directory”. On the left side menu, select “App regitstration”. Click New registration from the current page.

On the Register an application page, specify the following values:

  • Name = Name of your Application
  • Supported account types
  • Redirect URI
    • Type = Web
    • Value = https://localhost:8080   (*)

(*) The Redirect URI value must be unique within your domain. This value can be changed at a later time and does not need to point to a realy hosted URI.

It is now necessary to store 2 values that will be used in your application:

  • Application (client) ID
  • Directory (tenant) ID

Certificates & secrets

Click Certificates & secrets.

  1. Click New client secret.
  2. On the Add a client secret dialog, specify the following values:
    • Description = Your secret’s description
    • Expires = In 1 year (for example)
  3. Click Add.

After the screen has updated with the newly created client secret copy the VALUE of the client secret. This secret string is never shown again, so make sure you copy it now.

API permissions

Click API permissions.

  • Click Add a permission
  • On the Request API permissions panel select Microsoft Graph.

  • Select Application permissions.

Now you have to choose between the permissions to authorize your app. For example, to create an application to read alla information about Tenant’s users, in the “Select permissions” search box type “User”.Select User.Read.All from the filtered list. At the end, on the API permissions content blade, click Grant admin consent for the Tenant.

Summary of the data necessary for the application

Let’s see what data your application needs to connect and operate on the Microsoft Tenant.

  • applicationId = “xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”;
  • applicationSecret = “xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”;
  • tenantId = “xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”;
  • redirectUri = “https://localhost:8080”;
  • domain = “yourtenant.onmicrosoft.com”;

Permissions

  • User.Read.All : Read all users’ full profiles
  • User.ReadWrite.All : Read and write all users’ full profiles
  • Group.ReadWrite.All : Read and write all groups
  • Notes.ReadWrite.All : Read and write all OneNote notebooks

Documentation

Posted on

Apache su Windows – AH00072: make_sock: could not bind to address [::]:80

Scenario

Sul vostro Windows,  Apache non parte. Andate nell’event viewer e trovate l’evento di errore :

AH00072: make_sock: could not bind to address [::]:80

Problema

Il problema è dovuto al fatto che una applicazione sta utilizzando la porta 80 del vostro sito su Apache. Come scoprire quale è questa applicazione ?

Aprite il command prompt (cmd). Digitate

netstat -ano

Vedete tutte le porte aperte del vostro computer occupate da una applicazione. Trovate la riga che (in questo caso) riguarda la porta 80. Alla colonna PID è indicato il numero del programma che sta usando la vostra porta.

Aprite task manager (gestione attività) , nella tab “Dettagli” attraverso la colonna PID trovate il programma che sta usando la vostra porta.

Soluzione

Avete 2 possibilità : o fermate il programma oppure, se il programma vi serve, cambiate la porta usata da questo programma, se possibile, oppure quella usata da Apache.

Se il programma che avete trovato attraverso il PID è System, significa che è lo stesso Windows a bloccare la porta. Aprite i servizi e dovete stoppare il servizio “Servizio Pubblicazione sul Web“. Dovrete anche settare la partenza in manuale, se invece fosse in Automatico perché altrimenti il giorno dopo vi si ripresenterebbe il problema.

Posted on

Cron job su raspberry

I cron job sono operazioni pianificate che possiamo fare eseguire autonomamente ad un certo orario al nostro raspberry.

Log di Cron

Se non siamo esperti di Cron un buon metodo per capire se in nostri job vengono eseguiti correttamente o se incorrono in errori è quello di abilitare il log dei Cron. Questi non è abilitato in installazione. Per farlo, dovete editare il file /etc/rsyslog.conf.

sudo nano /etc/rsyslog.conf

Togliete il segno di commento alla riga

# cron.* /var/log/cron.log

Dovete riavviare il raspberry. Cron.log è il vostro file di log

Operazioni di utente e operazioni di sistema

Il file Crontab contiene le vostre operazioni. Esiste un file crontab per ciascun utente. Per editarlo :

crontab -e

Se però volete fare eseguire una operazione pianificata che impatta sul sistema, come per esempio un riavvio ad una certa ora, dovete editare il file crontab dell’utente root

sudo crontab -e

Impostazione del job

Nel crontab ogni riga è l’impostazione di una operazione pianificata. Ogni operazione pianificata è composta da 5 numeri più il comando che si vuole inserire. I numeri in sequenza sono minuti (0-59), ore (0-23, 0 = mezzanotte), giorno (1-31), mese (1-12), giorno della settimana (0-6, 0 = domenica). Il simbolo * (asterisco) in una delle posizioni dice di non considerare quel determinato filtro.

Esempi :

30 3 * * * /usr/script/miocomando.sh

Il comando sopra deve essere eseguito ogni giorno alle 3.30

15 * * * * /usr/script/miocomando.sh

Il comando sopra deve essere eseguito al 15esimo minuto di ogni ora, per sempre. Quindi viene eseguito 24 volte in un giorno.

Impostazione del comando

Nel nostro esempio non stiamo eseguendo un comando linux , bensì uno script, una lista di comandi contenuti nel file miocomando.sh. Se, per esempio, vogliamo eseguire un reboot dentro al nostro file avremo la riga sudo reboot now.

Dobbiamo però dire al sistema operativo quale programma usare per interpretare i comandi quando lo script viene eseguito. Per farlo aggiungiamo all’inizio del nostro script una particolare riga, chiamata shebang.

#!/bin/bash
sudo reboot now

Ricordate, infine, che per essere eseguito, un comando deve avere i permessi di esecuzione.


Approfondimento : https://hackerstribe.com/2015/raspberry-pi-crontab-e-cronjob/

Posted on

Spostare un database mysql – mariadb da un server windows ad un altro server windows

Installare xampp sul nuovo server.

Se acceso, spegnere mysql.

Nella cartella C:\xampp\mysql\data creare una nuova cartella, per esempio con il nome del database che state spostando.

Copiare in essa tutti i file dati (.frm, .ibd, .myd, .myi) dalla relativa cartella del vecchio server.

Copiare dal vecchio server nella stessa posizione del nuovo server, cioè nella cartella C:\xampp\mysql\data i file ib_logfile0, ib_logfile1, ibdata1

ate partire mysql. Aprite un prompt di dos, andate nella catella

cd C:\xampp\mysql\bin

mysql -u root -p

show databases;

Dovreste vedere il nuovo database aggiunto ai precedenti.

Aprire un altro prompt di dos e fate un check delle tabelle con i comandi

cd C:\xampp\mysql\bin

mysqlcheck -uroot -p VOSTRODATABASE

Aprite il browser e collegatevi a phpmyadmin con http://localhost/phpmyadmin

Dovreste vedere il database e le tabelle.