SMTP(Simple Mail Transfer Protocol) 정보통신연구실
SMTP 개념 User User Internet 하나 또는 그 이상의 수신자에게 단일 메시지를 전송 문자, 비디오, 음성, 또는 그래픽을 포함하는 메시지를 전송 인터넷 외부 네트워크상의 사용자에게 메시지를 전송 User User SMTP client SMTP server Internet TCP 임시 port TCP 할당된 port 25
SMTP 개념 SMTP는UA(User Agent)와 MTA(Mail Transfer Agent로 분해할 수 있다
SMTP 개념 송신측과 수신측의 단 하나의 MTA대신에 다른 MTA들에 의해서 메일을 중계할 수 있다
SMTP 개념 중계시스템은 TCP/IP프로토콜을 사용하지 않는 사이트가 TCP/ IP프로토콜을 사용이 불확실한 다른 사이트의 E-메일 사용자에게 메일 전송을 가능하게 한다. (Mail gateway를 사용)
User Agent(UA) 메일을 송수신하기 위한 프로그램 송신 메일 수신 메일 MH, Berkeley Mail, Elm, Zmail, Mush 송신 메일 Envelope 송신자/수신자 주소, 기타 정보 Message Header와 body로 구성 Header 송신자/수신자, 메시지의 주제, 기타 정보 Body Actual information 수신 메일
Addresses Unique한 address를 부여한다 Local part Domain Name User mailbox라 불리는 special file의 name을 정의 Domain Name Mail exchanger를 통하여 mail을 receive/send한다 Email주소는 gateway와 실제 recipient의 주소를 정의하고 이를 통하여 메일을 주고받는다
Delayed delivery SMTP는 delayed delivery를 허용한다 Server-Site delay Create a message → spool(storage structure) → transfer periodically for check mail Mail이 저장된 spool에서 주기적(10에서 30초마다) 보낼 수 있는지 검사하고 시간 초과(3일에서 5일)하면 송신자에게 반송된다 Receiver-Site delay 수신자의 메일박스에 저장된다 Intermediate delay SMTP는 intermediate delay를 허용하고 적절할 때에 전송한다
Aliases 여러 가지 서로 다른 e-mail 주소를 나타내기 위해서 alias 사용 : one-to-many alias expansion 한 사용자는 여러 e-mail 주소로 정의될 수 있다 : many-to-one alias expansion
Aliases One-to-Many expansion Many-to-One expansion
Mail transfer agent(MTA)
SMTP 명령과 응답 SMTP는 MTA client와 server 사이에서 메시지를 주고 받기 위해서 commands와 response를 사용한다 Carriage return과 line feed에 의해 종료된다 Command
SMTP 명령(1) Command Definition HELO MAIL RCPT DATA sender와 receiver간의 전송채널을 만든다. HELO:challenger.atc.fhda.edu 메일 발신자 확인하고 메일 발송을 알린다. MAIL FROM:forouzan@challenger.atc.fhda.edu 메일 수신자를 알린다. RCPT TO:betsy@mcgraw-hill.com 메일의 내용을 receiver-SMTP에 전송, 종료는 ‘.’ . DATA This is the message .
SMTP 명령(2) Command Definition VRFY EXPN HELP NOOP QUIT 이름이 유효한 수신자인가를 확인하기 위해서 요청 . VRFY:betsy@mcgraw-hill.com 메일링 리스트를 확장하도록 수신 호스트에 요청. EXPN:x y z 보내진 명령의 정보를 수신자에게 요청. HELP:mail 수신자의 상태를 체크하기 위해 NOOP 메시지를 종료 . QUIT
SMTP 명령(3) Command Definition 송신자와 수신자의 상태를 바꿈. TURN TURN SEND SMOL SAML RSET 송신자와 수신자의 상태를 바꿈. TURN 수신자의 터미널로 수신자가 로그인 상태일 때 송신 SEND FROM:frouzan@fhda.atc.edu mail이 수신자의 mailbox또는 터미널로 전송. 수신자가 log in 상태가 아니면 mailbox로 전송 . SMOL FROM:frouzan@fhda.atc.edu mail이 수신자의 mailbox그리고 터미널로 전송. 수신자가 log in 상태이면 양쪽 아니면 mailbox로 전송 SAML FROM:forouzan@fhda.atc.edu 현재 메일 전송을 취소. 송신자와 수신자에 대한 저장된 정보가 삭제 . RSET
SMTP 응답(1) Code Definition 1yz 2yz 3yz 4yz 5yz 현재 SMTP에서 사용되지 않는다. 요청을 성공적으로 수행 했고, 새로운 명령을 시작할 수 있다. 요청을 승인되고 수행을 위해 추가정보 필요. 요청을 거절했지만 에러는 일시적인 현상으로 명령을 다시 전송할 수 있다. 요청을 거절, 명령을 재 전송할 수 없다.
Mail transfer phases 연결 설정 Port 25 Code 220(서비스 준비), code 421(서비스 이용 불가) Code 250(요청 명령 완료)
Mail Transfer phases 메시지 전송 메시지의 송신자를 알리기 위해 MAIL 메시지를 전송 code 250(ok)로 응답 수신자의 Address를 포함하는 RCTP 메시지를 전송 code 250(ok) 로 응답 메시지전송을 초기화하기 위해서 DATA 메시지를 전송 메일 입력 시작 Code 354로 응답 연속되는 라인 안에 메시지내용전송.각 라인 끝에 라인피드와 케리지리턴 삽입하고 ‘.’을 포함하는 라인으로 메시지전송 종료. Code 250(ok) 로 응답
Mail Transfer phases 연결 종료
Multipurpose internet mail extensions(MIME) SMTP는 NVT 7-bit ASCII format만 지원 MIME는 non-ASCII data를 허용하기 위한 보조 프로토콜이다
MIME MIME는 전송 파라메터를 정의하기 위해 기본 SMTP 헤더에 추가 될 수 있는 5가지 헤더를 정의한다.
MIME MIME-Version Content-Type 메시지의 body에서 사용되는 data의 타입을 정의 Type Subtype Description Text Plain 포맷되지 않은 일반 텍스트 Multi- Part Mixed 순서적으로 보인 다중의 독립적인 body part Parallel 위와 동일 그러나 순서가 없음. Digest Mixed와 비슷함, 그러나 default가 message/RFC822 Alternative 각 부분은 같은 정보에 대한 상호 교환적인 version Message RFC822 Body가 encapsulated message Partial Body가 너무 큰 message로 나누어서 전송 External-Body 실제 Body가 없고 단지 참조
MIME Type Subtype Description Image JPEG JPEG format GIF GIF format Video MPEG MPEG format Audio Basic 8 KHz 음성의 단일 채널 인 코딩 Application PostScript Adobe PostScript Octet-stream General binary data(eight-bit bytes)
MIME Text Multipart Subtype Definition Body가 다중,독립적인 부분을 포함 Plain 7bit ASCII 포맷 Multipart Body가 다중,독립적인 부분을 포함 Multipart 헤더는 각 part 사이의 경계 정의가 필요 경계는 파라메터로서 사용 ‘--’으로 각 파트를 구분 종료는 경계 파라메터 다음에 ‘--’
MIME Multipart Subtype Definition Mixed Parallel Digest Alternative 메시지 안에 정확한 순서를 수신자에게 나타내야한다. 각 파트는 다른 타입이고, 경계가 정의된다. Mixed와 비슷한 타입 그 파트들에서 중요하지 않은 순 서는 제외한다. Mixed와 비슷한 타입 기본 type/subtype이 message/rfc822 이다. 동일한 메시지가 다른 포맷을 사용해서 반복된다.
MIME Multipart example Content-Type: multipart/mixed; boundary=xxxx Content-Type: text/plain; …………………………………………………………… Content-Type: image/gif; --xxxx--
MIME Message Subtype Definition encapsulate된 메시지 Rfc822 Partial External-Body Rfc822에 따라 작성된 메시지 body를 나눠서 전송 parameter: id, number, total 실제 body에 data가 없고 단지 참조할 수 있도록 함 parameter : access-type, name
MIME Content-Transfer-Encoding Content-Id Content-Description Content-Transfer-Encoding:<type> Content-Id Content-Description 헤더가 image, audio, video인지 정의 Type Description 7bit Body가 7bit로 표현, default encoding 방식 8bit 8bit encoding, Non-ASCII로 보내질 수 있지만 1,000개의 문자로 제약. Binary 8bit encoding. Non-ASCII로 보내질 수 있고 1,000개의 이상의 문자가능 Base64 이진 파일에 적합, 이진 가능한 ASCII문자로써 일련의 3byte를 표현 Quoted-printable encoding방식이 인쇄 가능한 ASCII문자로 구성, =는 escape문자 표시 안 되는 문자, 공백 등은 2개의 16진수, =로 표시
MIME Base64 val code A 11 L 22 W 33 h 44 s 55 3 1 B 12 M 23 X 34 i 45 A 11 L 22 W 33 h 44 s 55 3 1 B 12 M 23 X 34 i 45 t 56 4 2 C 13 N 24 Y 35 j 46 u 57 5 D 14 O 25 Z 36 k 47 v 58 6 E 15 P 26 a 37 l 48 w 59 7 F 16 Q 27 b 38 m 49 x 60 8 G 17 R 28 c 39 n 50 y 61 9 H 18 S 29 d 40 o 51 z 62 + I 19 T 30 e 41 p 52 63 - J 20 U 31 f 42 q 53 10 K 21 V 32 g 43 r 54
POP3 POP3(Post Office Protocol, version 3) 메일 서버에 연결상태 지속으로 자원 낭비 발생. 클라이언트에서 메일을 간단히 관리 할 수 있게 개발됨 TCP 할당된 port 110 서버 응답 요청 성공: +OK 요청 실패: -ERR