3 điểm bởi GN⁺ 2026-01-30 | 1 bình luận | Chia sẻ qua WhatsApp
  • Máy chủ thư của khoa thống kê tại một trường đại học ở Mỹ gặp hiện tượng kỳ lạ: không thể gửi email đến nơi cách hơn 500 dặm
  • Kết quả điều tra cho thấy nguyên nhân là phiên bản Sendmail bị hạ cấp trong quá trình cập nhật SunOS, khiến tệp cấu hình không còn tương thích
  • Do Sendmail 5 không nhận ra các tên tùy chọn dài trong tệp cấu hình dành cho Sendmail 8, nhiều giá trị mặc định bị đặt thành 0
  • Trong đó, thời gian chờ kết nối SMTP bị đặt thành 0, khiến mọi kết nối từ xa mất hơn khoảng 3 mili giây đều thất bại
  • Khi độ trễ mạng tăng tỷ lệ với khoảng cách, kết quả là xuất hiện hiện tượng chặn gửi thư tới các máy chủ cách hơn 500 dặm

Khởi đầu của sự cố

  • Khoa thống kê báo cáo rằng “không thể gửi thư đến nơi cách hơn 500 dặm”
    • Có thể gửi đến khoảng 520 dặm, nhưng xa hơn thì thất bại
    • Trưởng khoa còn huy động một chuyên gia địa thống kê để vẽ bản đồ bán kính có thể nhận thư, và xác nhận bán kính vào khoảng 500 dặm
  • Quản trị viên hệ thống gửi thư thử tới nhiều khu vực để tái hiện vấn đề
    • Princeton cách 400 dặm thì thành công, Memphis cách 600 dặm thì thất bại
    • New York (420 dặm) thành công, còn Providence (580 dặm) thất bại

Phân tích nguyên nhân

  • Tệp cấu hình sendmail.cf của máy chủ trông hoàn toàn bình thường và là tệp cấu hình cho Sendmail 8 do chính tác giả tạo ra
  • Tuy nhiên, khi kiểm tra banner của cổng SMTP thì thấy SunOS Sendmail 5 đang chạy
    • Trong quá trình vá máy chủ, hệ điều hành được nâng cấp nhưng Sendmail lại bị hạ từ 8 xuống 5
    • Tệp cấu hình cũ vẫn còn nguyên, nhưng Sendmail 5 không hiểu các tên tùy chọn dài của Sendmail 8
  • Các tùy chọn không được nhận diện bị bỏ qua, và giá trị mặc định của các mục đó bị khởi tạo về 0
    • Đặc biệt, giá trị timeout kết nối tới máy chủ SMTP từ xa là 0, nên các lần thử kết nối bị dừng sau khoảng 3 mili giây

Mối quan hệ giữa khoảng cách và tốc độ

  • Khi đó, mạng trong khuôn viên trường có kiến trúc 100% dựa trên switch, nên gần như không có độ trễ từ router
    • Vì vậy thời gian kết nối được quyết định chủ yếu bởi khoảng cách vật lý (tốc độ ánh sáng)
  • Tính toán cho thấy 3 mili giây tương ứng với khoảng 558 dặm
    • Điều này khớp với hiện tượng được báo cáo là “500 dặm hoặc hơi hơn một chút”

Kết luận

  • Nguyên nhân gốc rễ của sự cố là lỗi phân tích cấu hình do không khớp phiên bản Sendmail
  • Khi timeout bị đặt thành 0, đã xuất hiện hiện tượng mạng trông như thể có giới hạn khoảng cách vật lý
  • Đây là một giai thoại kinh điển cho thấy tầm quan trọng của tính tương thích phiên bản và việc kiểm chứng cấu hình trong quản trị hệ thống

1 bình luận

 
GN⁺ 2026-01-30
Ý kiến trên Hacker News
  • Vào khoảng giữa thập niên 1990, có một sự cố kỳ lạ là PC ở văn phòng mỗi sáng đều không khởi động được
    Hóa ra là mỗi mùa đông, chuột nhắt chui vào qua khe ổ cứng để trú ấm rồi tiểu làm chập mạch
    Khi máy tính bật lên một lúc và tỏa nhiệt, nó khô đi nên lại có thể khởi động được
    Sau đó người ta mua khay ổ đĩa rỗng để bịt lại, và vấn đề biến mất hoàn toàn

    • Điều này làm tôi nhớ đến câu chuyện kem dâu từng đọc trước đây. Xe sẽ nổ máy nếu mua kem vani, nhưng không nổ máy nếu mua kem dâu
      Bất kể có thật hay không, quá trình lần theo những vấn đề kiểu này rất thú vị
      Liên kết liên quan
    • Nghe đúng là câu chuyện về chuột máy tính theo nghĩa đen nên buồn cười thật
    • Chuột có thể chui qua bất kỳ lỗ nào đủ cho một cây bút chì lọt qua
      Trước đây tôi còn từng thấy một con dơi bám vào cáp CAT của mình
      Có lẽ để cửa sổ mở vào ban đêm cũng sẽ ảnh hưởng đến băng thông
      Là lập trình viên thì phải chuẩn bị cả cho những tình huống ngớ ngẩn như "Frog on Keyboard error"
      Bài liên quan
    • Chuột của tôi không làm chuyện đó
    • Gần như là câu chuyện về nguồn gốc nghệ danh deadmau5 vậy
  • Có vẻ trong bài gốc, việc vị chủ tịch thu thập thông tin cần thiết để giải quyết vấn đề chưa được đánh giá đúng mức
    Nếu không có dữ liệu đó, tác giả hẳn đã mất rất lâu để lần mò những vấn đề máy chủ hoàn toàn không liên quan
    Nếu chỉ nói “email không hoạt động như thế đâu”, thì lần sau sẽ chẳng ai cung cấp dữ liệu nữa hoặc họ sẽ đưa ra phỏng đoán sai

    • Tôi cũng rất thích câu chuyện này. Chỉ ước gì người dùng có thể mô tả các bước tái hiện lỗi cụ thể như vậy
    • Nếu khách hàng là nhà thống kê và chuyên gia địa thống kê, chắc việc thu thập dữ liệu sẽ dễ hơn nhiều
    • Bình luận hay thật. Tôi hoàn toàn đồng ý
  • Đây là một bài kinh điển đã nhiều năm liền lặp đi lặp lại và nổi lên trên HN
    Nó đã được đăng lại vào nhiều thời điểm như 2023, 2020, 2015
    Bản 2023, Bản 2020, Bản 2015

    • Chính những bài như thế này là lý do tôi vẫn vào HN mỗi ngày suốt hơn 15 năm
      May mà lần này tôi không bỏ lỡ. Nó nhắc tôi rằng đừng bao giờ đánh mất sự khiêm tốn
    • Chu kỳ của bài này đủ dài để mỗi lần đọc tôi lại quên mất tại sao email không gửi được, rồi lại đọc lại từ đầu
    • Tôi cũng đang định lập danh sách, nhưng đã có người đăng rồi
      Trên HN, đăng lại sau khoảng một năm là chấp nhận được, và các bài kinh điển nên được đưa lên lại cho người dùng mới
      Xem HN FAQ
      Tôi cũng đã gom lại các liên kết tới nhiều phiên bản liên quan
    • Mong rằng một ngày nào đó cũng sẽ có một tác phẩm kinh điển vượt thời gian như vậy về AI
      Lúc đó ta có thể vừa debug lỗi của AI vừa bật cười
    • Có khi vài tháng nữa chính tôi sẽ tự đăng một bài như thế
  • Tối qua tôi phát một tập phim TV bằng VLC, và khoảng sau 30 giây thì máy tắt nguồn
    Nó tắt đúng chỗ đó tới ba lần nên rất kỳ lạ. Tôi bắt đầu nghĩ liệu bản thân video có phải nguyên nhân không
    Tôi nhớ tới trường hợp video Janet Jackson làm hỏng ổ cứng trước đây
    Mà tập đó lại còn là Black Mirror S7E01, nên càng thấy rợn
    Liên kết tham khảo

    • Điều quan trọng là nó có tắt đúng cùng một frame hay chỉ là cùng một đoạn tương đối giống nhau
      Nếu là trường hợp sau thì rất có thể là vấn đề nhiệt
      Mỗi codec có tải giải mã khác nhau, nên một đoạn cụ thể có thể khiến hệ thống quá nóng
      Tôi khuyên nên thử phát từ vị trí khác hoặc bỏ qua đoạn đó để kiểm tra
    • Nguồn điện cũ có thể không chịu nổi tải giải mã
      Nên thử thay bộ nguồn hoặc chuyển đổi codec
      Hoặc cũng có thể đó là file đã bị chỉnh sửa với mục đích xấu, nên cần kiểm tra nguồn gốc
    • Khi tìm ra nguyên nhân thì nhớ cập nhật nhé
  • Câu chuyện này giống như phiên bản hacker của giai thoại kiểm tra tốc độ SR-71 Blackbird
    Cứ mỗi lần thấy là tôi lại đọc lại, đúng kiểu kinh điển
    Liên kết liên quan

  • Nó làm tôi nhớ đến câu chuyện kinh điển “mua kem vani thì xe nổ máy, mua kem dâu thì không”
    Liên kết câu chuyện

    • Với tôi thì nó lại gợi nhớ tới câu chuyện kiểm tra tốc độ SR-71
      Liên kết liên quan
  • Những câu chuyện như “Stalking the Wiley Hacker” đã đưa tôi vào thế giới máy tính
    Nhưng khi làm việc trong ngành, tôi thấy tiếc vì niềm vui thuần khiết ngày đó đã phai đi
    Liên kết bài gốc

    • Trước đây tôi từng gặp trực tiếp Cliff Stoll
      Ông ấy thuyết trình tại một hội nhóm làm chăn ghép, và dù chủ đề chẳng liên quan, ông vẫn cực kỳ nhiệt huyết và cuốn hút
      Tôi hoàn toàn bị chinh phục bởi năng lượng và sự tò mò của ông
  • Tôi nhớ tới câu đùa “hãy thử gửi email xa hơn 500 dặm nữa xem”
    Câu “You had me at EHLO” làm tôi bật cười

    • Hồi còn làm ở Sendmail, tôi từng telnet vào cổng 25 rồi tự gõ trực tiếp các lệnh SMTP
      Hồi đó tôi thuộc hết các lệnh, còn bây giờ thì không chắc nữa
  • Trước đây máy tính tôi dùng có vấn đề là cứ mỗi khi tôi rời khỏi chỗ ngồi thì nó lại tắt
    Hóa ra nguyên nhân là sàn gỗ lỏng lẻo trong một tòa nhà cũ
    Rung động khi tôi đứng dậy đã làm chập một bộ nguồn bị lỗi

  • Đọc bài xong tôi lập tức chạy apt install units. Đúng là một công cụ tuyệt vời

    • Tôi cũng cài, và lập tức phát hiện ra một bug
      Dùng lệnh units thì kết quả tính toán hiện ra theo chiều ngược lại
      Ví dụ: 1 mile → 1.609 km là đúng, nhưng 1 unit → 1.609 units thì lại bị đảo ngược
    • Tiếc là trên Arch Linux không có gói này