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

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

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.9 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.
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
Trang 2

Thực tập chuyên nghành MMT & TT
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.
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.
Trang 3
Thực tập chuyên nghành MMT & TT
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)
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.
Trang 4

Thực tập chuyên nghành MMT & TT
• 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 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
Trang 5
Thực tập chuyên nghành MMT & TT
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).
Trang 6
Thực tập chuyên nghành MMT & TT

IMAP(INTERNET MESSAGE ACCESS 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 e-mail 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
Trang 7

Thực tập chuyên nghành MMT & TT
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 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 Chỉ ngày giờ nhận mail
From chỉ người gởi
To chỉ người nhận
Cc chỉ người những nhận bản copy của mail
Bcc 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
Return-
path
chứa các thông tin để người nhận có thể trả lời lại (thường nó
chính là đị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ự X- và 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
Trang 8
Thực tập chuyên nghành MMT & TT
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 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?.
Trang 9
Thực tập chuyên nghành MMT & TT
- 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 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
Trang 10
File System
SMTP Commands / Replies
Sender SMTP
Sender - SMTP
Hình 3: Mô hình tổng quát sử dụng giao thức SMTP
Receiver SMTP
Receiver - SMTP
and Mail
File System
User
Thực tập chuyên nghành MMT & TT
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 đó.
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)
SMTP cung cấp những cơ chế giao chuyển Mail một cách trực tiếp từ Host
của User gửi đến host của user nhận khi cả hai host được kết nối đến cùng
Trang 11
Thực tập chuyên nghành MMT & TT
dịch vụ giao 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ữ 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
Trang 12
Thực tập chuyên nghành MMT & TT
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 receiver-
SMTP 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 reverse-path
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 <forword-
path> 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 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
Trang 13
Thực tập chuyên nghành MMT & TT
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)
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.
Trang 14
Thực tập chuyên nghành MMT & TT
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
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.
Trang 15
Thực tập chuyên nghành MMT & TT
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 receiver-SMTP
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.
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 .
Trang 16
Thực tập chuyên nghành MMT & TT
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. Reverse-

path 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 reverse-
path, 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 server-
SMTP 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ộ. Receiver-SMTP
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í 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ừ server-SMTP 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:< >
Trang 17

Thực tập chuyên nghành MMT & TT
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 receiver-SMTP.
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.
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.
Trang 18
Thực tập chuyên nghành MMT & TT
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.
 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 đó.
Trang 19
Thực tập chuyên nghành MMT & TT
 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ó 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
Trang 20
Thực tập chuyên nghành MMT & TT
- 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>
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
Trang 21
Thực tập chuyên nghành MMT & TT
máy). Ba chữ số đó được ấn định chứa đầy đủ thông tin được mã hoá sender-SMTP
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 Lỗi cú pháp, không chấp nhập lệnh
501 Lỗi cú pháp trong những đối số hay những tham số
211 Trạng thái hệ thống, hay trả lời giúp đỡ về hệ thống
214 Thông điệp giúp đỡ
220 <domain> dịch vụ sẳn sàng
221 <domain> dịch vụ đóng kênh giao chuyển
421 <domain> dịch vụ không dùng được, đóng kênh giao chuyển
250 Hành dộng mail yêu cầu ok, hoàn thành
251 User không cục bộ, sẽ hướng đến “forward-path”

450 Không lấy hành động mail yêu cầu: mailbox không có hiệu lực
451 Bỏ qua hành động được yêu cầu; lỗi trong quá trình xử lý
551 User không cục bộ, vui lòng thử lại <forward-path>
452 Không nhận hành động được yêu cầu : lưu trữ của hệ thống
không đủ
552 Bỏ qua hành động mail yêu cầu: vượt quá chỉ định lưu trữ
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
Trang 22
1,2
B W
W F
S
E
DATA
data
3 4,5
1,3 2
4,5

Thực tập chuyên nghành MMT & TT
 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ự S F E
CONNECTION
ESTABLISHMENT
220 421
HELLO 250 500, 501, 504, 421
MAIL 250 552, 451, 452 500, 501, 421
RCPT 250, 251 550, 551, 552, 553, 450,
451, 452
500, 501, 503, 421
DATA S: 250 552, 554, 451, 452, 451, 554 500, 501, 503, 421
RSET 250 500, 501, 504, 421
SEND 250 552, 451, 452 500, 501, 502, 421
SOML 250 552, 451, 452 500, 501, 502, 421
SAML 250 552, 451, 452 500, 501, 502, 421
VRFY 250, 251 550, 551, 553 500, 501, 502, 504, 421
EXPN 250 550 500, 501, 502, 504, 421
HELP 211, 214 500, 501, 502, 504, 421
NOOP 250 500, 421
QUIT 221 500, 421
TURN 250 502 500, 503
1.4.4 Sơ đồ trạng thái (State Diagram)
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”.
Trang 23
Thực tập chuyên nghành MMT & TT
Lưu ý: “data” ở đây là một chuỗi những dòng gửi từ sender đến receiver không cầ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ự đầ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
Trang 24
Thực tập chuyên nghành MMT & TT
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
 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)
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
Trang 25
ĐỂ 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

×