Exchange Online PowerShell V2 Copy “Senden Als” Mail in das originale Postfach kopieren

The estimated reading time 3 minutes

Ich habe mich entschieden diesen Artikel zu schreiben, da die „Senden Als“ Funktion immer wieder für Verwirrung und einige Mythen sorgt.
Viele Firmen nutzen diese durchaus nützliche Funktion um ihre persönliche E-Mail Adresse zu verschleiern. Auch zum Senden aus einem Team Postfach bestens geeignet. Nun zum eigentlichen „Problem“ (manche bemerken gar nicht, dass ein Problem besteht). Wenn also ein Benutzer die Berechtigung „Senden Als“ nutzt werden die gesendeten nicht in im anderen Postfach unter „gesendete“ abgelegt, sondern im eigenen. Meistens fällt dies in Verbindung mit freigegebenen Postfächern auf. Wenn mehrere Benutzer das Postfach als Ausgangspostfach verwenden, werden die ausgehenden Mails nicht dort abgelegt, sprich die Benutzer sehen die ausgegangenen Mails der anderen Benutzer nicht.
Hierzu gibt es auch einen offiziellen MS-Artikel

Damit Exchange dies automatisch erledigt, muss diese „Funktion“ pro Postfach aktiv geschaltet werden. Dies kann nur über die PowerShell erledigt werden.

Set-Mailbox sharedmailbox@it-koehler.com -MessageCopyForSendOnBehalfEnabled $true

Nach dem Absetzen des Befehls wird jede Nachricht, die „gesendet als“ im „Gesendete“ Ordner von Exchange Online abgelegt.

Wie kommen wir nun an die Exchange Online PowerShell heran? Vor einiger Zeit wurde ein neues Modul für Exchange Online freigegeben;  Exchange Online PowerShell V2

Siehe Link für die Anleitung zur Installation Link-MS-Artikel

Deshalb nur hier in Kürze wie ich das Modul bei mir installiert habe:

Install-Module -Name ExchangeOnlineManagement -Scope AllUsers -Verbose -Force
Import-Module -Name ExchangeOnlineManagement -Verbose
Get-Module ExchangeOnlineManagement
$creds = Get-Credential
Connect-ExchangeOnline -Credential $creds 

Nach der erfolgreichen Verbindung zu EX Online können folgende cmdlets verwendet werden.

#see all mailboxes with reduced properties
Get-EXOMailbox
#see all mailboxes with "all" properties 
Get-EXOMailbox -PropertySets All
#get all mailboxes and see where MessageCopy is enabled
Get-EXOMailbox -PropertySets Delivery | fl *userprin*,*copy*

Wer gerne etwas mehr hierzu erfahren möchte kann sich auf diesem LINK informieren.

Wie schon erwähnt wird diese Funktion sehr oft bei freigegebenen Postfächern benötigt. Was ist nun also wenn man sehr viele davon hat und nicht alle einzeln berechtigen möchte.
Mein kleines Skript im Nachgang kann dies übernehmen, zusätzlich habe ich noch etwas Output geschrieben, sodass auch nachvollzogen werden kann, ob das Skript funktioniert hat.

Skript:

Beispiel Ausgabe des Skriptes
#getting all shared mailboxes and related properties
$sharedmailboxes = Get-EXOMailbox -PropertySets Delivery -Properties RecipientTypeDetails  | Where-Object{$_.RecipientTypeDetails -eq "SharedMailbox"}  | Sort-Object UserPrincipalName
#modify every shared mailbox
foreach($mb in $sharedmailboxes){
  $upn = ($mb).UserprincipalName
  Write-Host "$upn MessageCopySentAs before modification:" $mb.MessageCopyForSentAsEnabled -ForegroundColor Yellow
  Write-Host "$upn MessageCopyForSendOnBehalf before modification:" $mb.MessageCopyForSendOnBehalfEnabled  -ForegroundColor Yellow
  Write-Host "Changing MessageCopySentAs and MessageCopySendOnBehalf for user $upn " -ForegroundColor Cyan
  #setup the mailbox for copy enabled
  Set-Mailbox -Identity $upn -MessageCopyForSentAsEnabled $true -MessageCopyForSendOnBehalfEnabled $true
  #check if set correctly
  $changeduser = Get-EXOMailbox -PropertySets Delivery -Identity $upn
  $messagecopysentas = ($changeduser).MessageCopyForSentAsEnabled
  $messagecopysendonbehalf = ($changeduser).MessageCopyForSendOnBehalfEnabled 
  #check if messagecopy sentas is set to true
    if($messagecopysentas){
      Write-Host "User $upn MessageCopyForSentAsEnabled is set to $messagecopysentas" -ForegroundColor Green
    }
    else{
      Write-Host "error:User $upn MessageCopyForSentAsEnabled is set to $messagecopysentas, please try manually" -ForegroundColor Red 
    }
  #check if messagecopy sendonbehalf is set to true
    if($messagecopysendonbehalf){
      Write-Host "User $upn MessageCopyForSendOnBehalf is set to $messagecopysendonbehalf" -ForegroundColor Green
    }
    else{
      Write-Host "error:User $upn MessageCopyForSendOnBehalf is set to $messagecopysendonbehalf, please try manually" -ForegroundColor Red 
    }
}

Kurz beschrieben: es sucht nach allen Freigegebenen Postfächern und setzt folgende Parameter:
MessageCopyForSentAsEnabled $true
MessageCopyForSendOnBehalfEnabled $true

Nach dem Setzen der Parameter wird die Option nochmals geprüft und falls es nicht funktioniert wird eine rote Fehlermeldung ausgegeben. Bald gibt es einen weiteren Artikel über das Thema Exchange Online PowerShell V2 usecases. Viel Spaß mit dem Skript. Falls euch der Artikel gefallen hat, klickt bitte auf „Helpful“, wenn ihr Fragen habt, dann einfach einen Kommentar da lassen. Bis bald.

Print Friendly, PDF & Email
Was this article helpful?
YesNo
5 1 vote
Article Rating
Abonnieren
Benachrichtige mich bei
guest
3 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
Andy
Andy
1 Jahr zuvor

Hi, nun werden die gesendeten Mails ja in den Ordner „Gesendete Elemente“ des Original Postfachs UND des freigebenen Postfachs kopiert. Hast du mir einen Tipp, wie ich verhindern kann, dass das Original Postfach die über das freigebene Postfach gesendeten Mails bekommt? Hintergrund ist, dass das Original Postfach von Dritten mitgelesen wird und diese nicht die Mails des freigebenen Postfachs lesen sollen, auch nicht die Gesendeten. Vielen Dank und Gruß!

Andy
Andy
Reply to  A.K.
1 Jahr zuvor

Vielen Dank für deine Antwort!