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.
# 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ék | Mi történik, ha eléred |
|---|---|---|
| Bérlet | 60 perc, 24 órára meghosszabbítható | 409 conflict_error / extension_limit |
| Üzenet postafiókonként | 50 | A 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ókok | 6 óránként, 30 naponta, hívónként | 429 rate_limit_error / too_many_inboxes |
| Tárolt üzenettörzs | 2 MB | truncated: true az üzeneten; a többi része elveszett. |
| Melléklet mérete | egyenként 8 MB | A 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ő elJobb 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
spamegy 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, aGET /temp-mail/domainsüres listát ad, a postafiók létrehozása pedig 503temp_mail_unavailablehibá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.
- 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.
- 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.
- Tedd közzé az MX-, SPF-, DKIM- és
_openemail-challengeTXT-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. - 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. - 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.