Opsætningsguides

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

SMTPMicrosoft 365 Graph API
Kræver SMTP-adgangskodeJaNej
Virker hvis SMTP AUTH er deaktiveret i M365NejJa
Understøttes langsigtet af MicrosoftDelvist (under udfasning)Ja
Kræver Azure-konfigurationNejJa

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

  1. Gå til portal.azure.com og log ind
  2. Søg efter Microsoft Entra ID i den øverste søgelinje
  3. Klik på App registrations i venstre navigation
  4. Klik + New registration
  5. 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
  6. Klik Register

Notér Tenant ID og Client ID

Straks efter registreringen åbnes Overview-siden. Kopiér og gem begge værdier:

FeltPlacering på siden
Application (client) IDVises direkte under appens navn
Directory (tenant) IDVises 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

  1. Vælg API permissions i venstre navigation
  2. Klik + Add a permission
  3. Vælg Microsoft Graph
  4. Vælg Application permissions (ikke Delegated)
  5. Søg efter Mail.Send og sæt flueben ved den
  6. 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.

Tilladelsen Mail.Send som Application permission kræver godkendelse fra en Global Administrator.

  1. På samme API permissions-side klikker du Grant admin consent for [din organisation]
  2. Bekræft i dialogen der popper op
  3. 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):

Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser

Opret begrænsningen:

# Forbind til Exchange Online
Connect-ExchangeOnline
 
# Opret en mail-aktiveret sikkerhedsgruppe med kun service-postkassen
New-DistributionGroup `
  -Name "Ressourcify-SendAs" `
  -Members "noreply@din-organisation.dk" `
  -Type Security
 
# Vent et øjeblik på at gruppen propagerer, og begræns derefter app'en
New-ApplicationAccessPolicy `
  -AppId "<dit-client-id>" `
  -PolicyScopeGroupId "Ressourcify-SendAs@din-organisation.dk" `
  -AccessRight RestrictAccess `
  -Description "Ressourcify mail — begrænset til service-postkassen"

Verificér at politikken virker:

# Skal returnere "Granted"
Test-ApplicationAccessPolicy `
  -Identity "noreply@din-organisation.dk" `
  -AppId "<dit-client-id>"
 
# Skal returnere "Denied"
Test-ApplicationAccessPolicy `
  -Identity "en-anden-bruger@din-organisation.dk" `
  -AppId "<dit-client-id>"

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å:

MetodeHvornårFordele
Client SecretAlle hostingmiljøerSimpel opsætning
Federated credentialVercel eller Kubernetes med Azure Workload IdentityIngen hemmelighed at oprette, opbevare eller rotere

Fortsæt med det afsnit der passer til din situation.


Mulighed A — Client Secret

  1. Vælg Certificates & secrets i venstre navigation
  2. Klik fanen Client secrets
  3. Klik + New client secret
  4. Udfyld:
    • Description: Ressourcify Mail
    • Expires: Vælg 24 months (anbefalet)
  5. Klik Add
  6. 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.

  1. I Vercel: Gå til dit projekts Settings → Security og aktivér OIDC Federation. Notér dit teams slug, f.eks. mit-team.

  2. I Azure — vælg Certificates & secrets → fanen Federated credentials+ Add credential:

    FeltVærdi
    Federated credential scenarioVælg Other issuer
    Issuerhttps://oidc.vercel.com/mit-team (erstat mit-team med dit Vercel-teams slug)
    Subject identifierDet subject-claim Vercel udsteder for dit projekt og miljø — se Vercels OIDC-dokumentation for det præcise format
    Audiencehttps://vercel.com
    NameRessourcify-Vercel-Production (eller lignende)
  3. 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

  1. Log ind i Ressourcify med din administratorkonto
  2. Gå til Indstillinger → Integrationer → E-mail
  3. Vælg Microsoft 365 (Graph API) som provider-type
  4. Udfyld felterne:
Felt i RessourcifyHvad du indsætter
Afsender-adresseDen adresse brugerne ser som afsender, f.eks. noreply@din-organisation.dk
AfsendernavnNavnet der vises i indbakken, f.eks. Ressourcify
Tenant IDDirectory (tenant) ID fra trin 2
Client IDApplication (client) ID fra trin 2
PostkasseDen fulde e-mailadresse på den konto der rent faktisk sender mailen, f.eks. noreply@din-organisation.dk
AutentificeringsmetodeClient Secret (mulighed A) eller Federated credential (mulighed B)
Client SecretKun 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.

  1. 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:

  1. Opret en ny Client Secret i Azure (gentag trin 6A)
  2. Kopiér den nye Secret Value
  3. Opdatér feltet Client Secret i Ressourcify-indstillingerne
  4. Klik Gem og Test forbindelsen
  5. 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

SymptomSandsynlig årsagLøsning
InvalidClientSecretClient Secret er forkert eller udløbetOpret en ny Secret i Azure og opdatér i Ressourcify
Unauthorized / 401Forkert Tenant ID eller Client IDDobbelttjek du kopierede Application (client) ID og Directory (tenant) ID fra Overview
Insufficient privilegesAdmin consent er ikke givetGå til API permissions i Azure og klik "Grant admin consent"
MailboxNotEnabledForRESTAPIPostkassen understøtter ikke Graph APIKontakt din Microsoft 365-administrator — postkassen kan have en ældre plan
ErrorSendAsDeniedApplication Access Policy blokerer afsendelseKontrollér at postkassen i Ressourcify er den samme der er tilføjet til sikkerhedsgruppen i trin 5
VERCEL_OIDC_TOKEN manglerFederated credential brugt udenfor Vercel, eller OIDC Federation ikke aktiveretAktivér OIDC Federation i Vercel-projektets indstillinger, eller skift til Client Secret
AADSTS70021 / no matching federated identityIssuer eller Subject i Azure matcher ikke det Vercel udstederKontrollér Issuer-URL og Subject-claim mod Vercels OIDC-dokumentation
Testmail ankommer aldrigMailen filtreres som spamTjek spam-mappen; kontakt IT for at hvidliste afsenderadressen
AADSTS700016App-registreringen kan ikke findesKontrollér at Tenant ID er kopieret fra den rigtige Azure-konto

Næste skridt