Hoppa till innehåll
SendGrid inkommande e-post

SendGrid inkommande e-post

Visa som Markdown

Med Status200s Incoming Email Monitor kan du skapa och lösa larm utifrån e-post som skickas till unika, övervakarspecifika e-postadresser. Det är användbart för att integrera äldre system, larmverktyg eller vilken tjänst som helst som kan skicka e-post.

Samma konfiguration låter också arbetsflöden ta emot e-post: ett arbetsflöde med utlösaren Incoming Email får en egen adress på samma domän, och varje e-postmeddelande till den startar arbetsflödet. Se Utlösare.

Den här guiden förklarar hur du konfigurerar SendGrid Inbound Parse så att inkommande e-post vidarebefordras till din egeninstallerade Status200-instans. Status200 Cloud behöver inget av detta: där fungerar adresserna direkt.

Så fungerar det

sequenceDiagram participant Sender as Sändande<br/>e-postserver participant SendGrid as SendGrid<br/>Inbound Parse participant Status200 as Status200 Sender->>SendGrid: E-post till<br/>övervakarens<br/>adress (din<br/>MX-post) SendGrid->>Status200: POST …/sendgrid/YOUR_SECRET Status200->>Status200: Koppla adressen<br/>till en<br/>övervakare eller<br/>ett arbetsflöde Status200-->>SendGrid: 200 OK

Så når ett e-postmeddelande en övervakare

  1. Du skapar en Incoming Email Monitor i Status200
  2. Status200 genererar en unik e-postadress för den övervakaren (t.ex. monitor-abc123@inbound.yourdomain.com)
  3. När ett e-postmeddelande skickas till den adressen tar SendGrid emot det och vidarebefordrar det till Status200 via webhook
  4. Status200 bedömer e-postmeddelandet utifrån dina konfigurerade kriterier för att skapa eller lösa larm

Förutsättningar

  • Ett SendGrid-konto med åtkomst till Inbound Parse
  • En domän som du kontrollerar, med åtkomst till DNS-inställningarna
  • En publik HTTPS-slutpunkt som vidarebefordrar SendGrids webhooks till din Status200-instans

Nätverksåtkomst

Med Inbound Parse är det SendGrid som öppnar anslutningen till Status200. Det räcker inte att bara tillåta utgående internetåtkomst från Status200.

RiktningMålProtokoll / portSyfte
SendGrid → Status200https://your-oneuptime-domain.com/incoming-email/sendgrid/YOUR_SECRETHTTPS / TCP 443Leverera det tolkade e-postmeddelandet som en multipart-POST.
Sändande e-postservrar → SendGridmx.sendgrid.net, vald av den publika MX-posten för din inkommande domänSMTP / TCP 25Ta emot e-post hos SendGrid; den här anslutningen går inte till din Status200-server.
Status200 → SendGrid, bara när utskick av e-post via SendGrid-leverantören är konfigurerat separatapi.sendgrid.comHTTPS / TCP 443Skicka aviseringsmejl via Mail Send API.

Publicera DNS för webhookens värdnamn och leverera ett certifikat som publika klienter litar på. En privat Status200-installation kan exponera enbart webhooksökvägen via en publik omvänd proxy eller gateway som når Status200 internt. Bevara sökvägen, hemligheten, innehållstypen och multipart-begärans innehåll, och släpp igenom POST-anropet utan interaktiv inloggning eller webbläsarutmaning. Status200-servern behöver ingen inkommande SMTP-lyssnare. Se SendGrids konfiguration av Inbound Parse.

Sätt INBOUND_EMAIL_WEBHOOK_SECRET till ett starkt slumpmässigt värde och ersätt YOUR_SECRET i URL:en med det värdet. Routen kräver det sista sökvägssegmentet, och Status200 tar bara emot ett e-postmeddelande när det segmentet är hemligheten. Tills hemligheten är satt avvisas varje e-postmeddelande med 503, vilket SendGrid försöker igen i upp till tre dagar. Håll hela URL:en och övervakarnas e-postadresser hemliga, även i proxyloggar. Status200 validerar i dag varken SendGrids signerade Inbound Parse-huvuden eller OAuth-token. Behöver du de mekanismerna kan du konfigurera en gateway som validerar dem innan den vidarebefordrar till hela URL:en, enligt SendGrids dokumentation om webhooksäkerhet.

SendGrid tillhandahåller ingen tillförlitlig lista över statiska käll-IP-adresser för Inbound Parse. SendGrids IP-adresser för e-postutskick och adresserna som slås upp för mx.sendgrid.net är ingen tillåtelselista för webhooks. Följ SendGrids vägledning om brandväggar i stället för att låsa ett aktuellt DNS-resultat.

Inbound Parse är skilt från utskick av utgående e-post. För att ta emot övervakarnas e-post behöver Status200 inte anropa SendGrids API. Om du också väljer SendGrid för att skicka aviseringar tillåter du DNS-uppslag och utgående HTTPS till api.sendgrid.com; Mail Send behöver inget inkommande återanrop för att skicka. Använder du SMTP i stället tillåter du den SMTP-server och port som är konfigurerade i Status200.

Konfigurationsanvisningar

  1. Välj din domän för inkommande e-post

    Välj en underdomän som bara används för att ta emot e-post till Status200, till exempel inbound.yourdomain.com, email.yourdomain.com eller monitor.yourdomain.com. Den används bara för e-post till Status200s övervakare och arbetsflöden, så ingen av dina brevlådor ligger på den.

  2. Låt dess MX-post peka på SendGrid

    Lägg till en MX-post som skickar e-posten för underdomänen till SendGrid:

    TypVärd/NamnPrioritetVärde
    MXinbound10mx.sendgrid.net

    Om din domän är example.com och du använder inbound.example.com blir posten:

    inbound.example.com.  IN  MX  10  mx.sendgrid.net.

    DNS-ändringar kan ta upp till 48 timmar att spridas, men är oftast klara inom några timmar.

  3. Autentisera domänen i SendGrid

    Den mottagande domänen måste höra till en av dina autentiserade domäner i SendGrid. Gå i SendGrid-instrumentpanelen till Settings > Sender Authentication, klicka på Authenticate Your Domain och lägg till de DNS-poster den ber om (CNAME-poster för DKIM).

  4. Lägg till Inbound Parse-webhooken

    Gå i SendGrid-instrumentpanelen till Settings > Inbound Parse och klicka på Add Host & URL. Fyll i formuläret enligt nedan och klicka sedan på Add:

    FältVärde
    Receiving DomainDin underdomän för inkommande e-post (t.ex. inbound.yourdomain.com)
    Destination URLhttps://your-oneuptime-domain.com/incoming-email/sendgrid/YOUR_SECRET
    Check incoming emails for spamValfritt – aktivera om du vill
    Send raw, full MIME messageLämna omarkerad (krävs inte)
    POST the raw, full MIME messageLämna omarkerad (krävs inte)
  5. Konfigurera Status200

    Sätt variablerna för inkommande e-post, med samma hemlighet som i Destination URL:

    Docker Compose

    config.envBash
    INBOUND_EMAIL_PROVIDER=SendGrid
    INBOUND_EMAIL_DOMAIN=inbound.yourdomain.com
    INBOUND_EMAIL_WEBHOOK_SECRET=replace-with-a-strong-random-secret

    Kubernetes

    values.yamlYAML
    inboundEmail:
      provider: "SendGrid"
      domain: "inbound.yourdomain.com"
      webhookSecret: "replace-with-a-strong-random-secret"

    INBOUND_EMAIL_WEBHOOK_SECRET krävs: Status200 avvisar varje e-postmeddelande så länge den är tom eller fortfarande en platshållare från den här sidan. openssl rand -hex 32 skapar ett långt slumpmässigt värde.

    Tillämpa dem sedan: kör npm run start på Docker Compose, vilket återskapar containrarna med de nya värdena, eller uppgradera Helm-releasen på Kubernetes.

  6. Skapa en Incoming Email-övervakare

    Skapa en Incoming Email-övervakare. Dess sida Översikt visar adressen, till exempel monitor-abc123def456@inbound.yourdomain.com, och dess kriterier avgör vilka e-postmeddelanden som skapar ett larm och vilka som löser det.

    Arbetsflöden använder samma domän. Lägg till utlösaren Incoming Email i ett arbetsflöde och klicka på den: dess adress (workflow-…@inbound.yourdomain.com) står överst i dess inställningar. Tills variablerna för inkommande e-post ovan är satta säger utlösaren att servern inte är konfigurerad för att ta emot e-post.

  7. Skicka ett testmeddelande

    Skicka ett e-postmeddelande till övervakarens adress, med ett ämne som matchar dess kriterier. Övervakarens sammanfattning visar meddelandet, och ett larm skapas när kriterierna matchar.

Referens för miljövariabler

VariabelHelm-värdeBeskrivningKrävsStandard
INBOUND_EMAIL_PROVIDERinboundEmail.providerLeverantören av inkommande e-post. SendGrid är den enda.NejSendGrid
INBOUND_EMAIL_DOMAINinboundEmail.domainUnderdomänen som är konfigurerad för inkommande e-post. Inkommande e-post är av tills den är satt.JaTom
INBOUND_EMAIL_WEBHOOK_SECRETinboundEmail.webhookSecretHemlighet som det sista segmentet i webhookens URL måste matcha: /incoming-email/sendgrid/YOUR_SECRET. Varje e-postmeddelande avvisas så länge den är tom eller en platshållare.JaTom

Vad en Incoming Email-övervakare kan matcha på – ämnet, avsändaren, innehållet, mottagaren och om ett meddelande kom fram i tid – står i Tillgängliga filtertyper.

Felsökning

E-post tas inte emot
  1. Kontrollera DNS-spridningen: dig MX inbound.yourdomain.com ska returnera mx.sendgrid.net.
  2. Kontrollera Inbound Parse-inställningarna i SendGrid: kontrollera din domän och webhookens URL i SendGrid-instrumentpanelen under Settings > Inbound Parse.
  3. Kontrollera Status200s loggar: leta efter webhookbegäranden för inkommande e-post, och eventuella fel, i loggarna för Status200-tjänsten app. SendGrid sparar inga detaljerade loggar för Inbound Parse, så de här loggarna är beskedet om vad som kom fram.
Webhooks misslyckas
  1. Kontrollera den publika webhookvägen: hela URL:en, inklusive hemligheten, måste nå Status200 från internet. URL:en utan sitt sista hemliga segment matchar inte routen.
  2. Kontrollera brandväggsreglerna: tillåt HTTPS POST-begäranden till webhooksökvägen utan inloggningsomdirigeringar eller webbläsarutmaningar, och använd inte SendGrids IP-adresser för e-postutskick som tillåtelselista för webhookens källa.
  3. Kontrollera SSL-certifikatet: använd ett giltigt, publikt betrott certifikat för webhookens värdnamn och inkludera dess certifikatkedja.
  4. Kontrollera webhookhemligheten: Destination URL måste sluta med värdet av INBOUND_EMAIL_WEBHOOK_SECRET. Så länge variabeln är tom eller en platshållare avvisas varje e-postmeddelande med 503, och loggen för tjänsten app säger det när den startar; ett e-postmeddelande som skickas till en URL som slutar med något annat avvisas med 403.
Övervakaren skapar inga larm
  1. Kontrollera kriterierna: kontrollera att dina kriterier för att skapa larm matchar e-postens innehåll, och testa först med exakta strängar innan du använder mönster.
  2. Kontrollera övervakaren: se till att den inte är inaktiverad och att dess typ är Incoming Email.
  3. Granska övervakarens sammanfattning: kontrollera om meddelandet togs emot och bearbetades, och läs utvärderingsloggarna för hur kriterierna matchade.
Utlösaren säger att servern inte är konfigurerad för att ta emot e-post

INBOUND_EMAIL_DOMAIN är tom på servern. Sätt den, tillämpa ändringen och öppna arbetsflödets utlösare igen.

Bästa praxis för säkerhet

  1. Använd HTTPS: använd alltid HTTPS för din webhookslutpunkt
  2. Webhookhemlighet: använd ett långt slumpmässigt värde som är ditt eget för INBOUND_EMAIL_WEBHOOK_SECRET, i slutet av din webhook-URL (t.ex. /incoming-email/sendgrid/your-secret): det är den som skiljer SendGrids e-post från alla andras
  3. Domänverifiering: verifiera din domän i SendGrid för bättre e-postsäkerhet
  4. Begränsa åtkomsten: skapa bara övervakare för betrodda e-postkällor
  5. Övervaka loggar: granska regelbundet loggarna för inkommande e-post efter misstänkt aktivitet

Nästa steg