요약

  • RFC 821은 터미널 표시, 사서함 저장 또는 그 둘 모두를 SMTP 전달 의미에 포함시키는 세 가지 선택적 트랜잭션 동사를 제공했습니다.
  • 성공 조건은 서로 달랐습니다.SEND는 터미널 전달에 의존했고,SOML은 어느 쪽 목적지든 받아들였으며,SAML은 터미널도 시도하더라도 사서함에 의존했습니다.
  • MX 릴레이는 메일 경로에 대한 지식과 사용자의 실시간 화면에 대한 제어를 분리했습니다. 이후 SMTP는 좁은 호환성 규칙을 유지하면서 이 동사들을 폐기했습니다.

세 가지 동사, 세 가지 도착 방식

1982년 공용 호스트 앞에 앉은 사용자를 상상해 보십시오. 사용자는 로그인한 상태이며 메시지가 터미널에 표시되도록 허용했습니다. 원격 발신자가 SMTP 세션을 열지만, 평범한MAIL명령 대신 세 가지 대안 중 하나를 선택합니다.

SEND는 메시지가 터미널에 도달하도록 요청합니다. 사용자가 부재하거나 터미널 메시지를 거부하면 수신 시스템은 해당 수신자를 일시적으로 거부할 수 있습니다.SOML(Send Or MaiL)은 사용자가 활성 상태이고 수용 의사가 있으면 터미널을 시도하고, 그렇지 않으면 사서함으로 폴백합니다.SAML(Send And MaiL)은 터미널을 시도하면서 관계없이 사서함에 메시지를 저장합니다.

이들은 장식용 헤더가 아니었습니다.RFC 821은 각 동사를 트랜잭션 개시 명령으로 규정하고, 그 뒤에RCPT와DATA가 따르도록 했습니다. 발신자는 수신자와 본문을 제공하기 전에 전달 동작을 선택했습니다.

이 설계는 원시적인 알림 기본 설정처럼 보이지만, 더 무거운 약속을 담고 있었습니다. SMTP는 단순히 메시지를 주소로 전송하는 것이 아니라, 그 사람이 지금 연락 가능한지, 중단을 받아들이는지, 화면에 보이는 이벤트와 저장된 사본 중 어느 쪽이 성공으로 간주되는지를 판단해 달라는 요청을 받고 있었던 것입니다.

성공의 의미는 동사에 따라 달라졌다

세부 규정은 이 세 명령이 역사적으로 가치 있는 이유를 보여줍니다. 이들은 현대 인터페이스가 '전달됨'이라는 한 단어로 뭉뚱그려 버리는 결과들을 분리했습니다.

SEND의 경우 트랜잭션은 데이터가 터미널에 도달했을 때만 성공합니다. 클라이언트가 다른 동사를 선택하지 않았다면 사서함 사본은 폴백이 아니었습니다.SOML의 경우 터미널 표시와 사서함 저장은 서로 대체 가능했고, 어느 쪽이든 요청을 충족할 수 있었습니다.SAML의 경우 사서함은 필수였고 터미널 표시는 추가였습니다. 그 성공 조건은 사서함 전달이었지, 사용자가 실시간 표시를 봤다는 증거가 아니었습니다.

하나의 프로토콜이 세 가지 증거 모델을 노출한 셈입니다. 성공한SEND는 내구성 있는 저장 없는 순간적 표시를 의미할 수 있었습니다. 성공한SOML은 구현체가 추가 증거를 제공하지 않는 한 어느 목적지가 선택되었는지 말해주지 않았습니다. 성공한SAML은 사서함 분기를 확립했지만 화면 분기는 성공 보장의 일부로 만들지 않았습니다.

이는 놀랍도록 정직한 문법이었습니다. 주의와 보관이 서로 다른 서비스임을 인정한 것입니다. 문제는 발신자가 동사를 선택함으로써, 자신이 통제하지 않는 수신자와 인프라가 부담하는 결과를 선택하는 것처럼 보였다는 점입니다.

접속 상태는 로컬 사실이었다

RFC 821에서 터미널 전달은 두 조건에 의존했습니다. 사용자가 호스트에서 활성 상태여야 하고, 터미널 메시지를 받아들여야 했습니다. 어느 조건도 이메일 주소의 속성이 아니었습니다. 둘 다 특정 순간 특정 기계의 세션에 속한 것이었습니다.

이 구분이 중요합니다. 사용자가 로그아웃하거나 터미널을 바꾸거나 중단 기본 설정을 변경하더라도 주소는 안정적으로 유지될 수 있습니다. 수신 호스트가 더 이상 사용자의 대화형 세션을 소유하지 않더라도 메일 경로는 유효할 수 있습니다. 심지어 하나의 트랜잭션 안에서도, 수신자 처리 중 관측된 상태는 본문이 도착하기 전에 바뀔 수 있습니다.

따라서 실제 결정권은 수신 호스트에 남아 있었습니다. 클라이언트는SEND를 요청할 수 있었지만, 수신자가 접속해 있다고 선언할 수는 없었습니다. 광고된 명령은 서버가 어휘를 이해한다는 것은 증명할 수 있었지만, 그 사람이 지금 온라인이거나 동의하고 있다는 것은 증명할 수 없었습니다.

권한 경계는 이미 드러나 있었습니다. 발신자는 의도를 표현했고, 수신 측이 접속 상태, 동의, 완료 가능한 목적지를 통제했습니다.

MX 릴레이는 겉보기 지름길을 무너뜨렸다

RFC 1123은SEND,SOML,SAML의 구현을 발신자와 수신자 모두에게 선택 사항으로 만들었습니다. 그 짧은 논의는 아키텍처상의 균열을 지적합니다.

메일 익스체인지(MX) 라우팅은 호스트가 목적지를 대신해 메일을 받아들일 수 있게 합니다. 그 호스트는 메시지를 사용자에게 더 가깝게 이동시키는 방법은 알 수 있지만, 사용자의 터미널에 직접 쓸 수는 없을 수 있습니다.SEND를 따르는 수신자에 대해 RFC 1123은 그런 수신 호스트가251 User Not Local을 반환하여 전달이 연기될 수 있음을 발신자에게 알리는 것을 허용했습니다.

이 응답은 두 종류의 도달 가능성을 노출했습니다. 경로 도달 가능성은 시스템이 메일 전달을 책임질 수 있음을 의미했고, 표시 도달 가능성은 사용자가 활성인 화면을 제어함을 의미했습니다. MX는 둘 중 첫 번째만 가질 수 있었습니다.

이것은 단순한 낡은 구현의 불편이 아닙니다. 분산형 저장-전달 네트워크가 실시간 주의를 중간 홉의 신뢰 가능한 속성으로 만들 수 없는 이유를 보여줍니다. 릴레이는 훌륭한 라우팅 권한을 갖고도 표시 권한을 전혀 갖지 못할 수 있습니다.

확장 기능 발견은 문법을 광고할 수 있었지만 접속 상태는 광고할 수 없었다

RFC 1425가 SMTP 서비스 확장을 도입했을 때, 초기 레지스트리는 세 명령을 선택적 서비스로 나열했습니다. 각 명령 이름은 EHLO 키워드로도 사용되었습니다.

이 조치로 지원 여부가 발견 가능해졌습니다. 클라이언트는 더 이상 서버가 해당 동사를 인식하는지 추측할 필요가 없었습니다. 그러나 발견은 한 가지 불확실성, 즉 문법과 구현 역량만 좁혔습니다. 수신자가 로그인했는지, 터미널 메시지가 활성화되어 있는지, 현재 서버가 최종 서버인지, 표시가 전송 과정에서 살아남는지는 답하지 않았습니다.

이 구분은 제품에서 쉽게 사라집니다. 역량 플래그는 흔히 초록 버튼이 되고, 다시 약속이 됩니다. 여기서 EHLO는 “이 서버는SEND를 구현합니다”라고 정직하게 말할 수 있으면서, 특정SEND가 의존하는 인간 상태에 대해서는 아무것도 말하지 않았습니다.

설계가 중심을 잃은 후에도 호환성은 남았다

2001년경RFC 2821은SEND,SAML,SOML을 폐기(obsolete)로 규정했습니다. 이 명령들이 거의 구현되지 않았고, 워크스테이션 변화와 다른 프로토콜로 인해 코드가 남아 있는 곳에서도 폐기되었을 수 있다고 밝혔습니다.

표준은 낡은 어휘가 단순히 사라질 수 있다고 가장하지 않았습니다. 클라이언트는 이 명령들을 서비스로 제공하지 말라고 지시받았습니다. 서버는 여전히 구현할 수 있었지만, RFC 821 모델과 명시적 EHLO 광고를 통해서만 가능했습니다.

RFC 5321은 이 타협을 유지합니다. 폐기된 동사들은 여전히 인식 가능한 트랜잭션 시작 명령으로 남아 있지만, 일반 SMTP는MAIL과 메시지 데이터 수락 성공에 따르는 책임의 공식 이전을 중심으로 구성됩니다.

이 책임 경계는 지속적입니다. 서버가 성공적으로 데이터를 수락하면, 전달하거나 실패를 보고할 의무를 소유합니다. 특정 순간에 사람의 눈이 화면을 봤다고 주장할 필요는 없습니다.

따라서 폐기는 모든 낡은 구현을 깨지 않으면서 권한을 축소했습니다. 인터넷은 좁은 호환성 경로를 유지하면서, 전송 계층이 실제로 유지할 수 있는 주장, 즉 주의가 아닌 메시지의 보관으로 상호 운용 중심을 옮겼습니다.

레지스트리는 기록이지 배포 보고가 아니다

IANA SMTP 레지스트리는 여전히SEND,SOML,SAML을 나열합니다. 항목들은 RFC 821 의미를 유지하고, 이후의 폐기를 기록하며, 메시지 제출(submission) 용도로는MUST NOT으로 표시합니다.

이들의 존재는 역사적·운영상 어휘입니다. 얼마나 많은 서버가 이 명령들을 구현하는지, 어떤 수신자가 터미널 메시지를 받아들이는지, 특정 표시가 발생했는지는 보여주지 않습니다. 등록은 이름을 조율할 뿐, 그 이면의 사회적 가정을 부활시키지 않습니다.

이것이 이 이야기를 오늘날 유용하게 만드는 증거 경계입니다. 지원, 접속, 동의, 표시, 저장, 책임은 여섯 가지 서로 다른 사실입니다. 초기 SMTP는 그중 여러 가지를 하나의 트랜잭션 선택에 담았습니다. 이후 SMTP는 인간의 주의를 해결하지 못했지만, 그 일시적 상태를 메일 전송의 중심으로 삼는 것을 멈췄습니다.

버려진 분기가 가르치는 것

세 명령은 어리석지 않았습니다. 긴밀하게 결합된 소수의 호스트 환경에서 직접 터미널 전달은 편리하고 이해 가능했습니다.SOML은 우아한 폴백을 제공했습니다.SAML은 명시적으로 내구성 있는 사본을 보존했습니다. 설계자들은 실제 구분을 보고 각각에 동사를 부여했습니다.

규모가 와이어에 어떤 구분이 속해야 하는지 바꾸었습니다. 릴레이, 이질적인 워크스테이션, 별도의 사용자 애플리케이션이 늘어남에 따라, 전송 계층은 큐잉과 보관은 신뢰 가능하게 소유할 수 있었습니다. 그러나 사용자의 현재 화면이나 중단 수용 의사는 신뢰 가능하게 소유할 수 없었습니다.

사라진 명령들은 정확한 교훈을 남깁니다. 실시간 표시는 더 강한 형태의 전달이 아닙니다. 다른 주체가 통제하고 다른 증거가 뒷받침하는 서로 다른 이벤트입니다. 빛나는 화면은 즉각적이면서 덧없을 수 있고, 조용한 사서함은 지연되면서 내구적일 수 있습니다.

사서함보다 먼저 도착하려 한 메시지는 경주에서 이겼을지도 모릅니다. 그러나 반드시 머물 곳을 찾은 것은 아니었습니다.

출처