ĐẠ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
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 (http://www.Qmail.org) 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 (http://fedora.redhat.com) 22
1.3.2. Máy chủ xác thực LDAP server (http://www.openldap.org) 22
1.3.3. Squirrelmail (http://www.squirrelmail.org) 23
1.3.4. Máy chủ web Apache Server (http://httpd.apache.org) 24
iii
1.3.5. Hệ quản trị cơ sở dữ liệu MySQL (http://www.mysql.com) 24
1.3.6. Máy chủ POP3/IMAP dovecot (http://www.dovecot.org) 24
1.3.7. Qmail-Scanner (http://Qmail-scanner.sourceforge.net) 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
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
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
(http://mail.vnu.edu.vn), Đại học Bách Khoa Hà Nội (http://mail.hut.edu.vn) hay Sở
Giáo dục & Đào tạo Hà Nội (http://mail.hanoi.edu.vn) đề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.
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
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ể
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 (http://www.rfc-
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,
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
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 (http://www.postfix.org). 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 (http://www.exim.org) 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.
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,
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