Verwenden der Powershell zum erstellen eines formatierten Auto-Replays bei einer shared-Mailbox

Die Aufgabe bestand darin bei einer shared-Mailbox eine automatische Antwort zu generieren. Bei der Antwort handelte es sich um eine Bestätigung des Rechnungseingangs.

Hier der zu verwendende Text:

„Sehr geehrte Damen und Herren, vielen Dank für Ihre Rechnung.
Bitte sehen Sie davon ab, diese auch in Papierform an uns zu senden.
Vielen Dank für Ihren aktiven Beitrag zum Umweltschutz.“

Um den Text in den Powershell-Befehl einlesen zu können verwenden wir eine einfache Textdatei. Bei der Textdatei ist auf die Kodierung beim speichern zu achten, damit die Umlaute im Text auch richtig dargestellt werden. Ich verwende hierbei Notepad++, da sich hier die Kodierung angeben lässt in diesem Fall UTF-8-BOM.

Für die restliche Formatierung , können wir HTML-Tags verwenden.
Da in unserem Text lediglich Umbrüche vorkommen, lässt sich dies mit einem einfachen <br> an den Satzenden bewerkstelligen.

Nun zu den Befehlen in der Exchange-Powershell:

Zunächst lesen wir den Text in eine Varialbel:
$outMessage = Get-Content „Dateiname.txt“

Danach setzen wir die automatische Antwort mit:
Set-MailboxAutoReplyConfiguration -Identity <Postfach-Alias>
-AutoReplyState Enabled –ExternalMessage $outMessage
-ExternalAudience ‚All‘

Damit ist die Nachricht konfiguriert und wir automatisch an alle externen Sender versendet. Möchte man die automatische Antwort wieder deaktivieren verwendet man folgenden Befehl:

Set-MailboxAutoReplyConfiguration -Identity <Postfach-Alias>
-AutoReplyState Disabled

Ich hoffe dies ist für den ein oder anderen eine nützliche Information.

Link zur Microsoft-Dokumentation:
Set-MailboxAutoReplyConfiguration


Posted in Exchange Server and tagged , , , , with comments disabled.

Das Verhalten beim Löschen und senden von Mails bei shared Postfächern steuern

Verwendet man eine shared-Mailbox fällt einem auf das wenn jemand eine Mail aus diesem Postfach versendet, diese nicht unter den gesendeten Mails des Postfach zu finden sind, sondern nun in dem des Sendenden. Genauso verhält es sich beim Löschen von Mails aus einer shared-Mailbox, die gelöschte Mail landet in der Mailbox desjenigen der sie gelöscht hat. Wenn mehrere Personen mit so einem Postfach arbeiten, wird es schwierig bestimmte Vorgange nachzuverfolgen.

Das zuvor beschriebene Verhalten ist als Standard zu verstehen und erstmal von seitens Microsoft auch so gewollt. Das ganze lässt sich aber über den Exchange selbst und Outlook steuern.

In der Exchange-Konsole lässt sich mit folgenden Befehlen das Verhalten vom senden so steuern, das gesendete Mails sowohl im gesendete Elemente Ordner der shared-Mailbox sowie in der des Sendenden landet.

Befehl für „Senden im Auftrag..“:
Set-Mailbox <Identity> -MessageCopyForSendOnBehalfEnabled $true

Befehl für „Senden als…“:
Set-Mailbox <Identity> -MessageCopyForSentAsEnabled $true

Das Verhalten beim löschen lässt sich dahingehend nur über Oulook selbst steuern, hierzu muss eine entsprechender Registry-Eintrag am System gesetzt werden:

Registry-Wert:
HKCU\SOFTWARE\Microsoft\Office\16.0\Outlook\Options\General

DelegateWastebasketStyle
REG_DWORD
Wert: 0x4 (4)

Hierbei macht es Sinn diesen Wert über Gruppenrichtlinien zu verteilen.


Posted in Exchange Server and tagged , , , , with comments disabled.

Mailstore: Aktivierung des HTTPS-Zugriff auf Exchange führt zu einem EWS Fehler bei Verwendung des FQDN

Mailstore kann bei Installation direkt auf dem Exchange nicht über den FQDN auf das EWS zugreifen. Es kommt zu einem Authentifizierungs-Fehler. Erfolgt der Zugriff über localhost, funktioniert die Authentifizierung reibungslos. Grund hierfür ist die Änderung eines Registry-Wertes durch Updates des Exchange-Servers.

HKLM\SYSTEM\CurrentControlSet\Control\Lsa

DisableLoopbackCheck Dword 1

Durch diesen Eingriff funktioniert die Autodiscover-Funktion direkt am Exchange nicht mehr.

Testen kann man dies mit folgendem Befehl in der Exchange-Konsole:

Test-OutlookWebServices -identity: xxx@mydomain.com –MailboxCredential (Get-Credential)

Die Autoermittlung wird in der Ausgabe der Konsole mit „failure“ angegeben.

Über den folgenden Befehl können wir uns weitere Informationen einblenden unter anderem den Eintrag „realm=“xxx““. Diesen Wert benötigen wir zum beheben des Problems.

Test-OutlookWebServices -identity: xxx@mydomain.com –MailboxCredential (Get-Credential) |
fl

Um das Problem nun zu beheben erstellen wir folgenden Registry-Eintrag:

HKLM\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0

BackConnectionHostNames (Wert der mehrteiligen Zeichenfolge) den Wert aus REALM eintragen.

Nach einem Neustart des IIS, sollte die AutoErmittlung lokal am Exchange Server wieder funktionieren.

Ab der Version 13.0.2 von Mailstore wird einem beim anlegen eines Archivierungstask weiterhin die Möglichkeit angeboten SSL-Warnungen zu ignorieren. Allerdings wird dies im LOG nicht mehr als Information sondern als Warnung dokumentiert.

Dies führt bei Sensoren zur Überwachung dazu, das diese den Fehler nun auch melden obwohl die Funktion nicht eingeschränkt ist.


Posted in Exchange Server and tagged , , , with comments disabled.

Fehler: RecipientNotFound-PermanentException: Error: Cannot find a recipient that has mailbox GUID „GUID“.

Über den im Titel genannten Fehler bin ich bei einer Migration eines Postfachs zu O365 gestolpert. Man findet hierzu bei Microsoft direkt einen KB-Eintrag, dieser beschäftigt sich aber mit dem „offboarding“, also dem verschieben des Postfachs von O365 zu on-Prem. Die im Beitrag genannten Befehle helfen aber schonmal das Problem weiter einzugrenzen.

Der Befehl Get-Mailbox <Identity> | fl ExchangeGuid in der lokalen Exchange-Console eingegeben zeigt uns die lokale ExchangeGuid an.

Der Befehl Get-MailUser <Identity>| fl ExchangeGuid in der Exchange Online Powershell zeigt uns nach erfolgreicher Verbindung die ExchangeGuid in der Microsoft Cloud an.

Hierbei fällt nun auf das beide Guids identisch sind und sich diese von der Guid aus der Fehlermeldung unterscheiden.

Woher kommt nun diese Guid? Bei dieser handelt es sich um die Guid des „Shared-Postfachs“ das automatisch in der Cloud angelegt wird, sobald das Benutzerkonto dorthin synchronisiert wurde. Dieses Postfach was in der Oberfläche nicht zu sehen ist, dient dem Austausch von Informationen zwischen dem Online- und dem on-Prem-Exchange.

Mithilfe der Exchange Online Powershell lässt sich die Guid sichtbar machen. Der Befehl hierfür lautet Get-MailboxLocation -Identity <SMTP-Adresse> | fl MailboxGuid. Diese ist mit der Guid aus der Fehlermeldung nun auch identisch.

LÖSUNG

Um das Postfach nun erfolgreich zu Migrieren, bin ich wie folgt vorgegangen:

  1. Entfernen der O365 Lizenz vom Benutzer
  2. Löschen des Benutzers im Azure-AD über Powershell*
  3. Entfernen des Benutzers aus dem Papierkorb in Azure-AD**
  4. Sync mit Azure-AD Connect durchgeführt
  5. Anlage des Benutzers im Online Portal geprüft
  6. Lizenz im Office-Portal dem Benutzer wieder zugewiesen
  7. Neuen Batchmigration Task angelegt und gestartet
  8. Fertig! (Migration erfolgreich)

WICHTIG: Im Anschluss ist es notwendig am Client des betroffenen Benutzers die Anmeldedaten (SSO) einmal in der Systemsteuerung zu entfernen. Zusätzlich kann es notwendig sein das Mailprofil neu zu erstellen.

*)Remove-MsolUser -UserPrincipalName <Identity>
**)Remove-MsolUser -UserPrincipalName <IDentity>
-RemoveFromRecycleBin

Links zu weiterführenden Informationen:
Exchange Online Powershell
Azure-AD Connect Powershell


Posted in Microsoft O365 and tagged , , , , with comments disabled.