Een vangnet-mailbox is het eenvoudigst mogelijke antwoord op een stagingprobleem: in plaats van voor elk adres dat een omgeving nodig zou kunnen hebben een account aan te maken, vertel je het domein om alles aan één postvak te geven. Elk lokaal deel wordt geaccepteerd, er hoeft niets vooraf te worden ingericht, en een fixture die ter plekke een adres verzint, werkt nog steeds. Het gemak is echt, en de kosten ook, en die kosten duiken meestal een paar weken na het omzetten van de schakelaar op.
Wat een vangnet-mailbox feitelijk doet
Elk domein moet een record publiceren dat de server noemt die mail voor dat domein accepteert. Dat geldt voor alle mail. Wat een vangnet toevoegt, is een regel aan de ontvangende kant: wanneer een bericht aankomt voor een lokaal deel zonder postvak, wordt het in plaats van te worden geweigerd afgeleverd bij een aangewezen postvak.
Het onderscheid dat ertoe doet, is dat tussen een wildcard en een standaardwaarde. Sommige ontvangende systemen accepteren alles en sorteren het daarna; andere accepteren alles alleen wanneer niets specifiekers overeenkwam. Beide gedragen zich identiek wanneer een test een nieuw adres verzint, en ze gedragen zich heel verschillend wanneer een bericht aankomt voor een adres dat je bewust hebt geblokkeerd.
Waarom grijpen stagingteams ernaar?
De motivatie is bijna altijd wrijving. Kijk wat een vangnet wegneemt:
- Geen inrichtingsstap voordat een test kan lopen, dus een nieuw geval heeft geen nieuw postvak nodig dat ervoor wordt aangemaakt.
- Geen afstemming tussen teams, omdat elk adres op het domein voor iedereen werkt.
- Geen afhankelijkheid van een externe mailboxprovider, aangezien het hele domein onder jouw controle staat.
- Geen verloren mail wanneer een test een adres met een willekeurig label genereert, en dat is precies wat tests doen.
Voor een team dat zijn dag besteedt aan het triëren van storingen die door ontbrekende postvakken worden veroorzaakt, lijkt een vangnet een remedie voor een hele categorie ruis. De vraag die de moeite waard is, is welke ruis ervoor in de plaats komt.
Wat gaat er mis wanneer alles in één postvak belandt?
Volume en gevoeligheid, vooral, en die versterken elkaar.
| Risico | Waarom het gebeurt | Wat het kost |
|---|---|---|
| Onbegrensd volume | Elk adres op het domein wordt geaccepteerd | De opslag loopt vol en het postvak wordt onleesbaar |
| Onverwant verkeer door elkaar | Tests en diensten delen één bestemming | Storingen worden moeilijk toe te schrijven |
| Per ongeluk opvangen van echte mail | Een domein wordt hergebruikt of verkeerd getypt | Het bericht van een echt persoon staat in een testlade |
| Bewaring zonder eigenaar | Niemand is eigenaar van een gedeeld postvak | Gegevens blijven lang na de run rondhangen |
De derde rij is degene die je serieus moet nemen. Een domein dat in staging wordt gebruikt, is een domein dat uiteindelijk opduikt in configuratie, in een schermafbeelding, in een supportticket of in een bounce. Zodra een echt bericht dat postvak kan bereiken, is het vangnet opgehouden een testgemak te zijn en een eigenaarloos postvak geworden dat de correspondentie van iemand anders bevat.
Er is een vierde storing die stiller is dan de rest: een vangnet dat op de verkeerde zone is geconfigureerd. Als de regel wordt toegepast op een gedeeld domein in plaats van op een subdomein dat alleen voor staging is bedoeld, kunnen interne meldingen en administratieve mail terechtkomen in een lade waar niemand naar kijkt, wat zowel een vertrouwelijkheidsprobleem als een betrouwbaarheidsprobleem is wanneer het bericht ergens naartoe had gemoeten waar het echt hoorde.
Productiemail buiten een stagingpostvak houden
De regel waar je omheen ontwerpt is één zin lang: staging mag nooit mail kunnen ontvangen die aan een productiegebruiker is geadresseerd. Al het andere is implementatie.
De praktische vorm van die regel is een toegewijd domein, of een toegewijd subdomein, met als enige doel testverkeer, gecombineerd met een controle van waar dat domein wordt genoemd. Vooral de configuratie van alarmering, facturering en meldingen zou alleen in stagingomgevingen naar adressen in dit domein moeten wijzen, en het verschil tussen omgevingen zou uit configuratie moeten komen in plaats van uit een handmatige stap die iemand moet onthouden.
Bewaring en opruiming als ontwerpbeslissing
Een gedeeld postvak zonder bewaarbeleid wordt een groeiende stapel die niemand kan lezen en niemand durft te verwijderen. Beslis twee dingen vooraf: hoe lang een opgevangen bericht blijft en wat er aan het einde van die periode gebeurt.
Een korte bewaartermijn is vriendelijker voor iedereen. Een testlade die zichzelf leegmaakt, houdt het volume begrensd, voorkomt dat gevoelige inhoud blijft liggen en maakt het postvak na een lawaaiige week weer leesbaar. Wat het venster ook is, het zou een gedocumenteerde eigenschap van de stagingomgeving moeten zijn in plaats van het toeval van een volrakende schijf. Als je niet kunt zeggen hoe lang een bericht overleeft, heb je nog geen beleid.
Voor ontwikkelaars: routeren op voorvoegsel en de schakelaar afbakenen
De goedkoopste verbetering aan een vangnet is het niet langer als een ongedifferentieerde emmer te behandelen. Omdat het lokale deel van de ontvanger bij het bericht wordt vastgelegd, kun je daarop routeren: geef elke test of elke dienst een eigen voorvoegsel, en laat de lezende code filteren op dat voorvoegsel in plaats van op aankomstvolgorde.
Beperk dan hoe ver de wildcard reikt. Geef de voorkeur aan een regel die een bekende reeks patronen accepteert en al het andere weigert boven een regel die alles accepteert. Een allowlist kost je één configuratieregel per nieuwe gebruiker en verwijdert de hele klasse van onbedoelde opvang, omdat een adres dat niemand heeft geregistreerd wordt geweigerd in plaats van opgeslokt.
Behandel het vangnet ten slotte als een omgevingsinstelling, niet als een permanente eigenschap van het mailsysteem. Als dezelfde configuratie overal wordt toegepast omdat dat makkelijker is dan variëren, zal de stagingregeling uiteindelijk van toepassing worden op een plek waar dat niet hoort. Het artikel over seeddata voor staging behandelt hetzelfde principe voor de accounts en rijen waarmee een stagingomgeving begint.
Iedereen die dit patroon gebruikt, moet het doel in het oog houden. Een vangnet is hier technische leiding voor testverkeer, geen identiteit, en het mag nooit worden behandeld als het postvak van een echt persoon.
Volgende stappen
Open de configuratie die je stagingdomein definieert en beantwoord één vraag: wat gebeurt er met een bericht dat is geadresseerd aan een adres dat geen enkele test ooit heeft gebruikt? Als het antwoord is dat het in het gedeelde postvak belandt, vernauw dan de regel. Wanneer je één enkel wegwerppostvak nodig hebt in plaats van een domein, maakt de tijdelijke mailpagina er een op aanvraag aan, en legt mail opvangen binnen de pipeline de variant uit die de buildmachine helemaal nooit verlaat.