Opsæt e-mail via Microsoft 365
Trin-for-trin guide til at forbinde Ressourcify med Microsoft 365 via Graph API — med Client Secret eller Federated credential, og vejledning til at begrænse Mail.Send-tilladelsen til én postkasse.
Opsæt e-mail via Microsoft 365
Denne guide beskriver, hvordan du forbinder Ressourcify til Microsoft 365 via Graph API. Metoden erstatter traditionelle SMTP-adgangskoder med en sikker app-registrering i Azure og er den anbefalede fremgangsmåde for organisationer der bruger Microsoft 365.
Fordele frem for SMTP
| SMTP | Microsoft 365 Graph API | |
|---|---|---|
| Kræver SMTP-adgangskode | Ja | Nej |
| Virker hvis SMTP AUTH er deaktiveret i M365 | Nej | Ja |
| Understøttes langsigtet af Microsoft | Delvist (under udfasning) | Ja |
| Kræver Azure-konfiguration | Nej | Ja |
Microsoft er i gang med at udfase SMTP AUTH i Microsoft 365. Graph API er Microsofts anbefalede løsning til systemafsendelse af e-mail og kræver ingen adgangskode der kan udløbe.
Forudsætninger
Du skal have adgang til tre systemer:
I Microsoft Azure (Entra ID):
- Rollen Application Administrator, Cloud Application Administrator eller Global Administrator
I Microsoft Exchange Online (kun til den anbefalede begrænsning af tilladelsen — se trin 5):
- Rollen Exchange Administrator eller Global Administrator
I Microsoft 365:
- En postkasse der bruges som afsender — enten en delt postkasse (anbefalet) eller en dedikeret brugerkonto, f.eks.
noreply@din-organisation.dk
I Ressourcify:
- ORG_ADMIN-rollen
Delt postkasse anbefalet. En delt postkasse i Microsoft 365 kræver ingen licens og kan oprettes direkte i Microsoft 365 admin-centeret. Den fungerer fint som afsenderkonto og er nemmere at administrere end en brugerbaseret konto.
Opsætning
Opret en app-registrering i Azure
- Gå til portal.azure.com og log ind
- Søg efter Microsoft Entra ID i den øverste søgelinje
- Klik på App registrations i venstre navigation
- Klik + New registration
- Udfyld formularen:
- Name:
Ressourcify Mail(eller dit foretrukne navn — vises kun for administratorer) - Supported account types: Vælg Accounts in this organizational directory only
- Redirect URI: Lad feltet stå tomt — det er ikke nødvendigt for mail-afsendelse
- Name:
- Klik Register
Notér Tenant ID og Client ID
Straks efter registreringen åbnes Overview-siden. Kopiér og gem begge værdier:
| Felt | Placering på siden |
|---|---|
| Application (client) ID | Vises direkte under appens navn |
| Directory (tenant) ID | Vises direkte under client ID |
Forveksle ikke Client ID med Object ID — begge vises på Overview-siden. Det er Application (client) ID du skal bruge.
Tilføj tilladelse til at sende e-mail
- Vælg API permissions i venstre navigation
- Klik + Add a permission
- Vælg Microsoft Graph
- Vælg Application permissions (ikke Delegated)
- Søg efter
Mail.Sendog sæt flueben ved den - Klik Add permissions
Du ser nu Mail.Send i listen med statussen Not granted.
Vælg Application permissions — ikke Delegated. Delegated permissions kræver en bruger der er logget ind, og virker ikke til systemafsendelse. Hvis du vælger den forkerte type, vil testmailen fejle med en tilladelsesfejl.
Mail.Send gælder i princippet alle postkasser i tenanten. Beskrivelsen "Send mail as any user" kan lyde bred — og det er den teknisk set, indtil du begrænser den. Vi anbefaler at du gennemfører trin 5 (Exchange Application Access Policy) for at låse tilladelsen fast til kun service-postkassen.
Giv admin consent
Tilladelsen Mail.Send som Application permission kræver godkendelse fra en Global Administrator.
- På samme API permissions-side klikker du Grant admin consent for [din organisation]
- Bekræft i dialogen der popper op
- Statussen skifter til Granted med et grønt flueben
Har du ikke Global Administrator-rollen selv? Bed din Microsoft 365-administrator om at udføre dette trin. Du kan sende dem linket til app-registreringen direkte — de skal blot klikke "Grant admin consent".
Begræns tilladelsen til én postkasse (anbefalet)
Mail.Send som application permission giver som udgangspunkt appen adgang til at sende fra alle postkasser i tenanten. Med en Exchange Application Access Policy låser du tilladelsen fast, så appen kun kan sende fra den ene service-postkasse du angiver.
Dette trin kræver Exchange Administrator-rollen (eller Global Administrator) og udføres i Exchange Online PowerShell.
Installer Exchange Online PowerShell (første gang):
Opret begrænsningen:
Verificér at politikken virker:
Politikken træder i kraft inden for få minutter. Herefter vil forsøg på at sende fra en anden postkasse returnere HTTP 403 — selv om Mail.Send-tilladelsen teknisk set er tildelt.
Ikke administrator af Exchange? Bed din Exchange-administrator om at udføre dette trin. Du kan sende dem Client ID og den ønskede postkasseadresse. Application Access Policies er et standardmønster for service-applikationer i Microsoft 365-miljøer.
Vælg autentificeringsmetode
Ressourcify understøtter to måder at lade app-registreringen logge ind på:
| Metode | Hvornår | Fordele |
|---|---|---|
| Client Secret | Alle hostingmiljøer | Simpel opsætning |
| Federated credential | Vercel eller Kubernetes med Azure Workload Identity | Ingen hemmelighed at oprette, opbevare eller rotere |
Fortsæt med det afsnit der passer til din situation.
Mulighed A — Client Secret
- Vælg Certificates & secrets i venstre navigation
- Klik fanen Client secrets
- Klik + New client secret
- Udfyld:
- Description:
Ressourcify Mail - Expires: Vælg 24 months (anbefalet)
- Description:
- Klik Add
- Kopiér værdien i kolonnen Value med det samme
Kopiér Secret Value med det samme. Når du navigerer væk fra siden, skjules værdien permanent og kan ikke genskabes. Hvis du mister den, skal du oprette en ny. Gem den i din organisations password manager eller Azure Key Vault.
Der er to kolonner: Value og Secret ID. Det er Value du skal kopiere — den lange streng med bogstaver og tal.
Mulighed B — Federated credential (ingen hemmelighed)
Federated credentials bruger en kortlivet OIDC-token fra dit hostingmiljø til at autentificere mod Azure — ingen client secret at oprette eller rotere.
Vercel:
Ressourcify bruger Vercels automatisk injicerede VERCEL_OIDC_TOKEN til at udstede en token-assertion. Du skal aktivere OIDC i dit Vercel-projekt og tilføje en federated credential i Azure.
-
I Vercel: Gå til dit projekts Settings → Security og aktivér OIDC Federation. Notér dit teams slug, f.eks.
mit-team. -
I Azure — vælg Certificates & secrets → fanen Federated credentials → + Add credential:
Felt Værdi Federated credential scenario Vælg Other issuer Issuer https://oidc.vercel.com/mit-team(erstatmit-teammed dit Vercel-teams slug)Subject identifier Det subject-claim Vercel udsteder for dit projekt og miljø — se Vercels OIDC-dokumentation for det præcise format Audience https://vercel.comName Ressourcify-Vercel-Production(eller lignende) -
Klik Add
Vercel injicerer automatisk VERCEL_OIDC_TOKEN i serverless-funktioner ved runtime. Du behøver ikke tilføje nogen ekstra environment-variabel — men OIDC Federation skal være aktiveret i Vercel-projektets indstillinger.
Kubernetes med Azure Workload Identity:
Ressourcify læser token fra den fil som Azure Workload Identity-injektor monterer, typisk angivet i environment-variablen AZURE_FEDERATED_TOKEN_FILE. Sæt RUNTIME_ENV=kubernetes i din container-konfiguration.
Konfigurér en federated credential i Azure med det service account og namespace din pod kører under. Se Microsofts dokumentation om Azure Workload Identity for de præcise trin.
Konfigurér i Ressourcify
- Log ind i Ressourcify med din administratorkonto
- Gå til Indstillinger → Integrationer → E-mail
- Vælg Microsoft 365 (Graph API) som provider-type
- Udfyld felterne:
| Felt i Ressourcify | Hvad du indsætter |
|---|---|
| Afsender-adresse | Den adresse brugerne ser som afsender, f.eks. noreply@din-organisation.dk |
| Afsendernavn | Navnet der vises i indbakken, f.eks. Ressourcify |
| Tenant ID | Directory (tenant) ID fra trin 2 |
| Client ID | Application (client) ID fra trin 2 |
| Postkasse | Den fulde e-mailadresse på den konto der rent faktisk sender mailen, f.eks. noreply@din-organisation.dk |
| Autentificeringsmetode | Client Secret (mulighed A) eller Federated credential (mulighed B) |
| Client Secret | Kun ved mulighed A: Secret Value fra trin 6A |
Afsender-adresse og Postkasse kan godt være den samme adresse. Postkassen er den tekniske afsender (den konto app-registreringen har tilladelse til at sende fra), mens Afsender-adresse er det der vises i modtagerens indbakke.
- Klik Gem
Test forbindelsen
Klik Test forbindelsen i e-mail-sektionen.
Ressourcify forsøger nu at sende en testmail til din egen adresse. Resultatet vises direkte:
- Grønt flueben — opsætningen virker
- Rød advarsel — se fejlbeskeden og fejlfindingstabellen nedenfor
Tjek din indbakke (og evt. spam-mappen) inden for et minut.
Aktivér afsendelse
Øverst i sektionen er der en Aktivér udsendelse-knap. Sørg for den er slået til.
Du kan til enhver tid slå afsendelse fra igen uden at slette opsætningen.
Vedligeholdelse
Client Secret udløber — gælder kun mulighed A
Client Secrets udløber. Med en udløbstid på 24 måneder skal du forny hemmeligheden inden udløbsdatoen — ellers holder mailsendingen op med at virke.
Sæt en påmindelse i din kalender til at forny Secret'en senest 2 uger før udløb.
Sådan fornyer du:
- Opret en ny Client Secret i Azure (gentag trin 6A)
- Kopiér den nye Secret Value
- Opdatér feltet Client Secret i Ressourcify-indstillingerne
- Klik Gem og Test forbindelsen
- Slet den gamle, udløbne Secret i Azure
Federated credential — ingen fornyelse nødvendig
Hvis du valgte mulighed B (Federated credential), udsteder Vercel eller Kubernetes automatisk kortlivede tokens ved runtime. Der er ingen hemmelighed at rotere.
Fejlfinding
| Symptom | Sandsynlig årsag | Løsning |
|---|---|---|
| InvalidClientSecret | Client Secret er forkert eller udløbet | Opret en ny Secret i Azure og opdatér i Ressourcify |
| Unauthorized / 401 | Forkert Tenant ID eller Client ID | Dobbelttjek du kopierede Application (client) ID og Directory (tenant) ID fra Overview |
| Insufficient privileges | Admin consent er ikke givet | Gå til API permissions i Azure og klik "Grant admin consent" |
| MailboxNotEnabledForRESTAPI | Postkassen understøtter ikke Graph API | Kontakt din Microsoft 365-administrator — postkassen kan have en ældre plan |
| ErrorSendAsDenied | Application Access Policy blokerer afsendelse | Kontrollér at postkassen i Ressourcify er den samme der er tilføjet til sikkerhedsgruppen i trin 5 |
| VERCEL_OIDC_TOKEN mangler | Federated credential brugt udenfor Vercel, eller OIDC Federation ikke aktiveret | Aktivér OIDC Federation i Vercel-projektets indstillinger, eller skift til Client Secret |
| AADSTS70021 / no matching federated identity | Issuer eller Subject i Azure matcher ikke det Vercel udsteder | Kontrollér Issuer-URL og Subject-claim mod Vercels OIDC-dokumentation |
| Testmail ankommer aldrig | Mailen filtreres som spam | Tjek spam-mappen; kontakt IT for at hvidliste afsenderadressen |
| AADSTS700016 | App-registreringen kan ikke findes | Kontrollér at Tenant ID er kopieret fra den rigtige Azure-konto |
Næste skridt
- Opsæt e-mail via SMTP — alternativ metode til ikke-Microsoft mailsystemer