요약
- 명시적 SMTP 소스 경로는 변경 가능한 봉투 상태였다. 릴레이는 forward-path에서 자신의 첫 요소를 소비하고, 자신이 놓인 환경에 맞는 식별자를 reverse-path로 옮겼다.
- 경로는 절대적인 메일박스가 아니었고, SMTP 봉투 경로는 메시지에 보이는
To:와From:필드가 아니었다. 어느 쪽 경로도 저작자를 인증하거나 이름이 올라간 릴레이가 실제로 통과되었음을 증명하지 않았다. - MX와 전역적으로 의미 있는 도메인 이름은 평범한 경로 선택을 발신자가 적어 넣은 일정표에서 발신 MTA, DNS, 로컬 정책으로 옮겼다. 이후의 SMTP는 폐기된 문법을 계속 인식하면서도 그 예전의 전달 권한을 자동으로 복원하지는 않았다.
수신자 주소에는 사라지도록 되어 있던 부분이 있었다
클라이언트가MAIL FROM으로 reverse-path를 제공한 직후의 SMTP 트랜잭션을 고정해 보자. 한 수신자에 대해 클라이언트는 다음을 보낸다.
RCPT TO:<@ONE,@TWO:JOE@THREE>
RFC 821은 RCPT 인수를 forward-path라고 부른다. 콜론은 서로 다른 두 개념을 나눈다.JOE@THREE는 절대적인 메일박스, 즉 목적지 도메인 안에서의 최종 수신자 식별자다.@ONE,@TWO는 소스 경로, 즉 거기에 어떻게 도달하는가에 관한 정보다. 명세는 경로와 메일박스를 혼동해서는 안 된다고 명시적으로 경고한다.
ONE은 자신을 첫 경로 요소로 인식한다. 그 요소를 삭제하여 다음 단계에는@TWO:JOE@THREE를 남긴다. 동시에 자신의 식별자를 reverse-path의 맨 앞에 삽입한다. 아직 수행되지 않은 전방 단계를 설명하던 정보가, 이제 책임이 다음으로 넘어간 뒤에 발견된 실패를 되돌려 보내는 경로에 기여하게 된다.
따라서 주소처럼 생긴 이 객체는 보관 주체가 바뀔 때마다 바뀌었다. 전방 쪽은 지시가 수행될수록 줄어들었고, 뒷쪽은 메시지 뒤에 상태를 쌓아 갔다. 릴레이는 유난히 긴 목적지를 단순히 조회하는 것이 아니라 분산된 상태 전이를 실행하고 있었다.
회신 경로는 독자가 보는 From 필드가 아니었다
SMTP의 봉투와 그 봉투가 나르는 메시지는 서로 다른 면을 차지한다.MAIL FROM이 제공하는 reverse-path는 배달 실패에 대한 책임 배분에 도움을 준다. 그것이 보이는From:필드일 필요는 없다.Reply-To:가 아니며, 본문을 누가 썼는가에 대한 인증된 진술도 아니다.
RCPT TO가 제공하는 forward-path 역시To:나Cc:에 복사될 필요가 없다. 하나의 메시지가 여러 봉투 수신자를 가질 수 있다. BCC 수신자는 보이는 헤더에 없을 수 있다. 보이는 주소가 이 트랜잭션의 수신자가 전혀 아닐 수도 있다.
RFC 822는route-addr를 경로와addr-spec으로 분리하면서도, 특별한 필요가 없는 한 소스 라우팅을 권장하지 않았다. 그 관련 메시지 형식 역사가 봉투/헤더 경계를 무너뜨리지는 않는다. 헤더 안의 경로 같은 형식과 SMTP 명령에서 받은 경로는 서로 바꿔 쓸 수 있는 증거가 아니다.
ONE이 자신의 이름을 뒤로 옮길 때, 그것은 인간 저작자를 다시 쓰지 않는다. 배달된 메시지만 보관하는 기록 저장소는 원래의 봉투 경로를 잃었을 수 있다. 반대로 reverse-path가 이메일 주소처럼 생긴 무언가를 담고 있다는 이유만으로 저작 증거로 격상될 수는 없다.
릴레이는 다른 쪽에서는 다른 이름이 필요할 수 있었다
RFC 821은 ONE에 미묘한 이름 지정 지침을 준다. reverse-path에 자신을 추가할 때, 들어온 환경에서 사용된 이름이 아니라 자신이 나가는 환경에서 알려진 이름을 사용해야 한다.
이 규칙은 이름 지정 체계와 메일 커뮤니티 사이의 게이트웨이에서 중요했다. 소스 경로는 발신자가 적은 완전한 지도처럼 보였지만, 각 경계마다 현재 릴레이가 자신의 정체성을 그 지역에서 의미 있는 형태로 다시 진술해야 할 수 있었다. 문자 자체만으로는 오류를 되돌려 보내는 데 필요한 모든 해석을 담고 있지 않았다.
릴레이는 또한 맨 앞에 나타나는 무엇이든 삭제할 일반적인 권한이 없었다. forward-path의 선두 요소가 현재 SMTP를 식별하지 않으면 소비되지 않는다. 그 대신 다음 SMTP의 선택을 안내할 수 있었다. 소비는 위치와 정체성의 대응 관계에 의존했다.
이 모든 것은 암호학적 인증에 해당하지 않았다. 이름의 일치는 도메인에 대한 통제, 기계의 정직한 통과, 목록에 있는 모든 시스템의 동의를 증명하지 않았다. 경로는 처리 지시를 제공했다. 그 실행을 공증하지는 않았다.
MX는 릴레이 목록을 DNS로 옮기지 않았다
RFC 974는 목적지 도메인을 메일 익스체인저와 우선순위 값에 연결한다. 발신 SMTP는 목적지를 조회하고 명시된 규칙에 따라 적절한 익스체인저를 시도한다. 사용자는 도메인이 자기 메일을 받는 호스트를 바꾸는 동안 계속user@domain으로 주소를 지정할 수 있다.
MX 집합은 반드시 거쳐야 할 순차적 경유지 목록이 아니다. RFC 974는 익스체인저의 MX 레코드를 재귀적으로 따라가며 기행(奇行)적인 메일 경로를 만드는 것을 경고한다. MX 조회의 결과를 어딘가에 저장된@ONE,@TWO로 읽을 수 없다.
아키텍처상의 이전은 더 큰 파장을 일으켰다. 발신자는 목적지를 지명했다. MTA는 발신 시점에 DNS, 도달 가능성, 로컬 정책을 사용해 다음 동작을 선택했다. 목적지 도메인은 모든 메일박스 식별자를 바꾸거나 모든 통신 상대에게 새 토폴로지를 익히라고 하지 않고도 수신 인프라를 바꿀 수 있었다.
복구 지점은 권한과 함께 움직였다. 낡은 명시적 경로는 주소록, 별칭, 큐를 통해 복사되어 돌아다닐 수 있었다. MX 변경은 그 도메인을 책임지는 관리 지점에서 이루어질 수 있었다. 라우팅 지식은 주소 안에 영구히 담기는 내용이 아니라 수정 가능한 결정이 되었다.
은퇴는 새로운 생산을 멈추는 것에서 시작되었다
RFC 1123은 발신자 측 Sender-SMTP가 RCPT에 명시적인@...:소스 경로를 보내서는 안 된다고 말한다. 그 아키텍처적 결정은 소스 라우팅보다 전역적 명명을 선호했다. 전역적으로 의미 있는 도메인과 MX 체계가 주된 필요를 충족할 것으로 기대되었다.
그러나 수신자 측 Receiver-SMTP는 여전히 소스 경로 문법을 받아들여야 했다. 여기서 "받아들여야"는 좁은 의미로 읽어야 한다. 수신자는 그 형식을 인식해야 했을 뿐, 클라이언트에 무제한 릴레이 서비스를 제공할 필요는 없었다. 요청된 경로를 구현하지 않는다면 명시된 조건에서 맨 오른쪽@의 오른쪽 도메인으로 직접 배달을 시도할 수 있었다.
이 비대칭은 의도된 은퇴 메커니즘이다. 새 클라이언트는 낡은 형식을 만들어 내기를 멈추는 동안, 기존의 큐, 게이트웨이, 별칭, 소프트웨어가 같은 날 읽을 수 없게 되지는 않는다. 설치된 객체를 해석하는 능력은 그것을 더 만들어 낼 권한보다 오래 살아남는다.
둘을 동시에 제거하면 저장된 상태가 문법 오류로 변한다. 전체 경로 권한을 무기한 보존하면 은퇴가 불가능해진다. 호환성은 그 생산적인 중간지대를 차지한다. 낡은 요청을 이해한 다음, 그것에 대해 현재의 관찰 가능한 결정을 내린다.
호환되는 파서가 열린 릴레이는 아니었다
서버는@ONE,@TWO:JOE@THREE를 올바르게 파싱하면서도 승인되지 않은 제3자를 위해 그것을 운반하는 것을 거부할 수 있다. 릴레이 허용 여부는 클라이언트 인증, 발신 네트워크, 로컬 목적지, 허용 도메인, 남용 방지 정책이 지배한다. 문법은 명령을 이해할 수 있는가를 지배한다.
RFC 2821은 소스 경로를 폐기(deprecated)로 표시했다. 서버는 그 문법을 받을 준비가 되어 있어야 하고, 일반적으로 경로를 무시해야 하며, 릴레이를 거부할 수 있다. 클라이언트는 그것을 생성해서는 안 된다.
서버가 경로를 무시할 때, 나열된 릴레이 이름을 reverse-path에 복사해서는 안 된다. RFC 821이 기술한 전방에서 회신으로의 이동은 더 오래된 경로 사용 모드에 속한다. 그것은 이후의 모든 SMTP 메시지에 수행되는 숨은 재작성이 아니다.
서버가 예외적으로 경로를 사용하기로 선택한다면, 명세는 그 선택을 구속한다. 표시된 첫 도메인을 향해 보내야 하며 지름길을 짐작해서는 안 된다. 경로를 명시적으로 사용하거나 무시하거나 거부하는 것은 감사 가능하다. 사용한다고 주장하면서 선별된 요소를 몰래 재배열하는 것은 그렇지 않다.
따라서 "서버가 소스 경로를 받아들였다"는 불완전한 사고 보고다. 문법을 받아들였는가, 수신자를 받아들였는가, 릴레이를 승인했는가, DATA 이후 책임을 떠안았는가? 이 경계들은 서로 다른 시점에 발생하며 서로 다른 결과를 수반한다.
메일 섬에서는 사용자의 지도가 없어서는 안 될 인프라였다
1994년에 발표된RFC 1711은 명시적 소스 라우팅을, 사용자가 메시지가 지나가기를 원하는 MTA를 주소 안에 통합하는 것으로 기술한다. 메시지가 그 MTA에 도달하면, MTA는 자신을 벗겨 내고 나머지를 평소대로 라우팅한다.
이 문서는 초기 설계에 구체적인 무대를 준다. 드물게 연결된 "메일 섬"이다. 사용자가 원격 섬에 연결된 게이트웨이를 알고 있었다면, 그 지식을 주소 안에 넣는 것으로 추상적인 목적지를 배달 가능한 목적지로 바꿀 수 있었다. 소스 경로는 인프라가 아직 전역적으로 배포하지 않은 도달 가능성 정보를 공급했다.
인터넷이 더 완전히 상호 연결되면서, 평범한 배달을 위해 최종 사용자가 메일 토폴로지를 알아야 할 필요는 사라졌고, 대신 낡기 쉬운 약점이 되었다. RFC 1711은 또한 릴레이들 사이의 일관되지 않은 처리를 명시적 라우팅이 강하게 권장되지 않는 이유로 적는다.
이것은 1994년의 역사적 평가이지 현재의 배달 규모 측정이 아니다. 모든 게이트웨이, 진단 용도, 고립된 커뮤니티가 동시에 사라졌음을 확립하지 않는다. 그것이 문서화하는 것은 가치의 역전이다. 사용자의 정적 지도는 연결성 공백을 메우는 역할에서, 현재 상태에 더 가까운 시스템과 경쟁하는 역할로 이동했다.
퍼센트 해킹 주소, UUCP bang path, 게이트웨이 매핑은 그 주변의 역사에 속하지만,@relay1,@relay2:user@host문법의 동의어는 아니다. 그들은 라우팅을 로컬 파트에 묻거나 다른 변환을 적용할 수 있다. 이 글은 추적하는 메커니즘을 흐리는 데 그들을 사용하지 않는다.
문법은 평범한 존재 이유보다 오래 살아남았다
RFC 5321은 MX가 명시적 소스 경로에 대한 평범한 필요를 제거했고, 완전한 도메인 이름(FQDN) 요건이 마지막으로 남았던 중요한 일반적 정당 근거를 없앴다고 말한다. 클라이언트는 디버깅이나 심각한 일시적 DNS 문제 같은 드문 경우를 제외하고는 소스 경로를 생성해서는 안 된다.
서버는 여전히 폐기된 문법을 인식한다. 릴레이를 거부하고, 경로를 무시하고 최종 목적지를 처리하거나, 프로토콜의 좁은 제약 안에서 그것을 사용할 수 있다. 문법에 남아 있다는 것이 새로 생성되는 메일에서 그 형식에 평범한 역할을 주지는 않는다.
경로를 무시하는 것이 구제를 보장하지는 않는다. 일부 무효한 역사적 주소는 중간 릴레이에서만 의미가 있는 이름에 의존했다. 경로가 벗겨지면 최종 도메인이 전역 DNS에서 해석되지 않을 수 있다. 호환성은 사라진 로컬 명명 맥락을 추론할 수 없다.
따라서 정직한 운영 상태는 두 값으로만 이루어지지 않는다. 경로는 인식될 수도, 보존될 수도, 무시될 수도, 거부될 수도, 사용될 수도 있다. 그 최종 도메인은 해석될 수도 실패할 수도 있다. 책임은 트랜잭션 중에 거부될 수도, 이후의 배달 실패 전에 수용될 수도 있다. 단일한 "소스 경로 지원" 플래그는 실제로 중요한 결정들을 가린다.
적어 넣은 일정표는 실제 여정을 증명할 수 없었다
저장된 필드에서@ONE,@TWO를 발견하는 것은 그 필드가 그 이름들을 담고 있음을 증명한다. 세션 증거가 없다면, ONE이 자기 요소를 소비했는지, TWO가 연결을 받았는지, THREE가 메시지를 수용했는지 증명하지 않는다.
반대 오류도 똑같이 쉽다. 정규화 후JOE@THREE만 발견된다고 해서 원래 명령에 경로가 없었다고 증명하지 않는다. 에지 MTA가 그것을 제거했을 수 있다. 수집기가 파싱된 메일박스만 저장했을 수 있다. 보이는 메시지 헤더는 처음부터 그것을 담지 않았을 수 있다.
쓸모 있는 증거는 원시 명령 인수, 세션 양단점, 시각, 파싱 결과, 정책 결정, SMTP 응답, 다음 홉 해석, 큐 결과를 함께 보존한다. 정규화된 주소는 인덱싱에 유용하되, 도착한 원본을 대체하는 것이 아니라 파생물로 라벨이 붙어 있는 한 그렇다.
누적된 reverse-path조차 인증된 경로 증명서가 아니었다. 그것은 오류 처리를 지원했다. 이름 올라간 모든 릴레이가 한 번씩, 정직하게, 그리고 겉보기 도메인의 통제 아래 참여했음을 보장하지 않았다. 추론은 필드가 명세된 기능이 끝나는 지점에서 멈추어야 한다.
출처와 증거 경계
근거 집합은 RFC 821, RFC 822, RFC 974, RFC 1123, RFC 1711, RFC 2821, RFC 5321이다. 이 문서들은 문법, 규범적 전환, 그리고 경계가 분명한 역사적 해석을 닫아 준다. 현재의 보급률, 제품 적합성, 열린 릴레이 노출, 공격 발생률, 배달 성공률은 측정하지 않는다.
이 문서들은 또한 SMTP 소스 경로를 IPv4 Loose 또는 Strict Source and Record Route로 만들지 않는다. 둘 다 발신자가 높은 추상화 수준에서 경로 정보를 표현하게 하지만, 그 계층, 객체, 처리자, 권한, 은퇴 역사는 서로 다르다.
회원 브리핑
프로필 심층 컨텍스트
올바른 멤버십 등급으로 로그인하면 전체 브리핑과 출처 노트를 볼 수 있습니다.
Strategic Circle 전용
Strategic Circle
모든 독자에게 공개됩니다. 가입 후 로그인하면 프로필 브리핑를 열람할 수 있습니다.
Strategic Circle 가입하기Leadership Alliance 전용
Leadership Alliance
자격을 갖춘 IP 자산 소유자 및 운영진을 위한 콘텐츠입니다. 로그인하면 Leadership Alliance 브리핑을 열람할 수 있습니다.
Leadership Alliance 가입하기





