Tải bản đầy đủ (.doc) (108 trang)

ĐỀ TÀI TRIỂN KHAI MAIL SERVER CHO TRƯỜNG TÂN GROUP

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 (3.99 MB, 108 trang )

ĐẠI HỌC ĐÀ NẴNG

TRƯỜNG ĐẠI HỌC BÁCH KHOA

KHOA CÔNG NGHỆ THÔNG TIN
Tel. (84-511) 736 949, Fax. (84-511) 842 771
Website: itf.ud.edu.vn, Mail:

LUẬN VĂN TỐT NGHIỆP KỸ SƯ
NGÀNH CÔNG NGHỆ THÔNG TIN
MÃ NGÀNH: 05115

ĐỀ TÀI:
TRIỂN KHAI MAIL SERVER CHO TRƯỜNG TÂN GROUP
Mã số: 06T-025
06T-035
Ngày bảo vệ: 15-16/06/2011

SINH VIÊN: NGUYỄN THỊ THANH LY
NGUYỄN THÀNH TÂM
LỚP
: 06T1
CBHD
: PGS.TS. VÕ TRUNG HÙNG

ĐÀ NẴNG, 06/2011


LỜI CẢM ƠN
Trước hết, Chúng em xin chân thành cảm ơn các thầy cô khoa Công
nghệ thông tin trường Đại học Bách Khoa Đà Nẵng đã trang bị cho chúng


em những kiến thức cơ bản cần thiết trong những năm học vừa qua để
chúng em có thể thực hiện tốt đồ án này cũng như đủ tự tin để làm việc sau
này.
Chúng em xin chân thành cảm ơn thầy giáo PGS.TS. Võ Trung Hùng đã
tận tình hướng dẫn và giúp đỡ chúng em hoàn thành đồ án này.
Ngoài ra, cũng xin gởi lời cám ơn tới anh Nguyễn Duy Hải giảng viên
của Trường Tân Group đã hướng dẫn và tạo điều kiện để chúng em hoàn
thành đồ án.
Chúng em rất mong nhận được sự góp ý của các thầy giáo, cô giáo
cũng như của bạn bè và những người có quan tâm đến lĩnh vực mà cuốn đồ
án này đã được trình bày.

Sinh viên
Nguyễn Thị Thanh Ly
Nguyễn Thành Tâm


LỜI CAM ĐOAN
Em xin cam đoan:
1 Những nội dung trong luận văn này là do em thực hiện dưới sự
hướng dẫn trực tiếp của thầy PGS.TS. Võ Trung Hùng và Giảng
viên của Trường Tân Group anh Nguyễn Duy Hải.
2 Mọi tham khảo dùng trong luận văn đều được trích dẫn rõ ràng tên
tác giả, tên công trình, thời gian, địa điểm công bố.
3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá,
em xin chịu hoàn toàn trách nhiệm.
Sinh viên
Nguyễn Thị Thanh Ly
Nguyễn Thành Tâm



NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………

Đà Nẵng, ngày tháng năm 2011
Giáo viên hướng dẫn


NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………

…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………

Đà Nẵng, ngày tháng năm 2011
Giáo viên phản biện


Mục lục

MỤC LỤC
MỞ ĐẦU
CHƯƠNG I:
TỔNG QUAN VỀ MAIL SERVER.................................................................10
.I Các khái niệm cơ bản............................................................................................10
.II Giới thiệu về hệ thống Mail Server.....................................................................13
.III Các giao thức truyền nhận mail........................................................................18


THIẾT KẾ HỆ THỐNG MAIL SERVER......................................................34
.IV Giới thiệu về Trường Tân Group.......................................................................34
.V Khảo sát và đặc tả nhu cầu..................................................................................39
.VI Phân tích và thiết kế hệ thống............................................................................43
.VII Đưa ra giải pháp................................................................................................45

TRIỂN KHAI ỨNG DỤNG............................................................................48
.VIII Cài đặt và cấu hình MAIL SERVER..............................................................48
.IX Xây dựng chương trình gửi và nhận Mail.........................................................87
[1] Mạng máy tính và các hệ thống mở - TS. Nguyễn Thúc Hải..........................109
[2] Windows Internet Tour Giude – Cruising the Internet the Easy Way của
michaek Fraase–Ventana Press(1994)....................................................................109
[3] Navigating the Internet của Richard J.Smith & Mark Gibbs – Sams
Publishing................................................................................................................109
[4] Novell’s Guide to Client-Server Application and Architecture của Jeffrey
D.Schank.................................................................................................................. 109
[5] Internetworking v ới TCP/IP - Nguyễn Quốc Cường.....................................109
[6] Kiến thức thiết yếu về mạng máy tính - Phùng Kim Hoàng...........................109
[7] />[8] />[9] />[10] …....................................................................................................................... 109

KẾT LUẬN
TÀI LIỆU THAM KHẢO

7


MỞ ĐẦU
Với tốc độ tin học hóa diễn ra khá nhanh như hiện nay, Email ngày càng trở thành
phương tiện liên lạc không thể thiếu đối với mọi người, nhất là đối với các doanh nghiệp.

Chính vì nhu cầu đó việc xây dựng một Mail Server là hết sức cần thiết để trang bị cho
mỗi thành viên của công ty một Account Mail riêng dùng để gởi và nhận mail với bên
ngoài. Tạo thuận lợi cho công tác quản lý cũng như là bảo vệ tư liệu mật thiết của công ty.
E-Mail ngoài công dụng trao đổi thư tín, nó còn là hình thức quảng bá và khẳng định hình
ảnh thương hiệu của doanh nghiệp, tổ chức.
Sau hai tháng thực tập tại Truong Tan Group Training Center , chúng em được tìm
hiểu về hệ thống mạng của trung tâm. Được tìm hiểu về các giao thức SMTP, POP3,
IMAP, TCP/IP…Và triển khai các dịch vụ (SSTP/AD Right Managemant) cũng như triển
khai hệ thống mạng cho các doanh nghiệp.
Dựa vào các kiến thức đã học tại trường và thực nghiệm trong quá trình thực tập tại
Trường Tân Group. Chúng em quyết định chọn đề tài “ TRIỂN KHAI MAIL SERVER
CHO TRƯỜNG TÂN GROUP” để thực hiện đồ án tốt nghiệp với mong muốn tối ưu
hóa hệ thống mạng doanh nghiệp.
Việc triển khai Mail Server cho TTG có ý nghĩa quan trọng:
Giúp học viên liên lạc với Giảng viên trao đổi bài vở, gửi/nhận bài giảng.
Trao đổi thông tin giữa các bộ phận trong công ty.
Bảo mật được thông tin nội bộ.
Xây dựng môi trường làm việc chuyên nghiệp.
Nội dung chính của đồ án này là phải xây dựng Mail Server với các chức năng sau:
Cho phép người dùng gửi và nhận mail trực tiếp thông qua Internet với tên miền của
trung tâm.
Khả năng hạn chế được Mail spam và Virus trước khi chuyển tiếp tới người nhận.
Người dùng có thể gửi và nhận mail thông qua Mail Client và Web mail.
Người dùng có thể nhận và gửi mail bình thường khi đi công tác xa và người quản trị
mạng có thể quản trị hệ thống Mail Server của công ty thông qua Internet.
Hệ thống mail phải có tính bảo mật.
Thiết lập dung lượng tối đa cho từng mail.
Quản lý được nội dung mail của người dùng.
Tự động sao lưu dữ liệu.
Thực hiện đồ án theo tiến trình sau:

Khảo sát mô hình, cơ sở hạ tầng của doanh nghiệp.
Đưa ra mô hình tổng quan cho cơ sở hạ tầng đã khảo sát.
Nghiên cứu các lý thuyết liên quan : Hệ điều hành Windows Server 2003, các giao thức
gửi nhận mail (SMTP, POP3, IMAP…), cơ chế hoạt động của Mail Server.
Nguyễn Thị Thanh Ly, Nguyễn Thành Tâm, Lớp: 06T1

8


Khảo sát hệ thống Mail Server đang được triển khai tại Trường Tân.
Triển khai và cài đặt.
Kiểm tra và đề ra giải pháp khắc phục sự cố (nếu có).
So sánh đánh giá kết quả mình đã thực hiện.
Làm báo cáo đồ án theo bố cục như sau
 Chương I : TỔNG QUAN VỀ MAIL SERVER
 Chương II : THIẾT KẾ HỆ THỐNG MAIL SERVER
 Chương III: TRIỂN KHAI ỨNG DỤNG
Để hiểu rõ hơn hoạt động bên trong của ứng dụng Mail ở phần cung cấp dịch vụ mà
thường được gọi là Mail Server, cuốn đồ án này sẽ trình bày, kiến trúc và nguyên lý làm
việc của một Mail Server, đồng thời biết cách triển khai một hệ thống Mail hoàn chỉnh
trên môi trường Windows – Với đầy đủ các thành phần như SMTP/POP3/IMAP Server,
AntiVirus, AntiSpam, và Mail store. Cụ thể ở đây là cài đặt Mail Server trên nền hệ điều
hành Windows Server 2003.

Nguyễn Thị Thanh Ly, Nguyễn Thành Tâm, Lớp: 06T1

9


CHƯƠNG 1


TỔNG QUAN VỀ MAIL SERVER
.I

Các khái niệm cơ bản

Hằng ngày, có hàng tỉ “bức thư điện tử” được gửi qua Internet. Nếu bạn làm việc ở
trên mạng Internet nhiều, có thể bạn sẽ gửi và nhận hàng tá email hoặc hơn nữa mà bạn
không nhớ. Thực tế email đã trở thành một công cụ liên lạc vô cùng hữu hiệu trong cuộc
sống hiện đại của chúng ta.

.I.1.

Email là gì?

E-Mail - Electronic mail hay còn gọi là thư điện tử là cách gọi phổ thông của cách
thức giao tiếp, liên lạc của hệ thống xây dựng dựa trên những chiếc máy tính. Tại một
thời điểm cách đây khá lâu, thuật ngữ máy tính được dùng để ám chỉ những cỗ máy làm
việc với kích thước khổng lồ, người dùng phải áp dụng phương pháp dial-up để truy cập,
và mỗi chiếc máy tính đều được trang bị bộ nhớ và thiết bị lưu trữ dành cho nhiều tài
khoản. Sau đó không lâu, những nhà phát minh đã tìm cách để các bộ máy này “giao tiếp”
với nhau. Ứng dụng đầu tiên ra đời, nhưng họ chỉ gửi được tin nhắn đến các người sử
dụng khác trong cùng 1 hệ thống cho tới tận năm 1971. Và thời gian qua đi, công nghệ đã
được phát triển lên 1 tầm cao mới khi Ray Tomlinson trở thành người đầu tiên trên toàn
thế giới gửi được bức thư điện tử tới người khác sử dụng ký hiệu @.
Mail là một phương tiện 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.


.I.2.

Địa chỉ E-mail

Địa chỉ E-mail là một định danh trên Internet cho phép người sử dụng nhận biết được
chính xác người cần liên hệ, giao dịch, trao đổi thông tin và ra lệnh gửi các thông điệp, tài
liệu, hình ảnh tới định danh này.
Địa chỉ E-mail bao giờ cũng bao gồm 2 phần:
Phần tên miền quản lý địa chỉ mail này.
Ví dụ: , .
Phần tên chính của địa chỉ mail, để phân biệt với các địa chỉ Mail khác do cùng 1 tên
miền quản lý.
Ví dụ: thanhly, thanhtam…
Giữa 2 phần của địa chỉ E-mail liên kết bởi dấu @.
Tên một địa chỉ mail đầy đủ sẽ là: hay .

10


.I.3.

Email client (trình duyệt thư)

Khi bạn đang nhận được một bức email. Để đọc được nó, bạn phải sử dụng một vài
loại email client (trình duyệt thư). Rất nhiều người sử dụng thành thạo những phần mềm
đơn lẻ như Microsoft Outlook, Outlook Express, Eudora… Một vài người khác đăng kí
dịch vụ email miễn phí như Hotmail, Yahoo… thì sử dụng Email client hiển thị trên trang
Web. Bất kể kiểu Email client nào bạn đang sử dụng, nó đều mang 4 đặc điểm sau:
Email client cho bạn thấy một danh sách mesage trong hộp thư của bạn bằng cách hiển thị
các đầu mục của message (message header). Message header này chỉ cho bạn ai đã gửi

message, tiêu đề của message, và những thông tin khác như thời gian gửi, thời gian nhận,
kích cỡ…
Email client cho phép bạn chọn và đọc nội dung của một message.
Email client cho phép bạn tạo một message mới và gửi nó đi. Bạn nhập vào địa chỉ người
gửi, tiêu đề và nội dung của message…
Hầu hết các Email client cho phép đính kèm file, văn bản, hình ảnh… vào message gửi đi
và lưu những đính kèm khác từ message nhận được.
Những Email client phức tạp còn có thể có những chức năng khác nhưng nói chung về
bản chất, đấy là tất cả những gì mà một Email client có.

.I.4.

Hoạt động của một Mail Server đơn giản

Khi đã có Email client trên máy tính thì đã sẵn sàng để gửi và nhận thư điện tử. Tất cả
bạn cần bây giờ là một máy chủ thư điện tử để Email client kết nối đến.
Những hệ thống máy tính trên Internet có thể chạy những phần mềm ứng dụng được
gọi là Server (máy chủ). Chúng gồm những loại server như Web server (máy chủ web),
FTP server (máy chủ truyền file), Telnet server (máy chủ telnet) và Email server (máy chủ
thư điện tử)… Những máy chủ này chạy suốt ngày đêm và kiểm tra những “cổng đặc
biệt” (Specific ports), chờ đợi những chương trình kết nối vào các cổng đó. Một máy chủ
email đơn giản nhất sẽ làm những việc như sau:
Mail Server có một danh sách tài khoản email, với mỗi tài khoản ứng với mỗi người có
thể nhận email trên máy chủ. Tên tài khoản có thể là thanhly, thanhtam hoặc theo một số
quy định khác.
Mail Server sẽ có một file văn bản ứng với mỗi tài khoản trong danh sách. File văn bản
trong danh sách có thể sẽ là thanhly.txt, thanhtam.txt...
Nếu Tâm muốn gửi một message ngắn (ví dụ “Ly, ngày mai học tại phòng Lab 2 nhé.
Tâm”) và chỉ ra rằng bức thư này sẽ được gửi đến cho Ly. Khi người đó ấn chuột vào nút
gửi, Email client sẽ kết nối tới máy chủ thư điện tử và chuyển cho máy chủ tên của người

nhận là Ly, tên của người gửi và nội dung của bức thư.
Máy chủ sẽ định dạng đoạn văn bản ngắn này và gắn nó vào phần cuối của file Ly.txt.
Phần thêm vào của file sẽ có dạng như sau:
 From: Tâm
 To: Ly
 Ly,
Nguyễn Thị Thanh Ly, Nguyễn Thành Tâm, Lớp: 06T1

11


Triển khai Mail Server cho Trường Tân Group




Ngày mai học phòng Lab 2 nhé.
Tâm

Có một vài thông tin mà Mail server phải lưu vào trong file như thời gian nhận và
dòng tiêu đề… nhưng nhìn chung bạn có thể thấy rằng đây là một quá trình vô cùng đơn
giản.
Khi những người khác gửi mesage cho Ly, Mail server sẽ đơn giản là gắn tiếp những
bức thư đó vào phần cuối của file Ly.txt. File văn bản sẽ bao gồm một nhóm 5 hoặc 10
bức thư và cuối cùng Ly sẽ truy nhập vào và đọc chúng. Khi Ly muốn đọc thư, Email
client của cô ấy sẽ kết nối vào máy chủ và trong một tiến trình đơn giản nhất Email client
sẽ:
Hỏi Mail server để gửi một bản sao của file Ly.txt.
Hỏi Mail server để xoá và điều chỉnh lại file Ly.txt.
Lưu file Ly.txt trên máy tính cục bộ.

Phân tích file Ly.txt ra từng bức thư riêng biệt (tìm từ “From” để tách các bức thư).
Hiển thị cho Ly tất cả các message header theo danh sách.
Khi Ly nhấn đúp chuột lên một đầu mục thư, trình duyệt sẽ tìm nội dung thư đó trong
file Ly.txt và hiển thị lên màn hình.

.I.5.

Lợi ích của việc sử dụng Mail

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ử (Mail program).
Tốc độ cao : Vì mail được chuyển qua đường Internet dưới dạng các tín hiệu điện nên
tốc độ di chuyển của mail gần như là tức thời. Với các bức thư tín bình thường, bạn có thể
phải mất một vài ngày để thư có thể tới được địa chỉ cần thiết nhưng với mail, sau cú
click chuột vào nút gửi thư, người nhận đã có thể đọc được nội dung thư của bạn gửi cho
họ.
Chi phí rẻ: Với các thư tín bình thường, bạn phải tốn một khoản chi phí khá lớn khi
gửi các bức thư của mình đi. Còn với mail, bạn chỉ tốn một khoản phí rất nhỏ để kết nối
Internet cùng với chi phí cho dịch vụ mail của bạn. Bạn cũng có thể dùng dịch vụ mail
miễn phí. Khi đó chi phí của bạn cho các bức thư hầu như không đáng kể.
Không có khoảng cách: Với mail, người nhận cho dù ở xa bạn nửa vòng trái đất hay
ngay cùng phòng làm việc với bạn, việc gửi và nhận thư cũng đều được thực hiện gần
như ngay lập tức. Và chi phí cho các bức thư đó cũng đều rẻ như nhau.
Bảo mật : 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.


GVHD: PGS.TS. Võ Trung Hùng

12


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. Đối
với các dịch vụ thư điện tử mới thì dung lượng có thể lên đến hàng GBYTE như dịch vụ
của Gmail chẳng hạn, hay nhiều hơn. Số thư có thể dự trữ trong dung lượng này tương
đương với vài bộ tự điển bách khoa.
Các trường hợp thư phá hoại trên hệ thống bưu điện (như là thư có bột antrax, thư
bom, ...) rất hiếm có nhưng có thể gây thương vong. Ngược lại, hệ thống thư điện tử,
không thể gây thương tích mà thường rất phải đương đầu với nhiều vấn nạn như virus
máy, Spam mail, Mail quảng cáo và các mail có nội dung không lành mạnh. Đối với các
loại thư độc hại (Malicious mail) này người dùng cần phải cài đặt thêm các tiện ích hay
chức năng lọc để giảm trừ. Tuy nhiên, một điều chắc chắn là không có công cụ phần mềm
nào là tuyệt đối.

.II Giới thiệu về hệ thống Mail Server
Có bao giờ bạn nghĩ làm thế nào email được gửi từ máy tính của bạn đi khắp thế giới
không? Máy chủ POP3 (POP3 server) là gì? Làm thế nào nó quản lí email của bạn? Và
còn rất rất nhiều câu hỏi khác nữa. Câu trả lời có thể làm bạn ngạc nhiên, bởi vì hệ thống
email về mặt bản chất rất đơn giản. Chúng ta hãy cùng xem xét xem nó hoạt động như thế
nào?

.II.1. Hệ thống email ngày nay
Một hệ thống thư điện tử bao gồm hai ứng dụng khác nhau cùng chạy trên một máy
chủ. Ứng dụng thứ nhất gọi là máy chủ SMTP (SMTP server - Simple Mail Transfer
Protocol – Giao thức truyền thư đơn giản). Máy chủ SMTP xử lý thư điện tử đi. Ứng
dụng còn lại gọi là máy chủ POP3 (POP3 server – Post Office Protocol – Giao thức hộp
thư). Máy chủ POP3 xử lý thư đến. Một máy chủ thư điện tử điển hình có định dạng như

hình vẽ sau:

Hình 1: Hệ thống Email ngày nay.

Ứng dụng SMTP kiểm soát cổng số 25 trong khi ứng dụng POP3 kiểm soát cổng 110.

.II.1.1.

SMTP Server

Mỗi khi bạn gửi một message, Email client của bạn tương tác với SMTP server để xử
lý việc gửi. SMTP server trên máy chủ của bạn có thể có giao tiếp với SMTP server trên
máy chủ khác để chuyển bức thư đó.

Nguyễn Thị Thanh Ly, Nguyễn Thành Tâm, Lớp: 06T1

13


Triển khai Mail Server cho Trường Tân Group

Hình 2 : SMTP Server

Bạn muốn gửi một bức thư. Định danh của bạn là thanhly, và bạn có tài khoản trên
google.com.vn. Bạn muốn gửi thư cho bạn đang sử dụng email client
Outlook Express.
Khi cài đặt tài khoản trên google.com.vn, bạn chỉ định cho Outlook Express tên của
máy chủ thư điện tử - mail.google.com.vn. Khi soạn thảo bức thư rồi ấn nút gửi, quá
trình xảy ra như sau:
Outlook Express kết nối với SMTP server trên mail.google.com qua cổng 25.

Outlook Express trao đổi với SMTP server và chuyển giao cho nó địa chỉ của người gửi,
địa chỉ của người nhận cũng như nội dung của bức thư.
SMTP server lấy địa chỉ đến và cắt nó thành hai bộ phận.
 Tên người nhận (thanhtam).
 Tên miền (fpt.vn).
Nếu địa chỉ đến là địa chỉ ở cùng miền google.com.vn, SMTP server sẽ dễ
dàng chuyển bức thư đó đến POP3 server trên cùng miền đó (sử dụng một ứng
dụng nhỏ gọi là delivery agent). Khi địa chỉ đến ở miền khác, SMTP server
phải trao đổi thông tin với miền khác.
SMTP server sẽ giao tiếp với DNS server để hỏi địa chỉ IP của SMTP server của miền
fpt.vn. DNS Server sẽ trả lời là một hoặc nhiều địa chỉ IP của SMTP server mà fpt.vn
đang quản lí.
SMTP server ở google.com.vn kết nối với SMTP server ở fpt.vn qua cổng 25 (bằng IP đã
được cung cấp). Nó có sự trao đổi giống như Email client của bạn trao đổi với SMTP
server ở google.com.vn tức là chuyển bức thư (địa chỉ đi, địa chỉ đến, nội dung…) cho
máy chủ fpt.vn. Máy chủ fpt.vn nhận ra rằng tên miền của thanhtam là fpt.vn, nó sẽ

GVHD: PGS.TS. Võ Trung Hùng

14


chuyển tiếp cho POP3 server của chính nó và bức thư sẽ được chuyển vào hộp thư của
thanhtam.
Trong một vài trường hợp, SMTP server tại google.com.vn không thể kết nối với
SMTP server tại fpt.vn, message sẽ được xếp vào một hàng đợi. SMTP server trên hầu hết
các máy chủ sử dụng một chương trình gọi là sendmail để gửi và hàng đợi này được gọi
là sendmail queue. Sendmail sẽ cố gắng gửi lại những message trong queue của nó theo
định kì. Ví dụ nó có thể định kì gửi lại sau mỗi 15 phút. Sau 4 giờ nó sẽ gửi lại cho bạn
một thông điệp nói rằng có một vài lỗi nào đó xảy ra. Sau 5 ngày hầu hết các thiết lập

sendmail sẽ ngừng gửi và gửi trả message của bạn lại cho bạn, báo rằng message không
gửi được (các thiết lập có thể khác nhau tùy theo từng hệ thống).
Về mặt thực tế, sự trao đổi giữa một Email client với một SMTP server rất đơn giản và
dễ hiểu. Nó được gọi là “Yêu cầu cho ý kiến” (RFC – Requests For Comments), và đoạn
trao đổi có dạng điển hình như sau:
helo test
250 mx1.mindspring.com Hello abc.sample.com
[220.57.69.37], pleased to meet you
mail from:
250 2.1.0 Sender ok
rcpt to:
250 2.1.5 jsmith... Recipient ok
data
354 Enter mail, end with "." on a line by itself
from:
to:
subject: testing
John, I am testing...
250 2.0.0 e1NMajH24604 Message accepted
for delivery
quit
221 2.0.0 mx1.mindspring.com closing connection
Connection closed by foreign host.

Email client hỏi và SMTP server trả lời. Email client giới thiệu bản thân nó, thông báo
địa chỉ đi và đến (“from” và “to”), chuyển nội dung của message rồi thoát khỏi tiến trình.
Trong thực tế, chúng ta có thể telnet vào một Mail server qua cổng 25 và có một trong
những đoạn hội thoại như trên. Điều này cho hay tại sao có những thư điện tử giả mạo.
SMTP server hiểu được những lệnh ký tự đơn giản như HELO, MAIL, RCPT và
DATA. Những lệnh thường thấy như sau:

HELO: giới thiệu bản thân.
EHLO: giới thiệu bản thân và yêu cầu “extended mode”.
MAIL FROM: định danh người gửi.
RCPT TO: định danh người nhận.
DATA: định danh nội dung (To:, From: và Subject: thường là 3 dòng đầu)
Nguyễn Thị Thanh Ly, Nguyễn Thành Tâm, Lớp: 06T1

15


Triển khai Mail Server cho Trường Tân Group

RSET: reset
QUIT: thoát khỏi tiến trình.
HELP: lệnh lấy hướng dẫn trợ giúp.
VRFY: xác nhận lại một địa chỉ.
EXPN: mở rộng một địa chỉ.

.II.1.2.

POP3 Server

POP3 server xử lí một tập hợp các file văn bản. Mỗi file ứng với mỗi tài khoản email.
Khi một message được gửi đến, POP3 server chỉ đơn giản là thêm chính message đó vào
phần cuối file của người nhận.
Khi bạn duyệt mail, email client sẽ kết nối vào POP3 server qua cổng 110. POP3
server yêu cầu bạn cung cấp một account name (định danh tài khoản email của bạn) và
password. Sau khi bạn đăng nhập, POP3 server sẽ mở file văn bản của bạn và cho phép
bạn truy xuất nó.
Cũng giống như SMTP server, POP3 server cũng hiểu một tập hợp các lệnh kí tự đơn

giản như sau:
USER: Nhập vào tài khoản định danh của bạn
PASS: Nhập vào mật mã (password) của bạn
QUIT: Thoát khỏi POP3 server
LIST: Liệt kê danh sách message của bạn với kích thước
RETR: Lấy ra message của bạn và chuyển cho nó một con số
DELE: Xóa một message chuyển cho nó một con số
TOP: Hiển thị lên trên cùng x dòng của một message, chuyển cho nó một con số và số
dòng.
Email client của bạn sẽ kết nối vào POP3 server và đưa ra một tập hợp các lệnh để tải
bản sao của message của bạn về máy tính cục bộ. Thông thường, email client sẽ xoá hết
các message trên máy chủ trừ khi bạn bỏ tính năng đó.
Bạn có thể thấy rằng POP3 server đơn giản là phần giao diện giữa email client và file
văn bản chứa những message của bạn. Và ở đây bạn lại thấy POP3 server thật quá đơn
giản. Bạn có thể telnet vào nó qua cổng 110 và tự sử dụng các lệnh nếu bạn muốn.

.II.2. Cấu trúc của hệ thống Mail Server
Cấu trúc và mô hình hoạt động của một hệ thống mail thường có đầy đủ các thành
phần như sau:

GVHD: PGS.TS. Võ Trung Hùng

16


Hình 3: Kiến trúc Mail Server

Chức năng của các thành phần như sau:
Mail User Agent (MUA): đây là các chương trình gửi và nhận mail được cài đặt trên máy
người dùng, nó giúp người dùng quản lý, soạn thảo, nhận và gửi mail một cách tiện lợi và

nhanh chóng. Các chương trình MUA tiêu biểu là: Outlook (Windows), Evolution
(Linux), ThunderBird va Eudora.
Mail Transport Agent (MTA) (thường gọi là Mail Transport Agent, Message Transfer
Agent, or SMTP Daemond): là một dịch vụ trên máy tính có nhiệm vụ chuyển mail từ
máy tính đến một nơi khác (Mail Delivery Agent). Các chương trình cung cấp dịch vụ
MTA tiêu biểu là: Qmail, Sendmail, Postfix (Linux), Edge/Hub Tranpost của MS
Exchange Server (Windows).
Mail Delivery Agent (MDA): là dịch vụ tiếp nhận các mail và phân phối chúng đến các
hộp thư cá nhân. Các chương trình cung cấp dịch vụ tiêu biểu là: Procmail, Mail.local,
rmail (Linux), Mailbox Server trong MS Exchange (Windows).
Mail Submission Agent (MSA): là chương trình nhận mail từ MUA qua cổng 587 (Bảo
mật hơn SMTP cổng 25 vì nó đòi hỏi chứng thực hay các hành động tương tự để chống
spam trong local) và kết hợp với MTA để chuyển mail. Đa số các MTA làm nhiệm vụ
MSA luôn (posfix, Sendmail), trên MS Exchange thì MSA do Mailbox role và Client
receive connector (trên Hub transport role) đảm nhiệm.
Mail Access Agent/ Mail Retrieval Agent (MAA/MRA): MRA là chương trình tìm về
hoặc lấy Mail về từ Remote Mail Server, và kết hợp với MDA để phân phối mail về local
hoặc Remote Mailbox. MAA là dịch vụ cung cấp để truy cập đến tìm kiếm và lấy mail về.
Các chương trình tiêu biểu: IMAP, POP3 Server, Dovecot (Linux), Client Access Server
trên MS Exchange (Windows). MRA bây giờ thường do các MUA đảm nhiệm đó chính là
các POP3, IMAP Client.
Nguyễn Thị Thanh Ly, Nguyễn Thành Tâm, Lớp: 06T1

17


Triển khai Mail Server cho Trường Tân Group

.III Các giao thức truyền nhận mail
.III.1. Giao thức SMTP

.III.1.1.

Giới thiệu

SMTP là một chuẩn truyền tải thư điện tử qua mạng Internet. 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. Giao thức SMTP được thiết kế dựa vào mô hình giao tiếp sau:
User
User

SMTP
Commands / Replies

Sender
Sender
SMTP
SMTP

File
File
System
System

Sender - SMTP

Receiver
Receiver
and Mail


SMTP
SMTP

File
File
System
System

Receiver - SMTP

Hình 4: Mô hình tổng quát sử dụng giao thức SMTP

Khi có yêu cầu từ user về dịch vụ mail, sender-SMTP thiết lập một kênh truyền hai
chiều tới reciever-SMTP. Reciever- SMTP có thể là đích cuối cùng hoặc chỉ là đích trung
gian nhận mail. Các lệnh trong giao thức SMTP được sender-SMTP gởi tới recieverSMTP và reciever-SMTP gởi đáp ứng trở lại cho sender-SMTP.

.III.1.2.

Các lệnh giao dịch SMTP Server

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ữ kết thúc bởi <SP> nếu có những tham số theo sau và
nếu không có thì <CRLF>. Cú pháp của những mailbox phải tuân theo những qui ước của
receiver.
Một phiên giao dịch mail chứa đựng một vài đối tượng dữ liệu, được truyền như là
những đối số cho các lệnh khác nhau. Reverse-path là đối số của lệnh MAIL. Forwardpath là đối số của lệnh RCPT. Và mail data là đối số của lệnh DATA. Những đối số hay
những đối tượng dữ liệu này được truyền đi và 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. Mô hình hiện thực cho cách làm này là những
buffer riêng biệt được cung cấp để lưu trữ kiểu của đối tượng dữ liệu, đó là các buffer

reverse-path, forward-path, và mail data buffer. Những lệnh xác định tạo ra thông tin
được gắn vào một buffer xác dịnh, hoặc xoá đi một hay một số buffer nào đó.

 HELLO (HELO)
Lệnh này được dùng để xác định ra ai là người gởi mail. Vùng đối số chứa host name
của bên gởi.
Bên nhận định danh cho nó đối với sender thông qua việc bắt tay trả lời kết nối.

GVHD: PGS.TS. Võ Trung Hùng

18


Với lệnh này và sự trả lời OK để xác định rằng cả sender và reciever đang ở trạng thái
khởi đầu, tất cả các bảng trạng thái và buffer đã được xoá sạch.

 MAIL
Lệnh này được dùng để khởi tạo quá trình trao đổi mail mà ở đó mail data được phân
phát tới một hay nhiều mailbox. Vùng đối số của lệnh có chứa reverse-path.
Reverse-pat bao gồm một danh sách tuỳ ý các host và mailbox của sender. Khi danh
sách của host được chỉ ra, nó là lộ trình nguồn trở về (reverse source route) và chỉ ra các
host mà mail sẽ được truyền tiếp vận qua các host trong danh sách đó. Danh sách này
được sử dụng như là một lộ trình nguồn để trả lời thông báo không phân phát được cho
sender. Mỗi khi truyền tiếp vận host sẽ thêm vào phần định danh của nó vào đầu danh
sách, nó phải sử dụng tên của nó khi đã được biết trong IPCE nơi mà nó đang truyền tiếp
vận mail hơn là IPCE mà mail đã tới (nếu chúng khác nhau).
Lệnh này sẽ xoá các buffer sau: reverse-path, forward-path, và mail data buffer, và nó
thêm thông tin của reverse-path từ lệnh này vào reverse-path buffer.

 RECIPIENT (RCPT)

Lệnh này được sử dụng để định ra một người nhận mail, nhiều người nhận (cùng một
nội dung mail) sẽ được xác định bằng cách gởi nhiều lệnh này.
Forward - path bao gồm một danh sách tuỳ ý các host và một hộp thư đích cần thiết.
Khi danh sách này được chỉ ra, đó là lộ trình nguồn và cho biết mail sẽ được truyền tiếp
vận tới host kế tiếp nằm trong danh sách. Nếu reciever-SMTP không được hiện thực chức
năng truyền tiếp vận thì thông báo trả về có thể là : không biết local user (550).
Khi mail đã được truyền tiếp vận, host làm công việc này phải bỏ phần định danh nó từ
chỗ bắt đầu forward-path và đặt nó vào chỗ bắt đầu của reverse-path. Khi mail đến được
đích cuối cùng rồi, reciever-SMTP bỏ nó vào trong mailbox với sự đồng ý của host mail
đó.
Lệnh này sẽ chèn đối số là forward-path vào forward-path buffer.

 DATA
Reciever sẽ xử lý những dòng theo sau lệnh khi mail data đến từ sender. Lệnh này tạo
ra mail data để đặt vào mail data buffer. Mail data có thể chứa bất kỳ ký tự nào trong bộ
mã ASCII.
Mail data được kết thúc bởi một dòng mà nó chỉ chứa một dấu chấm “ .”.
Sự kết thúc mail data để yêu cầu receiver phải xử lý việc lưu trữ thông tin trong phiên
giao dịch mail ngay. Quá trình xử lý này sử dụng thông tin nằm trong reverse-path buffer,
trong forward-path buffer, và trong mail data buffer, khi hoàn tất lệnh này những buffer
này sẽ bị xoá. Nếu quá trình xử lý thành công, reciever phải gởi trả lời OK. Nếu bị lỗi,
reciever phải gởi thông báo lỗi.
Khi reciever chấp nhận một message cho sự truyền tiếp vậnän hoặc phân phát đến
đích cuối cùng, nó thêm vào chỗ khởi đầu của mail data một dòng đánh dấu thời gian.
Dòng đánh dấu thời gian chỉ ra định danh của host mà nó nhận message, và ngày tháng và

Nguyễn Thị Thanh Ly, Nguyễn Thành Tâm, Lớp: 06T1

19



Triển khai Mail Server cho Trường Tân Group

thời gian mà mailđược nhận. Những message được truyền tiếp vận sẽ có nhiều dòng
đánh dấu thời gian.
Khi reciever tạo ra “final delivery” của một message, nó thêm vào đầu của mail data
một dòng đường dẫn quay về. Đường dẫn quay về duy trì thông tin trong <reverse-path>
từ lệnh MAIL. Ở đây, “final delivere” có nghĩa là message thoát khỏi môi trường SMTP.
Thông thường điều này có nghĩa là nó đã được phân phát tới user đích, nhưng trong một
vài trường hợp nó có thể được xử lý tiếp và được truyền đi bằng một hệ thống mail khác.

 SEND
Lệnh này được dùng để khởi tạo sự truyền mail mà ở đó maildata sẽ được truyền đi tới
một hay nhiều terminal. Vùng đối số chứa phần reverse-path. lệnh thực thi thành công khi
message được phân phát tới terminal.
Reverse-path bao gồm một danh sách tuỳ ý các host và mailbox của sender. Khi danh
sách của host được chỉ ra, nó là lộ trình nguồn quay về và chỉ ra rằng mail đã được
truyền tiếp vận thông qua mỗi host trên danh sách. Danh sách này được dùng như là lộ
trình nguồn để trả về thông báo non-delivery cho sender. Mỗi khi truyền tiếp vận, host
thêm phần định danh của chính nó vào chỗ bắt đầu của danh sách, nó phải sử dụng tên
của nó khi đã biết trong IPCE mà ở đó mail được truyền tiếp vận hơn là mail được truyền
tới ( nếu chúng có sự khác nhau).
Lệnh nay sẽ xoá các buffer sau : reverse-path, forward-path, và mail data buffer, đồng
thời nó thêm reverse-path ở lệnh này vào reverse-path buffer.

 SEND OR MAIL (SOML)
Lệnh này được sử dụng để khởi tạo sự truyền mail mà ở đó mail data một hay nhiều
terminal hoặc các mailbox. Đối với người nhận, mail data được phân phát tới terminal
của người nhận nếu người nhận có tích cực, trái lại, là mailbox của người nhận. Lệnh này
thành công khi message được phân phát tới terminal hoặc là mailbox.

Reverse-path bao gồm một danh sách tuỳ ý các host và mailbox của sender. Khi danh
sách này được chỉ ra,nó là lộ trình nguồn quay về và chỉ ra mail đã được truyền tiếp vận
thông qua những host trong danh sách. Danh sách này được dùng như là lộ trình nguồn
để trả về thông báo non-delivery cho sender. Mỗi khi có sự truyền tiếp vận, host thêm
phần định danh của chính nó vào đầu danh sách, nó phải sử dụng tên của nó khi đã biết
trong IPCE mà ở đó mail được truyền tiếp vận hơn là mail được truyền tới ( nếu chúng có
sự khác nhau).
Lệnh này sẽ xoá đi các buffer sau: reverse-path, forward-path, và mail data buffer,
đồng thời nó thêm thông tin reverse-path từ lệnh này vào reverse-path buffer.

 SEND AND MAIL (SAML)
Lệnh này được sử dụng để khởi tạo sự truyền mail mà ở đó mail data một hay nhiều
terminal hoặc các mailbox. Đối với người nhận, mail data được phân phát tới terminal
của người nhận nếu người nhận có tích cực, và đối với mọi người nhận mail sẽ tới
mailbox của những người nhận đó.
Vùng đối số chứa đựng một reverse-path. Lệnh này thành công khi, message được
phân phát tới mailbox.

GVHD: PGS.TS. Võ Trung Hùng

20


Reverse-path bao gồm một danh sách tuỳ ý các host và mailbox của sender. Khi danh
sách này được chỉ ra,nó là lộ trình nguồn quay về và chỉ ra mail đã được truyền tiếp vận
thông qua những host trong danh sách. Danh sách này được dùng như là lộ trình nguồn
để trả về thông báo non-delivery cho sender. Mỗi khi có sự truyền tiếp vận, host thêm
phần định danh của chính nó vào đầu danh sách, nó phải sử dụng tên của nó khi đã biết
trong IPCE mà ở đó mail được truyền tiếp vận hơn là mail được truyền tới ( nếu chúng có
sự khác nhau).

Lệnh này sẽ xoá đi các buffer sau: reverse-path, forward-path, và mail data buffer,
đồng thời nó thêm thông tin reverse-path từ lệnh này vào reverse-path buffer.

 RESET (RSET)
Lệnh này xác định sự truyền mail hiện tại đã 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ố là đị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 đối số là 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 đã xác định đầy đủ được trả về trong một reply gồm nhiều dòng.Lệnh này không
ảnh hưởng đến reverse-path buffer, forward-path buffer và data mail buffer.

 HELP
Lệnh này cho receiver những thông tin giúp đỡ cho sender. 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.
Lệnh này không ảnh hưởng đến reverse-path buffer, forward-path buffer và data mail
buffer.

 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. Lệnh này không ảnh
hưởng đến reverse-path buffer, forward-path buffer và data mail buffer.


 QUIT
Lệnh này định rõ receiver phải gửi một reply OK và sau đó đóng kênh truyền.
Receiver sẽ không đóng kênh truyền 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 truyền 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
mà kết nối bị đóng trước thời gian mong muốn receiver sẽ làm việc như nếu 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

Nguyễn Thị Thanh Ly, Nguyễn Thành Tâm, Lớp: 06T1

21


Triển khai Mail Server cho Trường Tân Group

“undo” những đã truyền hoàn tất trước đó) sender sẽ hành động ngay khi lệnh hay quá
trình truyền đó trong quy trình nhận được một lỗi tạm thời (4xx).

 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.
Nếu program-A hiện tại là một sender-SMTP và nó gửi một lệnh TURN và nhận một
reply OK (250) thì program-A trở thành receiver-SMTP sau đó program-A sẽ trong trạng
thái khởi động ngay khi kênh truyền đã được mở, và sau đó nó gởi lời chào là hỏi dịch vụ
đã sẵn sàng (220). Nếu chương trình B hiện tại là reciever và nó nhận được lệnh TURN
và nó trả lời OK thì B trở thành sender. B khi đó ở trạng thái khởi tạo ngay khi kênh
truyền được mở, và nó chờ nhận trả lời dịch vụ đã sẵn sàng (220).
Để từ chối thay đổi vai trò receiver gửi một reply 502.

Có một vài hạn chế về trật tự khi dùng những lệnh này.Đầu tiên trong một phiên trao
đổi phải là lệnh HELLO, lệnh này có thể được dùng sau đó trong một cuộc trao đổi khác.
Nếu đối số trong lệnh HELLO không được chấp nhận, một reply failure 501 phải được trả
về và receiver-SMTP đó phải ở trong cùng trạng thái.
Các lệnh NOOP, HELP, EXPN, và VRFY có thể được sử dụng vào bất kỳ thời điểm
nào.
Các lệnh MAIL, SEND, SAML bắt đầu cho sự truyền mail. Khi được khởi động, sự
truyền mail bao gồm một trong các lệnh khởi tạo, một hoặc nhiều lệnh RCPT và lệnh
DATA. Sự truyền mail có thể bị huỷ bỏ bởi lệnh RSET. Có thể có nhiều hoặc không có sự
truyền nào trong một phiên truyền.
Nếu đối số bắt đầu phiên truyền không được chấp nhận, thông báo 501 failure phải
được trả về và reciever-SMTP phải nằm trong cùng trạng thái. Nếu các lệnh trong phiên
truyền không có thứ tự, thì thông báo 503 failure sẽ được trả về và reciever-SMTP phải
nằm trong cùng trạng thái.
Lệnh cuối cùng trong phiên truyền là lệnh QUIT. Lệnh này không thể được sử dụng tại
bất kỳ thời gian nào trong phiên truyền.

.III.1.3.

Cú pháp của các 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>
GVHD: PGS.TS. Võ Trung Hùng

22


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>

.III.1.4.

Các reply của SMTP Server

Sự trả lời cho những lệnh của SMTP được đặt ra để đảm bảo cho sự đồng bộ cho các
yêu cầu và những hoạt động trong quy trình truyền mail, và để bảo đảm rằng senderSMTP luôn luôn biết trạng thái của reciever-SMTP. Mỗi lệnh SMTP phải tạo ra chính xác
một reply.
Một reply SMTP bao gồm một số ba chữ số (được truyền như ba ký tự chữ số) và theo
sau là một số văn bản (text). Số đó được sử dụng một cách tự động để xác định trạng thái
đưa vào kế tiếp. Text ở trên là dành cho người sử dụng. Ba chữ số đó được ấn định chứa

đầy đủ thông tin được mã hoá mà 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ể phụ thuộc vào receiver
và vào ngữ cảnh, vì vậy có sự giống nhau trong sự phân biệt text cho từng mã reply.
Reply codes by function groups:
500: Lỗi cú pháp, không nhậ dạng được lệnh.
501: Lỗi cú pháp về thông số hoặc đối số.
503: Chuổi lệnh lỗi.
504: Thông số lệnh không có.
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 truyền.
421: <domain> dịch vụ không dùng được, đóng kênh truyền.
250: Hành động mail yêu cầu OK, hoàn thành.
Nguyễn Thị Thanh Ly, Nguyễn Thành Tâm, Lớp: 06T1

23


Triển khai Mail Server cho Trường Tân Group

251: User không cục bộ, sẽ hướng đến “forward-path”.
450: Mail được yêu cầu không có, mailbox không tồn tại.
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ộ, thử lại <forward-path>.
452:Hành động được yêu cầu không thu được : hệ thống lưu trữ không đủ.
552: Bỏ qua hành động yêu cầu mail : vượt quá cấp phát lưu trữ.
553: Hành động được yêu cầu không chấp nhận: tên mailbox không cho phép [như sai cú
pháp mailbox].
354:Khởi động việc nhận mail; kết thúc với <CLRF>.<CLRF>.

554:Tryuền bị bị sai.

.III.1.5.

Nghi thức mở rộng 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 :<thanhly@sample> SIZE=1000000

.III.2. Giao thức POP3
.III.2.1.

Giới thiệu

POP3 là một giao thức chuẩn trên internet cho phép một một workstation có thể truy
xuất động đến một maildrop trên một server từ xa. Có nghĩa là Pop3 được dùng để cho
phép workstation lấy mail mà server đang giữ nó.
Port chuẩn dành cho dịch vụ Pop3 đươc qui ước là TCP port 110. Pop3 server sẽ khởi

động và lắng nghe trên port này. Một client muốn sử dụng các dịch vụ của Pop3 thì nó
phải thiết lập một kết nối tới Pop3 server. Khi kết nối được thiết lập thì Pop3 server sẽ gởi
tới client một lời chào. Sau đó, Pop3 Client và Pop3 Server sau đó trao đổi các request và
reply cho đến khi kết nối được đóng hay loại bỏ.
Các lệnh trong Pop3 không phân biệt chữ thường và chữ hoa, bao gồm một tập từ khoá
(chiều dài từ 3 đến 4 ký tự), có thể có hoặc không có đối số theo sau (chiều dài của đối số
GVHD: PGS.TS. Võ Trung Hùng

24


có thể lên đến 40 ký tự). Các từ khoá và đối số phân cách nhau bởi một ký tự trắng đơn,
và không phải là các ký tự đặc biệt.
Các reply trong Pop3 bao gồm phần chỉ định trạng thái và từ khoá có thể có các thông
tin hỗ trợ theo sau. Chiều dài của reply có thể lên tới 512 ký tự, kết thúc bằng cặp CRLF.
Có hai loại chỉ định trạng thái là: “+OK” và “-ERR”. Server phải gởi các chỉ định trạng
thái ở dạng chữ hoa.
Reply cho các lệnh có thể bao gồm nhiều dòng. Sau khi dòng đầu tiên và cặp ký tự
CRLF được gởi đi, các dòng thêm vào được gởi đi, mỗi dòng kết thúc bằng một cặp
CRLF. Dòng cuối là ký tự “.” và cặp ký tự CRLF. Nếu có dòng nào bắt đầu bằng ký tự “.”
thì phải kiểm tra xem có phải là cặp ký tự kết thúc CRLF.
Một Pop3 session sẽ phải trải qua các trạng thái: xác nhận (Authorization), giao dịch
(transaction) và trạng thái cập nhật (Update).
Trong trạng thái xác nhận, client phải thông báo cho server biết nó là ai. Khi server đã
xác nhận được client, session sẽ đi vào trạng thái giao dịch. Trong trạng thái này, client
hoạt động bằng cách gởi các request tới server. Khi client gởi lệnh “QUIT”, session sẽ đi
vào trạng thái cập nhật (Update). Trong trạng thái này, Pop3 server giải phóng các tài
nguyên và gởi lời tạm biệt. Sau đó kết nối TCP đóng lại.
Các reply của Pop3 Server cho Pop3 client sẽ là “-ERR” nếu lệnh không nhận ra được
bởi Pop3 server, hoặc không thực hiện được, hoặc sai cú pháp, hoặc sai trạng thái.

Một Pop3 server có một khoảng thời gian time out. Khi xảy ra time out, session không
đi vào trạng thái cập nhật (Update) mà server sẽ tự đóng kết nối TCP mà không xoá bất
kỳ message nào hay gởi đáp ứng cho client.

.III.2.2.

Các trạng thái của POP3

Một khi kết nối TCP được mở ra bởi một Pop3 client. Pop3 server sẽ gởi lại cho Pop3
client một lời chào.
Ví dụ :
S: +OK POP3 server ready

.a

Trạng thái xác nhận (authorization)

Sau khi Pop3 server gởi lời chào, session sẽ đi vào trạng thái xác nhận (authorization).
Lúc này, Pop3 client phải định danh và xác nhận nó với Pop3 server. Để thực hiện việc
này, client phải sử dụng kết hợp các lệnh USER và PASS.
Đầu tiên, client sẽ gởi lệnh “USER username”, nếu Pop3 server trả lời với chỉ thị trạng
thái “-ERR” thì client có thể đưa ra một lệnh xác nhận mới hay có thể đưa ra lệnh
“QUIT”.
Nếu Pop3 server trả lời với chỉ thị trạng thái “+OK”, thì client có thể gởi tiếp lệnh
“PASS password” để hoàn tất sự xác nhận hoặc gởi lệnh “QUIT” để kết thúc session.
Khi client phát ra một lệnh “PASS”, POP3 server dùng cặp đối số từ lệnh USER và
PASS để xác định nếu đúng client sẽ cho truy xuất đến maildrop thích hợp.
Sau khi trải qua quá trình xác nhận, Pop3 server sẽ cho phép client truy xuất tới những
mailbox thích hợp. Lúc này, Pop3 server sẽ tạo ra một khoá truy xuất loại trừ trên
Nguyễn Thị Thanh Ly, Nguyễn Thành Tâm, Lớp: 06T1


25


Triển khai Mail Server cho Trường Tân Group

maildrop để đảm bảo cho message không bị sửa đổi hay bị xoá trước khi session đi vào
trạng thái cập nhật (Update). Nếu thành công, Pop3 server sẽ trả lời với chỉ thị trạng thái
“+OK” và session sẽ đi vào trạng thái giao dịch (transaction) mà không có message bị
đánh dấu xoá. Nếu maildrop không mở được vì một lý do nào đó (ví dụ: sai khoá, client
bị từ chối truy xuất tới maildrop này), Pop3 server sẽ trả lời với chỉ thị trạng thái “-ERR”
và server sẽ đóng kết nối. Nếu kết nối không bị đóng thì client có thể gởi lệnh xác nhận
mới và bắt đầu trở lại hoặc có thể phát ra lệnh “QUIT”.
Sau khi Pop3 server mở được maildrop, nó gán số thứ tự cho mỗi message và biểu thị
kích thước message theo byte.
Chú ý rằng, đây là thông tin phản hồi từ phía POP3 Server. Dấu ”+” có nghĩa là thành
công, ngược lại, dấu ”-” là không thành công bị lỗi. Phiên làm việc POP3 hiện tại đang ở
trạng thái AUTHORIZATION. Phía Client bây giờ cần phải đưa vào các lệnh để xác định
người nhận thư cho POP3 Server.
.b

Trạng thái giao dịch (transaction)

Sau khi Pop3 server đã xác nhận thành công client, và mở cho nó một maildrop thích
hợp. Session sẽ bước vào trạng thái giao dịch (transaction). Lúc này, Pop3 client có thể
gởi các request cho Pop3 server (các request có thể được gởi nhiều lần, tức là có thể lặp
lại), và cứ sau mỗi request thì Pop3 server sẽ phản hồi lại cho Pop3 client một reply. Cuối
cùng, nếu client phát ra lệnh “QUIT” thì session sẽ đi vào trạng thái cập nhật (Update).
.c


Trạng thái cập nhật (Update)

Khi client phát ra lệnh “QUIT” từ trạng thái giao dịch (transaction), session sẽ đi vào
trạng thái cập nhật (Update). Nếu client phát ra lệnh “QUIT” từ trạng thái xác nhận
(authorization), session sẽ kết thúc nhưng không đi vào trạng thái cập nhật.
Nếu session kết thúc vì các lý do khác sau đó một lệnh “QUIT” được phát ra từ client,
session sẽ không đi vào trạng thái cập nhật (Update) và phải không xoá một message nào
từ maildrop.

.III.2.3.

Các lệnh của POP3

.a
Các lệnh có tác dụng trong quá trình xác nhận (authorization)
 USER username
Đối số username là một chuỗi định danh một mailbox, chỉ có ý nghĩa đối với server.
Trả lời: +OK tên mailbox có hiệu lực.
-ERR không chấp nhận tên mailbox.

 PASS string
Đối số là một password cho mailbox hay server.
Trả lời: +OK khoá maildrop và sẵn sàng.
-ERR password không hiệu lực.
-ERR không được phép khoá maildrop.

GVHD: PGS.TS. Võ Trung Hùng

26



×