Mục lục
Lời nói đầu.............................................................................................................................4
Chương 1: Các giao thức gửi nhận thư điện tử..................................................................6
1.1. Giới thiệu..........................................................................................................................6
1.2. Các giao thức gửi nhận thư điện tử...................................................................................6
1.2.1. SMTP (Simple Mail Transfer Protocol).....................................................................6
1.2.2. POP3 (Post Office Protocol)....................................................................................10
1.2.3. IMAP (Internet Mail Access Protocol)....................................................................13
1.3. Cấu trúc thư điện tử........................................................................................................15
1.3.1. Giới thiệu:................................................................................................................15
1.3.2. Cấu trúc chi tiết của MIME:....................................................................................16
1.4. Kết luận...........................................................................................................................21
Chương 2: Thư rác và các giải pháp phòng tránh thư rác.............................................22
2.1. Giới thiệu........................................................................................................................22
2.2. Spam và các thông tin liên quan.....................................................................................22
2.2.1. Hoàn cảnh ra đời......................................................................................................22
2.2.2. Định nghĩa...............................................................................................................23
2.2.3. Đặc điểm của thư rác...............................................................................................23
2.2.4. Ích lợi và tác hại của thư rác....................................................................................26
2.2.5. Luật pháp trong vấn đề thư rác................................................................................27
2.3. Các kĩ thuật công cụ đối tượng phát tán thư rác (spammer) sử dụng.............................28
2.3.1. Phân loại các đối tượng phát tán thư rác:................................................................28
2.3.2. Các cách lấy điạ chỉ của nạn nhận...........................................................................29
2.3.3. Các kĩ thuật để vượt qua bộ phận lọc thư................................................................30
2.4. Các phương pháp phòng tránh thư rác:...........................................................................31
2.4.1. Đóng các điểm chuyển tiếp thư...............................................................................31
2.4.2. Sử dụng danh sách đen............................................................................................31
2.4.3. Kiểm tra tính xác thực của địa chỉ spam..................................................................32
2.4.4. Sử dụng các bộ lọc nội dung....................................................................................33
2.4.5. Đánh lừa các chương trình thu thập địa chỉ thư.......................................................34
2.4.6. Cung cấp địa chỉ giả................................................................................................35
2.4.7. Hệ thống thu phí thư điện tử và chữ kí điện tử........................................................35
2.4.8. Sử dụng mobile agent..............................................................................................35
2.4.9. Các phương pháp khác.............................................................................................36
2.4.10. Phương pháp lọc nội dung Bayes..........................................................................36
2.5. Kết luận...........................................................................................................................38
Chương 3: Thiết kế chương trình chống thư rác.............................................................40
3.1. Giới thiệu........................................................................................................................40
3.2. Phân tích yêu cầu chương trình......................................................................................40
3.2.1. Phân tích chung về yêu cầu của chương trình.........................................................40
3.2.2. Phân tích chi tiết yêu cầu của chương trình.............................................................41
3.3. Phân tích thiết kế hệ thống..............................................................................................42
3.3.1. Mô hình phân cấp chức năng...................................................................................42
3.3.2. Thiết kế tổng thể:.....................................................................................................43
3.3.3. Thiết kế giao tiếp với người dùng ...........................................................................44
3.3.4. Xây dựng bộ lọc chính.............................................................................................51
3.3.5. Thực hiện và triển khai chương trình.......................................................................57
3.3.6. Đánh giá chương trình.............................................................................................59
Trang 1
Chương 4: Đề xuất triển vọng hướng phát triển..............................................................62
4.1. Hướng phát triển bộ lọc..................................................................................................62
4.1.1. Các hướng phát triển bộ lọc:....................................................................................62
4.1.2. Đề xuất hướng phát triển.........................................................................................63
4.2. Để xuất về qui mô chương trình.....................................................................................63
4.2.1. Qui mô phát triển Bkas............................................................................................63
4.2.2. Qui mô phát triển Bkas cho doanh nghiệp...............................................................64
Kết luận................................................................................................................................65
Phụ lục A..............................................................................................................................67
Tài liệu tham khảo:.............................................................................................................67
Thuật ngữ và viết tắt...........................................................................................................68
Phụ lục B..............................................................................................................................69
(Hướng dẫn sử dụng chương trình Bkas)..............................................................................69
Danh mục hình vẽ:
Hình 1.1 Mô hình SMTP..............................................................................................................6
Hình 1.2 Bốn trạng thái của IMAP............................................................................................13
Hình 2.1 Mô hình điểm chuyển tiếp..........................................................................................31
Hình 3.1 Biểu đồ phân cấp chức năng.......................................................................................43
Hình 3.2 Kiến trúc kĩ thuật tổng thể của chương trình..............................................................43
Hình 3.3 Biểu đồ trường hợp sử dụng của phần giao tiếp với người dùng...............................44
Hình 3.4 Các đối tượng của Bkas..............................................................................................45
Hình 3.5 Biểu đồ trình tự thời điểm khởi tạo.............................................................................46
Hình 3.6 Biểu đồ trình tự tương tác người dùng........................................................................47
Hình 3.7 Biểu đồ trình tự cho sự kiện có thư mới.....................................................................47
Hình 3.8 Thành phần gói Bkas..................................................................................................48
Hình 3.9 Thanh công cụ của chuơng trình gắn vào Outlook.....................................................49
Hình 3.10 Thanh công cụ của Bkas...........................................................................................49
Hình 3.11 Thanh cuộn chính của Bkas......................................................................................49
Hình 3.12 Bảng cấu hình chính.................................................................................................50
Hình 3.13 Bảng cấu hình bộ lọc................................................................................................50
Hình 3.14 Bảng cấu hình danh sách “Bạn” và “Thù”................................................................51
Hình 3.15 Biểu đồ chức năng của bộ lọc...................................................................................51
Hình 3.16 Cấu trúc bộ phân tích từ khóa...................................................................................52
Hình 3.17 Cấu tạo mạng nơ-ron................................................................................................53
Hình 3.18 Biểu đồ thành phần của thư viện..............................................................................54
Hình 3.19 Thành phần của gói DataObject................................................................................55
Hình 3.20 Thành phần của gói MsgProcessors..........................................................................56
Hình 3.21 Thành phần của gói NeuralNet.................................................................................56
Hình 3.22 Thành phần của gói Utility.......................................................................................56
Hình 3.23 Biểu đồ so sánh Bkas và Osfilter2.0.........................................................................61
Hình 4.1 Xu hướng các bộ lọc cho đến nay...............................................................................62
Hình 4.2 Phương pháp sinh thư rác...........................................................................................63
Hình 4.3 Mô hình Bkas phát triển cộng đồng............................................................................63
Hình 4.4 Mô hình Bkas cho doanh nghiệp................................................................................64
Danh mục công thức:
Công thức 2-1 Công thức Paul Graham áp dụng.......................................................................37
Công thức 2-2 Công thức Bayes................................................................................................37
Trang 2
Công thức 2-3 Công thức sau khi biến đổi................................................................................38
Danh mục ví dụ:
Ví dụ 1.1 Mở một kết nối............................................................................................................7
Ví dụ 1.2 Đóng một kết nối.........................................................................................................7
Ví dụ 1.3 Một thủ tục SMTP........................................................................................................8
Ví dụ 1.4 Xác nhận tên................................................................................................................9
Ví dụ 1.5 Mở rộng danh sách hòm thư......................................................................................10
Ví dụ 1.6 Một phiên xác thực....................................................................................................11
Ví dụ 1.7.Một đoạn hội thoại POP3..........................................................................................12
Ví dụ 1.8 Mã hóa QUOTED-PRINTABLE...............................................................................20
Ví dụ 1.9. Mã hóa Base64.........................................................................................................20
Ví dụ 2.1 Ví dụ về thư rác Nigeria 419......................................................................................25
Ví dụ 2.2 Ví dụ thư rác trúng thưởng xổ số...............................................................................26
Trang 3
Lời nói đầu
Trong những năm gần đây, mạng Internet đã hoàn thiện và tiếp tục phát triển góp
phần thay đổi toàn diện cuộc sống của con người, giúp con người sống trong một thế
giới mới, thế giới của tri thức. Cùng với sự phát triển của công nghệ có rất nhiều mặt
tích cực chắc chắn kèm theo là tiêu cực, và nhiệm vụ của chúng ta là khắc phục chúng
để xây dựng một cuộc sống tốt đẹp hơn.
Gần đây một vấn đề được mọi người quan tâm vì nó trở nên bùng nổ, gây bức
xúc cả về phương diện kĩ thuật công nghệ lẫn kinh tế xã hội đó là spam-một hình thức
phát tán tin nhắn không được đồng ý của người nhận với mục đích xấu. Spam tràn
ngập các hòm thư điện tử của người dùng Internet, nó lan sang các hình thức khác như
tin nhắn điện thoại di động và gần đây là cả các cuộc gọi thoại trên Internet (VOIP).
Spam gây ra thiệt hại lớn về hiệu suất hệ thống, tốn phí tài nguyên mạng, gây mất thời
gian quản trị hệ thống, đánh cắp tài khoản cá nhân. Nó còn gây ra phiền phức xã hội
gây khó chịu cho người nhận thư với số lượng thư vô ích cực lớn, phát tán các hình
thức đồi trụy và lừa đảo.
Với vấn đề bùng nổ này các tổ chức công ty lớn đã vào cuộc, và bước đầu đã đạt
được những thành quả nhất định. Nhưng bắt nguồn từ một số nguyên nhân mà cuộc
chiến chống lại spam vẫn chưa đến hồi kết thúc hi vọng phần thắng thuộc về người sử
dụng như nhận định của một nhà báo về lĩnh vực công nghệ thông tin.
Trong nội dung đồ án tốt nghiệp tác giả chỉ tập trung vào các vấn đề của thư rác
điện tử. Với mục đích tìm hiểu chi tiết về spam và đưa ra các giải pháp ngăn chặn
chúng, cùng với việc xây dựng một ứng dụng có khả năng chống lại thư rác một cách
hiệu quả.
Đề tài của đồ án là “Nghiên cứu spam và xây dựng ứng dụng ngăn chặn spam
cho chương trình Microsoft Outlook.” Bố cục của báo cáo này gồm các phần sau:
Chương một: Các giao thức gửi nhận thư điện tử: Giới thiệu chung và đưa
ra nhận xét về giao thức phục vụ cho việc gửi nhận thư.
Chương hai: Thư rác và các phương pháp phòng tránh thư rác: Tìm hiểu
các đặc điểm của thư rác. Phân tích và đánh giá các giải pháp phòng tránh thư rác đang
được sử dụng.
Trang 4
Chương ba: Thiết kế và triển khai chương trình chống thư rác Bkas: Xây
dựng một ứng dụng cho chương trình Microsoft Outlook, có khả năng ngăn chặn hiệu
quả thư rác.
Chương bốn: Đề xuất các giải pháp và triển vọng: Phân tích các giải pháp
và hướng phát triển của chương trình.
Do đề tài của đồ án có nội dung thông tin rộng và thay đổi nhanh, thời gian cũng
như kiến thức có hạn nên chắc chắn đồ án không thể tránh khỏi thiếu xót. Tôi rất mong
nhận được sự chỉ bảo của các thầy cô giáo và các bạn để đồ án được chính xác đầy đủ
và phong phú hơn.
Tôi xin chân thành cảm ơn các thầy cô giáo trong trường Đại học Bách khoa nói
chung và thầy cô giáo của bộ môn Mạng Máy Tính và Truyền Thông-khoa Công nghệ
thông tin nói riêng, những người đã đào tạo và giúp đỡ tôi trong suốt thời gian tôi học
tập tại trường. Xin đặc biệt cảm ơn thầy giáo Ths.Ngô Văn Dũng đã tận tình hướng dẫn
và giúp đỡ tôi trong suốt quá trình nghiên cứu đề tài. Xin gửi lời cảm ơn đến bạn bè và
người thân, những người đã kịp thời động viên và giúp đỡ tôi trong thời gian qua.
Trang 5
Chương 1:Các giao thức gửi nhận thư điện
tử
1.1.Giới thiệu.
Thư điện tử ngày nay đóng vai trò khá quan trong trong các giao dịch trên mạng
Internet. Nó đáp ứng được những yêu cầu của thư tín như tính ổn định, chính xác, dễ
sử dụng và vượt xa thư tín thông thường về tốc độ vận chuyển, gần như ngay tức thì nó
đến được với người nhận. Để có được những ưu điểm trên thư điện tử đã được xây
dựng trên nền tảng các giao thức công nghệ khá hoàn chỉnh. Có thể tạm chia các giao
thức này thành: các giao thức về phương thức gửi nhận thư và các giao thức về định
dạng thư.
1.2.Các giao thức gửi nhận thư điện tử.
1.2.1.SMTP (Simple Mail Transfer Protocol).
a.Mô hình SMTP
Thiết kế của SMTP cơ bản có dạng liên kết như sau: khi có một bên yêu cầu gửi
thư sẽ tạo ra một kênh hai chiều SMTP trao đổi với bên nhận. Bên nhận này có thể là
điểm cuối hoặc là điểm trung gian. Bên gửi để thực hiện yêu cầu sẽ tạo ra các lệnh
SMTP, bên nhận tùy vào khả năng sẽ đáp ứng.
NSD
File
system
SMTP nhận
SMTP gửi
Yêu
cầu/Trả
lời
File
system
Hình 1.1 Mô hình SMTP.
Khi một kênh truyền được tạo ra, đầu tiên bên gửi SMTP gửi đi một câu lệnh chỉ
ra người gửi lệnh. Nếu được chấp nhận, bên nhận gửi lại thông điệp (“OK”). Tiếp theo
bên gửi, gửi đi lệnh (“RCTP”) chỉ ra người nhận. Nếu bên nhận chấp nhận thì trả lời
bằng thông điệp (“OK”) nếu không nó sẽ gửi thông điệp từ chối. Sau đó hai bên thỏa
thuận cụ thể trong suốt qua trình với thứ tự định trước. Sau mỗi bước nếu hoàn thành
quá trình xử lí các bên gửi thông điệp (“OK”). Quá trình hội thoại được thực hiện có
chủ định từng bước một.
Trang 6
SMTP cung cấp cơ chế gửi nhận thư điện tử trực tiếp từ máy của người gửi đến
máy người nhận không qua máy chủ. Hai máy này phải cung cấp cùng dịch vụ ở tầng
giao vận. Nếu không dùng chung tầng giao vận thì có thể thực hiện thông qua các máy
chủ SMTP chuyển tiếp.
Khi cùng một lá thư được gửi cho nhiều người sử dụng thì máy chủ chuyển tiếp
chỉ giữ một bản sao cho tất cả mọi người dùng cùng trên máy chủ đó.
Các lệnh và đáp ứng được mã hóa bằng các kí tự bằng mã ASCII.
b.Thủ tục SMTP
i. Đóng mở kênh.
Ở thời điểm kênh truyền được mở thì một trao đổi được thực hiện để xác nhận
giữa các máy chủ với nhau.
Sau đây là các lệnh đóng và mở kênh:
HELO
QUIT
Trong lệnh HELO máy chủ gửi thông tin về nó.
Ví dụ 1.1 Mở một kết nối.
R: 220 BBNUNIX.ARPA Simple Mail Transfer Service Ready
S: HELO USCISIF.ARPA
R: 250 BBNUNIX.ARPA
Ví dụ 1.2 Đóng một kết nối.
S: QUIT
R: 221 BBNUNIX.ARPA Service closing transmission channel
ii. Thủ tục gửi thư.
Thủ tục để gửi một thư gồm có ba bước. Đầu tiên lệnh MAIL được gửi đi thông
báo định danh của người gửi. Sau đó lệnh như RCTP cung cấp các thông tin của người
nhận. Tiếp theo là lệnh DATA sẽ kèm theo nội dung của lá thư. Cuối của phần dữ liệu
là dấu hiệu kết thúc phiên làm việc.
MAIL
Trang 7
Lệnh này có cú pháp như sau:
MAIL FROM:
: Chứa địa chỉ thư của người gửi. Nó có thể chứa hơn một địa chỉ
thư, có thể gồm một danh sách các địa chỉ máy chủ mà thư đi qua. Do đó tên của máy
chủ đầu tiên trong danh sách là địa chỉ của máy chủ gửi lệnh.
Lệnh trên thông báo với bên nhận SMTP có một phiên làm việc bắt đầu và thông
báo xóa bảng trạng thái và các vùng đệm. Nó cung cấp địa chỉ người gửi để trong
trường hợp có lỗi thì thông báo lại. Nếu được chấp nhận sẽ trả về mã lệnh “ 250 OK”.
RCTP
Bước thứ hai của thủ tục này là lệnh RCTP có cú pháp như sau:
RCPT TO:
Lệnh này chứa thông tin đường dẫn chuyển tiếp của người nhận thư. Nếu được
chấp nhận thì phía nhận SMTP sẽ trả về mã lệnh “250 OK” và lưu đường dẫn này lại.
Nếu địa chỉ người nhận này là không rõ nguồn gốc thì trả về mã lỗi “550 Failure”.
Bước thứ hai này của thủ tục có thể được lặp lại nhiều lần.
có thể chứa nhiều hơn một điạ chỉ thư. chứa
danh sách các địa chỉ máy chủ thư được chuyển qua và hòm thư đến. Máy chủ đầu tiên
trong danh sách này là máy chủ nhận lệnh.
DATA
Bước cuối cùng của thủ tục là lệnh DATA:
DATA
Nếu được chấp nhận bên nhận SMTP trả về ”354 Intermediate” yêu cầu các dòng
tiếp theo là dòng text. Kết thúc đoạn text này bên nhận gửi mã “250 OK”.
SMTP chỉ ra cuối của đoạn dữ liệu thư bằng cách gửi một dòng chứa một dấu
chấm. Kết thúc này cũng xác nhận phiên làm việc và thông báo cho bên nhận quá trình
tiếp theo là lưu tên người gửi và dữ liệu của thư. Nếu được chấp nhận bên nhận SMTP
trả về “250 OK”. Lệnh DATA chỉ trả về sai khi phiên làm việc chưa hoàn thành (ví dụ
không có người nhận nào cả hoặc tài nguyên là không tồn tại).
Ví dụ 1.3 Một thủ tục SMTP.
S: MAIL FROM:
Trang 8
R: 250 OK
S: RCPT TO:
R: 250 OK
S: RCPT TO:
R: 550 No such user here
S: RCPT TO:
R: 250 OK
S: DATA
R: 354 Start mail input; end with .
S: Blah blah blah...
S: ...etc. etc. etc.
S: .
R: 250 OK
Mail được chấp nhận gửi Jones và Brown. Green không có hòm
thư ở máy chủ Beta.
Ví dụ 1.3 chứa một kịch bản gửi nhận như sau: thư do Smith gửi ở máy chủ
Alpha.ARPA cho Jones, Green, và Brown ở máy chủ Beta.ARPA. Máy chủ Alpha liên
lạc trực tiếp với máy chủ Beta.
iii. Xác nhận người dùng và mở rộng danh sách hòm thư.
SMTP cung cấp thêm các hàm chức năng cho phép xác nhận tên người dùng và
mở rộng danh sách thư. Các lệnh này là VRFY và EXPN cùng với các đối số. Với lệnh
VRFY xâu kèm theo là tên người dùng, và trả về là tên đầy đủ của người dùng và hòm
thư của người dùng. Với lệnh EXPN chuỗi xác nhận danh sách thư gửi đi và trả về gồm
tên của nhiều người dùng và các hòm thư trong danh sách.
Ví dụ 1.4 Xác nhận tên.
Ví dụ một
S: VRFY Smith
R: 250 Fred Smith
S: VRFY Smith
R: 251 User not local; will forward to
Trang 9
S: VRFY Jones
R: 550 String does not match anything.
S: VRFY Jones
R: 551 User not local; please try
S: VRFY Gourzenkyinplatz
R: 553 User ambiguous.
Trường hợp sau mở rộng danh sách hòm thư:
Ví dụ 1.5 Mở rộng danh sách hòm thư.
S: EXPN ExamplePeople
R: 250Jon Postel
R: 250Fred Fonebone
R: 250Sam Q. Smith
R: 250Quincy Smith <@USCISIF.ARPA:QSmith@ISI
VAXA.ARPA>
R: 250
R: 250
Hoặc
S: EXPN ExecutiveWashroomList
R: 550 Access Denied to You.
iv. Mở rộng dịch vụ.
SMTP được thiết kế từ ban đầu để có thể mở rộng thêm các dịch vụ mà không
phá vỡ kiến trúc giao thức ban đầu. Cơ chế mở rộng SMTP (ESMTP- ExtendedSMTP) cung cấp thêm các dịch vụ vào SMTP cơ bản. Phần khác biệt chính là lệnh
HELO được thay thế bằng lệnh EHLO. Lệnh này khác biệt ở chỗ nó thông báo cho
máy chủ thư điện tử biết mong muốn sử dụng các dịch vụ kèm theo. Máy chủ sẽ trả về
thông báo các dịch vụ mà nó cung cấp.
1.2.2.POP3 (Post Office Protocol)
c.Giới thiệu
Trang 10
POP3 (Phiên bản POP đang sử dụng hiện nay) là một giao thức thư điện tử cho
phép người sử dụng truy cập và tải thư điện tử được lưu trữ tạm thời trên máy chủ. Sở
dĩ POP được xây dựng vì SMTP không có một phương thức nào cho phép tạo ra hàng
đợi thư của người dùng trên máy chủ. POP cho phép hệ thống có thể tạo ra hàng đợi và
người dùng có thể truy cập vào máy chủ bất kì lúc nào lấy thư và thoát khỏi hệ thống
do đó giảm thiểu hoạt động của cả máy chủ và máy người dùng cho việc duy trì một
kết nối liên tục giữa hai bên.
Một phiên làm việc của POP được tạo bằng các lệnh và các phúc đáp giữa máy
chủ và máy người dùng. Sau đó thì hai bên trao đổi với nhau cho đến khi phiên làm
việc kết thúc. Một phiên làm việc được chia làm ba pha trạng thái chính là: trạng thái
xác thực, trạng thái giao dịch và trạng thái cập nhật.
d.Các pha trạng thái của giao thức POP3.
i. Pha trạng thái xác thực
Một phiên làm việc POP3 bắt đầu khi máy chú lắng nghe ở các kết nối ở cổng
110. Trạng thái này bắt đầu khi người dùng tạo ra kết nối TCP đến cổng 110 và được
máy chủ cho phép. Người dùng phải thực hiện lệnh USER kèm theo định danh của
mình. Nếu máy chủ trả lời với chỉ định (“OK”) người dùng tiếp tục xuất lệnh PASS
kèm theo mật khẩu của mình. Nếu máy chủ tiếp tục trả lời (“OK”) thì nó sẽ xác định
thư mục thư của người sử dụng sau đó chuyển sang trạng thái tiếp theo, trạng thái giao
dịch. Ví dụ một phiên làm việc xác thực như sau:
Ví dụ 1.6 Một phiên xác thực.
Server:
Client:
Server: +OK dewey POP3 server ready
Client: USER mrose
Server: +OK mrose
Client: PASS secret
Server: +OK mrose's maildrop has 2 messages (320
octets)
ii. Pha trang thái giao dịch:
Trang 11
Pha này người sử dụng tạo ra một trong tập lệnh máy chủ sẽ trả lời xác nhận hoặc
từ chối. Các lệnh này cho phép xác định số thư và truy cập đến các thư này trên máy
chủ. Các lệnh có thể sử dụng là:
STAT- máy chủ trả về số thư và tổng dung lượng thư.
LIST [msg]- Nếu không kèm theo tham số thì máy chủ trả về các đáp ứng liệt kê
số thư và một số chỉ số của nó. Nếu có tham số thì máy chủ đơn giản chỉ cần trả lời cho
thư đã xác định bằng tham số msg hoặc trả về một thông báo lỗi nếu thư đó không tồn
tại.
RETR msg- Máy chủ trả về các đáp ứng về nội dung của thư được chỉ ra trong
msg hoặc sẽ thông báo lỗi.
DELE msg- Nếu thư được chỉ định bằng tham số msg là hợp lệ máy chủ POP3 sẽ
đánh dấu thư đó và trả về xác nhận thành công. Nếu thư đó không tồn tại thì hoặc đã
đánh dấu xóa thì máy chủ trả lời có lỗi.
NOOP- Máy chủ trả về với thông báo thành công.
LAST- Trả về thư cuối cùng của danh sách.
RSET- Các thư bị đánh dấu xóa sẽ bỏ đánh dấu này đi.
QUIT- Kết thúc pha giao dịch, chuyển sang pha cập nhật
Sau đây là hội thoại giữa máy chủ và máy người dùng trong phiên làm việc này:
Ví dụ 1.7.Một đoạn hội thoại POP3
Client: STAT
Server: +OK 2 320
Client: LIST
Server: +OK 2 messages (320 octets)
Server: 1 120
Server: 2 200
Server: .
Client: RETR 1
Server: +OK 120 octets
Server:
Server: .
Client: DELE 1
Trang 12
Server: +OK message 1 deleted
Client: RETR 2
Server: +OK 200 octets
Server:
Server: .
Client: DELE 2
Server: +OK message 2 deleted
Client: QUIT
Pha cập nhật POP3
iii. Trạng thái cập nhật
Trong pha này máy chủ xóa tất cả các thư đánh dấu xóa và cập nhật thông báo rồi
đóng kết nối TCP. Phiên làm việc hoàn tất với việc sử dụng lệnh Logout. Thông tin chi
tiết của giao thức POP3 tham khảo trong RFC1939.
1.2.3.IMAP (Internet Mail Access Protocol)
e.Giới thiệu:
IMAP4 (Internet Message Access Protocol) cho phép thao tác từ xa các thư điện
tử từ máy trạm đến máy chủ thư điện tử. IMAP có cơ chế đơn giản hơn POP. Để thực
hiện thao tác với thư điện tử thì máy trạm gửi yêu cầu và máy chủ tùy vào khả năng sẽ
đáp ứng yêu cầu đó. Mỗi câu lệnh của máy trạm đều bắt đầu bằng chỉ số, chỉ số định
dạng người dùng (ví dụ: A001) chỉ số này tăng thêm một khi thêm với các câu lệnh tiếp
theo. Các câu lệnh này cho phép người dùng tạo và thao tác với thư mục được gọi
“mailbox” trên máy chủ như với thư mục trên máy trạm. Các câu lệnh này cũng cho
phép được đồng bộ lại giữa máy trạm và máy chủ. Các lệnh này thực hiện trong bốn
trạng thái của phiên làm IMAP4 là: chưa xác thực, xác thực, lựa chọn và thoát.
f.Các trạng thái của giao thức IMAP4:
Trang 13
Trạng thái
chưa xác thực
Máy trạm gửi
lệnh:CAPABILITY, NOOP,
LOGIN, LOGOUT.
Hợp lệ
Trạng thái xác
thực
Đóng.
Máy trạm thực hiện các lệnh trên
và: SELECT, EXAMINE,
CREATE, RENAME
Hợp lệ
Trạng thái lựa
chọn
Máy trạm thực hiện tất cả các lệnh
trên và:CLOSE,EXPUNGE,
SEARCH, FETCH,STORE,COPY.
Thoát
Trạng thái
thoát
Hình 1.2 Bốn trạng thái của IMAP
i. Trạng thái chưa xác thức IMAP4.
Máy trạm tạo kết nối máy chủ qua cổng 143 bắt đầu trạng thái chưa xác thực.
Trong trạng thái này có bốn lệnh là:
CAPABILITY : hiển thị khả năng của máy chủ.
NOOP : tạo ra một trả lời xác nhận.
LOGIN : xác thực người dùng.
LOGOUT: kết thúc trạng thái
Để trạng thái xác thực được tiếp tục người dùng phải cung cấp quyền của mình
trong lệnh LOGIN. Sau khi được chấp nhận, phiên sẽ chuyển sang trạng thái xác thực.
ii. Trạng thái xác thực.
Bắt đầu trạng thái xác thực người dùng chọn lựa hòm thư của mình trước khi bắt
đầu trạng thái tiếp theo. Công việc này được hoàn thành với một trong hai lệnh
SELECT hoặc EXAMINE kèm theo tên hợp lệ của hòm thư. Sự khác biệt giữa hai lệnh
này là lệnh SELECT cho phép quyền đọc ghi trong khi đó lệnh EXAMINE chỉ cho
phép quyền đọc. Sau khi một trong hai lệnh này được thực hiện thành công phiên làm
việc sẽ bắt đầu trạng thái lựa chọn. Trong trạng thái xác thực thì người dùng có thể
thực hiện tất cả các lệnh ở trạng thái trước đó (trừ lệnh LOGIN). Người dùng cũng có
thể thực hiện lệnh tạo hòm thư CREAT, lệnh xem trạng thái STATUS của hòm thư, đổi
tên hòm thư RENAME và một số thao tác khác.
Trang 14
iii. Trạng thái lựa chọn.
Trong trạng thái này việc truy cập trực tiếp tới thư điện tử được thực hiện. Người
dùng có thể thực hiện lệnh trọng trang thái xác thực và thêm các lệnh như:
CLOSE: đóng hòm thư và quay lại trạng thái xác thực.
EXPUNGE: bỏ tất cả các đánh dấu xóa.
SEARCH: cho phép người dùng tìm kiếm với tiêu chuẩn mình đặt ra.
FETCH: lấy về toàn bộ nội dung thư.
STORE: cho phép cập nhật cờ trạng thái thư.
COPY: cho phép copy một số thư vào hòm thư.
Trong trạng thái lựa chọn này người dùng có thể thực hiện lệnh CLOSE để trở về
trạng thái xác thực hoặc lệnh LOGOUT để chuyển máy chủ sang trạng thái thoát.
iv. Trạng thái thoát.
Trong trạng thái này máy chủ đóng kết nối.
1.3.Cấu trúc thư điện tử
1.3.1.Giới thiệu:
Được thiết kế dựa trên chuẩn RFC822 xuất bản năm 1982 - chuẩn thư điện tử trên
nền tảng Internet cho phép chuyển tải thư - nhưng có một số các hạn chế sau:
Chỉ cho phép gửi thư với các kí tự ASCII.
Không cho phép gửi thư qua 1000 kí tự trên một dòng.
Giới hạn độ dài của thư.
Chính vì những lý do trên năm 1992 một chuẩn thư điện tử mới ra đời tên là
MIME. MIME viết tắt của Multipurpose Internet Mail Extensions. Xây dựng dựa trên
các giao thức cũ nhưng có thêm các trường cho phép định nghĩa văn bản có nội dung
và có cấu trúc.
MIME cho phép thư điện tử có thể:
Có nhiều thành phần trong một bức thư.
Thư không có giới hạn độ dài dòng và độ dài thư.
Trang 15
Hỗ trợ bộ mã khác ASCII cho phép các ngôn ngữ khác thể hiện trên thư.
Cho phép nhiều font chữ trong một bức thư.
Truyền tải dữ liệu nhị phân hoặc dữ liệu chương trình.
Truyền tải ảnh, audio, video và thư đa phương tiện.
MIME định nghĩa thêm các trường tiêu đề sau:
a. Trường MIME-Version được dùng để chỉ ra đoạn văn bản tuân theo
chuẩn MIME nào.
b. Trường Content-Type dùng để chỉ ra các dư các kiểu dữ liệu trong
phần thân của văn bản và kiểu mã hóa dữ liệu. Nó gồm các giá trị sau:
o Text, dùng để thông báo số kí tự và loại ngôn ngữ mà văn bản
được viết.
o Multipart, cho phép biểu diễn các đoạn dữ liệu với các định
dạng dữ liệu khác nhau trong cùng một văn bản.
o Application, dùng cho việc chuyển tải các loại dữ liệu của
ứng dụng hoặc dữ liệu nhị phân.
o Message, dùng để đóng gói văn bản.
o Image, cho việc truyền tải dữ liệu ảnh.
o Audio, truyền tải dữ liệu audio.
o Video, truyền tải dữ liệu video hoặc hình ảnh động.
c. Trường Content-Transfer-Encoding chỉ ra cách thức dữ liệu
được mã hóa cho phép chuyển qua các hệ thống chỉ có bộ kí tự giới hạn.
d. Hai trường cho sử dụng cho việc định nghĩa các dữ liệu chứa trong phần
thân
của
văn
bản
là: trường
Content-ID
và
Content-
Description.
MIME có cấu trúc mở, nó cho phép bộ các trường content-type/subtype cho phép
định nghĩa thêm.
Trang 16
1.3.2.Cấu trúc chi tiết của MIME:
MIME định nghĩa chi tiết trong RFC1521. MIME cho phép đưa nhiều đối tượng
vào văn bản. Mỗi phần này có tiêu đề và một phần thân. Trong phần thân có thể có tiếp
các phần thân nhỏ hơn.
g.Trường MIME-Version
MIME được thiết kế để tương thích ngược với các chuẩn Internet trước đó như
RFC822, do đó dựa vào trường này trình duyệt thư có thể xác định thư có theo định
dạng MIME không. Hiện tại chỉ có một phiên bản của MIME là 1.0, nên trường này
chỉ có dạng như sau:
MIME-Version: 1.0
Trường MIME-Version yêu cầu đặt ở phần đầu tiên của văn bản và không cần
khai báo ở các phần thân.
h.Trường Content-Type
Trường Content-Type định nghĩa dữ liệu cho phép trình duyệt thư có thể biểu
diễn bức thư cho người nhận đúng như định dạng của người gửi.
Mức cao nhất Content-Type dùng để định nghĩa các kiểu dữ liệu thông thường
còn các phần phía dưới chỉ ra chi tiết định dạng dữ liệu. Ví dụ Content-Type là
Image/xyz thông báo cho trình duyệt thư đây là dữ liệu ảnh, ngay cả khi trình duyệt
này không biết chi tiết xyz là loại định dạng ảnh. Với thông tin như vậy thì trình duyệt
không hỗ trợ định dạng này vẫn có thể quyết định hoặc cho người sử dụng xem dữ liệu
thô hoặc không cho xem. Ví dụ cho người dùng xem ảnh biểu diễn dữ liệu ảnh này
dưới dạng kí tự. Với lý do này có thể không cần các thông số kèm theo cũng có thể
phân biệt các kiểu dữ liệu với nhau.
Chuẩn MIME định nghĩa 7 loại Conntent-type và theo các tác giả của MIME với
7 loại này nếu muốn biểu diễn loại dữ liệu mới có thể biểu diễn dưới kiểu con của 1
trong 7 kiểu này. Tuy nhiên MIME cung cho phép thêm vào các loại không tiêu chuẩn
bằng cách thêm vào chữ X-.
Cấu trúc cú pháp của trường Content-type
Content-Type := type "/" subtype [";" parameter]_
Chi tiết các Content-types:
i. Application
Trang 17
Chỉ ra dữ liệu không thuộc các bộ còn lại ví dụ dữ liệu dạng nhị phân, dữ liệu
được xử lý bằng trình duyệt.
Application/Octet-Stream : Chỉ ra đây là dữ liệu nhị phân trình duyệt thư đơn
giản chỉ cần ghi lại các dữ liệu này vào file chương trình.
ii. Audio
Chỉ ra dữ liệu tiếng.
Audio/Basic:Nội dung của trường con Audio/Basic mã hóa sử dụng luật 8-bit
ISDN. Khi có trường này thì tốc độ lấy mẫu là 8000 Hz.
iii. Image
Dữ liệu ảnh. Đòi hỏi thiết bị hiển thị như màn hình, máy in… để xem các thông
tin này.
Image/Jpeg :Trường con chỉ ra định dạng ảnh là Jpeg.
Image/Gif :Trường con chỉ ra định dạng ảnh là Gif.
iv. Message
Chỉ ra dữ liệu được mã hóa.
Message/RFC822 :Chỉ ra trong phần thân có các thông điệp được đóng gói với
cấu trúc thông điệp theo RFC822. Rất hữu dụng khi chuyển tiếp một thư vì nó chỉ ra
điểm bắt đầu và kết thúc của lá thư.
Message/Partial: Chỉ ra các phần của một lá thư cho phép chuyển tải lá thư có
phần thân dài hơn khả năng của hệ thống truyền tải. Message/Partial chỉ ra phần thân
bao gồm các phần nhỏ hơn được đánh dấu.
Message/External-Body: Chỉ ra đây không phải là phần dữ liệu chỉ có tính chất
tham khảo. Trong trường hợp này các tham số định nghĩa ra một cơ chế để truy cập vào
phần dữ liệu thêm này.
v. Multipart
Chỉ ra dữ liệu gồm nhiều phần mỗi phần này có định dạng dữ liệu riêng. Dấu hiệu
bắt đầu và kết thúc của mỗi phần là các đường bao.
Tham số đường bao chỉ ra xâu được sử dụng cho việc đánh dấu các phần. Giữa
hai đường bao là một phần do vậy không có đường bao nằm giữa các phần. Các đường
bao có độ dài không hơn 70 kí tự kể cả các dấu cách và các dấu gạch ngang.
Trang 18
Đường bao mở đầu, bắt đầu bằng hai dấu gạch ngang tiếp theo là tham số đường
bao. Đường bao kết thúc giống đường bao mở đầu nhưng kết thúc bằng hai dấu gạch
ngang.
Ta xem xét trường hợp sau gồm nhiều phần thân Content-Type có dạng sau:
Content-Type:multipart/mixed; boundary=gc0y0pkb9ex
Nó chỉ ra mỗi phần có dấu hiệu mở đầu như sau:
--gc0y0pkb9ex
Và dấu hiệu kết thúc như sau
--gc0y0pkb9ex-Multipart/Mixed: Chỉ ra các phần này được trình diễn tuần tự.
Multipart/Parallel: Các phần trình diễn đồng thời ví dụ như hình ảnh kèm theo âm
thanh.
Multipart/Digest: Chỉ ra mỗi phần là một thông điệp theo định dạng RFC822.
vi. Text
Kiểu này dùng để thông báo bộ kí tự được sử dụng. Bộ các kí tự được chỉ ra bằng
tham số Charset. Định dạng ngầm định là :
Content-Type: text/plain; Charset=US-ASCII.
Giá trị Charset thì không phân biệt chữ hoa thường. Các giá trị cho phép sử dụng
là US-ASCII, ISO-8859-1, ISO-8859-2, ....
Text/Plain : Văn bản chứa kí tự trong bảng mã ASCII.
Text/Richtext:Chỉ ra định dạng kí tự có định dạng đơn giản được MIME định
nghĩa.
vii. Video
Chỉ ra phần thân gồm các hình động với màu mà âm thanh được mã hóa bằng
chuẩn kèm theo ví dụ Video/Mpeg.
viii. X-TypeName
Đây bao gồm tất cả các tên kiểu bắt đầu với X-. Các giá trị của Content-Type bắt
đầu bằng X- là các giá trị dùng mục đích riêng do các hệ thống thư trao đổi với nhau.
i.Trường Content-Transfer-Encoding
Trang 19
Rất nhiều Content-Types của MIME được truyền tải dưới dạng các kí tự mã hóa 8
bit hoặc dạng dữ liệu nhị phân nên không thể truyền trên một số các giao thức ví dụ
như SMTP chỉ cho phép chuyển thư với kí tự 7-bit ASCII với dữ liệu không quá 1000
kí tự. Do đó MIME cung cấp cơ chế cho phép mã hóa các dữ liệu này dưới dạng dòng
có độ dài giới hạn và gồm các kí tự mã hóa 7 bit. Trường Content-Transfer-Encoding
chỉ ra cơ chế để thực hiện việc mã hóa.
Các giá trị được sử dụng trong Content-Transfer-Encoding là: BASE64,
QUOTED-PRINTABLE, 8BIT, 7BIT, BINARY, x-EncodingName.
i. 7BIT.
Là kiểu mã hóa ngầm định,do vậy khi không có trường này trong thư, thì cũng
ngầm định là 7bit.
ii. QUOTED-PRINTABLE
Mã hóa theo kiểu QUOTED-PRINTABLE chứa hầu hết các kí tự trong bảng mã
ASCII. Dấu bằng biểu diễn kí tự esc, các kí tự khác không phải kí tự được biểu diễn
bằng dấu bằng theo sau là hai số hệ mười sáu. Nếu một dòng có số kí tự nhiều hơn 76
sẽ cắt thành thành 75 kí tự và kết thúc dòng bằng dấu bằng.
Điểm mạnh khi sử dụng mã hóa QUOTED-PRINTABLE khi sử dụng mã ASCII
là chỉ cần thêm một số các kí tự vào để biểu diễn. Thư có thể cho phép người sử dụng
xem trực tiếp không cần chương trình đọc thư đặc biệt
Sau đây là ví dụ trao đổi theo chuẩn EDI dùng mã hóa QUOTED-PRINTABLE :
Ví dụ 1.8 Mã hóa QUOTED-PRINTABLE
ISA*00*
*00*
*01*987654321
*12*8005551234 *910=
607*0111*U*00200*110000777*0*T*>
GS*PO*987654321*8005551234*920501*2032*7721*X*002003
ST*850*000000001
BEG*00*NE*MS1112**920501**CONTRACT#
REF*IT*8128827763
N1*ST*MAVERICK SYSTEMS
N3*3312 NEW HAMPSHIRE STREET
N4*SAN JOSE*CA*94811
PO1*1*25*EA***VC*TP8MM*CB*TAPE8MM
PO1*2*30*EA***VC*TP1/4*CB*TAPE1/4INCH
Trang 20