1
MỤC LỤC
DANH MỤC CÁC TỪ VIẾT TẮT……………………………………………… .... .iii
DANH MỤC HÌNH VẼ ………………………………………………………… .... ...v
LỜI MỞ ĐẦU…………………………………………………………………….... …6
CHƯƠNG 1: TỔNG QUAN VỀ THƯ ĐIỆN TỬ ……………………………… ... ..7
1.1 Khái niệm thư điện tử ………………………………………………………… ... .7
1.1.1 Thư điện tử là gì?, ……………………... …………………………… .... 7
1.1.2 Kiến trúc và hoạt động của hệ thống thư điện tử……………………… .... 7
1.2 Giới thiệu một số giao thức sử dụng để gửi và nhận thư điện tử …………. ... 12
1.2.1 Giao thức gửi thư SMTP (Simple Mail Transfer Protocol)…………... ... 12
1.2.2 Giao thức POP (Post Office Protocol)………………………………... ... 17
1.2.3 Giao thức IMAP (Internet Message Access Protocol)………………...... 20
CHƯƠNG 2: THƯ RÁC VÀ CÁC PHƯƠNG PHÁP LỌC THƯ RÁC ……... .... 24
2.1 Thư rác ……………………………………………………………………… .... ..24
2.1.1 Khái niệm về thư điện tử rác ………………………………………….... 24
2.1.2 Các đặc điểm nhận dạng thư điện tử rác …………………………….. .... 24
2.1.3 Phân loại thư điện tử rác ……………………………………………... ... 26
2.2 Các phương pháp lọc thư rác ……………………………………………….. ... 29
2.2.1 Kỹ thuật chứng thực thư điện tử .......................................................30
2.2.2 Domain Keys (DK)………………………………………………… ... …33
2.2.3 Phương pháp lọc theo từ khóa……………………………………….. .... 35
2.2.4 Sử dụng DNS Blacklist……………………………………………..… ... 36
2.2.5 Kiểm tra người nhận………………………………………………….. ... 38
2.2.6 Chặn IP……………………………………………………………… ... ..38
2.3 Kỹ thuật lọc theo nội dung…………………………………………………… ... 38
2.3.1. Sử dụng bộ lọc Bayesian………………………………………….… ... .38
2.3.2 Sử dụng lọc theo thuật toán Naïve Bayes ………………………………..... .44
2.3.3 Lọc sử dụng phương pháp Heuristic………………………………..... ... 49
Một số giải pháp lọc nội dung cho hệ thống thư điện tử SMTP và ứng dụng
TT
1
2
TỪ VIẾT TẮT
SMTP
POP
TỪ ĐẦY ĐỦ TIẾNG ANH
NGHĨA TIẾNG VIỆT
Simple Mail Transfer
Giao thức truyền thư
Protocol
điện tử
Post Office Protocol
Giao thức nhận thư
điện tử
3
MTA
Message Transfer Agent)
Tác nhân truyền tải
thư điện tử
7
MUA
Mail User Agent
Tác nhân người dùng
điện tử
8
DNSBL
DNSBL (DNS-based Blocklist)
Danh sách đen
9
IP
Internet Protocol
Port
Cổng
14
Server
Máy chủ
15
Header
Tiêu đề
16
routers
Bộ định tuyến
17
Address
Kiểm tra địa chỉ thư
Debugging
18
Một số giải pháp lọc nội dung cho hệ thống thư điện tử SMTP và ứng dụng
5
DANH MỤC HÌNH VẼ
Hình 1.1: Mô hình trao đổi thư điện tử……………………………………………………...9
Hình 1.2 : Mô hình trạm phục vụ thư (mail Server)………………………..........................11
Hình 1.3: Mô hình sử dụng SMTP (Nguồn: RFC 5321, Simple Mail Transfer
Protocol)…………………………………………………………………………………...12
Hình 1.4: Mô hình hoạt động của giao thức POP3 ……………………………………….18
Hình 2.1: Việt Nam lọt top 10 quốc gia gửi đi nhiều thư điện tử rác nhất thế giới ……….27
Hình 2.2: Top 10 quốc gia có tỷ lệ thư rác/đầu người cao nhất - Ảnh: ST………………...28
Hình 2.3: hoạt động của SPF động………………………………………………………...31
Hình 2.4: Hiệu quả phương pháp SPF động……………………………………………….32
Hình 2.5: Khung ID người gửi được thi hành trên MTA …………………........................34
Hình 2.6: DNS Blacklist…………………………………………………………………...37
Hình 2.7: Chặn IP………………………………………………………….........................38
Hình 2.8: Hoạt động của bộ lọc thư rác Bayesian…………………………........................40
Hình 2.9: Mô tả bước xây dựng bộ phân lớp……………………………………………...47
Bảng 2.10: Các phần mềm chống thư rác có bản quyền…………………………………....52
Bảng 2.11: Các phần mềm chống thư rác mã nguồn mở……………………………………....52
Hình 3.1: Mô hình tổng quát……………………………………………………………….60
Hình 3.2: Tiến trình học từ………………………………………………………………...61
Hình 3.3: Quy trình tách từ với thư tiếng Việt…………………………………………….63
Bảng 3.4: Thống kê độ dài của từ trong từ điển………………………………………….65
Bảng 3.5: Ví dụ minh họa phân tích từ đơn………………………………………………..68
Hình 3.6 : Giao diện xử lý văn bản VLSP ………………………………………………..69
lớn về kinh tế.
Trong phạm vi của đề tài, dưới sự hướng dẫn của PGS.TS Nguyễn Văn
Tam, học viên đã chọn đề tài “Một số giải pháp lọc nội dung cho hệ thống thư
điện tử SMTP và ứng dụng” nhằm đề xuất giải pháp xây dựng bộ lọc nội dung tự
động bằng phương pháp tách từ đơn, từ ghép và áp dụng thuật toán Naïve bayes
để phân loại thư hợp lệ và thư rác.
Một số giải pháp lọc nội dung cho hệ thống thư điện tử SMTP và ứng dụng
7
CHƯƠNG 1
TỔNG QUAN VỀ THƯ ĐIỆN TỬ
1.1 Khái niệm thư điện tử
1.1.1 Thư điện tử là gì?
Thư điện tử là một thông điệp gửi từ máy tính này đến một máy tính khác
trên mạng máy tính mang nội dung cần thiết từ người gửi đến người nhận. Do
thư điện tử gửi qua lại trên mạng và sử dụng tín hiệu điện vì vậy tốc độ truyền
rất nhanh. Ngoài ra người sử dụng có thể gửi hoặc nhận thư riêng hoặc các bức
điện giao dịch với các file đính kèm như hình ảnh, các công văn tài liệu thậm chí
cả bản nhạc hay các chương trình phần mềm…
Thư điện tử còn được gọi tắt là E-mail (Electronic Mail). E-Mail có nhiều
cấu trúc khác nhau tùy thuộc vào hệ thống máy vi tính của người sử dụng. Mặc
dù khác nhau về cấu trúc nhưng tất cả đều có chung mục đích là gửi hoặc nhận
thư điện tử từ một nơi này đến một nơi khác nhanh chóng. Ngày nay nhờ sự phát
triển mạnh mẽ của Internet, người ta có thể gửi điện thư tới các quốc gia trên
toàn thế giới. Với lợi ích như vậy nên thư điện tử hầu như trở thành một nhu cầu
cần phải có của người sử dụng máy vi tính.
Để gửi được thư bạn cần phải có một kết nối vào internet và truy nhập vào
máy chủ thư điện tử để chuyển thư đi. Thủ tục tiêu chuẩn được sử dụng để gửi
thư là SMTP (Simple Mail Transfer Protocol). Nó được kết hợp với thủ tục POP
(Post Office Protocol) và IMAP để lấy thư.
Một số giải pháp lọc nội dung cho hệ thống thư điện tử SMTP và ứng dụng
9
Hình 1.1: Mô hình trao đổi thư điện tử
Trên thực tế có rất nhiều hệ thống vi tính khác nhau và mỗi hệ thống lại có
cấu trúc chuyển nhận thư điện tử khác nhau. Vì có sự khác biệt như vậy nên việc
chuyển nhận thư điện tử giữa hai hệ thống khác nhau rất là khó khăn và bất tiện.
Do vậy, người ta đã đặt ra một nghi thức chung cho thư điện tử. Có nghĩa là các
hệ thống máy vi tính đều đồng ý với nhau về một nghi thức chung gọi là Simple
Mail Transfer Protocol viết tắt là SMTP (Nghi Thức Đơn Giản Chuyển Vận Thư
Từ). Nhờ vào SMTP này mà sự chuyển vận thư từ điện tử trên Internet đã trở
thành dễ dàng nhanh chóng cho tất cả các người sử dụng máy vi tính cho dù họ
có sử dụng hệ thống máy vi tính khác nhau.
Khi gửi thư điện tử thì máy tính của người sử dụng cần phải định hướng
đến máy chủ SMTP. Máy chủ sẽ tìm kiếm địa chỉ thư điện tử (tương tự như địa
chỉ điền trên phong bì) sau đó chuyển tới máy chủ của người nhận và nó được
chứa ở đó cho đến khi được lấy về. Người gửi có thể gửi thư điện tử đến bất cứ
ai trên thế giới mà có một địa chỉ thư điện tử.
Một số giải pháp lọc nội dung cho hệ thống thư điện tử SMTP và ứng dụng
11
này thì máy gửi sẽ thông báo cho người gửi biết là người nhận không có hộp thư
(user unknown).
Sau khi máy nhận đã nhận lá thư và đã bỏ vào hộp thư cho người nhận thì
máy nhận sẽ thông báo cho người nhận biết là có thư mới . Người nhận sẽ dùng
chương trình thư để xem lá thư. Sau khi xem thư xong thì người nhận có thể lưu
trữ (save), hoặc xóa (delete), hoặc trả lời (reply) v.v... Trường hợp nếu người
nhận muốn trả lời lại lá thư cho người gửi thì người nhận không cần phải ghi lại
địa chỉ vì địa chỉ của người gửi đã có sẵn trong lá thư và chương trình thư sẽ bỏ
địa chỉ đó vào trong bức thư trả lời.
Trạm Phục Vụ Thư (Mail Server)
Trên thực tế, trong những cơ quan và hãng xưởng lớn, máy vi tính của người
gửi thư không gửi trực tiếp tới máy vi tính của người nhận mà thường qua các
máy chủ thư điện tử (mail servers).
Hình 1.2 : Mô hình trạm phục vụ thư (mail Server)
Như hình vẽ phía trên cho thấy, nếu như một người ở máy A gửi tới một
người ở máy B một lá thư thì trước nhất máy A sẽ gửi đến máy chủ thư điện tử
X. Khi trạm phục vụ thư X nhận được thư từ máy A thì X sẽ chuyển tiếp cho
máy chủ thư điện tử Y. Khi trạm phục vụ thư Y nhận được thư từ X thì Y sẽ
Một số giải pháp lọc nội dung cho hệ thống thư điện tử SMTP và ứng dụng
12
chuyển thư tới máy B là nơi người nhận. Trường hợp máy B bị trục trặc thì máy
System
file
System
Hình 1.3: Mô hình sử dụng SMTP (Nguồn: RFC 5321, Simple Mail Transfer Protocol)
Một số giải pháp lọc nội dung cho hệ thống thư điện tử SMTP và ứng dụng
13
Sender-SMTP thiết lập một kênh truyền tải hai chiều tới một Receiver-SMTP.
Receiver-SMTP hoặc là đích hoặc là điểm tạm thời.
• Các lệnh SMTP được sinh ra bởi Sender-SMTP và gửi tới ReceiverSMTP.
• Receiver-SMTP trả lời các lệnh gửi từ Sender-SMTP
Để gửi một thông điệp đến máy chủ SMTP (SMTP server), máy khách
SMTP (SMTP client) thiết lập một kênh truyền hai chiều với máy chủ SMTP.
Phiên làm việc SMTP được khởi tạo khi một máy khách SMTP mở một kết nối
đến máy chủ SMTP và máy chủ SMTP trả lời bằng một thông điệp mở kết nối;
sau đó máy khách SMTP gửi một thông điệp chào thông qua câu lệnh HELO
hoặc EHLO đến máy chủ SMTP kèm theo định danh của máy khách SMTP,
đồng thời thể hiện máy khách SMTP sẵn sàng tiếp nhận và xử lý các câu lệnh.
Sau khi kênh truyền đã được thiết lập và kết thúc việc khởi tạo kết nối, máy
khách SMTP sẽ khởi tạo một giao dịch thông điệp. Giao dịch này sẽ bao gồm
một tập các câu lệnh để xác định điểm xuất phát và đích đến của thông điệp cần
gửi.
Có ba bước trong các giao dịch thư SMTP:
- Phiên giao dịch bắt đầu với một lệnh MAIL cho biết định danh bên gửi.
- Bước thứ hai là một chuỗi các lệnh RCPT để xác định thông tin của bên
nhận.
thể yêu cầu đóng kết nối hiện tại thông qua câu lệnh QUIT hoặc có thể khởi tạo
một giao dịch khác.
Trong một số trường hợp, khi thông tin về địa chỉ đến không chính xác
nhưng bên nhận lại biết rõ địa chỉ này, máy chủ SMTP có thể chuyển tiếp thư
này đến địa chỉ đến mong muốn hoặc đưa ra gợi ý để trợ giúp cho bên gửi chỉnh
sửa lại địa chỉ đến, hoặc gửi lại một thông báo lỗi.
Một số giải pháp lọc nội dung cho hệ thống thư điện tử SMTP và ứng dụng
15
Một số tính năng quan trọng của SMTP
Bên cạnh cơ chế chuyển thư cơ bản, SMTP còn có một số tính năng khác
cho phép SMTP hỗ trợ các yêu cầu kỹ thuật quan trọng, bổ trợ cho hệ thống thư
điện tử như sau:
- Chuyển tiếp (Mail Relaying): Là khả năng máy chủ SMTP nhận thư từ
máy khách SMTP và chuyển thư này đến máy chủ SMTP khác để chuyển thư
hoặc gửi thư nhưng không sửa đổi dữ liệu mà chỉ lưu vết thông tin.
- Chuyển thư (Mail Forwarding): Là khả năng máy chủ SMTP chuyển thư
đến một địa chỉ thư xác định trước để lưu trữ thư.
- Kiểm tra địa chỉ thư (Address Debugging): SMTP cung cấp câu lệnh để
xác nhận một người dùng hay lấy nội dung của một danh sách thư thông qua các
lệnh VRFY với tham số như tài khoản đăng nhập, họ và tên đầy đủ …
- Cổng thư (Mail Gatewaying): Là khả năng máy chủ SMTP nhận thư từ
một hệ thống khách trong một môi trường vận chuyển và chuyển thư đến một hệ
thống chủ trong một môi trường vận chuyển khác. Sự khác nhau về giao thức
hay ngữ nghĩa thư giữa các môi trường vận chuyển có thể yêu cầu cổng thư
SMTP thực hiện biến đổi thông điệp không được phép đến hệ thống chuyển thư
SMTP.
SMTP được cài đặt trong các phần mềm máy chủ thư điện tử cung cấp
Các lệnh SMTP cơ bản:
– HELO HELO <SP> domain> <CRLF> Định danh Sender-SMTP đối
với Receiver-SMTP, tham số <domain> thường là tên máy.
– MAIL MAIL <SP> FROM:<reverse- path> CRLF> Khởi tạo phiên
giao dịch mail tới một hoặc nhiều mailbox và đồng thời định danh người gửi
bằng tham số reverse-path
– RCPT RCPT <SP> TO:<forward- path> <CRLF>
Định danh một người nhận dữ liệu mail thông qua tham số forward, nếu
nhiều người nhận thì sử dụng nhiều dòng lệnh.
– DATA DATA <CRLF> Các dòng sau lệnh này sẽ là dữ liệu thư.
– RSET RSET <CRLF> Chỉ ra phiên giao dịch thư hiện tại sẽ bị loại bỏ.
– SEND SEND <SP> FROM:<reverse- path> CRLF> Khởi tạo phiên
giao dịch dữ liệu thư phân phối tới một hoặc nhiều terminal. Tham số reversepath để định danh người gửi.
- SOML SOML <SP> FROM:<reverse- path> <CRLF> Khởi tạo phiên
giao dịch dữ liệu mail phân phối tới một hoặc nhiều terminal hoặc nhiều
mailbox. Tham số reverse-path để định danh người gửi.
Một số giải pháp lọc nội dung cho hệ thống thư điện tử SMTP và ứng dụng
17
- SAML SAML <SP> FROM:<reverse- path> <CRLF>
Khởi tạo phiên giao dịch dữ liệu mail phân phối tới một hoặc nhiều
terminal và nhiều mailbox. Tham số reverse-path để định danh người gửi.
- VRFY VRFY <SP> <string> <CRLF>Yêu cầu người nhận mail xác
nhận một người sử dụng.
- EXPN EXPN <SP> <string> <CRLF>Yêu cầu xác nhận tham số để
định danh một danh sách thư.
- HELP HELP [<SP> <string>] <CRLF>Người nhận gửi thông tin trợ
giúp tới người gửi.
POP3
Server
TCP connection
AUTHORIZATION state
TRANSACTION state
UPDATE state
Hình 1.4: Mô hình hoạt động của giao thức POP3
Một phiên POP3 có ba trạng thái là: AUTHORIZATION, TRANSACTION và
UPDATE.
– Trạng thái AUTHORIZATION: Trong trạng thái này server sẽ xác
thực client. Khi server xác thực client thành công thì phiên vào trạng thái
TRANSACTION.
– Trạng thái TRANSACTION: Trong trạng thái này, client có thể
truy nhập tới mailbox của mình trên server để kiểm tra, nhận thư...
Một số giải pháp lọc nội dung cho hệ thống thư điện tử SMTP và ứng dụng
19
– Trạng thái UPDATE: Khi client gửi lệnh QUIT tới server từ trạng
thái TRANSACTION, thì phiên vào trạng thái UPDATE, trong trạng thái này
server gửi goodbye tới client và đóng kết nối TCP, kết thúc phiên làm việc.
Các lệnh của POP3
USER
Hủy hành động của các lệnh DELE (rollback)
QUIT
Chấp nhận các thay đổi và cắt kết nối.
Các lệnh trong POP3 có thể có một hoặc nhiều đối số. Kết thúc của lệnh
bởi một cặp CRLF. Các từ khoá và đối số trong lệnh là các ký tự trong ASCII.
– Một lời đáp lại (response) từ POP3 server gồm một mã trạng thái và theo
sau là các thông tin. Có hai mã trạng thái hiện hành là: thành công (+OK) và lỗi
(-ERR).
Cơ chế xác thực và các lệnh trong trạng thái AUTHORIZATION.
– Có hai cơ chế xác thực: Cơ chế thứ nhất sử dụng kết hợp hai lệnh
USER và PASS, cơ chế xác thực thứ hai sử dụng lệnh APOP.
– Ngoài ra còn có các cơ chế xác thực khác được mô tả trong RFC 1734
Xác thực sử dụng kết hợp hai lệnh USER và PASS:
• Lệnh USER
• Cú pháp: USER name
Một số giải pháp lọc nội dung cho hệ thống thư điện tử SMTP và ứng dụng
20
• Đối số: name là tên người dùng.
• Mô tả: Được sử dụng trong trạng thái AUTHORIZATION để gửi tên của
user tới POP3 server. Server sẽ đáp lại thành công (+OK) nếu nhập tên user là
đúng và ngược lại sẽ trả lại mã lỗi (-ERR). Chú ý: trong các ví dụ kể từ đây, ký
hiệu C: được gửi từ Client và S: là response của Server.
Ví dụ:
C: USER mrose
– Hỗ trợ cả 3 chế độ truy nhập: online, offline, và disconnected.
– Hỗ trợ truy nhập đồng thời tới các mailbox dùng chung.
– Phần mềm bên client không cần thiết phải biết kiểu lưu trữ file của
server.
Các lệnh của IMAP4
CAPABILITY
Yêu cầu danh sách các chức năng hỗ trợ
AUTHENTICATE
Xác định sử dụng xác thực từ một server khác
LOGIN
Cung cấp username và password
SELECT
Chọn hộp thư
EXAMINE
Điền hộp thư chỉ được phép đọc
CREATE
Tạo hộp thư
DELETE
Trạng thái của hộ thư (số lượng thư,...)
APPEND
Thêm message vào hộp thư
CHECK
Yêu cầu kiểm tra hộp thư
CLOSE
Thực hiện xoá và thoát khỏi hộp thư
EXPUNGE
Thực hiện xoá
SEARCH
Tìm kiếm trong hộp thư để tìm messages xác
định
FETCH
Tìm kiếm trong nội dung của message
STORE
Thay đổi nội dụng của messages COPY
tìm kiếm và lấy message cần tìm về ... IMAP4 cũng cho phép người dùng
chuyển thư từ thư mục này của máy chủ sang thư mục khác hoặc xoá thư.
IMAP4 hỗ trợ rất tốt cho người dùng hay phải di chuyển và phải sử dụng các
máy tính khác nhau.
Chương một trình bày tổng quan về thư điện tử, khái niệm, lợi ích của thư
điện tử, kiến trúc thư điện tử, các giao thức chuyển, nhận thư. Các nội dung
không chỉ trình bày những khái niệm, đặc điểm cơ bản vai trò của thư điện tử mà
còn mô tả về các đặc điểm kỹ thuật, mô hình trao đổi thư điện tử, các giao thức
được sử dụng phổ biến khi gửi và nhận thư điện tử. Những nội dung này sẽ là cơ
sở nghiên cứu sâu hơn các công nghệ ngăn chặn thư rác được mô tả tại chương
hai.
Một số giải pháp lọc nội dung cho hệ thống thư điện tử SMTP và ứng dụng
24
CHƯƠNG 2
THƯ RÁC VÀ CÁC PHƯƠNG PHÁP LỌC THƯ RÁC
2.1 Thư rác
2.1.1 Khái niệm về thư điện tử rác
Hiện nay, chưa có bất cứ một định nghĩa chính thức nào về thư spam. Một
định nghĩa thông dụng nhất về spam có thể hiểu thư spam như sau : “Thư
rác (spam) là những bức thư điện tử không yêu cầu, không mong muốn và
được gửi hàng loạt tới nhiều người nhận khác nhau”. “Thư không yêu cầu” là
người nhận thư không yêu cầu người gửi gửi bức thư đó. “Thư được gửi hàng
loạt” là bức thư có nội dung gửi giống nhau, người nhận đã nhận được nằm
trong một loạt các thư được gửi đi cho nhiều người khác. Tuy nhiên, không
phải tất cả các thư không mong muốn đều là thư spam và ngược lại không phải
không nói tiếng Anh, nên họ thường mắc một số lỗi chấm câu và ngữ pháp nhỏ
trong lúc copy.
- Không tin vào địa chỉ liên kết xuất hiện trong thanh trạng thái của trình
duyệt. So sánh địa chỉ URL trong thư điện tử và trong thanh trạng thái hoàn toàn
giống nhau, thì vẫn có thể liên kết trỏ đến một địa chỉ nào đó. Để kiểm tra chúng
ta nên chọn URL và copy nó sau đó paste nó vào trình duyệt khác để xem xét.
Không sử dụng lệnh copy Link Location từ menu chuột phải.
- Kiểm tra tên miền của liên kết bằng cách so sánh tên miền trong thư điện
tử và tên miền trong thanh trạng thái.
Giả mạo thông tin định danh trong thư điện tử là thay đổi các thông tin
trong phần tiêu đề thư điện tử.
Một số giải pháp lọc nội dung cho hệ thống thư điện tử SMTP và ứng dụng