Fehlerhafte Absenderadressen in Office365 Exchange – Lösung


sehr verwirrender ArtikelNaja, ganz OKbrauchbar für Checker...guter Artikelsehr guter Artikel - Danke

Problem:
Aus dem Active Directory nach Office 365 exportierte Benutzer haben als erste E-Mail-Adresse nicht die gewünschten “Domänenerweiterungen”, sondern Adressen nach dem Muster

Benutzername@MeineFirma.onmicrosoft.com
und zusätzlich
Benutzername@wunschdomain.at

Mails können an beide Adressen versandt bzw. empfangen werden, beim Versenden wird aber die unerwünschte
Benutzername@MeineFirma.onmicrosoft.com
als Absenderadresse verwendet, was nicht nur etwas ungünstig wirkt, sondern bei manchen als SPAM klassifiziert wird.

Ursache:
Während der Synchronisierung der Benutzer aus Active Directory mittels Synchronization Service Manager bzw. Azure AD Connect werden auch alle Attribute synchronisiert. Dazu zählt auch das Feld “E-Mail”.
Ist dieses Feld leer, dann wird nach der Synchronisierung automatisch eine Mailbox angelegt nach obigem Muster.

Der Versuch, den Eintrag für den Primären SMTP-Server per PowerShell zu ändern schlägt fehl!
Fehlermeldung:

Fehler bei Vorgang für Postfach "BRGM_TestUser", da es außerhalb des 
Schreibbereichs für den aktuellen Benutzer liegt. Die Aktion 'Set-Mailbox',
'EmailAddresses', kann nicht für das Objekt 'BRGM_TestUser' durchgeführt 
werden, weil dieses Objekt von lokal synchronisiert wird. Diese Aktion sollte
lokal für das Objekt durchgeführt werden.

——————————– EXKURS – ist zur Problemlösung völlig uninteressant                    ——————-

Zur Info – und damit ich es selber schneller finde beim nächsten Anlass:

1.) PowerShell-Script, um alle User inkl. einschlägiger Attribute in ein csv zu exportieren:
HINWEIS: PowerShell als Administrator starten und folgenden Befehl absetzen:
Set-ExecutionPolicy Unrestricted

$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "https://outlook.office365.com/powershell-liveid/" -Credential $cred -Authentication Basic -AllowRedirection
 Import-PSSession $session
 Get-Mailbox -Resultsize Unlimited | Select Alias, UserPrincipalName, WindowsEmailAddress | Export-Csv "C:\off365\user.csv"

2.) csv entsprechend ändern – WICHTIG: Felder MÜSSEN mit KOMMA (NICHT SEMIKOLON) getrennt sein!!!

Recipient PrimaryEmail AliasEmail
edi.mustermann edi.mustermann@MeineSchule.at edi.mustermann@MeineSchule.onmicrosoft.com

3.) Das PowerShell-Script, das mit den Daten aus dem .csv die Primary SMTP-Address ändert:

$Recipients = Import-Csv C:\off365\User.csv
Foreach ($Mailbox in $Recipients)
{
Set-Mailbox -Identity $Mailbox.Recipient -EmailAddresses $Mailbox.PrimaryEmail,$Mailbox.AliasEmail 
}

——————————————————— EXKURS – ENDE  ——————————————————–

Lösung:
Das entsprechende Attribut “E-Mail” muss direkt in Active Directory am DC für den jeweiligen User geändert werden! (Im FachChargon würde das dann “On Premises” genannt werden)
Danach wird es automatisch synchronisiert und die Einträge stimmen auch in Office 365.

Nachdem das für ein paar Hundert User nicht manuell durchführbar ist, hier ein VBScript, mit dem im Bulk – also massenhaft – Benutzern das Attribut eingetragen wird:
(Quelle: Scripting Guys und ein paar Extrazeilen)

On Error Resume Next
Const ADS_SCOPE_SUBTREE = 2
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand =   CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 

objCommand.CommandText = "SELECT name, distinguishedName FROM 'LDAP://OU=Schueler,OU=Benutzer,DC=MeineSchule,DC=at' WHERE objectCategory='user'"

Set objRecordSet = objCommand.Execute

objRecordSet.MoveFirst

Do Until objRecordSet.EOF

    'Wscript.Echo objRecordSet.Fields("distinguishedName").Value
	Wscript.Echo objRecordSet.Fields("Name").Value

			Set objUser = GetObject("LDAP://" & objRecordSet.Fields("distinguishedName").Value)

		    objUser.Put "mail", objRecordSet.Fields("Name").Value & "@meineDomain.at" 
		    objUser.SetInfo

    objRecordSet.MoveNext

Loop

Verwendung:
Auf einen DomänenController als “Emailer.vbs” speichern und die Einträge an die eigene Domäne anpassen!
(Zeile 11 und Zeile 24)
Abschließend in einer Command-Shell mit
cscript Emailer.vbs
starten.

Die Benutzernamen schwirren dann über den Bildschirm – und nach wenigen Sekunden haben alle Benutzer den gewünschten Eintrag im Feld E-Mail im AD. Nach der nächsten Synchronisierung dann auch in Office 365.

In Office 365 bleiben weiterhin beide zu Beginn genannten Mailadressen erhalten, auch am Loginnamen ändert dies nichts! Lediglich der Eintrag für den Primary SMTP-Server (=Absendeadresse) wird geändert.

 


This entry was posted in Active Directory, Azure, Office 365, Powershell, Scripts. Bookmark the permalink.

Hinterlasse eine Antwort