Outlook.com - Connected Accounts - POP3/IMAP Sync

Vorwort

Das Feature “Connected Accounts” wurde offiziell 2018 von Microsoft eingestellt und kann seit dem im Webinterface nur mit großen Einschränkungen konfiguriert werden:

  • besteht gar kein “Connected Account” mehr, wird das Feature vollständig im Webinterface ausgeblendet. Keine Chance es darüber neuzukonfigurieren. Einziger Weg ist über die Remote Powershell.
  • ist ein “Connected Account” konfiguriert, taucht dieser auch im Webinterface auf. Danach lassen sich auch neue Accounts im Webinterface einrichten.
    • Die Webinterface Integration ist aber teilweise sehr verbuggt. Es kann schon mal vorkommen, dass die Buttons ohne Funktion bleiben. Dann hilft wieder nur der Weg über die Remote Powershell.

Dieses Feature bezieht sich auf das kostenlose E-Mail Angebot von Microsoft unter Outlook.com (Nachfolger von Hotmail, Live-Mail, …). Im kommerziellen Exchange Online existiert sowas IMHO gar nicht. Zudem wäre dort auch der Powershell Endpoint ein anderer!

Features

  • Abholen von E-Mails via POP3 inkl. ein-/ausschaltbarer Löschung der E-Mails in der Quelle
  • Sync von E-Mails via IMAP in einen automatisch erstellten Ordner unterhalb des Postfachs
    • :!: Vorsicht, neue E-Mails tauchen nicht im standard Posteingang auf. Je nach verwendeter Mail-App kann das unpraktisch sein.
  • Senden von E-Mails über den Connected Account.
    • Die E-Mails werden mit dem Absender des Connected Accounts bei Outlook.com eingeliefert. Outlook.com sucht sich dann eigenständig den korrekten Weg für die Zustellung über den fremden Account raus und übergibt sie authentifiziert via SMTP bei diesem, welcher die E-Mail dann ganz normal an sein Ziel übermittelt.

Die Sync-Zeiten sind ziemlich hoch. MS macht hierzu leider keine Angabe (ist ja auch offiziell nicht supported. :P). Ich bin bisher nicht zum Messen gekommen. Bisherigen Erkenntnissen Nach liegen die Sync-Intervalle bei 15-30 Minuten. Für dringende E-Mails oder zeitlich ablaufende E-Mail-Inhalte (bspw. OTP-Tokens) also nicht geeignet. ;)

Das Webinterface

  1. rechts oben über das Zahnrad die Einstellungen öffnen
  2. In der rechten Sidebar ganz runter scrollen und auf “Alle Outlook-Einstellungen anzeigen” klicken
  3. Menüpunkt: E-Mail → E-Mail synchronisieren

Remote Powershell

Zugangsdaten

Zugangsdaten werden über ein Credential Object übergeben. Daher vorher separat erzeugen.

Wer 2FA für seinen Microsoft Account konfiguriert hat, benötigt hierfür das separat zu generierende App-Passwort. Option dazu befinden sich in den Account-Sicherheitseinstellungen direkt neben den 2FA Optionen.

PS C:\Users\your_username> $Cred = Get-Credential

Session aufbauen

PS C:\Users\your_username> $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $Cred -Authentication Basic -AllowRedirection
PS C:\Users\your_username> Import-PSSession $Session
 
ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Script     1.0        tmp_jqmzjlu4.1jt                    {Add-MailboxFolderPermission, Approve-ElevatedAccessReques...

Der Name von dem Modul wird automatisch generiert und variiert. Über das Modul lassen sich aber die interessanten Befehle finden:

PS C:\Users\your_username> Get-Command -Module  tmp_jqmzjlu4.1jt
 
CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Function        Add-MailboxFolderPermission                        1.0        tmp_jqmzjlu4.1jt
Function        Approve-ElevatedAccessRequest                      1.0        tmp_jqmzjlu4.1jt
Function        Clear-ActiveSyncDevice                             1.0        tmp_jqmzjlu4.1jt
Function        Clear-MobileDevice                                 1.0        tmp_jqmzjlu4.1jt
Function        Deny-ElevatedAccessRequest                         1.0        tmp_jqmzjlu4.1jt
Function        Disable-App                                        1.0        tmp_jqmzjlu4.1jt
Function        Disable-InboxRule                                  1.0        tmp_jqmzjlu4.1jt
Function        Disable-SweepRule                                  1.0        tmp_jqmzjlu4.1jt
Function        Enable-App                                         1.0        tmp_jqmzjlu4.1jt
Function        Enable-InboxRule                                   1.0        tmp_jqmzjlu4.1jt
Function        Enable-SweepRule                                   1.0        tmp_jqmzjlu4.1jt
Function        Get-ActiveSyncDevice                               1.0        tmp_jqmzjlu4.1jt
Function        Get-ActiveSyncDeviceStatistics                     1.0        tmp_jqmzjlu4.1jt
Function        Get-App                                            1.0        tmp_jqmzjlu4.1jt
Function        Get-CalendarProcessing                             1.0        tmp_jqmzjlu4.1jt
Function        Get-CASMailbox                                     1.0        tmp_jqmzjlu4.1jt
Function        Get-Clutter                                        1.0        tmp_jqmzjlu4.1jt
Function        Get-ConsumerGroup                                  1.0        tmp_jqmzjlu4.1jt
Function        Get-ConsumerMailbox                                1.0        tmp_jqmzjlu4.1jt
Function        Get-ElevatedAccessApprovalPolicy                   1.0        tmp_jqmzjlu4.1jt
Function        Get-ElevatedAccessRequest                          1.0        tmp_jqmzjlu4.1jt
Function        Get-EventsFromEmailConfiguration                   1.0        tmp_jqmzjlu4.1jt
Function        Get-InboxRule                                      1.0        tmp_jqmzjlu4.1jt
Function        Get-Mailbox                                        1.0        tmp_jqmzjlu4.1jt
Function        Get-MailboxAutoReplyConfiguration                  1.0        tmp_jqmzjlu4.1jt
Function        Get-MailboxCalendarConfiguration                   1.0        tmp_jqmzjlu4.1jt
Function        Get-MailboxCalendarFolder                          1.0        tmp_jqmzjlu4.1jt
Function        Get-MailboxFolder                                  1.0        tmp_jqmzjlu4.1jt
Function        Get-MailboxFolderPermission                        1.0        tmp_jqmzjlu4.1jt
Function        Get-MailboxJunkEmailConfiguration                  1.0        tmp_jqmzjlu4.1jt
Function        Get-MailboxMessageConfiguration                    1.0        tmp_jqmzjlu4.1jt
Function        Get-MailboxOverrideConfiguration                   1.0        tmp_jqmzjlu4.1jt
Function        Get-MailboxPreferredLocation                       1.0        tmp_jqmzjlu4.1jt
Function        Get-MailboxRegionalConfiguration                   1.0        tmp_jqmzjlu4.1jt
Function        Get-MailboxSpellingConfiguration                   1.0        tmp_jqmzjlu4.1jt
Function        Get-MailboxStatistics                              1.0        tmp_jqmzjlu4.1jt
Function        Get-MailboxUserConfiguration                       1.0        tmp_jqmzjlu4.1jt
Function        Get-MessageCategory                                1.0        tmp_jqmzjlu4.1jt
Function        Get-MessageClassification                          1.0        tmp_jqmzjlu4.1jt
Function        Get-MobileDevice                                   1.0        tmp_jqmzjlu4.1jt
Function        Get-MobileDeviceStatistics                         1.0        tmp_jqmzjlu4.1jt
Function        Get-OnlineMeetingConfiguration                     1.0        tmp_jqmzjlu4.1jt
Function        Get-RbacDiagnosticInfo                             1.0        tmp_jqmzjlu4.1jt
Function        Get-Recipient                                      1.0        tmp_jqmzjlu4.1jt
Function        Get-ReportSubmissionPolicy                         1.0        tmp_jqmzjlu4.1jt
Function        Get-RetentionPolicy                                1.0        tmp_jqmzjlu4.1jt
Function        Get-RetentionPolicyTag                             1.0        tmp_jqmzjlu4.1jt
Function        Get-SenderPermission                               1.0        tmp_jqmzjlu4.1jt
Function        Get-SweepRule                                      1.0        tmp_jqmzjlu4.1jt
Function        Get-SyncRequest                                    1.0        tmp_jqmzjlu4.1jt
Function        Get-SyncRequestStatistics                          1.0        tmp_jqmzjlu4.1jt
Function        Get-UnifiedAuditSetting                            1.0        tmp_jqmzjlu4.1jt
Function        Get-User                                           1.0        tmp_jqmzjlu4.1jt
Function        Get-UserPhoto                                      1.0        tmp_jqmzjlu4.1jt
Function        Import-RecipientDataProperty                       1.0        tmp_jqmzjlu4.1jt
Function        New-App                                            1.0        tmp_jqmzjlu4.1jt
Function        New-ConsumerGroup                                  1.0        tmp_jqmzjlu4.1jt
Function        New-ElevatedAccessRequest                          1.0        tmp_jqmzjlu4.1jt
Function        New-InboxRule                                      1.0        tmp_jqmzjlu4.1jt
Function        New-MailboxFolder                                  1.0        tmp_jqmzjlu4.1jt
Function        New-MailMessage                                    1.0        tmp_jqmzjlu4.1jt
Function        New-PrivilegedIdentityManagementRequest            1.0        tmp_jqmzjlu4.1jt
Function        New-SweepRule                                      1.0        tmp_jqmzjlu4.1jt
Function        New-SyncRequest                                    1.0        tmp_jqmzjlu4.1jt
Function        Remove-ActiveSyncDevice                            1.0        tmp_jqmzjlu4.1jt
Function        Remove-App                                         1.0        tmp_jqmzjlu4.1jt
Function        Remove-InboxRule                                   1.0        tmp_jqmzjlu4.1jt
Function        Remove-MailboxFolderPermission                     1.0        tmp_jqmzjlu4.1jt
Function        Remove-MailboxUserConfiguration                    1.0        tmp_jqmzjlu4.1jt
Function        Remove-MobileDevice                                1.0        tmp_jqmzjlu4.1jt
Function        Remove-SweepRule                                   1.0        tmp_jqmzjlu4.1jt
Function        Remove-SyncRequest                                 1.0        tmp_jqmzjlu4.1jt
Function        Remove-UserPhoto                                   1.0        tmp_jqmzjlu4.1jt
Function        Reset-EventsFromEmailBlockStatus                   1.0        tmp_jqmzjlu4.1jt
Function        Resume-SyncRequest                                 1.0        tmp_jqmzjlu4.1jt
Function        Revoke-ElevatedAccessAuthorization                 1.0        tmp_jqmzjlu4.1jt
Function        Set-CalendarProcessing                             1.0        tmp_jqmzjlu4.1jt
Function        Set-CASMailbox                                     1.0        tmp_jqmzjlu4.1jt
Function        Set-Clutter                                        1.0        tmp_jqmzjlu4.1jt
Function        Set-ConsumerGroup                                  1.0        tmp_jqmzjlu4.1jt
Function        Set-ConsumerMailbox                                1.0        tmp_jqmzjlu4.1jt
Function        Set-ElevatedAccessRequest                          1.0        tmp_jqmzjlu4.1jt
Function        Set-EventsFromEmailConfiguration                   1.0        tmp_jqmzjlu4.1jt
Function        Set-InboxRule                                      1.0        tmp_jqmzjlu4.1jt
Function        Set-Mailbox                                        1.0        tmp_jqmzjlu4.1jt
Function        Set-MailboxAutoReplyConfiguration                  1.0        tmp_jqmzjlu4.1jt
Function        Set-MailboxCalendarConfiguration                   1.0        tmp_jqmzjlu4.1jt
Function        Set-MailboxCalendarFolder                          1.0        tmp_jqmzjlu4.1jt
Function        Set-MailboxFolderPermission                        1.0        tmp_jqmzjlu4.1jt
Function        Set-MailboxJunkEmailConfiguration                  1.0        tmp_jqmzjlu4.1jt
Function        Set-MailboxMessageConfiguration                    1.0        tmp_jqmzjlu4.1jt
Function        Set-MailboxRegionalConfiguration                   1.0        tmp_jqmzjlu4.1jt
Function        Set-MailboxSpellingConfiguration                   1.0        tmp_jqmzjlu4.1jt
Function        Set-MailUser                                       1.0        tmp_jqmzjlu4.1jt
Function        Set-RetentionPolicyTag                             1.0        tmp_jqmzjlu4.1jt
Function        Set-SweepRule                                      1.0        tmp_jqmzjlu4.1jt
Function        Set-SyncRequest                                    1.0        tmp_jqmzjlu4.1jt
Function        Set-UnifiedAuditSetting                            1.0        tmp_jqmzjlu4.1jt
Function        Set-User                                           1.0        tmp_jqmzjlu4.1jt
Function        Set-UserPhoto                                      1.0        tmp_jqmzjlu4.1jt
Function        Start-AuditAssistant                               1.0        tmp_jqmzjlu4.1jt
Function        Suspend-SyncRequest                                1.0        tmp_jqmzjlu4.1jt
Function        Test-DatabaseEvent                                 1.0        tmp_jqmzjlu4.1jt
Function        Test-MailboxAssistant                              1.0        tmp_jqmzjlu4.1jt

Uns interessieren vorallem:

  • New-SyncRequest
  • Remove-SyncRequest
  • Get-SyncRequest
  • Set-SyncRequest
  • Suspend-SyncRequest
  • Resume-SyncRequest

Connected Account anlegen

In diesem Beispiel mit einer POP3 Verbindung zu GMX. Geht natürlich auch mit anderen. ;)

# Passwort in SecureString konvertieren
PS C:\Users\your_username> $pw = (ConvertTo-SecureString -string "<mein_tolles_passwort>" -AsPlainText -force)
 
# Connected Account anlegen
PS C:\Users\your_username> New-SyncRequest -Name "<mein_toller_alias>@gmx.net" -RemoteEmailAddress "<mein_toller_alias>@gmx.net" -Password $pw -Pop -RemoteServerPort 995 -RemoteServerName pop.gmx.net -DoNotLeaveOnServer -Security ssl
 
RunspaceId                     : 00000000-0000-0000-0000-000000000000
Mailbox                        : EURP000.PROD.OUTLOOK.COM/Microsoft Exchange Hosted Organizations/sct-00-00-0000-00-msonline-outlook-00000.templateTenant/puid-0000000000000000
EmailAddress                   : <mein_toller_alias>@gmx.net
SyncProtocol                   : Pop
RemoteServerName               : pop.gmx.net
RemoteServerPort               : 995
SmtpServerName                 :
SmtpServerPort                 : 0
AuthenticationMethod           : Basic
SecurityMechanism              : Ssl
AcceptUntrustedCertificates    : False
DisplayName                    :
OAuthProvider                  : None
LastSuccessfulSyncTimestamp    :
LastUpdateTimestamp            : 04.12.2022 12:52:59
LastFailureTimestamp           :
InitialSyncCompletionTimestamp :
FailureType                    :
TargetRootFolder               :
InternalFlags                  : SkipKnownCorruptions,DoNotLeaveOnServer,UseDataConsistencyScore,UseFailureHistoryHandler
DoNotLeaveOnServer             : True
RemoteSendEnabled              : False
IsQuarantined                  : False
IsOauthSync                    : False
UserName                       : <mein_toller_alias>@gmx.net
SmtpUserName                   :
Name                           : <mein_toller_alias>@gmx.net
RequestGuid                    : 00000000-0000-0000-0000-000000000000
RequestQueue                   : EURP000DG000-db000
ExchangeGuid                   : 00000000-0000-0000-0000-000000000000
Flags                          : CrossOrg, Pull
WorkloadType                   : SyncAggregation
BatchName                      :
Status                         : Queued
Protect                        : False
Suspend                        : False
Direction                      : Pull
RequestStyle                   : CrossOrg
OrganizationId                 : EURP000.PROD.OUTLOOK.COM/Microsoft Exchange Hosted Organizations/sct-00-00-0000-00-msonline-outlook-00000.templateTenant - EURP000.PROD.OUTLOOK.COM/ConfigurationUnits/sct-00-00-0000-00-msonline-outlook-00000.templateTenant/Configuration
SourceMailboxSize              : 0
MailboxRopCount                :
WhenChanged                    : 04.12.2022 13:52:59
WhenCreated                    : 04.12.2022 13:52:59
WhenChangedUTC                 : 04.12.2022 12:52:59
WhenCreatedUTC                 : 04.12.2022 12:52:59
Identity                       : EURP000.PROD.OUTLOOK.COM/Microsoft Exchange Hosted Organizations/sct-00-00-0000-00-msonline-outlook-00000.templateTenant/puid-0000000000000000\<mein_toller_alias>@gmx.net
IsValid                        : True
ObjectState                    : New