Hộp thư dùng một lần
Một địa chỉ hoạt động được cho người chưa có: không tài khoản, không khóa, và biến mất ngay trong ngày.
Hộp thư dùng một lần là gì
Bên gọi yêu cầu một địa chỉ trên tên miền mà bản cài đặt này sở hữu, theo dõi nó vài phút, đọc bất cứ thứ gì đến, rồi bỏ nó. Nó tồn tại cho mã xác nhận, cho câu hỏi "biểu mẫu này thực sự gửi gì", và cho việc đăng ký mà bạn không muốn gắn với địa chỉ bạn vẫn sẽ dùng trong năm năm tới.
- Nó chỉ nhận và không làm gì khác. Không có chức năng gửi: hộp thư đến không có danh tính để gửi với tư cách, và không lệnh nào trong chín lệnh gọi này sẽ đưa một thư ra ngoài.
- Thời hạn mặc định là 60 phút và có thể kéo dài đến 24 giờ, mỗi lần một giờ.
- Nó chứa 50 thư, được đếm khi thư đến. Thư đến một hộp thư đã đầy sẽ bị bỏ thay vì được xếp hàng, và xóa một thư không tạo chỗ cho thư khác.
- Khi hết thời hạn, thư bị XÓA, không phải bị ẩn và không phải được lưu trữ. Hàng dữ liệu tồn tại lâu hơn một tuần để địa chỉ không thể được cấp lại trong khi một người gửi chậm vẫn đang thử gửi lại đến nó.
- Không phần nào chạm đến hộp thư thật. Thư dùng một lần nằm trong bảng riêng, và không truy vấn nào trên đường này có thể tiếp cận một hộp thư thật.
Đây là cùng các lệnh gọi mà công cụ miễn phí trên trang web này dùng, nên bất cứ điều gì trang đó làm được thì mã của bạn cũng làm được. API ở đây dành cho trường hợp trang đó không đáp ứng: một bộ kiểm thử cần một địa chỉ mới cho mỗi lần chạy.
Địa chỉ không phải là thông tin xác thực
Một địa chỉ dùng một lần được gõ vào biểu mẫu đăng ký ngay khi được cấp. Từ đó nó đi trong header To:, qua nhật ký của người gửi, và vào bất kỳ CRM nào ở đầu bên kia. Nếu chỉ cần biết địa chỉ là đủ để đọc thư, công cụ này sẽ làm rò rỉ mọi hộp thư nó cấp, theo thiết kế, và cho chính bên mà người gọi đang muốn giữ khoảng cách.
Vì vậy, việc tạo hộp thư trả về một giá trị thứ hai: một token, 32 byte ngẫu nhiên dưới dạng oe_inbox_ cộng 43 ký tự base64url. Nó xuất hiện trên đúng phản hồi đó và không ở đâu khác. Hàng dữ liệu chỉ giữ một hàm băm có khóa của nó, nên không gì khôi phục được nó, kể cả yêu cầu hỗ trợ hay bản dump cơ sở dữ liệu. Mất token là mất hộp thư, và đó là kết quả đúng cho một thông tin xác thực dùng để đọc thư của ai đó.
# 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"Gửi khóa API oe_live_ hoặc oe_test_ đến một trong các route này và nó bị từ chối với invalid_credential_type thay vì một lỗi 401 đơn thuần. Hai loại thông tin xác thực dùng chung một host và một header ở đây, và "unauthorised" sẽ khiến bạn phải đoán cái nào trong số của bạn bị sai.
Thời hạn, và cách gia hạn
Một giờ, thay vì mười phút mà thể loại công cụ này được đặt tên theo. Mười phút đủ cho mã xác nhận nhưng không đủ cho nửa còn lại của mục đích sử dụng: một bản dùng thử gửi email lại cho bạn vào sáng hôm sau, một biểu mẫu phải điền hai lần vì lần đầu hết thời gian chờ. ttlMinutes khi tạo cho phép yêu cầu giá trị khác, từ 1 đến 1440; một số nằm ngoài khoảng đó bị từ chối với mã 422 thay vì được âm thầm điều chỉnh, vì kế hoạch của bạn đã được lập dựa trên thời hạn bạn yêu cầu, không phải một thời hạn bạn không hề yêu cầu.
POST /temp-mail/inboxes/{id}/extend cộng thêm một giờ vào thời điểm hết hạn, không phải vào thời điểm hiện tại, nên gia hạn sớm không lãng phí thời gian còn lại. Lệnh này dùng được 23 lần, và mốc một ngày tính từ lúc hộp thư được tạo là giới hạn chặt hơn trong hai giới hạn: một thời hạn đã chạm mốc đó thì không còn gì để mua thêm, dù mới dùng ít lần gia hạn. extensionsLeft trên mọi phản hồi hộp thư tính cả hai, để client có thể làm mờ nút; khi về 0, lệnh gọi trả về 409 extension_limit.
Một hộp thư hết hạn ngừng xác thực ngay khi hết hạn: token của nó trả về 404 mà không chờ lần quét dọn. Lần quét dọn là thứ xóa thư, và chạy theo cron hằng giờ; DELETE /temp-mail/inboxes/{id} là cùng thao tác xóa đó theo yêu cầu.
Các mức trần
Tất cả những giới hạn này là các hàng được đếm chứ không phải bộ giới hạn tốc độ. Không có bộ giới hạn tốc độ nào trong codebase này để dùng, và nói rõ điều đó hữu ích hơn là ngụ ý một lớp phòng thủ không tồn tại. Chúng được đặt ở nơi có thể gây thiệt hại: việc tạo mới, và lưu trữ.
| Mức trần | Giá trị | Điều gì xảy ra khi chạm mức |
|---|---|---|
| Thời hạn | 60 phút, có thể gia hạn đến 24 giờ | 409 conflict_error / extension_limit |
| Số thư mỗi hộp thư | 50 | Thư tiếp theo bị bỏ ngay từ cửa. Không có thư trả lại nào được ghi, không có gì được xếp hàng, và xóa một thư không trả lại chỗ trống. |
| Số hộp thư được tạo | 6 mỗi giờ, 30 mỗi ngày, cho mỗi bên gọi | 429 rate_limit_error / too_many_inboxes |
| Nội dung được lưu | 2 MB | truncated: true trên thư; phần còn lại đã mất. |
| Dung lượng tệp đính kèm | 8 MB mỗi tệp | content là null và metadata được giữ lại, điều này không giống với một tệp rỗng. |
Mức trần tạo mới được tính theo hàm băm có khóa của IP client, và một hộp thư đã bị hủy vẫn được tính, nên vứt bỏ một hộp không phải là cách để có hộp khác. Đằng sau proxy của bên khác, header chuyển tiếp có thể bị giả mạo, đây là điểm yếu đã biết của mức trần chứ không phải lỗ hổng của thông tin xác thực: không có gì ở đây cấp quyền dựa trên giá trị đó.
Những gì không có ở đây
Chưa phát hànhTự thử để phát hiện thì tệ hơn là được cho biết trước:
- Không gửi thư, dưới bất kỳ hình thức nào. Hộp thư dùng một lần không có kết nối để gửi với tư cách, và thêm một kết nối sẽ biến một endpoint ẩn danh, không xác thực thành một open relay.
- Không đổi tên. Thay đổi địa chỉ nghĩa là tạo hộp thư thứ hai: đổi tên tại chỗ sẽ giải phóng local-part cũ ngay lúc nhấp, và một thư xác nhận đang trên đường sẽ được chuyển đến bất kỳ ai được cấp địa chỉ đó tiếp theo.
- Không có quy tắc, bộ lọc, chuyển tiếp, webhook hay AI.
spamlà một cờ trên thư và không có gì hành động dựa trên nó. Không có gì bị chuyển đi nơi khác, và không có gì ở đây được tóm tắt hay tạo embedding. - Không có thư trả lại. Thư gửi đến tên miền trong nhóm mà không chỉ đến hộp thư dùng một lần đang hoạt động hay địa chỉ do nhà vận hành tạo sẽ bị bỏ một cách lặng lẽ, có chủ đích: một trình tạo địa chỉ công khai thu hút tấn công từ điển, và việc ghi báo cáo chuyển phát đến bất kỳ đường trả về nào mà cuộc tấn công khai báo sẽ biến bản cài đặt thành nguồn backscatter.
- Không cấu hình tên miền thì không có dịch vụ. Khi
TEMP_MAIL_DOMAINStrống,GET /temp-mail/domainstrả về danh sách rỗng và việc tạo hộp thư trả về 503temp_mail_unavailable. Việc chuyển phát thư đến tên miền trong nhóm chưa được quan sát đầu cuối trên một tên miền thật.
Cấu hình tên miền, nếu bạn vận hành bản cài đặt
Danh sách là cấu hình: bất cứ gì TEMP_MAIL_DOMAINS liệt kê là thứ được cấp phát. Không có gì tự động hóa DNS, nên bốn trong năm bước này là việc của một người tại nhà đăng ký tên miền.
- Đăng ký một tên miền cho nó. Hãy dùng tên miền mà bạn sẵn sàng để người lạ cấp phát. Mọi địa chỉ trên đó dùng chung uy tín, đó cũng là lý do bộ chọn phân bổ hộp thư mới ngẫu nhiên trên cả nhóm thay vì lấp đầy tên miền đầu tiên.
- Thêm nó trong ứng dụng tại Cài đặt → Tên miền. Thao tác đó tạo danh tính gửi và in ra các bản ghi DNS cần công bố.
- Công bố các bản ghi MX, SPF, DKIM và TXT
_openemail-challengetại nhà đăng ký. Việc xác minh đọc DNS trực tiếp và được kiểm tra lại theo cron; chỉ tên miền đã xác minh mới được cung cấp. - Thêm tên miền đã xác minh vào
TEMP_MAIL_DOMAINStrên máy chủ, phân tách bằng dấu phẩy. Cho đến khi được liệt kê, nó chỉ là một tên miền bình thường trên không gian làm việc. - Để catch-all ở trạng thái BẬT. Đó là thứ khiến một địa chỉ dùng một lần tồn tại mà không cần tạo nó, vì thư đến bất kỳ local part nào đều được chấp nhận và đọc lại trước bước tra cứu người nhận thông thường, nên không có hàng địa chỉ nào được ghi cho tên miền trong nhóm; để catch-all bật sẽ bắt đầu chuyển thư dùng một lần vào hộp thư thật.
Các local-part dành riêng (postmaster, abuse, security và phần còn lại của RFC 2142) không bao giờ có thể là địa chỉ dùng một lần và được chuyển xuống hộp thư thông thường. Một tên miền trong nhóm mà nuốt mất báo cáo lạm dụng của chính nó là tên miền sẽ không thể chuyển phát đến đâu nữa. Một địa chỉ bạn tự tạo trên tên miền trong nhóm, chẳng hạn legal@ hoặc privacy@, hoạt động theo cùng cách: thư đến nó sẽ vào hộp thư của bạn, và không ai có thể được cấp nó như một địa chỉ dùng một lần.