Der Mailversand über Microsoft 365 mit Basic Auth ist ab September 2025 nicht mehr erlaubt. Damit weiterhin Mails aus SMT School versendet werden können, muss in M365 SMT School als App registriert werden. Dieser App kann danach die Berechtigung erteilt werden, Mails für bestimmte Postfächer zu versenden.
Grundsätzlich beschreibt https://learn.microsoft.com/en-us/exchange/client-developer/legacy-protocols/how-to-authenticate-an-imap-pop-smtp-application-by-using-oauth das Verfahren, die Dokumentation ist aber etwas kompliziert und scheint nicht überall vollständig zu sein. Die folgenden Schritte beschreiben die für den Versand aus SMT School notwendige Konfiguration.
Application in Microsoft 365 registrieren¶
(Siehe auch https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app )
Voraussetzungen:
- Zugriff auf das Microsoft 365 Admin Center
- Benutzer mit mindestens Application Developer Berechtigung
1. Neue App registrieren¶
- Anmelden im Microsoft 365 Admin Center(im Tenant des entsprechenden Kunden)
- Entra Admin Center öffnen (Menüpunkt im deutschen Admin Portal: Identität)
- App registrations öffnen
- Neue App registration erstellen. Der Display name kann frei gewählt werden, z.B. SMT School
2. Client Secret erstellen¶
- In der neu erstellten App ins Menü Certificates & secrets wechseln
- Ein neues Client secret erstellen (Description frei wählbar). Achtung: Der Value des neuen Secrets muss kopiert und irgendwo gespeichert werden. Später kann dieser hier nicht mehr angezeigt werden.
- Ablaufdatum des Client secrets notieren und allenfalls irgendwo eine Erinnerung vor Ablauf konfigurieren.

3. Berechtigungen erteilen¶
- In der neu erstellten App ins Menü API permissions wechseln
- Die folgende Berechtigungen aus APIs my organization uses / Application Permissions hinzufügen:
- Office 365 Exchange Online > Mail.Send
- Office 365 Exchange Online > SMTP.SendAsApp




- Die Berechtigung muss nach dem Hinzufügen noch genehmigt werden (Grant admin consent for …).

4. Angaben für die spätere Verwendung notieren¶
Die folgenden Angaben aus der neu registrierten App werden später benötigt:
- tenantId: Nummer 3 im Screenshot
- appName: Nummer 1 im Screenshot
- clientId: Nummer 2 im Screenshot
- clientSecret: Value, welcher in 2. Client Secret erstellen gespeichert wurde
Zusätzlich müssen diese Werte an SwissMains gesendet werden für die Weiterverarbeitung in den Reports.

Erweiterte Berechtigungen über PowerShell setzen¶
Damit Mails von den gewünschten Absendern verschickt werden können, muss die entsprechende Berechtigung pro Postfach vergeben werden. Dazu muss zuerst ein neues ServicePrincipal-Objekt für die registrierte App erstellt werden, danach können die Berechtigungen pro Postfach gesetzt werden.
Die folgenden Schritte müssen alle in derselben PowerShell ausgeführt werden.
1. PowerShell starten und vorbereiten¶
- PowerShell als Administrator starten
- Folgende Befehle ausführen, um die Module für Exchange und Entra zu laden (in [] die Werte aus 4. Angaben für die spätere Verwendung notieren eintragen). Bei Import-Module öffnet sich ein Anmeldefenster. Hier muss man sich mit einem M365 Admin-Account (am besten derselbe wie im vorherigen Schritt) anmelden. ``` Install-Module -name AzureAD (nur 1x notwendig) Install-Module -name ExchangeOnlineManagement (nur 1x notwendig) Import-Module -name AzureAD Import-Module -name ExchangeOnlineManagement Connect-AzureAD -TenantId [tenantId] Connect-ExchangeOnline -Organization [tenantId]
- Es sollte eine Zeile mit den Spalten ObjectId, AppId und DisplayName angezeigt werden
- Objekt in Variable speichern und damit neues Service Principal erstellen: ``` $app = Get-AzureADServicePrincipal -ObjectId [ObjectId aus letzter Zeile] $spDisplayName = "Service Principal for [appName]" New-ServicePrincipal -AppId $app.AppId -ServiceId $app.ObjectId -DisplayName $spDisplayName
MailServer-Parameter in Opus¶
(Wird von SwissMains konfiguriert)
In der SendMail() function in Opus müssen folgende Werte im Parameter MailServermitgegeben werden:
MailServer = [“Servername”,"ClientID","ClientSecret","TokenURL","Scope"];
wobei:
Servername = “smtp.office365.com” ClientID = clientId ClientSecret = clientSecret TokenURL = “login.microsoftonline.com/” + tenantId + “/oauth2/v2.0/token” Scope = “https://outlook.office365.com/.default”