Jawaban singkatnya, dan separuh yang mengejutkan orang
5 hari. Itulah keseluruhan jawaban yang dicari kebanyakan orang, dan ada baiknya bersikap tepat soal jawaban itu untuk apa: sebuah pesan bisa dibaca selama 5 hari. Alamat tempatnya mendarat sama sekali tidak kedaluwarsa, karena tidak ada apa pun di sana yang bisa kedaluwarsa.
Itu dua hal yang berbeda, dan mencampuradukkan keduanya menghasilkan dua keluhan yang sama-sama sering kami terima — "alamat saya berhenti bekerja", padahal tidak, dan "bisakah ini disimpan lebih lama", padahal tidak ada tuas apa pun yang bisa ditarik.
- Sebuah pesan
- Bisa dibaca selama 5 hari sejak stempel waktunya sendiri, lalu hilang. Isi, header, pratinjau, dan lampiran apa pun, semuanya pada saat yang sama.
- Sebuah alamat
- Tidak kedaluwarsa, karena tidak ada catatan apa pun tentangnya yang disimpan. Itu cuma sebuah string. Alamat itu bekerja saat pertama kali dipakai dan tetap bekerja setahun kemudian.
- Sebuah kotak surat
- Baris yang menghitung satu alamat dibuat oleh pesan pertama yang mendarat di situ, dan dihapus saat pesan terakhirnya pergi. Anda sendiri tidak pernah membuat atau menghapusnya.
Satu jendela, sama untuk semua orang: gratis atau berbayar, domain publik atau domain Anda sendiri. Ini bukan fitur paket, dan tidak ada pengaturan di mana pun yang bisa mengubahnya.
Kapan jamnya sebenarnya mulai berjalan
Tenggatnya dihitung sekali saja, saat pesan diantarkan, lalu dituliskan ke baris di sampingnya. Tidak ada apa pun yang menghitungnya ulang sesudah itu — tidak ada kebijakan yang diperiksa saat Anda membaca, tidak ada paket yang dicek, dan tidak ada jam yang mulai lagi dari nol cuma karena Anda membuka sesuatu.
Yang penting untuk diketahui adalah dihitung dari mana. Sebuah pesan membawa header Date-nya sendiri, yang ditulis oleh apa pun yang mengirimkannya, dan itulah awal dari 5 hari itu — tapi cuma selama header itu masuk akal.
- Header-nya berada dalam rentang satu hari dari sekarang. Header itu diterima apa adanya. Hampir semua pesan berada dalam kondisi ini, dan untuk pesan-pesan itu jendelanya berjalan 5 hari sejak momen pengirimnya menekan tombol kirim.
- Header-nya lebih jauh dari itu, ke arah mana pun. Header itu diabaikan dan waktu kedatangannya dipakai sebagai gantinya. Seorang pengirim bisa menulis tanggal apa saja sesukanya, termasuk tanggal di abad berikutnya, dan pesan yang tidak pernah kedaluwarsa akan jadi pesan yang tidak pernah benar-benar terkirim.
- Sama sekali tidak ada header yang bisa dipakai. Sama saja: waktu kedatangan yang dipakai.
Ini cuma bisa merugikan Anda beberapa jam, dan cuma bisa berjalan satu arah — sebuah pesan mungkin tiba dengan sisa waktu sedikit kurang dari 5 hari, tidak pernah lebih. Sesuatu yang mengantre di suatu tempat selama dua puluh jam sebelum sampai ke kami akan muncul dengan sisa waktu sekitar empat hari empat jam.
Apa yang ikut hilang, dan apa yang tetap ada
Saat sebuah pesan mencapai tenggatnya, semua yang menjadi miliknya hilang sekaligus. Tidak ada apa pun yang ditahan di tabel lain, dan tidak ada yang bertahan dalam bentuk ringkas — tidak ada sisa, tidak ada baris subjek yang disimpan sebagai catatan, tidak ada thumbnail dari sebuah berkas.
| Apa | Apa yang terjadi padanya | Kapan |
|---|---|---|
| Pesannya | Teks, HTML, header, dan pratinjau, dihapus bersamaan. | Pada tenggatnya |
| Lampirannya | Dihapus dari disk sekaligus dari basis data. Sebuah berkas cuma bisa dijangkau lewat pesan yang membawanya, jadi berkas itu tidak bisa bertahan lebih lama daripada pesannya. | Bersama pesannya |
| Tanda sudah dibaca | Itu cuma kolom pada pesannya, bukan sesuatu yang berdiri sendiri. Ia hilang saat barisnya hilang. | Bersama pesannya |
| Catatan kotak surat | Baris yang menghitung isi satu alamat dihapus begitu pesan terakhir di dalamnya hilang. Baris itu ada karena surat pernah masuk; ia tidak bertahan lebih lama daripada suratnya. | Bersama pesan terakhirnya |
| Alamatnya | Tidak ada yang perlu dihapus. Alamat itu tidak pernah disimpan sebagai sesuatu yang bisa ada atau berhenti ada. | Tidak pernah |
| Alias yang pernah membawa surat | Disimpan. Itu jejak yang menunjukkan layanan mana yang diberi alamat yang mana, dan itu lebih berharga daripada biaya menyimpan barisnya. | Tidak pernah |
| Alias yang tidak pernah membawa surat | Dibuang setelah 5 hari tanpa aktivitas — lalu dihitung ulang, persis sama, saat alamatnya dipakai lagi. Sebuah alias diturunkan dari alamatnya, bukan ditetapkan padanya, jadi membuang yang tidak dipakai tidak menghilangkan apa pun. | Setelah 5 hari tanpa aktivitas |
| Record MX domain Anda sendiri | Milik Anda, di DNS Anda, tidak tersentuh oleh semua ini. Retensi ini soal suratnya, bukan soal peruteannya. | Tidak pernah |
Berkas lampiran diputus tautannya sebelum barisnya sendiri dihapus, dan urutan ini disengaja: kalau terjadi crash di tengah-tengahnya, yang tersisa cuma baris yang berkasnya sudah hilang, dan itu dibereskan pada putaran berikutnya. Urutan sebaliknya akan meninggalkan berkas yang tidak ditunjuk oleh apa pun, dan tidak akan pernah ada yang datang mengambilnya kembali.
Tak terbaca dulu, terhapus belakangan
Itu dua peristiwa, dan keduanya bukan peristiwa yang sama. Cuma yang pertama yang berjalan sesuai jadwal yang bisa diandalkan, dan cuma itu pula yang bisa Anda amati.
Setiap pembacaan di sini disaring oleh tenggatnya. Menampilkan isi kotak surat, membuka satu pesan, mengunduh satu lampiran — ketiganya membawa syarat yang sama, dan pesan yang sudah lewat jendelanya tidak akan cocok dengan satu pun dari ketiganya. Tidak ada jeda waktu di mana suratnya "secara teknis masih ada di sana": begitu kedaluwarsa, ia langsung hilang dari halaman kotak masuk, dari API, dan dari server MCP pada saat yang sama.
Yang terjadi sesudahnya cuma beres-beres. Sebuah pembersihan lewat dan membebaskan baris serta berkasnya, dalam kelompok terbatas, dengan kecepatan yang dipilih supaya membereskan tunggakan tidak pernah membuat pengiriman yang masih aktif mengantre di belakangnya. Secepat atau selambat apa pun pembersihan itu sampai ke sebuah pesan tertentu, tidak ada yang berubah dan bisa dilihat siapa pun.
- Tenggatnya
- Syarat pada setiap query yang bisa mengembalikan sebuah pesan. Persis, dan sama di kotak masuk, di API, dan di server MCP, karena ketiganya menanyakan pertanyaan yang sama.
- Pembersihannya
- Pekerjaan terbatas yang membebaskan apa pun yang sudah tidak terjangkau. Bukan sesuatu yang ditunggu oleh pembaca mana pun, dan bukan pula hal yang menentukan bisa tidaknya Anda membaca sesuatu.
Itulah sebabnya jawaban untuk "apakah ini dihapus atau cuma disembunyikan?" adalah "keduanya, dalam urutan itu" — dan kenapa tidak ada bedanya yang mana dari keduanya yang sudah terjadi pada saat Anda bertanya.
Membaca tenggat langsung dari pesannya
Anda tidak pernah perlu menghitung sendiri tanggalnya. Setiap pesan yang dikembalikan API membawa tenggat yang diberikan padanya saat pengantaran, sebagai stempel waktu ISO 8601 dalam UTC.
$ curl -sG https://grabmail.io/api/v1/mailbox \
--data-urlencode "address=you@grabmail.io"Setiap pesan dalam responsnya membawa kedua ujung jendelanya sendiri:
{
"id": "01k4h2v9r7m3d8f0b6n5c1qtzx",
"from": "no-reply@example.com",
"subject": "Confirm your email address",
"date": "2026-09-01T09:00:00+00:00",
"seen": false,
"attachments": 0,
"expires_at": "2026-09-06T09:00:00+00:00"
}date adalah titik awal jamnya dan expires_at adalah titik berhentinya. Kurangkan satu dari yang lain dan Anda selalu mendapat 5 hari, setiap saat — cara tercepat untuk meyakinkan diri sendiri bahwa tidak ada apa pun yang Anda lakukan di antaranya yang mengubah sesuatu.
expires_at- Momen saat pesannya berhenti bisa dibaca. Absolut, dalam UTC, dengan offset yang dituliskan lengkap, bukan cuma sebagai huruf Z di akhir.
date- Stempel waktu pesan itu sendiri — dipercaya kalau berada dalam rentang satu hari dari kedatangannya, diam-diam diganti dengan waktu kedatangan kalau tidak.
Minta sebuah pesan yang sudah lewat tenggatnya, dan Anda akan mendapat jawaban yang persis sama seperti untuk pesan yang memang tidak pernah ada:
{"error":"not_found","message":"no such message in that mailbox, or it has expired"}API-nya tidak akan bilang yang mana dari keduanya, dan itu bukan kelalaian. Membedakan keduanya akan mengubah 404 menjadi cara untuk memastikan bahwa suatu id tertentu pernah benar-benar ada, dan itu pertanyaan yang seharusnya tidak bisa diajukan siapa pun di luar kotak suratnya.
Menyimpan hal yang sebenarnya Anda cari
Hampir tidak ada yang mendarat di alamat sekali pakai perlu bertahan lebih lama daripada alamatnya. Segelintir pengecualian ini layak diurus dengan sengaja, bukan ditemukan begitu saja di hari keenam.
- Kode, tautan, atau kata sandi sementara. Pakai sekarang juga. Ini justru hal-hal berumur paling pendek dalam pesannya — kebanyakan tautan konfirmasi berhenti bekerja jauh sebelum 5 hari habis, dan suratnya bertahan lebih lama daripada tautannya adalah hal yang biasa, bukan sebaliknya.
- Berkas. Unduh selagi pesannya masih ada. Satu pesan utuh dibatasi hingga 5 MB, jadi ini tidak pernah jadi operasi besar, dan berkasnya hilang pada saat yang persis sama dengan pesannya.
- Kuitansi atau faktur. Satu-satunya kasus di mana alamat sekali buang memang bukan alat yang tepat. Simpan di tempat Anda biasa menyimpan sesuatu, atau pakai alamat yang memang Anda simpan.
- Apa pun yang dihasilkan test suite. Lakukan assert di dalam run yang menghasilkannya. Tugas yang membaca kotak surat dari run kemarin adalah tugas yang jadi tidak stabil pada hari Senin pertama setelah libur panjang.
- Bukti apa yang dikirim sebuah layanan kepada Anda. Keluarkan dari kotak masuk pada hari itu juga saat tiba. Tidak ada fitur ekspor di sini, dan tidak ada apa pun yang dicatat dua kali.
Menghapus lebih awal, dan kenapa sebuah skrip sebaiknya melakukannya
Menunggu bukan satu-satunya cara sebuah pesan untuk pergi. Satu panggilan menghapus satu pesan, dan itu berlaku seketika, bukan menunggu pembersihan yang datang belakangan.
$ curl -sX DELETE -G https://grabmail.io/api/v1/message/01k4h2v9r7m3d8f0b6n5c1qtzx \
--data-urlencode "mailbox=you@grabmail.io"Bagi seseorang, itu soal kerapian. Bagi sebuah skrip, itu lebih dekat ke pembukuan: kotak surat yang kosong adalah pernyataan paling sederhana bahwa semua yang pernah ada di situ sudah dibereskan, dan tidak ada biaya untuk menjaganya tetap benar. Alternatifnya — daftar id yang sudah diproses — adalah daftar yang harus disimpan di suatu tempat, dituliskan di suatu tempat, dan dibersihkan di suatu tempat.
Ini tidak mengubah apa pun soal jendela pada hal lainnya, dan memang tidak perlu: apa pun yang Anda tinggalkan akan hilang dengan sendirinya.
Menghapus pesan terakhir dalam sebuah kotak surat menghapus catatan kotak suratnya juga, persis seperti yang akan dilakukan kedaluwarsa. Tidak ada beda pada keadaan akhirnya antara menghapus sebuah pesan dan menunggunya kedaluwarsa — bedanya cuma soal kapan.
Kenapa 5 hari dan bukan tiga puluh
Alasan jujurnya bukan soal penyimpanan. Ini soal: pada domain publik, alamatnya adalah rahasianya — siapa pun yang tahu alamatnya bisa membaca kotak suratnya, dan justru sifat itulah yang membuat Anda bisa memakainya tanpa akun, tanpa kata sandi, atau tanpa email Anda sendiri untuk konfirmasi. Karena itu, retensi bukan tombol kemurahan hati. Itu ukuran radius ledakannya.
- 5 hari sudah cukup panjang untuk semua hal yang memang jadi tujuan layanan ini: kode konfirmasi, tautan unduhan, satu run pengujian, kuitansi yang sedang akan Anda pindahkan ke tempat lain.
- Ini cukup singkat sehingga alamat yang Anda ketikkan ke sebuah formulir pada bulan Maret tidak lagi menyimpan apa pun di bulan April, siapa pun lagi yang sejak itu diberi alamat yang sama.
- Ini sama untuk semua orang, jadi tidak ada konfigurasi yang bisa salah dan tidak ada paket di mana surat Anda diam-diam bertahan lebih lama daripada yang Anda kira.
Kalau Anda ingin alamatnya tetap jadi rahasia juga, itulah gunanya alias: bagikan aliasnya, baca dari alamatnya. Siapa pun yang mencoba aliasnya akan menemukan kotak surat kosong, selalu, dan panduan mendaftar tanpa alamat asli Anda menjabarkan triknya secara lengkap.
Dan kalau yang Anda inginkan adalah jendela yang lebih panjang untuk surat yang Anda kendalikan sendiri, jawabannya adalah kotak surat yang Anda kendalikan sendiri, bukan pengaturan yang lebih panjang di sini. Mengarahkan domain Anda sendiri ke layanan ini pun tidak mengubah jendelanya — itu mengubah siapa yang memiliki alamat-alamatnya, dan itu hal berbeda yang lebih baik untuk dibereskan.
Saat pesannya sudah hilang
Tidak ada apa pun yang bisa dicoba. Ini layak dikatakan secara terus terang, karena setiap layanan surat lain yang pernah Anda pakai punya tempat sampah di suatu sudutnya, dan refleksnya adalah mencari tempat sampah yang satu ini.
- Tidak ada arsip
- Tidak ada apa pun yang disalin ke mana pun saat pesannya pergi.
- Tidak ada tempat sampah
- Tidak ada keadaan di antara bisa dibaca dan hilang, dan tidak ada apa pun yang menahan sebuah pesan untuk sementara waktu.
- Tidak ada tiket
- Tidak ada tindakan operator yang bisa mengembalikan pesan yang sudah kedaluwarsa. Setiap jalur yang bisa membaca sebuah pesan membawa tenggat yang sama, termasuk jalur yang akan kami pakai sendiri.
Hal yang benar-benar layak dilakukan adalah cara yang biasa: minta lagi ke pengirimnya. Email verifikasi, tautan unduhan, dan kuitansi semuanya hal yang akan diterbitkan ulang oleh sebuah layanan kalau diminta, biasanya dari halaman yang sama tempat Anda sudah berada. Buka dulu alamat baru kalau alamat lamanya sudah tersebar ke mana-mana.
Dan kalau yang Anda tunggu memang tidak pernah datang sejak awal, ini halaman yang salah — panduan tentang surat yang tidak pernah sampai menjelaskan penyebab-penyebabnya dalam urutan yang layak diperiksa, dimulai dari yang cuma butuh sepuluh detik.
Dalam praktiknya
Semuanya, sebagai kebiasaan kerja:
- Buka sebuah alamat dan pakai. Tidak ada yang perlu diaktifkan dan tidak ada yang mulai menghitung mundur.
- Lakukan hal yang membuat Anda membukanya — kodenya, tautannya, berkasnya — selagi Anda masih ada di sana.
- Keluarkan apa pun yang ingin Anda simpan dari kotak masuk pada hari itu juga saat tiba.
- Kalau sebuah skrip yang membacanya, bercabanglah berdasarkan
expires_at, bukan berdasarkan jumlah percobaan ulang. - Hapus apa yang sudah selesai Anda urus, kalaupun cuma supaya kotak suratnya menunjukkan apa yang masih tersisa untuk dikerjakan.
- Kembali ke alamat yang sama kapan pun Anda mau. Alamat itu akan tetap ada, dan akan kosong.
Baris terakhir itulah yang perlu diingat. Alamatnya permanen dan suratnya tidak, kebalikan dari setiap kotak masuk yang sudah Anda miliki — dan itulah keseluruhan alasan kenapa yang ini tidak memungut biaya dan tidak meminta apa pun.
Pertanyaan
Bisakah saya mendapatkan kembali sebuah pesan setelah 5 hari?
Tidak bisa. Tidak ada arsip, tidak ada tempat sampah, dan tidak ada tindakan operator yang bisa mengembalikannya — setiap jalur yang bisa membaca sebuah pesan membawa tenggat yang sama, jadi tidak ada tempat mana pun bagi pesan itu untuk kembali.
Apakah membuka atau membaca sebuah pesan mengatur ulang jamnya?
Tidak. Tenggatnya dituliskan sekali saja, saat pengantaran, dan tidak ada apa pun yang menghitungnya ulang. Membaca, menandai sudah dibaca, memuat ulang halaman, dan menampilkan isi kotak surat lagi, semuanya membiarkan tenggat itu persis di tempat semula.
Apakah alamatnya kedaluwarsa kalau saya berhenti memakainya?
Tidak, karena alamatnya tidak disimpan sebagai sesuatu yang bisa kedaluwarsa. Sebuah alamat baru menjadi baris selama ada surat di dalamnya, dan baris itu hilang saat suratnya hilang. Ketik alamat yang sama lagi enam bulan kemudian dan alamat itu tetap bekerja — kosong, dan siap Anda pakai.
Bisakah saya membayar untuk retensi yang lebih panjang?
Tidak bisa. Cuma ada satu jendela dan itu sama untuk setiap alamat, setiap domain, dan setiap paket. Ini bukan pengaturan di mana pun, dan bukan sesuatu yang bisa dinaikkan oleh dukungan pelanggan untuk satu akun saja.
Apakah lampiran bertahan selama pesannya?
Persis sama lamanya, tidak lebih. Sebuah berkas cuma bisa dijangkau lewat pesan yang membawanya, dan keduanya hilang pada saat yang sama. Panduan tentang lampiran membahas batas ukurannya dan cara mengeluarkan sebuah berkas selagi masih ada.
Bagaimana kalau tanggal dari pengirimnya salah?
Header Date yang lebih dari satu hari jaraknya dari momen kedatangan pesan akan diabaikan, dan waktu kedatangannya dipakai sebagai gantinya. Jadi tanggal yang salah paling parah cuma bisa merugikan sebuah pesan beberapa jam dari jendelanya; itu tidak akan pernah memperpanjangnya.
Apakah surat saya dihapus, atau cuma disembunyikan setelah tenggatnya?
Keduanya, dalam urutan itu. Suratnya berhenti bisa dibaca pada tenggatnya, yang merupakan syarat pada setiap query, dan byte-nya dibebaskan sesudahnya oleh sebuah pembersihan yang tidak ditunggu siapa pun. Tidak satu pun dari kedua keadaan itu bisa Anda ambil apa pun darinya.
Apakah menghapus sebuah pesan membebaskan alamatnya seketika?
Pesannya hilang seketika, dan catatan kotak suratnya ikut hilang bersama pesan terakhir di dalamnya. Tapi alamatnya sendiri memang tidak pernah ditahan sejak awal, jadi tidak ada yang perlu dibebaskan — alamat itu tersedia untuk Anda sepanjang waktu, dan untuk siapa pun lain yang berhasil menebaknya.
Bagaimana cara menjaga sebuah kotak surat tetap aktif untuk pengujian yang berjalan lama?
Anda tidak perlu: alamatnya tidak butuh dijaga tetap aktif, cuma suratnya yang kedaluwarsa. Yang sebenarnya dibutuhkan oleh test suite yang panjang adalah alamat baru untuk setiap run, dan itulah yang dibangun oleh panduan menguji alur verifikasi — kotak surat yang dipakai bersama lintas hari adalah kotak surat di mana pesan kemarin masih cocok dengan assertion hari ini.


