ĐẠ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.
Hà Nội, ngày 20 tháng 5 năm 2007
Sinh viên
Trần Thế Anh
i
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 (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
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 (http://spamassassin.apache.org)......................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 Giao thức nhận thư Internet Internet Message Access Protocol
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 Định dạng mở rộng thư Multipurpose Internet Mail Extensions
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 (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.
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à Tran@b.org. 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 (tran@b.org) 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 (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, 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 (http://www.Qmail.org)
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 (http://www.sendmail.org) 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 (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.
Courier
Sam Varchavchik, tác giả của Courier-IMAP (một daemon thường sử dụng với đã viết ra Courier đóng vai trò là một IMAP server), Qmail,
12
(http://courier.sourceforge.net), 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 Có Cao
Sendmail Cao Thấp Thấp Không Cao
Postfix Trung bình Cao Trung bình Cao Có
Exim Trung bình Thấp Trung bình Không Cao
Courier Thấp Trung bình Trung bình Có Cao
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
này không đảm bảo được tính bảo mật. Vì vậy, không hoàn toàn sử dụng các thư viện này, Qmail được thiết kế kèm theo bộ thư viện về I/O và string riêng, nhằm mục đích nâng cao tính tin cậy, an toàn cho chương trình.
1.2.3.2.Thực thi
Tốc độ và hiệu quả thực thi của Qmail được kiểm chứng khi được so sánh với
Sendmail trong thử nghiệm gửi một thư đến 2000 người nhận:
Sendmail: truy tìm bản khai MX (mail exchanger) của mỗi địa chỉ trong hệ thống tên miền (Domain Name System – DNS) rồi sắp xếp danh sách các địa chỉ theo bản khai MX của chúng. Bởi vì hệ thống DNS được phân bổ khắp trên thế giới, quá trình truy tìm bản khai có thể dẫn đến tình trạng hết giờ (timeout). Yêu cầu này, Sendmail có thể tốn mất trên dưới 15 phút.
Qmail: khi được yêu cầu, Qmail ngay lập tức khởi tạo đồng thời nhiều tiến trình của Qmail-remote và Qmail-local (mặc định là 20), chúng sẽ bắt đầu quá trình gửi thư. Tất nhiên, mỗi tiến trình cũng vẫn phải làm các công việc tương tự là truy tìm bản khai MX của các địa chỉ như Sendmail, nhưng vì với Qmail, có rất nhiều tiến trình song song làm việc này, nên thời gian chuyển phát nhanh hơn. Hơn nữa, Qmail không đợi cho đến khi quá trình truy tìm bản khai MX của 2000 địa chỉ kết thúc rồi mới chuyển thư, Qmail thực hiện trước đó nhiều. Kết quả là Qmail thường kết thúc trước khi Sendmail gửi đi bức thư đầu tiên.
Dù người quản trị có thể cho Sendmail chạy với nhiều tiến trình, mỗi tiến trình đảm nhiệm gửi thư đến một số địa chỉ nhất định. Tuy nhiên, do thiết kế module, Qmail thực hiện quá trình gửi thư song song hiệu quả hơn: mỗi tiến trình Qmail-remote, Qmail-local kích thước nhỏ hơn rất nhiều so với mỗi tiến trình của Sendmail.
1.2.3.3.Tin cậy
Khi nhận một thư, Qmail được thiết kế để đảm bảo thư sẽ được chuyển đi an toàn. Qmail cũng hỗ trợ định dạng hòm thư mới Maildir - một định dạng đảm bảo an toàn cho việc lưu trữ và chuyển phát thư.
Theo thống kê thực tế, sau 5 năm kể từ khi Qmail được phát hành, chưa có một lời phàn nàn nào về việc mất thư từ hệ thống maillist, cũng như chưa có một lỗi nào có thể làm tiến trình Qmail bị tắt không theo ý muốn.
16
1.2.3.4.Đơn giản
Qmail có kích thước nhỏ hơn rất nhiều so với các MTA khác, bởi vì ba đặc điểm: thiết kế thông minh, các tính năng được lựa chọn cẩn thận, và sự bổ sung mã lệnh có hiệu quả.
Bảng 2.Bảng so sánh kích thước các MTA
MTA Version Size (In Bytes)
Sendmail 8.11.3 303.212
Postfix 20010228-pl02 240.370
Exim 3.22 202.236
Courier 0.33.0 668.945
Qmail 1.03 80.025
Đa số các MTA có kỹ thuật forwarding, aliasing, mailing-list riêng. Đối với
Qmail, ba cơ chế trên được tích hợp lại trong một kỹ thuật.
Sendmail sử dụng nhiều phương thức trong quá trình phân phối thư: tương tác (interactive), nền (background), hàng đợi (queue) và trì hoãn (defer). Điều này làm ảnh hưởng đến sự tin cậy và tốc độ xử lý. Riêng Qmail sử dụng một phương thức, đó là hàng đợi (queue), đảm bảo tối ưu hóa tốc độ và sự tin cậy cho MTA.
Sendmail sử dụng một chức năng tích hợp phức tạp để thi hành việc giới hạn tải hệ thống (system load limits), còn Qmail giới hạn bằng cách hạn chế số module được phép chạy, đơn giản và đáng tin cậy hơn rất nhiều.
Cấu trúc module làm cho phần cơ bản của Qmail trở nên đơn giản, gọn nhẹ. Từ đó người phát triển dễ dàng hơn trong việc thêm, chỉnh sửa các module, tính năng mới cho Qmail. Điều này đảm bảo cho Qmail giữ được đặc tính đơn giản, trong khi đó vẫn cung cấp đầy đủ các tính năng cần thiết của một MTA.
17
Hình 3.Cấu trúc hệ thống Qmail
18
1.2.4.Tính năng
Dịch vụ SMTP
Cũng như các MTA khác, một trong những chức năng chính của Qmail là cung cấp dịch vụ SMTP cho các MTA khác và các MUA. Qmail tuân theo các chuẩn Internet phù hợp và nó hoạt động dựa trên cơ chế 8-bit, vì vậy thư điện tử được viết không theo định dạng ASCII vẫn được chấp nhận. Qmail có khả năng kiểm tra sự lặp lại (looping) trong quá trình gửi thư, cũng như sử dụng danh sách các trang web đen (blacklisting) để chứng thực.
Quản lý hàng đợi
Một tính năng quan trọng không kém của MTA là lưu trữ và lấy lại các thư tạm thời chưa được gửi đi. Hàng đợi queue là cơ chế thực hiện chức năng này. Khi một thư mới được đặt vào hàng đợi, Qmail thi hành ngay lập tức. Mỗi thư đều được đặt lịch trình gửi lại khi lần gửi đầu tiên không thành công, tuy nhiên Qmail cũng có khả năng điều chỉnh phù hợp tùy theo tài nguyên hiện tại của hệ thống và độ lớn của hàng đợi. Những thư đã lưu trữ lâu trong hàng đợi, Qmail sẽ giảm tần suất gửi lại.
Để đẩy mạnh tốc độ gửi thư, Qmail hỗ trợ nhiều phiên gửi đồng thời. Mỗi lần gửi thư thành công đều được đánh dấu để tránh các tình trạng lặp lại. Hàng đợi có cơ chế tự dọn sạch: các thư bị lọc loại bỏ (injected)sẽ bị xóa tự động khỏi hàng đợi.
Bounce (thư bật tường)
Khi có một sự cố không mong muốn xảy ra trong hệ thống như các thư không thể gửi đi, trong mạng cục bộ hoặc qua Internet, người gửi sẽ được thông báo qua thư. Thư này được gọi là đã được “bounce”. Các thư bounce của Qmail rất rõ ràng và đơn giản với người dùng, có thể được dùng với các chương trình quản lý thư bounce. Qmail cũng hỗ trợ cơ chế “double” bounces: các thư bounce không gửi được sẽ được chuyển đến postmaster.
Định tuyến theo tên miền
các tên miền khác máy chủ
Quản lý việc định tuyến các thư điện tử dựa trên tên miền địa chỉ người nhận là một phương pháp rất hợp lý và dễ dàng cho các hệ thống thư điện tử lớn, cũng như các nhau. có nhiều cho Qmail hỗ trợ bí danh theo tên máy (hostname alias): máy có thể sử dụng nhiều tên, đồng thời Qmail cũng hỗ trợ các tiên miền ảo: nhiều tên miền dành cho các địa chỉ khác nhau. Các tên miền có thể được “wildcarded” để thiết lập quản lý cho nhiều tên
19
con dựa miền một trên tên
cha. miền Qmail cũng hỗ trợ phương pháp định tuyến theo cách đánh địa chỉ của Sendmail, ví dụ như abc%mail.example.com@isp.example.net, nghĩa là phân phát thư đến abc@mail.example.com qua isp.example.net.
Gửi chuyển tiếp và Gửi theo danh sách thư
Gửi chuyển tiếp các thư đến và hỗ trợ gửi thư theo danh sách (mailing list) là các
chức năng cơ bản của một MTA.
mail trong danh sách xấu địa chỉ
Qmail hỗ trợ cách thức gửi chuyển tiếp thư qua tệp .forward theo định dạng của Sendmail (qua chương trình dot-forward), và chuyển tiếp thư tốc độ cao với chương fastforward. trình Qmail cũng cung cấp VERP (Variable Envelope Return Path) để tự động nhận dạng các list. Người quản trị và người dùng có thể sử dụng địa chỉ mặt nạ để đại diện cho nhiều địa chỉ thư. Qmail sử dụng trường tiêu đề “Deliverd-To” để ngăn chặn các vòng lặp bí danh (alias loops) một cách tự động và hiệu quả.
Chuyển thư trong cục bộ
Người dùng được điều khiển vùng địa chỉ riêng: ví dụ người dùng bob điều khiển
hoàn toàn các thư đến bob-anything@domain.
Qmail hỗ trợ trình phân phát thư (MDA) là Qmail-local. Qmail-local có thể tương thích với các định dạng hòm thư chuẩn của Unix: mbox, cũng như định dạng mới maildir.
1.2.5.Bổ sung cần thiết
Qmail được lựa chọn như một MTA với nhiều ưu điểm và đầy đủ tính năng trong điều kiện và môi trường tại Việt Nam. Tuy vậy bản thân Qmail chỉ là một MTA, nên nó chỉ cung cấp các dịch vụ của MTA. Trong khi đó, yêu cầu về chức năng cũng như an toàn của một hệ thống thư điện tử là rất nhiều như: nhu cầu về lưu trữ thông tin và các tùy chọn cá nhân người dùng đòi hỏi phải có một hệ quản trị cơ sở dữ liệu và một máy chủ xác thực, nhu cầu về giao diện người dùng đòi hỏi phải có một chương trình mailclient chạy trên nền web (mặc dù người dùng có thể sử dụng một số mailclient chạy trên nền desktop, nhưng mailclient trên nền web vẫn có một số ưu điểm hơn), nhu cầu về phòng chống và lọc thư rác đòi hỏi phải có một chương trình quét và lọc thư trên máy chủ … Chính vì vậy, để có thể xây dựng một hệ thống thư điện tử, ngoài
20
việc tìm hiểu và cài đặt Qmail, cần phải nghiên cứu các tính năng gắn thêm, cập nhật các bản vá, sửa đổi mã nguồn cũng như tích hợp thêm các thành phần đi kèm của Qmail.
Trên tinh thần mã nguồn mở và miễn phí, các thành phần tích hợp được sử dụng đều là các sản phẩm có nhiều ưu điểm đã được cộng đồng đánh giá qua thời gian dài nghiên cứu và thử nghiệm. Các thành phần đó bao gồm: Hệ điều hành Fedora Core 6, máy chủ xác thực LDAP, máy chủ web Apache, hệ quản trị cơ sở dữ liệu MySQL, máy chủ hộp thư (POP3/IMAP) Dovecot, chương trình mailclient SquirrelMail… Các thành phần kể trên được đề cập chi tiết trong phần tiếp theo của khóa luận.
Bên cạnh các thành phần tích hợp cần đóng gói và cài đặt thêm, chính vì Qmail nguyên thủy được thiết kế đơn giản nhất có thể nên Qmail cũng chỉ như là một “bộ khung” của MTA, để đáp ứng được các yêu cầu trong một điều kiện cụ thể cần phải lựa chọn và bổ sung những “bản vá” thích hợp.
Vấn đề bản vá (patch):
- Bản vá là một bản lưu các thay đổi của một phiên bản nào đó so với phiên bản gốc. Thông thường phiên bản thay đổi đó nhằm mục đích thêm một chức năng nào đó vào phiên bản gốc. Khi cập nhật một bản vá vào phiên bản gốc, ta sẽ được một phiên bản mới có thêm chức năng mà bản vá cung cấp.
- Trong các hệ thống Linux, các bản vá mã nguồn thường được tạo ra bởi công cụ diff – là một công cụ so sánh sự khác nhau giữa hai hay nhiều file văn bản theo từng dòng và đưa ra các dòng khác nhau đó. Sau đó, để cập nhật sự khác nhau từ file này vào một file khác, ta sử dụng công cụ patch.
- Với Qmail, có rất nhiều bản vá được phát triển song song với nhau, các bản vá này đa số đều so sánh với phiên bản Qmail chuẩn. Như vậy nếu có nhiều bản vá cùng lúc và muốn cập nhật chúng vào bản Qmail chuẩn, không thể cập nhật lần lượt tất cả các bản vá đó vào Qmail vì sau khi cập nhật bản vá đầu tiên, mã nguồn Qmail chuẩn sẽ bị thay đổi (thêm vào các chức năng mà bản vá thứ nhất cung cấp). Sau đó, bản vá thứ hai không thể được cập nhật vào Qmail đã cập nhật bản vá thứ nhất, vì bản vá thứ hai này chỉ lưu trữ các thay đổi của nó so với Qmail gốc. Có một cách đơn giản để giải quyết vấn đề này, đó là tự sửa lại các thay đổi trong từng bản vá vào phiên bản Qmail chuẩn, vì công cụ diff lưu trữ các thay đổi dưới dạng có thể đọc được, nên cách này là có thể thực hiện được.
21
1.3.Các thành phần kết hợp với Qmail
1.3.1.Hệ điều hành Fedora (http://fedora.redhat.com)
Fedora là một bản phân phối Linux phát triển dựa trên phiên bản Redhat, sau khi Redhat đã được thương mại hóa. Là một bản phân phối dựa trên RPM, được nhiều người biết đến nhất và rất phổ biến tại Việt Nam, Fedora có được những tính năng nổi bật của dòng hệ điều hành Linux, đó là bảo mật, ổn định, ưu việt và tùy biến cao. Ngoài ra, các đặc điểm riêng so với các bản phân phối khác tạo ra điểm hấp dẫn của Fedora. Chúng phù hợp cho mọi mục đích, từ Desktop, Workstation, đến Server, cho những người mới dùng, đến những người đã giàu kinh nghiệm. Điểm mạnh của Fedora là việc hỗ trợ cài đặt, đến giao diện sử dụng rất thân thiện. Fedora cũng được coi là phiên bản thử nghiệm, đưa ra cộng đồng sử dụng và phản hồi, từ đó những đặc tính nổi bật nhất của Fedora được đúc kết vào phiên bản Redhat Enterprise. Fedora ra đời đã khắc phục rất nhiều sự bất tiện của Redhat, đặc biệt là cơ chế quản lí gói tin. Với yum, việc cài đặt, cập nhật, xóa các gói tin RPM trở nên đơn giản hơn rất nhiều. Fedora mới đưa ra phiên bản 5.0, với nhiều tính năng hấp dẫn, là một môi trường phát triển, ứng dụng rất tốt cho mọi hệ thống.
1.3.2.Máy chủ xác thực LDAP server (http://www.openldap.org)
LDAP là một phương tiện chứa dữ liệu nó không phải là một công nghệ. Đúng ra, LDAP là một giao thức (Light Weight Access Protocol) nhưng nó được ứng dụng nhằm mục đích lưu trữ dữ liệu. Qmail mặc định sử dụng tài khoản người dùng lấy từ tài khoản người dùng hệ điều hành. Vì vậy, việc lưu trữ các thông tin về tài khoản người dùng từ hệ điều hành là rất hạn chế. Với việc tích hợp hệ thống LDAP vào hệ thống người dùng của hệ điều hành, ngoài những ưu điểm về lưu trữ thông tin người dùng, còn có những ưu điểm về khả năng thực thi.
Các dịch vụ ứng dụng khả năng của LDAP rất rộng rãi nhất là trong vấn đề xác thực người dùng (authentication và authorisation). Có thể coi nó như một DNS có chứa rất nhiều thông tin.
Một cách tổng quát mà nói, LDAP thường phân chia theo O (Organisation - tổ chức) và các OU (Organisation Unit - phân bộ). Trong các OU có thể có những OU con và trong các OU có các CN (Common Name), những nhóm giá trị này thường được gọi là DN (Distinguished Name - tên gọi phân biệt). Mỗi giá trị chứa trong LDAP thuộc dạng tên:giá trị, thường được gọi là LDAP Attribute (viết tắt là attr), mỗi attr được nhận diện như một LDAP Object.
22
Những đặc điểm ở trên hình thành một cái gọi là LDAP schema và có tiêu chuẩn thống nhất giữa các ứng dụng phát triển LDAP. Đây là lý do LDAP được ưa chuộng cho công tác lưu trữ và tích hợp với các hệ thống chứng thực (authentication/authorisation) vì chúng có thể được dùng giữa các LDAP system (bất kể công ty sản xuất) miễn sao các công ty sản xuất tuân thủ đúng tiêu chuẩn chung.
Vậy tại sao không dùng CDSL để chứa tài khoản của người dùng mà phải đụng tới LDAP? Câu trả lời là: vẫn có thể dùng CSDL cho mục đích đó. Tuy nhiên, CSDL không linh động bằng vì mỗi CSDL có những điểm khác nhau. LDAP như một bộ phận độc lập dùng để lưu dữ liệu, bất cứ hệ thống nào cần thông tin về tài khoản người dùng (chẳng hạn), đều có thể chia sẻ chung một (hoặc nhiều) LDAP có cùng thông tin. Thử hình dung một hệ thống có 100 máy chủ UNIX và mỗi máy chủ phải bảo trì một file /etc/passwd. Làm cách nào để đồng bộ hóa 100 file /etc/passwd một cách bảo đảm, gọn gàng? Ngoài hệ thống NIS (và NIS+) cho mục đích này, càng ngày càng nhiều hệ thống tích hợp và sử dụng LDAP vì nó không giới hạn nền tảng hay hệ điều hành.
LDAP đóng vai trò rất quan trọng trong việc ứng dụng SSO (single sign on). Điều này có nghĩa là một người đăng nhập vào một hệ thống, người ấy có thể truy cập đến các máy chủ / dịch vụ / tài nguyên... cho phép mà không cần phải xác thực lại. Thử hình dung việc đăng nhập mail.yahoo.com, sau đó có thể nhảy đến yahoo 360, yahoo mailing list.... mà không cần phải xác thực tài khoản nữa. Thử hình dung yahoo sẽ có những dịch vụ khác và mỗi yahoo account chỉ cần chứa ở 1 nơi và các dịch vụ để dùng chung một LDAP chứa account để xác thực người dùng. Thử hình dung yahoo có 1000 máy chủ và 1000 file /etc/passwd để bảo trì .
Ngoài ra, LDAP được tạo ra đặc biệt cho hành động "đọc". Bởi thế, xác thực người dùng bằng phương tiện "lookup" LDAP nhanh, hiệu suất, ít tốn tài nguyên, đơn giản hơn là truy vấn 1 tài khoản người dùng trên CSDL.
1.3.3.Squirrelmail (http://www.squirrelmail.org)
SquirrelMail là một sản phẩm webmail (mailclient chạy trên nền web) được viết bằng PHP. SquirrelMail hỗ trợ các giao thức IMAP và SMTP. Tất cả các trang hiển thị được tạo ra dưới nền HTML 4.0 (không có javascript) để tối ưu hóa tính tương thích trên các trình duyệt web. Quá trình cài đặt và cấu hình SquirrelMail tương đối đơn giản, cần ít yêu cầu. SquirrelMail đã có tất cả các tính năng mong muốn từ một trình email client, bao gồm hỗ trợ MIME, nhật ký địa chỉ (address books), quản lý thư mục.
23
SquirrelMail là một webmail thật sự cần thiết khi một doanh nghiệp, hay một tổ chức muốn hỗ trợ hình thức truy cập thư điện tử nội bộ khắp mọi nơi. Vì vậy, một webmail cho phép truy cập qua mạng Internet là rất phù hợp.
SquirrelMail là một trong những webmail phổ biến nhất (bên cạnh đó còn có openwebmail, SqWebmail, horde, …), và được đóng gói trong sản phẩm Fedora nổi tiếng.
1.3.4.Máy chủ web Apache Server (http://httpd.apache.org)
Để cung cấp một Webmail, cần phải có một Web server. Apache là sản phẩm Mã nguồn mở phục vụ cho máy chủ web rất nổi tiếng và được ứng dụng rộng rãi trên Internet. Khi so sánh với IIS, dịch vụ web của Windows, Apache được đánh giá là linh hoạt, bảo mật, ổn định và hoạt động mạnh mẽ hơn rất nhiều. Theo thống kể từ Netcraft, các máy chủ web chạy bằng Apache là những máy chủ đảm bảo được độ ổn định cao: 47 trong số 50 website có thời gian chạy uptime lâu nhất là chạy Apache. Con số thống kê mới nhất về tính phổ dụng của Apache là chiếm 62.72 % thị phần web server trên Internet vào thời điểm tháng 4/2006. Apache thực sự đang trở thành phần mềm dịch vụ web hàng đầu, trong khi đó giá sử dụng nó lại miễn phí.
1.3.5.Hệ quản trị cơ sở dữ liệu MySQL (http://www.mysql.com)
MySQL xuất hiện và phát triển trong khi đó trên thế giới đã tồn tại rất nhiều các tên tuổi lớn, như Microsoft SQL Server, Oracle, IMB DB2, SyBase … Nhưng MySQL vẫn nổi bật lên và được ứng dụng rộng rãi, đặc biệt trong các hệ thống Linux. Điểm mạnh của MySQL khi so sánh với MS SQL là tính tương thích cao với nhiều nền tảng, nhiều cấu hình phần cứng, thêm vào đó còn miễn phí sử dụng dưới quyền đưa ra trong giấy phép GPL. Đặc biệt MySQL luôn đảm bảo được tốc độ, sự ổn định và an toàn cho hệ thống. Trong bài toán xây dựng hệ thống Mail Server, hệ quản trị cơ sở dữ được sử dụng để lưu trữ các thông tin người dùng, domain, …Vì vậy, MySQL là một lựa chọn phù hợp.
1.3.6.Máy chủ POP3/IMAP dovecot (http://www.dovecot.org)
Dovecot là một POP3 và IMAP server mã nguồn mở chạy trên hệ điều hành UNIX nói chung, và được viết ra với mục đích khắc phục các vấn đề về bảo mật. Dovecot được đánh giá là một sự lựa chọn tuyệt vời cho cả những hệ thống lớn và nhỏ vì tốc độ thực thi nhanh, tính dễ cài đặt không đòi hỏi nhiều sự quản trị đặc biệt và sử dụng rất ít tài nguyên hệ thống.
24
Một vài ưu điểm nổi bật của Dovecot:
Dovecot là một IMAP server với hiệu năng rất lớn mà lại hỗ trợ tốt các
chuẩn hộp thư (mailbox) như mbox và Maildir.
Thao tác đánh chỉ số trong Dovecot được tự động tối ưu khiến việc lưu trữ
chính xác hơn các thông tin cần thiết của client.
Dovecot có khả năng tự sửa. Nghĩa là nó sẽ cố gắng tự sửa chữa các lỗi phát sinh trong quá trình vận hành ví dụ như việc hỏng hóc các file chỉ mục. Những thao tác đó vẫn được lưu lại đầy đủ dưới dạng nhật ký để người quản trị có thể xem xét và cấu hình lại sau đó.
Các thông báo lỗi của Dovecot rất rõ ràng và dễ hiểu.
Thao tác chức thực người dùng trong Dovecot rất uyển chuyển, nó hỗ trợ
nhiều cơ chế chứng thực trên nhiều cơ sở dữ liệu khác nhau.
1.3.7.Qmail-Scanner (http://Qmail-scanner.sourceforge.net)
Qmail-Scanner là một sản phẩm hỗ trợ thêm cho phép hệ thống dịch vụ email có thể kiểm tra nội dung của các email, dựa vào đó để áp đặt các chính sách lọc cần thiết. Qmail-Scanner thường được sử dụng như một trình quét virus. Bản thân Qmail- Scanner có trình quét virus riêng, tuy nhiên nó cũng có thể kết hợp với các trình quét virus khác, bao gồm cả các sản phẩm miễn phí, và thương mại. Nó có khả năng tương tác với các email chứa các header, attachment hay có định dạng được người quản trị chỉ định sẵn. Qmail-Scanner cũng được sử dụng như một công cụ kiểm tra (audit) hay sao lưu (backup). Qmail-Scanner là một bộ tích hợp vào hệ thống mail ở mức thấp (low level) so với các trình quét virus khác, vì vậy hiệu năng thực thi cao hơn. Nó không chỉ quét được các email được gửi đi hay nhận đến từ trong cục bộ, mà còn với các email được relay đi qua hệ thống.
1.3.8.Daemon Tools & TCP Server
Daemon Tools (http://cr.yp.to/daemontools.html)
Là bộ tập hợp các tiện ích để quản lý các dịch vụ trên hệ thống. Khi được cài đặt
tích hợp với Qmail, các tiện ích sau được sử dụng chủ yếu:
Supervice: là tiện ích giám sát và quản trị (chạy hay dừng) một dịch vụ. Một dịch vụ để có thể được quản lý bởi supervice chỉ cần bao gồm một thư mục chứa tệp chạy “run”. Tệp này chứa các kịch bản để khởi động dịch vụ.
25
Multilog là tiện ích ghi các thông tin về lỗi vào các nhật ký. Nó có thể tự động
giám sát và điểu chỉnh để tránh việc sử dụng hết dung lượng ổ cứng.
Tcpserver (http://cr.yp.to/ucspi-tcp.html)
Tcpserver và tcpclient là các công cụ dòng lệnh rất dễ sử dụng cho việc xây
dựng một ứng dụng hoạt động theo cơ chế khách-chủ.
Tcpserver đợi các kết nối tới, và với mỗi kết nối, nó chạy một chương trình mà được định nghĩa sẵn. Tcpserver cung cấp tính năng giới hạn số kết nối tối đa, nhằm tránh trường hợp chương trình chạy quá bộ nhớ của hệ thống. Khi đã cung cấp dịch vụ cho 40 (mặc định) kết nối đồng thời, tcpserver sẽ giới hạn bằng cách trì hoãn các kết nối mới. Tcpserver cũng hỗ trợ các tính năng điều khiển truy cập TCP, tương tự như tcp-wrapper/tcpd’s hosts.allow, nhưng tốc độ nhanh hơn. Các chính sách quản lý truy cập của nó được chuyển đổi sang định dạng băm với cdb, vì vậy nó có thể dễ dàng áp dụng chính sách được với hàng nghìn máy khác nhau.
26
Chương 2.THƯ RÁC VÀ CÁC KỸ THUẬT LỌC THƯ RÁC
2.1.Thư rác
Thư rác, hay còn dược dùng dưới tên gốc Anh ngữ là spam hay spam mail, là các thư điện tử vô bổ thường chứa các loại quảng cáo được gửi một cách vô tội vạ và người nhận thường là một danh sách rất dài bao gồm nhiều cá nhân hay nhóm người và chất lượng của loại thư này thường rất thấp. Đôi khi, nó dẫn dụ người nhẹ dạ, tìm cách đọc số thẻ tín dụng và các tin tức cá nhân của họ. Thư rác là một trong những thách thức lớn nhất hiện nay mà khách hàng và các nhà cung cấp dịch vụ phải đối phó. Nó đã trở thành một hình thức quảng cáo chuyên nghiệp, phát tán virus, ăn cắp thông tin... với nhiều thủ đoạn và mánh khóe cực kỳ tinh vi. Người dùng sẽ phải mất khá nhiều thời gian để xóa những email “không mời mà đến”, nếu vô ý còn có thể bị nhiễm virus, trojan, spyware ... và nặng nề hơn là mất thông tin như thẻ tín dụng, tài khoản ngân hàng qua các email dạng lừa đảo (phishing).
Hình 4.Thư rác “tra tấn” người dùng
2.1.1.Đặc điểm của thư rác
Người dùng hộp thư có thể có cảm giác bị "tra tấn" bằng các thư điện tử quảng cáo. Thư rác thường vô hại nhưng mỗi ngày nhiều người có thể vì các thư rác này mà bị đầy cả hộp thư. Trong năm 2003 khi các phần mềm chống thư rác chưa phổ biến và dung lượng của các hộp thư điện tử còn giới hạn thì đã có rất nhiều người dùng thư
27
điện tử phải nhận cả trăm thư rác trong một ngày mà chỉ có đúng vài nội dung khác nhau. Tại sao các thư rác lại lặp đi lặp lại một cái thư quảng cáo cả chục lần cho một hộp thư? Một lý do là các hãng quảng cáo muốn dùng hiệu ứng tâm lý. Khi hình ảnh sản phẩm nào đó cứ đập vào mắt người đọc mãi thì đến lúc cần mua một thứ có chức năng tương tự (hay cùng loại) thì chính hình ảnh thương hiệu của thư rác sẽ hiện đến trong óc người đó trước tiên. Lý do khác là kích thích sự tò mò của người dùng thư điện tử muốn đọc thử một thư rác xem có nội dung gì bên trong.
Thư rác không có "độc tính", hiểu theo nghĩa có hại cho máy tính, mà chỉ đôi khi làm người chủ hộp thư khó chịu hoặc đôi khi làm cho các thư từ khác quan trọng hơn thay vì nhận được thì lại bị trả về cho người gửi vì lí do hộp thư người nhận đã quá đầy!
Tuy nhiên, không thể tránh được các thư rác có nội dung khiêu khích hay lợi dụng. Việc quan trọng nhất của người dùng hộp thư là đừng bao giờ trả lời hay xác nhận bất kì gì mà các thư này yêu cầu và việc đơn giản là xóa chúng đi.
Như vậy, thư rác có thể xem là một loại thư có mang thêm những tính năng phiền nhiễu đến cho nguời chủ hộp thư và người tạo ra các thư rác đã lợi dụng chức năng của hệ thống thư điện tử (hay hệ thống mạng) bởi vì chúng được gửi đi với số lượng rất lớn đến nhiều nơi và gửi nhiều lần trong thời gian ngắn.
Các chi phí chuyển thư, chứa thư và xử lý thư rác thuộc về người dùng hay tổ chức cung cấp Webmail. Tuy nhiên cần phân biệt rõ rằng hoàn toàn hợp pháp khi có các thư tiếp thị.
Những người gửi thư rác thường ngụy tạo những thông tin giả như là tên, địa chỉ, số điện thoại... để đánh lừa các ISP. Họ cũng thường dùng số giả hay số ăn cắp của các thẻ tín dụng để chi trả cho các tài khoản. Việc này cho phép họ di chuyển thật nhanh từ một tài khoản này sang tài khoản khác mỗi lần bị phát hiện và bị đóng tài khoản bởi các chủ ISP.
Nguời gửi thư rác cũng có thể đột nhập vào giao thức thư điện tử (SMTP) để
đánh lừa rằng các thư đó đến từ một địa chỉ email khác.
Gần đây, tác nhân gửi thư rác còn dùng cả các loại virus mạng trên hệ thống
Windows (như là virus Zombie) nhằm gửi truyền đi các thư rác.
2.1.2.Các đặc trưng của thư rác
Việc thu thập các địa chỉ
28
Để gửi thư rác, người gửi cần phải có một số lượng lớn địa chỉ thư của người dự tính sẽ nhận thư. Vì các thư rác được gửi một cách vô tội vạ, vô trách nhiệm, nên danh sách điạ chỉ được thu thập về để gửi của một thư rác có thể lên đến hàng chục triệu. Trong đó, không ít địa chỉ là không hợp lệ hay không thể gửi đến được (các địa chỉ thư cũ không còn người dùng nữa chẳng hạn).
Thư rác có nhiều đặc điểm khác với các thư trực tiếp tiếp thị (direct marketing). Một trong các điểm này là nó không tốn thêm tiền khi gửi với một số lượng người nhận lớn hơn. Bởi vậy, nó không có sự tuyển lựa người nhận là ai. Do đó, các thư rác có thể có các thứ tiếng mà người nhận không thể đọc được hay chúng được gửi đến ngay cả người quản lý hệ thông thư (postmaster) hoặc được gửi trùng lặp nhiều lần tới cùng một địa chỉ.
Các địa chỉ thư có thể thu thập về bằng nghiều cách.
Cách phổ biến là việc dùng các địa chỉ được đăng bởi những người chủ để dùng trong các mục đích khác nhau. Thí dụ như địa chỉ của các nhóm Google thường là mục tiêu của những người phát tán thư rác. Hoặc người phát tán có tên đăng kí trong các danh sách bàn luận qua thư điện tử (discussion mailing lists). Nhiều chương trình tiện ích có thể dùng để tìm ra các điạ chỉ trên các trang WEB.
Một phương pháp khác nữa để tìm địa chỉ gửi là thâm nhập vào các tài khoản bằng cách dùng máy tính để mò tìm tên và mật khẩu của một tài khoản trong các hệ thống thư điện tử dùng phương pháp tấn công kiểu từ điển. Ngoài ra, các tên thông dụng (ví dụ John, Smith, Steve,...) có thể ghép thành một địa chỉ đúng trong nhiều ngàn tên miền và sẽ có sác xuất thành công rất cao.
Những kỹ thuật dùng để gửi thư rác
Trước đây, khi thư rác được gửi từ người tạo ra thư rác thì chắc chắn ISP sẽ bị phát hiện ra từ việc phản ánh của các người nhận thư đó. Do dó, kĩ thuật cơ bản của việc gửi thư rác là gửi chúng bằng máy tính của người khác để dấu hành vi của mình.
Trong thập niên 1990, cách chung nhất để gửi thư rác là lợi dụng các hệ thống ngưng đọng thư mở (Open relay). Bởi vì các máy chủ thư điện tử kiểu này có cấu hình để chuyển các mẫu thông tin gửi tới nó từ bất kì nơi nào đến bất kì người nhận nào (mà không kiểm soát). Đây cũng là cách thiết trí mặc định của các kiến trúc SMTP nguyên thuỷ. SMTP đã được thiết kế trước khi có nạn thư rác nên không lường được
29
hiệu quả này và đã bị lạm dụng bởi thư rác. Người gửi thư rác có thể dùng một loại văn lệnh để gửi thư rác qua các ngưng đọng thư mở này.
Sau đó một vài năm, việc khai thác các hệ thống ngưng đọng thư mở không còn hiệu quả thì đã xuất hiện các phương pháp khác, trong đó, quan trọng là việc dùng các proxy mở. Các proxy mở này sẽ nối máy khách vào một máy chủ bất kì mà không cần kiểm lại chủ quyền xử dụng và cũng không giới hạn các quyền hạn truy cập khác. Như vậy, người phát tán có thể chỉ thị một proxy mở để nối vào một máy chủ điện thư và gửi thư rác qua đó. Các máy chủ đã làm công việc kết nối với proxy không phải người chủ phát tán.
Bên cạnh đó, người ta còn lợi dụng các dịch vụ thiếu an toàn để gửi thư rác. Thí dụ: FormMail.pl là một file CGI thi hành cho phép các trang WEB gửi thư trả lời từ một mẫu điền HTML. Nhiều phiên bản của chương trình này cho phép người dùng chuyển hướng thông điệp đến một điạ chỉ tùy ý. Thư rác được gửi kiểu này thường có dòng mở đầu là: Below is the result of your feedback form.
Ngày nay, những kẻ phát tán thay vì dùng các biện pháp kể trên, đã chuyển sang thiết kế các con virus để khai thác các proxy và các công cụ gửi thư rác khác. Hàng trăm ngàn máy tính có thể bị nhiễm. Hầu hết các virus thư rác trong năm 2003 là các virus trên môi trường Windows, bao gồm họ virus Sobig và Mimail.
Ngoài ra, những kẻ phát tán còn dùng đến một thủ đọan khác là tấn công vào các
DNSBL và các nguồn chống thư rác. Trong năm 2003 nhiều DNSBL đã bị tấn công.
2.2.Các biện pháp loại bỏ thư rác
Từ các đặc điểm và đặc trưng của thư rác, đã có rất nhiều nghiên cứu khác nhau về vấn đề làm sao giảm thiểu càng nhiều càng tốt lượng thư rác đang ngày càng tăng hiện nay.
Dùng chức năng lọc: Nhiều nơi cung cấp phần mềm điện thư cũng đã có sẵn bộ lọc (filter) để loại bỏ các thư rác này trước khi tới tay người nhận một cách chủ động nhưng các lọc này không hoàn toàn tuyệt hảo.
Hầu hết các phần mềm email client như là MS Outlook, AOL có thêm chức năng
cho phép chúng ta cài lại một số dấu hiệu và loại bỏ thư rác qua các thực đơn sẵn có.
30
Hình 5.Dùng chức năng sẵn có của Outlook để loại bỏ thư rác
Một số cơ sở thương mại cũng đã có các dịch vụ để giúp người tiêu dùng dẹp bỏ nạn thư rác bằng cách tung ra thị trường các loại phần mềm (bộ lọc) chống thư rác. Tuy nhiên không phải phần mềm nào dược bán ra cũng hoạt động hữu hiệu. Hai hãng có sản phẩm chống spam tương đối mạnh là Norton AntiSpam và Qurb.
Sử dụng WebMail: Thay vì dùng các hộp thư thông thường thì có thể dùng các dịch vụ cung cấp thư điện tử qua Internet. Bằng cách này thì trách nhiệm lọc thư rác được giao về cho các dịch vụ cung cấp. Tuy nhiên, không chắc dịch vụ nào cũng làm tốt nhiệm vụ này. Nghĩa là họ có thể không làm gì cả để lọc các thư rác trong hộp thư. Trong các dịch vụ kiểu này thì có Mailblocks Extended Servivce khá hữu hiệu. Tuy nhiên, người mua dịch vụ lại phải trả cước phí hàng tháng nào đó cho công tác này.
Người dùng Internet và các người quản lý hệ thống đã phát triển nhiều kỹ thuật để ngăn, lọc, hay cấm các thư rác thâm nhập vào các hộp thư. Hầu hết các ISP cấm việc dùng dịch vụ của họ để gửi thư rác. Cũng có nhiều tổ chức hay người tình nguyện đứng ra lo việc ngăn chặn thư rác như là Brightmail, Postini, và nhiều DNSBL.
31
Một số chính phủ trong đó đi tiên phong là Hoa Kỳ đã có biện pháp mạnh mẽ hơn để bảo vệ người tiêu dùng bằng cách ra các đạo luật phạt vạ khắc khe các cơ sở hay cá nhân dùng thư rác. Tuy nhiên nhược điểm của phương án này là 3/4 các thư rác lại không được gửi ra trong nước mà là chúng đến từ những nơi chưa có lệnh cấm.
Hiện tại đang có nhiều nỗ lực để phát triển những tiêu chuẩn về thư điện tử mới nhằm mục đích chấm dứt tình trạng này. Một khi các tiêu chuẩn đó được công nhận thì khái niệm spam sẽ không còn thông dụng nữa.
2.2.1.Danh sách tên miền đen (DNS-based Blackhole Lists)
Danh sách tên miền đen là một danh sách các địa chỉ IP mà rất nhiều người muốn tránh kết nối tới (vì lý do an toàn) được công bố rộng rãi trên mạng toàn cầu. Danh sách đó được công bố theo một định dạng và phương thức sao cho tất cả mọi người đều dễ dàng truy cập được. Công nghệ đó được xây dựng dựa trên nền tảng hệ thống tên miền Internet (Internet Domain Name System hay DNS). Danh sách tên miền đen chủ yếu là danh sách của những tên miền có liên quan đến thư rác. Hầu hết các máy chủ vận chuyển thư đều có thể được cầu hình để từ chối nhận/gửi hoặc đánh dấu thông điệp được gửi từ những tên miền có trong danh sách đen.
Khi một thông điệp được gửi đi, nó sẽ đi qua một số máy chủ SMTP trước khi chuyển tới địa chỉ người nhận. Địa chỉ IP của các máy chủ SMTP mà thông điệp đó đã chuyển qua được ghi trong phần đầu (header) của thông điệp. Các chương trình chống thư rác sẽ kiểm tra tất cả các địa chỉ IP đã được tìm thấy trong phần đầu của thông điệp đó sau đó so sánh với cơ sở dữ liệu DNS Blacklist đã biết. Nếu địa chỉ IP tìm thấy trong phần này có trong cơ sở dữ liệu về các DNS Blacklist, nó sẽ bị coi là spam, còn nếu không, email đó sẽ được coi là một email hợp lệ.
Để triển khai một danh sách tên miền đen, cần có 3 yếu tố: một tên miền để lưu trữ danh sách đó, một máy chủ tên cho tên miền đó và một danh sách các địa chỉ cần được công bố. Có thể sử dụng phần mềm BIND – là một phần mềm DNS phổ biến dùng được cho nhiều mục đích để cài đặt một danh sách tên miền đen. Tuy nhiên nó không hiệu quả trong trường hợp số lượng tên miền trong danh sách là rất lớn. Vì thế các phần mềm chuyên về danh sách đen như Michael J. Tokarev's rbldnsd hay Daniel J. Bernstein's rbldns sẽ chạy nhanh hơn, tốn ít tài nguyên hơn và dễ cấu hình hơn.
Truy vấn danh sách đen
32
Khi một máy chủ tiếp nhận kết nối từ một máy khách và muốn kiểm tra xem máy khách đó có nằm trong một danh sách đen (ví dụ spammers.example.net) hay không. Nó sẽ thực hiện các thao tác sau:
Lấy địa chỉ IP của máy khách (ví dụ 192.168.42.23) rồi đảo ngược thứ tự byte
của nó (trở thành 23.42.168.192)
Thêm vào tên miền của danh sách đen (trở thành
23.42.168.192.spammers.example.net).
Thử tìm kiếm tên này trong DNS như một tên miền (bản ghi “A”). Kết quả trả về sẽ là một địa chỉ, chỉ định rằng máy khách đó có ở trong danh sách, hoặc một mã “NXDOMAIN” báo rằng khách hàng đó không có trong danh sách.
Tiếp theo, nếu máy khách có ở trong danh sách đen, máy chủ có thể thử tìm kiếm tên như một bản ghi văn bản (bản ghi “TXT”). Hầu hết các danh sách đen đều lưu trữ thông tin về một địa chỉ và nguyên nhân nó nằm trong danh sách đen.
Chính sách danh sách đen
Tuỳ theo từng danh sách đen mà nó có những chính sách khác nhau. Tuy nhiên
các danh sách đen thường có chung 3 chính sách sau:
Mục đích: cho biết danh sách đen đó liệt kê những gì? nó lưu trữ danh sách của
những relay mailserver, hay proxy hay địa chỉ IP của những máy gửi thư rác vv...
Sự chỉ định: nghĩa là bằng cách nào mà danh sách đen có được những địa chỉ
trong danh sách, nó có cần tuân theo sự chỉ định của người dùng hay không vv...
Vòng đời của danh sách: chỉ ra danh sách đã tồn tại bao nhiêu lâu? danh sách có tự động hết hạn không hay cần huỷ bỏ nó bằng tay? Thao tác cần thực hiện để huỷ bỏ một danh sách là gì?
Phương pháp này có ưu điểm là các thông điệp có thể được kiểm tra trước khi tải xuống, do đó tiết kiệm được băng thông đường truyền. Nhược điểm của phương pháp này là không phát hiện ra được những email giả mạo địa chỉ người gửi.
2.2.2.Lọc thư rác dựa theo chuẩn SMTP
Một trong những giới hạn của chuẩn SMTP nguyên thuỷ là nó không có khả năng xác thực người gửi.Vì vậy, sau này chuẩn SMTP đã được mở rộng thành SMTP- AUTH có thêm chức năng xác thực người gửi. Tuy nhiên SMTP-AUTH vẫn còn chứa đựng những yếu tố phi thực tế khi triển khai trên diện rộng.
33
Trong thực tế, rất khó để mở rộng chuẩn SMTP một cách toàn diện hoặc thay thế hoàn toàn SMPT thành một phiên bản khác, vì hiện nay, SMPT là cơ sở cho rất nhiều ứng dụng mạng. Việc thay thế hoặc mở rộng có thể dẫn đến những khó khăn khó lường trước.
Thư rác được phát tán nhờ một vài tác nhân bao gồm cả việc các nhà cung cấp triển khai những MTA bị lỗi (thường là không tuân theo chuẩn nên gây khó khăn cho những MTA khác), hoặc những điểm yếu bảo mật trong hệ điều hành (xuất hiện nhiều nhất khi có kết nối mạng toàn cầu) cho phép kẻ phát tán thư rác điểu khiển từ xa máy tính của người dùng và gửi đi các thư vô bổ. Ngoài ra một vấn đề nan giải hiện nay còn tồn tại nữa là việc các MTA vẫn còn thiếu sự “thông minh”.
Lọc thư rác thông qua kiểm tra chuẩn SMTP có thể được sử dụng để ngăn chặn những thư gửi đến từ những hệ thống không tuân theo mô tả RFC của chuẩn SMTP. Rất nhiều kẻ phát tán sử dụng những chương trình được viết không cẩn thận hoặc không thể tuân theo chuẩn do họ không được phép điều khiển máy tính gửi thư một cách hợp lệ. Bằng việc giới hạn những thiết lập trên MTA, người quản trị có thể giảm thiểu được số lượng thư rác.
Kiểm tra HELO/EHLO
Có thể giảm thiểu khá nhiều thư rác bằng một số kiểm tra đơn giản, tuy nhiên,
thật không may là đa số những MTA hiện nay đều bỏ qua những cài đặt kiểm tra này.
Trong nhiều trường hợp, yêu cầu một tên miền được giới hạn đầy đủ (FQDN – Fully Qualified Domain Name) trong câu lệnh SMTP EHLO cũng đủ để ngăn 25% số thư rác đến.
Từ chối kết nối từ những máy mà bắt đầu truyền dữ liệu trước cả việc trình diễn
câu lệnh HELO trên máy nhận.
Từ chối kết nối từ những máy đưa ra câu lệnh HELO không hợp lệ. Ví dụ: câu lệnh HELO trên một máy không phải FQDN hoặc một IP không nằm trong dấu ngoặc vuông.
Invalid HELO localhost
Invalid HELO 127.0.0.1
Invalid HELO domain.tld
Valid HELO [127.0.0.1]
Từ chối kết nối từ những máy đưa ra câu lệnh HELO rõ ràng gian lận. Ví dụ sử
dụng một FQDN hoặc một địa chỉ IP không phù hợp với địa chỉ IP của máy kết nối.
34
Fraudulent HELO friend
Fraudulent HELO -232975332
Từ chối chấp nhận thư yêu cầu từ tên miền khi máy gửi chưa được xác thực.
Từ chối chập nhận thư có tham số câu lệnh HELO/EHLO không thể trả về trong
DNS.
Tất cả các ví dụ trên đều là những kiểm tra đơn giản, và đều được tuân theo những tiêu chuẩn hiện nay mô tả trong RFC. Tuy nhiên hầu hết các MTA hiện nay đều bỏ qua những kiểm tra này.
2.2.3.Danh sách xám (Greylisting)
Danh sách xám loại bỏ tạm thời những thông điệp từ phía những máy chủ không rõ xuất xứ. Một sự loại bỏ tạm thời được chỉ định với một mã lỗi là 4xx khả dĩ có thể được nhận ra bởi toàn bộ các MTA thông thường, sau đó các MTA này tiếp tục xử lý để thử phân phát lại sau đó. Nếu thư đó là hợp pháp, máy chủ gửi sẽ thử gửi lại nó cho đến khi máy chủ nhận chấp nhận thông điệp. Ngược lại, nếu thư đó là một thư rác, thông thường sẽ không được gửi lại và máy chủ gửi sẽ được thêm vào trong danh sách đen (danh sách bị chặn).
Danh sách xám được dựa trên một tiền đề là những kẻ phát tán thư rác thường sẽ không gửi lại thông điệp của chúng, chủ yếu vì vấn đề chi phí cho chiến lược gửi lại là không đáng.
Thông thường, một máy chủ có sử dụng Danh sách xám sẽ lưu trữ cho mỗi thông
điệp nó nhận được 3 thông tin sau (gọi là bộ ba):
- Địa chỉ IP của máy có kết nối tới nó.
- Tem của người gửi.
- Tem của người nhận.
Bộ ba này sẽ được kiểm tra trong cơ sở dữ liệu nội tại của máy chủ đó. Nếu nó chưa từng có trong cơ sở dữ liệu, thông điệp sẽ bị chặn lại đưa vào danh sách xám trong một thời gian ngắn và coi như bị từ chối tạm thời. Lúc này, máy chủ nhận sẽ giả vờ như có lỗi xảy ra trong quá trình vận chuyển thư và thông báo lại cho máy chủ gửi đúng như trong mô tả RFC. Nếu máy chủ gửi là hợp pháp, nó sẽ thử kết nối lại sau đó để gửi thông điệp.
35
Trong thực tế, địa chỉ người gửi và địa chỉ IP trong cơ sở dữ liệu không cần giống nhau tuyệt đối. Vì với số lượng người gửi là rất lớn, thường sẽ có một vùng máy có thể gửi (và gửi lại) thông điệp. Khi đó, có thể coi địa chỉ IP nào có 24 bit đầu giống nhau thì hợp lệ.
Danh sách xám có hiệu quả khá cao vì rất nhiều công cụ phát tán thư rác không thể gửi lại thông điệp nên thư rác sẽ không bao giờ được chuyển đi. Hoặc nếu công cụ phán tán có thể thử gửi lại thông điệp thì vì nó phải gửi vô cùng nhiều thư rác một lúc, nên khi gửi lại thông điệp, thời gian chờ đã hết hạn và địa chỉ máy chủ gửi đã bị liệt kê vào danh sách đen (danh sách bị ngăn chặn).
Ưu điểm lớn nhất của việc sử dụng danh sách xám là cấu hình đơn giản. Với người dùng cuối, họ không phải thêm bất cứ cấu hình gì. Nếu hệ thống hỗ trợ danh sách xám, họ sẽ nhận được thông báo lỗi trong lần gửi thư đầu tiên. Với người quản trị hệ thống, danh sách xám đòi hỏi một số rất ít các cấu hình và cấu hình đó tự thay đổi trong quá trình hệ thống làm việc. Thêm nữa, việc từ chối thông điệp với mã lỗi tạm thời 4xx tốn rất ít tài nguyên hệ thống nội tại trong khi các kỹ thuật lọc thư khác đều sử dụng lượng tài nguyên đáng kể.
Tuy vậy, một vài MTA, khi nhận được thông báo từ chối tạm thời từ những máy chủ có cài đặt danh sách xám sẽ gửi một thông báo cảnh báo trở lại người gửi bao gồm cả thông báo nguyên gốc. Cảnh báo này không có nhiều ý nghĩa với người dùng cuối, nhưng nó lại được định danh như một thông điệp bình thường, khiến người gửi tin rằng thông báo đã không được gửi nhưng thật ra nó đã được gửi đi thành công vào một thời điểm sau đó. Vì vậy danh sách xám gây ra sự tốn kém tài nguyên trên đường truyền mạng và từ chối tạm thời quá nhiều thông điệp từ những máy chủ hợp pháp nhưng chưa có trong danh sách. Trong một vài trường hợp, những thư điện tử hợp lệ thậm chí cũng không được phân phát.
2.2.4.Lọc dựa vào checksum (kiểm tra tổng)
Lọc dựa vào checksum tận dụng ưu điểm của thực tế là với mỗi kẻ phán tán thư rác, thường tất cả các thông điệp của hắn ta gửi đi đều có chung một định danh nhất định, điều khác biệt duy nhất là các khi thông điệp chứa đựng tên và địa chỉ email của người nhận. Vì vậy, hệ thống cần loại bỏ tất cả những thứ có thể khiến thông điệp bị khác đi, rồi mới tính checksum. Sau đó, kiểm tra xem checksum đó có nằm trong cơ sở dữ liệu những checksum của các thư rác hay không. Nếu có, thông điệp đó được coi là thư rác.
36
Ưu điểm của kiểu lọc này là nó cho phép người sử dụng trợ giúp xác định thư rác mà không phải chỉ có người quản trị, điều này có thể khiến cơ sở dữ liệu về thư rác tăng lên rất lớn và ngày càng chính xác hơn. Tuy nhiên, nhược điểm của nó khá rõ ràng. Những kẻ phán tán thư rác có thể dễ dàng chèn thêm những từ hay cụm từ “trong suốt” đối với người sử dụng (hashbusters) vào giữa bức thông điệp của chúng, khiến cho các thông điệp đều trở nên duy nhất và có checksum hoàn toàn khác nhau. Điều này gây ra một cuộc chạy đua giữa những người phát triển phần mềm kiểm tra checksum và những người phát triển phần mềm gửi thư rác.
2.2.5.Chứng thực và danh tiếng
Một số hệ thống đã được đề xướng để cho phép chấn nhận thông điệp từ những máy chủ đã được chứng thực theo một cách nào đó như là một người gửi gửi những thông điệp hợp lệ.
Thông thường, những kẻ phát tán thư rác sử dụng chương trình gửi thư rác với địa chỉ người gửi là giả mạo và không hợp lệ. Vì vậy nhiều thư rác có thể bị phát hiện bằng cách kiểm tra địa chỉ người gửi. Việc kiểm tra tính hợp lệ của địa chỉ người gửi được thực hiện thông qua một kết nối bật tường (bounce) ngược lại từ máy chủ nhận thư đến máy chủ gửi thư như thể là nó muốn gửi thư đi, nhưng việc này sẽ được dừng lại trước khi có bất cứ thông điệp nào được gửi đi thật. Phương pháp này tuân theo chuẩn SMTP được mô tả trong RFC, theo đó, các câu lệnh được thực hiện sẽ là:
HELO
MAIL FROM:<>
RCPT TO:
QUIT
Ưu điểm của phương pháp này chính là tính đơn giản, dễ cài đặt và tốn kém ít tài nguyên, tuy nhiên nó cũng chứa đựng nhiều nhược điểm. Ví dụ như nhược điểm chính của phương pháp này là buộc phải tin cậy vào những máy chủ bên ngoài gửi trả lại kết quả truy vấn rất có thể không đáng tin cậy. Điều này cũng giống như trên thực tế hiện nay, đa số kẻ phát tán đều sử dụng tài nguyên của người khác để gửi thư rác.
2.2.6.Lọc thư rác dựa vào nội dung
Cho tới gần đây, kỹ thuật lọc nội dung trở nên tin cậy hơn, theo đó, người quản trị sẽ liệt kê danh sách các từ hoặc biểu thức chính quy không được chấp nhận trong thông điệp thư. Như vậy, nếu có một thư quảng cáo “herbal Viagra”, người quản trị có
37
thể đặt những từ này trong cấu hình lọc. Máy chủ thư sau đó sẽ từ chối nhận những thông điệp có chứa những cụm từ đó.
Lọc theo nội dung không chỉ dựa vào những từ hay cụm từ trong phần nội dung thông điệp, ngoài ra nó còn lọc theo những phần khác ví dụ như phần đầu (header) thông điệp. Phần đầu thông điệp cũng là một phần chứa đựng thông tin về thông điệp. Những kẻ phán tán thường làm giả mạo trường trong phần đầu thông điệp nhằm mục đích che dấu danh tính của chúng hoặc để cố làm cho thông điệp của chúng nhìn có vẻ hợp lệ hơn. Tuy nhiên rất nhiều những giả mạo kiểu này có thể bị phát hiện. Hơn nữa, những công cụ gửi thư rác thường sinh ra những phần đầu không tuân theo chuẩn RFC được mô tả về định dạng thư điện tử.
Tuy nhiên, sự lọc thô kiểu này sẽ có một số nhược điểm chính: Thứ nhất, thời gian tính toán có thể rất lớn. Thứ hai, nó có thể cho kết quả không đúng. Nếu lọc nội dung bằng tay, có thể dễ dàng loại bỏ đi những thông điệp liên quan đến sản phẩm được quảng cáo trong thư rác, nhưng với việc lọc tự động điều đó trở nên rất khó khăn. Hoặc lọc tự động rất có thể chặn những thông điệp hợp pháp nói về cùng một chủ đề với một thư rác nào đó.
Ngoài ra, những kẻ phát tán thư rác còn có thể thay đổi cụm từ và cách viết mà họ sử dụng, hoặc sử dụng một số phương pháp ngăn chặn việc phát hiện cụm từ. Ví dụ, từ “Viagra” có thể được viết thành “V1agra” hoặc “Via_gra”, mặc dù điều này gây một chút khó khăn cho người đọc. Hoặc, có thể chèn một thẻ HTML ghi chú vào giữa cụm từ (“Viagra”). Điều này là “trong suốt” đối với người dùng cuối vì họ vẫn nhìn thấy chữ “Viagra” như bình thường. Phức tạp hơn, kẻ gửi thư rác còn có thể gửi thông điệp dưới dạng hình ảnh, những phần mềm chống thư rác hiện nay không thể phân tích từ hay cụm từ trong thông điệp bằng hình ảnh được vì thực ra trong đó không hề chứa nội dung văn bản có thể đọc được.
Tuy nhiên, lọc nội dung cũng có thể được triển khai bằng phương pháp khảo sát những đường dẫn URL trong thông điệp thư tín (ví dụ spamvertising). Dạng lọc theo nội dung này an toàn hơn một chút vì các URL trong thông điệp buộc phải trả về một tên miền hợp lệ nếu thông điệp đó muốn là một thông điệp hợp lệ. Lấy ra tất cả các liên kết từ thông điệp và so sánh chúng với một danh sách các tên miền được công bố trước là một các đơn giản và hiệu quả để loại trừ một số lượng phần trăm lớn thư rác qua việc lọc theo nội dung.
38
2.2.7.Danh sách SURBL
Phương pháp sử dụng SURBL phát hiện thư rác dựa vào nội dung của thông điệp. Chương trình chống spam sẽ phân tích nội dung của email xem bên trong nó có chứa các liên kết đã được liệt kê trong Spam URI Realtime Blocklists (SURBL) hay không. SURBL chứa danh sách các miền và địa chỉ của các kẻ phát tán (spammer) đã biết. Cơ sở dữ liệu này được cung cấp và cập nhật thường xuyên tại địa chỉ www.surbl.org.
Có nhiều danh sách SURBL khác nhau như sc.surbl.org, ws.surbl.org, ob.surbl.org, ab.surbl.org..., các danh sách này được cập nhật từ nhiều nguồn. Thông thường, người quản trị thường kết hợp các SURBL bằng cách tham chiếu tới địa chỉ multi.surbl.org. Nếu một thông điệp sau khi kiểm tra nội dung có chứa các liên kết được chỉ ra trong danh sách SURBL thì nó sẽ được đánh dấu là thư rác, còn không nó sẽ được cho là một thông điệp thông thường.
Phương pháp này có ưu điểm phát hiện được các email giả mạo địa chỉ người gửi để đánh lừa các bộ lọc. Nhược điểm của nó là thông điệp phải được tải xuống trước khi tiến hành kiểm tra, do đó sẽ chiếm băng thông đường truyền và tài nguyên của máy tính để phân tích các nội dung thông điệp.
2.2.8.Lọc thư rác dựa vào thống kê
Lọc dựa vào thống kê lần đầu tiên được đề cập tới vào năm 1998 bởi Mehran Sahami tại hội thảo AAAI-98 về vấn đề Phân hạng văn bản. Theo đó, một máy lọc theo thống kê chính là một loại hệ thống phân loại tài liệu và nó đã thu hút được sự chú ý của rất nhiều người nghiên cứu về vấn đề học máy. Sau đó, lọc theo thống kê chính thức được công bố năm 2002 trên bài báo A Plan for Spam của Paul Graham. Bài báo đó sử dụng phương pháp phân loại văn bản Bayes để quyết định xem một thông điệp có là thư rác hay không dựa vào một tập hợp các thông điệp đã biết rõ là thư rác hoặc không phải thư rác do người dùng chỉ định.
Khi một hệ thống lọc dựa theo thống kê được cài đặt, nó không yêu cầu bất cứ sự bảo trì nào. Thay vào đó, người dùng cuối sẽ đánh dấu các thông điệp cho biết đó là thư rác hay không là thư rác và hệ thống lọc sẽ tự động học theo những phán quyết đó. Như vậy, hệ thống không thiên về tác giả phần mềm hay người quản trị hệ thống, mà thiên về người sử dụng. Điều này có nghĩa là người dùng sẽ tự chỉ dẫn cho hệ thống biết rằng thông điệp nào là thư rác, thông điệp nào không phải là thư rác và dựa vào những chỉ dẫn đó, hệ thống đưa ra quyết định cho một thông điệp khác có là thư rác
39
hay không. Ví dụ, một nhà sinh hoá học đang nghiên cứu về Viagra, nếu sử dụng phương pháp lọc theo nội dung, sẽ không thể nhận được các thông điệp có từ “Viagra”. Tuy nhiên, khi sử dụng phương pháp lọc dựa theo thống kê, ông ta có thể nhận các thông điệp đó nhờ vào những chỉ dẫn từ trước. Hệ thống lọc theo thống kê chủ yếu đọc nội dung của thông điệp, tuy nhiên trong nhiều trường hợp nó cũng đọc cả thông tin phần đầu của thông điệp.
Những kẻ phán tán thư rác đã cố gắng chống lại hệ thống lọc theo thống kê bằng cách cố ý chèn thêm nhiều từ hay câu một cách ngẫu nhiên nhưng hợp lệ vào thông điệp chúng gửi đi. Chúng cố gắng giấu từ hay câu đó khéo léo sao cho người nhận không nhìn thấy (thông thường các từ đó được đặt cỡ chữ rất nhỏ hoặc đặt màu trùng với màu nền). Các biện pháp đối phó kiểu gây nhiễu đó khiến cho thông điệp gửi đi trông tự nhiên và hợp lệ hơn, tuy nhiên phần lớn chúng đều không có hiệu quả.
Một số phần mềm phổ biến cài đặt hệ thống lọc dựa vào thống kê như Bogofilter, DSPAM, Thunderbird, Mailwasher và các phiên bản về sau của SpamAssassin...hay dự án CRM114 thống kê theo cách băm theo từng mệnh đề và phân loại dựa trên mệnh đề sử dụng phương pháp Bayesian.
2.2.9.Bộ lọc Bayesian
Bộ lọc Bayesian hoạt động dựa trên định lý Bayes để tính toán xác suất xảy ra một sự kiện dựa vào những sự kiện xảy ra trước đó. Kỹ thuật tương tự như vậy được sử dụng để phân loại thư rác. Nếu một số phần văn bản xuất hiện thường xuyên trong các thư rác nhưng thường không xuất hiện trong các thông điệp thông thường, thì có thể kết luận rằng thông điệp đó là thư rác.
Trước khi có thể lọc thông điệp bằng bộ lọc Bayesian, người dùng cần tạo ra cơ sở dữ liệu từ khóa và dấu hiệu (như là ký hiệu $, địa chỉ IP và các miền...) sưu tầm từ các thư rác và các thông điệp không hợp lệ khác.
Mỗi từ hoặc mỗi dấu hiệu sẽ được cho một giá trị xác suất xuất hiện, giá trị này dựa trên việc tính toán có bao nhiêu từ thường hay sử dụng trong thư rác, mà trong các thông điệp hợp lệ thường không sử dụng. Việc tính toán này được thực hiện bằng cách phân tích những thông điệp gửi đi của người dùng và phân tích các kiểu thư rác đã biết.
40
Để bộ lọc Bayesian hoạt động chính xác và có hiệu quả cao, cần phải tạo ra cơ sở dữ liệu về các thông điệp thông thường và thông điệp thư rác phù hợp với đặc thù kinh doanh của từng công ty, đơn vị. Cơ sở dữ liệu này được hình thành khi bộ lọc trải qua giai đoạn “huấn luyện”. Người quản trị phải cung cấp khoảng 1000 thông điệp thông thường và 1000 thông điệp thư rác để bộ lọc phân tích tạo ra cơ sở dữ liệu cho riêng nó.
2.2.10.Lọc thư rác bằng ước lượng
Lọc ước lượng được cài đặt ở một số chương trình như SpamAssassin và Policyd-weight. Nó sử dụng một số hoặc tất cả các phương pháp lọc thư rác khác nhau cho để thử nghiệm cho các thông điệp và mỗi phương pháp sẽ cộng thêm cho thông điệp đó một điểm số. Mỗi thông điệp đều được lọc qua tất cả các phương pháp này và điểm số của thông điệp sẽ được tăng lên sau mỗi thử nghiệm của phương pháp. Nếu tổng số điểm thử nghiệm của thông điệp là lớn hơn một giá trị cố định nào đó, thông điệp đó sẽ bị loại bỏ hoặc bị đánh dấu là thư rác.
2.3.Một số cài đặt thực tế
2.3.1.Spam Assassin (http://spamassassin.apache.org)
Spam Assassin là một sản phẩm miễn phí, hoạt động dưới giấy phép Apache License 2.0, được dùng cho việc lọc các thư rác (spam filtering) dựa vào các chính sách được thiết lập trên nội dung thông điệp, dựa vào DNS, checksum hay các con số thống kê. Spam Assassin hoạt động dựa trên một trình thứ hai hỗ trợ và một cơ sở dữ liệu lưu trữ thông tin về các dấu hiệu nhận dạng thư rác trực tuyến trên Internet. Bản thân Spam Assassin không phải là trình có thể xóa, di chuyển hay cảnh báo cho người dùng về thư rác. Nó chỉ làm việc bằng cách kiểm tra các thư và đánh dấu nếu chúng là các thư rác. Một trình thứ hai sẽ được sử dụng, dựa vào các dấu hiệu trên để thực hiện việc di chuyển, xóa, … thư đó.
Đặc điểm hoạt động của SpamAssassin:
Spam Assassin hoạt động trên cơ sở các luật
Thực hiện những phân tích heuristic trên phần đầu thư (mail header), và trên những từ và nhóm từ trong nội dung thư (mail body)
Sử dụng phương pháp Bayes để lọc thư
41
Các mail được nhận định sai là spam được gọi là ham. Bộ lọc Bayes sẽ có những thư mục lưu trữ các spam và ham và có những thống kê về từ hay nhóm từ (gọi là các token) đặc trưng cho spam và cho ham. Dựa vào đó, bộ lọc sẽ cho điểm đối với một mail nào đó, điểm dương cho những từ có tính chất “spam” và điểm âm cho từ thuộc dạng “ham”.
Tự động duy trì danh sách địa chỉ cho phép/cấm (automatic whitelist (AWL)/blacklist)
AWL lưu trữ địa chỉ người gởi, IP của người gởi cùng với điểm spam trung bình của người đó trong những lần gởi trước đây. Khi có một mail mới đến, spamassassin truy cập vào AWL để biết điểm spam trung bình của người gởi. Nếu điểm trung bình cao (xác suất là spam cao), thì điểm thư rác lần này của thư sẽ được cộng thêm, ngược lại điểm thư rác sẽ được giảm bớt
Cho phép người dùng tự định nghĩa các danh sách địa chỉ cho phép/cấm (manual whitelist/blacklist)
Cho phép hoạt động kết hợp với các cơ sở dữ liệu về địa chỉ spam có sẵn
Hỗ trợ danh sách tên miền đen (DNS Blocklists)
Khả năng học (learning): SpamAssassin có khả năng học dựa trên tập hợp các spam mail và ham mail để điều chỉnh cách cho điểm khi định dạng thư rác.
Có thể thao tác trên nhiều bộ kí tự (character set and locale)
Khi đã được xác định là spam, mail sẽ được đánh dấu bằng thẻ spam (spam tag), Sau đó, mail sẽ được ứng dụng MUA (mail user-agent) thực hiện lọc mail.
SpamAssassin cũng hỗ trợ việc gởi các báo cáo về spam mail cho các kho cơ sở dữ liệu hợp tác (collaborative filtering databases), ví dụ như Vipul's Razor ( http://razor.sourceforge.net/ ).
Mail::SpamAssassin
Spamassassin Deamon gồm có spamd/spamc.
Spamd: đóng vai trò server, lắng nghe các yêu cầu xử lý mail trên port 783 (port
mặc định).
42
Spamc: đóng vai trò client, thường được gọi trong các script để thực thi spamassassin. Spamc đọc mail từ stdin và đẩy mail đến kết nối với spamd, sau đó nhận mail trả về từ spamd rồi đưa ra stdout.
Spamd thường được chạy như một dịch vụ nền (backgrounfd), còn spamc được
gọi thay cho spamassasin trong các cấu hình cho mailer của người dùng.
Spamd xác định spam dựa trên việc tính điểm (gọi là điểm spam) cho mail và so sánh điểm đó với một giá trị ngưỡng (threshold). Sau khi qua xử lý của spamd, mail đuợc thêm vào một số header khác. Ví dụ, khi mail đã được nhận dạng là spam, sẽ có một số header đáng chú ý sau:
X-Spam-Status: Yes
X-Spam-Level: ********
Số kí hiệu * thể hiện cho phần nguyên trong điểm spam của mail. Trong ví dụ
trên, điểm spam có thể là 8.6.
Lưu ý: Chương trình lọc spam của Spam Assassin bản thân không tự hoạt động
được, hệ thống phải được cài đặt Qmail-scanner để đưa các thư đến Spam Assassin.
Spam Assassin được đánh giá là một trong những chương trình lọc thư rác hiệu
quả nhất, đặc biệt khi kết hợp sử dụng cơ sở dữ liệu trực tuyến trên Internet.
2.3.2.Chống thư rác đối với người dùng cuối
Ngoài việc sử dụng các bộ lọc chống spam, người sử dụng cũng đóng vai trò quan trọng trong việc chống lại “đại dịch” thư rác. Bởi vậy người dùng cần tuân theo một số nguyên tắc sau:
Luôn cập nhật các bản vá mới nhất của các phần mềm đang cài đặt trên máy.
Đảm bảo tất cả các máy luôn được cập nhật các phần mềm chống virus và chống spam.
Sử dụng các firewall để bảo vệ hệ thống.
Không trả lời các email lạ không rõ nguồn gốc. Đối với những kẻ phát tán, khi nhận được một trả lời từ hàng ngàn email họ gửi đi thì cũng chứng minh là phương pháp đó có hiệu quả. Ngoài ra, việc trả lời lại còn xác nhận là địa chỉ email của bạn là có thực và hiện đang được sử dụng. Do vậy địa chỉ email của bạn sẽ “đáng giá” hơn, và những kẻ phát tán sẽ gửi nhiều thư rác hơn.
43
Không gửi các thông tin cá nhân của bạn (số thẻ tín dụng, mật khẩu, tài khoản ngân hàng, v.v... ) trong thư điện tử. Những kẻ phát tán và những kẻ lừa đảo qua mạng có thể tạo ra những trang web giả mạo các tổ chức, ngân hàng... đề nghị bạn gửi mật khẩu và một số thông tin về thẻ tín dụng của bạn qua email.
Không hồi đáp email bằng cách nhấn lên từ như “loại bỏ” (remove) hoặc “ngừng đăng ký” (unsubscribe) trong dòng tiêu đề hoặc trong nội dung của thư trừ khi đây là nguồn đáng tin cậy (các email tiếp thị trực tiếp). Đây là tiểu xảo của những kẻ phát tán để người sử dụng hồi đáp lại các thư rác của họ. Khi nhận được hồi đáp, những kẻ phát tán không những không loại bỏ địa chỉ email của bạn ra khỏi danh sách mà còn gửi tới nhiều spam hơn bởi vì họ biết rằng địa chỉ email của bạn hiện đang hoạt động.
Không bao giờ bấm vào các liên kết URL hoặc địa chỉ trang web được ghi trong spam ngay cả khi nó hướng dẫn người nhận ngừng đăng ký. Điều này cũng cho người gửi biết rằng địa chỉ email của bạn đang được sử dụng và bạn có thể sẽ nhận được nhiều spam hơn.
Sử dụng hai địa chỉ email khác nhau, một địa chỉ sử dụng cho các việc riêng như bạn bè, công việc. Một địa chỉ sử dụng để đăng ký trở thành thành viên của các diễn đàn, các tổ chức... những nơi mà địa chỉ email của bạn có thể bị lạm dụng hoặc bán.
Không nên đăng địa chỉ email của bạn ở những nơi công cộng (ví dụ như các diễn đàn, bảng tin, chat room...) nơi những kẻ phát tán thường sử dụng các tiện ích để thu thập và tìm kiếm địa chỉ email.
Không bao giờ được chuyển tiếp spam cho người khác.
Chuyển spam nhận được đến người quản trị hệ thống email. Quản trị viên sẽ thay đổi chương trình lọc để lần sau hệ thống sẽ chặn lại những email tương tự như thế.
44
Chương 3.ĐÓNG GÓI CÀI ĐẶT
Sau khi phân tích, lựa chọn sản phẩm phần mềm mã nguồn mở để cài đặt các thành phần của hệ thống thư điện tử, chúng ta cần cấu hình các thành phần đó để chúng hoạt động ăn khớp với nhau tạo thành một hệ thống chung có thể vận hành được. Một đề nghị lựa chọn các thành phần cho hệ thống được đề cập tới ở phần trên bao gồm:
(0) Hệ điều hành: Fedora Core 6
(1) Máy chủ xác thực: LDAP
(2) Máy chủ web: Apache
(3) Hệ quản trị cơ sở dữ liệu: MySQL
(4)Máy chủ SMTP: Qmail
(5)Máy chủ IMAP/POP3:Dovecot
(6) Web Mail: Squirrelmail
(7) Mail Scanner: Spam Assassin, AVG Antivirus
Đồng thời, hệ thống Mail server phải có các thành phần chống thư rác hoạt động
tốt bao gồm các kỹ thuật tiêu biểu:
- Hỗ trợ giao thức SMTP mở rộng vấn đề xác thực (SMTP-AUTH)
- Hỗ trợ lọc thư rác dựa vào danh sách tên miền đen (DNS-based Black List)
- Hỗ trợ lọc thư rác dựa vào nội dung thư sử dụng công thức Bayes
- Hỗ trợ lọc thư rác dựa vào phương pháp ước lượng (tính điểm)
Trong đó, các thành phần cơ bản cần phải có như: Hệ điều hành Fedora Core 6, Web server Apache, Database server Mysql coi như đã cài đầy đủ và không có cấu hình gì đặc biệt.
45
Hình 6.Cấu trúc hệ thống
3.1.Cài đặt và cấu hình Ldap
LDAP là một thành phần có sẵn trong bộ cài đặt của Fedora Core 6 nên vấn đề
cài đặt rất dễ dàng. Ta có thể cài đặt LDAP server qua lệnh:
[]# rpm -ivh openldap-servers-2.3.27-4.i386.rpm
46
Trong file cấu hình LDAP (/etc/openldap/slapd.conf) có rất nhiều lựa chọn cấu hình. Lựa chọn buộc phải thiết lập đó là các thông tin về định danh máy chủ LDAP và thông tin về tài khoản quản trị hệ thống LDAP. Dưới đây là một ví dụ:
database bdb
suffix "dc=g8soft,dc=local"
rootdn "cn=Manager,dc=g8soft,dc=local"
rootpw {crypt}ijFYNcSNctBYg
Để việc quản trị LDAP server được dễ dàng, ta có thể cài PhpLdapAdmin (là một chương trình quản lý với giao diện nền web, có thể tải về từ http://phpldapadmin.sourceforge.net) trên một máy chủ web.
Qmail mặc định sử dụng cơ sở dữ liệu người dùng từ cơ sở dữ liệu người dùng hệ thống, vì vậy, để Qmail sử dụng cơ sở dữ liệu người dùng cung cấp bởi máy chủ LDAP, cần cấu hình máy chủ cài Qmail sử dụng người dùng từ máy chủ LDAP. Việc cấu hình được thực hiện đơn giản nhờ công cụ authconfig-tui
Hình 7.Công cụ authconfig-tui
47
3.2.Cài đặt và cấu hình Qmail
Có rất nhiều dẫn xuất khác nhau của Qmail như NetQmail, Qmailrocks…Trong đó, NetQmail là một dẫn xuất đơn giản, gọn nhẹ với các thành phần cơ bản nhất. Phiên bản hiện nay của NetQmail là 1.05.
Chỉ cài đặt NetQmail-1.05 với các thành phần cơ bản để đảm bảo tốc độ và hiệu
năng của nó bao gồm:
- Qmail-smtpd: module STMP server
- Qmail-pop3d: module POP3 server (có thể cài đặt thêm như một tùy chọn)
- Các bản vá:
+ netQmail-1.05-tls-smtpauth-20070417.patch: bản vá hỗ trợ vấn đề xác thực
SMTP, cung cấp cho máy chủ dịch vụ SMTP AUTH.
+ Qmail-smtpd-viruscan-1.3.patch: bản vá hỗ trợ việc quét virus trong thư (sử
dụng kèm với Qmail-Scanner).
- Qmail-Scanner: cho phép lọc thư trong việc phòng tránh thư rác (kết hợp với
SpamAssassin).
Qmail và các thành phần của nó đều là những sản phẩm không có sẵn trong bản phân phối Fedora Core 6 vì vậy việc cài đặt buộc phải thực hiện nhờ biên dịch lại toàn bộ mã nguồn Qmail.
Các bước cài đặt và cấu hình Qmail được viết lại với một Shellscript để giúp cho
việc cài đặt được dễ dàng và an toàn hơn.
Sau khi biên dịch và cài đặt Qmail cùng với các thành phần đi kèm nó, có thể
kiểm tra sự hoạt động của Qmail qua lệnh Qmailctl stat và nmap
48
Hình 8.Các dịch vụ được cung cấp bới Qmail
3.3.Cài đặt và cấu hình Dovecot (IMAP/POP3 server)
Dovecot là một thành phần có sẵn trong bản phân phối Fedora Core 6, việc cài
đặt rất đơn giản và dễ dàng. Có thể cài đặt trực tiếp qua lệnh:
[]# rpm -ivh dovecot-1.0-0.1.rc7.fc6.i386.rpm
Dovecot vừa cung cấp máy chủ POP3 vừa cung cấp máy chủ IMAP trong khi Qmail cũng thành phần bổ sung cung cấp máy chủ POP3 (qmail-pop3d). Vì vậy, hiển nhiên có thể sử dụng máy chủ POP3 của Dovecot hoặc Qmail. Nếu đã sử dụng máy chủ POP3 của Qmail, cần phải tắt dịch vụ máy chủ POP3 của Dovecot. Trong file cấu hình của Dovecot, sửa tùy chọn protocols:
# Protocols we want to be serving: imap imaps pop3 pop3s
protocols = imap imaps imaps pop3 pop3s
49
3.4.Cài đặt và cấu hình Squirrelmail
Squirrelmail là một thành phần có sẵn trong bản phân phối Fedora Core 6, như
vậy việc cài đặt rất đơn giản và dễ dàng. Có thể cài đặt trực tiếp qua lệnh:
[]#rpm -ivh squirrelmail-1.4.8-2.fc6.noarch.rpm
Có thể cấu hình squirrelmail qua công cụ được viết bằng ngôn ngữ Perl:
/usr/share/squirrelmail/config/conf.pl
Hình 9.Công cụ cấu hình SquirrelMail
Chọn các mục thích hợp và cung cấp những thông tin cần thiết. Quan trọng nhất ở bước này là mục "2. Server Settings" và phần IMAP server. Sau khi chỉnh sửa xong, chọn "S Save data" (lưu giữ cấu hình) và "Q Quit" (thoát). Cấu hình sẽ được ghi lại trong file "/etc/squirrelmail/config.php".
Cài đặt plugin BayesSpam - Intelligent Spam Filter
Plugin BayesSpam là một bộ lọc thư rác thông minh sử dụng công thức xác xuất Bayes, có cơ chế tự “học” từ quyết định là thư rác hoặc không phải là thư rác của
50
người dùng về những thông điệp và nhờ đó có khả năng lọc thư rác với độ chính xác ngày càng cao.
Sau khi tải mã nguồn của BayesSpam, xả nén vào chép bộ mã nguồn vào thư
mục /usr/share/squirrelmail/plugins
Trong công cụ cấu hình Squirrelmail, chọn mục 8. Plugins lúc này sẽ thấy BayesSpam xuất hiện trong phần các plugin chưa được cài đặt (Available Plugins). Chọn cài đặt BayesSpam bằng cách nhập số thứ tự của nó trong danh sách vào thực đơn.
Hình 10.Cài đặt plugin BayesSpam
BayesSpam sử dụng cơ sở dữ liệu mặc định là MySQL để lưu trữ dữ liệu về thư rác của nó, vì vậy cần tạo mới một cơ sỡ dữ liệu và người dùng, sau đó khai báo các thông số đó trong file config.php của BayesSpam. Ngoài ra, BayesSpam cũng cung cấp một cơ sở dữ liệu là nền tảng bao gồm cấu trúc các bảng mà nó sử dụng trong file bayesspam.sql. Có thể sử dụng file này để tạo mới cơ sở dữ liệu thay cho việc tạo thủ công.
51
BayesSpam còn thay đổi một số thành phần trong giao diện người dùng như thêm một số nút bấm, đường dẫn liên kết...Cần cập nhật các thay đổi đó một cách thủ công (sửa trực tiếp mã nguồn của Squirrelmail).
Hình 11.Các tùy chọn cài đặt cho BayesSpam
52
BayesSpam Probability Display – Thêm một dòng vào phần đầu của thư nhận
được cho biết xác suất thư đó là thư rác nếu tuỳ chọn được bật.
BayesSpam Links – Thêm một số liên kết vào phần đầu của thư nhận được cho
phép phân loại thư rác và không phải thư rác.
BayesSpam Filtering – Để hệ thống BayesSpam hoạt động, tuỳ chọn này cần phải được bật. Nếu không, hệ thống sẽ không hoạt động, tức là bộ lọc sẽ không phân loại thư rác hoặc không phải thư rác nếu tuỳ chọn này bị tắt. Những thư nhận được sẽ không được chuyển vào thư mục đã được định sẵn, chúng vẫn ở trong INBOX.
Filtering Uncertain Messages – Tuỳ chọn này chỉ xuất hiện nếu tuỳ chọn BayesSpam Filtering được bật. Tuỳ chọn này cho phép bộ lọc chuyển những thư mà nó chưa xác định được là thư rác hay không phải thư rác vào một thư mục định sẵn
Spam Deletion – KHÔNG nên bật chức năng này. Có thể nó sẽ khiến bộ lọc xóa
đi những thư không phải thư rác.
Rebuild On Folder Refresh – Tuỳ chọn này cho bộ lọc biết có xây dựng lại cơ sở
dữ liệu xác suất về thư rác mỗi khi làm mới các thư mục thư tín.
Rebuild On Login – Tuỳ chọn này cho bộ lọc biết có xây dựng lại cơ sở dữ liệu
xác suất về thư rác mỗi khi đăng nhập.
Stats Tracking – Tuỳ chọn này cho phép hiển thị các thống kê của bộ lọc về phân
loại thư rác. Từ đó bạn có thể thấy độ chính xác của việc phân loại thư rác.
Bytes of message to scan – Tuỳ chọn này giới hạn độ lớn của thư mà bộ lọc sẽ phân loại. Nếu độ lớn này quá lớn, bộ lọc có thể chạy rất lâu để phân loại được những bức thư lớn. Mặc đinh là 65536 bytes.
Folder To Filter Into – Thiết lập thư mục lưu trữ những thư được phân loại là
thư rác. Hãy nhớ bấm vào nút Save nếu bạn thay đổi giá trị này.
Folder To Filter Uncertain Messages Into – Thiết lập thư mục lưu trữ những thư
mà bộ lọc chưa thể phân loại là thư rác hay không.
Check Inbox Only - Nếu bật chế độ này thì chỉ những thư tới Hộp thư đến của bạn mới được kiểm tra. Sự hiểu biết của tôi với điều này là những thư được chuyển tới những thư mục khác sẽ không phải kiểm tra.
53
Add Folder To Ignore List – Nếu một thư mục được thêm vào danh sách Ignore, tất cả các thư của thư mục đó sẽ không được bộ lọc quét qua. Mặc định là tất cả các thư mục đều được quét.
Remove Folder From Ignore List – Gỡ bỏ một thư mục ra khỏi danh sách
“Ignore”. Thư mục này sẽ được bộ lọc quét qua để phân loại thư rác.
Spam Database Stats – Thống kê số lượng và phần trăm các thư đã lọc và phân
loại.
Empty Database Now – Liên kết này sẽ xoá bỏ hoàn toàn cơ sở dữ liệu về thư
rác.
3.5.Cài đặt và cấu hình SpamAssassin
SpamAssassin cũng là một thành phần trong bản phân phối Fedora Core 6 nên
việc cài đặt cũng dễ dàng qua dòng lệnh:
[]# rpm -ivh spamassassin-3.1.4-1.fc6.i386.rpm
Thông điệp đến máy chủ sẽ được xử lý như sau: Qmail → spamassassin → hộp thư của người dùng. SpamAssassin phát hiện và đánh dấu thư rác bằng cách phân tích thông tin trong phần đầu thư và nội dung thư, như vậy nó là một cài đặt tiêu biểu cho phương pháp lọc dựa vào nội dung. Bên cạnh đó, SpamAsassin cũng sử dụng công thức Bayes cho vấn đề phân loại văn bản để xác định thư rác và một số phương pháp lọc thư dựa vào danh sách đen DNS. SpamAsassin là một bộ lọc thư rác thông minh, nó lọc thư dựa vào những kiến thức đã được học từ trước, đồng thời trong quá trình lọc nó sẽ cập nhật thêm các kiến thức mới về thư rác. SpamAssassin tiêu tốn khá nhiều tài nguyên (cpu, bộ nhớ, thời gian xử lý) của máy chủ, đặc biệt khi phải xử lý những thông điệp có kích thước lớn. Cấu hình để SpamAssassin hoạt động tốt, đồng thời giảm nhẹ sự tiêu tốn tài nguyên cho máy chủ là một vấn đề quan trọng.
54
Hình 12.Sơ đồ kiểm tra thư rác của SpamAssassin
File /etc/mail/spamassassin/local.cf lưu trữ những quy tắc kiểm tra thư chung cho
mọi người dùng hệ thống.
55
required_score 5
Thiết lập required_score cho biết số điểm tối thiểu mà một thông điệp bị coi là thư rác. Mặc định là 5, với các hệ thống lớn thường chỉ số này được đặt cao hơn (từ 8 đến 10).
whitelist_from add@ress.com
Thiết lập danh sách trắng những địa chỉ thư mà không bao giờ lọc thư rác.
blacklist_from add@ress.com
Danh sách các địa chỉ mà luôn coi thư gửi từ đó là thư rác.
rewrite_header { subject | from | to } STRING
Đánh dấu thư là thư rác với việc thay đổi phần đầu thư theo khai báo. Ví dụ có
thể đổi tiêu đều thư thành “[SPAM]”.
ok_locales vi en
Tùy chọn cho biết các ngôn ngữ mà spamassassin sẽ hỗ trợ.
use_bayes ( 0 | 1 )
use_bayes là khai báo giúp SpamAssassin biết có sử dụng phương pháp phân lớp
văn bản Bayes để phân tích nội dung thông điệp hay không.
Sau khi khởi động, spamd (spamassassin daemon) sẽ lắng nghe ở cổng 783 của
máy chủ.
Hình 13.SpamAssasin đang hoạt động trên cổng 783
Lưu ý: Theo như cấu hình spamd, mỗi người dùng có thể dùng bộ lọc mặc định (là file /etc/mail/spamassassin/local.cf do người quản trị hệ thống quản lý), hoặc có thể
56
tự điều chỉnh bộ lọc riêng cho mình nếu không thỏa mãn với cấu hình của bộ lọc mặc định. Cấu hình bộ lọc thư rác cho người dùng nằm ở file $HOME/.spamassassin/user_prefs
Mỗi khi kiểm tra thư, spamd sẽ sử dụng bộ lọc user_prefs trước (ưu tiên), nếu không tìm thấy user_prefs, spamd sẽ dùng bộ lọc mặc định local.cf. Những tuỳ chọn để cấu hình user_prefs hoàn toàn giống như của local.cf
Toàn bộ quá trình cài đặt Qmail các thành phần kèm theo được đóng gói dưới dạng Shell Script nhằm giúp cho việc cài đặt được dễ dàng, thuận tiện và an toàn hơn. Để triển khai cho một đơn vị nhất định, chỉ cần sửa một số thông số như tên máy chủ, tên miền… trong các file cài Shell Script cài đặt (các thông số được đặt ở đầu mỗi file). Khi thực thi file Shell Script, Qmail và các thành phần sẽ được cài đặt tự động.
57
Chương 4.KẾT QUẢ CÀI ĐẶT
4.1.Đáp ứng các chức năng gửi/nhận thư điện tử
Hệ thống thư điện tử với cấu trúc và các thành phần mã nguồn mở như trên đã được triển khai thành công tại công ty Cổ phần tư vấn và chuyển giao công nghệ G8 có trụ sở tại phòng 102 nhà A1 Khu cư xá Thăng Long. Máy chủ hệ thống có cấu hình trung bình (CPU: Pen 4, RAM: 512MB) nhằm tiết kiệm tối đa chi phí xây dựng. Trước đó, hệ thống đã được cài đặt trên nhiều hệ thống thử nghiệm (bao gồm cả máy thật và máy ảo).
Hệ thống hoạt động trong tình trạng ổn định, các thao tác gửi/nhận thư đều thành
công.
Hình 14.Gửi thư từ Local đến Local
58
Hình 15.Nhận thư từ Local đến Local thành công
Hình 16.Gửi nhận thư từ hệ thống ra ngoài Internet thành công
Hình 17.Gửi nhận thư từ Internet vào hệ thống thành công
4.2.Máy chủ hỗ trợ giao thức SMTP AUTH với TLS
Kiểm tra lại hệ thống hỗ trợ SMTP AUTH bằng cách kết nối tới hệ thống qua cổng 25 (mặc định của SMTP) và lệnh ehlo, nếu trong thông điệp trả lời của máy chủ có dòng 250 AUTH LOGIN PLAIN CRAM-MD5 thì hệ thống có hỗ trợ SMTP AUTH (như trong hình chụp). Đồng thời, trong thông điệp trả lời từ máy chủ có dòng 250 STARTTLS nghĩa là hệ thống có hỗ trợ truyền tin an toàn với chuẩn TLS
Sau đó có thể sử dụng lệnh AUTH LOGIN hoặc AUTH PLAIN để chứng thực
SMTP và sử dụng dịch vụ.
59
Hình 18.Hệ thống hỗ trợ SMTP AUTH
60
Hình 19.Gửi thư thành công với SMTP AUTH và TLS
61
Hình 20.Nhận được thông điệp gửi thành công
4.3.Máy chủ hỗ trợ phương pháp lọc thư rác dựa vào DNS
Sau khi tạo kết nối tới hệ thống thư điện tử, máy chủ sẽ kiểm tra tên miền và địa chỉ IP của máy khách, nếu tên miền hoặc địa chỉ IP nằm trong danh sách đen, máy chủ sẽ từ chối kết nối đó.
Hình 21.IP bị từ chối kết nối vì có tên trong danh sách đen
4.4.Máy chủ hỗ trợ phương pháp lọc thư rác dựa vào nội dung
Hệ thống hỗ trợ lọc thư rác bằng SpamAssassin được kiểm thử với việc gửi ba
thông điệp liên tiếp từ một địa chỉ đến một địa chỉ khác.
Thông điệp đầu tiên, với cấu hình mặc định và cơ sở dữ liệu về thư rác của SpamAssassin là trống, thông điệp được coi không phải là thư rác và được chuyển vào INBOX của người dùng:
62
Hình 22.Thông điệp không phải là thư rác
Thông điệp thứ 2 được gửi đi sau khi cấu hình lại SpamAssassin với địa chỉ người gửi được đưa vào danh sách đen. Thông điệp ngay lập tức bị coi là thư rác và tiêu đề được thay đổi:
Hình 23. Thông điệp bị coi là thư rác vì có tên trong danh sách đen
63
Thông điệp thứ 3 được gửi đi sau khi loại bỏ địa chỉ người gửi ra khỏi danh sách đen, sau đó cập nhật cơ sở dữ liệu của SpamAssassin với việc thông báo 2 thông điệp vừa gửi là thư rác. Thông điệp thứ 3 sẽ được bộ lọc phân tích và kiểm tra nội dung, sau đó so sánh với cơ sở dữ liệu để tính điểm. Nếu điểm của thông điệp lớn hơn “điểm chuẩn thư rác”, thông điệp bị coi là thư rác và tiêu đề được thay đổi như hình chụp.
Hình 24.Thông điệp bị coi là thư rác vì có điểm cao hơn “điểm thư rác”
4.5.Máy chủ hỗ trợ phương pháp lọc thư rác sử dụng bộ lọc BayesSpam
Bộ lọc thư rác BayesSpam là một bộ lọc thông minh, cung cấp cho người dùng giao diện để thông báo một thông điệp là thư rác hay không tới máy chủ hệ thống. Từ đó, bộ lọc sẽ quyết định các thư tiếp theo đến là thư rác hay không là thư rác.
Báo cáo một thư là thư rác:
Để báo cho hệ thống biết một thư nào đó là thư rác, cần chọn thư đó và bấm vào
nút “Spam
Khi một thư được báo cáo là thư rác, hệ thống sẽ tự động tính toán các thông tin về bức thư đó và lưu vào cơ sở dữ liệu để phục vụ cho việc phân loại, và bức thư đó sẽ được chuyển vào thư mục mà bạn đã thiết lập trong mục Folder To Filter Into
Báo cáo một thư không phải là thư rác
Để báo cáo cho hệ thống biết một thư nào đó không phải là thư rác, cần chọn thư
đó và bấm vào nút “NonSpam”.
64
Khi một thư được báo cáo là không phải thư rác, hệ thống sẽ tính toán lại thông tin và lưu lại trong cơ sở dữ liệu. Bức thư đó không thể tự chuyển sang thư mục khác. Cần chọn nó và sử dụng chức năng “Move”.
Hình 25.Thư bị coi là thư rác, tự động chuyển vào Junk
Hình 26.Thống kê của bộ lọc Bayes
65
4.6.Đánh giá chung
Hệ thống sau khi được triển khai hoạt động tốt, đảm bảo các chức năng cơ bản
của một hệ thống thư điện tử như thao tác gửi/nhận/kiểm tra thư hoạt động tốt.
Các thành phần phòng chống và lọc thư rác bao gồm phương pháp chống thư rác dựa vào chuẩn SMTP, chống thư rác nhờ danh sách tên miền đen, lọc thư rác dựa vào nội dung và công thức xác suất Bayes… đều hoạt động tốt, tuy nhiên mới phòng chống thư rác ở mức hạn chế. Các phương pháp phòng chống dựa vào chuẩn SMTP và danh sách tên miền, danh sách địa chỉ hoạt động chính xác nhất. Còn phương pháp lọc thư theo nội dung và công thức Bayes hoạt động kém chính xác hơn chủ yếu vì hệ thống được triển khai trong thời gian ngắn, cơ sở dữ liệu về thư rác chưa đủ lớn nên phương pháp “học” thư rác hoạt động kém hiệu quả. Ngoài ra, yếu tố ngôn ngữ cũng góp phần làm giảm độ chính xác của phương pháp này, vì bộ lọc này chủ yếu được sử dụng cho tiếng Anh, chưa hỗ trợ đầy đủ cho tiếng Việt và bộ mã Unicode.
Một điểm đáng lưu ý là bộ cài đặt được đóng gói hoàn toàn dưới dạng
ShellScript giúp cho quá trình cài đặt trở nên dễ dàng, thuận tiện và an toàn hơn.
66
KẾT LUẬN
Hệ thống thư điện tử an toàn được xây dựng dựa trên nền tảng phần mềm mã nguồn mở miễn phí, tự do phát triển dành cho các đơn vị, trường học, cơ quan chuyên biệt. Hiện nay, hệ thống đã được triển khai tại công ty CPTV&CG Công nghệ G8 (http://www.g8soft.com).
Trong giai đoạn đầu, nghiên cứu chủ yếu tập trung vào các tính năng cơ bản của một MailServer và các kỹ thuật đảm bảo an toàn, phòng tránh thư rác. Vì vậy, hệ thống đã đảm bảo được các dịch vụ như:
- SMTP Server
- POP3 Server
- IMAP Server
- Webmail client
- Phòng chống và lọc thư rác
Mặc dù vậy, để giúp cho hệ thống trở nên hoàn thiện hơn nữa, tính ứng dụng cao hơn nữa, sẽ cần một sự đầu tư nghiên cứu phát triển nhiều hơn. Trong thời gian tới, hướng phát triển hệ thống sẽ tập trung đi sâu giải quyết một số vấn đề còn lại:
- Tối ưu hóa các thành phần trong hệ thống, giảm bớt số dòng mã nguồn không thật sự cần thiết để tăng tốc độ thực thi của chương trình. Tạo bộ cài đặt nhỏ gọn và chuyên biệt hơn nữa. Việc làm này đồng thời sẽ làm tăng tính an toàn, bảo mật cho hệ thống.
- Nghiên cứu và cài đặt các phương pháp phòng chống và lọc thư rác tốt hơn nữa để đảm bảo an toàn cho hệ thống, đặc biệt nghiên cứu các phương pháp lọc thư rác tiếng Việt.
- Cung cấp các giao diện đồ họa thân thiện cho người dùng, giao diện quản trị
các thành phần hệ thống qua nền web.
- Nghiên cứu các phương pháp phát hiện và phòng chống xâm nhập bất hợp pháp
từ ngoài vào hệ thống
67
TÀI LIỆU THAM KHẢO
[1]. Dương Thị Mỹ Lệ. Xây dựng hệ thống dịch vụ Email và dịch vụ File dựa
trên mã nguồn mở. Khóa luận tốt nghiệp ĐHCQ 2005. ĐHCN
[2]. Nguyễn Duy Kiên. Xây dựng hệ thống Mailserver trên môi trường Linux.
Khóa luận tốt nghiệp ĐHCQ 2006. ĐHCN
[3]. Dave Sill. The Qmail Handbook by Dave sill. Apress. 2002
[4]. John Livene. Qmail. O’Reilly. 2004
[5]. Life With Qmail (OpenContent).
WEBSITE THAM KHẢO
[6]. http://www.quantrimang.com
[7]. http://cr.yp.to
[8]. http://spamassassin.apache.org
[9]. http://vi.wikipedia.org
[10]. http://www.lifewithQmail.org
[11]. http://www.Qmail.org
[12]. http://www.squirrelmail.org
[13]. http://www.wikipedia.org
[14]. http://fedoraproject.org/wiki
68