SMTP 인사이드 아웃

인터넷 이메일 작동 원리

전자 메일 프로그램에서 보내기 단추를 누를 때 어떤 일이 발생했는지 궁금한 적이 있습니까? 아마도 작동하지 않는 한 아마. 이게 바로 당신이 궁금해하는 이유입니다. 무언가가 작동하지 않는 경우 작동하지 않는 것이 무엇인지 알면 좋습니다. 보통, 그것은 해결책의 절반입니다.

전자 메일보내면 SMTP 가 작동합니다. SMTP 는 RFC 5321 : Simple Mail Transfer Protocol에 정의 된 Simple Mail Transfer Protocol의 약자입니다. 메일 클라이언트이메일을 한 곳에서 다른 곳으로 가져 오는이 깔끔하고 간단한 절차를 사용하여 SMTP 서버대화 합니다.

The Flirt

전자 메일 프로그램이 SMTP 클라이언트 가되어 메일 서버포트 25 (일반적으로 SMTP 포트 )에 연결되고 EHLO가 말합니다. 컴퓨터는 궁극적으로 인간 뿐이며, 예의 바르고 싶어한다는 것입니다. 사실, 나중에 정중하게 시도하지는 않지만 나중에 SMTP를 사용하여 나중의 HELO 명령 (SMTP 명령은 일반적으로 4 자로 구성됩니다)의 두 가지 맛을 가져 왔습니다.

HELO의 두 가지 맛

EHLO는 최근 버전이되어 서버가 지원하는 모든 추가 기능 (예 : 배달 상태 알림 또는 안전한 ASCII 문자 이외의 메시지를 전송할 수있는 기능)을 보급합니다.

모든 서버가이 인사말을 허용하는 것은 아니지만 자연스럽게 추가 기능이 없다고 가정하는 평범한 HELO를 받아 들여야합니다. 두 hello 명령은 클라이언트가 ** LO 뒤에 도메인을 지정하도록 요구합니다. 실제로이 모양은 다음과 같습니다.

220 mail.domain.net ESMTP 서버
헬리콥터
501 HELO에는 도메인 주소가 필요합니다.
HELO localhost
250 mail.domain.net Hello localhost [127.0.0.1], 만나서 반갑습니다.

(내 입력은 기울임 꼴 이고, 서버 출력은 검은 색이며, 5로 시작하는 줄 은 오류를 나타냅니다.)

보낸 사람

프로토콜의 나머지 부분은 속성을 간단하게 받아 들일 만합니다. 전자 메일을 보내려면 MAIL FROM : 이라는 키워드로 시작 하십시오 . 다음에 보낸 사람의 제안에 따라 보낸 사람의 전자 메일 주소 가옵니다. 하지만 (과 같이) 주소를 대괄호로 묶는 것을 잊지 마십시오. 우리의 예를 계속해서, 우리는 :

MAIL FROM :
250 sender@example.com ... 발신인 확인

받는 사람

서버가 보낸 사람의 주소를 수락하면 클라이언트는받는 사람의 주소를 제공 할 수 있습니다. 이 동작에 대한 명령 인 RCPT TO :는 다시 암시 적입니다. 나 자신 에게 메일을 보내고 싶다.

RCPT받는 사람 : recipient@example.com
250 support@lifewireguide.com ... 수신자 확인 (대기열에 보관)

서버가 큐에 대기한다는 것은 다음과 같은 의미입니다. 즉, 메일을 로컬에 저장하고 대기열에있는 다른 모든 메일과 함께 간격으로 (예 : 30 분마다) 전송합니다. 이 동작은 구성에 따라 다르며 서버가 메일을 즉시 배달 할 수도 있습니다.

거의 완료되었습니다. 그래도 여전히 누락 된 것이 중요한 부분 인 실제 메시지입니다.

메시지

이제 "봉투"가 완성되었으므로 전자 메일 메시지의 데이터가 그대로 이어집니다. 이 "데이터"는 이메일 본문헤더 필드로 구성 됩니다.

서버가 메세지를 승인하게하는 상태를 시작하기위한 명령은 DATA 입니다. 다음은 전자 메일 메시지의 모든 머리글 필드와 본문이 모두 하나의 큰 텍스트 블록 (또는 데이터)을 구성합니다. 입력이 끝났음을 서버에 알리기 위해 한 행의 점만 사용됩니다 (\ r \ n. \ r \ n). 그래서 나는 내 메시지를 보낸다.

데이터
354 메일 입력, "." 그 자체로 한 줄에
메시지 ID :
날짜 : 일요일, 1997 년 8 월 17 일 18:48:15 +0200
보낸 사람 : Heinz Tschabitscher
받는 사람 : Heinz Tschabitscher
제목 : Summast-Proust Contest

백조의 세계에 떨어져!
.
250 SAA19153 배달 메시지가 수락되었습니다.

네, 이것은 To : 필드에서 전자 메일과 완전히 다른 이름을 지정할 수 있음을 의미합니다. 예를 들어, " Recipient list suppressed"를 사용할 수 있습니다.

MAIL FROM : 에서까지 단계를 반복하려는만큼 많은 이메일 을 보낼 수 있습니다 . . 이 작업을 끝내면 QUIT 명령을 사용하여 서버를 종료 할 수 있습니다.

떠나다
221 안녕

어떻게해야합니까?

평범하지 않은 해결책은 포트 25에서 보내는 메일 서버 에 텔넷 ( 이메일 클라이언트의 계정 설정 에서 해당 주소를 찾을 수 있음)입니다.

더 쉬운 방법은 이 Java 애플릿 을 사용하는 것입니다. 이 애플릿 은 SMTP 프로토콜을 모방하여 대화 상자를 안내합니다.