전자메일( Electronic Mail )
。Mail Message는User Agent에서 작성되어송신자의Mail Server를 거쳐수신자의Mail Server의Mailbox로 저장됨.
전자메일의 주요 3요소
。User Agent,Mail Server,Mail Protocol
- User Agent
。Mail Message를 작성 , 편집 , 읽는 역할을 수행하는프로그램
ex )Gmail
。Mail Message를Mail Server로 전송 및Mail Server의Mailbox에서Mail Message를 가져오는 역할을 수행
- Mail Server
。Electronic Mail Structure의 중심
。송/수신자 Mail Server간User Agent를 통해 작성된Mail Message의 전송 및 저장을 수행
ex )Naver,학교등
Mail Server의 두가지 자료구조
Mailbox:
。송신자 Mail Server에서 전송한Mail Message를 저장하는 저장소
▶ 각사용자는Mail Server내 고유의Mailbox를 포함
Message Queue
。다른수신자 Mail Server에게 송신할Mail Message를 발송 시 임시로 보관하는 저장소
▶Mailbox와 달리 사용자 구분이 없음.
。수신자 Mail Server가 고장나서 수신이 불가능한 경우 임시로Message Queue에 저장하여 약 30분의 간격으로 재시도
Mail Protocol
。송신자쪽에서User Agent를 통해Mail Message를 작성하면서송신자 Mail Server-수신자 Mail Server로 전달(push)하는 방식은SMTP 프로토콜을 통해 정의
。수신자 Mail Server의Mailbox에 저장된Mail Message에수신자의User Agent를 통해 가져오는 방식(pull)은Mail Access Protocol(POP , IMAP , HTTP 프로토콜등 )을 통해 정의
SMTP( Simple Mail Transfer Protocl )[RFC 5321]
。전자메일을 위한어플리케이션 계층 프로토콜
。Mail Server의송신자 / 수신자 프로세스간Client-Server Architecture를 가진다.
SMTP Client:SMTP를 사용하는송신자 Mail Server 프로세스
SMTP Server:SMTP를 사용하는수신자 Mail Server 프로세스
▶Message Mail전송 시SMTP Client로 동작 ,Message Mail수신 시SMTP Server로 동작
。트랜스포트 계층 프로토콜로서TCP를 사용
▶SMTP Server 프로세스의Port번호 : 25
。SMTP의Mail Message는7 bit ASCII를 사용하므로 전송용량이 제한.
▶ 현재는 다른Mail Protocol을 통해대용량 파일이나이미지등을 전송가능
。SMTP는Push 프로토콜로서 전송만 가능
▶Mail Server에서Mail Message를 가져올때는Pull 프로토콜인Mail Access Protocol(POP , IMAP , HTTP 프로토콜등 )을 사용
HTTP와SMTP차이점
。둘다ASCII기반command / response를 가지며Response는status code & status phrase를 가지지만 아래부분에서 차이가 발생.
HTTP : pull 프로토콜
。HTTP Client가HTTP Server로부터 직접데이터 객체를pull하는 방식이므로
SMTP : push 프로토콜
。SMTP Client가SMTP Server로Mail Message를push하는 방식이므로
SMTP원리
- 송신자는
User Agent를 통해Mail Message를 작성후수신자 전자메일 주소로 전송하도록 명령
송신자 User Agent는Mail Message를송신자 Mail Server의Message Queue로 전송
송신자 Mail Server의SMTP Client는수신자 Mail Server의SMTP Server로TCP Connection을 수행
。SMTP Server 프로세스는Port번호 : 25로SMTP Client 프로세스와TCP Connection수행
▶TCP Connection이 설정된 경우SMTP Server와SMTP Client간SMTP Handshaking이 수행됨.
SMTP Handshaking이 될 경우SMTP Client에서송신자 Mail Server Message Queue의Mail Message를TCP 소켓으로 전송
。전송이 모두 끝난 경우SMTP Command : QUIT를 통해TCP Connection을 종료
수신자 Mail Server의SMTP Server가 수신한Mail Message를Mailbox에 저장
SMTP Interaction시 3가지 전송절차
。SMTP Client의Mail Message는Command를 포함
▶SMTP Command:ASCII명령문(HELO,MAIL FROM,RCPT TO,CRLF,DATA,QUIT,... )
。SMTP Server의Mail Message는Response를 포함
▶SMTP Response:ASCIIStatus code & Status phrase로 구성
telnet 호스트이름 25를 통해SMTP Server와TCP 연결이후 다음Command와Response를 입력하면서SMTP Interaction수행
。telnet 호스트이름 25를 선언한 경우호스트이름의원격 Mail Server와Local Host간TCP Connection이 수행됨.
ex )telnet hamburger.edu 25
▶C : SMTP Client,S : SMTP Server
- 가정
。SMTP Client Host name:crepes.fr
。SMTP Server Host name:hamburger.edu
。Do you like ketchup? How about pickles?이라는Mail Message전송
Handshaking=greeting
。STMP Server와SMTP Client간 소개를 통해송/수신자간Host name를 소개
。220 hamburger.edu:SMTP Server의Host name
▶Response는Status code & Status phrase로 구성
- transfer of messages
。SMTP Handshaking이후SMTP Client에서SMTP Server로Mail Message를TCP Connection상에서 송신
。TCP Connection이 지속연결 되는동안.을 통해 구분하면서Mail Message의 연이은 전송이 가능
▶SMTP Client가QUIT를 전송하는 경우TCP Connection이 종료
- closure
。전송할Mail Message가 없는 경우TCP에게TCP Connection을 종료하도록 명령
Mail Access Protocol
。수신자 User Agent에서수신자 Mail Server의Mail Message를 가져올때 사용하는Pull 프로토콜이자애플리케이션 계층 프로토콜
▶SMTP는Mail Message의 전송 및 저장만 가능한Push 프로토콜로서Mail Message를 가져오는 기능은 없다.
- Mail Access Protocol 종류
POP( Post Office Protocol )[RFC 1939]
IMAP( Internet Mail Access Protocol )[RFC 1730]
HTTP