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
Trang 1ĐẠ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
Trang 2ĐẠ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
Trang 3Tô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
Trang 4TÓ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í
Trang 5MỤ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
Trang 61.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
Trang 73.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
Trang 8DANH 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
Trang 9BẢNG KÝ HIỆU VIẾT TẮT
DNS Domain Name System Hệ thống tên miền
DNSBL DNS-based Blackhole List Danh sách tên miền đen
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ếngGPL General Public License Giấy phép công cộng
IMAP Internet Message Access
Protocol Giao thức nhận thư InternetISP Internet Service Provider Nhà cung cấp dịch vụ InternetMDA Mail Delivery Agent Thành phần phân phối thư
MIME Multipurpose Internet Mail Extensions Định dạng mở rộng thư
MTA Mail Transfer Agent Thành phần truyền thư
MUA Mail User Agent Thành phần tương tác người dùng
MX Mail Exchange Bản ghi tới máy chủ thư điện tử của máy chủ DNS
POP Post Office Protocol Giao thức nhận thư POP
RPM RPM Package Manager Chương trình quản lý gói tin RPM
SMTP Simple Mail Transfer Protocol Giao thức gửi thư đơn giản
Trang 11MỞ ĐẦ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
Trang 12- 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
Trang 13Chươ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
Trang 14bư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
Trang 15ký 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
Trang 16POP3/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
Trang 171.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
Trang 18- 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
Trang 19cá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.
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,
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
Trang 20Tố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
Trang 21Tí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
Trang 22Qmail đượ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 Qmail, đóng vai trò là một IMAP server), đã viết ra Courier
Trang 23(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
Postfix Trung bình Cao Trung bình Cao Có
Courier Thấp Trung bình Cao Trung bình Có
Như vậy, tùy theo mục đích và nhu cầu sử dụng, người quản trị sẽ lựa chọn một MTA cho hệ thống của mình, ngoài ra, với mỗi điều kiện và môi trường khác nhau, mỗi MTA lại có mức độ phù hợp khác nhau Với các ưu điểm vượt trội rõ rệt của Qmail, đây là một lựa chọn phù hợp cho các hệ thống của cơ quan, trường học hay doanh nghiệp tại Việt Nam Bởi tại các đơn vị này, số lượng người dùng hệ thống thường ở mức trung bình và cấu hình phần cứng của hệ thống máy tính thường không cao, nên để tận dụng tối đa hiệu suất của hệ thống, cần phải lựa chọn những MTA nhỏ gọn với hiệu năng cao, tính năng đầy đủ Đồng thời, với tình hình an ninh mạng ngày càng diễn biến phức tạp tại Việt Nam, một MTA đảm bảo tốt các yêu cầu về an toàn, bảo mật là yêu cầu tất yếu MTA đáp ứng tốt và đầy đủ nhất các yêu cầu đó chính là Qmail
Trang 241.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
Trang 25mạ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
Trang 26nà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
Trang 271.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ả
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
Trang 28Hình 3.Cấu trúc hệ thống Qmail
Trang 291.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
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 cho các máy chủ có nhiều tên miền khác nhau.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
Trang 30miền con dựa trên một tên miền cha.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
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
Qmail cũng cung cấp VERP (Variable Envelope Return Path) để tự động nhận dạng
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
Trang 31việ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
Trang 321.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
Trang 33Nhữ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
Trang 34SquirrelMail 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
Trang 35Mộ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ụ
Trang 36Multilog 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.
Trang 37Chươ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ư
Trang 38đ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ỉ
Trang 39Để 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