Presentation is loading. Please wait.

Presentation is loading. Please wait.

Send Mail Transfer Protocol

Similar presentations


Presentation on theme: "Send Mail Transfer Protocol"— Presentation transcript:

1 Send Mail Transfer Protocol
제 27 장 Send Mail Transfer Protocol

2 목차 Introduction SMTP Protocol SMTP Examples SMTP Futures Summary

3 Introduction 인터넷에서 가장 많이 사용되는 응용 프로그램
TCP 연결의 약 1/2가 SMTP에 관한 것 [Caceres et al. 1991] user agent : MH, Berkely Mail, Elm, Mush MTA(message transfer agent) : Sendmail

4 Introduction (계속) TCP 연결 message transter agent user at a terminal
queue of mail to be sent 송신자 client TCP 연결 TCP port 25 message transter agent user at a terminal user agent queue of mail to be sent 수신자 server

5 Introduction (계속) RFC 821 [Postel 1982] RFC 822 [Crocker 1982]
SMTP 프로토콜 규정 양측 MTA가 단일 TCP 연결을 통해 어떻게 통신할 것인가를 기술 RFC 822 [Crocker 1982] MTA 간의 RFC 821을 이용한 전자 메일 메시지의 format을 정의

6 SMTP Protocol MTA간의 통신은 NVT ASCII를 이용한다.
클라이언트가 서버에 보낼수 있는 명령어는 12개 미만 (ftp: 40개 이상)

7 SMTP Protocol - Example
sun % mail -v user agent를 invoke To: user agent 의 출력 Subject: testing 제목입력 대기 user agent가 추가하는 빈 라인 1, 2, 본문 마침표만 있는줄: 본문의 끝임을 알림 Sending letter user agent의 출력 다음부터 MAT(Sendmail)의 출력이다. Connecting to mailhost via ether... Trying connected. 220 noao.edu Sendmail 4.1/SAG-Noao.G89 ready at Mon, 19 Jul 93 12:47:34 MST >>> HELO sun.tuc.noao.edu. 250 noao.edu HELLO sun.tuc.noao.edu., pleased to meet you >>> MAIL 250 Sender ok >>> RCPT 250 Recipient ok >>> DATA 354 Enter mail, end with "." on a line by itself >>> . 250 Mail accepted >>> QUIT 221 noao.edu delivering mail Sent sent user agent의 출력 >>>로 시작되는 줄: SMTP 클라이언트가 보내는 명령어 3자리 응답코드로 시작되는 줄: SMTP 서버로부터의 응답

8 SMTP Protocol - Example (계속)
예에서 사용된 5개의 명령어 HELO : 클라이언트 자신의 확인(identify) MAIL : 메시지의 출처(originator)를 확인 RCPT : 메시지의 수신처(recipient)를 확인 수신처가 여러곳일 경우 한 개 이상일 수 있다 DATA : 메일 메시지의 내용을 전송 한줄에 마침표만 있는 줄을 전송함으로써 내용을 끝을 알림 QUIT : 메일 교환을 종료

9 PSH 1:78(77) ack1 220 noao.edu Sendmail 4.1 / … \r\n 1 3 5 7 9 10 13 15 17 noao.edu sun.1064 PSH 1:25(24) ack 78 HELO sun.tuc.noao.edu. \r\n 2 4 6 8 11 12 14 16 PSH 78:137(59) ack 25 250 noao.edu HELLO … \r\n PSH 25:64(39) ack 137 MAIL PSH 137:183(46) ack 64 \r\n PSH 64:93(29) ack 183 RCPT PSH 183:224(41) ack 93 250 … \r\n PSH 93:99(6) ack 224 DATA \r\n ack 99 PSH 224:274(50) ack 99 354 Enter mail, end with … \r\n ack 274 PSH 99:492(393) ack 274 (body of mail message) ack 492 PSH 492:495(3) ack 274 . \r\n PSH 274:293(19) ack 495 250 Mail accepted \r\n PSH 495:501(6) ack 293 QUIT \r\n PSH 293:323(30) ack 501 221 noao.edu delivering mail \r\n 9

10 SMTP Protocol - Example (계속)
세그먼트 12에서 393byte 전송 내용 앞의 3줄은 MTA가, 그 다음 9줄은 user agent가 첨가. Received: by sun.tuc.noao.edu. (4.1/SMT-4.1) id AA00502; Mon, 19 Jul 93 12:47:32 MST Message-Id: From: (Richard Stevens) Date: Mon, 19 Jul :47: Reply-To: X-Phone: X-Mailer: Mail User's Shell ( /14/92) To: Subject: testing 1, 2, 3. MTA user agent

11 SMTP Protocol - commands
앞서의 5개를 제외한 명령들 RSET 현재 메일 처리를 중지 양 종단을 리셋 송신자, 수신자, 메일 데이터등 모든 저장된 정보 폐기 VRFY 수신자에게 메일을 보내지 않고, 수신자의 주소를 검증하도록 클라이언트가 송신자(sender)에게 요구. 메일 전달 문제의 디버깅을 위해 관리자가 수작업으로 사용. NOOP 서버가 OK 응답코드(200)을 응답하도록 요구외에는 아무것도 하지 않는다.

12 SMTP Protocol - commands (계속)
additional , optional 명령들 EXPN mailing list를 확장(expand)한다. VRFY와 유사하게 시스템 관리자에 의해 사용됨 대부분의 Sendmail 버전이 EXPN과 VRFY를 동등하게(identically) 다룬다. 4.4BSD에서 Sendmail V8에서는 다르게 다룬다. VRFY는 별칭(alias)를 확장하지 않으며, .forward 파일을 실행하지 않는다. TURN TCP 연결을 끊고 새로운 연결을 만들지 않고, 반대 방향으로 메일을 보내기 위해 클라이언트와 서버의 역할을 바꾼다. Sendmail은 이 명령을 지원하지 않는다.

13 SMTP Protocol - commands (계속)
그 외 명령어들 SEND, SOML, SAML 거의 구현되지 않았으며, MAIL 명령을 대치할 수 있다. 사용자가 login되어 있을때 사용자의 터미널로 직접 전달되거나 수신자의 mailbox로 전달되는 메일의 조합을 허용

14 SMTP Protocol - Envelope, Header, Body
배달을 위해 MTA가 사용 예에서 두개의 SMTP 명령에 의해 기술됨 RFC 821 봉투의 내용과 해석을 기술 TCP 연결을 통한 우편 교환을 위해 사용되는 프로토콜을 기술 MAIL RCPT

15 SMTP Protocol -Envelope, Header, Body(계속)
user agent가 사용 예에서 Received, Message-Id, From, Date, Reply-To, X-Phone, X-Mailer, To, Subject 형태 헤더이름 : 필드값 RFC 822 헤더 필드 형식과 설명을 기술 X로 시작하는 필드는 사용자가, 나머지는 RFC 822가 정의

16 SMTP Protocol -Envelope, Header, Body(계속)
보내는 메시지의 내용 RFC 822 NVT ASCII 텍스트로서 본문을 기술 DATA 명령으로 전송(각줄은 1000바이트 이하) 헤더와 본문 사이에 하나의 빈 줄이 따라온다.

17 SMTP Protocol -Envelope, Header, Body(계속)
봉투, 헤더, 본문 사용 user agent는 본문을 취하고, 헤더를 더해서, 그 결과를 MTA에 보냄. MTA는 몇개의 헤더를 더하고, 봉투를 더해서 그 결과를 다른 MTA에 보냄. Content 항 헤더와 본문의 조합으로 설명 DATA 명령으로 클라이언트에 의해 보내진다.

18 SMTP Protocol -Relay Agents
중계 시스템 이외의 시스템의 MTA 구성을 단순화하기 위함 개개의 시스템을 감추고(hiding), 메일 hub로 동작하는 하나의 시스템을 허용 호스트가 변경되어도 DNS이름만 변경하면 됨. sun % host mailhost mailhost.tuc.noao.edu CNAME noao.edu canonical name noao.edu A its real IP address

19 sending host one orgnization across the Internet one orgnization
user at a terminal sending host queue of mail to be sent user agent one orgnization local MTA local MTA local MTA relay MTA queue of mail across the Internet queue of mail relay MTA local MTA local MTA local MTA one orgnization user agent queue of mail to be sent user at a terminal receiving host 19

20 SMTP Protocol -NVT ASCII, Retry Intervals
SMTP는 봉투, 헤더, 본문에 모두 NVT ASCII를 사용 Retry Intervals MTA는 새 메일 메시지를 받는 즉시 전송 시도 배달에 실패하면 반드시 큐에 넣고, 재시도해야함 Host Requirements RFC 최소한 30분의 초기 타임 아웃을 권고 송신측은 적어도 4-5일은 포기해서는 안됨 배달 실패는 일시적(충돌, 네트워크 연결 손실)이므로 큐에 저장된 1시간동안 2번의 연결을 시도

21 SMTP Examples - MX Records
인터넷에 직접 연결되지 않은 호스트 RFC 974 [Partrige 1986]: MTA에 의한 MX 레코드 제어 mlfarm.com은 인터넷에 직접 연결되어 있지 않고 우편전송자로 연결하는 MX 레코드를 갖는다. 다른 우선순위를 가진 2개의 MX 레코드가 있음 sun % host -a -v -t mx mlfarm.com The following answer is not autoritative: mlfarm.com IN MX mercury.hsi.com mlfarm.com IN MX hsi86.hsi.com Additional information: mecury.hsi.com IN A hsi86.hsi.com IN A

22 SMTP Examples - MX Records (계속)
sun % mail -v -v flag to see what the MTA does To: Subject: MX test message the body of the message is typed here (not shown) . period on a line by itself to terminate message Sending letter ... Connecting to mlfarm.com via tcp... mail exchanger is mercury.hsi.com the MX records are found Trying connected. first tries one with lower preference 220mercury.hsi.com … remainder is normal SMTP mail transfer MTA는 낮은 우선순위부터 시작

23 SMTP Examples - MX Records (계속)
recursion-desired flag is set 1 sun.1624 > noao.edu.53: 2+ MX? mlfarm.com. (28) 2 noao.edu.53 > sun.1624: 2* 2/0/2 MX mercury.hsi.com. 10 (113) 3 sun.1143 > mercury.hsi.com.25: S : (0) win 4096 4 mercury.hsi.com.25 > sun.1143: S : (0) ack win 16384 5 sun.1143 > mercury.hsi.com.25: . ack 1 win 4096 6 mercury.hsi.com.25 > sun.1143: P 1:90(89) ack 1 win 16384 authoritative bit set

24 SMTP Examples - MX Records (계속)
줄 2의 2/0/2 첫번째 2: 2 answer RRs (2 MX host name) 두번째 0: 0 authority RRs 세번째 2: 2 additional RRs (the IP address of the 2 hosts) 줄 3-5: mercury.his.com의SMTP 서버와의 TCP 연결설정 mercury.his.com은 메일을 받은 후에 mlfarm.com에 전달해야한다. (UUCP 를 많이 이용) RFC 974는 MTA는 MX 레코드를 요구해야하고, 찾지 못하면 목적지 호스트로 배달을 시도해야한다고 기술 MTA는 또한 반드시 CNAME 레코드도 다뤄야한다.

25 SMTP Examples - MX Records (계속)
BSD/386 MTA(Sendmail)의 수행단계 1. Sendmail은 DNS에게 mailhost.tuc.noao.edu에 대한 CNAME레코드 요구 2. DNS 질의는 noao.edu에 대한 CNAME 레코드를 발생하고, 없다는 응답을 받는다. 3. Sendmail은 DNS에게 noao.edu에 대한 MX 레코드를 요구하고, 하나의 MX 레코드를 얻는다. 4. Sendmail은 noao.edu에 대한 IP주소를 DNS에 질의하여 를 받는다(스텝3의 additional RR) 로 SMTP 연결 초기화, 메일 전송 sun % host - t cname mailhost.tuc.noao.edu mailhost.tuc.noao.edu CNAME noao.edu sun % host -t mx noao.edu noao.edu MX noao.edu

26 SMTP Examples - MX Records (계속)
다운된 호스트 sun % host -a -v -t mx sun.tuc.noao.edu sun.tuc.noao.edu IN MX 0 sun.tuc.noao.edu sun.tuc.noao.edu IN MX 10 noao.edu Additional Information: sun.tuc.noao.edu IN A sun.tuc.noao.edu IN A noao.edu IN A vangogh % mail -v A test to a host that's down . EOT ... Connecting to sun.tuc.noao.edu. (smtp)... ... Connecting to noao.edu. (smtp)... 220 noao.edu … reminder is normal SMTP mail transfer

27 SMTP Examples - MX Records (계속)
vangogh.3873 > : S : (0)... (0.0006) > vangogh.3873: R 0:0(0) ack win 0 (0.2996) vangogh.3874 > : S : (0)... (0.0004) > vangogh.3874: R 0:0(0) ack win 0 SMTP 클라이언트의 개방 실패 원인이 호스트 서버의 다운이라면 클라이언트는 총 75초 동안 SYN을 에 다음 75초 동안은 에 전송 150초 후에도 응답이 없으면 그다음 순위의 다른 MX 레코드로 이동

28 SMTP Examples - VRFY, EXPN
mail을 보내지 않고 수신자 주소가 옳은지를 검증 EXPN mail을 주어진 목록으로 보내지 않고 mailing list를 확장

29 SMTP Examples - VRFY, EXPN (계속)
HELO에 잘못된 이름:서버는 IP 주소를 기준으로 연결 EXPN: .forward에 따라 우편의 진행 방향을 출력 sun % telnet vangogh.cs.berkeley.edu 25 220-vangogh.CS.Berkeley.EDU Sendmail 8.1C/6.32 ready at Tue, 3 Aug : 59: 220 ESMTP spoken here helo bsdi.tuc.noao.edu 250 vangogh.CD.Berkeley.EDU Hello sun.tuc.noao.edu[ ], pleased to meet you vrfy nosuchname 550 nosuchname... User unknown vrfy rstevens 250 Richard Stevens expn rstevens 250 Richard Stevens

30 SMTP Futures -Envelope Changes
봉투변화: Extended SMTP RFC 1425 [Klensin et al. 1993a] HELO EHLO 응답으로 250 응답 코드와 함께 보통 여러줄의 keyword를 기술한다. keyword는 서버가 지원하는 SMTP 확장을 기술한다. RFC에서 설명되어지며, IANA(Internet Assigned Number Authority)에 등록된다.

31 SMTP Futures -Envelope Changes (계속)
응답의 예 EXPN과 HELP는 원래 RFC821에 기술, 선택 명령 SIZE 키워드 RFC 1427[Klensin, Freed, and Moore 1993]에서의 정의를 지원한다는 의미. 클라이언트가 MAIL FROM 명령 라인상에 바이트로 메시지의 크기를 기술하게 한다. 클라이언트가 메시지를 보내기 전에, 서버가 받아들일 메시지의 크기를 확인하게 한다. 인터넷의 메일 메시지의 증가와 ASCII외의 다른 메시지 내용을 지원하기 위해 추가됨 ehlo sun.tuc.noao.edu 250-vangogh.CS.Berkeley.EDU Hello sun.tuc.noao.edu [ ], pleased to meet you 250-EXPN 250-SIZE 250 HELP

32 SMTP Futures -Envelope Changes (계속)
ehlo sun.tuc.noao.edu 250-ymir.claremont.edu 250-8BITMIME 250-EXPN 250-HELP 250-XADR 250 SIZE 8BITMIME 키워드 RFC 1426[Klensin ot al. 1993b] MAIL FROM 명령에 키워드 BODY를 삽입하도록 허락 본문의 내용이 NVT ASCII인지 8-비트 데이터인지 구분 이 키워드가 응답되지 않으면, 클라이언트는 NVT ASCII이외의 어떤 문자도 보낼 수 없다. X로 시작하는 모든 키워드는 local SMTP 확장을 참조한다.

33 SMTP Futures -Header Changes
헤더변화: Non-ASCII Characters RFC 1522[Moore 1993] RFC 822 메시지 헤더에 non-ASCII 문자들을 보내는 방법을 기술 주용도 송신자와 수신자, 그리고 제목에 추가문자를 허용하기 위한것

34 SMTP Futures -Header Changes (계속)
format: =?charset?encoding?edcoded-text?= charset 문자세트 명세 : us-ascii 혹은 iso-8859-x (x는 단일 숫자) encoding encoding method를 기술하는 단일 문자 Q : 대부분의 문자는 NVT ASCII로 전송 8번째 비트가 성정된 것은 3개의 문자로 바꾸어 전송 ( = 다음 두자리 HEX값) B: base-64 encoding을 의미 세개의 연속된 바이트(24비트)를 네개의 6비트 값으로 encode 64 NVT ASCII문자를 6비트 값의 표현으로 사용가능 3의 배수가 아닐때는 = 기호를 pad 문자로 사용

35 SMTP Futures -Header Changes (계속)
Encoding of 6-bit values(base-64 encoding)

36 SMTP Futures -Header Changes (계속)
RFC 1552에 기재된 2개의 부호화 예제 From: =?US-ASCII?Q?Keith_Moore?= To: =?ISO ?=Q?Keld_J=F8rn_Simonsen?= CC: =?ISO ?=Q?Andr=E9_?= Pirard Subject: =?ISO ?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?= =?ISO ?B?dSB1bmR1CnN0YW5kIHRoZSBleGFTcGxlLg==?= user agent의 출력 From: Keith Moore To: Keld J0rn Simonsen CC: André Pirard Subject: If you can read this you understand the example. 1. SWYg (S=0x12, W=0x16, Y=0x18, g=0x20)를 6비트 값으로 변환 , , , 를 8비트/바이트로 재 조합 , ,  0x49, 0x66, 0x20 ASCII 값으로 I, f, 공백

37 SMTP Futures -Body Changes
본문 변경: MIME(Multipurpose Internet Mail Extentions) RFC 1521[Borenstein and Freed 1993] RFC 822는 본문을 structure 없는 NVT ASCII 텍스트로 기술 RFC 1521은 본문에 structure를 허용 MIME는 RFC 822에 따르는 새로운 헤더를 추가함으로써 수신자에게 본문에 구조가 있음을 알린다 (어떤 확장도 요구하지 않는다) 본문은 내용과 상관없이 NVT ASCII로 전송된다. extended SMTP SIZE 명령과 non-ASCII 헤더를 이용(MIME에 의해 요구된 확장이 아니다)

38 SMTP Futures -Body Changes (계속)
MIME의 5개 헤더 필드 Mime-Version:, Content-Type:, Content-Transfer-Encoding:, Content-ID:, Content-Description: 예. Mime-Version: MIME version Content-Type: TEXT/PLAIN; charset=US-ASCII plain ASCII text PLAIN: subtype charset=US-ASCII : parameter

39 SMTP Futures -Body Changes (계속)
MIME Content-Type과 subtype

40 SMTP Futures -Body Changes (계속)
본문을 위한 Content-Type과 Content-Transfer-Encoding 은 독립적이다. RFC 1521에 정의된 5개의 다른 encoding 형식 1. 디폴트인 7비트 NVT ASCII 2. quoted-printable (문자의 일부만이 8번째 비트가 설정) 3. base-64 4. non-ASCII 형태의 8번째 비트가 설정된 문자열 5. binary encoding RFC 1521은 non-ASCII 텍스트에 대해서는 quoted-printable를, image, audio, video, octet-stream application data에 대해서는 base-64를 권고한다. (RFC 822에 따르는 MTA와의 최대한의 호환을 위해)

41 multipart nested multipart 41 To: rfc-dist@nic.ddn.mil
Subject: RFC1479 on IDPR Protocol Mime-Version: 1.0 Content-Type: Multipart/Mixed; Boundart="NextPart" Date: Fri, 23 Jul 93 12:17:43 PDT From: "Joyce K. Reynolds" --NextPart the first boundary A new Requwst for Comments is now available in online RFC libraries. (details here on the new RFC) Below is the dara which will enable a MIME compliant Mail Reader implementation to automatically retrieve the ASCII version of the RFCs. --NextPart the second boundary Content-Type: Multipart/Alternative; Boundary="OtherAccess" a nested multipart message with a new boundary --OtherAccess Content-Type: Message/External-body; access-type="mail-server"; Content-Type: text/plain SEND rfc1479.txt name="rfc1479.txt"; site="ds.internic.net"; access-type="anon-ftp"; directory="rfc" --OtherAccess-- --NextPart-- the final boundary 첫번째 boundary 이후에 헤더필드가 없고 공백이므로 첫번째와 두번째 boundary 사이는 text/plain으로 간주된다. multipart nested multipart 41

42 Summary user agent, MTA Envelope, Header, Body Extended SMTP
non-ASCII header MIME

43 Review NVT ASCII (26.4 p.534) internet protocol 장비를 통해 사용되는 ASCII문자의 7-비트 미국판 각 7비트의 최상위에 0을 넣어서 8-비트로 전송됨 line의 끝은 2개의 연속문자(CR, LF)가 전송됨 (\r\n) carriage return은 2개의 연속문자(CR, NUL)가 전송됨 (\r\0)

44 Review MX Record (14.6 p.270) RR(Resource Records)중 하나로서 메일 교환 레코드
인터넷에 접속되어 있지 않은 사이트가 인터넷에 접속되어 있는 사이트를 메일 교환기로 이용할수 있다. 두개의 사이트는 메일 교환 방법을 구축(종종 UUCP가 사용된다) 목적지 호스트가 이용 불가능할때, 대체하는 호스트에 메일을 보내는 방법을 제공 가상의 호스트 설정이 가능 firewall gateway를 가진 조직은 MX 레코드 사용으로 접속을 내부 시스템 만으로 제한할 수 있다.

45 Review CNAME record: recursion desired:
규범적 이름(canonical name)을 의미, 도메인 이름으로 표시 recursion desired: name server에 대해서 자기 자신이 조회를 처리하도록 지시 p.258 DNS 헤더의 플래그 필드


Download ppt "Send Mail Transfer Protocol"

Similar presentations


Ads by Google