- Công ty thanh toán lớn của châu Âu Viva.com đã gửi email xác thực không có header
Message-ID, khiến máy chủ Google Workspace từ chối
- Trong RFC 5322 (ban hành năm 2008),
Message-ID được quy định là một header ở mức bắt buộc thực tế, và Google áp dụng điều này rất nghiêm ngặt
- Email vẫn được nhận ở địa chỉ Gmail cá nhân, cho thấy sự khác biệt trong cách xử lý giữa Google Workspace và Gmail
- Bộ phận hỗ trợ khách hàng của Viva.com không thừa nhận có vấn đề kỹ thuật, mà chỉ xác nhận kết quả sau khi người dùng tự lách qua, thể hiện cách ứng phó thiếu chuyên nghiệp
- Đây là một trường hợp không tuân thủ ngay cả RFC cơ bản, cho thấy vấn đề suy giảm chất lượng và năng lực cạnh tranh của hạ tầng fintech châu Âu
Vấn đề email xác thực không đến
- Trong quá trình tạo tài khoản Viva.com, email xác thực hoàn toàn không đến
- Đã sử dụng email tên miền tùy chỉnh dựa trên Google Workspace, và không có thư nào cả trong hộp thư rác
- Kết quả Email Log Search của Google Workspace cho thấy trạng thái là “Bounced”
- Lý do trả lại là “Messages missing a valid Message-ID header are not accepted”
- Google đã từ chối email do vi phạm chuẩn RFC 5322
- Email gửi đi từ Viva.com bị thiếu header
Message-ID, trong khi đây là mục đã được yêu cầu từ năm 2008
Cách khắc phục tạm thời
- Khi đổi sang địa chỉ @gmail.com cá nhân, email xác thực được nhận bình thường
- Có vẻ như hạ tầng nhận thư của Gmail dễ dãi hơn hoặc xử lý theo tuyến khác
- Tuy nhiên, việc phải dùng email cá nhân để đăng ký một nền tảng thanh toán cho doanh nghiệp bị xem là có vấn đề
Phản hồi của bộ phận hỗ trợ khách hàng
- Đã gửi cho bộ phận hỗ trợ của Viva.com ảnh chụp màn hình log Google Workspace và phần mô tả vấn đề
- Đội hỗ trợ trả lời rằng “tài khoản của bạn đã có email được xác thực nên không có vấn đề gì”
- Không có dấu hiệu nhận thức về vấn đề kỹ thuật hay chuyển tiếp cho đội ngũ kỹ sư
- Đây là cách xử lý xem việc người dùng tự lách qua được là không còn vấn đề
Bản chất của vấn đề
Message-ID là header cơ bản mà mọi hệ thống email thông thường đều tự tạo
- Nếu bị thiếu, điều đó có nghĩa là pipeline gửi mail đã được cấu hình sai nghiêm trọng
- Trong RFC 5322,
Message-ID được quy định là “SHOULD”, nhưng Google xem nó trên thực tế là bắt buộc (MUST)
- Do Viva.com không tuân thủ điều này, email không thể đến được với người dùng Google Workspace
- Việc một công ty xử lý thanh toán trên toàn châu Âu không tuân thủ chuẩn RFC cơ bản đặt ra nghi vấn về độ tin cậy kỹ thuật
Vấn đề mang tính cấu trúc của hạ tầng fintech châu Âu
- Trong các API và dịch vụ doanh nghiệp ở châu Âu, tình trạng tài liệu không đầy đủ, xử lý lỗi kém, hỗ trợ thiếu chuyên nghiệp lặp đi lặp lại
- Điều này được cho là không phải vấn đề năng lực kỹ sư mà là thiếu cạnh tranh thị trường và vấn đề ưu tiên
- Stripe đã đặt ra chuẩn cao về trải nghiệm nhà phát triển, nhưng lại không hỗ trợ đầy đủ mạng thanh toán khu vực châu Âu (ví dụ: IRIS), khiến lựa chọn thay thế bị hạn chế
- Nếu không xuất hiện đối thủ ở đẳng cấp như Stripe, các vấn đề chất lượng kiểu này có khả năng sẽ tiếp diễn
Đề xuất chỉnh sửa kỹ thuật
- Viva.com cần thêm header
Message-ID vào email gửi đi
- Ví dụ:
Message-ID: <unique-id@viva.com>
- Phần lớn thư viện email tự động tạo mục này, và có thể khắc phục chỉ bằng một dòng chỉnh sửa
- Cần sửa ngay để người dùng Google Workspace có thể nhận email xác thực bình thường
Phân biệt thuật ngữ RFC và chính sách của Google
- Theo RFC 2119
- MUST: yêu cầu tuyệt đối
- SHOULD: chỉ có thể lược bỏ khi có lý do đặc biệt
- MAY: hoàn toàn tùy chọn
- Lý do
Message-ID là SHOULD là vì một số client ủy quyền việc này cho máy chủ
- Google áp dụng điều này như một yêu cầu mang tính bắt buộc để chống spam, qua đó đóng vai trò như một chuẩn thực tế vượt lên trên RFC
- Nếu Viva.com đã cố ý bỏ qua điều này, ít nhất họ phải cung cấp cảnh báo rằng “không tương thích với Google Workspace”
- Vận hành mà không có bất kỳ thông báo nào cũng đi ngược lại tinh thần của quy định SHOULD
1 bình luận
Ý kiến Hacker News
Vấn đề được chỉ ra là email xác thực của Viva.com không có header Message-ID
Theo mục 3.6 của RFC 5322, có câu “every message SHOULD have a Message-ID field”, nhưng vì SHOULD không phải MUST nên có người đặt câu hỏi liệu có khó coi đây là một “yêu cầu” hay không
Trừ khi có lý do đặc biệt thì phải tuân theo, và đơn giản chỉ là “vì lười” thì không thể được xem là ngoại lệ
Trước đây, nếu MUA gửi mail không có Message-ID thì server sẽ tự động thêm vào, nên mới được diễn đạt bằng SHOULD
Nội dung liên quan được nêu rõ trong mục 8.3 của RFC 6409
Người viết nói rằng họ không rõ Google đã diễn giải điều này như thế nào
Mail thử nghiệm thì còn khác, nhưng nếu mail dịch vụ thật mà thiếu nó thì sẽ gặp vấn đề ở các bộ lọc spam và những nơi khác
Việc không có Message-ID thường là dấu hiệu của một hệ thống gửi tùy biến cẩu thả
Đặc biệt, việc một dịch vụ thanh toán lại không hề thử nghiệm với các dịch vụ mail lớn như Google Workspace bị xem là khó chấp nhận
Một người từng làm ở ESP (Email Service Provider) cho biết phần lớn phần mềm server đều từ chối mail không có Message-ID
Họ nói thật khó tưởng tượng việc bỏ qua các bounce đến từ những bên nhận lớn như Google
Dù hệ thống đối tác có vô lý đi nữa thì vẫn nên thích nghi để tránh gây bất tiện cho người dùng
Nếu không muốn thêm nó thì nên ghi rõ là “không hỗ trợ người dùng Google Workspace”
Họ cho rằng cả Viva lẫn Google đều quá lớn nên sẽ không để tâm tới vấn đề của một phần khách hàng
Cũng có nhiều lời phàn nàn về các dịch vụ gửi phần thay thế text/plain của email một cách cẩu thả
Có trường hợp bản text không có link, hoặc chỉ gửi những nội dung vô dụng kiểu “đây là email plain text”
Họ còn đùa rằng cần một tính năng để email client dùng AI tóm tắt HTML
Cũng có bình luận châm biếm về sự kém cỏi về kỹ thuật của các tổ chức tài chính
“Major European Payment Processor” được diễn đạt thành “Major European Incompetence Center”
Ví dụ, Harland Financial Systems dùng mã hóa XOR 2 byte và gửi khóa ở dạng plain text ngay đầu kết nối
Một người dùng chuyển từ Gmail sang Fastmail cho biết họ phần nào đồng cảm với việc Google lọc spam rất nghiêm ngặt
Trên Fastmail, spam và mail phishing lọt vào nhiều hơn
Cũng có trường hợp startup dùng nguyên template mặc định rồi bị hiểu nhầm là phishing
Theo RFC thì Viva.com là bên sai, nhưng cũng có ý kiến cho rằng Google từ chối mail chỉ vì một mục SHOULD là không phù hợp
Dù vậy, nếu xác suất spam cao thì nên đưa vào thư rác thay vì từ chối hẳn
Có người nhấn mạnh rằng điều nghiêm trọng nhất là Viva.com thậm chí còn không kiểm thử vấn đề gửi mail với Google Workspace
Vấn đề có thể do thay đổi từ phía Google, nhưng thiếu giám sát mới là vấn đề lớn hơn
Có người đặt câu hỏi Viva.com đã không nhận ra vấn đề này trong bao lâu
Họ nói nếu dùng phần mềm mail thông thường thì có lẽ sự cố này đã không xảy ra, và nhắc tới khả năng cấu hình sai
SHOULD không phải MAY, và nếu không triển khai thì phải chấp nhận rủi ro phát sinh
Việc Google đưa luôn nguyên nhân trong thông báo lỗi thậm chí còn được xem là may mắn
Có người giải thích rằng Message-ID vốn là một trường bắt buộc bắt nguồn từ Usenet,
và cần thiết cho threading, trả lời và lưu trữ của email
Việc thiếu Message-ID bị xem như mang ý nghĩa “không muốn ai trả lời cũng không muốn để lại dấu vết”, nên trông rất đáng ngờ
Đáp lại bài viết gốc chỉ trích chất lượng API của doanh nghiệp châu Âu,
có người nói đây không phải vấn đề riêng của khu vực nào mà là một mô thức chung của startup và tổ chức tài chính trên toàn thế giới
Doanh nghiệp lớn thường xem API là việc phụ, hoặc miễn cưỡng vận hành chỉ để đáp ứng quy định
Trong khi đó, những công ty như Stripe có API chất lượng cao vì đó là huyết mạch sống còn của họ
Còn startup do thiếu nguồn lực nên buộc phải ưu tiên “API chạy được” hơn là “API dễ dùng”