Safates d'entrada d'un sol ús
Una adreça que funciona per a qui no en té cap: sense compte, sense clau i desapareguda el mateix dia.
Què és una safata d'entrada d'un sol ús
Qui truca demana una adreça en un domini que aquesta instal·lació posseeix, la vigila uns minuts, llegeix el que hi arribi i l'abandona. Existeix per al codi de confirmació, per a la pregunta «què envia realment aquest formulari» i per al registre que no vols lligar a l'adreça que encara faràs servir d'aquí a cinc anys.
- Només rep, res més. No hi ha enviament: una safata d'entrada no té cap identitat amb què enviar, i cap d'aquestes nou crides no posarà cap missatge a la xarxa.
- La cessió és de 60 minuts per defecte i es pot allargar fins a 24 hores, una hora cada vegada.
- Conté 50 missatges, comptats a mesura que arriben. El correu que arriba a una safata plena es descarta en comptes d'encuar-se, i esborrar-ne un no compra lloc per a un altre.
- En acabar la cessió, el correu s'ESBORRA: ni s'amaga ni s'arxiva. La fila hi sobreviu una setmana perquè l'adreça no es pugui tornar a emetre mentre un remitent lent encara hi estigui reintentant.
- Res d'això no toca cap bústia. Un missatge d'un sol ús viu a la seva pròpia taula, i cap consulta d'aquest camí no pot arribar a una de real.
Aquestes són les mateixes crides que fa l'eina gratuïta d'aquest lloc, de manera que tot el que pot fer la pàgina ho pot fer el teu codi. L'API hi és per al cas en què la pàgina no serveix: una bateria de proves que vol una adreça nova a cada execució.
L'adreça no és la credencial
Una adreça d'un sol ús s'escriu en un formulari de registre en el mateix moment en què s'emet. Des d'allà viatja en una capçalera To:, pels registres del remitent i fins al CRM que hi hagi a l'altra banda. Si saber l'adreça fos suficient per llegir-ne el correu, l'eina filtraria totes les safates que emetés, per disseny, i precisament a la part que qui truca mantenia a distància.
Per això crear una safata retorna un segon valor: un token, 32 bytes aleatoris com a oe_inbox_ més 43 caràcters base64url. Apareix en aquella resposta i en cap altra. La fila només en desa un hash amb clau, de manera que no el recupera res: ni una petició de suport ni un bolcat de la base de dades. Si perds el token has perdut la safata, que és el resultat correcte per a una credencial que llegeix el correu d'algú.
# 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"Si envies una clau d'API oe_live_ o oe_test_ a una d'aquestes rutes, es rebutja com a invalid_credential_type i no pas amb un 401 sec. Aquí dos tipus de credencial comparteixen un amfitrió i una capçalera, i un «no autoritzat» et deixaria endevinar quina de les teves era la incorrecta.
La cessió, i com allargar-la
Una hora, i no els deu minuts que donen nom al gènere. Deu n'hi ha prou per a un codi de confirmació i no n'hi ha prou per a l'altra meitat d'allò per a què s'utilitzen: una prova gratuïta que et torna a escriure l'endemà al matí, un formulari omplert dues vegades perquè el primer intent va exhaurir el temps. ttlMinutes a la creació demana una altra cosa, d'1 a 1440; un número fora d'aquest rang es rebutja amb un 422 en comptes d'ajustar-se en silenci, perquè una caducitat que no has demanat és una caducitat sobre la qual ja has fet plans.
POST /temp-mail/inboxes/{id}/extend afegeix una hora a la caducitat, no pas a ara, de manera que allargar-la aviat no malgasta el temps que et queda. Funciona 23 vegades, i el dia comptat des del moment de crear la safata és el més dur dels dos límits: una cessió que ja hi arriba no té res més a comprar, per poques ampliacions que s'hagin gastat. extensionsLeft, a cada resposta d'una safata, compta tots dos, de manera que un client pot deshabilitar el botó; a zero, la crida respon 409 extension_limit.
Una safata caducada deixa d'autenticar en el moment mateix que caduca: el seu token respon 404 sense esperar l'escombrada. L'escombrada és el que esborra el correu, i s'executa al cron horari; DELETE /temp-mail/inboxes/{id} és la mateixa eliminació sota demanda.
Els límits
Tots aquests són recomptes de files i no pas un limitador de freqüència. En aquesta base de codi no hi ha cap limitador a què recórrer, i dir-ho és més útil que insinuar una defensa que no hi és. Estan col·locats on hi hauria el dany: l'encunyació i l'emmagatzematge.
| Límit | Valor | Què passa quan s'hi arriba |
|---|---|---|
| Cessió | 60 minuts, ampliables a 24 hores | 409 conflict_error / extension_limit |
| Missatges per safata | 50 | La resta de correu es descarta a la porta. No s'escriu cap rebot, no s'encua res, i esborrar un missatge no retorna la plaça. |
| Safates encunyades | 6 per hora, 30 per dia, per sol·licitant | 429 rate_limit_error / too_many_inboxes |
| Cos desat | 2 MB | truncated: true al missatge; la resta ha desaparegut. |
| Bytes d'adjunt | 8 MB cadascun | content és null i es conserven les metadades, cosa que no és el mateix que un fitxer buit. |
El límit d'encunyació es compta contra un hash amb clau de la IP del client, i una safata destruïda continua comptant, de manera que llençar-ne una no és una manera de comprar-ne una altra. Darrere del proxy d'algú altre, la capçalera de reenviament es pot falsejar, cosa que és una debilitat coneguda del límit i no pas un forat a la credencial: aquí res no autoritza a partir d'aquell valor.
Què no hi ha
Encara no disponibleDescobrir-ho a base de provar és pitjor que llegir-ho aquí:
- Res d'enviaments, de cap mena. Una safata d'un sol ús no té cap connexió amb què enviar, i afegir-n'hi una convertiria un endpoint anònim i sense autenticar en un relay obert.
- Res de canviar el nom. Canviar d'adreça vol dir crear una segona safata: reanomenar-la al moment alliberaria l'antiga local-part en l'instant de fer-hi clic, i una confirmació que ja fos en camí es lliuraria a qui la rebés a continuació.
- Res de regles, filtres, reenviaments, webhooks ni IA.
spamés una marca al missatge i ningú no hi ha actuat. No s'ha arxivat res, i aquí no es resumeix ni s'incrusta res. - Res de rebots. El correu adreçat a un domini del pool que no anomena ni una safata d'un sol ús activa ni una adreça creada per l'operador es descarta en silenci, a propòsit: un generador públic d'adreces atrau atacs de diccionari, i escriure un informe de lliurament al camí de retorn que declari l'atac convertiria la instal·lació en una font de backscatter.
- Sense cap domini configurat no hi ha servei. Quan
TEMP_MAIL_DOMAINSés buit,GET /temp-mail/domainsrespon amb una llista buida i crear una safata respon 503temp_mail_unavailable. El lliurament entrant a un domini del pool no s'ha observat d'extrem a extrem en cap domini en producció.
Configurar un domini, si ets qui gestiona la instal·lació
La llista és configuració: el que anomeni TEMP_MAIL_DOMAINS és el que es reparteix. Res no automatitza el DNS, de manera que quatre d'aquests cinc passos són una persona davant d'un registrador.
- Registra-hi un domini. Fes servir-ne un que estiguis disposat a deixar que reparteixin desconeguts. Totes les adreces que hi hagi comparteixen la seva reputació, que també és el motiu pel qual el selector reparteix les safates noves pel pool a l'atzar en comptes d'omplir el primer domini.
- Afegeix-lo a l'aplicació, a Configuració → Dominis. Això encunya la identitat d'enviament i imprimeix els registres DNS que cal publicar.
- Publica els registres MX, SPF, DKIM i el TXT
_openemail-challengeal registrador. La verificació llegeix el DNS en viu i es torna a comprovar al cron; només s'ofereix un domini verificat. - Afegeix el domini verificat a
TEMP_MAIL_DOMAINSal servidor, separat per comes. Fins que no hi consti, és un domini normal de l'espai de treball. - Deixa catch-all ACTIVAT. És el que fa que una adreça d'un sol ús existeixi sense haver-la creat, perquè el correu a qualsevol local part s'accepta i es llegeix abans de la cerca ordinària de destinatari, de manera que no s'escriu mai cap fila d'adreça per a un domini del pool; deixar catch-all activat començaria a arxivar correu d'un sol ús en una bústia real.
Les local-parts reservades (postmaster, abuse, security i la resta de l'RFC 2142) no poden ser mai d'un sol ús i passen a la bústia ordinària. Un domini del pool que es menja els seus propis informes d'abús és un domini que deixa de poder lliurar enlloc. Una adreça que creïs tu mateix en un domini del pool, com ara legal@ o privacy@, es comporta igual: el correu que hi arriba va a la teva bústia, i ningú no pot rebre-la com a adreça d'un sol ús.