Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Depois de concluir uma migração faseada, converta as caixas de correio no local em utilizadores com capacidade de correio para que os utilizadores no local possam ligar-se automaticamente às respetivas caixas de correio na nuvem.
Por que converter as caixas de correio em usuários habilitados para email?
Tem de converter as caixas de correio migradas no local para utilizadores com capacidade de correio (MEUs) para que possa gerir utilizadores baseados na nuvem a partir da sua organização no local com o Active Directory.
Este artigo inclui um script do PowerShell que recolhe informações das caixas de correio baseadas na nuvem e um script do Visual Basic (VB) que converte caixas de correio do Exchange 2003 em MEUs. Ao executar esse script, os endereços proxy da caixa de correio baseada em nuvem são copiados para o MEU, que reside no Active Directory. As propriedades do MEU permitem que a sincronização de diretórios corresponda ao MEU com a respetiva caixa de correio na nuvem correspondente.
Recomendamos que converta caixas de correio no local em MEUs para um lote de migração. Após a conclusão de um lote de migração faseada do Exchange, verificou que todas as caixas de correio no lote foram migradas com êxito e que a sincronização inicial de itens de caixa de correio para a nuvem está concluída, converta as caixas de correio no lote de migração para MEUs.
Script do PowerShell para coletar dados de caixas de correio na nuvem
Utilize os scripts nesta secção para recolher informações sobre as caixas de correio baseadas na nuvem e para converter as caixas de correio do Exchange 2003 em MEUs.
O script do PowerShell recolhe informações das suas caixas de correio na nuvem e guarda-as num ficheiro CSV. Execute primeiro este script.
Copie o script para o Bloco de Notas e guarde o ficheiro como ExportO365UserInfo.ps1.
Observação
Antes de executar o script, tem de instalar o Exchange Online módulo do PowerShell. Para obter instruções, veja Instalar e manter o módulo Exchange Online PowerShell. O módulo utiliza a autenticação moderna.
- Normalmente, é possível usar o script como está se sua organização for Microsoft 365 ou Microsoft 365 GCC. Se a organização for Office 365 Alemanha, Microsoft 365 GCC High ou Microsoft 365 DoD, você precisará editar a linha
Connect-ExchangeOnline
no script. Especificamente, tem de utilizar o parâmetro ExchangeEnvironmentName e o valor adequado para a sua organização. Para saber mais, confira Conectar-se ao Exchange Online usando o PowerShell Remoto.
Param($migrationCSVFileName = "migration.csv")
function O365Logon
{
#Check for current open O365 sessions and allow the admin to either use the existing session or create a new one
$session = Get-PSSession | ?{$_.ConfigurationName -eq 'Microsoft.Exchange'}
if($session -ne $null)
{
$a = Read-Host "An open session to Exchange Online PowerShell already exists. Do you want to use this session? Enter y to use the open session, anything else to close and open a fresh session."
if($a.ToLower() -eq 'y')
{
Write-Host "Using existing Exchange Online Powershell Session." -ForeGroundColor Green
return
}
Disconnect-ExchangeOnline -Confirm:$false
}
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline
}
function Main
{
#Verify the migration CSV file exists
if(!(Test-Path $migrationCSVFileName))
{
Write-Host "File $migrationCSVFileName does not exist." -ForegroundColor Red
Exit
}
#Import user list from migration.csv file
$MigrationCSV = Import-Csv $migrationCSVFileName
#Get mailbox list based on email addresses from CSV file
$MailBoxList = $MigrationCSV | %{$_.EmailAddress} | Get-Mailbox
$Users = @()
#Get LegacyDN, Tenant, and On-Premises Email addresses for the users
foreach($user in $MailBoxList)
{
$UserInfo = New-Object System.Object
$CloudEmailAddress = $user.EmailAddresses | ?{($_ -match 'onmicrosoft') -and ($_ -cmatch 'smtp:')}
if ($CloudEmailAddress.Count -gt 1)
{
$CloudEmailAddress = $CloudEmailAddress[0].ToString().ToLower().Replace('smtp:', '')
Write-Host "$user returned more than one cloud email address. Using $CloudEmailAddress" -ForegroundColor Yellow
}
else
{
$CloudEmailAddress = $CloudEmailAddress.ToString().ToLower().Replace('smtp:', '')
}
$UserInfo | Add-Member -Type NoteProperty -Name LegacyExchangeDN -Value $user.LegacyExchangeDN
$UserInfo | Add-Member -Type NoteProperty -Name CloudEmailAddress -Value $CloudEmailAddress
$UserInfo | Add-Member -Type NoteProperty -Name OnPremiseEmailAddress -Value $user.PrimarySMTPAddress.ToString()
$Users += $UserInfo
}
#Check for existing csv file and overwrite if needed
if(Test-Path ".\cloud.csv")
{
$delete = Read-Host "The file cloud.csv already exists in the current directory. Do you want to delete it? Enter y to delete, anything else to exit this script."
if($delete.ToString().ToLower() -eq 'y')
{
Write-Host "Deleting existing cloud.csv file" -ForeGroundColor Red
Remove-Item ".\cloud.csv"
}
else
{
Write-Host "Will NOT delete current cloud.csv file. Exiting script." -ForeGroundColor Green
Exit
}
}
$Users | Export-CSV -Path ".\cloud.csv" -notype
(Get-Content ".\cloud.csv") | %{$_ -replace '"', ''} | Set-Content ".\cloud.csv" -Encoding Unicode
Write-Host "CSV File Successfully Exported to cloud.csv" -ForeGroundColor Green
}
O365Logon
Main
O script do Visual Basic converte caixas de correio do Exchange 2003 no local em MEUs. Execute este script depois de executar o script do PowerShell para recolher informações das caixas de correio na nuvem.
Copie o script para o Bloco de Notas e guarde o ficheiro como Exchange2003MBtoMEU.vbs.
'Globals/Constants
Const ADS_PROPERTY_APPEND = 3
Dim UserDN
Dim remoteSMTPAddress
Dim remoteLegacyDN
Dim domainController
Dim csvMode
csvMode = FALSE
Dim csvFileName
Dim lastADLookupFailed
Class UserInfo
public OnPremiseEmailAddress
public CloudEmailAddress
public CloudLegacyDN
public LegacyDN
public ProxyAddresses
public Mail
public MailboxGUID
public DistinguishedName
Public Sub Class_Initialize()
Set ProxyAddresses = CreateObject("Scripting.Dictionary")
End Sub
End Class
'Command Line Parameters
If WScript.Arguments.Count = 0 Then
'No parameters passed
WScript.Echo("No parameters were passed.")
ShowHelp()
ElseIf StrComp(WScript.Arguments(0), "-c", vbTextCompare) = 0 And WScript.Arguments.Count = 2 Then
WScript.Echo("Missing DC Name.")
ShowHelp()
ElseIf StrComp(WScript.Arguments(0), "-c", vbTextCompare) = 0 Then
'CSV Mode
csvFileName = WScript.Arguments(1)
domainController = WScript.Arguments(2)
csvMode = TRUE
WScript.Echo("CSV mode detected. Filename: " & WScript.Arguments(1) & vbCrLf)
ElseIf wscript.Arguments.Count <> 4 Then
'Invalid Arguments
WScript.Echo WScript.Arguments.Count
Call ShowHelp()
Else
'Manual Mode
UserDN = wscript.Arguments(0)
remoteSMTPAddress = wscript.Arguments(1)
remoteLegacyDN = wscript.Arguments(2)
domainController = wscript.Arguments(3)
End If
Main()
'Main entry point
Sub Main
'Check for CSV Mode
If csvMode = TRUE Then
UserInfoArray = GetUserInfoFromCSVFile()
Else
WScript.Echo "Manual Mode Detected" & vbCrLf
Set info = New UserInfo
info.CloudEmailAddress = remoteSMTPAddress
info.DistinguishedName = UserDN
info.CloudLegacyDN = remoteLegacyDN
ProcessSingleUser(info)
End If
End Sub
'Process a single user (manual mode)
Sub ProcessSingleUser(ByRef UserInfo)
userADSIPath = "LDAP://" & domainController & "/" & UserInfo.DistinguishedName
WScript.Echo "Processing user " & userADSIPath
Set MyUser = GetObject(userADSIPath)
proxyCounter = 1
For Each address in MyUser.Get("proxyAddresses")
UserInfo.ProxyAddresses.Add proxyCounter, address
proxyCounter = proxyCounter + 1
Next
UserInfo.OnPremiseEmailAddress = GetPrimarySMTPAddress(UserInfo.ProxyAddresses)
UserInfo.Mail = MyUser.Get("mail")
UserInfo.MailboxGUID = MyUser.Get("msExchMailboxGUID")
UserInfo.LegacyDN = MyUser.Get("legacyExchangeDN")
ProcessMailbox(UserInfo)
End Sub
'Populate user info from CSV data
Function GetUserInfoFromCSVFile()
CSVInfo = ReadCSVFile()
For i = 0 To (UBound(CSVInfo)-1)
lastADLookupFailed = false
Set info = New UserInfo
info.CloudLegacyDN = Split(CSVInfo(i+1), ",")(0)
info.CloudEmailAddress = Split(CSVInfo(i+1), ",")(1)
info.OnPremiseEmailAddress = Split(CSVInfo(i+1), ",")(2)
WScript.Echo "Processing user " & info.OnPremiseEmailAddress
WScript.Echo "Calling LookupADInformationFromSMTPAddress"
LookupADInformationFromSMTPAddress(info)
If lastADLookupFailed = false Then
WScript.Echo "Calling ProcessMailbox"
ProcessMailbox(info)
End If
set info = nothing
Next
End Function
'Populate user info from AD
Sub LookupADInformationFromSMTPAddress(ByRef info)
'Lookup the rest of the info in AD using the SMTP address
Set objRootDSE = GetObject("LDAP://RootDSE")
strDomain = objRootDSE.Get("DefaultNamingContext")
Set objRootDSE = nothing
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand = CreateObject("ADODB.Command")
BaseDN = "<LDAP://" & domainController & "/" & strDomain & ">"
adFilter = "(&(proxyAddresses=SMTP:" & info.OnPremiseEmailAddress & "))"
Attributes = "distinguishedName,msExchMailboxGUID,mail,proxyAddresses,legacyExchangeDN"
Query = BaseDN & ";" & adFilter & ";" & Attributes & ";subtree"
objCommand.CommandText = Query
Set objCommand.ActiveConnection = objConnection
On Error Resume Next
Set objRecordSet = objCommand.Execute
'Handle any errors that result from the query
If Err.Number <> 0 Then
WScript.Echo "Error encountered on query " & Query & ". Skipping user."
lastADLookupFailed = true
return
End If
'Handle zero or ambiguous search results
If objRecordSet.RecordCount = 0 Then
WScript.Echo "No users found for address " & info.OnPremiseEmailAddress
lastADLookupFailed = true
return
ElseIf objRecordSet.RecordCount > 1 Then
WScript.Echo "Ambiguous search results for email address " & info.OnPremiseEmailAddress
lastADLookupFailed = true
return
ElseIf Not objRecordSet.EOF Then
info.LegacyDN = objRecordSet.Fields("legacyExchangeDN").Value
info.Mail = objRecordSet.Fields("mail").Value
info.MailboxGUID = objRecordSet.Fields("msExchMailboxGUID").Value
proxyCounter = 1
For Each address in objRecordSet.Fields("proxyAddresses").Value
info.ProxyAddresses.Add proxyCounter, address
proxyCounter = proxyCounter + 1
Next
info.DistinguishedName = objRecordSet.Fields("distinguishedName").Value
objRecordSet.MoveNext
End If
objConnection = nothing
objCommand = nothing
objRecordSet = nothing
On Error Goto 0
End Sub
'Populate data from the CSV file
Function ReadCSVFile()
'Open file
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFS.OpenTextFile(csvFileName, 1, false, -1)
'Loop through each line, putting each line of the CSV file into an array to be returned to the caller
counter = 0
Dim CSVArray()
Do While NOT objTextFile.AtEndOfStream
ReDim Preserve CSVArray(counter)
CSVArray(counter) = objTextFile.ReadLine
counter = counter + 1
Loop
'Close and return
objTextFile.Close
Set objTextFile = nothing
Set objFS = nothing
ReadCSVFile = CSVArray
End Function
'Process the migration
Sub ProcessMailbox(User)
'Get user properties
userADSIPath = "LDAP://" & domainController & "/" & User.DistinguishedName
Set MyUser = GetObject(userADSIPath)
'Add x.500 address to list of existing proxies
existingLegDnFound = FALSE
newLegDnFound = FALSE
'Loop through each address in User.ProxyAddresses
For i = 1 To User.ProxyAddresses.Count
If StrComp(address, "x500:" & User.LegacyDN, vbTextCompare) = 0 Then
WScript.Echo "x500 proxy " & User.LegacyDN & " already exists"
existingLegDNFound = true
End If
If StrComp(address, "x500:" & User.CloudLegacyDN, vbTextCompare) = 0 Then
WScript.Echo "x500 proxy " & User.CloudLegacyDN & " already exists"
newLegDnFound = true
End If
Next
'Add existing leg DN to proxy list
If existingLegDnFound = FALSE Then
WScript.Echo "Adding existing legacy DN " & User.LegacyDN & " to proxy addresses"
User.ProxyAddresses.Add (User.ProxyAddresses.Count+1),("x500:" & User.LegacyDN)
End If
'Add new leg DN to proxy list
If newLegDnFound = FALSE Then
'Add new leg DN to proxy addresses
WScript.Echo "Adding new legacy DN " & User.CloudLegacyDN & " to existing proxy addresses"
User.ProxyAddresses.Add (User.ProxyAddresses.Count+1),("x500:" & User.CloudLegacyDN)
End If
'Dump out new list of addresses
WScript.Echo "Original proxy addresses updated count: " & User.ProxyAddresses.Count
For i = 1 to User.ProxyAddresses.Count
WScript.Echo " proxyAddress " & i & ": " & User.ProxyAddresses(i)
Next
'Delete the Mailbox
WScript.Echo "Opening " & userADSIPath & " as CDOEXM::IMailboxStore object"
Set Mailbox = MyUser
Wscript.Echo "Deleting Mailbox"
On Error Resume Next
Mailbox.DeleteMailbox
'Handle any errors deleting the mailbox
If Err.Number <> 0 Then
WScript.Echo "Error " & Err.number & ". Skipping User." & vbCrLf & "Description: " & Err.Description & vbCrLf
Exit Sub
End If
On Error Goto 0
'Save and continue
WScript.Echo "Saving Changes"
MyUser.SetInfo
WScript.Echo "Refeshing ADSI Cache"
MyUser.GetInfo
Set Mailbox = nothing
'Mail Enable the User
WScript.Echo "Opening " & userADSIPath & " as CDOEXM::IMailRecipient"
Set MailUser = MyUser
WScript.Echo "Mail Enabling user using targetAddress " & User.CloudEmailAddress
MailUser.MailEnable User.CloudEmailAddress
WScript.Echo "Disabling Recipient Update Service for user"
MyUser.PutEx ADS_PROPERTY_APPEND, "msExchPoliciesExcluded", Array("{26491CFC-9E50-4857-861B-0CB8DF22B5D7}")
WScript.Echo "Saving Changes"
MyUser.SetInfo
WScript.Echo "Refreshing ADSI Cache"
MyUser.GetInfo
'Add Legacy DN back on to the user
WScript.Echo "Writing legacyExchangeDN as " & User.LegacyDN
MyUser.Put "legacyExchangeDN", User.LegacyDN
'Add old proxies list back on to the MEU
WScript.Echo "Writing proxyAddresses back to the user"
For j=1 To User.ProxyAddresses.Count
MyUser.PutEx ADS_PROPERTY_APPEND, "proxyAddresses", Array(User.ProxyAddresses(j))
MyUser.SetInfo
MyUser.GetInfo
Next
'Add mail attribute back on to the MEU
WScript.Echo "Writing mail attribute as " & User.Mail
MyUser.Put "mail", User.Mail
'Add msExchMailboxGUID back on to the MEU
WScript.Echo "Converting mailbox GUID to writable format"
Dim mbxGUIDByteArray
Call ConvertHexStringToByteArray(OctetToHexString(User.MailboxGUID), mbxGUIDByteArray)
WScript.Echo "Writing property msExchMailboxGUID to user object with value " & OctetToHexString(User.MailboxGUID)
MyUser.Put "msExchMailboxGUID", mbxGUIDByteArray
WScript.Echo "Saving Changes"
MyUser.SetInfo
WScript.Echo "Migration Complete!" & vbCrLf
End Sub
'Returns the primary SMTP address of a user
Function GetPrimarySMTPAddress(Addresses)
For Each address in Addresses
If Left(address, 4) = "SMTP" Then GetPrimarySMTPAddress = address
Next
End Function
'Converts Hex string to byte array for writing to AD
Sub ConvertHexStringToByteArray(ByVal strHexString, ByRef pByteArray)
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Stream = CreateObject("ADODB.Stream")
Temp = FSO.GetTempName()
Set TS = FSO.CreateTextFile(Temp)
For i = 1 To (Len (strHexString) -1) Step 2
TS.Write Chr("&h" & Mid (strHexString, i, 2))
Next
TS.Close
Stream.Type = 1
Stream.Open
Stream.LoadFromFile Temp
pByteArray = Stream.Read
Stream.Close
FSO.DeleteFile Temp
Set Stream = nothing
Set FSO = Nothing
End Sub
'Converts raw bytes from AD GUID to readable string
Function OctetToHexString (arrbytOctet)
OctetToHexStr = ""
For k = 1 To Lenb (arrbytOctet)
OctetToHexString = OctetToHexString & Right("0" & Hex(Ascb(Midb(arrbytOctet, k, 1))), 2)
Next
End Function
Sub ShowHelp()
WScript.Echo("This script runs in two modes, CSV Mode and Manual Mode." & vbCrLf & "CSV Mode allows you to specify a CSV file from which to pull usernames." & vbCrLf& "Manual mode allows you to run the script against a single user.")
WSCript.Echo("Both modes require you to specify the name of a DC to use in the local domain." & vbCrLf & "To run the script in CSV Mode, use the following syntax:")
WScript.Echo(" cscript Exchange2003MBtoMEU.vbs -c x:\csv\csvfilename.csv dc.domain.com")
WScript.Echo("To run the script in Manual Mode, you must specify the users AD Distinguished Name, Remote SMTP Address, Remote Legacy Exchange DN, and Domain Controller Name.")
WSCript.Echo(" cscript Exchange2003MBtoMEU.vbs " & chr(34) & "CN=UserName,CN=Users,DC=domain,DC=com" & chr(34) & " " & chr(34) & "user@cloudaddress.com" & chr(34) & " " & chr(34) & "/o=Cloud Org/ou=Cloud Site/ou=Recipients/cn=CloudUser" & chr(34) & " dc.domain.com")
WScript.Quit
End Sub
O que fazem os scripts?
ExportO365UserInfo.ps1
ExportO365UserInfo.ps1 é um script do PowerShell que executa na sua organização baseada na nuvem para recolher informações sobre as caixas de correio na nuvem que migrou durante a migração faseada do Exchange. Ele usa um arquivo CSV para criar um escopo para o lote de usuários. Recomendamos que utilize o mesmo ficheiro CSV de migração que utilizou para migrar um lote de utilizadores.
Quando executa o script ExportO365UserInfo, ocorrem as seguintes ações:
- As seguintes propriedades são recolhidas a partir das caixas de correio na nuvem para os utilizadores listados no ficheiro CSV de entrada:
- Endereço SMTP principal.
- Endereço SMTP principal da caixa de correio no local correspondente.
- Outros endereços proxy para a caixa de correio na nuvem.
- LegacyExchangeDN
- As propriedades coletadas são salvas em um arquivo CSV chamado Cloud.csv.
Exchange2003MBtoMEU.vbs
Exchange2003MBtoMEU.vbs é um script VB que executa na sua organização do Exchange 2003 no local para converter caixas de correio em MEUs. Utiliza o ficheiro Cloud.csv que foi produzido pelo ExportO365UserInfo.ps1 script do PowerShell.
Quando executa o script Exchange2003MBtoMEU.vbs, ocorrem as seguintes ações para cada caixa de correio listada no ficheiro CSV de entrada:
- coleta informações do arquivo CSV de entrada e da caixa de correio local;
- cria uma lista de endereços proxy da caixa de correio local e da caixa de correio na nuvem para adicionar ao MEU;
- exclui a caixa de correio local;
- Cria um MEU com as seguintes propriedades:
legacyExchangeDN: valor da caixa de correio no local.
correio: o SMTP principal da caixa de correio na nuvem.
msExchMailboxGuid: valor da caixa de correio no local.
proxyAddresses: valores da caixa de correio no local e da caixa de correio na nuvem.
targetAddress: ler a partir da caixa de correio no local; o valor é o SMTP principal da caixa de correio na nuvem.
Importante
Para ativar a exclusão de Exchange Online para o Exchange 2003, tem de substituir o valor da propriedade msExchMailboxGuid no MEU pelo GUID da caixa de correio baseada na nuvem. Para obter os valores GUID das caixas de correio baseadas na nuvem e guardá-los num ficheiro CSV, execute o seguinte Exchange Online comando do PowerShell:
Get-Mailbox | Select PrimarySmtpAddress,Guid | Export-csv -Path .\guid.csv
Esse comando extrai o endereço SMTP principal e o Guid para todas as caixas de correio na nuvem para dentro do arquivo guid.csv e, depois, salva esse arquivo no diretório atual.
Em vez de usar o arquivo CSV de entrada para converter um lote de caixas de correio, é possível executar o script Exchange2003MBtoMEU.vbs no modo manual para converter uma caixa de correio de cada vez. Se escolher este método, terá de fornecer os seguintes parâmetros de entrada:
- o nome diferenciado (DN) da caixa de correio local;
- o endereço SMTP principal da caixa de correio na nuvem;
- o DN Herdado do Exchange para a caixa de correio na nuvem;
- um nome de controlador de domínio em sua organização do Exchange 2003.
Etapas para converter as caixas de correio locais em MEUs
Execute ExportO365UserInfo.ps1 na sua organização Exchange Online. Use o arquivo CSV para o lote de migração como arquivo de entrada. O script cria um arquivo CSV chamado Cloud.csv.
cd <location of the script> .\ExportO365UserInfo.ps1 <CSV input file>
Por exemplo:
cd c:\data\scripts .\ExportO365UserInfo.ps1 .\MigrationBatch1.csv
Copie o Exchange2003MBtoMEU.vbs e o Cloud.csv para o mesmo diretório em sua organização local.
Em sua organização local, execute o seguinte comando:
cscript Exchange2003MBtoMEU.vbs -c .\Cloud.csv <FQDN of on-premises domain controller>
Por exemplo:
cscript Exchange2003MBtoMEU.vbs -c .\Cloud.csv DC1.contoso.com
Para executar o script no modo manual, insira o seguinte comando. Use espaços entre cada valor.
cscript Exchange2003MBtoMEU.vbs "<DN of on-premises mailbox>" "<Primary SMTP of cloud mailbox>" "<ExchangeLegacyDN of cloud mailbox>" <FQDN of on-premises domain controller>
Por exemplo:
cscript Exchange2003MBtoMEU.vbs "CN=Ann Beebe,CN=Users,DC=contoso,DC=com" "annb@contoso.onmicrosoft.com" "/o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=d808d014cec5411ea6de1f70cc116e7b-annb" DC1.contoso.com
Verifique se os novos MEUs foram criados. No Usuários e Computadores do Active Directory, efetue os seguintes passos:
Clique em Localizar Ação>.
clique em guia Exchange;
Selecione Mostrar apenas destinatários do Exchangee, então, selecione Usuários com endereço de email externo.
Clique em Localizar agora.
As caixas de correio que foram convertidas em MEUs são listadas nos Resultados da pesquisa.
Utilize Usuários e Computadores do Active Directory, Edição ASI ou Ldp.exe para verificar se as seguintes propriedades do MEU estão preenchidas com as informações corretas:
- legacyExchangeDN
- msExchMailboxGuid*
- proxyAddresses
- targetAddress
* Conforme explicado anteriormente, o script Exchange2003MBtoMEU.vbs retém o valor do msExchMailboxGuid da caixa de correio local. Para ativar o off-boarding do Microsoft 365 ou Office 365 para o Exchange 2003, tem de substituir o valor da propriedade msExchMailboxGuid no MEU pelo GUID da caixa de correio baseada na nuvem.