Cách email tạm thời hoạt động không khác gì cách một hộp thư bình thường nhận thư, chỉ khác ở chỗ vòng đời của chiếc hộp rất ngắn và người dùng không cần đăng nhập. Bài này đi qua từng chặng của một lá thư, giải thích vì sao đôi khi thư đến chậm hoặc đến hai lần, và nêu những điểm cần lưu ý nếu bạn dùng nó trong công việc kiểm thử.
Một lá thư đi qua những chặng nào?
Người gửi soạn thư trên dịch vụ của họ rồi bấm gửi. Máy chủ của họ tách địa chỉ người nhận thành hai phần ngăn bởi ký tự a còng: phần đứng trước là tên hộp thư, phần đứng sau là tên miền. Tên hộp thư chỉ có ý nghĩa bên trong tên miền, còn việc tìm đường đi thì do phần tên miền quyết định.
Tiếp theo, máy chủ gửi phải hỏi hệ thống tên miền xem tên miền đó chỉ định máy chủ nào nhận thư. Câu trả lời nằm trong một bản ghi đặc biệt của tên miền, thường được gọi là bản ghi nhận thư. Nếu tên miền không có bản ghi này, hoặc bản ghi trỏ tới một máy chủ không tồn tại, lá thư sẽ bị trả lại ngay và người gửi nhận được thông báo không gửi được.
Khi đã biết địa chỉ máy chủ nhận, máy chủ gửi mở một phiên trao đổi, trình bày thư, và chờ bên nhận chấp nhận. Bên nhận có toàn quyền từ chối: vì tên hộp thư không tồn tại, vì hộp thư đã đầy, hoặc vì chính sách chống thư rác. Chỉ khi bên nhận đồng ý thì lá thư mới được coi là đã giao, và đó cũng là lúc nó có thể xuất hiện trong hộp thư bạn đang xem.
Bản ghi nhận thư của tên miền là gì?
Đây là một dòng khai báo trong cấu hình tên miền, nói rằng thư gửi tới tên miền này phải được chuyển tới máy chủ nào. Một tên miền có thể khai báo nhiều máy chủ nhận để dự phòng, và mỗi khai báo kèm một mức ưu tiên. Cách sắp xếp thứ tự ưu tiên là một chi tiết kỹ thuật, nhưng ý nghĩa với người dùng thì đơn giản: miễn là còn ít nhất một máy chủ nhận hoạt động, thư vẫn tới được.
Đây chính là điểm mà một hộp thư dùng một lần dựa vào. Muốn nhận thư cho một tên miền, bạn chỉ cần trỏ bản ghi nhận thư của tên miền đó về máy chủ của mình. Không cần xin phép dịch vụ thư nào khác, cũng không cần thay đổi cách người gửi soạn thư. Toàn bộ cơ chế này là một phần rất cũ và rất ổn định của hệ thống thư, được mô tả trong tài liệu chuẩn của IETF, ví dụ đặc tả giao vận thư điện tử.
Sau khi thư đã vào tới máy chủ nhận, phần còn lại là chuyện lưu trữ. Máy chủ ghi thư vào hộp tương ứng với tên hộp thư trong địa chỉ, và hộp thư đó có thể được tạo tự động ngay khi có thư đầu tiên gửi tới. Đó là lý do nhiều hộp thư tạm thời chấp nhận mọi tên hộp thư: bạn dán tên gì cũng được, miễn là tên miền đúng.
Vì sao hộp thư tạm chỉ sống trong thời gian ngắn?
Vì mục đích của nó chỉ là nhận một lá thư rồi thôi. Hộp thư tạm thời được thiết kế như một bộ đệm tạm, giữ thư trong khoảng vài phút tới vài giờ tùy dịch vụ, sau đó xóa. Khi hộp thư đã bị xóa thì thư cũng bị xóa theo, và không có cách nào lấy lại: không có thùng rác, không có bản sao lưu cho người dùng, không có mục khôi phục.
Việc giới hạn thời gian cũng là một lựa chọn hợp lý về vận hành. Nếu thư được giữ vô thời hạn, kho lưu trữ sẽ phình ra không giới hạn, và mọi thư rác gửi tới tên miền đó đều được giữ lại. Vòng đời ngắn giữ cho hệ thống nhẹ và giữ cho hộp thư đúng nghĩa là tạm.
Hệ quả thực tế rất dễ thấy: hãy đọc và dùng thư ngay khi nó tới. Nếu bạn để đó vài tiếng rồi quay lại, khả năng cao là hộp thư đã hết hạn và mã xác minh đã biến mất, buộc bạn phải yêu cầu trang gửi lại thư.
Vì sao thư có thể đến muộn hoặc đến hai lần?
Thư điện tử là hệ thống chuyển tiếp, không phải một lệnh gọi đồng bộ. Máy chủ gửi có thể phải thử lại nếu bên nhận đang bận hoặc tạm thời không phản hồi, nên một lá thư có thể tới sau vài giây, vài phút, hoặc lâu hơn. Đây là hành vi bình thường của hệ thống, không phải lỗi của hộp thư tạm.
Tình huống thứ hai là gửi trùng. Nếu bên gửi không nhận được xác nhận rõ ràng, họ có thể gửi lại cùng một nội dung, và bên nhận có thể nhận cả hai bản. Với người dùng phổ thông, điều này nghĩa là đôi khi bạn thấy hai lá thư giống nhau trong hộp thư đến; với người viết kiểm thử, điều này nghĩa là đừng bao giờ giả định mỗi sự kiện chỉ sinh ra đúng một lá thư.
Cũng nên nhớ rằng thứ tự đến không được bảo đảm. Hai lá thư gửi cách nhau vài giây có thể tới theo thứ tự ngược lại. Nếu bạn đang chờ một mã xác minh và trong hộp thư đã có thư cũ, hãy lấy lá thư mới nhất chứ đừng lấy lá đầu tiên bạn nhìn thấy.
Hộp thư tạm thời trên trang này
Trình tạo email tạm thời của trang này làm đúng chuỗi bước vừa mô tả: bạn bấm tạo, hệ thống cấp một địa chỉ trên tên miền đã cấu hình sẵn, và hộp thư đến tự động được làm mới theo chu kỳ ngắn để bạn không phải bấm làm mới bằng tay. Mã xác minh trong thư thường được tách riêng để bạn sao chép thẳng trở lại biểu mẫu đăng ký.
Hộp thư ở đây chỉ dành cho kiểm thử và cho những đăng ký một lần; nó không phải danh tính thật của bạn, không dùng để mạo danh người khác, và không thay thế được một hộp thư bạn cần giữ lâu dài. Nếu bạn còn đang cân nhắc xem loại địa chỉ này có hợp với mình không, bài email dùng một lần là gì nói rõ phần được và phần mất.
Phần dành cho nhà phát triển
Hiểu cơ chế ở trên giúp bạn viết kiểm thử ổn định hơn. Vài điểm nên chốt khi đưa hộp thư tạm vào bộ kiểm thử:
- Cấp một địa chỉ riêng cho từng ca kiểm thử. Hai ca dùng chung một địa chỉ sẽ tranh nhau lá thư mới nhất, và kết quả phụ thuộc vào thứ tự chạy.
- Đừng chờ một khoảng thời gian cố định rồi kiểm tra. Hãy kiểm tra lại theo chu kỳ cho tới khi thư xuất hiện, và đặt một giới hạn trên để ca kiểm thử thất bại thay vì treo vô hạn.
- Coi gửi trùng là chuyện có thể xảy ra. Nếu sản phẩm của bạn xử lý một sự kiện nghiệp vụ, hãy kiểm tra xem hai lá thư giống nhau có gây ra hai hành động hay không.
- Không dựa vào thứ tự đến. Hãy chọn lá thư theo thời điểm hoặc theo nội dung, đừng lấy lá đầu tiên trong danh sách.
- Với dữ liệu hiển thị cho người dùng trong bản trình diễn, hãy dùng tên miền thử và nội dung tổng hợp, đừng để lộ thông tin của khách hàng thật.
Một điểm cuối: nếu ca kiểm thử cần đọc lại thư sau khi hộp thư hết hạn, thiết kế đó sẽ không bao giờ ổn định. Hãy lưu lại lá thư vào nơi khác ngay khi nhận được nếu bạn thật sự cần nó về sau.
Bước tiếp theo
Cách học nhanh nhất là tự tay đi hết một vòng: mở công cụ email tạm thời, tạo một địa chỉ, gửi tới đó một lá thư từ hộp thư của chính bạn, rồi quan sát thời gian thư xuất hiện. Khi đã thấy tận mắt độ trễ của một vòng gửi nhận, bạn sẽ biết nên đặt giới hạn chờ bao nhiêu cho luồng kiểm thử của mình, và nên chuẩn bị tinh thần cho những lần thư tới muộn hoặc tới hai lần.