Tải bản đầy đủ (.pdf) (78 trang)

xây dựng giải pháp toàn bộ cho hệ thống thư điện tử trên nền tảng hệ điều hành linux

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.17 MB, 78 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trần Thế Anh
XÂY DỰNG GIẢI PHÁP TOÀN BỘ CHO
HỆ THỐNG THƯ ĐIỆN TỬ TRÊN NỀN TẢNG
HỆ ĐIỀU HÀNH LINUX
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin
HÀ NỘI - 2007
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trần Thế Anh
XÂY DỰNG GIẢI PHÁP TOÀN BỘ CHO
HỆ THỐNG THƯ ĐIỆN TỬ TRÊN NỀN TẢNG
HỆ ĐIỀU HÀNH LINUX
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin
Cán bộ hướng dẫn: ThS Nguyễn Nam Hải
Cán bộ đồng hướng dẫn: ThS Đoàn Minh Phương
HÀ NỘI - 2007
LỜI CẢM ƠN
Để hoàn thành khóa luận tốt nghiệp này, tôi đã nhận được nhiều sự quan tâm
giúp đỡ, dạy bảo từ các thầy cô, anh chị và bạn bè tôi.
Đầu tiên, tôi xin được gửi lời cảm ơn chân thành nhất đến thầy Nguyễn Nam Hải,
người thầy đã tận tình hướng dẫn tôi trong suốt quá trình thực hiện khóa luận này.
Tôi xin được cảm ơn thầy Đoàn Minh Phương, thầy đã tạo điều kiện, cung cấp
những tài liệu bổ ích, và chỉ bảo tỉ mỉ cho tôi hoàn thành khóa luận.
Tôi cũng xin cảm ơn các anh, chị sinh viên K46, K47 và các bạn bè sinh viên đã
động viên, khuyến khích tôi rất nhiều trong suốt quá trình học tập cũng như thực hiện
khóa luận này.
Mặc dù khóa luận được hoàn thành với tất cả tinh thần trách nhiệm, nghiêm túc


và cố gắng hết mình, nhưng với kinh nghiệm, kiến thức và khả năng của bản thân còn
hạn chế, nên khóa luận không tránh khỏi những thiếu sót, vì vậy tôi rất mong nhận
được sự quan tâm, chia sẻ và góp ý của thầy cô, bạn bè để có thể hoàn thiện khóa luận
này tốt hơn.
i
Hà Nội, ngày 20 tháng 5 năm 2007
Sinh viên
Trần Thế Anh
TÓM TẮT NỘI DUNG KHÓA LUẬN
Ngày nay, thư điện tử đã trở thành một dịch vụ rất phổ biến trên toàn thế giới. Tại
Việt Nam, đa số các trường học, cơ quan, đơn vị trong cả nước cũng đã triển khai một
hệ thống thư điện tử riêng cho mình. Tuy nhiên, đa số đó đều là các sản phẩm thương
mại rất đắt tiền được bẻ khóa hoặc các sản phẩm mã nguồn đóng chạy trên nền
Windows. Vì vậy, khóa luận này tập trung nghiên cứu các kiến thức cơ bản về hệ
thống thư điện tử, từ đó đề xuất một sản phẩm mã nguồn mở là Qmail để triển khai
cho các cơ quan, trường học, đơn vị tại Việt Nam với chi phí rất thấp. Vì bản thân
Qmail chỉ là một máy chủ gửi/nhận thư nên để đáp ứng được các yêu cầu và đảm bảo
an toàn cho một hệ thống thư điện tử, khóa luận cũng nghiên cứu và tích hợp các thành
phần khác như LDAP, POP3, Webmail, Qmail-Scanner… Bên cạnh đó, khóa luận còn
tìm hiểu về khái niệm thư rác, một số kỹ thuật chống thư rác và cài đặt các kỹ thuật đó
với Qmail nhằm góp phần giải quyết “vấn nạn” thư rác hiện nay. Kết quả khóa luận là
một bộ cài đặt hệ thống thư điện tử với các chức năng cơ bản và một số thành phần
tích hợp thêm. Bộ cài đặt được phân phối cho các đơn vị, doanh nghiệp hoặc người
dùng đơn lẻ sử dụng, tùy biến cũng như phát triển miễn phí.
ii
MỤC LỤC
LỜI CẢM ƠN i
TÓM TẮT NỘI DUNG KHÓA LUẬN ii
MỤC LỤC iii
DANH SÁCH THUẬT NGỮ vi

BẢNG KÝ HIỆU VIẾT TẮT vii
MỞ ĐẦU 1
Chương 1. QMAIL 3
1.1. Tổng quan về hệ thống thư điện tử .3
1.1.1. Thư điện tử và nhu cầu sử dụng thư điện tử hiện nay 3
1.1.2. Cấu trúc hệ thống thư điện tử 5
1.1.3. Cách thức hoạt động hệ thống thư điện tử 7
1.1.4. Những giao thức hay gặp trong truyền/nhận thư điện tử 8
1.1.5. Đánh giá hệ thống thư điện tử 9
1.1.6. Giải pháp với hệ điều hành Linux 10
1.2. Qmail () 11
1.2.1. Giới thiệu 11
1.2.2. Giấy phép sử dụng Qmail 14
1.2.3. Tính ưu việt của Qmail 14
1.2.4. Tính năng 19
1.2.5. Bổ sung cần thiết 20
1.3. Các thành phần kết hợp với Qmail 22
1.3.1. Hệ điều hành Fedora () 22
1.3.2. Máy chủ xác thực LDAP server () 22
1.3.3. Squirrelmail () 23
1.3.4. Máy chủ web Apache Server () 24
iii
1.3.5. Hệ quản trị cơ sở dữ liệu MySQL () 24
1.3.6. Máy chủ POP3/IMAP dovecot () 24
1.3.7. Qmail-Scanner () 25
1.3.8. Daemon Tools & TCP Server 25
Chương 2. THƯ RÁC VÀ CÁC KỸ THUẬT LỌC THƯ RÁC 27
2.1. Thư rác 27
2.1.1. Đặc điểm của thư rác 27
2.1.2. Các đặc trưng của thư rác 28

2.2. Các biện pháp loại bỏ thư rác 30
2.2.1. Danh sách tên miền đen (DNS-based Blackhole Lists) 32
2.2.2. Lọc thư rác dựa theo chuẩn SMTP 33
2.2.3. Danh sách xám (Greylisting) 35
2.2.4. Lọc dựa vào checksum (kiểm tra tổng) 36
2.2.5. Chứng thực và danh tiếng 37
2.2.6. Lọc thư rác dựa vào nội dung 37
2.2.7. Danh sách SURBL 39
2.2.8. Lọc thư rác dựa vào thống kê 39
2.2.9. Bộ lọc Bayesian 40
2.2.10. Lọc thư rác bằng ước lượng 41
2.3. Một số cài đặt thực tế 41
2.3.1. Spam Assassin () 41
2.3.2. Chống thư rác đối với người dùng cuối 43
Chương 3. ĐÓNG GÓI CÀI ĐẶT 45
3.1. Cài đặt và cấu hình Ldap 46
3.2. Cài đặt và cấu hình Qmail 48
3.3. Cài đặt và cấu hình Dovecot (IMAP/POP3 server) 49
3.4. Cài đặt và cấu hình Squirrelmail 50
iv
3.5. Cài đặt và cấu hình SpamAssassin 54
Chương 4. KẾT QUẢ CÀI ĐẶT 58
4.1. Đáp ứng các chức năng gửi/nhận thư điện tử 58
4.2. Máy chủ hỗ trợ giao thức SMTP AUTH với TLS 59
4.3. Máy chủ hỗ trợ phương pháp lọc thư rác dựa vào DNS 62
4.4. Máy chủ hỗ trợ phương pháp lọc thư rác dựa vào nội dung 62
4.5. Máy chủ hỗ trợ phương pháp lọc thư rác sử dụng bộ lọc BayesSpam64
4.6. Đánh giá chung 66
KẾT LUẬN 67
TÀI LIỆU THAM KHẢO 68

WEBSITE THAM KHẢO 68
v
DANH SÁCH THUẬT NGỮ
Linux: Hệ điều hành dẫn xuất từ Unix, là sản phẩm Mã nguồn mở
Linux Distribution (Distro): Bản phân phối của hệ điều hành Linux
Mail/Email: Thư điện tử, thông điệp điện tử
Spam/Smail mail: Thư rác
Advertisement Mail: Thư quảng cáo
Malicious Mail: Thư độc hại
Chain Mail: Thư dây chuyền
Server: Máy chủ
Mail server: Máy chủ thư điện tử
Client: Máy khách
Virus: Chương trình máy tính có gây hại.
Account: Tài khoản
Mail Relay: Chuyển tiếp thư
Mail List/Mailing-list: Danh sách thư
Virtual Domain: Tên miền ảo
Proxy: Máy chủ trung gian
vi
BẢNG KÝ HIỆU VIẾT TẮT
Ký hiệu Diễn giải Dịch nghĩa
DNS Domain Name System Hệ thống tên miền
DNSBL DNS-based Blackhole List Danh sách tên miền đen
Email Electronic Mail Thư điện tử
FQDN Fully Qualified Domain Name Tên miền bị hạn chế
GNU GNU’s Not Unix
Tên tổ chức Mã nguồn mở nổi
tiếng
GPL General Public License Giấy phép công cộng

IMAP
Internet Message Access
Protocol
Giao thức nhận thư Internet
ISP Internet Service Provider Nhà cung cấp dịch vụ Internet
MDA Mail Delivery Agent Thành phần phân phối thư
MIME
Multipurpose Internet Mail
Extensions
Định dạng mở rộng thư
MTA Mail Transfer Agent Thành phần truyền thư
MUA Mail User Agent
Thành phần tương tác người
dùng
MX Mail Exchange
Bản ghi tới máy chủ thư điện tử
của máy chủ DNS
POP Post Office Protocol Giao thức nhận thư POP
RPM RPM Package Manager
Chương trình quản lý gói tin
RPM
SMTP Simple Mail Transfer Protocol Giao thức gửi thư đơn giản
vii

MỞ ĐẦU
Theo thống kê, trên hệ thống mạng toàn cầu mỗi ngày có hàng tỷ USD giao dịch
thương mại được thực hiện (ước khoảng 2 ngàn tỷ USD giao dịch thương mại trực
tuyến mỗi năm). Một trong số những phương tiện được sử dụng để giao dịch nhiều
nhất đó là các hệ thống thư tín điện tử mà nổi bật trong đó là Google với Gmail, Yahoo
với Yahoo Mail… Tuy nhiên, chính số lượng giao dịch, khối lượng hàng hoá và tiền

bạc khổng lồ đang được lưu chuyển trên không gian mạng lại là nguyên nhân xâu xa
dẫn đến nạn thư rác (spam) ngày nay. Theo dự đoán của công ty nghiên cứu Radicati
Group (California, Mỹ), năm 2007 sẽ có khoảng 50 tỉ email là thư rác điện tử xuất
hiện/ngày, làm tiêu tốn 200 tỉ USD/năm, gây thiệt hại lớn cho cộng đồng sử dụng
mạng toàn cầu.
Tại Việt Nam, hầu hết các cơ quan, trường học, đơn vị hay doanh nghiệp đều đã
có hệ thống máy tính riêng và triển khai dịch vụ thư tín điện tử trên hệ thống máy tính
đó. Tuy nhiên, theo thống kê, đa số các đơn vị đều dùng những phiên bản đã bẻ khóa
của các sản phẩm phần mềm thương mại như MDaemon, Microsoft Exchange…Hoặc
một số đơn vị sử dụng các sản phẩm giá rẻ nhưng lại có hiệu năng không tốt như Kerio
Mail Server, Surge Mail Server… Lấy ví dụ như Đại học Quốc Gia
(), Đại học Bách Khoa Hà Nội () hay Sở
Giáo dục & Đào tạo Hà Nội () đều sử dụng một phiên bản đã
bẻ khóa của phần mềm MDaemon. Việc này gây nhiều cản trở đối với sự phát triển
công nghệ thông tin trong nước, đồng thời đó cũng là sự lãng phí lớn vì MDaemon
buộc phải chạy trên nền hệ điều hành Windows và kèm theo các phần mềm thương
mại có phí khác. Hơn nữa, khi sử dụng các phầm mềm thương mại (thường là mã
nguồn đóng và chạy trên nền hệ điều hành Windows), các tính năng và khả năng tùy
biến thường bị hạn chế rất nhiều. Người quản trị không thể tích hợp các thành phần bổ
sung khác nhằm đáp ứng một số nhu cầu mới phát sinh vào một hệ thống sử dụng các
sản phẩm thương mại.
Trước nhu cầu và thực tế đó, khóa luận đã được thực hiện với các mục đích:
- Giải quyết nhu cầu về một hệ thống thư điện tử chi phí thấp, có khả năng
tùy biến cao với các thành phần là sản phẩm mã nguồn mở dành cho các
đơn vị, cơ quan, trường học tại Việt Nam.
- Cung cấp các dịch vụ, chức năng cơ bản và mở rộng của hệ thống thư
điện tử với nền tảng là Qmail.
1
- Cung cấp một số kỹ thuật lọc thư rác hiệu quả cho hệ thống thư điện tử
nhằm đảm bảo và nâng cao tính an toàn, ổn định của hệ thống.

Nội dung của khóa luận bao gồm:
- Nghiên cứu về cấu trúc và các thành phần cơ bản của một hệ thống thư
điện tử.
- Xem xét các MTA mã nguồn mở phổ biết hiện nay, từ đó lựa chọn ra
Qmail (là một sản phẩm mã nguồn mở với nhiều ưu điểm nổi trội) để
nghiên cứu sâu hơn và đóng gói.
- Nghiên cứu và tích hợp các thành phần chức năng của hệ thống thư điện
tử vào Qmail như: LDAP, POP3, IMAP, Webmail, Qmail-Scanner…
- Ngoài ra, khóa luận đi sâu tìm hiểu về thư rác, nên sẽ đề cập nhiều đến
một số kỹ thuật lọc và chống thư rác và ứng dụng cài đặt vào Qmail.
2
Chương 1.QMAIL
1.1.Tổng quan về hệ thống thư điện tử
1.1.1.Thư điện tử và nhu cầu sử dụng thư điện tử hiện nay
Thư điện tử là một phương thức gửi và nhận thông tin qua các hệ thống giao tiếp
điện tử. Được ra đời từ những năm 1970, trong thời kỳ đầu quá trình gửi và nhận thư
điện tử diễn ra rất đơn giản, thường chỉ là chuyển các tệp tin giữa các hệ thống máy
chủ lớn với nhau. Chỉ về sau này, khi mạng toàn cầu (Internet) phát triển mạnh mẽ và
ngày càng phức tạp, nhiều công cụ tiên tiến mới được viết ra như Sendmail (năm
1980) để thực hiện việc gửi và nhận thư thông qua nhiều loại mạng khác nhau.
Thư điện tử là một phương tiện truyền thông tin rất nhanh chóng và tiện lợi.
Thông tin truyền đi có thể được truyền ở dạng mã hoá hoặc dạng thông thường. Một
bức thư điện tử được gửi đi có thể đi qua rất nhiều máy chủ khác nhau trên mạng
Internet và cuối cùng đến được một hay nhiều máy người nhận cùng lúc chỉ trong
vòng vài chục giây.
Có hai kiểu định dạng nội dung thư điện tử phổ biến được sử dụng rộng rãi nhất
đó là dạng văn bản thô (Plain Text) và dạng siêu văn bản (HTML). Kiểu văn bản thô
cho phép người sử dụng có thể đọc được nội dung của thư thoải mái mà không gặp vấn
đề gì. Trong khi đó, muốn sử dụng được kiểu siêu văn bản, người dùng cần có hệ
thống hỗ trợ kiểu này. Ưu điểm của định dạng kiểu siêu văn bản là cho phép người

dùng chèn thêm những liên kết và hình ảnh vào bức thư, trình bày thư tự nhiên và có
thể thay đổi được các kiểu chữ. Ngoài ra, thư điện tử ngày nay còn cho phép gửi nhận
hình ảnh, âm thanh, đa phương tiện hết sức sống động tương thích với định dạng siêu
văn bản. Thông thường, mỗi thư dạng siêu văn bản đều có một bản sao chép dạng văn
bản thô (được sinh tự động) để giải quyết vấn đề tương thích.
Đặc điểm của thư điện tử khi so sánh với bưu chính thông 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
3
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. Đố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 tính, các thư rác (spam mail), các thư quảng
cáo (advertisement mail) và các thư khiêu dụ tình dục (pornography mail), đặc
biệt là cho trẻ em, thì lại rất nhiều. Đố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
(sẵn có trong phần mềm hay phải mua thêm) để 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 hảo.
Các dạng thư dây chuyền (chain mail) trong đó người nhận lại chuyển đi nội
dung lá thư cho một hay nghiều người khác thường cũng phổ biến trong cả hai
hệ thống bưu chính và thư điện tử. Khả năng ảnh hưởng về thông tin của hai
loại này là tương đương mặc dù thư điện tử dây chuyền có nhiều xác suất gây
nhiễm virus máy tính.
Hộp thư là nơi cất giữ các thư từ với địa chỉ hẳn hoi. 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 thư điện tử 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ỉ thư điện tử (và phải được đăng
4
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ỉ thư điện tử khác. Như vậy có thể hoàn toàn không
nhầm lẫn khi dùng danh từ hộp thư điện tử hay hòm thư điện tử (email
account) để chỉ một phần mềm thư điện tử đã được đăng kí dùng để nhận và
gửi thư cho một cá nhân.
Do có nhiều ưu điểm vượt trội, thư điện tử ngày càng phổ biến và được sử dụng
rộng rãi hơn trong đời sống hằng ngày. Thư điện tử được sử dụng trong nhiều mục
đích: liên lạc gia đình, học tập, công việc, nghiên cứu, chính trị, quân sự
Cho đến hiện nay, số lượng các đơn vị, các trường đại học tại Việt Nam có triển
khai một hệ thống thư điện tử là rất ít. Đa số các đơn vị đều sử dụng các dịch vụ thư
điện tử miễn phí hoặc thuê lại từ một nhà cung cấp dịch vụ trên thị trường. Việc sử
dụng các hệ thống thư miễn phí là không đồng bộ, không ổn định và khó kiểm soát,
đôi khi còn không đảm bảo an toàn trong sử dụng. Hay với việc thuê hoặc mua lại một

hệ thống thư điện tử trên thị trường là một sự lãng phí vì các hệ thống đó thường rất
lớn nhằm phục vụ cho những đơn vị lớn, đa đơn vị sử dụng với các phần mềm thương
mại có giá rất đắt.
Ngày nay, trong các đơn vị, trường đại học hay bất cứ cơ quan nào đều đã được
trang bị một hệ thống máy tính phục vụ mục đích phổ cập công nghệ thông tin toàn
quốc. Hoàn toàn có thể tận dụng các thiết phần cứng có sẵn đó để triển khai một hệ
thống thư nhỏ gọn, phù hợp với đơn vị và vẫn đảm bảo các chức năng của một hệ
thống thư điện tử.
1.1.2.Cấu trúc hệ thống thư điện tử
Hệ thống Mail Server là một hệ thống tổng thể bao gồm nhiều thành phần hoạt
động tương tác với nhau. Mỗi thành phần bản thân phục vụ các dịch vụ khác nhau,
nhưng đồng thời các kết quả lại được đưa đến các thành phần khác để xử lý tiếp theo.
Dưới đây là mô hình của hệ thống Mail Server và sự tương tác giữa các thành phần
bên trong:
Mail User Agent (MUA): Trình tương tác với người dùng, soạn thảo, gửi hoặc
nhận e-mail
SMTP Server: gọi là Mail Transfer Agent (MTA). SMTP server sử dụng để
chuyển e-mail từ người gửi đến Mail Server chứa hộp thư, dùng giao thức SMTP.
5
POP3/IMAP Server: Gọi là Mail Delivery Agent (MDA), lưu các thư nhận được
vào hệ thống và khi cần người dùng sử dụng chương trình mail client lấy các thư này
về máy tính để đọc. Chương trình mail client giao tiếp với POP/IMAP server dựa trên
giao thức POP3/IMAP. Thông thường mail server hỗ trợ cả hai giao thức SMTP và
POP3, còn IMAP thì ít hơn.
Hình 1.Cấu trúc hệ thống thư điện tử chung
DNS Server: Lưu trữ 1 hoặc nhiều bản ghi MX cho các tên miền, nhằm xác định
địa chỉ của hệ thống Mail muốn giao tiếp.
Database server: Lưu trữ các thông tin về người dùng hệ thống, cung cấp dữ liệu
phục vụ cho vấn đề chứng thực người dùng.
Webserver, webmail: Cung cấp giao diện người dùng nền web, người dùng có thể

thực hiện các thao tác tương tác với hệ thống qua giao diện này.
6
1.1.3.Cách thức hoạt động hệ thống thư điện tử
Hoạt động của hệ thống email hiện nay có thể dược minh họa qua phân tích một
thí dụ như sau:

Hình 2.Minh họa hoạt động của hệ thống Mail Server (nguồn vi.wikipedia.com)
- Nguyễn dùng MUA của mình để soạn một lá thư có địa chỉ người nhận là Trần
với địa chỉ là Nguyễn nhấn nút Send và phần mềm thư điện tử của
Nguyễn áp dụng SMPT để gửi mẫu thông tin (lá thư) đến MTA, hay máy chủ thư điện
tử của Nguyễn. Trong thí dụ thì máy chủ này là smtp.a.org được cung cấp từ dịch vụ
Internet của Nguyễn.
- MTA này sẽ đọc địa chỉ chỗ nhận () và dựa vào phần tên miền nó sẽ
tìm hỏi địa chỉ của tên miền này, nơi có máy chủ sẽ nhận email gửi đến, qua Hệ thống
Tên miền.
- Máy chủ DNS của b.org là ns.b.org sẽ trả lời về một bản ghi trao đổi thư từ, đây
là bảng ghi chỉ ra cách thức làm thế nào định tuyến cho email này. Trong thí dụ thì
mx.b.org là máy chủ từ dịch vụ cung ứng Internet của Trần.
- smtp.a.org gửi mẫu thông tin tới mx.b.org dùng giao thức SMTP, điều này sẽ
phân phối lá thư đến hộp thư của Trần.
- Khi đọc, Trần ra lệnh nhận thư trên máy (MUA) của Trần, điều này tạo ra việc
lấy về mẫu thông tin bằng cách áp dụng giao thức POP3 hoặc IMAP.
7
- Trong trường hợp Nguyễn không có MUA mà chỉ dùng Webmail chẳng hạn thì
bước 1 sẽ không xảy ra tức là MTA của Nguyễn sẽ làm việc trực tiếp. Tương tự cho
trường hợp Trần không có MUA riêng.
Trước đây, nếu một MTA không thể gửi tới đích thì nó có thể ít nhất ngừng lại ở
chỗ gần với chỗ nhận. Sự ngừng này sẽ tạo cơ hội để máy đích có thể nhận về các mẫu
thông tin trong thời gian trễ hơn. Nhiều MTA sẽ chấp nhận tất cả các email từ người
gửi bất kì và tìm mọi cách để chuyển nó về đến máy đích. Những MTA như vậy gọi là

những server chuyển tiếp thư (server mail relays). Điều này khá cần thiết vì sự chất
lượng liên lạc của hệ thống Internet lúc đó còn yếu.
Ngày nay, với cơ chế hoạt động trên hệ thống thư điện tử nhiều người đã lợi
dụng gửi ra các loại thư vô bổ. Và hậu quả là, rất ít MTA ngày nay còn chấp nhận
chuyển tiếp thư.
1.1.4.Những giao thức hay gặp trong truyền/nhận thư điện tử
Giao thức SMTP
Giao thức SMTP (Simple Mail Transfer Protocol) hoạt động ở tầng Application,
đưa ra vào đầu những năm 80, mô tả trong RFC821, RFC2821 (-
editor.org).
Đây là giao thức dùng để việc vận chuyển email giữa các máy chủ mail trên
đường trung chuyển đến địa chỉ nhận, hay chuyển thư điện tử từ máy khách đến máy
chủ. Hầu hết các hệ thống thư điện tử đều dùng giao thức này.
SMTP hoạt động dựa trên giao thức TCP, cổng 25. Một SMTP server được chỉ
định bằng bản ghi MX. Theo thiết kế ban đầu, SMTP hoạt động hoàn toàn dựa trên kí
tự, dẫn đến sự khó khăn trong gửi e-mail có dữ liệu nhị phân. Sau này, giao thức
MIME (Multi-purpose Internet Mail Extension) đã được đưa ra, kết hợp với SMTP để
khắc phục nhược điểm đó.
Giao thức POP
Giao thức POP3 thuộc tầng Application trong mô hình OSI , hoạt động trên giao
thức TCP, cổng 110. POP3 được mô tả trong RFC1939. Để xác thực người dùng,
POP3 hỗ trợ phương pháp xác thực APOP, sử dụng hàm băm MD5.
Giao thức này được dùng để copy truy xuất thư từ trên Server về máy tính của
người dùng. Hầu hết các MUA đều hỗ trợ giao thức POP. Phiên bản đầu tiên là POP2
đã trở thành tiêu chuẩn vào thập niên 80, nó đòi hỏi phải có giao thức SMTP để gửi đi
8
các mẫu thông tin. Phiên bản mới hơn POP3 có thể được dùng mà không cần tới
SMTP.
Giao thức IMAP
Giao thức IMAP hoạt động ở tầng Application. IMAP hoạt động dựa trên TCP/IP,

cổng 143, cũng như giao thức POP3, IMAP được sử dụng để client lấy e-mail từ server
về máy tính của người dùng. IMAP có một số đặc điểm cải tiến hơn so với giao thức
POP3.
Với IMAP4 (phiên bản hiện tại), người dùng chủ động hơn với các tính năng hỗ
trợ:
Chủ động giữ kết nối đến server
Truy cập ngẫu nhiên tới cùng một tài khoản trên server
Truy cập đến nhiều tài khoản mail trên server cùng lúc
Tìm kiếm e-mail
Cho phép lọc nội dung e-mail được định dạng theo MIME.
1.1.5.Đánh giá hệ thống thư điện tử
Một hệ thống Mail Server hoạt động trơn tru, phải tập trung vào ba yếu tố:
Bản thân các thành phần phải hoạt động trơn tru.
Sự tương tác lẫn nhau giữa các thành phần phải được hoạt động tốt.
Nền tảng mà hệ thống đang chạy trên đó và bản thân hệ thống phải ổn định,
an toàn, bảo mật.
Hiện nay trên thế giới đã xuất hiện rất nhiều sản phẩm xây dựng một hệ thống
Mail Server. Có nhiều sản phẩm với giá cả rất rẻ (thậm chí miễn phí), nhỏ gọn, cài đặt
và quản trị đơn giản, như WorkGroupMail, Surge Mail Server, Kerio Mail Server.
Cũng có những sản phẩm lớn, giá thành cao, tính năng phong phú, đáp ứng được sự ổn
định và an toàn như Mail Exchange của Microsoft, Merak Mail Server…
Tuy nhiên, tất cả các sản phẩm trên đều không đáp ứng đủ các yêu cầu của nhiều
người dùng:
Tính tùy biến cao: Người dùng dễ dàng phát triển thêm để phù hợp với mục
đích riêng của mình.
9
Tối ưu hóa theo từng hệ thống: Các sản phẩm đa phần được áp dụng các kỹ
thuật, các thông số cấu hình theo chủ quan của bên sản xuất. Các thiết lập này
sẽ đáp ứng được nhu cầu chung của người dùng. Tuy nhiên, khi có yêu cầu
phải sử dụng tối đa theo những hệ thống riêng biệt, đây không phải là lựa chọn

phù hợp.
Tính bảo mật và ổn định cao: Những sản phẩm trên đều được đóng gói vào
thành một bộ công cụ tích hợp. Khi được hoạt động trên hệ thống, bộ công cụ
này cũng hoạt động theo một “khối”. Chính vì vậy, khi một thành phẩn nhỏ bị
lỗi, hay hoạt động kém, cả hệ thống sẽ kém ổn định và bảo mật.
Giá thành nhỏ cho hệ thống lớn: Đa phần các sản phẩm đóng gói được
thương mại hóa, giá thành ảnh hưởng đến chất lượng, quy mô. Các sản phẩm
có giá thành nhỏ khó có thể dùng để hoạt động cho mục đích, quy mô lớn, ổn
định lâu dài.
Không chạy trên nền hệ điều hành thương mại: Hệ điều hành thương mại
nổi tiếng nhất là Windows vốn là hệ điều hành được sử dụng khá phổ biến,
nhưng cũng có nhiều thẩm định về độ an toàn và ổn định của nó. Ngày nay,
nhiều hệ điều hành đang dần thể hiện được tính năng vượt trội của mình, tiểu
biểu là Linux, *BSD, Sun Solaris. Khi người dùng không muốn xây dựng hệ
thống Mail Server trên Windows, thì sẽ bị hạn chế trong lựa chọn. Mặc dù
hiện nay đã có nhiều sản phẩm phát hành phiên bản chạy trên Linux, song số
lượng còn ít và chưa đáp ứng được nhu cầu cho hệ thống lớn.
1.1.6.Giải pháp với hệ điều hành Linux
Để đáp ứng một cách tốt nhất các yêu cầu của người dùng ở trên, hệ điều hành
Linux thực sự là một lựa chọn tốt dành cho nền tảng hệ thống.
Hệ điều hành Linux là một sản phẩm Mã nguồn mở, nó là miễn phí cho người
dùng, tuy nhiên không bởi thế mà nó đánh mất đi sức hấp dẫn đối với các người dùng
thường, lẫn các doanh nghiệp lớn nhỏ trên thế giới. Các sản phẩm Mã nguồn mở
thường được cộng đồng lớn các trên Internet cùng nhau phát triển. Chính vì lẽ đó, hệ
điều hành Linux luôn được các chuyên gia trong ngành đánh giá:
Nhiều tính năng nổi bật: đặc điểm của các sản phẩm Mã nguồn mở là các tính
năng của chúng rất mạnh, cung cấp cho người dùng nhiều khả năng quản trị hệ thống
cao hơn.
10
Tính ổn định, bảo mật cao: Để đánh giá tính ổn định của một hệ thống, các

chuyên gia thường dựa vào thời gian sống (uptime) của máy chủ hệ thống đó. Nếu như
máy chủ Windows sẽ thường xuyên phải khởi động lại bởi các thiết lập cấu hình, hay
cài đặt ứng dụng mới, … trên Linux hiện tượng này không còn xảy ra. Windows được
thiết kế theo cấu trúc “khối”, nên sự thay đổi của một thành phần nhỏ của hệ thống
cũng có thể tác động đến toàn bộ hoạt động của hệ thống. Đây là lý do chính của sự
kém an toàn, ổn định của hệ thống máy chủ Windows. Trái lại, với cấu trúc module
hóa, hệ thống Linux đảm bảo tách biệt tối đa sự phụ thuộc lẫn nhau của các thành phần
trong hệ thống. Đây là một thiết kế thông minh, đảm bảo cho các thành phần chính của
hệ thống vẫn hoạt động trơn tru, ngay cả khi có nhiều thay đổi, sự cố của các thành
phần bên trong. Cho dù có sự tấn công của các attacker hay các loại virus máy tính,
cấu trúc module hóa của Linux ngăn ngừa được phạm vi ảnh hưởng của các mối nguy
này, không thể tác động đến toàn bộ hệ thống.
Dễ dàng phát triển: Thế giới Mã nguồn mở là một thế giới mở của một cộng
đồng rất lớn. Các sản phẩm được viết ra luôn đảm bảo cho người dùng có thể mở rộng,
phát triển tiếp, theo mục đích riêng của từng người. Hệ thống các giấy phép áp dụng
cho các sản phẩm này cũng rất thoải mái cho người dùng tự do sử dụng, chỉnh sửa.
Chính vì vậy, tiếp cận với các sản phẩm Mã nguồn mở, người dùng có nhiều khả năng
tùy biến hơn, phục vụ tối đa nhu cầu của từng người, từng tổ chức, doanh nghiệp.
1.2.Qmail ()
1.2.1. Giới thiệu
Trong thế giới mã nguồn mở hiện nay, đã có rất nhiều MTA (Mail Transfer
Agent) được phát triển. Nổi tiếng và phổ biến trong số đó gồm có: Sendmail, Qmail,
Postfix, Exim, Courier. Mỗi MTA đều có những ưu điểm và nhược điểm riêng:
Sendmail
Sendmail () là MTA đơn giản và lâu đời nhất trên các
dòng Unix thời xưa. Ngày nay, trên các hệ thống Linux, đặc biệt là các sảm phẩm của
RedHat, Sendmail vẫn được cài đặt là MTA mặc định cho hệ thống.
Ngày nay, Sendmail đã được thương mại hóa bên cạnh sản phẩn miễn phí và vẫn
được tiếp tục duy trì, phát triển. Tuy nhiên, vì được thiết kế theo cấu trúc khối và ảnh
hưởng từ cấu trúc cũ, nên Sendmail chưa đạt được tính năng ổn định và bảo mật của

một MTA như mong muốn.
11
Qmail
Qmail được viết bởi Bernstein, là một MTA dành cho hệ điều hành tựa Unix, bao
gồm Linux, FreeBSD, Sun Solaris, … Qmail ra đời như một tất yếu thay thế cho
Sendmail và các yếu điểm của nó. Vì vậy, Qmail ngay từ ban đầu đã được thiết kế đơn
giản, module hóa với tiêu chí bảo mật được đặt lên rất cao. Đồng thời, Qmail là một
MTA hiện đại nên hỗ trợ tốt các kiểu định dạng mới hiện nay như định dạng hòm thư
Maildir…Do Qmail được thiết kế module hóa và tối ưu hóa các tính năng ngay từ
đầu, nên nó có tốc độ thực thi rất nhanh và ổn định.
Postfix
Weitse Venema, tác giả của các phần mềm miễn phí nổi tiếng như TCP Wrappers,
SATAN và Logdaemon, ông không hài lòng khi sử dụng các MTA hiện có (bao gồm cả
Qmail), vì vậy, ông đã viết ra Postfix (). Postfix là một MTA
mới, có khả năng thực thi cao, thừa kế cấu trúc thiết kế tốt từ Qmail, trong khi đó vẫn
giữ được tính tương thích tối đa với Sendmail.
So sánh với Qmail, Postfix có kích thước lớn hơn, phức tạp hơn, trong khi đó lại
kém bảo mật, kém tin cậy và chạy chậm hơn. Tuy Postfix cũng được thiết kế theo cấu
trúc module, nhưng các module của Postfix chạy dưới quyền của cùng một người dùng
hệ thống, vì vậy sự hỏng hóc của một module có thể ảnh hưởng đến toàn bộ hệ thống.
Xét về tổng thể, Postfix là một MTA tốt. Nếu vấn đề bảo mật và khả năng thực
thi của hệ thống không được đòi hỏi quá cao, người quản trị có thể chọn và sử dụng
Postfix.
Exim
Philip Hazel đã phát triển Exim () tại trường đại học
Cambridge. Nó được thiết kế theo xu hướng nhỏ và đơn giản nhưng vẫn đảm bảo các
tính năng. Tuy nhiên, Exim vẫn được thiết kế theo cấu trúc khối, và hai yếu tố quan
trọng với các MTA hiện đại là bảo mật và khả năng thực thi lại không được coi trọng.
Hiện nay, Exim là MTA được lựa chọn và cài đặt mặc định trên các phiên bản phân
phối Linux dựa theo Debian, ngoài ra nó không được sử dụng rộng rãi.

Courier
Sam Varchavchik, tác giả của Courier-IMAP (một daemon thường sử dụng với
Qmail, đóng vai trò là một IMAP server), đã viết ra Courier
12
(), vì ông thấy không hài lòng khi sử dụng các Unix MTA
hiện đã có (bao gồm cả Postfix và Qmail).
Courier là một bộ tích hợp dịch vụ thư điện tử, bao gồm SMTP/ESMTP, IMAP,
POP3, Webmail và mailing-list. Trong đó, đa số các MTA chỉ cung cấp dịch vụ
SMTP/ESMTP (trừ Qmail có thêm POP3).
Courier vẫn là một MTA mới. Tác giả đảm bảo tính tin cậy của Courier, tuy
nhiên sản phẩm cũng chưa được hoành thành đầy đủ.
Theo đánh giá chung của cộng đồng mã nguồn mở, có thể tổng kết các tính năng
của các MTA kể trên thành bảng so sánh sau đây:
Bảng 1.So sánh các MTA
MTA Hoàn thiện Bảo mật Tính năng Hiệu năng Module
Qmail Trung bình Cao Cao Cao Có
Sendmail Cao Thấp Cao Thấp Không
Postfix Trung bình Cao Trung bình Cao Có
Exim Trung bình Thấp Cao Trung bình Không
Courier Thấp Trung bình Cao Trung bình Có
Như vậy, tùy theo mục đích và nhu cầu sử dụng, người quản trị sẽ lựa chọn một
MTA cho hệ thống của mình, ngoài ra, với mỗi điều kiện và môi trường khác nhau,
mỗi MTA lại có mức độ phù hợp khác nhau. Với các ưu điểm vượt trội rõ rệt của
Qmail, đây là một lựa chọn phù hợp cho các hệ thống của cơ quan, trường học hay
doanh nghiệp tại Việt Nam. Bởi tại các đơn vị này, số lượng người dùng hệ thống
thường ở mức trung bình và cấu hình phần cứng của hệ thống máy tính thường không
cao, nên để tận dụng tối đa hiệu suất của hệ thống, cần phải lựa chọn những MTA nhỏ
gọn với hiệu năng cao, tính năng đầy đủ. Đồng thời, với tình hình an ninh mạng ngày
càng diễn biến phức tạp tại Việt Nam, một MTA đảm bảo tốt các yêu cầu về an toàn,
bảo mật là yêu cầu tất yếu. MTA đáp ứng tốt và đầy đủ nhất các yêu cầu đó chính là

Qmail.
13
1.2.2.Giấy phép sử dụng Qmail
Qmail là một sản phẩm Mã nguồn mở, nên giấy phép sử dụng Qmail nói chung là
cũng theo đặc điểm chung của các giấy phép cho sản phẩm Mã nguồn mở.Qmail được
giữ quyền tác giả và không cho phép phân phối với quyền người dùng.
Giấy phép của Qmail đảm bảo cho người dùng có thể sử dụng Qmail với mọi
mục đíc. Người dùng có thể phân phối lại, nhưng phải đảm bảo bản mã nguồn Qmail
phải được giữ nguyên, không sửa đổi. Người dùng cũng có thể phân phối bản nhị phân
var-Qmail và các bản vá của Qmail.
Bản nhị phân var-Qmail là bản sau khi người dùng:
Cài đặt các gói Qmail, fastforward, và dot-forward vào thư mục /var/Qmail
Các gói phải được cài đặt và hoạt động chính xác.
Có sự đảm bảo từ người dùng đó.
Giấy phép áp dụng cho Qmail khác với giấy phép GPL thông dụng cho các phần
mềm Mã nguồn mở. Nếu như với GPL, người dùng có quyền tự do sử dụng, sửa đổi,
phân phối, thì với Qmail, việc phân phối đã bị hạn chế nhiều. Người dùng chỉ có thể
sửa đổi mã nguồn cho mục đích sử dụng riêng, nhưng không được phân phối. Tuy
nhiên, theo tác giả Bernstein, sự hạn chế trên là cần thiết, bởi hai lý do:
Các đặc tính của Qmail sẽ không được đảm bảo khi bị phân phối với các mã
nguồn bị sửa đổi.
Khi mã nguồn Qmail được một số người dùng nào đó sửa đổi để hoạt động theo
một nền tảng nhất định, hoạt động Qmail sẽ không linh hoạt, không tối ưu được khi
chạy trên nhiều nền tảng khác nhau.
1.2.3.Tính ưu việt của Qmail
Qmail được đánh giá là MTA tốt hơn hẳn so với Sendmail (và các trình MTA Mã
nguồn mở khác) về nhiều mặt:
1.2.3.1.Bảo mật:
Qmail vốn được thiết kế với mục đích bảo mật cao. Từ trước tới nay, Sendmail
được biết đến bởi những vấn đề nghiêm trọng về bảo mật. Khi Sendmail được viết,

mạng máy tính vẫn còn đơn giản, các tội phạm trên mạng chưa nhiều. Ngày nay, mạng
máy tính phát triển rất mạnh, lan rộng toàn cầu, các sự xâm nhập trái phép diễn ra rất
14
mạnh mẽ. Do đó, cấu trúc đơn giản của Sendmail không đáp ứng được yêu cầu bảo
mật trong mạng Internet ngày nay. Dù tác giả Eric Allman và cộng sự Claus Assman
của Sendmail sau đó đã cố gắng điều chỉnh lại cấu trúc chương trình, nhưng Sendmail
vẫn không đạt được độ tin cậy, an toàn như mong đợi.
Sử dụng tối thiểu hàm setuid(): Trong Unix, setuid() cho phép một chương
trình khởi động bởi một người dùng này có thể chạy với định danh của người
dùng khác. Điều này thường được sử dụng khi chương trình yêu cầu được
chạy bởi người dùng có quyền cao hơn mới thực thi được. Tuy nhiên, chính
tính năng này của setuid() đã bị nhiều kẻ tấn công lợi dụng để chiếm quyền
điều khiển. Bởi để viết một chương trình setuid() đảm bảo bảo mật và linh
hoạt là rất khó. Với Qmail chỉ có duy nhất một module sử dụng hàm setuid(),
đó là Qmail-queue. Tác dụng là nhận các thư mới và đẩy vào hàng đợi để gửi,
vì vậy Qmail-queue phải có khả năng chạy với định danh của người dùng quản
lý hàng đợi.
Sử dụng tối thiểu tài khoản root: Người dùng root (với định danh = 0) có
toàn quyền truy cập vào mọi tài nguyên của hệ thống. Điều này rất tiện lợi cho
người quản trị, nhưng cũng rất nguy hại nếu kẻ tấn công, hay virus cũng được
sử dụng. Vì vậy, với thiết kế giới hạn tối đa việc sử dụng định danh root cho
chương trình, Qmail đã giảm được mối nguy tấn công. Hai module của Qmail
chạy với tài khoản root là: Qmail-start và Qmail-lspawn.
Qmail được thiết kế module hoá: Các MTA thường thi hành nhiều nhiệm vụ
độc lập nhau. Một số MTA, đơn cử là Sendmail, được thiết kế theo khối
(monolithic), nghĩa là các hàm thi hành các nhiệm vụ được đưa hết vào đơn
nhất một chương trình. Đây là một điểm yếu lớn, khi mà có một lỗ hổng bảo
mật, ví dụ như tràn bộ nhớ đệm (buffer overflow) của một hay vài hàm có thể
phá huỷ toàn bộ chương trình. Qmail được thiết kế theo cấu trúc module.
Qmail sử dụng nhiều chương trình chạy dưới nhiều quyền (Qmail UIDs) khác

nhau và phân quyền truy cập tách biệt cho chúng. Các chương trình này hoạt
động không tin cậy vào nhau, nghĩa là: khi một chương trình nhận thông tin từ
chương trình khác, nó không thi hành một cách “mù quáng”, nó sẽ xác thực
thông tin đưa vào, sau đó nếu phù hợp mới thi hành. Vì vậy, lỗ hổng do một
thành phần của Qmail không thể làm ảnh hưởng đến toàn bộ chương trình.
Sử dụng thư viện riêng: Đa số các chương trình C đều sử dụng bộ thư viện
C chuẩn được cung cấp trong hệ điều hành. Tuy nhiên, các hàm trong thư viện
15

×