SendGrid inkommande e-post
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
Så når ett e-postmeddelande en övervakare
- Du skapar en Incoming Email Monitor i Status200
- Status200 genererar en unik e-postadress för den övervakaren (t.ex.
monitor-abc123@inbound.yourdomain.com) - När ett e-postmeddelande skickas till den adressen tar SendGrid emot det och vidarebefordrar det till Status200 via webhook
- 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.
| Riktning | Mål | Protokoll / port | Syfte |
|---|---|---|---|
| SendGrid → Status200 | https://your-oneuptime-domain.com/incoming-email/sendgrid/YOUR_SECRET | HTTPS / TCP 443 | Leverera det tolkade e-postmeddelandet som en multipart-POST. |
| Sändande e-postservrar → SendGrid | mx.sendgrid.net, vald av den publika MX-posten för din inkommande domän | SMTP / TCP 25 | Ta 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 separat | api.sendgrid.com | HTTPS / TCP 443 | Skicka 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
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.comellermonitor.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.Låt dess MX-post peka på SendGrid
Lägg till en MX-post som skickar e-posten för underdomänen till SendGrid:
Typ Värd/Namn Prioritet Värde MX inbound 10 mx.sendgrid.net Om din domän är
example.comoch du använderinbound.example.comblir 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.
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).
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ält Värde Receiving Domain Din underdomän för inkommande e-post (t.ex. inbound.yourdomain.com)Destination URL https://your-oneuptime-domain.com/incoming-email/sendgrid/YOUR_SECRETCheck incoming emails for spam Valfritt – aktivera om du vill Send raw, full MIME message Lämna omarkerad (krävs inte) POST the raw, full MIME message Lämna omarkerad (krävs inte) Konfigurera Status200
Sätt variablerna för inkommande e-post, med samma hemlighet som i Destination URL:
Docker Compose
INBOUND_EMAIL_PROVIDER=SendGrid INBOUND_EMAIL_DOMAIN=inbound.yourdomain.com INBOUND_EMAIL_WEBHOOK_SECRET=replace-with-a-strong-random-secretKubernetes
inboundEmail: provider: "SendGrid" domain: "inbound.yourdomain.com" webhookSecret: "replace-with-a-strong-random-secret"INBOUND_EMAIL_WEBHOOK_SECRETkrä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 32skapar ett långt slumpmässigt värde.Tillämpa dem sedan: kör
npm run startpå Docker Compose, vilket återskapar containrarna med de nya värdena, eller uppgradera Helm-releasen på Kubernetes.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.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
| Variabel | Helm-värde | Beskrivning | Krävs | Standard |
|---|---|---|---|---|
INBOUND_EMAIL_PROVIDER | inboundEmail.provider | Leverantören av inkommande e-post. SendGrid är den enda. | Nej | SendGrid |
INBOUND_EMAIL_DOMAIN | inboundEmail.domain | Underdomänen som är konfigurerad för inkommande e-post. Inkommande e-post är av tills den är satt. | Ja | Tom |
INBOUND_EMAIL_WEBHOOK_SECRET | inboundEmail.webhookSecret | Hemlighet 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. | Ja | Tom |
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
- Kontrollera DNS-spridningen:
dig MX inbound.yourdomain.comska returneramx.sendgrid.net. - Kontrollera Inbound Parse-inställningarna i SendGrid: kontrollera din domän och webhookens URL i SendGrid-instrumentpanelen under Settings > Inbound Parse.
- 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
- 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.
- 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.
- Kontrollera SSL-certifikatet: använd ett giltigt, publikt betrott certifikat för webhookens värdnamn och inkludera dess certifikatkedja.
- 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 med503, och loggen för tjänstenappsäger det när den startar; ett e-postmeddelande som skickas till en URL som slutar med något annat avvisas med403.
Övervakaren skapar inga larm
- 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.
- Kontrollera övervakaren: se till att den inte är inaktiverad och att dess typ är Incoming Email.
- 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
- Använd HTTPS: använd alltid HTTPS för din webhookslutpunkt
- 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 - Domänverifiering: verifiera din domän i SendGrid för bättre e-postsäkerhet
- Begränsa åtkomsten: skapa bara övervakare för betrodda e-postkällor
- Övervaka loggar: granska regelbundet loggarna för inkommande e-post efter misstänkt aktivitet