Office 365 Mailkonto in Thunderbird

Ich habe wie ihr wisst in meinem Nebengewerbe auch ein Office 365 Account. Da ich aber privat schon länger Xubuntu verwende, gibt es dort kein Outlook. Thunderbird funktioniert für mich wunderbar und bevor ich die MFA aktiviert habe, ging auch IMAP und SMTP darüber wunderbar mit Office 365. Nun ist es aber ja auch so, dass Microsoft seit Oktober 2022 nun Basic Auth deaktiviert. Jetzt hatte ich gestern ein Upgrade von Thunderbird gemacht und nochmals gegoogelt.
Mittlerweile unterstützt Thunderbird auch OAuth2.0 und mit diesem Wiki Artikel steht, wie man das einrichten kann.
Nun kann es natürlich auch noch vorkommen, dass ihr nun per IMAP alle E-Mails seht aber per SMTP trotzdem keine Mails versenden könnt. Googelt man weiter landet man auf dieser Seite.
Einfach mal Checken ob die SmtpClientAuthenticationDisabled aktiviert ist. Ansonsten einfach auf False setzen.
Check ob die Option an ist:
Get-CASMailbox -Identity yourname@your.domain

Und notfalls setzen.
Set-CASMailbox -Identity yourname@your.domain -SmtpClientAuthenticationDisabled $false

Natürlich vorher mit Connect-ExchangeOnline in die Exchange Online Powershell verbinden.

Exchange Online Verbindung per Powershell mit MFA

Wenn man in Office 365 MFA aktiviert hat, funktioniert leider die alte Verbindung zu Exchange Online per Powershell nicht mehr. Aber um das neue EXOModule zu installieren ist leider auch etwas Magie notwendig.
Zuerst muss Powershell-Get installiert werden.
Also eine Powershell mit Adminrechten aufmachen und folgenden Befehl abfeuern: Install-PackageProvider -Name NuGet -Force Damit wird NuGet für Powershell installiert und man sich nun Pakete für Powershell herunterladen und installieren. Unter anderem das vielfach geforderte Install-Module -Name ExchangeOnlineManagement
Danach kann man plötzlich mit Connect-ExchangeOnline -UserPrincipalName deine@mailadresse.de wieder eine Verbindung zur Exchange Online Shell aufbauen. Weil Windows dann vermutlich schon irgendwo deine Logindaten zum Beispiel von Teams hat und damit die Authentifizierung bist Du dann schon automatisch mit der Exchange Online Shell verbunden. Mehr Infos dazu hier.

Und das alles nur um mal DKIM für meine Domain einzurichten.
Dazu hab ich eben New-DkimSigningConfig -DomainName aichele-it-consulting.de -KeySize 2048 -Enabled $true eingegeben und habe damit schon die Schlüssel erstellt. Danach muss natürlich noch der CNAME Eintrag erstellen.
Dieser heißt immer gleich selector1._domainkey und selector2._domainkey als Name und als Wert immer das was diese Abfrage hier ausspuckkt: Get-DkimSigningConfig -Identity aichele-it-consulting.de | Format-List Selector1CNAME, Selector2CNAME Statt aichele-it-consulting.de eben deine eigene Domain eingeben. Hier in dieser Anleitung ist es auch ausführlich beschrieben. Über die GUI kann man nach Veröffentlichen der CNAME Einträge auch eine Aktivierung versuchen. Alternativ über die Powershell mal diese Ausgabe ausprobieren. Wenn bei Get-DkimSigningConfig -Identity aichele-it-consulting.de | Format-List nun bei Enabled ein True dahinter steht ist DKIM aktiviert. Wenn ihr noch ein Gmail Konto habt und eine E-Mail Adresse von eurer gerade mit DKIM aktivierten Office 365 E-Mail eine E-Mail dorthin schickt, könnt ihr auch schön prüfen ob DKIM funktioniert.

Und um DMARC dann auch noch einzurichten ist tatsächlich nicht mehr viel Magie notwendig. Nur ein TXT Eintrag auf der Domain wie hier beschrieben.
Er hört auf _dmarc und hat als Wert beispielsweise sowas: v=DMARC1; p=quarantine;

Und schon hat man auf mxtoolbox auch endlich wieder grünes Licht. Was macht man nicht alles um einen kleinen Beitrag zu leisten und keinen Spam zu verschicken.

Und weil ich das irgendwann sicherlich wieder brauche und mich gerade einen Wolf gesucht habe gibt es diesen Tipp hier mal zum Nachlesen.

Powershell in Office 365 (Exchange Online)

Powershell ist tatsächlich mittlerweile eine sehr gute Shell. Zwar doch auch wieder anders als beispielsweise die Bash. Aber dafür ist die Syntax schön einprägsam. Alle Befehle, die irgendwas ausgeben fangen mit "Get-" an und die Befehle zum Setzen mit "Set-". Natürlich kann ich mir ja trotzdem nie merken, wo was hinkommt. Dafür gibt es ja dann wieder das Internet.

Ein paar Standardbefehle sind trotzdem gut. Um sich mit Office 365 zu verbinden muss man aus welchen Gründen auch immer oft Adminrechte nutzen. Aber als Admin weiß man ja eh was man tut. ;)

Folgendes Snippet beispielsweise um entfernte Skripte zu erlauben, die Credentials für Office 365 abzufragen und am Ende sich zu verbinden.
Set-ExecutionPolicy RemoteSigned
$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
Import-PSSession $Session -DisableNameChecking

Mit folgendem kann man sich mal eine Mailbox Statistik ausgeben lassen (de.aichele ist hier mein Benutzer):
Get-MailboxStatistics de.aichele | Format-List DisplayName,TotalItemSize

Oder auch mal die Speichergrenzen der Mailbox von 50 GB auf einen kleineren Wert setzen (de.aichele ist hier mein Benutzer:
Set-Mailbox -Identity de.aichele -IssueWarningQuota 19.5gb -ProhibitSendQuota 19.75gb -ProhibitSendReceiveQuota 20gb -UseDatabaseQuotaDefaults $false

Oder auch mal um das leidige Winmail.dat Thema (TNEF genannt) zu lösen.

Auch das Anzeigen von Ordnern zu einer bestimmten Mailbox kann hilfreich sein. Beispielsweise wenn nach einer Migration und es fehlt ein Ordner (de.aichele ist hier mein Benutzer).
Get-Mailbox de.aichele | Select-Object alias | foreach-object {Get-MailboxFolderStatistics -Identity $_.alias | select-object Identity}

Die Powershell kann wirklich sehr viel und ist besonders im Zusammenspiel mit Office 365 ein sehr gutes Tool, dass man kennen und beherrschen sollte. Für konkrete Fälle gibt es meistens ja auch wieder das Internet zum Nachschauen.