500마일 이상 떨어진 곳으로 이메일을 보낼 수 없었던 이유 (2002)
(web.mit.edu)- 미국 한 대학의 통계학과 메일 서버가 500마일 이상 떨어진 곳으로 이메일을 보내지 못하는 이상 현상이 발생
- 조사 결과, SunOS 업데이트 과정에서 Sendmail 버전이 다운그레이드되며 설정 파일이 호환되지 않은 것이 원인
- Sendmail 5가 Sendmail 8용 설정 파일의 긴 옵션명을 인식하지 못해, 여러 기본값이 0으로 설정됨
- 그중 SMTP 연결 타임아웃이 0으로 설정되어, 약 3밀리초 이상 걸리는 원격 연결이 모두 실패
- 네트워크 지연이 거리와 비례해 발생하면서, 결과적으로 500마일 이상 떨어진 서버로의 메일 전송이 차단되는 현상이 나타남
문제의 시작
- 통계학과에서 “500마일 이상 떨어진 곳으로 메일을 보낼 수 없다”는 신고가 접수됨
- 520마일까지는 가능하지만 그 이상은 실패하는 현상
- 학과장은 지오통계학자를 동원해 메일이 도달 가능한 반경 지도를 작성, 반경이 약 500마일로 확인됨
- 시스템 관리자는 테스트 메일을 여러 지역으로 전송해 문제를 재현
- 400마일 거리의 Princeton에는 성공, 600마일 거리의 Memphis에는 실패
- New York(420마일) 은 성공, Providence(580마일) 은 실패
원인 분석
- 서버의 sendmail.cf 설정 파일은 정상으로 보였으며, 작성자가 직접 만든 Sendmail 8용 설정 파일이었음
- 그러나 SMTP 포트 배너를 확인하자 SunOS Sendmail 5가 실행 중이었음
- 서버 패치 과정에서 운영체제가 업그레이드되며 Sendmail이 8에서 5로 다운그레이드됨
- 기존 설정 파일은 그대로 남아 있었으나, Sendmail 5는 Sendmail 8의 긴 옵션명을 인식하지 못함
- 인식되지 않은 옵션은 무시되었고, 해당 항목의 기본값이 0으로 초기화됨
- 특히 원격 SMTP 서버 연결 타임아웃 값이 0으로 설정되어, 연결 시도가 약 3밀리초 후 중단됨
거리와 속도의 관계
- 당시 캠퍼스 네트워크는 100% 스위치 기반 구조로, 라우터 지연이 거의 없었음
- 따라서 연결 시간은 물리적 거리(빛의 속도) 에 의해 결정됨
- 계산 결과, 3밀리초는 약 558마일 거리에 해당
- 실제로 보고된 “500마일 또는 그보다 약간 더”라는 현상과 일치
결론
- 문제의 근본 원인은 Sendmail 버전 불일치로 인한 설정 파싱 오류
- 타임아웃이 0으로 설정되면서, 물리적 거리 제한이 생긴 것처럼 보이는 네트워크 현상이 발생
- 사례는 시스템 관리에서 버전 호환성과 설정 검증의 중요성을 보여주는 고전적 일화로 남음
Hacker News 의견들
-
1990년대 중반쯤, 사무실 PC가 아침마다 부팅되지 않는 이상한 문제가 있었음
알고 보니 겨울마다 작은 생쥐가 하드 드라이브 슬롯을 통해 들어와 따뜻하게 지내며 오줌을 싸서 회로가 단락된 것이었음
컴퓨터가 일정 시간 켜져 열이 나면 말라서 부팅이 가능해졌던 것임
이후 빈 드라이브 슬레드를 사서 막아두었고 문제는 완전히 사라졌음- 예전에 본 딸기 아이스크림 이야기가 떠오름. 차가 바닐라 아이스크림을 사면 시동이 걸리는데 딸기를 사면 안 걸린다는 이야기였음
실제 여부와 상관없이 이런 문제를 추적해가는 과정이 흥미로움
관련 링크 - 진짜 컴퓨터 마우스 이야기라니 웃음이 나옴
- 생쥐는 연필이 통과할 정도의 구멍이면 들어올 수 있음
예전에 내 CAT 케이블에 박쥐가 매달려 있었던 적도 있음
밤에 창문을 열어두면 대역폭에도 영향이 있을지도 모름
개발자라면 "Frog on Keyboard error" 같은 황당한 상황에도 대비해야 함
관련 글 - 내 마우스는 그런 짓 안 함
- 거의 deadmau5의 이름 유래 같은 이야기임
- 예전에 본 딸기 아이스크림 이야기가 떠오름. 차가 바닐라 아이스크림을 사면 시동이 걸리는데 딸기를 사면 안 걸린다는 이야기였음
-
원문에서 회장이 문제 해결에 필요한 정보를 모은 점이 제대로 평가받지 못한 것 같음
그 데이터가 없었다면 작성자는 오랫동안 엉뚱한 서버 문제를 찾고 있었을 것임
“이메일은 그런 식으로 작동하지 않는다”고만 말하면, 다음엔 아무도 데이터를 주지 않거나 잘못된 추측을 하게 됨- 나도 이 이야기를 정말 좋아함. 사용자들이 이렇게 재현 단계를 구체적으로 알려준다면 얼마나 좋을까 생각함
- 통계학자와 지리통계학자가 고객이라면 이런 데이터 수집이 훨씬 쉬울 것 같음
- 멋진 댓글임. 완전히 동의함
-
이 글은 여러 해 동안 HN에서 반복해서 인기를 끈 고전 포스트임
2023년, 2020년, 2015년 등 다양한 시점에 다시 올라왔음
2023 버전, 2020 버전, 2015 버전- 이런 글들 때문에 15년 넘게 매일 HN을 확인함
이번엔 놓치지 않아서 다행임. 겸손함을 잃지 말아야겠다는 교훈을 줌 - 이 글은 주기가 길어서 읽을 때마다 왜 이메일이 안 갔는지 잊어버리고 다시 읽게 됨
- 나도 목록을 만들고 있었는데 이미 누가 올렸더라
HN에서는 1년쯤 지나면 재게시가 괜찮고, 고전은 새 유저를 위해 다시 올라오는 게 좋음
HN FAQ 참고
관련된 여러 버전 링크도 함께 정리했음 - 언젠가 AI 관련해서 이런 시대를 초월한 고전이 나오길 바람
그때는 AI의 오류를 디버깅하며 웃을 수 있을 것 같음 - 몇 달 후 내가 직접 그런 글을 올릴지도 모름
- 이런 글들 때문에 15년 넘게 매일 HN을 확인함
-
어젯밤 VLC로 TV 에피소드를 재생했는데 30초쯤 지나자 전원이 꺼졌음
세 번이나 같은 지점에서 꺼져서 이상했음. 혹시 영상 자체가 원인일까 생각함
예전에 Janet Jackson 영상이 하드 드라이브를 망가뜨린 사례가 떠올랐음
게다가 그 에피소드가 Black Mirror S7E01이라 더 묘했음
참고 링크- 정확히 같은 프레임에서 꺼지는지, 아니면 대략 같은 구간인지가 중요함
후자라면 발열 문제일 가능성이 큼
코덱마다 디코딩 부하가 달라서 특정 구간에서 시스템을 과열시킬 수 있음
다른 위치에서 재생해보거나 구간을 건너뛰어 테스트해보길 권함 - 오래된 전원 공급 장치가 디코딩 부하를 견디지 못할 수도 있음
파워 서플라이를 교체하거나 코덱을 변환해보는 게 좋음
혹은 악의적으로 수정된 파일일 가능성도 있으니 출처를 확인해야 함 - 원인을 찾게 되면 꼭 알려주길 바람
- 정확히 같은 프레임에서 꺼지는지, 아니면 대략 같은 구간인지가 중요함
-
이 이야기는 마치 SR-71 Blackbird 속도 체크 일화의 해커 버전 같음
볼 때마다 다시 읽게 되는 고전임
관련 링크 -
“바닐라 아이스크림을 사면 차가 시동이 걸리고, 딸기를 사면 안 걸린다”는 고전이 떠오름
이야기 링크- 나에겐 이게 SR-71 속도 체크 이야기를 떠올리게 함
관련 링크
- 나에겐 이게 SR-71 속도 체크 이야기를 떠올리게 함
-
“Stalking the Wiley Hacker” 같은 이야기들이 나를 컴퓨터 세계로 이끌었음
하지만 업계에서 일하면서 그때의 순수한 즐거움이 사라진 게 아쉬움
원문 링크- 예전에 Cliff Stoll을 직접 만난 적이 있음
퀼트 협회에서 발표를 했는데, 주제와 상관없이 정말 열정적이고 매력적인 사람이었음
그의 에너지와 호기심에 완전히 빠져들었음
- 예전에 Cliff Stoll을 직접 만난 적이 있음
-
“500마일 더 멀리 메일을 보내보자”는 농담이 떠오름
“You had me at EHLO”라는 문장에 웃음이 남- 예전에 Sendmail에서 일할 때, 포트 25로 텔넷 접속해 직접 SMTP 명령을 입력하곤 했음
그땐 명령어를 다 외웠는데 지금은 자신이 없음
- 예전에 Sendmail에서 일할 때, 포트 25로 텔넷 접속해 직접 SMTP 명령을 입력하곤 했음
-
예전에 내가 쓰던 컴퓨터가 내가 자리를 비우면 꺼지는 문제가 있었음
알고 보니 오래된 건물의 헐거운 마룻바닥이 원인이었음
일어설 때의 진동이 고장난 전원 공급 장치를 단락시켰던 것임 -
글을 읽고 바로 “apt install units”를 실행했음. 정말 멋진 도구였음
- 나도 설치했는데 바로 버그를 발견했음
“units” 명령을 쓰면 계산 결과가 반대로 나옴
예: 1 mile → 1.609 km는 맞지만, 1 unit → 1.609 units로 하면 반대로 계산됨 - 아쉽게도 Arch Linux에는 패키지가 없었음
- 나도 설치했는데 바로 버그를 발견했음