Bí ẩn về dấu chấm biến mất trong phần thân email
Giao thức truyền thư đơn giản nhưng không hề đơn giản
Sự cố xảy ra
- Nhận được phản ánh rằng dấu chấm đã biến mất trong phần thân email gửi cho một khách hàng.
- Khi gửi cùng một email cho khách hàng khác thì dấu chấm không bị mất.
Nhìn lại dự án
- Khoảng 7 năm trước, đã phát triển một giải pháp hợp nhất các mẫu tài liệu vào một hệ thống duy nhất.
- Khách hàng sử dụng các mẫu Microsoft Word để chèn placeholder vào tài liệu.
- Mỗi khi nhân viên gửi tài liệu qua email, cần thay thế placeholder bằng nội dung thực tế.
Vấn đề quản lý template
- Có nhiều phiên bản template khác nhau nên rất khó quản lý.
- Một số template vẫn dùng điều khoản, logo, phông chữ cũ, v.v.
- Đã phát triển một giải pháp cho phép quản lý tập trung toàn bộ template.
Triển khai giải pháp
- Khách hàng có thể quản lý tập trung các template để tạo tài liệu PDF, tin nhắn văn bản và phần thân email.
- Ví dụ, có thể thiết lập một template thư chào mừng gửi cho khách hàng mới.
- Có thể cấu hình template khác nhau cho từng phương thức gửi (email, tin nhắn văn bản, thư giấy).
Tái hiện vấn đề
- Sự cố dấu chấm biến mất chỉ xảy ra trong email gửi cho một khách hàng cụ thể.
- Trong mã nguồn template vẫn có chứa dấu chấm.
- Khi xem trước phần thân email ở môi trường local, dấu chấm vẫn hiển thị.
Phân tích nguyên nhân
- Khi tạo phần thân email, có đoạn mã giới hạn độ dài của từng dòng.
- Nếu một dòng vượt quá giới hạn, hệ thống sẽ tạo dòng mới và chuyển phần nội dung còn lại sang đó.
- Theo đặc tả SMTP, nếu một dòng bắt đầu bằng dấu chấm thì sẽ chèn thêm một dấu chấm, và server sẽ xóa dấu chấm đầu tiên.
Cách khắc phục
- Sửa mã: nếu một dòng bắt đầu bằng dấu chấm thì chèn thêm một dấu chấm để sau khi server xóa đi, vẫn còn lại dấu chấm ban đầu.
- Sau khi kiểm thử mã đã sửa, xác nhận rằng dấu chấm không còn bị biến mất.
- Đã giải quyết sự cố và thông báo lỗi này cho các nhóm khác.
Vấn đề phát sinh sau đó
- Vài tháng sau, một nhóm khác không sửa cùng lỗi này nên dấu chấm lại biến mất trong một email quan trọng.
- Một số khách hàng nhận được email hiển thị phí hàng tháng mới là $2700 thay vì $27.00.
- Sau khi vá mã ngay lập tức, sự cố được giải quyết.
Ý kiến của GN⁺
- Tầm quan trọng của việc hiểu đặc tả SMTP: Để giải quyết các vấn đề có thể phát sinh khi gửi email, cần hiểu sâu về đặc tả SMTP.
- Độ phức tạp của quản lý template: Việc quản lý nhiều phiên bản template có thể rất phức tạp, vì vậy cần có hệ thống quản lý tập trung.
- Kỹ năng debugging: Kỹ năng tái hiện vấn đề và phân tích nguyên nhân là rất quan trọng.
- Giao tiếp giữa các nhóm: Sau khi giải quyết vấn đề, việc chia sẻ thông tin với các nhóm khác là rất quan trọng.
- Kiểm thử tự động: Nên áp dụng kiểm thử tự động để ngăn những vấn đề như thế này.
2 bình luận
Có vẻ như trong tiêu đề,
periodđã được hiểu là khoảng thời gian chứ không phải dấu chấm hahaÝ kiến trên Hacker News
Tóm tắt các bình luận trên Hacker News
Độ khó khi triển khai SMTP client
Câu chuyện thư giới thiệu ở Đức
Cron job và SMTP client
MAILTO.Hai thói quen xấu
Sự cần thiết của dot-stuffing
Vấn đề với tệp đính kèm HTML MIME
Trường hợp ký tự đầu tiên là dấu chấm
Thông báo vá lỗi
Kinh nghiệm triển khai NNTP server