Exchange 2010 SP2 – 2019. Vi opretter udgående forbindelse over HTTPS til https://<host>/EWS/Exchange.asmx, autentificerer som én servicekonto og repræsenterer de postkasser, der er inden for scope. Ingen Autodiscover, ingen MAPI/RPC, ingen agent installeret på Deres servere.
Forudsætninger
Exchange Server 2016, 2019 eller Subscription Edition (SE), on-premise
En postkasse-aktiveret AD-servicekonto, som vi kan autentificere som (§1)
ApplicationImpersonation- ogMailbox Search-rollerne på denne konto (§2)EWS-den virtuelle mappe skal være tilgængelig fra internettet med Basic eller NTLM aktiveret (§3, §4)
En throttling-politik for kontoen, som en fuld scanning ikke udtømmer (§5)
TCP 443 åben fra vores udgående IP-adresser, gyldigt TLS-certifikat (§6)
Afsnit 1–6 beskriver opsætningen. Afsnit 7 er formularen, der skal returneres.
1. Servicekonto
Én dedikeret AD-konto, postkasse-aktiveret (den autentificerer sig som sig selv inden impersonering), adgangskode sat til ikke at udløbe. Ingen lokal administratoradgang, ingen interaktivt logon.
New-Mailbox -Name "svc-dataandmore" `
-UserPrincipalName "svc-dataandmore@example.com" `
-Password (Read-Host "Password" -AsSecureString)
2. Roller
Impersonering – én tildeling dækker alle postkasser:
New-ManagementRoleAssignment -Name "DataAndMore-Impersonation" `
-Role "ApplicationImpersonation" `
-User "svc-dataandmore@example.com"
Afgræns scopet, hvis kun en del af organisationen er inden for scope:
New-ManagementScope -Name "DataAndMore-Scope" `
-RecipientRoot "example.com/Company Users" `
-RecipientRestrictionFilter { RecipientType -eq "UserMailbox" }
New-ManagementRoleAssignment -Name "DataAndMore-Impersonation" `
-Role "ApplicationImpersonation" `
-User "svc-dataandmore@example.com" `
-CustomRecipientWriteScope "DataAndMore-Scope"
Postkasseopdagelse – vi enumererer postkasser via EWS-operationen GetSearchableMailboxes, hvilket kræver rollen Mailbox Search:
New-ManagementRoleAssignment -Name "DataAndMore-MailboxSearch" `
-Role "Mailbox Search" `
-User "svc-dataandmore@example.com"
Foretrækkes frem for rollegruppen Discovery Management, som også tildeler Legal Hold. Hvis De ikke ønsker at tildele den, kan De i stedet sende os postkasselisten – kun automatisk opdagelse går tabt.
Rolleændringer cachelagres; giv det en time, eller genstart MSExchangeServicesAppPool.
Uden impersonering: Add-MailboxPermission -AccessRights FullAccess -AutoMapping:$false pr. postkasse fungerer også, men skal køres igen for hver ny postkasse.
3. EWS-slutpunkt
Get-WebServicesVirtualDirectory | fl Server,ExternalUrl,BasicAuthentication,WindowsAuthentication
Send os den eksternt tilgængelige URL. Basic eller NTLM skal være aktiveret – kun Kerberos, kun certifikat og kun OAuth/ADFS understøttes ikke, og en pre-auth reverse proxy (WAP, F5 APM, NetScaler) skal give servicekontoens anmodninger videre uden ændringer.
Set-WebServicesVirtualDirectory -Identity "EXCH01\EWS (Default Web Site)" -BasicAuthentication $true
iisreset /noforce
Versionheaderværdier, vi accepterer: EXCHANGE_2007 … EXCHANGE_2013_SP1, EXCHANGE_2016. Exchange 2019 anvender EXCHANGE_2016 – der findes ingen separat værdi.
4. EWS-adgangspolitik
Get-OrganizationConfig | fl EwsEnabled,EwsApplicationAccessPolicy,EwsAllowList,EwsBlockList
Get-CASMailbox svc-dataandmore | fl EwsEnabled,EwsApplicationAccessPolicy
EwsEnabled må ikke være $false. Hvis politikken er EnforceAllowList, skal vores klient tilføjes – dens User-Agent er JWebServices for Exchange 2.2.140, www.independentsoft.com:
Set-OrganizationConfig -EwsAllowList @{Add="JWebServices*"}
5. Throttling
Standard EWS-budgetter er dimensioneret til interaktive klienter og vil blokere en fuld postkassescanning. Tildel en politik udelukkende til servicekonten (2013+):
New-ThrottlingPolicy -Name "DataAndMore-EWS" -ThrottlingPolicyScope Regular `
-EwsMaxConcurrency Unlimited -EwsMaxBurst Unlimited `
-EwsRechargeRate Unlimited -EwsCutoffBalance Unlimited
Set-ThrottlingPolicyAssociation -Identity "svc-dataandmore@example.com" `
-ThrottlingPolicy "DataAndMore-EWS"
Alternativ med loft: EwsMaxConcurrency 50, EwsMaxBurst 300000, EwsRechargeRate 900000, EwsCutoffBalance 600000. Angiv venligst, hvilken De har anvendt – vi tilpasser vores parallelitet hertil. På 2010 SP2 hedder parametrene EWSMaxConcurrency, EWSPercentTimeInAD, EWSPercentTimeInCAS, EWSPercentTimeInMailboxRPC; sæt dem til $null.
Vi kører 3–8 parallelle forbindelser pr. kilde, backer automatisk af ved 429 / "server cannot service this request right now", og kan throttle i et forretningsvindue, De selv vælger.
6. Netværk og TLS
TCP 443 indgående til EWS-slutpunktet fra vores udgående IP-adresser (leveres separat). Ingen indgående trafik til os.
Vores læse-/forbindelsestimeout er 300 s – ingen firewall eller load balancer må afbryde inaktive forbindelser tidligere.
TLS 1.2+, certifikat gyldigt for den vært, vi opretter forbindelse til. Intern CA: send os kæden som PEM.
Værten skal være offentligt opløselig, eller angiv hostname → IP, så vi mapper det i vores runtime.
7. Returner følgende oplysninger
Legitimationsoplysninger sendes via en adgangskodehvælving eller en anden sikker kanal – ikke via almindelig e-mail.
Felt | Værdi |
|---|---|
EWS-URL |
|
Exchange-version |
|
Autentificeringsmetode | Basic / NTLM (+ NetBIOS-domæne hvis NTLM) |
Servicekonto |
|
Adgangsmodel | Impersonering / Fuld adgang |
Mailbox Search tildelt | ja / nej – hvis nej, vedlæg postkasseliste |
Arkiver inden for scope | ja / nej |
Testpostkasse til vores adgangskontrol |
|
Throttling-politikværdier |
|
Throttling-vindue i åbningstiden | f.eks. 07:00–18:00 CET |
Intern CA-kæde vedlagt | ja / nej / ikke relevant |
Firewall åbnet for vores udgående IP-adresser | ja / nej |
Teknisk kontaktperson | navn, e-mail, telefon |
Verificér inden afsendelse:
Test-WebServicesConnectivity -ClientAccessServer EXCH01 `
-MailboxCredential (Get-Credential example\svc-dataandmore) -TrustAnySSLCertificate
curl -sS -o /dev/null -w '%{http_code}\n' -u 'svc-dataandmore@example.com' \
https://mail.example.com/EWS/Exchange.asmx # 200 = ok, 401 = forkert autentificering
Impersonering verificerer vi selv fra vores side mod testpostkassen.
Arkiver
In-place-arkiver kræver ingen yderligere tilladelse – impersonering dækker dem. Bekræft, hvilke postkasser der har et arkiv (Get-Mailbox -Archive), og at de er hostet on-premise; et cloudarkiv på en on-premise-postkasse er en separat kilde. Postkasser uden arkiv springes automatisk over.
Håndhævelse (kun hvis kontraktligt aftalt)
Med håndhævelse af opbevaringspolitik aktiveret sletter vi elementer, der matcher en sletningspolitik, som De definerer og aktiverer. Intet flyttes, kopieres eller skrives til postkassen. Impersonering giver allerede sletteretten; der kræves ingen yderligere konfiguration. Angiv venligst, hvis De udelukkende ønsker indsamling.
Anvendte EWS-operationer
Operation | Formål | Type |
|---|---|---|
| enumerer postkasser | læsning |
| gennemgå mappestrukturen, inkl. arkivrod | læsning |
| list elementer, hent besked med indhold | læsning |
| hent vedhæftning til analyse | læsning |
| slet et element i henhold til en opbevaringspolitik | skrivning – kun ved håndhævelse |
Ingen abonnementer, ingen SendItem, ingen UpdateItem, ingen MoveItem, ingen mapper oprettes i postkassen, og ingen adgang uden for det konfigurerede scope.
Fejl
Meddelelse | Årsag | Løsning |
|---|---|---|
401 Unauthorized | forkert adgangskode, Basic/NTLM deaktiveret, pre-auth proxy | |
The account does not have permission to impersonate the requested user. | rolle mangler, cachelagret, eller postkasse uden for scope | |
Access is denied on discovery | Mailbox Search mangler | |
429 / The server cannot service this request right now / Too many concurrent connections opened | throttling-budget udtømt | |
Read timed out / Connect timed out / Socket closed | inaktivitetstimeout under 300 s, eller slutpunkt utilgængeligt | |
PKIX / certifikatfejl | intern CA eller uoverensstemmelse i værtsnavn | |
The SMTP address has no mailbox associated with it. / Mailbox does not exist. | mail-aktiveret bruger, eller postkasse flyttet til cloud | forventet, springes over |
The defaultFolder cannot be created by XSO | arkiv anmodet, postkasse har intet | forventet, springes over |
The message exceeds the maximum supported size. | element overskrider behandlingsgrænsen | forventet, registreres som sprunget over |