Ugrás a dokumentációra
API

Eldobható postafiókok

Működő e-mail-cím annak, akinek nincs: fiók nélkül, kulcs nélkül, és még aznap eltűnik.

Mi az eldobható postafiók

A hívó kér egy címet egy olyan domainen, amelyet ez a telepítés birtokol, pár percig figyeli, elolvassa, ami megérkezik, majd elhagyja. Azért van, hogy megkapd a megerősítő kódot, megválaszold azt a kérdést, hogy „mit is küld valójában ez az űrlap”, és hogy elintézz egy olyan regisztrációt, amelyet nem akarsz ahhoz a címhez kötni, amelyet öt év múlva is használni fogsz.

  • Csak fogad, semmi mást. Küldeni nem lehet: egy ilyen postafióknak nincs olyan identitása, amelynek a nevében küldhetne, és a kilenc hívás közül egyik sem tesz üzenetet a hálózatra.
  • A bérlet alapértelmezés szerint 60 perc, és óránként meghosszabbítva 24 órára tolható ki.
  • 50 üzenetet tárol, amelyeket beérkezéskor számol meg. A megtelt postafiókba érkező levél nem sorba áll, hanem eldobódik, és egy üzenet törlése nem szabadít fel helyet egy újabbnak.
  • A bérlet végén a levelek TÖRLŐDNEK, nem elrejtve és nem archiválva. Maga a sor egy héttel túléli őket, hogy a címet ne lehessen újra kiadni, amíg egy lassú feladó még újrapróbálkozik rá.
  • Ebből semmi nem érinti a valódi postafiókokat. Az eldobható üzenetek saját táblában élnek, és ezen az útvonalon egyetlen lekérdezés sem érhet el valódit.

Ezek ugyanazok a hívások, amelyeket az oldalon lévő ingyenes eszköz is használ, tehát amit az oldal tud, azt a kódod is tudja. Az API arra az esetre van, amikor az oldal nem jó: például egy tesztkészletnek, amely futásonként friss címet akar.

A cím nem a hitelesítő adat

Az eldobható címet a kiadása pillanatában beírják egy regisztrációs űrlapba. Onnan egy To: fejlécben utazik tovább, át a feladó naplóin, be abba a CRM-be, amely a túlsó végén áll. Ha a cím ismerete elég volna a levelek olvasásához, az eszköz a tervezésénél fogva szivárogtatná ki minden kiadott postafiókját – méghozzá pontosan annak a félnek, akit a hívó távol akart tartani magától.

A postafiók létrehozása ezért egy második értéket is visszaad: egy token-t, 32 véletlen bájtot oe_inbox_ előtaggal és 43 base64url karakterrel. Egyedül azon az egy válaszon jelenik meg, máshol soha. A sor csak egy kulcsolt hasht tárol belőle, így semmi nem állítja vissza – sem egy ügyfélszolgálati kérés, sem egy adatbázis-mentés. Ha elveszted a tokent, elvesztetted a postafiókot, és ez a helyes kimenet egy olyan hitelesítő adatnál, amely valakinek a leveleit olvassa.

A teljes folyamat
# 1. Mint one. This is the only response that carries a token.curl -s -X POST "$OE/temp-mail/inboxes" -H "Content-Type: application/json" -d '{}' # 2. Keep it, and read with it.export INBOX="Authorization: Bearer oe_inbox_kQ8v…"curl -s "$OE/temp-mail/inboxes/tinb_9c2f…/messages" -H "$INBOX"

Ha oe_live_ vagy oe_test_ API-kulcsot küldesz ezekre az útvonalakra, azt invalid_credential_type hibával utasítjuk el, nem pedig egy sima 401-gyel. Itt kétféle hitelesítő adat osztozik egy hoszton és egy fejlécen, és a puszta „nem engedélyezett” válaszból magadnak kellene kitalálnod, melyikkel volt baj.

A bérlet és a meghosszabbítása

Egy óra, nem az a tíz perc, amelyről a műfaj a nevét kapta. A tíz elég egy megerősítő kódhoz, de nem elég arra, amire ezeket még használják: egy próbaverzióhoz, amely másnap reggel újra ír, vagy egy kétszer kitöltött űrlaphoz, mert az első próbálkozás túllépte az időkorlátot. A ttlMinutes a létrehozáskor mást is kérhet, 1 és 1440 között; az ezen kívül eső értéket 422-vel utasítjuk el, nem pedig csendben igazítjuk, mert egy olyan lejárat, amelyet nem kértél, olyan lejárat, amelyre már ráterveztél.

A POST /temp-mail/inboxes/{id}/extend egy órát ad a lejárathoz, nem a mostani időponthoz, így a korai hosszabbítás nem pazarolja el a hátralévő időt. 23 alkalommal működik, és a létrehozás pillanatától számított egy nap a kettő közül a szigorúbb korlát: az a bérlet, amely már eddig tart, nem tud több időt venni, akárhány hosszabbítás maradt is. Az extensionsLeft minden postafiókválaszon mindkettőt figyelembe véve számol, így a kliens le tudja tiltani a gombot; nullánál a hívás 409 extension_limit választ ad.

A lejárt postafiók a lejárat pillanatában megszűnik hitelesíteni: a tokenje 404-et ad, meg sem várva a takarítást. A takarítás az, ami a leveleket törli, és az óránkénti cronon fut; a DELETE /temp-mail/inboxes/{id} ugyanez a törlés, kérésre.

A korlátok

Ezek mind megszámolt sorok, nem pedig sebességkorlátozó. Ebben a kódbázisban nincs olyan korlátozó, amelyhez nyúlni lehetne, és ezt kimondani többet ér, mint olyan védelmet sugallni, amely nincs. Oda kerültek, ahol a kár keletkezne: a kiadásra és a tárolásra.

KorlátÉrtékMi történik, ha eléred
Bérlet60 perc, 24 órára meghosszabbítható409 conflict_error / extension_limit
Üzenet postafiókonként50A további levelek már az ajtóban eldobódnak. Nem készül visszapattanó üzenet, semmi nem kerül sorba, és egy üzenet törlése nem adja vissza a helyet.
Kiadott postafiókok6 óránként, 30 naponta, hívónként429 rate_limit_error / too_many_inboxes
Tárolt üzenettörzs2 MBtruncated: true az üzeneten; a többi része elveszett.
Melléklet méreteegyenként 8 MBA content null, a metaadatok pedig megmaradnak, ami nem ugyanaz, mint egy üres fájl.

A kiadási korlát a kliens IP-címének kulcsolt hashére számol, és a megsemmisített postafiók is beleszámít, tehát egy eldobásával nem lehet újat venni. Valaki más proxyja mögül a továbbított fejléc hamisítható, ami a korlát ismert gyengesége, nem pedig lyuk a hitelesítésen: itt semmi nem erre az értékre alapozva ad jogosultságot.

Ami nincs itt

Még nem érhető el

Jobb előre tudni, mint próbálkozással kideríteni:

  • Küldeni semmilyen formában nem lehet. Az eldobható postafiókhoz nem tartozik olyan kapcsolat, amelynek a nevében küldhetne, és egy ilyen hozzáadása névtelen, hitelesítés nélküli végpontból nyílt relayt csinálna.
  • Átnevezés nincs. A cím megváltoztatása azt jelenti, hogy létrehozol egy második postafiókot: a helyben átnevezés a kattintás pillanatában felszabadítaná a régi helyi részt, és egy már úton lévő megerősítő levél annál kötne ki, akinek legközelebb kiadtuk.
  • Nincsenek szabályok, szűrők, továbbítás, webhookok vagy AI. A spam egy jelző az üzeneten, amelyre semmi nem lépett. Semmi nem került eltárolásra máshová, és itt semmiről nem készül összefoglaló vagy beágyazás.
  • Visszapattanó üzenet nincs. Az olyan levél, amely egy pool-domainre érkezik, és sem élő eldobható postafiókot, sem az üzemeltető által létrehozott címet nem nevez meg, szándékosan, csendben eldobódik: egy nyilvános címgenerátor vonzza a szótáras támadásokat, és ha a támadás által megadott bármelyik visszaútra kézbesítési jelentést írnánk, a telepítésből backscatter-forrás lenne.
  • Ha nincs beállított domain, nincs szolgáltatás sem. Amikor a TEMP_MAIL_DOMAINS üres, a GET /temp-mail/domains üres listát ad, a postafiók létrehozása pedig 503 temp_mail_unavailable hibát. A pool-domainre történő bejövő kézbesítést élő domainen még nem figyeltük meg végponttól végpontig.

Domain beállítása, ha te üzemelteted a telepítést

A lista konfiguráció: amit a TEMP_MAIL_DOMAINS megnevez, azt osztjuk ki. A DNS-t semmi nem automatizálja, tehát az öt lépésből négyet egy ember végez el a regisztrátornál.

  1. Regisztrálj hozzá egy domaint. Olyat válassz, amelyet hajlandó vagy idegenek kezébe adni. A rajta lévő minden cím osztozik a reputációján, és a választó is ezért szórja szét véletlenszerűen az új postafiókokat a poolban ahelyett, hogy előbb az elsőt töltené meg.
  2. Vedd fel az alkalmazásban a Beállítások → Domainek alatt. Ezzel létrejön a küldési identitás, és kiíródnak a közzéteendő DNS-rekordok.
  3. Tedd közzé az MX-, SPF-, DKIM- és _openemail-challenge TXT-rekordokat a regisztrátornál. Az ellenőrzés élő DNS-t olvas, és a cron újra lefuttatja; csak ellenőrzött domaint kínálunk fel valaha.
  4. Vedd fel az ellenőrzött domaint a kiszolgálón a TEMP_MAIL_DOMAINS értékébe, vesszővel elválasztva. Amíg nem szerepel a listán, közönséges domain a munkaterületen.
  5. Hagyd BEKAPCSOLVA a catch-all beállítást. Ez teszi lehetővé, hogy egy eldobható cím a létrehozása nélkül is létezzen, mert bármelyik helyi részre érkező levelet elfogadjuk és a szokásos címzettkeresés előtt visszaolvassuk, így pool-domainhez soha nem íródik címsor; a catch-all bekapcsolva hagyása eldobható leveleket kezdene egy valódi postafiókba iktatni.

A fenntartott helyi részek (postmaster, abuse, security és az RFC 2142 többi eleme) soha nem lehetnek eldobhatók, hanem a szokásos postafiókba esnek át. Az a pool-domain, amely a saját visszaélési bejelentéseit elnyeli, hamarosan sehová nem tud majd kézbesíteni. Az a cím is így viselkedik, amelyet te magad hozol létre egy pool-domainen, például a legal@ vagy a privacy@: a rá érkező levél a te postafiókodba kerül, és senkinek nem adható ki eldobható címként.

Ebben a szakaszban