32
Abstract บบบบบบบบบบบบบบบบบบบบบบบบบบ (Electronic mail) บบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ internet บบบบบบบบบบบบบ บบบบบบบบบบบบบบบ agent บบบบบ บบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบบบบบบบบบ บบบบบบบ header บบบบบบบบบบ RFC 822 บบบบบบบบบบบบบ RFC 822 บบบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบ บบบบบบบ MIME บบบบบบบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบบบบ บบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ บบบ SMTP Sender บบบบบบบบบบบบบบบบบบบบบบบบบบบบ บบบบบ บบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบ SMTP Protocol บบบบบบบบบบบบบบบบบบบบบบบบ TCP/IP บบบบบ บบบบบบบบบบบบบบ บบบบบ SMTP Receiver บบบบบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบ mailbox บบบบบบบบบบบบบบบ Keyterm SMTP - Simple Mail Transfer Protocol บบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ host บบบบบ บบ TCP/IP protocol MIME - Multipurpose Internet Mail Extensions บบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ SMTP บบบบบบบบบบบบบบบ

SMTP

Embed Size (px)

Citation preview

Page 1: SMTP

Abstractบรการไปรษณยอเลกทรอนก (Electronic mail) เปนบรการทมใช

กนอยางแพรหลายในการทองไปบน internet ในโลกปจจบน โดยจะใช โปรแกรม agent ตางๆ ในการสรางจดหมายขนมา และทำาการจาหนาซอง หรอใส header ตามมาตรฐาน RFC 822 แตเนองดวย RFC 822 มขอจำากดในการสงขอมล จงมการใชมาตรฐาน MIME เขามาชวยลดขอจำากดในการสงไปรษณยอเลกทรอนกนนลงไป สวนตวจดหมายกสามารถสงขอมลไดหลายชนดดวยกน รวมทงการเขารหสตางๆ เมอไดจดหมายทจะสงแลวกจะสงตอไปยง SMTP Sender เพอทำาการตดตอดวยคำาสงตางๆ แลวกทำาการสงจดหมาย โดยผานทาง SMTP Protocol ซงทำางานบนการเชอมตอ TCP/IP ไปยงเครองปลายทาง โดยม SMTP Receiver คอยรบจดหมายอยเพอนำาจดหมายทไดรบมานน จดเกบใน mailbox ทถกตองตอไป

KeytermSMTP - Simple Mail Transfer Protocol

เปนมาตรฐานในการสงจดหมายระหวางเครอง host ตางๆ บน TCP/IP protocol

MIME - Multipurpose Internet Mail Extensionsเปนมาตรฐานใหมทออกมาเพอแกไขปญหาท SMTP ไมสามารถทำาได

Introductionการสงจดหมาย electronic เรมตนโดยการเขยนจดหมายดวยโปรแกรม

user agent โดยในแตละจดหมาย จะประกอบดวย header ซงระบผรบและขอ

Page 2: SMTP

มลอนๆ สวนตว body จะมขอความทตองการสง หลงจากนนจด-หมายจะเขาควของโปรแกรม SMTP Sender ซงจะเปนโปรแกรม ทท ำางานบนเคร อง Server

ถงแมวาการสงจดหมายจะขนกบ operating system ของเครอง host แตหลกการจะม เหมอนๆกน 2 อยางคอ

1. ตวจดหมาย จะประกอบดวย RFC 822 header ซงเปนหมายซองจดหมาย โดยจะบอก

รายละเอยดผรบ ตวขอความในจดหมาย ทสรางจาก user

2. รายการของทอยทปลายทาง โดยสรางจาก user agent ตาม RFC 822

SMTP sender จะนำาจดหมายทอยในควสงออกไปยงเครองปลายทาง โดยใช SMTP บนการเชอมตอ TCP ดวยหมายเลข port 25 บนเครองปลายทาง เมอทำาการสงเรยบรอยแลว SMTP sender กจะทำาการลบจดหมายออกจากควไป ทสำาคญคอในระหวางการสง SMTP sender ตองสามารถจดการกบปญหาตางๆทจะเกดขนได เชน host ปลายทาง unreachable, out of operation หรอ การเชอมตอ TCP เกดการลมเหลวระหวางทำาการสงจดหมายอย เมอเกดปญหาพวกน sender จะทำาการ requeue ใหม เพอทำาการสงในภายหลง แตถาทำาการสงใหมหลายครงแลวยงไมสำาเรจ กจะยกเลกการสง และรายงานไปยงผสง

Page 3: SMTP

SMTP protocol ใชในการสงจดหมาย จาก SMTP sender ไปยง SMTP receiver บนการเชอมตอ TCP โดยไมสามารถรบประกนไดวาจะแกไขปญหาจดหมายหายไป, ไมมการสงตอบรบเมอผรบไดรบจดหมายเรยบรอยแลว และไมมเครองรบประกนวาจะมการรายงานความผดพลาดกลบมา แตอยางไรกตามการสงจดหมายโดยใช SMTP กถอวามความ reliable

SMTP receiver จะทำาการรบจดหมายและทำาการจดเกบใหกบ mailbox ของ user แตละคน หรอไมกทำาการ copy เกบไวในกรณทมการ forward จดหมายไปทอน โดย receiver จะตองมความสามารถในการตรวจสอบวาผรบอยในระบบหรอไม รวมทงจดการกบปญหาในการตดตอ และปญหาเร องเนอทในการจดเกบไมพอ

Architecture and Servicesในระบบการจดการจดหมาย electronic นนจะมระบบยอย 2 สวนดวยกน

ค อ user agents เพ อใหผ ใชสามารถท ำาการอานและสงจดหมายได และ message transfer agent จะทำาการเคลอนยายจดหมายจากตนทางไปยงปลายทาง โดย user agent จะเปนโปรแกรม local มทงทเป น command-based, menu-based หรอ graphical เพอการโตตอบกบ email system สวน message transfer agent จ ะ เ ป น โ ป ร แ ก ร ม system daemon ท ท ำา ง า น อ ย เ ป น background เพอสงจดหมายในระบบ

โดยทวไประบบจดหมาย (email system) จะมความสามารถทำางานพนฐานดวยกน 5 อยาง ดงน

Page 4: SMTP

1. Composition คอกระบวนการสรางจดหมาย และตอบจดหมาย 2. Transfer การเคลอนยายจดหมายจากผสงไปยงผรบ 3. Reporting รายงานผลไปยงผสงวาจดหมายทสงไปไดรบหรอไม,

ถกปฏเสธ หรอวาสญหายไป หรอเปลา 4. Displaying สามารถแสดงผลไดถกตองกบขอมลทสงมา เชน

PostScript หรอเสยง และจะตองมความสามารถในการแปลงรปแบบของชนดขอมลไดดวย

5. Disposition สามารถทำาการลบจดหมาย บนทกจดหมาย, อานจดหมายทบนทกไว หรอสงตอไปยงคนอนได

ระบบสวนใหญ จะอนญาตใหผใชสามารถสราง mailbox เพอจดเกบจดหมายทไดรบมา โดยมคำาสงในการสราง, ลบ, เพมหรอลดจดหมายจาก mailbox นนได

ในการจดการสงจดหมาย เพอความสะดวกกจะม mailing list ซงเปนรายการของ email address โดยเมอสงไปตาม mailing list ทกคนทอยใน mailing list จะไดรบเหมอนกน

ในปจจบนการสงจดหมายมความสบสนในเร องของ envelope และ content โดย envelope จะทำาการบรรจ message เชน ปลายทาง ความสำาคญ และระดบความปลอดภยของจดหมาย โดย message transport agents จะใช envelope ในการหาเสนทางในการสงจดหมาย

สวน message ใน envelope จะมด วยกน 2 สวน คอ header และ body โดย header จะประกอบดวยขอ-มลสำาหรบ user agents สวน body จะเปนขอมลทใหคนอาน โดยแยกใหเหนดงน

Name:Mr.Daniel Dumkopf

Envelope

Page 5: SMTP

Street:18 Willow Lane State:NYZip Code:10604Priority UrgentEncryption:None From:United GizmoAddress:180 Main St.Location:Boston,MA 02120Date:Sept 1,1996Subject:Invoice 1081

MessageDear Mr.Dumkopf,Our computer record show that you still have not paid the above invoice of $0.00. Please send us a check for $0.00 promptly.

Yours trulyUnited Gizmo

RFC 822E-mail ประกอบไปดวยการจาหนาซองจดหมาย ซงประกอบดวยเขต

ขอมลตางๆ แลวตามดวยบรรทดวาง 1 บรรทด ตอดวยตวขอความในจดหมาย โดยแตละเขตขอมลจะอยในรปของบรรทดตวอกษร ASCII ซงขนตนดวยชอเขตขอมล, เครองหมาย colon และตามดวยคาตางๆ

Header ความหมายTo: Email address ของผรบหลกCc: Email address ของผรบรองBcc: Email address ของผรบอนๆ

Page 6: SMTP

From: คนททำาการเขยนจดหมายนSender: ผทสงจดหมายฉบบน (ในกรณคนอนสงให)Received: transfer agent ใชในการสงจดหมายReturn-Path: ระบทจะสงจดหมายกลบถาสงไมได

To: ใส DNS address ของผรบจดหมายคนแรก ถามผรบหลายคนกสามารถทำาได โดยใช

Cc: ใส address ของผรบจดหมายคนท 2 โดยในการสงจดหมายดวย Email นไมมความแตกตางในเรองขอมล ระหวางผรบคนแรกกบผรบคนท 2 แตจะมผลในเรองของการใหความสำาคญในตวบคคลทง 2 นนตางกน (Cc ยอมาจาก Carbon Copy)

Bcc: (Blind carbon copy) มการทำางานเหมอน Cc แตจะไมปรากฏอยในการสงของผรบหลกและรองเลย

From: และ Sender: บอกวาใครเป นผสงจดหมาย โดยปกตจะเป นคนเดยวกน แตกสามารถเปนคนละคนกนได เชน ผบรหารเขยนจดหมายไว แลวใหเลขาฯ ชวยสงจดหมายให ซงในตวอยางนผบรหารจะอยใน From: สวนเลขาฯจะอยในเขตขอมล Sender: การทม Sender กเพอในกรณทไมสามารถทำาการสงไดจะไดสงกลบมาให เลขาฯ ไมตองสงกลบไปใหผบรหารอก

Received: transfer agent จะเพมเตมขอมลลงในเขตขอมลนในระหวางทางในการสงจดหมาย โดยจะม agent's identity และวนท เวลา ในการรบจดหมายเพอใชในการหาขอผดพลาด ในการหาเสนทางในการสงจดหมาย

Return-Path: เปนเขตขอมลทเพมเมอสนสดในการสงจดหมายแลว โดยมจดประสงคในการบอกวาจะสงกลบไปยงผสงไดอยางไร โดยทฤษฎแลวขอมลสวนนสามารถหาไดจากเขตขอมล Received: ซงไมมชอของผสง ดง-นนจงมเขตขอมลเพอระบผสงดวย

Header ความหมาย

Page 7: SMTP

Date: วนทและเวลาทสง emailReply-To: Email address เมอผรบตองการตอบ

Message-Id:เลขประจำาตวของจดหมายเพอนำามาอางองในภายหลง

In-Reply-To: Message-Id ทไดทำาการตอบกลบมานReferences: Message-Id อนๆทไดอางถงKeywords: ผใชเลอก keywords

Subject:สรปจดหมาย เพอการแสดงผลในบรรทดเดยว

Reply-To: เขตขอมลทใชในบางครงเทานน ยกตวอยางเชน ผจดการฝายการตลาดตองการสง email ไปยงลกคาในเรองสนคาใหม แลวจดหมายนจะถกสงโดยเลขาฯ แต Reply-To จะไปทฝายขายของบรษทเพอตอบจดหมายนน

RFC 822 สามารถใหผใชสามารถ ทำาการตงเขตขอมล ขนเองได โดยจะขนตนดวย X- เพอไมใหซำากบเขตขอมลอนๆ ดงนนบางครงอาจจะพบกบ X-Fruit-of-the-Day หรอ X-Disease-of-the-week กสามารถเกดขนได

หลงจาก Header กจะตามมาดวยตวจดหมาย โดยผใชสามารถทำาการใสอะไรกได

MIME OverviewMIME เปนสวนขยายมาจาก RFC 822 โดยจะแสดงขอจำากดในการใช

งาน SMTP และ RFC 822 สำาหรบการสง Email ซงมดงน1. SMTP ไมสามารถทำาการสง executable files หรอ file ทเปน binary

อนๆได โดยสวนมากจะทำาการแปลง binary ใหออกมาอยในรปของ text โดยใชไดกบระบบจดหมายรวมถง UNIX UUencode/UUdecode ซงเปนวธทนยมทำากน แตไมมมาตรฐานในเรองน

2. SMTP ไมสามารถสง text file ทมภาษาอนๆได ดงการใชรหส 8-bit ในการเกบคาเพยง 128 คา โดย SMTP จำากดใหใช 7-bit ASCII

Page 8: SMTP

3. SMTP server จะทำาการปฏเสธ จดหมายทมขนาดของจดหมายใหญเกนไป

4. SMTP gateway ทำาการแปลระหวางตวอกษร ASCII และ EBCDIC โดยไมมชดของการจบค

5. SMTP gateway ไปยงระบบจดหมาย X.400 ไมสามารถจดการกบขอความธรรมดาได

6. การสราง SMTP ดวยมาตรฐาน RFC 821 จะไมสามารถทำางานบางอยาง ดงน

ลบ, เพม หรอบนทกตวอกษร CR (carriage return) และ LF (line feed)

การตดบรรทดของขอมลทมความยาวมากกวา 76 ตวอกษร ไมสามารถนำาตวอกษร white space ซงไดแก ตวอกษร tab และ

space การจดบรรทดในจดหมายใหมความยาวคงท การแปลงตวอกษร tab ใหเปนตวอกษร space หลายๆตว

MIME สามารถแก ไขป ญหาเหล าน ได โดยสามารถเขาก นได ก บมาตรฐานเดม RFC 822 ซงรายละเอยดจะอยใน RFC 1521 และ RFC 1522

รายละเอยดของ MIME 1. มเขตขอมลทหวจดหมายใหม 5 เขตขอมลดวยกน ซงสามารถใสไวในหว

จดหมายในแบบ RFC 822 ได 2. รจกประเภทของขอมลเปนจำานวนมากขน เชน สามารถสงจดหมายท

เปน multimedia ได 3. การเขารหสขอมลมความสามารถมากขน โดยสามารถทำาการแปลง

ขอมลจากชนดหนงเป นอกชนดหนง ได จากเดมทสงได แต text ธรรมดาเทานน

MIME-version จะตองม parameter เปน 1.0 ซงเปนเขตขอมลทใชในการระบวาเปนจดหมายใน RFC 1521 หรอ 1522

Page 9: SMTP

Content-Type บอกชนดขอมลทบรรจอยในจดหมาย เพอบอกให agent ไดรและทำาการแสดงผลไดถกตองตามชนดของขอมลทไดรบมานน

Content-transfer-encoding ใชระบชน ดของการเขารหสขอมล , ตวจดหมายในระหวางทางททำาการสงจดหมาย

Content-id ใชเปนเลขประจำาตวของเนอหาใน MIME ทมขอมลหลายชนดรวมกน

Content-description คำาบรรยายของขอมลทอยในจดหมาย ซงจะเปนประโยชนเมอขอมลนนไมสามารถอานได เชน ขอมลชนดเสยง เปนตน

เขตขอมลเหลานสามารถปรากฎอยในหวจดหมายแบบ RFC 822 ได โดยถาทางฝายผรบไมรองรบ MIME เขตขอมลเหลานจะเปนเพยง optional เทานน

MIME Content Typesชนดของขอมลทอยในตวจดหมาย ซงมอย 7 ชนด ตาม RFC 1521

โดยสามารถแบงยอยออกไปเปน subtype ตางๆ โดยทำาการขนดวย slash "/" ดงตวอยางนContent-Type: video/mpeg

Type Subtype คำาอธบาย

TextPlain ขอความธรรมดา

Richtextขอความทมคำาสงในการจดรปแบบอยดวย

ImageGif รปภาพ GIFJpeg รปภาพ JPEG

Audio Basic เสยงทฟงไดVideo Mpeg ภาพยนตร MPEG

Application

Octet-stream ขอมล binary ซงประกอบดวย 8-bit

Postscript เอกสารทพมพไดในรป PostScript

Page 10: SMTP

Message

Rfc822 บรรจจดหมายทเปน RFC 822 อย

Partialจดหมายทถกแยกออกเปนหลายฉบบ

External-body ขอความทตองไปดงมาจากทอน

Multipart

Mixedจดหมายทมหลายสวนทสงมาพรอมกน

Alternativeขอความเดยวกนแตสงมาหลายรปแบบ

Parallelสวนตางๆของจดหมาย สามารถดไดพรอมกน

Digestsubtype default ของแตละสวนจดหมาย

Text Type เปนขอความธรรมดา โดยแบงเปน text/plain ซงเปนขอความทไมตองทำาการเขารหสใด สามารถทำาการ

แสดงผลไดทนท ดงนนจงสามารถทำาการสงไดสะดวกและรวดเรว text/richtext เปนชนดขอมลทสามารถทำาการใชภาษาในการจดรปแบบ

การแสดงผลได ซงสามารถทำาการแสดงผลไดกบทกระบบ (ตวหนา ตวเอยง ตวเลก-ใหญ ยอหนา จดซาย-ขวา ตวยก และ ตวหอย) โดยมรากฐานมาจากภาษา SGML (Standard Generalized Markup Language) ซงเปนรากฐานของ HTML ดวย ตวอยางเชนThe <bold> time </bold> has come the<italic> walrus </italic> said ...สามารถแสดงเปนThe time has come the walrus said ...ซงจะขนกบระบบททำาการรบทจะเลอกทำางานตามคำาสง เชน ตวหนา และตวเอยง ถาสามารถแสดงไดกจะทำาการแสดงออกมา สวนส ตวกระพรบ ขดเสนใต อาจไมสามารถทำาได

Page 11: SMTP

Image Type ใชในการสงขอมลรปภาพ ถงแมวาจะมชนดของรปภาพเปน จำานวนมาก ทงทมการบบอดรป และทงแบบไมบบอด กจะใชรปแบบภาพเปนชนด GIF และ JPEG เปนหลก

Audio Type และ Video Type ใชสำาหรบ เสยงและภาพเคลอนไหว โดย video จะมแตรปโดยไมมเสยง โดยถาตองการสงใหมทงรปและเสยง จะตองทำาการสงขอมลของทง 2 แยกกน โดยขนอยกบการ เขารหสขอมล โดย video จะใช Moving Picture Experts Group (MPEG)

Application Type เปนชนดขอมลทจะตองทำาการ ประมวลผลกอน application/octet-stream เปนขอมล binary ทเรยงตอกนมา โดยรป

แบบนน จะขนกบผใชเปนหลก application/postscript จะหมายถง ภาษา PostScript ทผลตโดย บรษท

Adobe Systems โดยมการใชกนอยางแพรหลาย ในการพมพงาน แตตองระวง เพราะวา มความสามารถทจะ เขยน C compiler หรอ database management system ลงใน PostScript ได

Message Type มความสามารถในการทำางานหลายอยาง ใน MIME โดย message/rfc822 จะบอกวาในตวจดหมาย มจดหมายอนอย โดยมทง

header และ ตวจดหมาย message/partial subtype สามารถทจะแยกจดหมายท มขนาดใหญให

เปน หลายๆสวนได โดยจะทำาการประกอบกน ทางฝายผรบ โดยจำาม parameter ทจำาเปนในการแบง ดงน

Id เปนตวเลขของจดหมาย โดยทกสวนทถกแยกจะม Id เหมอนกน เพอทางฝายรบ จะสามารถทำาการรวมจดหมายไดถกตอง

Number เปนเลขบอกตำาแหนงของการแยกสวน ของจดหมายจากจดหมายตนฉบบ โดยสวนแรกจะเปน ตวเลข 1 และตวเลขตอไปตามลำาดบ

Total เปนตวเลขบอกจำานวนการแบงทงหมด โดยสวนสดทายของจดหมาย จะมเลข number กบ total เทากน

Page 12: SMTP

กฎการแบงจดหมายออกเปนสวนๆ มดงน1. แบงตวจดหมายตนฉบบออกเปน N สวน 2. สวนแรก จะเรมตนดวย header ทไมมเขตขอมล Content-

Transfer-Encoding โดยมคาเรมตนเปน 7-bit ASCII แตมเขตขอมล Content-Type เปน message/partial ตามดวย หมายเลข id, number = 1 และ total เปน N สวนเขตขอมลทเหลอกให คดลอกมาจากจดหมายตนฉบบ

3. ตวจดหมายสวนแรก ถาบรรจจดหมาย MIME โดยม Content-Type และ Content-Transfer-Encoding ของจดหมายตนฉบบอย จะตองม Message-ID ทตางกน

4. จดหมายสวนทเหลอ จะมเขตขอมล header Message-ID ทเฉพาะตว สวนเขตขอมล Content-Type จะมหมายเลข id และ total เหมอนกนกบจดหมายสวนแรก แลวตามดวย number ทเรยงลำาดบใหถกตอง สวนเขตขอมล Content-Transfer-Encoding ไมตองม

กฎการประกอบจดหมายแยกสวน มดงน1. เขตขอมล header จะนำามาจากจดหมายสวนแรก สวน

Content-Type, Content-Transfer-Encoding และ Message-ID จะนำามาจากจดหมายทบรรจอย ในจดหมายฉบบแรก

2. จะไมสนใจเขตขอมล header ของจดหมายสวนอนๆ เลย 3. ตวจดหมายจะทำาการรวม ตามลำาดบ ใหเหมอนจดหมาย

ตนฉบบ

ตวอยางการสงจดหมายแบบแยกสวน

Page 13: SMTP

จดหมายสวนแรกFrom:[email protected]:[email protected]:Audio mailMessage-ID:<[email protected]>MIME-Version:1.0Content-type:message/partial;id="[email protected]";number=1;total=2Message-ID:<[email protected]>MIME=Version:1.0Content-type:audio/basicContent-transfer-encoding:base64...first half of encoded audio data

จดหมายสวนท 2From:[email protected]:[email protected]:Audio mailMIME-Version:1.0 Message-ID:<[email protected]>Content-type:message/partial;id="[email protected]";number=2;total=2...second half of encoded audio data

จดหมายหลงรวมFrom:[email protected]:[email protected]:Audio mailMessage-ID:<[email protected]>MIME-Version:1.0Content-type:audio/basicContent-transfer-encoding:base64...first half of encoded audio data...second half of encoded audio data

message/external-body เปนขอมลทไมไดอยในตวจดหมาย แตมขอมลทใชในการ เขาถงขอมล โดยจะใช parameter ของ Content-Type ดงน

Page 14: SMTP

FTP ตวจดหมายสามารถเขาถงโดยใช file transfer protocol (FTP) การเขาถง แบบน จะตองม parameter เพมเตม ดงน name ใชบอกชอแฟมขอมล และ site บอก domain name ของ เครองททำาการเกบขอมลอย สวน parameter ทเปนตวเลอก คอ directory ใชบอก directory ทเกบขอมลอย และ mode ใชบอกวธในการรบแฟมขอมล เชน ASCII หรอ รปภาพ กอนทจะสงขอมลกน จะมการใส user id และ password เพอความปลอดภย ของขอมล

TFPT ตวจดหมายสามารถเขาถง โดย trivial file transfer protocol (TFPT) โดยม parameter เหมอนกบ FTP ทกอยาง รวมทงตองใช user id และ password เหมอนกน

Anon-FTP เหมอนกบ FTP แตไมตองใช user id และ password Local-File ตวจดหมาย นนอยในเครองผรบแลว AFS ตวจดหมายเขาถง โดย AFS (Andrew File System) ม

parameter name เพอบอกชอแฟมขอมล Mail-Server ตวจดหมายสามารถเขาถงไดโดย สงจดหมายไปยง

mail server โดยตวจดหมาย จะตองมคำาสงทจะสงไปยง mail server

Multipart Type เปนชนดทสามารถใหจดหมาย มไดหลาย part โดยสามารถทำาการประกาศ จดเรมตน และ จดสนสดได โดยเสนแบง part จะเปนบรรทดใหม ทขนตนดวย 2 hyphen แลวตามดวยคา boundary แลวแบง part สดทาย จะม hyphen อก 2 ตวปดทาย

multipart/mixed อนญาตใหแตละ part มชนดขอมลท แตกตางกนได ยกตวอยางเชน

From:Nathaniel Borenstein<[email protected]>To:Ned Freed<[email protected]>Subject:Sample messageMIME-Version:1.0Content-Type:multipart/mixed; boundary="simple boundary"

Page 15: SMTP

This is preamble. It is to be ignored,thoung it is a handy place for mail composers to include an explanatory note to non-MIME-conformant readers.--simple boundary

This is implicitly-typed plain ASCII text. It does NOT end with a linebreak.--simple boundaryContent-type:text/plain;charset=us-asciiThis is explicitly-typed plain ASCII text. It DOES end with a line break.

--simple boundary--This is the epilogue. It is also to be ignored.

multipart/alternative แตละ part จะมขอความทเหมอนกน แต มการจดเกบ ทแตกตางกน ยกตวอยาง จดหมายสงเปน ขอความ ASCII,richtext และ PostScript ได โดยทางฝง ผรบ agent จะแสดงเปน PostScript ถาสามารถทำาได แตถาทำาไมได กแสดงเปน richtext และถายงทำาไมไดอก กจะแสดงเปนขอความธรรมดาแทน

From:Nathaniel Borenstein<[email protected]>To:Ned Freed<[email protected]>Subject:Formatted text mailMIME-Version:1.0Content-Type:multipart/alternative; boundary="boundary42"

--boundary42

Content-Type:text/plain;charset=us-ascii

...plain text version of message–boundary42Content-Type:text/richtext

...RFC 1341 richtext version of same message–boundary42--

Page 16: SMTP

multipart/parallel เมอทก part สามารถแสดงผล ไปไดพรอมๆกน ยกตวอยางเชน ภาพยนตร จะตองม 2 channel คอ audio channel กน video channel โดย movie ทดจะตองมความสามารถ ทจะเลนทายหลง ทง 2 channel ไปพรอมๆกนได

multipart/digest จะใชเมอมขอความหลายๆฉบบ pack รวมกนเปนจดหมายเดยว ยกตวอยางเชน discussion group บน Internet จะเกบ ขอความและสงจดหมาย ในรปแบบของ multipart/digest

MIME Transfer Encodingsมาตรฐาน MIME ไดกำาหนดวธ encode ขอมลไว โดยใชเขตขอมล Content-Transfer-Encoding ซงจะมคาไดดวยกน 6 แบบ ซง แบบ 7bit, 8bit และ binary จะไมมการ encode ขอมล แตโดยปกต SMTP จะใชแบบ 7bit เปนหลก นอกจากนนจะมการ encode ดวยวธอนทนยามเองไดโดย จะใช x-token ในการแบงประเภทการเขารหส สวน quoted-printable เปนการ encode ทใหคนสามารถอานได และ base64 เปนวธ encode เพอเปนความปลอดภย กบขอมลทกชนดไวสามารถสงไดถกตองและมขนาดเลก

7bit บรรทดสนของตวอกษร ASCII8bit บรรทดสนของตวอกษร non-ASCIIBinary ขอมล binaryQuoted-printable รปแบบการเขารหสของ ASCII โดยยง

สามารถ อานไดbase64 เขารหส จาก 6-bit ไปยง 8-bit ของตว

อกษร ทพมพไดx-token user กำาหนดไดเอง

quoted-printable จะเปนประโยชนกบขอมลท ASCII โดยเฉพาะตวอกษรทไมสามารถมองเหนไดเปนตวอกษรควบคมตางๆ โดยมกฎในการเขารหสดงน

Page 17: SMTP

1. ตวอกษรธรรมดาทไมอยในกฎขออน ใหทำาการเขารหสโดย เรมตนดวยเครองหมายเทากบ "=" แลวตามดวยเลขฐานสบหก 2 หลกของคา ASCII นน ยกตวอยางเชน form-feed มรหส ASCII เปน 12 จะแทนดวย "=0C"

2. ตวอกษรตงแตรหส 33 ("!") ถง 126 ("~") จะแทนดวยตวอกษรปกตเลย ยกเวนตวอกษร 61 ("=")

3. ตวอกษรพวก white space คอ 9 tab และ 32 space ยกเวน end of line โดยจะใชกฎขอท 1 ในการเขารหส และถาอยทายของบรรทดจะถกตดออก

4. Line break จะใชตวอกษร carriage-return และ line-feed 2 ตวตดกน ตามมาตราฐาน RFC 822

5. Soft line break จะใชเมอ ตวอกษรยาวกวา 76 ตวอกษร ไมรวม <CRLF> จะถกแทรกดวยตวอกษรน กอนตวอกษรท 75 โดยจะประกอบไปดวยตวเลขฐานสบหก ดงน 3D0D0A ซงกคอเครองหมาย เทากบ แลวตามดวย return และ line-feed นนเอง

American Standard Code for Information Interchange (ASCII)b7 0 0 0 0 1 1 1 1

b6 0 0 1 1 0 0 1 1

b5 0 1 0 1 0 1 0 1

b4

b3

b2

b1

0 0 0 0 NUL DLE SP 0 @ P ` p

0 0 0 1 SOH DC1 ! 1 A Q a q

0 0 1 0 STX DC2 " 2 B R b r0 0 1 1 ETX DC3 # 3 C S c s0 1 0 0 EOT DC4 $ 4 D T d t0 1 0 1 EN NA % 5 E U e u

Page 18: SMTP

Q K

0 1 1 0 ACK

SYN & 6 F V f v

0 1 1 1 DEL ETB ' 7 G W g w

1 0 0 0 BS CAN ( 8 H X h x

1 0 0 1 HT EM ) 9 I Y i y1 0 1 0 LF SUB * : J Z j z1 0 1 1 VT ESC + ; K [ k {1 1 0 0 FF FS , < L \ l |1 1 0 1 CR GS - = M ] m }1 1 1 0 SO RS . > N ^ n ~1 1 1 1 SI US / ? O _ o DEL

base64 หรออกชอหนงวา radix-64 เปนวธเขารหสทนยมกนในการสงจดหมายทงแบบ PGP (Pretty Good Pricacy) และ PEM (Privacy Enhanced Mail) โดยมลกษณะการเขารหสดงน

1. range ของ function ในการทำา base4 คออกษรทงหมด ไมวาจะเปน ASCII หรอ EBCDIC

2. ตวอกษรประกอบดวย 65 ทสามารถพมพได โดยรวมตวอกษร padding อกหนงตว ดงนนทกตวสามารถแทนไดดวย 6-bit

3. ไมมตวอกษรควบคม4. ตวอกษร hyphen ("-") ไมม เพราะวามการใชใน RFC 822 จงไมให

มตวอกษรน Radix-64 encoding

6-bit valu

e

Character

encoding

6-bit valu

e

character

encoding

0 A 32 g1 B 33 h2 C 34 i3 D 35 j4 E 36 k

Page 19: SMTP

5 F 37 l6 G 38 m7 H 39 n8 I 40 o9 J 41 p10 K 42 q11 L 43 r12 M 44 s13 N 45 t14 O 46 u15 P 47 v16 Q 48 w17 R 49 x18 S 50 y19 T 51 z20 U 52 021 V 53 122 W 54 223 X 55 324 Y 56 425 Z 57 526 a 58 627 b 59 728 c 60 829 d 61 930 e 62 +31 f 63 /

(pad) =

ตวอยางวธการเขารหส โดยม input เปนขอมล binary 24-bit ซงแตละ 6 bit จะแปลงเปนตวอกษร 8-bit รวมเปน 32 bit โดย 6 bit ดานหลงไมวาจะเปน ASCII หรอ EBCDIC กจะแทนตวอกษรทเหมอนกน เชน "E" ม 7-bit ASCII เปน 0100 0101 สวน EBCDIC จะเปน 8-bit 1100 0101 ดงนนการแปลงกลบกสามารถทำาได สะดวก โดยดเพยง 6 bit หลงกพอ เชน "H52Q" แปลงเปน ASCII คอ

1001000 0110101 0110010 1010001

Page 20: SMTP

แยกเปน 6 bit ไดดงน001000 110101 110010 010001

แปลงเปน 24 bit คอ 235CA1

SMTP Commands การทำางานของ SMTP จะประกอบไปดวยชดของคำาสง และการตอบรบ

ทสงกนระหวาง SMTP sender และ SMTP receiver โดยเรมตนดวยการท SMTP sender จะทำาการตดตอไปยง SMTP receiver แลวทำาการสงคำาสงตางๆ ไปยง receiver โดยทกคำาสงทสงไปจะ มการตอบรบจาก receiver เสมอ

SMTP commands โดยทแตละคำาสงจะเปนขอความหนงบรรทด ซงเรมตนดวยรหสคำาสงเปนตวอกษรทมความยาว 4 ตว และตามดวย argument ตางๆ และการตอบรบจะเปนขอความหนงบรรทดเชนเดยวกน

ตารางคำาสง (SMTP commands)

ชอคำาสง

รปแบบคำาสง คำาอธบาย

HELO HELO<SP><domain><CRLF> คำาสงตดตอ

MAIL MAIL<SP>FROM:<reverse-path><CRLF> ระบผสง

RCPT RCPT<SP>TO:<forward-path><CRLF> ระบผรบ

DATA DATA<CRLF> สงขอความRSET RSET<CRLF> ยกเลกNOOP NOOP<CRLF> ไมทำาอะไร (No Operation)QUIT QUIT<CRLF> ปดการเชอมตอ TCP

SEND SEND<SP>FROM:<reverse-path><CRLF> สงจดหมายไปยงหนาจอ

SOML SOML<SP>FROM:<reverse-path><CRLF>

สงจดหมายไปยงหนาจอ หรอไมก mailbox

SAML SAML<SP>FROM:<reverse-path><CRLF>

สงจดหมายไปยงหนาจอ และ mailbox

Page 21: SMTP

VRFY VRFY<SP><string><CRLF> ยนยน user name

EXPN EXPN<SP><string><CRLF> สงกลบรายการผทอยใน mailing list

HELP HELP[<SP><string>]<CRLF> สง symtem-specific documentation

TURN TURN<CRLF> สลบกนระหวาง sender และ receiver

หมายเหต <CRLF> หมายถง Carriage Return และ Line Feed<SP> หมายถง Spaceเครองหมายกามป '[ ]' และ ตวอกษรตวบาง หมายถง ตวเลอกซงจะมหรอไมมกได

SMTP replies การตอบรบจะเรมดวย ตวเลขรหส 3 ตว และอาจตามดวยขอมลเพมเตม โดยการกำาหนดรหสจะใชตวเลขในการแยกประเภทของการตอบรบ ดงน

Positive Completion reply หมายถง งานทไดขอมาซงสามารถทำาใหเสรจสมบรณ และพรอมทจะทำางานตอไป (รหสขนตนดวยตวเลข 2)

Positive Intermediate reply หมายถง การรบทราบคำาสง จะอยในระหวางการรบขอมล (รหสขนตนดวยตวเลข 3)

Transient Negative Completion reply หมายถง ไมสามารถทำาตามคำาสงทขอมาได แตอยางไรกตาม ปญหานสามารถแกไขโดยทำาการขอมาใหมอกครงได (รหสขนตนดวยตวเลข 4)

Permanent Negative Completion reply หมายถง คำาสงทสงไมสามารถทำาใหได

ตารางตอบรบ (SMTP replies)

รหส คำาอธบายPositive Completion Reply211 System status,or system help reply

Page 22: SMTP

ตอบสถานะของระบบ หรอ ตอบความชวยเหลอของระบบ

214Help messageขอความชวยเหลอ (วธทจะใช receiver หรอความหมายของคำาสงพเศษตางๆ โดยจะมประโยชน กบคน ในการทำางาน กบ SMTP command)

220 <domain> Service ready <domain> พรอมใหบรการ

221 <domain> Service closing transmission channel<domain> ปดบรการ

250 Requested mail action okay,completed สงจดหมายเรยบรอยแลว

251 User not local;will forward to <forward-path>user ไมไดอยภายใน แตจะสงตอไปใหท <forward-path>

Positive Intermediate Reply354 Start mail input;end with <CRLF>.<CRLF>

ใหเรมสงจดหมาย และจบดวย <CRLF>.<CRLF>Transient Negative Completion Reply

421<domain> Service not available,losing transmission<domain> ไมเปดใหบรการ หรอ ขาดการตดตอ (โดยจะตอบในลกษณะน กบทกคำาสง ถาการใหบรการรวาจะตองถกปดลง)

450 Requested mail action not taken: mailbox unavailableไมสามารถทำาตามทขอมาได เนองจาก mailbox ไมสามารถใหบรการได

451 Requested action aborted: local error in processingไมสามารถทำาตามทขอมาได เนองจาก มปญหาในการประมวลผลภายใน

452 Requested action not taken: insufficient system storageยกเลกทสงมา เนองจาก ไมมเนอทในระบบมากพอ

Permanent Negative Completion Reply500 Syntax error,command unrecognized

Syntax error หรอ ไมรจกคำาสง (โดยรวมทงทคำาสงยาวเกนไปดวย)

501 Syntax error in parameter or argumentsSyntax error เนองมาจาก parameter หรอ argument

502 Command not implementedไมมคำาสงน

503 Bad sequence of commandsลำาดบคำาสงผด

504 Command parameter not implemented parameter ของคำาสงไมม

550 Requested action not taken: mailbox unavailableไมสามารถทำาตามทขอมาได เนองจาก ไมสามารถเขาถง mailbox ได เชน

Page 23: SMTP

หา mailbox ไมเจอ

551 User not local;please try <forward-path>user ไมไดอยภายใน ใหทำาการลองสงไปท <forward-path> เอง

552Requested mail action aborted: exceeded storage allocationยกเลกทสงมา เนองจาก มการใชเนอทเกน quota

553 Requested action not taken: mailbox name not allowedไมสามารถทำาตามทขอมาได เนองจาก ไมไดรบอนญาตใช mailbox

554 Transaction failedเกดความลมเลวในการตดตอสอสาร

พนฐานการทำางานบน SMTP มอยดวยกน 3 ขนตอน ดวยกน โดยเรมตนดวย การเชอมตอ (connection setup) , การสงรบคำาสงและการตอบรบของ sender และ receiver (mail transfer) และตามดวยการปดการเชอมตอ (connection closing)

Connection Setup

SMTP sender จะเปนผททำาการเปดการเชอมตอ TCP กบ host ปลายทาง เมอมความตองการ จะสงจดหมายไปยง host นน โดยมลำาดบการทำางานดงน

1. sender เปดการเชอมตอดวย TCP กบ receiver 2. เมอทำาการเชอมตอเรยบรอยแลว receiver จะตอบรบมาในรแบบ

"220 Service Ready" 3. sender รายงานตวเองดวยคำาสง HELO 4. receiver ตอบรบ sender ดวย "250 OK"

ถาการบรการบนเครองปลายทางไมสามารถทำางานไดจะมการตอบรบ "421 Service Not Available" ในขนตอนลำาดบท 2 แลวจบการทำางาน

Mail Transferเมอทำาการเชอมตอในขนตอนแรกแลว SMTP sender จะสงจดหมายไปยง SMTP receiver โดยมลำาดบการทำางานดงน

1. สงคำาสง MAIL เพอระบผสง

Page 24: SMTP

2. สงคำาสง RCPT หนงครงหรอมากกวา เพราะวาจดหมาย 1 ฉบบ สามารถสงไดพรอมกน ไปยง ผรบหลายคน

3. สงคำาสง DATA และ สงขอมลในจดหมายไปให

MAIL command ให reverse-path เพอใชในการรายงานความผดพลาดตางๆ โดยถา receiver พรอมทจะรบขอความแลว จะสง "250 OK" มาให หรอไมกจะรายงาน ความลมเหลว ในการทำางาน กบคำาสงมาให ไดแก รหส 451,452,552 หรอความผดพลาดของคำาสง ดวยรหส 421,500,501

RCRT command ใชเพอระบผรบจดหมาย โดยถาตองการสงใหกบหลายคน กสามารถทำาได ดวยการใชคำาสงน กบผรบแตละคน และ receiver จะตอบรบทกครง โดยมความเปนไดดงน

receiver ยอมรบดวยการตอบรบรหส 250 แสดงวาสามารถสงจดหมายได

จดหมายตอง forward และ receiver จะ forward จดหมายไปใหผรบโดยอตโนมต (251)

จดหมายตอง forward แต receiver ไม forward จดหมายให ผสงตอง ทำาการสง จดหมายใหม ไปยง forward address (551)

ตจดหมาย (mailbox) ไมมอยจรงสำาหรบผรบในเครองปลายทางน (550)

ปฎเสธการทำางานเพราะเนองมาจากมความผดพลาดในการทำางาน (450,451,552,553) หรอคำาสงผด (421,500,501,503)

ประโยชนในการใชคำาสง RCPT แยกกน กคอ sender ไมตองสงขอความจนกวาจะมนใจวา receiver พรอมทจะรบขอความไปยงผรบอยางนอยหนงคน เพอลดการเสยเวลาในการสง ขอความภายในจดหมายทงหมด โดยไมมผรบเลยDATA command เปนการเรมตนในการสงขอความ โดยถา receiver ยงคงพรอม ทจะรบขอความ จะสง 354 กลบมา หรอไมก รายงานความลม

Page 25: SMTP

เหลวในการทำางานตามคำาสง (451,554) หรอรายงาน ความผดพลาดของคำาสง (421,500,501,503) ถามตอบรบ 354 SMTP sender จะดำาเนนกระบวนการสงขอมล ในรปของลำาดบตวอกษร ASCII ผานทางการเชอมตอ TCP โดยจะสนสดการสง ดวยบรรทดทมแตตวอกษร จด เพยงอยางเดยว หลงจากนน SMTP receiver จะทำาการสง "250 OK" กลบมารายงานถา ขอความทสงไป ไดรบเรยบรอยแลว หรอไมกรายงานความผดพลาดดวยรหส (451,452,552,554)

ตวอยางการสงคำาสงและการตอบรบระหวาง sender และ receiver ตาม RFC 821

Sender: MAIL FROM:<[email protected]>Receiver: 250 OK

Sender: RCRT TO:<[email protected]>Receiver: 250 OK

Sender: RCRT TO:<[email protected]>Receiver: 550 No such user here

Sender: RCRT TO:<[email protected]>Receiver: 250 OK

Sender: DATAReceiver: 354 Start mail input; end with

<CRLF>.<CRLF>Sender: Blah Blah Blash...Sender: ...etc. etc. etc.Sender: <CRLF>.<CRLF>Receiver: 250 OK

SMTP sender จะทำาการสงจดหมาย จาก [email protected] โดยจดหมายนจะสงไปยง 3 user ในเครองของ microsoft.com คอ billgate,surasit และ steve และ SMTP receiver ทำาการตรวจสอบแลว วามตจดหมาย (mailbox) ของ billgate และ steve แตไมมตจดหมาย ของ user

Page 26: SMTP

surasit เนองจากมผรบจดหมายนได ดงนน sender กดำาเนนการ สงขอความไปยง receiver

Connection ClosingSMTP sender จะปดการเชอมตอได 2 ขนตอนดวยกน

1. sender สงคำาสง QUIT และรอการตอบรบจาก receiver 2. ทำาการเรมปดการเชอตอ TCP โดยจะทำาหลงจาก receiver สงคำา

ตอบรบจากคำาสง QUIT ตามขอ 1 แลว

Summaryถ งแมว า SMTP จะเป น protocol ทไมสามารถรบประก นได ว า

จดหมายทสงออกไป จะไมหาย แตเรากยอมรบวาระบบ มความ reliable มากพอทจะทำางานได สวนในเรอง security นน กสามารถสง ในรปแบบของ PGP หรอ PEM เพอทำาการเขารหสขอมล ปองกน ขอมลของเราได ดงนนจงเปนระบบทใชงานอยในปจจบน และในอนาคตกคงเปนเชนน ถงจะมการเปลยนแปลง กคงเปนเรอง ชนดของขอมล และการเขารหสขอมลตางๆ