Upload
apisoneya
View
1.533
Download
6
Tags:
Embed Size (px)
Citation preview
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 ซงระบผรบและขอ
มลอนๆ สวนตว 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 ใหม เพอทำาการสงในภายหลง แตถาทำาการสงใหมหลายครงแลวยงไมสำาเรจ กจะยกเลกการสง และรายงานไปยงผสง
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 อยาง ดงน
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
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 ของผรบอนๆ
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 ความหมาย
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
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
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
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 ...ซงจะขนกบระบบททำาการรบทจะเลอกทำางานตามคำาสง เชน ตวหนา และตวเอยง ถาสามารถแสดงไดกจะทำาการแสดงออกมา สวนส ตวกระพรบ ขดเสนใต อาจไมสามารถทำาได
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 เทากน
กฎการแบงจดหมายออกเปนสวนๆ มดงน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. ตวจดหมายจะทำาการรวม ตามลำาดบ ใหเหมอนจดหมาย
ตนฉบบ
ตวอยางการสงจดหมายแบบแยกสวน
จดหมายสวนแรก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 ดงน
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"
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--
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 โดยเฉพาะตวอกษรทไมสามารถมองเหนไดเปนตวอกษรควบคมตางๆ โดยมกฎในการเขารหสดงน
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
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
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
แยกเปน 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
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
ตอบสถานะของระบบ หรอ ตอบความชวยเหลอของระบบ
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 ได เชน
หา 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 เพอระบผสง
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 กลบมา หรอไมก รายงานความลม
เหลวในการทำางานตามคำาสง (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
surasit เนองจากมผรบจดหมายนได ดงนน sender กดำาเนนการ สงขอความไปยง receiver
Connection ClosingSMTP sender จะปดการเชอมตอได 2 ขนตอนดวยกน
1. sender สงคำาสง QUIT และรอการตอบรบจาก receiver 2. ทำาการเรมปดการเชอตอ TCP โดยจะทำาหลงจาก receiver สงคำา
ตอบรบจากคำาสง QUIT ตามขอ 1 แลว
Summaryถ งแมว า SMTP จะเป น protocol ทไมสามารถรบประก นได ว า
จดหมายทสงออกไป จะไมหาย แตเรากยอมรบวาระบบ มความ reliable มากพอทจะทำางานได สวนในเรอง security นน กสามารถสง ในรปแบบของ PGP หรอ PEM เพอทำาการเขารหสขอมล ปองกน ขอมลของเราได ดงนนจงเปนระบบทใชงานอยในปจจบน และในอนาคตกคงเปนเชนน ถงจะมการเปลยนแปลง กคงเปนเรอง ชนดของขอมล และการเขารหสขอมลตางๆ