Tải bản đầy đủ (.docx) (81 trang)

Đồ án tìm hiểu các giao thức dùng cho email, triển khai một hệ thống mail cho doanh nghiệp với cơ chế bảo mật dùng exchange server 2010

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.85 MB, 81 trang )

Thực tập chuyên nghành MMT & TT
MỤC LỤC

LỜI MỞ ĐẦU
Ngày nay, cùng với sự bùng nổ và phát triển của công nghệ thông tin và
mạng Internet trên toàn thế giới việc trao đổi thông tin đã trở nên dễ dàng hơn. Một
trong những cách để trao đổi thông tin trên Internet không thể không nhắc tới vì
những tiện ích và lợi ích mà nó mang lại đó là thư điện tử hay còn gọi là E-mail
( Electronic mail). Thư điện tử (E-mail) là một hệ thống truyền nhận thư từ qua
Internet hay các mạng máy tính (Computer network). E-mail có những lợi ích đáng
kể so với cách viết thư truyền thống giấy và mực. Một thông điệp, một tin nhắn, lời
chúc mừng, hay văn bản, hay … có thể được gửi tại bất kì thời điểm nào, bất kì nơi
nào trên toàn thế giới một cách dễ dàng và nhanh chóng gần như là ngay lập tức.
Email chẳng những có thể truyền gửi được chữ, nó còn có thể truyền được các dạng
thông tin khác như hình ảnh, âm thanh, phim, và đặc biệt các phần mềm thư điện tử
kiểu mới còn có thể hiển thị các E-mail dạng sống động tương thích với kiểu tệp
HTML.
Đối với các doanh nghiệp, E-mail lại càng trở nên quan trọng hơn trong.
Những mẫu tin quảng cáo gửi tới nhiều khách hàng, các bản hợp đồng gửi tới
những đối tác trong nước hay ngoài nước, hay các thông báo cho các nhân viên
trong công ty… , với khả năng chuyển giao nhanh chóng gần như là ngay lập tức,
không khoảng cách, và chi phí rẻ thì E-mail là một sự lựa chọn không thể thiếu cho
các doanh nghiệp.
Do đó, trong đồ án môn thực tập chuyên nghành Mạng máy tính và truyền
thông : “Tìm hiểu các giao thức dùng cho email. Triển khai 1 hệ thống mail cho
doanh nghiệp với cơ chế bảo mật dùng Exchange server 2010.”. Chúng ta sẽ tìm
hiểu tới các vấn đề liên quan tới thư điện tử, các giao thức truyền nhận mail. Tìm
hiểu về những chức năng của Exchange server 2010 phần mềm máy chủ của hãng
Microsoft. Chúng ta sẽ xây dựng hệ thống E-mail cho doanh nghiệp thiết lập các cơ
chế bảo mật, khả năng chống spam mail, … băng phần mềm máy chủ Exchange
server 2010.


Trang 1


Thực tập chuyên nghành MMT & TT
Trong quá trình làm đồ án còn rất nhiều thiếu sót. Rất mong nhận được ý
kiến giúp đỡ của Thầy(Cô) để hoàn thành tốt đồ án chuyên nghành này. Tôi cũng
chân thành cảm ơn thầy Lê Quốc Tuấn đã hướng dẫn tôi làm đồ án này.

PHẦN I: CÁC GIAO THỨC TRUYỀN NHẬN
MAIL
Công việc phát triển các hệ thống Mail (Mail System) đòi hỏi hình thành các chuẩn
về Mail. Điều này giúp cho việc gởi nhận các thông điệp được đảm bảo , làm cho
những người ở các nơi khác nhau có thể trao đổi thông tin cho nhau.
Có 2 chuẩn về Mail quan trọng nhất và được sử dụng nhiều nhất từ trước đến
nay là X.400 và SMTP ( Simple Mail Transfer Protocol). SMTP thường đi kèm với
chuẩn POP3 và do hạn chế của SMTP mà ngày nay người ta dùng chuẩn mở rộng
của nó là ESMTP (Extended SMTP). Mục đích chính của X.400 là cho phép các
mail có thể được truyền nhận thông qua các loại mạng khác nhau bất chấp cấu hình
phần cứng, hệ điều hành mạng , giao thức truyền dẫn được dùng. Còn mục đích của
chuẩn SMTP miêu tả cách điều khiển các thông điệp trên mạng Internet. Điều quan
trọng của chuẩn SMTP là giả định máy nhận phải dùng giao thức SMTP gởi Mail
cho 1 Server luôn luôn hoạt động. Sau đó, người nhận sẽ đến lấy Mail của họ từ
Server khi nào họ muốn dùng giao thức POP (Post Office Protocol), ngày nay POP
được cải tiến thành POP3 (Post Officce Protocol vertion 3). Các giao thức Mail
thông dụng : chuẩn X.400, chuẩn IMAP, SMTP (ESMTP), POP3. Trong phần này
chúng ta sẽ làm rõ các giao thức truyền nhận mail này, cơ chế gửi và nhận Mail như
thế nào?
I. Giới thiệu tổng quan về E-mail
1. Khái niệm thư điện tử (E-mail)
E-mail hay thư điện tử là một phương tiện truyền đạt thông tin rất nhanh.

Một mẫu thông tin (thư từ) có thể được gửi đi ở dạng mã hoá hay dạng thông
thường và được chuyển qua các mạng máy tính đặc biệt là mạng Internet. Nó có thể
chuyển mẫu thông tin từ một máy nguồn tới một hay rất nhiều máy nhận trong cùng
lúc.

Trang 2


Thực tập chuyên nghành MMT & TT
Ngày nay, email không những có thể truyền gửi được các ký tự, mà còn có
thể truyền được các dạng thông tin khác như hình ảnh, âm thanh, phim và đặc biệt
các phần mềm thư điện tử kiểu mới còn có thể hiển thị các email dạng sống động
tương thích với kiểu tệp HTML.
2.Lợi ích của thư điện tử (E-mail) so với thư truyền thống
-

Thay vì viết thư bằng giấy mực và bút thì người gửi chỉ cần gõ chữ từ bàn phím

-

của máy tính và biết dùng một phần mềm thư điện tử (email program).
Lá thư được gửi trên hệ thống bưu chính là vật liệu không cần máy nhận hay
máy gửi. Trong khi đó, nếu gửi thư điện tử, chỉ có các tín hiệu điện mã hoá nội
dung bức thư điện tử được truyền đi đến máy nhận. Do đó, chỉ có nội dung hay
cách trình bày lá thư điện tử là được bảo toàn. Trong khi đó, dùng đường bưu
điện người ta có thể gửi đi các vật liệu hàm chứa thêm nội dung hay ý nghĩa

-

khác. Điều này có thể rất quan trọng đối với nhiều người.

Vận tốc truyền thư điện tử chỉ vài giây đến vài phút và chi phí rất nhỏ không

-

đáng kể so với gửi qua đường bưu điện
Dùng thư điện tử thì bất kỳ lúc nào cũng có thể mở phần mềm thư điện tử ra đọc
nên tiện lợi hơn là việc phải bỏ thư ở các thùng thư. Đồng thời, vì mỗi người
dùng thư đều phải nhập mật khẩu vào máy nên thư điện tử sẽ khó bị người ở
chung đọc lén so với thư gửi bưu điện. Nhưng ngược lại, các tay tin tặc xa lạ có
thể xâm nhập vào hệ thống thư điện tử của cá nhân nếu như các mật mã hay các

-

hệ thống an toàn phần mềm bị bẻ gãy.
Khối lượng gửi và nhận thư điện tử có thể nhiều hơn thư bưu điện rất nhiều lần.
Thư điện tử không thể bị hư hai vật lý. Thư điện tử có thể bị nhiễm virus, các mã

-

độc hại
Khả năng chuyển tiếp thư nhanh chóng
Hộp thư là nơi cất giữ các thư từ với địa chỉ xác định. Tương tự, trong hệ thống
thư điện tử, thì hộp thư này tương đương với phần dữ liệu chứa nội dung
các email cộng vói điạ chỉ của người chủ thư điện tử. Điểm khác biệt ở đây là

-

hộp thư điện tử sẽ có nhiều chức năng hơn là việc xoá bỏ các thư cũ.
Mỗi người có thể có một hay nhiều địa chỉ email (và phải được đăng ký qua một
hệ thống nào đó). Mỗi hộp thư sẽ có một địa chỉ phân biệt không bao giờ trùng

với địa chỉ email khác.

Trang 3


Thực tập chuyên nghành MMT & TT
3.Các nhân tố cơ bản của một hệ thống E-mail
Thông thường một hệ thống mail bao gồm 3 thành phần cơ bản:MUA, MTA,
MDA.

Hình 1: Các nhân tố cơ bản của hệ thống mail
 Mail User Agent (MUA)
MUA là chương trình quản lý thư đầu cuối cho phép người dùng có thể đọc soạn
thảo và gửi mail.
MUA có thể lấy thư từ mail server về để xử lý(sử dụng giao thức POP)hoặc
chuyển thư cho một MUA khác thông qua MTA(sử dụng giao thức SMTP).
MUA có thể xử lý trực tiếp thư ngay trên mail server (sử dụng giao thức IMAP).
Chức năng chính của MUA là cung cấp giao diện cho người dùng tương tác với
thư,gồm có:






Soạn thảo, gửi thư.
Hiển thị thư gồm cả các tập tin đính kèm.
Gửi trả (Relay) hay chuyển tiếp thư (Create New).
Đính kèm các tập tin vào các thư gửi đi (Text, HTML, MIME…).
Thay đổi các tham số (ví dụ như server được sử dụng,kiểu hiển thị


thư,kiểu mã hóa thư).
 Thao tác trên các thư mục thư địa phương và ở xa.
 Cung cấp số địa chỉ thư (danh bạ địa chỉ).
 Lọc thư.
 Mail Tranfer Agent (MTA)

Trang 4


Thực tập chuyên nghành MMT & TT
Khi các thư được gửi đến từ MUA, MTA có nhiệm vụ nhận diện người gửi và người
nhận từ thông tin đóng gói trong phần header và điền các thông tin cần thiết vào
header.Sau đó MTA sẽ chuyển thư cho MDA để chuyển đến hộp thư ngay tại
MTA,hoặc chuyển cho Remote MTA.


Việc chuyển giao các thư được các MTA quyết định dựa trên địa chỉ người
nhận.



Nếu nó trùng với hộp thư do MTA (Local-MTA) quản lý thì thư được chuyển
cho MDA để chuyển vào hộp thư.



Nếu địa chỉ thư bị lỗi, thư có thể được chuyển lại người gửi.




Nếu không bị lỗi nhưng không phải là thư của MTA, tên miền được sử dụng
để xác định xem Remote MTA nào sẽ nhận thư theo các bản ghi MX trên hệ
thống tên miền.



Khi các MX xác định được Remote MTA quản lý tên miền đó thì không có
nghĩa là người nhận thuộc Remote MTA mà Remote MTA có thể đơn giản
chỉ trung chuyển (thư) cho một MTA khác,có thể định tuyến thư cho địa chỉ
khác như vai trò của một dịch vụ domain ảo (domain gateway) hoặc người
nhận không tồn tại và Remote MTA sẽ gửi lại cho MUA một lời cảnh
báo(warning).

Microsoft Exchange Server là một MTA dùng giao thức SMTP để đóng vai trò là
một SMTP Server làm nhiệm vụ phân phối thư từ vùng này sang vùng khác.
 Mail Delivery Agent (MDA)
Là một chương trình được MTA sử dụng để chuyển thư vào hộp thư của người
dùng.Ngoài ra MDA còn có khả năng lọc thư, định hướng thư…MTA có thể tích
hợp một hay nhiều MDA.

4.Cơ chế hoạt động của thư điện tử
E-mail là dịch vụ rất phổ biến và thông dụng trong mạng Internet/Intranet và
hầu như không thể thiếu được trong Internet/Intranet hiện nay. Tuy nhiên không
phải là dịch vụ “từ đầu - đến cuối” (end to end). Nghĩa là dịch vụ này không đòi hỏi
hai máy tính gởi và nhận thư phải nối trực tiếp với nhau để thực hiện việc chuyển
thư. Nó là dịch vụ kiểu lưu và chuyển tiếp (store-and-forward) thư được chuyển từ
máy này sang máy khác cho tới khi máy đích nhận được. Người nhận cũng chỉ thực
Trang 5



Thực tập chuyên nghành MMT & TT
hiện một số thao tác đơn giản để lấy thư, đọc thư và nếu cần thì cho in ra. Cách liên
lạc này thuận tiện hơn nhiều so với gởi thư thông thường qua bức điện hoặc Fax, lại
rẻ và nhanh hơn. Cách thực hiện việc chuyển thư không cần phải kết nối trực tiếp
với nhau để chuyển thư, thư có thể được chuyển từ máy này đến máy khác cho tới
máy đích.. Giao thức truyền thống sử dụng cho hệ thống thư điện tử của Internet là
SMTP(Simple Mail Transfer Protocol).

Hình 2: Cơ chế hoạt động của thư điện tử(E-mail)
Giao thức liên lạc : mặc dù gởi thư trên Internet sử dụng nhiều giao thức
khác nhau, nhưng giao thức SMTP được dùng trong việc vận chuyển mail giữa các
trạm. Giao thức này đặc tả trong hai chuẩn là trong RFC 822 (định nghĩa cấu trúc
của thư ) và RFC 821(đặc tả giao thức trao đổi thư giữa hai mạng) ngoài ra trong
RFC2821 sẽ nói rõ các qui luật và cách hoạt động của giao thức. Là giao thức cơ
bản để chuyển thư giữa các máy Client, SMTP có một bộ gởi thư, một bộ nhận thư,
và một tập hợp lệnh dùng để gởi thư từ người gởi đến người nhận. Giao thức SMTP
hoạt động theo mô hình khách/chủ (Client/ Server) với một tập lệnh đơn giản, trình
khách (SMTP mail Client) sẽ bắt tay với trình chủ (SMTP mail Server) gởi các yêu
cầu tiếp nhận mail. Trình chủ đọc nội dung mail do trình khách gởi đến và lưu vào
một thư mục nhất định tương ứng với từng user trên máy chủ.
Cứ mỗi trạm e-mail thường bao gồm ít nhất là hai dịch vụ: POP3 (Post
Office Protocol Version 3) có nhiệm vụ nhận/trả thư từ/tới e-mail client và dịch vụ
SMTP (Simple E-mail Transfer Protocol) có nhiệm vụ nhận/phân phối thư từ/đến
POP3 đồng thời trao đổi thư với các trạm e-mail trung gian. POP3 được tìm thấy
trong RFC 1725 hay RFC 1939, là một giao thức đơn giản nhất, cho phép lấy mail
về từ trình chủ POP3 Server. Ngoài tra trạm e-mail này có thể bổ sung thêm một số
dịch vụ khác như ESMTP, IMAP và dịch vụ MX Record của dịch vụ DNS hay dịch
vụ chuyển tiếp mail(Forward or relay). IMAP(INTERNET MESSAGE ACCESS
Trang 6



Thực tập chuyên nghành MMT & TT
PROTOCOL - VERSION 4rev1) thực chất là giao thức mới bổ Sung và mở rông
hơn của giao thức POP3 còn thiếu. IMAP cho phép đọc, xoá, gởi, duy chuyển mail
ngay trên máy chủ. Điều này rất thuận tiện cho người nhận mail phải thường xuyên
di chuyển mail từ máy này sang máy khác trong quá trình làm việc. Tuy nhiên chi
phí để cài đặt một trạm e-mail có giao thức IMAP là rất cao so với giao thức POP3.
Mỗi người dùng (client) đều phải kết nối với một E-mail Server gần nhất
(đóng vai trò bưu cục địa phương) phải có một tên (e-mail account) trên một trạm email và sử dụng chương trình e-mail client (ví dụ như Eudora, Netscape...). Sau khi
soạn thảo xong thư và đề rõ địa chỉ đích (người nhận) rồi gửi thư tới E-mail-Server
của mình. E-mail Server này có nhiệm vụ sẽ tự động kiểm tra và định hướng
chuyển thư tới đích hoặc chuyển thư tới một E-mail-Server trung gian khác. Thư
chuyển tới E-mail-Server của người nhận và được lưu ở đó. Đến khi người nhận
thiết lập tới một cuộc kết nối tới E-mai-Server đó thì thư sẽ chuyển về máy người
nhận, nếu không thì thư vẫn tiếp tục giữ lại ở server đảm bảo không bị mất.
Phần khác của ứng dụng thư điện tử là cho phép người sử dụng đính kèm
(attachments) theo thư một tập tin bất kỳ (có thể dạng nhị phân chẳng hạn chương
trình chạy).
Như vậy để gởi/nhận thư người sử dụng chỉ cần quan tâm tới cách sử dụng
chương trình e-mail client. Hiện nay có nhiều chương trình E-mail client như
Microsoft Outlook Express, Eudora Pro, Peagasus mail, ....và một dịch vụ e-mail
client rất phổ biến bây giờ là Webmail.
5.Kiến trúc của thư điện tử
Về cơ bản, một bức Mail bao gồm 3 phần chính:
• Phần phong bì (Envelope): Mô tả thông tin về người gởi và người nhận.
Phần này do các MTA tạo ra và sử dụng, nó chứa các thông tin để chuyển nhận
email như địa chỉ của nơi nhận, địa chỉ của nơi gửi. Hay nói cách khác, giao thức
SMTP sẽ quy định thông tin của phong bì, các hệ thống Email cần những thông tin
này để chuyển dữ liệu từ một máy tính này sang một máy tính khác.

• Phần tiêu đề (header): chứa đựng các thông tin về người gởi, người nhận,
chủ đề bức Mail, địa chỉ hồi âm .v.v.. Các thông tin này, một số được người sử dụng

Trang 7


Thực tập chuyên nghành MMT & TT
cung cấp khi gởi Mail, một số khác được chương trình Mail thêm vào, và số còn lại
do Hệ thống điền thêm.
-

Phần này cung cấp những thông tin tổng quát về Email như người nhận,

-

người gửi, ngày giờ nhận...
Cấu tạo gồm nhiều trường (field) cấu trúc mỗi trường là một dòng văn

-

bản ASCII chuẩn 7 bit như sau:
<tên trường >: <nội dung của trường>
Sau đây là một số trường thông dụng và ý nghĩa của nó :

Date
From
To
Cc
Bcc


Chỉ ngày giờ nhận mail
chỉ người gởi
chỉ người nhận
chỉ người những nhận bản copy của mail
chỉ ra những người nhận bản copy của bức mail, nhưng từng người
không biết những người nào sẽ nhận bức thư này
Returnchứa các thông tin để người nhận có thể trả lời lại (thường nó chính là
path
địa chỉ người gởi)
Subject
chủ đề của nội dung Email
Các trường trên là các trường chuẩn do giao thức SMTP quy định, ngoài ra trong
phần header cũng có thể có thêm một số trường khác do chương trình Email tạo ra
nhằm quản lý các email mà chúng tạo. Các trường này được bắt đầu bằng ký tự Xvà thông tin theo sau là cũng giống như ta thấy trên một trường chuẩn.
• Phần nội dung (body): chứa đựng nội dung của bức Mail, là nội dung được
tạo ra bởi trình soạn thảo Editor của chương trình Mail. Để phân biệt phần tiêu đề
và phần nội dung của bức Mail, người ta qui ước đặt ranh giới là một dòng trắng
(chuỗi ký tự "\r\n"). Kết thúc của phần nội dung là chuỗi ký tự kết thúc Mail:
"\r\n.\r\n". Như vậy nội dung bức Mail nằm trong khoảng giữa dòng trắng đầu tiên
và ký tự kết thúc Mail, và trong phần nội dung của bức Mail không được phép tồn
tại chuỗi ký tự kết thúc Mail. Mặt khác do môi trường truyền thông là mạng Internet
nên các ký tự cấu thành phần body của bức Mail cũng phải là các ký tự ASCII
chuẩn.
6.Những chức năng cơ bản của hệ thống thư điện tử
Các hệ thống thư điện tử thường bao gồm hai hệ thống con: các tác nhân
người sử dụng (the user agents - gọi tắt là UA), nó cho phép chúng ta đọc và gửi
thư, và các tác nhân truyền thông điệp (the message transfer agents - gọi tắt là
MTA), nó làm nhiệm vụ chuyển các thông điệp từ nguồn đến đích. Các UAs là các
Trang 8



Thực tập chuyên nghành MMT & TT
chương trình cục bộ hỗ trợ dựa trên điều khiển bằng lệnh, trình đơn menu hay dùng
phương pháp đồ hoạ để tương tác với hệ thống thư điện tử. Các MTAs là các trình
tiện ích hoạt động ở chế độ nền (background) thực hiện các nhiệm vụ cần thiết như
tiếp nhận thư điện tử và chuyển thư qua các hệ thống. Đặc biệt, các hệ thống thư
điện tử hỗ trợ năm chức năng cơ bản, được mô tả dưới đây:
- Composition: Xử lý việc tạo các thông điệp và trả lời. Cho phép bất cứ
trình soạn thảo nào có thể được sử dụng cho phần thân của thông điệp, các hệ thống
có thể tự nó đảm trách việc đánh địa chỉ và chỉ số các trường tiêu đề (header fields)
được kèm theo cùng với mỗi thông điệp. Ví dụ như, khi trả lời một thông điệp, hệ
thống thư điện tử có thể tách địa chỉ của người gửi từ các thư được gửi đến và tự
động chèn nó vào các trường thích hợp trong phần hồi âm (reply).
- Transfer: Làm nhiệm vụ chuyển các thông điệp từ người gửi đến nơi người
nhận. Trong phần này, việc chuyển các thông điệp yêu cầu phải thiết lập một kết nối
đến đích (người nhận) hay một số thao tác của thiết bị như xuất thông điệp và kết
thúc việc kết nối. Hệ thống thư điện tử làm việc này một cách tự động mà không
cần có một sự can thiệp nào của người sử dụng.
- Reporting: Buộc phải thực hiện để báo cho người gửi những gì xảy ra đối
với thông điệp vừa gửi là ở tình huống đã gửi đến đích chưa? hoặc việc gửi đã bị
huỷ bỏ? hoặc thư đã bị lạc?.
- Displaying: Những thông điệp gửi đến được yêu cầu làm sao để mọi người
có thể đọc được thư của họ. Đôi khi người ta yêu cầu quá trình chuyển đổi hay một
trình hiển thị đặc biệt để hỗ trợ, ví dụ như, nếu thông điệp có dạng một tệp
PostScript hay tiếng nói được số hoá kèm theo trong thông điệp gửi đến.
- Disposition: Là bước cuối cùng liên quan đến những gì người nhận thực
hiện đối với thông điệp sau khi đã nhận nó. Những khả năng có thể là ném nó đi
trước khi đọc, ném nó đi sau khi đọc, lưu nó, v ..v. Nó cũng sẽ có thể thu nhận để
đọc lại với các thông điệp đã được lưu lại, chuyển tiếp chúng hoặc xử lý chúng
bằng những phương pháp khác nhau khi được yêu cầu của người sử dụng.

Thêm vào đó các dịch vụ này, hầu hết các hệ thống thư điện tử cung cấp
nhiều đặc tính nâng cao khác nhau. Một số đặc tính tiêu biểu như, khi người ta
muốn chuyển thư hay khi họ nghĩ xa hơn về các chi tiết về thời gian, có lẽ họ muốn
Trang 9


Thực tập chuyên nghành MMT & TT
thư của họ được chuyển tiếp, chính vì thế mà hệ thống thực hiện điều này một cách
tự động.
Hầu hết các hệ thống cho phép người sử dụng tạo các hộp thư (mailboxes) để
lưu trữ các thư chuyển đến (incoming email). Các lệnh được người ta yêu cầu tạo và
huỷ bỏ các hộp thư, kiểm tra các nội dung hộp thư, chèn và xoá các thông điệp khỏi
hộp thư, …
II. Các giao thức truyền nhận E-mail
1.SMTP (Simple Mail Tranfer Protocol)
1.1.Giới thiệu
Mục đích của giao thức SMTP là truyền mail một cách tin cậy và hiệu quả.
Giao thức SMTP không phụ thuộc vào bất kỳ hệ thống đặc biệt nào và nó chỉ yêu
cầu trật tự của dữ liệu truyền trên kênh truyền đảm bảo tính tin cậy.
Một đặc trưng quan trọng của SMTP là khả năng chia ca Mail qua môi
trường dịch vụ giao chuyển, một dịch vụ giao chuyển cung cấp một môi trường
truyền thông liên quá trình (Interprocess Communication Environment –IPCE ).
Một môi trường truyền thông liên quá trình có thể bao gồm một Network, vài
Network, hay một tập hợp con của Network. Điều đó quan trọng cho việc thực hiện
hệ thống giao chuyển (hay các IPCE) one-to-one với Network, một quá trình có thể
giao tiếp với một quá trình khác thông qua việc nhận biết IPCE. Mail là ứng dụng
hay là cách dùng của giao tiếp liên quá trình, Mail có thể giao tiếp giữa các quá
trình trong những IPCE khác bằng cách chia ca thông qua một quá trình được kết
nối đến hai (hay nhiều ) IPCE. Chi tiết hơn Mail có thể chia ca giữa những Host
trên hệ thống giao chuyển khác nhau bằng một Host trên cả hai hệ thống chuyển

giao
1.2. Mô hình SMTP
SMTP được thiết kế dựa trên mô hình giao tiếp sau: như kết quả của một yêu
cầu Mail của user . Sender- SMTP thiết lập một kênh hai đường vận chuyển đến
một receiver- SMTP . Receiver- SMTP có thể là đích đến cuối cùng hay một trung
gian. Những lệnh SMTP được sinh ra bởi Sender-SMTP gửi đến Receiver- SMTP.
Những reply SMTP được gửi từ Receiver- SMTP đến Sender- SMTP trong sự đáp
ứng cho những lệnh đó.
Trang 10


Thực tập chuyên nghành MMT & TT
Khi một kênh giao chuyển được thiết lập sender-SMTP gửi đi 1 lệnh Mail
biểu thị cho Sender của mail đó. Nếu Receiver-SMTP có thể chấp nhận mail, nó trả
lời với một OK reply. Sau đó Sender-SMTP gửi một lệnh RCPT nhận diện Receiver
mail nếu Receiver-SMTP có thể chấp nhận mail nó trả lời với 1 OK reply nếu
không nó sẽ lời với 1 reply bác bỏ receiver đó (nhưng không phải toàn bộ sự giao
dịch đó). Sender- SMTP và Receiver- SMTP có thể điều đình với vài recipient, khi
những recipient đã được dàn xếp Sender-SMTP gửi mail data kết thúc với một
chuỗi đặc biệt nếu receiver xử lý mail data thành công nó trả lời với 1 OK reply.
Cuộc hội thoại một cách chủ ý lock –step (one-at-a-time)
User

Sender SMTP
Receiver SMTP
SMTP Commands / Replies
and Mail

File System


File System

SMTP cung cấp những
cơ chế giao chuyển Mail
một- SMTP
cách trực tiếp từ Host của
Receiver
Sender - SMTP
User gửi đến host của
nhận
haisửhost
kết nối
đến cùng dịch vụ giao
Hìnhuser
3: Mô
hìnhkhi
tổngcả
quát
dụngđược
giao thức
SMTP
chuyển hay qua nhiều SMTP-Sever tiếp vận khi host xuất phát hay đích đến không
được kết nối đến cùng dịch vụ chuyển giao. Để có thể cung cấp khả năng tiếp vận
SMTP-Sever phải được cung cấp tên của host đến cùng chẳng hạn như hạn của
Mailhost đến .
Đối số của lệnh mail là 1 reverse-path nó đặc tả mail đó từ đâu đến; đối số
cho RCPT là 1 Forward-path nó đặc tả mail đó đi đến đâu. Forward-path là một lộ
trình nguồn, reverse-path là một lộ trình trở về (nó có thể được dùng để trả về một
message cho sender- khi xảy ra lỗi với 1 message được tiếp vận).
Khi cùng một message được gửi cho nhiều recipient SMTP khuyến khích

chuyển giao chỉ một bản sao của data cho tất cả các Receiver ở cùng một host đích.
Những command và reply mail có những cú pháp khắc khe. Những reply cũng
có một mã số. Trong những thí dụ theo sau sẽ xuất hiện những lệnh (commands) và
những trả lời (replies) , một danh sách các lệnh và reply hoàn chỉnh trong phần 4.
Các command và reply không phân biệt kiểu chữ hoa hay thường. Lưu ý, điều
này không đúng với tên của User mailbox. Cho một số host tên của user có phân
biệt kiểu chữ, SMTP phải thi hành đầy đủ việc nhận kiểu chữ và giữ gìn kiểu chữ
Trang 11


Thực tập chuyên nghành MMT & TT
của những user name như chúng đã xuất hiện trong những đối số của mailbox. Host
names không phân biệt kiểu chữ.
Các command và reply là những ký tự được tạo ra từ tập ký tự ASCII{1}, khi
dịch vụ vận chuyển cung cấp một kênh chuyển giao 8 bit (octet). Mỗi một ký tự 7
bit được truyền đúng bằng cách chuyển nó về hệ 8 (octet) với bit có thứ tự cao nhất
bị xóa về 0.
1.3. Thủ tục SMTP
1.3.1 Mail
Có 3 bước cho sự giao dịch SMTP mail. Giao dịch được bắt đầu với yêu cầu
Mail mang sự nhận diện sender, tiếp theo sau là một chuỗi của một hay nhiều lệnh
RCPT trao những thông tin của receiver, sau đó một lệnh DATA cho mail data.Và
cuối cùng là phần chỉ định kết thúc mail data xác nhận giao dịch đó.
 Bước đầu tiên trong thủ tục là lệnh MAIL...<reverse-path> chứa hộp
thư(mailbox) nguồn
 MAIL <SP> FROM : <reverse-path> <CRLF>
Lệnh này báo cho receiver biết một giao dịch mail mới sẽ bắt đầu và để reset tất cả
các bảng trạng thái và các buffer của nó bao gồm tất cả recipient hay mail data. Nó
phát ra reverse-path có thể được dùng để báo lỗi. Nếu được chấp nhận receiverSMTP trả về một reply 250 OK
<Reverse-path> có thể chứa nhiều hơn một mailbox.<Reverse-path> là một lộ

trình nguồn trở về liệt kê các host và mailbox nguồn. Host đầu tiên trong reversepath sẽ là host gữi lệnh này.
 Bước thứ hai trong thử tục này là lệnh RCPT
RCPT <SP> To: <forward-path> <CRLF>
Lệnh này phát đi một forward-path nhận diện receipient. Nếu được chấp
nhận receiver-SMTP trả về một reply 250 OK. Và lưu lại forward-path. Nếu
receipient không nhận biết thì receiver trả về reply 550 Failure.
Forward-path có thể chứa nhiều hơn một mailbox. Forward-path là lộ
trình nguồn liệt kê các host và mailbox đích. Host đầu tiên trong <forwordpath> sẽ là host nhận lệnh này.
 Bước thứ ba trong thủ tục là lệnh DATA:
DATA<CRLF>
Nếu chấp nhận receiver-SMTP trả về một reply 354 và coi tất cả các dòng
Trang 12


Thực tập chuyên nghành MMT & TT
nối tiếp đó là message text. Khi văn bản cuối cùng được nhận và lưu trữ
receiver-SMTP gửi một reply 250 OK.
Kể từ mail data được gửi trên kênh chuyển giao, điểm kết thúc của mail data
phải được chỉ định để hội thoại command và reply có thể bắt đầu trở lại. SMTP chỉ
định kết thúc của mail data bằng cách gửi một dòng chứa chỉ một dấu chấm.
Chú ý rằng mail data bao gồm những mục (item) memo header chẳng hạn như
Subject, To, Cc, From.
Phần chỉ định kết thúc của mail data cũng xác nhận sự giao dịch mail và báo
cho receiver-SMTP biết để xử lý việc lưu trữ recipient và mail data ngay lúc đó.
Nếu được chấp nhận receiver-SMTP trả về một reply 250 OK. Lệnh DATA sẽ chỉ
fail nếu giao dịch mail không hoàn thành (ví dụ không có receiver) hoặc nếu tài
nguyên không có hiệu lực.
Thủ tục trên là một ví dụ của một giao dịch mail. Những lệnh này chỉ được
dùng trong những trật tự được trình bày ở trên. Ví dụ :
1.3.2 Forwarding

Có một số trường hợp thông tin của đích đến trong <forward-path> bị sai nhưng
receiver-SMTP biết đích đến đúng. Trong trường hợp như vậy một trong những
reply sau sẽ được dùng để cho phép sender tiếp xúc đích đến đúng :


251 User not local ; will forward to <forward-path>
Reply này chỉ cho receiver-SMTP biết mailbox của user đó nằm trên
một host khác và chỉ định forward-path đúng để sau đó sử dụng. Lưu ý một
trong hai host hay user hay cả hai có thể khác nhau . Receiver chịu trách
nhiệm cho việc phân phối những message.



551

User

not

local

;

please

try

<forward-path>

Reply này chỉ cho receiver-SMTP biết mailbox của user nằm trên một

host khác và chỉ định forward-path đúng để sử dụng . Lưu ý host hoặc là user
hay cả hai có thể khác nhau . Receiver từ chối chấp nhận mail cho user A.
Sender phải định hướng lại cho mail đó tuỳ theo những thông tin được cung
cấp hoặc là trả trả lời error cho user khởi đầu
1.3.3.Kiểm tra và mở rộng( Verifying and Expanding)

Trang 13


Thực tập chuyên nghành MMT & TT
SMTP cung cấp thêm những điểm đặc trưng, các lệnh để kiểm tra một user
name hay mở rộng một danh sách địa chỉ được làm với lệnh VRFY và EXPN nó
dùng đối số kiểu chuổi ký tự. Với lệnh VRFY chuỗi đó là một user name, và câu trả
lời(response) có thể bao gồm full name của user đó và phải bao gồm mailbox của
user đó. Với lệnh EXPN chuổi đó định danh một danh sách địa chỉ và câu trả lời có
nhiều dòng có thể chứa full name của các user đó và phải chứa những mailbox trên
danh sách địa chỉ (mailing list).
Nếu một host được bổ sung lệnh VRFY hay EXPN thì ít nhất những mailbox
cục bộ phải được thừa nhận như là“user names”. Nếu một host chọn lựa để thừa
nhận những chuổi khác như “user names” thì điều đó được cho phép.
Trong một số host sự phân biệt giữa một mailing list và một bí danh cho
single mailbox hơi mơ hồ. Từ đó một cấu trúc dữ liệu phổ biến có thể giữ cả hai
kiểu phần tử và nó có thể dùng các mailing list của một mailbox. Nếu một yêu cầu
được tạo ra để kiểm tra một mailing list một câu trả lời khẳng định có thể được cho
nếu trên message nhận được đã được định địa chỉ nó sẽ được phân phát cho tất cả
mọi người trong danh sách đó. Mặt khác một lỗi sẽ được báo cáo (e.g., "550 That is
a mailing list, not a user"). Nếu một yêu cầu được tạo ra để mở rộng một user name
một câu trả lời khẳng định có thể được cấu hình bằng cách trả về một danh sách
chứa một tên hay một lỗi có thể được báo cáo (e.g., "550 That is a user name, not a
mailing list").

Trong trường hợp một reply nhiều dòng (thường cho EXPN) là một mailbox
được đặc tả trên từng dòng của reply đó một cách chính xác. Trong trường hợp này
một yêu cầu nhập nhằng khó hiểu như : “VRFY Smith” có hai câu trả lời của Smith
phải là "553 User ambiguous".
Những đối số chuổi ký tự của lệnh VRFY và EXPN không thể vượt qua giới
hạn được quyền trên sự bổ sung đa dạng của user name và khái niệm mailbox. Trên
một số hệ thống nó có thể dành riêng cho đối số của lệnh EXPN để là một file name
cho một file chứa một mailing list nhưng lại có một qui ước đa dạng của việc đặc
tên file trong internet.
1.3.4 Sending and Mailing

Trang 14


Thực tập chuyên nghành MMT & TT
Mục đích chính của SMTP là phân phối những message đến những mailbox của
user . Một dịch vụ rất phổ biến được cung cấp bởi một số host là để phân phối
những message đến những terminal của user( cung cấp cho user làm việc trên host
đó) . Sự phân phát đến những mail box của user được gọi là “mailing”, sự phân phát
đến những user terminal được gọi là “sending”. Bởi vì một số host có sự thực thi
của sending gần giống với sự thực thi của mailing chúng là hai chức năng được liên
kết với SMTP. Mặc dù lệnh sending không bao gồm trong yêu cầu thực thi tối thiểu.
Những user có khả năng điều khiển việc ghi message lên những terminal của họ.
Hầu hết các host cho phép chấp nhận hay từ chối những message.
Ba lệnh sau được định nghĩa để cung cấp những option cho sending. Chúng
được dùng trong giao dịch mail thay cho lệnh MAIL và cung cấp cho receiverSMTP những ngữ nghĩa giao dịch đặc biệt
SEND <SP> FROM:<reverse-path> <CRLF>
Lệnh SEND đòi hỏi mail data được gửi đến user terminal. Nếu user đó
không hoạt động (hay không chấp nhận những terminal message) trên host đó một
reply 450 có thể được trả cho một lệnh RCPT. Giao chuyển mail thành công khi

message đó được phân phát đến terminal.
SOML <SP> FROM:<reverse-path> <CRLF>
Lệnh này là SEND Or MAIL đòi hỏi mail data được phân phát đến terminal
của user nếu user đó đang hoạt động (và chấp nhận những message terminal) trên
host đó. Nếu user không hoạt động (haykhông chấp nhận terminal message) thì mail
data được đưa vào trong mailbox của user . Giao chuyển mail thành công khi
message đó được phân phát đến terminal hay mailbox.
SAML <SP> FROM:<reverse-path> <CRLF>
Lệnh này là SEND And MAIL đòi hỏi mail data được phân phát đến
terminal của user nếu user đó đang hoạt động (và chấp nhận những message
terminal) trên host đó. Trong những tất cả trường hợp mail data được đưa vào trong
mailbox của user. Giao dịch mail thành công khi message đó được phân phát đến
mailbox.
Những mã reply tương tự được dùng cho lệnh MAIL cũng được dùng cho
những lệnh này.
Trang 15


Thực tập chuyên nghành MMT & TT
1.3.5 Opening and Closing
Ngay thời điểm mà kênh giao chuyển được open có một sự trao đổi để đảm bảo
những host đó đang giao tiếp với những host khác.
1.3.6 Chia ca (Relaying)
Forward-path có thể là một lộ trình nguồn của form “ @ONE ,
@TWO:JOE@THREE” với ONE ,TWO, THREE là các host.
Form này được dùng để nhấn mạnh sự phân biệt giữa một address và một
route. Mailbox là một address tuyệt đối, và route là thông tin về việc lấy chúng như
thế nào .
Những thành phần của forward-path được chuyển đến reverse-path khi
message đó được chia ca từ một server SMTP đến một server-SMTP khác. Reversepath là một lộ trình nguồn trở về (khác với một lộ nguồn là từ vị trí hiện hành của

message đến điểm khởi đầu của message đó). Khi một server SMTP xóa phần nhận
dạng của nó trong forward-path và chèn phần nhận dạng của nó vào trong reversepath, nó phải dùng cái tên mà nó được biết tới trong môi trường mà nó sẽ gửi vào,
không phải là môi trường mà mail từ đó đến, trong trường hợp server-SMTP được
biết đến với những tên khác nhau trong những môi trường khác nhau.
Nếu một message đến một SMTP thành phần đầu tiên của forward-path
không phải là phần nhận dạng của SMTP đó, thành phần này không bị xoá trong
forward-path và được dùng để xác định SMTP kế để gửi message đến. Trong
trường hợp này SMTP thêm phần nhận dạng của nó vào reverse-path..
Dùng lộ trình nguồn receiver-SMTP nhận mail để chia ca đến một serverSMTP khác. Receiver-SMTP đó có thể chấp nhận hoặc bác bỏ công việc chia ca
cho mail, như cách nó chấp nhận hay bác bỏ mail cho một user cục bộ. ReceiverSMTP thay đổi những đối số lệnh bằng cách chuyển phần nhận dạng của nó từ
forward-path vào chổ mở đầu của reverse-path. Sau đó receiver-SMTP trở thành
sender-SMTP, thiết lập một kênh truyền đến SMTP kế trong forward-path,và gửi
mail đó cho nó. Host đầu tiên trong reverse-path sẽ là host gửi các lệnh SMTP và
host đầu tiên trong forward-path sẽ là host các nhận các lệnh SMTP .
Nếu một server-SMTP chấp nhận công việc chia ca mail và sau đó thấy
forward-path không đúng hay mail đó không thể được phân phát được vì bất cứ lí
Trang 16


Thực tập chuyên nghành MMT & TT
do nào, thì nó phải xây dựng một message thông báo "undeliverable mail" (mail
không thể phân phát) và gửi nó đến nơi xuất phát của mail không thể phân phát
đó(được chỉ định trong reverse-path). Message thông báo này phải là từ serverSMTP tại host đó. Dĩ nhiên những server-SMTP sẽ không gữi những message
thông báo về những sự cố xảy ra cho message thông báo đó. Một cách ngăn chặn sự
lặp lại trong việc thông báo lỗi là đặc tả một null reverse-path trong lệnh MAIL của
message một thông báo. Khi một message thông báo như vậy được chia ca nó được
dùng để loại bỏ reverse-path null. Một lệnh MAIL với null reverse-path như sau:
MAIL FROM:< >
Thông báo này nằm trong trả lời cho một message được khởi động bởi JOE
tại HOSTW và gửi thông qua HOSTX đến HOSTY với chỉ thị chia ca nó đến

HOSTZ, nó là bước đầu tiên trong việc trả về message thông báo .
1.3.7 Domains
Domains: là cách sử dụng các tên vùng tên miền để chuyển đổi từ không
gian địa chỉ tổng thể gồm các chuỗi kí tự đơn giản sang một không gian địa chỉ có
cấu trúc được phân cấp.
Tên các host được thay thế bởi các tên miền và máy chủ định danh bao gồm
các chuỗi các phần tử miền được phân ra thành các phân đoạn được sắp xếp ngăn
nắp thành một địa chỉ chung nhất.
1.3.8 Changing Roles
Lệnh TURN có thể dùng để đảo vai trò của hai chương trình đang giao tiếp trên
kênh giao chuyển. Nếu chương trình A đang là sender-SMTP hiện hành và nó gửi
lệnh TURN và nhận một reply OK(250) thì chương trình A trở thành receiverSMTP. Nếu chương trình B đang hiện hành receiver-SMTP hiện hành và nó gửi
lệnh TURN và nhận một reply OK(250) thì chương trình B trở thành sender-SMTP.
Để từ chối thay đổi vai trò receiver gửi reply 502
Lưu ý là lệnh này không bắt buộc. Thường nó không được dùng trong tình
trạng kênh giao chuyển là TCP. Tuy nhiên khi trị giá cho việc thiết lập kênh giao
chuyển cao, lệnh này có thể rất có ích. Ví dụ như lệnh này có ích trong việc hổ trợ
là trao đổi mail dùng hệ thống public switched telephone làm một kênh giao
chuyển, đặc biệt nếu một số host đề cử các host khác cho việc trao đổi mail.
Trang 17


Thực tập chuyên nghành MMT & TT
1.4 Đặc tả SMTP
1.4.1Những lệnh SMTP (SMTP commands)
a. Ngữ nghĩa lệnh
Những lệnh SMTP định nghĩa sự truyền mail hay chức năng của hệ thống mail
được yêu cầu bởi user. Những lệnh SMTP là những chuỗi ký tự kết thúc bằng
<CRLF>. Bản thân mã lệnh là những ký tự chữ (alphabetic) kết thúc bởi <SP> nếu
có những tham số theo sau và <CRLF> khác. Cú pháp của những mailbox phải

tuân theo những thoả hiệp phía receiver. Những reply SMTP được bàn đến trong
phần B.
Một sự giao dịch mail bao gồm vài đối tượng dữ liệu được giao tiếp khi
những đối số cho các lệnh khác nhau. Reverse-path là đối số của lệnh MAIL.
Forward-path là đối số của lệnh RCPT. Và mail data là đối số của lệnh DATA. Ba
đối số và những đối tượng dữ liệu được duy trì cho đến khi xác nhận truyền xong
bởi sự chỉ định kết thúc của mail data thì thật sự kết thúc giao dịch. Mô hình cho nó
là những buffer riêng biệt được cung cấp để giữ kiểu của đối tượng dữ liệu. Một số
lệnh đặc trưng sinh ra thông tin được gắn vào một buffer đặc trưng, hay làm cho
một hay nhiều buffer bị xoá.
 HELLO (HELO) : Lệnh này dùng định danh sender-SMTP đến receiver-SMTP.
 MAIL : Lệnh này được dùng khởi tạo một giao dịch mail trong đó mail data
được phân phối đến một hay nhiều mailbox
 RECIPIENT (RCPT) : Lệnh này dùng định danh một recipient (người nhận)
mail data riêng lẻ, nhiều recipient được đặc tả bằng nhiều lệnh này.
 DATA(DATA) : Receiver xử lý những dòng theo sau lệnh này khi mail data từ
sender đến. Nó làm cho mail data từ lệnh này được ghi vào data buffer. Mail
data này có thể chứa những ký tự của 128 mã ACII. Data mail được kết thúc
bằng một dòng chỉ chứa một dấu chấm. Đó là một dãy ký tự "<CRLF>.
<CRLF>".Và đó là chỉ định kết thúc của mail data.
 SEND (SEND) : Lệnh này dùng khởi tạo một giao dịch mail trong đó mail data
được phân phát đến một hay nhiều terminal. Field đối số chứa một reverse-path.
Lệnh này thành công nếu message được phân phát đến một terminal.

Trang 18


Thực tập chuyên nghành MMT & TT
 END OR MAIL (SOML) : Lệnh này dùng khởi tạo một giao dịch mail trong đó
mail data được phân phát đến một hay nhiều terminal hay mailbox. Cho từng

recipient, data mail được phân phát đến terminal của recipient nếu recipient đó
đang hoạt động trên host đó (và chấp nhận những terminal message ), mặt khác
là đến mailbox của những recipient đó. Field đối số chứa một reverse-path .
Lệnh này thành công khi message được phân phát đến một terminal hay
mailbox.
 SEND AND MAIL (SAML) : Lệnh này dùng khởi tạo một giao dịch mail trong
đó mail data được phân phát đến một hay nhiều terminal và các mailbox. Cho
từng recipient data mail được phân phát đến terminal của recipient nếu recipient
đó đang hoạt động trên host đó (và chấp nhận những terminal message ) và cho
tất cả recipient thì đến mailbox của các recipient đó.
 RESET (RSET) : Lệnh này định rõ giao dịch mail hiện hành bị huỷ bỏ. Các
sender, recipient, mail data đã lưu sẽ bị huỷ bỏ và tất cả các bảng trạng thái, các
buffer bị xoá. Receiver phải gửi một reply OK.
 VERIFY (VRFY) : Lệnh này yêu cầu receiver xác nhận đối số định danh một
user. Nếu nó là một user name, full name của user đó (nếu receiver biết) và
mailbox đặc tả đầy đủ được trả về.Lệnh này không ảnh hưởng đến reverse-path
buffer, forward-path buffer và data mail buffer.
 EXPAND (EXPN) : Lệnh này yêu cầu receiver xác nhận một mailing list ( danh
sách địa chỉ) và trả về một thành phần trong danh sách đó. Full name của các
user (nếu biết) và những mailbox được đặc tả đầy đủ được trả về trong một
reply
 HELP (HELP) : Lệnh này làm cho receiver thông tin giúp đỡ cho sender lệnh
HELP. Lệnh này có thể nhận một đối số (có thể là tên lệnh) và trả về thông tin
chi tiết.
 NOOP (NOOP) : Lệnh này không ảnh hưởng các tham số hay các lệnh được
đưa vào trước nó, nó đặc tả không có một hành động nào khác hơn là receiver
gửi một reply OK.
 QUIT (QUIT) : Lệnh này định rõ receiver phải gửi một reply OK và sau đó
đóng kênh giao dịch . Receiver sẽ không đóng kênh giao dịch cho đến khi nó
Trang 19



Thực tập chuyên nghành MMT & TT
nhận và trả lời cho lệnh QUIT (ngay cả nếu có một lỗi xãy ra). Sender sẽ không
đóng kênh giao dịch cho đến khi nó gửi một lệnh QUIT và nhận reply đó (ngay
cả nếu có một lỗi trả lời cho lệnh trước đó). Nếu kết nối bị đóng trước thời gian
mong muốn receiver sẽ làm việc như vừa nhận được một lệnh RSET (bỏ tất cả
các giao dịch đang treo mà chưa làm, nhưng không “undo” những giao dịch đã
hoàn tất trước đó) sender sẽ hành động như nếu lệnh hay giao dịch đó trong quá
trình xử lý nhận được một lỗi tạm thời (4xx).
 TURN (TURN): Lệnh này xác định receiver phải gửi một trong hai reply sau:
(1) reply OK và sau đó nhận vai trò của một sender-SMTP, hay (2) gửi một reply
từ chối và giữ lại vai trò một receiver-SMTPĐể từ chối thay đổi vai trò receiver
gửi một reply 502
b. Cú pháp lệnh
- Các lệnh bao gồm một mã lệnh theo sau là đối số của lệnh. Mã lệnh là 4 ký tự
alphabetic. Không phân biệt chữ thường hoặc chữ hoa.
- Giữa mã lệnh và đối số là một hoặc nhiều khoảng trắng. Tuy nhiên trong
reverse-path và forward-path, kiểu chữ rất quan trọng. Đặc biệt, trên một số host,
tên user cũng phân biệt kiểu chữ hoa và thường.
- Đối số bao gồm một chuỗi ký tự có chiều dài biến đổi kết thúc bằng chuỗi ký
tự “ <CRLF> “.
- Dấu ngoặc vuông biểu diễn cho một vùng đối số tuỳ chọn.
- Sau đây là những lệnh SMTP:
HELO <SP> <domain> <CRLF>
MAIL <SP> FROM:<reverse-path> <CRLF>
RCPT <SP> TO:<forward-path> <CRLF>
DATA <CRLF>
RSET <CRLF>
SEND <SP> FROM:<reverse-path> <CRLF>

SOML <SP> FROM:<reverse-path> <CRLF>
SAML <SP> FROM:<reverse-path> <CRLF>
VRFY <SP> <string> <CRLF>
EXPN <SP> <string> <CRLF>
Trang 20


Thực tập chuyên nghành MMT & TT
HELP [<SP> <string>] <CRLF>
NOOP <CRLF>
QUIT <CRLF>
TURN <CRLF>
1.4.2 SMTP Replies
Sự phản hồi các lệnh SMTP được đưa ra là để chắc chắn tính thống trong quá trình
thư, đông thời đảm bảo rằng phía sender_SMTP luôn luôn biết được chính xác trạng
thái của receiver-SMTP mọi câu lệnh yêu cầu phải được trả lời bằng các mã thông
tin phản hồi chính xác
Một reply SMTP bao gồm một số ba chữ số (được truyền như ba ký tự chữ số) theo
sau là một số văn bản (text). Số đó được dành cho các chương trình tự động để xác
định trạng thái đưa vào kế tiếp. Text ở trên có ý nghĩa cho user con người(không
phải máy). Ba chữ số đó được ấn định chứa đầy đủ thông tin được mã hoá senderSMTP không cần kiểm tra text đó và có thể huỷ bỏ hay chuyển nó qua một user
thích hợp. Đặc biệt text này có thể độc lập với receiver và độc lập với ngữ cảnh, do
có sự giống nhau trong những text khác nhau từng mã reply. Thông thường một
reply được định nghĩa là chuổi gồm: một mã ba chữ số, <SP>, một dòng text, và
<CRLF>, hay một reply nhiều dòng (như định nghĩa trong phụ lục E) chỉ những
lệnh EXPN và HELP có kết quả là những reply nhiều dòng trong những tình huống
bình thường, tuy nhiên những reply nhiều dòng được chấp nhận cho nhiều lệnh
Những mã Reply cho một nhóm chức năng
500
501

211
214
220
221
421
250
251
450
451
551
452
552

Lỗi cú pháp, không chấp nhập lệnh
Lỗi cú pháp trong những đối số hay những tham số
Trạng thái hệ thống, hay trả lời giúp đỡ về hệ thống
Thông điệp giúp đỡ
<domain> dịch vụ sẳn sàng
<domain> dịch vụ đóng kênh giao chuyển
<domain> dịch vụ không dùng được, đóng kênh giao chuyển
Hành dộng mail yêu cầu ok, hoàn thành
User không cục bộ, sẽ hướng đến “forward-path”
Không lấy hành động mail yêu cầu: mailbox không có hiệu lực
Bỏ qua hành động được yêu cầu; lỗi trong quá trình xử lý
User không cục bộ, vui lòng thử lại <forward-path>
Không nhận hành động được yêu cầu : lưu trữ của hệ thống
không đủ
Bỏ qua hành động mail yêu cầu: vượt quá chỉ định lưu trữ
Trang 21



Thực tập chuyên nghành MMT & TT
553

Không nhận hành động được yêu cầu : không chấp nhận tên
mailbox [như sai cú pháp mailbox].
554
Khởi động việc nhận mail; kết thúc với <CLRF>.<CLRF> giao
chuyển bị sai
1.4.3 Sự liên tục của commands và reply
Sự giao tiếp giữa sender và receiver được định là một cuộc hội thoại tuần tự do
sender điều khiển. Chẳng hạn như sender sinh ra một lệnh và receiver trả lời với
một reply. Sender phải chờ sự trả lời này trước khi gửi thêm lệnh.
Một reply quan trọng là chào hỏi kết nối. Thông thường một receiver sẽ
gửi một reply 220 “service ready” khi kết nối hoàn thành. Sender phải chờ thông
điệp chào hỏi này trước khi gửi các lệnh.
Lưu ý: tất cả các reply kiểu chào hỏi dùng tên chính thức của host server là từ
đầu tiên theo sau mã reply
 Chuỗi Commands và Reply
Mỗi lệnh được liệt kê với các reply có thể của nó. Những tiền tố được dùng trước
những reply có thể là “P” để khởi đầu (không dùng trong SMTP) “I” cho phần giữa,
“S” cho sự thành công và “E” cho lỗi. Reply 421 (dịch vụ không hiệu lực, đóng
kênh giao chuyển) có thể cho một số lệnh nếu receiver-SMTP nhận biết rằng nó
phải shut down. Sự liệt kê sau đây là cấu trúc cơ bản cho sơ đồ trạng thái(state
diagram)
Thứ tự
CONNECTION
ESTABLISHMENT
HELLO
MAIL

RCPT

S
220
250
250
250, 251

DATA

S: 250

RSET
SEND
SOML
SAML
VRFY
EXPN
HELP
NOOP
QUIT
TURN

250
250
250
250
250, 251
250
211, 214

250
221
250

F
421
552, 451, 452
550, 551, 552, 553, 450,
451, 452
552, 554, 451, 452, 451,
554
552, 451, 452
552, 451, 452
552, 451, 452
550, 551, 553
550

502

1.4.4 Sơ đồ trạng thái (State Diagram)
Trang 22

E
500, 501, 504, 421
500, 501, 421
500, 501, 503, 421
500, 501, 503, 421
500, 501, 504, 421
500, 501, 502, 421
500, 501, 502, 421

500, 501, 502, 421
500, 501, 502, 504, 421
500, 501, 502, 504, 421
500, 501, 502, 504, 421
500, 421
500, 421
500, 503


Thực tập chuyên nghành MMT & TT
Dưới đây là sơ đồ trạng thái cho một sự thi hành SMTP đơn giản. Chỉ một
chữ số đầu tiên của những mã reply được sử dụng . Đây là một bảng trạng thái cho
từng nhóm lệnh SMTP những nhóm lệnh này được xác định bằng cách xây dựng
một mô hình cho mỗi lệnh và sau đó gom những lệnh đó lại với nhau với những
mô hình giống nhau về cấu trúc.
Cho mỗi lệnh có ba kết quả “thành công” (S), “thất bại” (F), “lỗi” (E) trong
sơ đồ trạng thái sau chúng ta dùng ký hiệu B cho “begin” và ký hiệu W cho “wait
forreply”.

B

DATA

1,2

W
3

4,5


1,3

E
S

2

data
F receiver không cần
Lưu ý: “data” ở đây là một
chuỗi nhữngW
dòng4,5
gửi từ sender đến

sự trả lời cho đến khi dòng cuối cùng được gửi.
1.4.5 Chi tiết
a. Sự thực thi tối thiểu
Lợp lệ để làm cho SMTP có thể làm việc, sự thực thi tối thiểu sau được yêu cầu
cho tất cả các receiver
COMMANDS— HELO- MAIL- RCPT- DATA- RSET- NOOP- QUIT
b. Tính trong suốt
Không có một sự cung cấp nào cho tính trong suốt dữ liệu, chuổi ký tự
<CRLF>.<CRLF> kết thúc mail text và không được user gửi đi. Thông thường user
không nhận biết được sự “ngăn cản” những chuổi ký tự đó. Để cho phép tất cả các
text đã soạn thảo của user được truyền một cách rõ ràng những thủ tục sau đây được
sử dụng.
 Trước khi gửi một dòng mail text sender-SMTP kiểm tra ký tự đầu tiên của
dòng đó. Nếu nó là một dấu chấm, một dấu chấm phụ được thêm vào đầu
dòng.
 2> Khi receiver-SMTP nhận một dòng mail text nó kiểm tra dòng đó. Nếu

dòng

đó chỉ có một dấu chấm đơn thì nó là kết thúc của mail. Nếu ký tự

Trang 23


Thực tập chuyên nghành MMT & TT
đầu tiên là một dấu chấm và theo sau là những ký tự khác nằm trên cùng
dòng. Thì ký tự đầu tiên đó bị xoá.
Mail data có thể chứa các ký tự mã ASCII (128 ký tự) tất cả các ký tự được
phân phát đến mailbox của recipient bao gồm phần định dạng và những ký tự điều
khiển khác. Nếu kênh chuyển giao cung cấp một luồng dữ liệu 8 bit (octet), những
mã ASCII 7 bit trên được vận chuyển đúng điều chỉnh lại trong hệ bát phân với bit
cao nhất bị xoá về 0.
Nó có thể cần thiết để biến đổi dữ liệu được nhận hay lưu trữ . Trong một số hệ
thống, điều này cần thiết cho những host dùng một tập hợp ký tự khác với tập
ASCII , như tập ký tự cục bộ của chúng hay dữ liệu lưu trong những record nhiều
hơn chuổi. Nếu những thay đổi trên là cần thiết, chúng phải khôi phục lại( biến đổi
hai chiều) được nếu những biến đổi đó được áp dụng cho mail được chia ca
c. . Kích thước
Có vài đối tượng đòi hỏi kích thước nhỏ nhất lớn nhất. Đó là tất cả tất cả sự
thực thi phải có để nhận những đối tượng có kích thước tối thiểu, nhưng không bắt
buộc phải gửi những đối tượng lớn hơn kích thước này
ĐỂ CÓ PHẠM VI LỚN NHẤT CÓ THỂ, THỰC THI KỸ
THUẬT ĐÁNH LỪA KHÔNG GIỚI HẠN CHIỀU DÀI
CỦA NHỮNG ĐỐI TƯỢNG SẼ ĐƯỢC DÙNG




user : Chiều dài tổng cộng lớn nhất của user name là 64 ký tự.



domain : Chiều dài tổng cộng lớn nhất của domain name hay số là 64 ký tự.



path : Chiều dài tổng cộng lớn nhất của một dòng lệnh bao gồm những từ lệnh
và <CRLF> là 512 ký tự.



text line (dòng văn bản) : Chiều dài tổng cộng lớn nhất của dòng văn bản bao
gồm <CRLF> là 1000 ký tự (không tính dấu chấm ở đầu được nhân lên cho vấn
đề trong suốt).



recipients buffer : Tổng số recipient lớn nhất là 100 recipient.
* Lỗi vượt quá quyền được giới hạn có thể được báo cáo bằng cách dùng những

mã reply. Ví dụ như :
500 Line too long.(dòng quá dài)
501 Path too long (đường dẫn quá dài)
552 Too many recipients.(quá nhiều recipient)
Trang 24


Thực tập chuyên nghành MMT & TT

552 Too much mail data (quá nhiều mail data)
1.5 Giao thức mở rộng SMTP ( ESMTP)
SMTP có một hạn chế gây khó khăn lớn trong việc truyền nhận mail là giới hạn tối
đa kích thước nội dung một bức mail chỉ là 128KB. Ngày nay nội dung các bức
mail không chỉ là dạng văn bản đơn thuần mà còn bao gồm hình ảnh, âm thanh và
nhiều loại dữ liệu khác nữa, giới hạn 128KB trở nên quá nhỏ. Do vậy người ta đã
cải tiến chuẩn SMTP thành một chuẩn mở rộng mới gọi là ESMTP.
- Chuẩn này cho phép tăng kích thước mail, nó đưa thêm từ khoá
SIZE=nnnnnnnnn sau lệnh khởi động cuộc giao dịch, nhờ đó ta có thể tăng giới hạn
kích thước của mail lên trên 1MB, đủ để chứa thêm vào các âm thanh, hình ảnh…
- Để biết xem Server MTA có theo chuẩn ESMTP hay không, thay vì dùng lệnh
HELLO ở đầu một cuộc giao dịch, Client MTA dùng lệnh mới HELLO, nếu Server
MTA có trang bị, nó sẽ trả về mã thành công là 250. Ngày nay chuẩn ESMTP đã
thay thế chuẩn SMTP ở đa số các hệ thống.
Ví dụ : để khởi động cuộc giao dịch với kích thước mail lên tới 1MB, dòng
lệnh sẽ là : MAIL FROM :<thuan@sample1> SIZE=1000000
2.POP3
2.1 Giới thiệu
Nghi thức POP3 được cải tiến từ nghi thức POP ( Post Office Protocol ).
Trên internet một loại nào đó nhỏ hơn node thường không thực tế để duy trì một hệ
thống vận chuyển message (message transport system: MTS), ví dụ như một
workstation không có đủ tài nguyên (recycle, disk space) hợp lệ để cho phép một
SMTP server và một hệ thống phân phát mail cục bộ kết hợp giữ thường trú và
chạy một cách liên tục . Thường thì nó có thể rất đắt (hay không thích hợp) để giữ
một personal computer nối với một IP-style netwrork trong một thời gian dài (node
đó được biết sẽ thiếu tài nguyên như “connectivity”) .
Mặc dù vậy, để có thể quản lý mail rất hữu hiệu trên những node nhỏ hơn
này. Và chúng thường hổ trợ một user agent (UA) để giúp đỡ công việc điều khiển
mail. Để giải quyết vấn đề một node có thể cung cấp một thực thể MTS đưa ra một
maildrop service đến những node được cấp nhỏ hơn này. Post Office Protocol Version 3 (POP3) được dùng cho phép một workstation truy xuất động đến một

Trang 25


×