Tek kullanımlık gelen kutuları
Adresi olmayan biri için çalışan bir adres: hesap yok, anahtar yok ve aynı gün yok oluyor.
Tek kullanımlık gelen kutusu nedir
Bir çağıran bu kurulumun sahip olduğu bir alan adında bir adres ister, birkaç dakika izler, geleni okur ve onu bırakır. Doğrulama kodu için, "bu form gerçekte ne gönderiyor" sorusu için ve beş yıl sonra hâlâ kullanıyor olacağınız adrese bağlanmasını istemediğiniz kayıtlar için vardır.
- Yalnızca alır, başka hiçbir şey yapmaz. Gönderim yoktur: bir gelen kutusunun adına gönderebileceği bir kimliği yoktur ve bu dokuz çağrının hiçbiri ağa bir mesaj çıkarmaz.
- Kiralama süresi varsayılan olarak 60 dakikadır ve her seferinde bir saat eklenerek 24 saate kadar uzatılabilir.
- Geldikçe sayılan 50 mesaj tutar. Dolu bir gelen kutusuna ulaşan posta kuyruğa alınmaz, düşürülür; bir mesajı silmek de yeni bir mesaja yer açmaz.
- Kiralama süresi sonunda posta SİLİNİR; gizlenmez ve arşivlenmez. Satır bundan sonra bir hafta daha kalır; böylece yavaş bir gönderen hâlâ yeniden denerken adres yeniden verilemez.
- Hiçbiri bir posta kutusuna dokunmaz. Tek kullanımlık bir mesaj kendi tablosunda durur ve bu yoldaki hiçbir sorgu gerçek bir posta kutusuna ulaşamaz.
Bunlar bu sitedeki ücretsiz aracın yaptığı çağrıların aynısıdır; dolayısıyla sayfanın yapabildiği her şeyi kodunuz da yapabilir. API, sayfanın karşılamadığı durum için var: her çalıştırmada yeni bir adres isteyen bir test paketi.
Adres, kimlik bilgisi değildir
Tek kullanımlık bir adres verildiği anda bir kayıt formuna yazılır. Oradan bir To: başlığında, gönderenin kayıtlarından geçerek karşı taraftaki CRM'e kadar yol alır. Adresi bilmek postayı okumaya yetseydi, araç tasarımı gereği verdiği her gelen kutusunu sızdırırdı; hem de tam olarak çağıranın mesafeli durduğu tarafa.
Bu yüzden bir gelen kutusu oluşturmak ikinci bir değer döndürür: oe_inbox_ artı 43 base64url karakteri biçiminde 32 rastgele bayttan oluşan bir token. Yalnızca o tek yanıtta görünür, başka hiçbir yerde görünmez. Satır yalnızca onun anahtarlı bir hash'ini tutar; dolayısıyla hiçbir şey onu geri getiremez, ne bir destek talebi ne de bir veritabanı dökümü. Token'ı kaybederseniz gelen kutusunu kaybetmiş olursunuz; birinin postasını okuyan bir kimlik bilgisi için doğru sonuç da budur.
# 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"Bu rotalardan birine bir oe_live_ ya da oe_test_ API anahtarı gönderirseniz düz bir 401 yerine invalid_credential_type olarak reddedilir. Burada iki tür kimlik bilgisi aynı host'u ve aynı başlığı paylaşır ve "yetkisiz" yanıtı, hangisinin yanlış olduğunu tahmin etmeyi size bırakırdı.
Kiralama ve uzatılması
Bu tür araçlara adını veren on dakika değil, bir saat. On dakika bir doğrulama kodu için yeterlidir ama bunların kullanıldığı işin diğer yarısı için yetmez: ertesi sabah size yeniden e-posta gönderen bir deneme sürümü, ilk denemesi zaman aşımına uğradığı için iki kez doldurulan bir form. Oluştururken ttlMinutes ile 1 ile 1440 arasında başka bir süre isteyebilirsiniz; bu aralığın dışındaki bir sayı sessizce ayarlanmaz, 422 ile reddedilir, çünkü istemediğiniz bir sona erme zamanı, çoktan ona göre plan yaptığınız bir zamandır.
POST /temp-mail/inboxes/{id}/extend, şimdiki zamana değil sona erme zamanına bir saat ekler; dolayısıyla erken uzatmak kalan sürenizi boşa harcamaz. 23 kez çalışır ve gelen kutusunun oluşturulduğu andan itibaren bir gün, iki sınırdan daha katı olanıdır: zaten bu sınıra kadar uzanan bir kiralamanın, kaç uzatma kullanılmış olursa olsun alabileceği ek süre kalmamıştır. Her gelen kutusu yanıtındaki extensionsLeft ikisini birden hesaba katar; böylece bir istemci düğmeyi pasifleştirebilir. Sıfırda çağrı 409 extension_limit döner.
Süresi dolmuş bir gelen kutusu, dolduğu anda kimlik doğrulamayı bırakır: token'ı temizlemeyi beklemeden 404 döner. Postayı silen şey temizleme işlemidir ve saatlik cron'da çalışır; DELETE /temp-mail/inboxes/{id} ise aynı silmenin isteğe bağlı hâlidir.
Tavanlar
Bunların hepsi bir hız sınırlayıcı değil, sayılan satırlardır. Bu kod tabanında başvurulacak bir sınırlayıcı yok ve bunu söylemek, var olmayan bir savunmayı ima etmekten daha faydalı. Sınırlar hasarın oluşacağı yerlere konmuştur: üretim ve depolama.
| Tavan | Değer | Tavana ulaşıldığında ne olur |
|---|---|---|
| Kiralama | 60 dakika, 24 saate kadar uzatılabilir | 409 conflict_error / extension_limit |
| Gelen kutusu başına mesaj | 50 | Sonraki posta kapıda düşürülür. Geri dönüş yazılmaz, hiçbir şey kuyruğa alınmaz ve bir mesajı silmek yeri geri kazandırmaz. |
| Üretilen gelen kutuları | Çağıran başına saatte 6, günde 30 | 429 rate_limit_error / too_many_inboxes |
| Saklanan gövde | 2 MB | Mesajda truncated: true; geri kalanı kaybolmuştur. |
| Ek baytları | Her biri 8 MB | content null olur ve üst veri korunur; bu, boş bir dosyayla aynı şey değildir. |
Üretim tavanı, istemci IP'sinin anahtarlı bir hash'ine göre sayılır ve yok edilmiş bir gelen kutusu da sayılmaya devam eder; dolayısıyla birini atmak yenisini almanın bir yolu değildir. Başka birinin proxy'sinin arkasında iletilen başlık sahte olabilir; bu, kimlik bilgisindeki bir açık değil, tavanın bilinen bir zayıflığıdır: buradaki hiçbir şey o değere göre yetki vermez.
Burada olmayanlar
Henüz yayımlanmadıDeneyerek öğrenmek, önceden söylenmekten kötüdür:
- Hiçbir biçimde gönderim yok. Tek kullanımlık bir gelen kutusunun adına gönderebileceği bir bağlantısı yoktur ve bir tane eklemek, anonim ve kimlik doğrulaması olmayan bir uç noktayı açık bir röleye dönüştürürdü.
- Yeniden adlandırma yok. Adresinizi değiştirmek ikinci bir gelen kutusu oluşturmak demektir: yerinde yeniden adlandırma, tıklandığı anda eski yerel kısmı serbest bırakırdı ve yolda olan bir doğrulama mesajı, o adres bir sonraki kime verildiyse ona teslim edilirdi.
- Kural, filtre, iletme, webhook ya da yapay zekâ yok.
spammesaj üzerindeki bir bayraktır ve hiçbir şey ona göre işlem yapmamıştır. Hiçbir şey dosyalanmadı; burada hiçbir şey özetlenmez ya da embedding'e dönüştürülmez. - Geri dönüş yok. Havuzdaki bir alan adına gelen ve ne aktif bir tek kullanımlık gelen kutusunu ne de operatörün oluşturduğu bir adresi adlandıran posta bilerek sessizce düşürülür: herkese açık bir adres üreteci sözlük saldırılarını çeker ve saldırının iddia ettiği dönüş yoluna bir teslimat raporu yazmak, kurulumu bir backscatter kaynağına dönüştürürdü.
- Yapılandırılmış alan adı yoksa hizmet de yok.
TEMP_MAIL_DOMAINSboş olduğundaGET /temp-mail/domainsboş bir liste döner ve gelen kutusu oluşturmak 503temp_mail_unavailabledöner. Havuzdaki bir alan adına gelen teslimat, canlı bir alan adında uçtan uca henüz gözlemlenmedi.
Kurulumu siz işletiyorsanız bir alan adını yapılandırma
Liste bir yapılandırmadır: TEMP_MAIL_DOMAINS neyi adlandırıyorsa dağıtılan odur. DNS'i otomatikleştiren hiçbir şey yok; dolayısıyla bu beş adımın dördünü bir alan adı kayıt şirketinde bir insan yapar.
- Bunun için bir alan adı kaydedin. Yabancıların dağıtmasına razı olacağınız bir alan adı kullanın. Üzerindeki her adres onun itibarını paylaşır; seçicinin yeni gelen kutularını ilkini doldurmak yerine havuza rastgele dağıtmasının nedeni de budur.
- Uygulamada Ayarlar → Alan adları altından ekleyin. Bu, gönderim kimliğini oluşturur ve yayımlanacak DNS kayıtlarını gösterir.
- MX, SPF, DKIM ve
_openemail-challengeTXT kayıtlarını kayıt şirketinde yayımlayın. Doğrulama canlı DNS'i okur ve cron'da yeniden kontrol edilir; yalnızca doğrulanmış bir alan adı sunulur. - Doğrulanmış alan adını sunucudaki
TEMP_MAIL_DOMAINSdeğişkenine virgülle ayırarak ekleyin. Listelenene kadar çalışma alanındaki sıradan bir alan adıdır. - catch-all'ı AÇIK bırakın. Tek kullanımlık bir adresin oluşturulmadan var olmasını sağlayan budur, çünkü herhangi bir yerel kısma gelen posta sıradan alıcı aramasından önce kabul edilir ve geri okunur; dolayısıyla havuzdaki bir alan adı için hiçbir zaman adres satırı yazılmaz. catch-all'ı açık bırakmak ise tek kullanımlık postaları gerçek bir posta kutusuna dosyalamaya başlardı.
Ayrılmış yerel kısımlar (postmaster, abuse, security ve RFC 2142'nin geri kalanı) asla tek kullanımlık olamaz ve bunun yerine sıradan posta kutusuna düşer. Kendi kötüye kullanım raporlarını yutan, havuzdaki bir alan adı, hiçbir yere teslimat yapamaz hâle gelen bir alan adıdır. Havuzdaki bir alan adında kendiniz oluşturduğunuz legal@ ya da privacy@ gibi bir adres de aynı şekilde davranır: ona gelen posta sizin posta kutunuza düşer ve kimseye tek kullanımlık adres olarak verilemez.