Trong đề tài này, chúng em xây dựng một chương trình giúp việc gởi và nhận E-mail trên điện thoại BlackBerry, cụ thể là các điện thoại BlackBerry sử dụng nền tảng hệ điều hành Research
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
0612022 – LƯƠNG PHAN BÌNH
0612374 – TỐNG PHƯỚC BẢO QUỐC
NGHIÊN CỨU VÀ XÂY DỰNG ỨNG DỤNG
GỬI NHẬN E-MAIL TRÊN ĐIỆN THOẠI BLACKBERRY
KHÓA LUẬN CỬ NHÂN CNTT
Giáo viên hướng dẫn:
ThS ĐỖ HOÀNG CƯỜNG
NIÊN KHÓA 2006 – 2010
Trang 2LỜI CÁM ƠN
Chúng em xin bày tỏ lòng biết ơn chân thành nhất đến Thầy Đỗ Hoàng Cường, người Thầy đã tận tâm hướng dẫn, giúp đỡ chúng em trong suốt thời gian thực hiện luận văn này
Chúng con xin gửi tất cả lòng biết ơn sâu sắc và sự kính trọng đến ông bà, cha
mẹ, cùng toàn thể gia đình, những người đã nuôi dạy chúng con trưởng thành đến ngày hôm nay
Chúng em cũng xin chân thành cảm ơn quý Thầy Cô trong Khoa Công Nghệ Thông Tin, trường Đại Học Khoa Học Tự Nhiên TP.Hồ Chí Minh đã tận tình giảng dạy, hướng dẫn, giúp đỡ và tạo điều kiện cho chúng em thực hiện tốt luận văn này
Xin chân thành cảm ơn sự giúp đỡ, động viên và chỉ bảo rất nhiệt tình của các anh chị và tất cả các bạn, những người đã giúp chung tôi có đủ nghị lực và ý chí để hoàn thành luận văn này
Mặc dù đã cố gắng hết sức, song chắc chắn luận văn không tránh khỏi những thiếu sót chúng em rất mong nhận được sự thông cảm và chỉ bảo tận tình của quý Thầy Cô và các bạn
TP.HCM, 6/2010 Nhóm sinh viên thực hiện Lương Phan Bình – Tống Phước Bảo Quốc
Trang 3NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Trường Đại Học Khoa Học Tự Nhiên, Ngày … Tháng … Năm 2010
Giáo viên hướng dẫn [Ký tên và ghi rõ họ tên]
Trang 4NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Khóa luận đáp ứng đầy đủ yêu cầu của Khóa luận cử nhân CNTT
Trường Đại Học Khoa Học Tự Nhiên, Ngày … Tháng … Năm 2010
Giáo viên phản biện [Ký tên và ghi rõ họ tên]
Trang 5LỜI NÓI ĐẦU
Hiện nay, công nghệ thông tin đang phát triển mạnh mẽ và trở thành một ngành công nghiệp mũi nhọn ở nhiều quốc gia Máy tính ngày càng trở nên phổ biến, xuất hiện nhiều trong các gia đình và trở thành một công cụ không thể thiếu của nhiều người Bên cạnh sự phát triển của ngành công nghệ thông tin không thể không nhắc tới sự phát triển của Internet Sự xuất hiện và phát triển của Internet đã đáp ứng được nhu cầu con người về giải trí, làm việc, học tập cho đến giao tiếp.v.v
Internet xuất hiện đã đáp ứng được nhu cầu giao tiếp từ xa của con người, với Internet, con người từ khắp nơi có thể liên kết vào cùng một mạng toàn cầu, giúp cho khả năng giao tiếp từ xa của con người dễ dàng hơn Trong đó E-mail xuất hiện đã góp phần giúp cho việc giao tiếp từ xa của con người dễ dàng hơn rất nhiều
Công nghệ E-mail ngày càng phát triển bên cạnh sự phát triển của Internet, rất nhiều E-mail Server đã được lập Từ E-mail Server cung cấp miễn phí cho người dùng như Yahoo, Gmail, Hotmail.v.v Cho tới các E-mail Server dùng riêng cho các doanh nghiệp Nhu cầu về E-mail của con người rất lớn Việc gởi và nhận E-mail đã trở thành một phần không thể thiếu của rất nhiều người Nhu cầu gởi và nhận E-mail ở mọi nơi đã trở thành một nhu cầu cấp thiết
Sự ra đời của các thiết bị di động đã đáp ứng được phần nào nhu cầu của con người, dựa vào đặc tính nhỏ gọn và di động Thiết bị di động đáp ứng được rất nhiều nhu cầu của con người, trong đó có cả việc gởi và nhận E-mail Ngày nay, việc gởi và nhận E-mail trên các thiết bị di động đã trở nên phổ biến Có nhiều giải pháp để thực hiện vấn đề trên như Microsoft phát triển Microsoft Exchange Server để quản lý việc gởi và nhận E-mail, BlackBerry Server quản lý việc gởi và nhận E-mail cho các điện thoại BlackBerry.v.v Trong đó, BlackBerry đang có ưu thế vượt trội về khả năng gởi
và nhận E-mail trên các thiết bị di động của mình BlackBerry đã và đang dần chiếm lĩnh phần lớn thị phần thiết bị di động thông minh
Xuất phát từ các lý do trên, chúng em đã thực hiện đề tài “NGHIÊN CỨU VÀ XÂY DỰNG ỨNG DỤNG GỞI VÀ NHẬN E-MAIL TRÊN ĐIỆN THOẠI
BLACKBERRY” Trong đề tài này, chúng em xây dựng một chương trình giúp việc
gởi và nhận E-mail trên điện thoại BlackBerry, cụ thể là các điện thoại BlackBerry sử dụng nền tảng hệ điều hành Research In Motion phiên bản 5.0
Mục tiêu của đề tài là xây dựng một chương trình giúp cho việc gởi và nhận mail thông qua điện thoại BlackBerry sử dụng hệ điều hành Research In Motion phiên bản 5.0 Giúp người dùng gởi và nhận E-mail dễ dàng bằng thiết bị thông minh
E-BlackBerry của hãng Research In Motion Các nội dung chính của đề tài bao gồm:
Tìm hiểu về các công nghệ gởi và nhận E-mail
Trang 6 Tìm hiểu về hệ điều hành Research In Motion và thiết bị di động
BlackBerry của Research In Motion
Tìm hiểu một số vấn đề về lập trình trên hệ điều hành Research In Motion
Tìm hiểu lập trình mạng trên BlackBerry
Xây dựng một ứng dụng chạy trên các thiết bị di động BlackBerry của hãng Research In Motion để gởi và nhận E-mail
Trang 7MỤC LỤC
LỜI CÁM ƠN 2
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 3
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN 4
LỜI NÓI ĐẦU 5
Tổ chức luận văn 10
Danh sách hình 11
Danh sách bảng 13
PHẦN 1: MÔI TRƯỜNG LẬP TRÌNH BLACKBERRY 14
Chương 1: Tổng quan hệ điều hành Research In Motion (RIM) 14
1.1 Kiến trúc Research In Motion OS: 14
1.2 Các phiên bản Research In Motion OS: 19
1.3 Giới thiệu Research In Motion OS 5.0: 21
Chương 2: BlackBerry Mobile 23
2.1 Tổng quan về BlackBerry Mobile: 23
2.2 Một số vấn đề khi xây dựng ứng dụng trên BlackBerry: 25
Chương 3: Lập trình với BlackBerry API 31
3.1 BlackBerry API: 31
3.2 Mail API trên BlackBerry: 34
PHẦN 2: CƠ SỞ LÝ THUYẾT 36
Chương 4: Các giao thức trong gửi nhận e-mail 36
4.1 Giao thức SMTP: 36
4.2 Giao thức POP3: 43
4.3 Giao thức IMAP: 48
Chương 5: Push e-mail và Pull e-mail 67
5.1 Push e-mail: 67
5.2 Pull e-mail: 68
PHẦN 3: XÂY DỰNG ỨNG DỤNG GỬI NHẬN E-MAIL 70
Chương 6: Các kĩ thuật xử lí trong ứng dụng 70
6.1 Các giải pháp về vấn đề nhận e-mail: 70
6.2 Các giải pháp về vấn đề gửi e-mail: 72
Trang 86.3 Các giải pháp về vấn đề giả lập Push e-mail: 73
6.4 Các giải pháp về vấn đề xây dựng ứng dụng Push e-mail thực sự: 75
6.5 Các giải pháp về vấn đề lưu trữ thông tin trong ứng dụng: 77
6.6 Các giải pháp về vấn đề tiếng Việt trong ứng dụng: 81
6.7 Các giải pháp về vấn đề đa ngôn ngữ: 83
Chương 7: Phân tích và thiết kế 85
7.1 Khảo sát hiện trạng 85
7.2 Xác định yêu cầu: 85
7.3 Xây dựng mô hình use-case: 86
7.4 Đặc tả use-case: 88
7.5 Thiết kế kiến trúc: 101
7.6 Thiết kế lớp: 103
7.7 Thiết kế xử lí: 105
Chương 8: Cài đặt và thử nghiệm 109
8.1 Môi trường phát triển: 109
8.2 Cài đặt: 109
8.3 Thử nghiệm: 110
Chương 9: Tổng kết 113
9.1 Kết luận: 113
9.2 Hướng phát triển: 113
PHẦN 4: PHỤ LỤC 115
Phụ lục A: Phát triển chương trình BlackBerry 115
A.1 Kiến trúc mạng BlackBerry 115
A.2 Mô hình của chương trình BlackBerry 116
A.3 Những mở rộng của BlackBerry từ J2ME 116
A.4 Phát triển chương trình bằng JDE 117
A.5 Triển khai chương trình bằng Blackberry Desktop Manager 119
Phụ lục B: Tống hợp các giao thức mail 121
B.1 Cấu trúc MIME 121
B.2 Cấu trúc mã trả về và ý nghĩa các chữ số 128
B.3 Base64 và Quoted-printable Encoding 128
Trang 9B.4 Cách đánh số các thành phần trong MIME 131 Tài liệu tham khảo 133
Trang 10Tổ chức luận văn
Nội dung của luận văn được chia làm 3 phần và 9 chương:
PHẦN 1: MÔI TRƯỜNG LẬP TRÌNH BLACKBERRY
Chương 1: Tổng quan hệ điều hành Research In Motion(RIM): Giới thiệu tổng
quan về công ty Research In Motion, tổng quan về hệ điều hành Research In Motion,
sơ lược các phiên bản hệ điều hành Research In Motion cũng như tổng quan về hệ điều hành Research In Motion phiên bản 5.0
Chương 2:BlackBerry Mobile: Giới thiệu tổng quan về thiết bị di động BlackBerry
của công ty Research In Motion Tổng quan về lịch sử, các dòng máy, đặc điểm của thiết bị di động Blackberry
Chương 3: Lập trình với Blackberry API: Giới thiệu các vấn đề cơ bản về lập trình
trên điện thoại BlackBerry
PHẦN 2: CƠ SỞ LÝ THUYẾT
Chương 4: Các giao thức trong gởi và nhận E-mail: Giới thiệu và trình bày về các
giao thức trong việc gởi và nhận E-mail, bao gồm tổng quan, lịch sử, các câu lệnh sử dụng trong các giao thức đó
Chương 5: Push E-mail và Pull E-mail: Giới thiệu và phân biệt về Push E-mail và
Pull E-mail - 2 cách để lấy E-mail từ E-mail Server
PHẦN 3: XÂY DỰNG ỨNG DỤNG GỞI VÀ NHẬN E-MAIL
Chương 6: Các kĩ thuật xử lý trong ứng dụng: Các kĩ thuật và giải pháp để xử lý và
giải quyết các vấn đề đặt ra trong quá trình xây dựng ứng dụng gởi và nhận E-mail trên Blackberry
Chương 7: Phân tích và thiết kế: Phân tích, thiết kế các chức năng của chương trình,
thiệt kế lớp, thiết kế màn hình, thiết kế lưu đồ hoạt động và trình bày một số vấn đề quan trọng khác liên quan tới việc xây dựng ứng dụng
Chương 8: Cài đặt và thử nghiệm: Giới thiệu môi trường phát triển và cài đặt ứng
dụng, thử nghiệm ứng dụng trên môi trường máy ảo và trong thực tế
Chương 9: Tổng kết: Trình bày những kết quả đạt được, hạn chế, những vấn đề tồn
tại, hướng phát triển trong tương lai
Trang 11Danh sách hình
Hình 1.1 - Cấu trúc mạng của Blackberry 15
Hình 1.2 - Trackwheel trên máy BlackBerry 8700 16
Hình 1.3 - Trackball trên điện thoại BlackBerry Pearl 8100 16
Hình 1.4 - Trackpad trên điện thoại Blackberry Bold 9700 17
Hình 1.5 - Touchscreen trên điện thoại Blackberry Storm 9500 17
Hình 1.6 - Bàn phím QWERTY trên máy BlackBerry Curve 8900 18
Hình 1.7 - Bàn phím AZERTY Trên máy BlackBerry Curve 8900 18
Hình 1.8 - Bàn phím SureType trên điện thoại BlackBerry 8100 19
Hình 1.9 - Bàn phím ảo SureType trong máy Blackberry 8550 19
Hình 1.10 - Giao diện Research In Motion OS 5.0 22
Hình 2.1 - Chu kỳ sống của chương trình BlackBerry 26
Hình 2.2 - Các công cụ lập trình MDS trên BlackBerry 27
Hình 2.3 - Máy ảo 9530 của BlackBerry 28
Hình 2.4 – Sơ đồ biểu diễn mới quan hệ giữa các lớp Connection 32
Hình 4.1- Quá trình trao đổi dữ liệu trong giao thức SMTP 36
Hình 4.2 - Giao tác giữa Client và Server trong giao thức SMTP 36
Hình 4.1- Quá trình trao đổi dữ liệu trong giao thức SMTP 36
Hình 4.3 - Mô hình hoạt động của POP3 43
Hình 4.4 - Trạng thái chứng thực của POP3 43
Hình 4.5 - Trạng thái giao tác của POP3 44
Hình 4.6 - Mô hình hoạt động của IMAP4 49
Hình 5.1 - Mô hình BIS của Research In Motion 66
Hình 5.2 - Microsoft Exchange 1.0 67
Hình 6.1 - Quá trình chuyển đổi mẫu E-mail khi gởi mail tới một người dùng 71
Hình 6.2 - Quá trình tự động nhận E-mail của chương trình 72
Trang 12Hình 6.3- Mô hình hệ thống Push E-mail 74
Hình 6.4 - Sơ đồ quản lý Persistent Data trong máy BlackBerry 77
Hình 6.5 - Cấu trúc lưu trữ danh sách các cấu hình E-mail 78
Hình 7.1 - Sơ đồ use-case ứng dụng 84
Hình 7.2 – Mô hình hoạt động của ứng dụng 99
Hình 7.3 – Kiến trúc thành phần ứng dụng phía Client 100
Hình 7.4 – Các lớp quản lý màn hình 101
Hình 7.5 – Các thành phần lưu trữ và xử lý Message 101
Hình 7.6 – Sơ đồ các lớp quản lý E-mail 102
Hình 7.7 – Thành phần các lớp quản lý cấu hình và lưu trữ 102
Hình 7.8 – Quá trình nhận E-mail bằng giao thức IMAP 103
Hình 7.9 - Quá trình nhận E-mail bằng giao thức POP 103
Hình 7.10 – Xử lý và hiển thị nội dung E-mail 104
Hình 7.11 – Xử lý Attachment trong E-mail 104
Hình 7.12 – Đóng gói và gởi E-mail 105
Hình 7.13 - Các trạng thái chuyển đổi của chương trình 105
Hình 8.1 – Giao diện BlackBerry Desktop Manager 107
Hình 8.2 – Danh sách chương trình trong thiết bị 107
Hình A.1 - Kiến trúc mạng của BlackBerry 111
Hình A.2 - Cài đặt để kết nối BES 112
Hình A.3 - Tạo Workspace để quản lý công việc 113
Hình A.4 - Tạo chương trình mới 113
Hình A.5 - Thêm một tập tin mới vào chương trình 114
Hình A.6 - đưa một tập tin vào chương trình 114
Trang 13Danh sách bảng
Bảng 1.1 Các phiên bản hệ điều hành Research In Motion 21
Bảng 2.1 - Các gói API cần phải ký trước khi sử dụng 30
Bảng 4.1 Các định nghĩa mở rộng của SMTP 38
Bảng 4.2 các câu lệnh trả về trong SMTP 41
Bảng 6.1 - Các ký tự Unicode tổ hợp 81
Bảng 7.1 - Các yêu cầu của chương trình 84
Bảng 7.2 – Danh sách các actor 84
Bảng 7.3 – Danh sách các use-case 85
Bảng 8.1 - Kết quả thử nghiệm trên máy ảo của chương trình 86
Bảng A.1 - Chương trình HelloWorld 115
Bảng A.2 - cấu trúc một tập tin alx 116
Bảng B.1 – Ví dụ về tập tin MIME 119
Bảng B.2 - Chữ số “x” 124
Bảng B.3 – Chữ số “y” 124
Bảng B.4 – Bảng mã chuyển đổi 126
Bảng B.5 – Ví dụ về chuyển đổi mã 126
Bảng B.6 – Cách đánh số các thành phần trong MIME 127
Trang 14Chương 1: Tổng quan hệ điều hành Research In Motion
PHẦN 1: MÔI TRƯỜNG LẬP TRÌNH BLACKBERRY
Chương 1: Tổng quan hệ điều hành Research In Motion (RIM)
1.1 Kiến trúc Research In Motion OS:
1.1.1 Giới thiệu Research In Motion OS:
Hệ điều hành Research In Motion(RIM OS) được phát triển bởi công ty
Research In Motion, được sử dụng hầu hết cho dòng điện thoại thông minh
BlackBerry của hãng này
Sơ lược về hệ điều hành Research In Motion:
Hệ điều hành RIM lập trình trên ngôn ngữ C++
Ngôn ngữ lập trình: Sử dụng ngôn ngữ Java và BlackBerry API
Kernel: Sử dụng Kernel Java
Bản quyền sử dụng: Research In Motion độc quyền phân phối và phát triển
Ngôn ngữ hỗ trợ: US English, UK English, French, Spanish, European
Portuguese, Brazilian Portuguese, Basque, Catalan, Galician, Italian, German, Dutch, Russian, Polish, Czech, Hungarian, Turkish, Arabic, Hebrew,
Indonesian, Thai, Japanese, Chinese (Traditional), Chinese (Simplified),
Korean
Hệ điều hành BlackBerry là một hệ điều hành đa nhiệm, sử dụng cách thức dẫn nhập dữ liệu thông qua bánh xe di chuyển(Trackwheel), viên bi di chuyển(Trackball) hay bàn cảm ứng(Trackpad), màn hình cảm ứng(Touchscreen) Hệ điều hành hỗ trợ các thông tin thiết bị di động chuẩn MIDP 1.0 và giao thức không dây chuẩn WAP 1.2 Hỗ trợ trình duyệt web WAP và các thông tin như lịch, công việc, địa chỉ, E-mail
và chú thích như một số điện thoại thông minh khác Các điện thoại OS 4.0 trở lên hỗ trợ MIDP 2.0
Các chức năng này được thực hiện bởi phần mềm BES1, phần mềm này là một phần của hệ điều hành Một phiên bản cải tiến của BES là BIS2 Nó cho phép người dùng truy cập Internet Ngoài ra, người dùng còn có thể sử dụng các giao thức POP33, IMAP4 và truy cập Outlook E-mail mà không cần truy cập thông qua BES khi sử dụng BIS BIS là một dịch vụ được điều hành bởi RIM, được cung cấp thông qua các nhà
Trang 15Chương 1: Tổng quan hệ điều hành Research In Motion
cung cấp dịch vụ di động Các phiên bản cập nhật có thể được tải thông qua dịch vụ tải OTASL5 cung cấp bởi hệ điều hành BlackBerry
Hình 1.1 - Cấu trúc mạng của Blackberry (Nguồn: BlackBerry OS Report - Josh Schiffman)
Mặc dù hệ điều hành BlackBerry là một hệ điều hành đóng, nhưng nó cung cấp một thư viện giao diện lập trình ứng dụng(Application Programming Interface – API) Các nhà lập trình có thể sử dụng các API này để biết chương trình ứng dụng cho BlackBerry
1.1.2 Nhập liệu trên Research In Motion OS:
Hệ điều hành Research In Motion được sử dụng cho các máy của chính hãng là BlackBerry Vì vậy đều được sử dụng các phương thức nhập liệu sau:
di chuyển trackwheel Chọn ứng dụng hay mở menu ứng dụng bằng cách nhấp vào Trackwheel
Trang 16Chương 1: Tổng quan hệ điều hành Research In Motion
Hình 1.2 - Trackwheel trên máy BlackBerry 8700
(Nguồn: www.gsmarena.com)
Trackball:
Được sử dụng từ dòng máy 8100, và các dòng máy 8300, 8800, 8900, 9000,
9600 Trackball là một viên bi nằm ở chính giữa máy Người dùng có thể cuộn viên bi lên xuống và qua trái, qua phải để di chuyển trong giao diện người dùng Nhấn vào trackball để chọn và mở menu của ứng dụng
Hình 1.3 - Trackball trên điện thoại BlackBerry Pearl 8100
Trang 17Chương 1: Tổng quan hệ điều hành Research In Motion
Hình 1.4 - Trackpad trên điện thoại Blackberry Bold 9700
(Ngồn www.GSMArena.com)
Touchscreen:
Touchscreen là kiểu nhập liệu được sử dụng cho các máy có màn hình cảm ứng như dòng điện thoại 9500 Người dùng có thể dùng tay hoặc bút cảm ứng để chọn trực tiếp trên màn hình cảm ứng này
Hình 1.5 - Touchscreen trên điện thoại Blackberry Storm 9500
Trang 18Chương 1: Tổng quan hệ điều hành Research In Motion
đổi và sắp xếp lại các ký tự trên bàn phím, và bàn phím kiểu QWERTY ra đời Kiểu bàn phím này đuợc sử dụng rộng rãi cho các máy đánh chữ và máy tính ngày nay
Research In Motion đã ứng dụng kiểu bàn phím này vào điện thoại của mình Giúp người dùng có thể nhập liệu bằng cả 2 tay và nhập liệu nhanh hơn Kiểu bàn phím này đươc sử dụng trên hầu hết các điện thoại của BlackBerry, trừ các loại điện thoại cảm ứng và các dòng sử dụng bàn phím SureType
Hình 1.6 - Bàn phím QWERTY trên máy BlackBerry Curve 8900
(Nguồn: ecvv.com)
Một số điện thoại được phân phối ở Bỉ hoặc Pháp còn sử dụng bàn phím
AZERTY, một phiên bản khác của kiểu bàn phím QWERTY cho những người sử dụng ngôn ngữ Bỉ hay Pháp
Hình 1.7 - Bàn phím AZERTY Trên máy BlackBerry Curve 8900
(Nguồn: www mepodphone.net)
Bàn phím SureType:
Bàn phím SureType là kiểu bàn phím dựa vào kiểu bàn phím QWERTY,
nhưng thiết kế 2 ký tự trên 1 phím, giúp cho bàn phím SureType trở nên nhỏ gọn hơn
Trang 19Chương 1: Tổng quan hệ điều hành Research In Motion
so với bàn phím QWERTY nhưng vẫn đáp ứng được nhu cầu nhập liệu nhanh của
người sử dụng BlackBerry
Bàn phím SureType còn trang bị cho người dùng một từ điển khoảng 35.000
chữ tiếng Anh, giúp cho người dùng có thể gõ nhanh hơn bằng chế độ gõ chữ thông
minh Ngoài ra, các dòng điện thoại sử dụng bàn phím SureType còn có chức năng tự
động học và nhớ những từ người dùng để nhập liệu để thêm vào bộ tự điển, giúp
người dùng nhập liệu nhanh hơn
Bàn phím SureType được sử dụng cho các điện thoại như Pearl 8100, 8110,
T-Mobile[3] AT&T[4] Bell[5] Rogers[6] Telus[7] Verizon[8] Sprint[9]
Trang 20Chương 1: Tổng quan hệ điều hành Research In Motion
5.0.0.624 (05/04/2010)
Trang 21Chương 1: Tổng quan hệ điều hành Research In Motion
1.3 Giới thiệu Research In Motion OS 5.0:
Do ứng dụng gởi và nhận mail trên điện thoại Blackberry được viết để chạy
trên nền tảng hệ điều hành Research In Motion phiên bản 5.0, sau đây là một số sơ
lược về phiên bản này
Sự ra đời và phát triển mạnh mẽ của dòng điện thoại thông minh đã tạo ra môi
trường phát triển ứng dụng mới Trong đó sự phát triển mạnh mẽ của dòng điện thoại
cảm ứng thúc đẩy sự ra đời của các dòng máy, hệ điều hành tiên tiến hơn, có thể đáp
ứng được nhu cầu phát triển của thị trường
Research In Motion đã cho ra đời phiên bản OS 5.0, được phát triển cho các
dòng điện thoại BlackBerry Pearl Flip 8200, Curve 8350i, 8330, 8520 và 8900, Bold
9000, Storm 9530 và Tour 9630 Sự ra đời của hệ điều hành phiên bản mới này đánh
dấu bước phát triển mạnh mẽ của hãng và hệ điều hành với các tính năng hỗ trợ màn
hình cảm ứng, và các tính năng mạnh mẽ khác hỗ trợ tốt hơn cho người dùng
Trang 22Chương 1: Tổng quan hệ điều hành Research In Motion
Hình 1.10 - Giao diện Research In Motion OS 5.0
xa, chuyển lịch công việc và kết nối mạnh mẽ Ngoài ra, với các tính năng hỗ trợ màn hình cảm ứng, giao diện hoàn toàn mới và tiện dụng cho người dùng, Phiên bản hệ điều hành Research In Motion 5.0 đánh dấu một bước phát triển mạnh mẽ, đáp ứng nhu cầu của người sử dụng và cả lập trình viên
Đặc điểm nổi bật:
o Hỗ trợ các chức năng dành cho thiết bị có màn hình cảm ứng
o Khả năng kết nối và thể hiện website mạnh mẽ
o Kết nối và quản lý văn bản từ xa
o Giao diện mới thân thiện và tiện dụng cho người dùng
7
Aynchoronous Java Script And XML
Trang 23Chương 2: Blackberry Mobile
Chương 2: BlackBerry Mobile
2.1 Tổng quan về BlackBerry Mobile:
2.1.1 Khái niệm về BlackBerry Mobile:
BlackBerry là tên gọi chung của một thiết bị di động được phát triển bởi công
ty Research In Motion(RIM) có trụ sở chính tại Canada Ngoài các tính năng thông thường của một thiết bị thông minh như sổ địa chỉ, lịch công việc.v.v BlackBerry còn được biết đến như một thiết bị hỗ trợ mạnh mẽ cho việc gởi và nhận mail ở bất kì đầu, miễn là nó có thể kết nối với mạng di động
BlackBerry hiện nay chiếm hơn 20% thị trường thiết bị cầm tay thông tin(hay còn gọi là smart phone) Với nhiều đặc tính nổi trội như khả năng bảo mật cao, hỗ trợ gởi và nhận mail một cách mạnh mẽ, có thể kết nối ở khắp mọi nơi.v.v BlackBerry đã trở thành thiết bị cầm tay thông minh phổ biến nhất đối với các doanh nhân ở thị trường Mỹ
2.1.2 Lịch sử phát triển:
Thiết bị Blackberry xuất hiện đầu tiên vào năm 1999 chỉ đơn thuần là một máy nhắn tin di động(Pager) Chiếc máy có số hiệu 850 sử dụng 2 pin AA, có một số chức năng cơ bản như truy cập Internet, lịch hẹn, sắp xếp và quản lý công việc.v.v Ở thời điểm các thiết bị di động đều rất lớn và không có nhiều chức năng như bấy giờ, 850 được đón nhận như một trong những thiết bị thành công nhất thời điểm đó, và rất được các doanh nhân ưa chuộng
Vào năm 2002, các thiết bị phổ biến hơn của BlackBerry ra đời, hỗ trợ push mail, gọi điện thoại di động, nhắn tin, fax, duyệt web và một số ứng dụng mạng khác Lúc này thiết bị khá giống với hình dạng các điện thoại phổ biến bây giờ Được cung cấp pin lithium có thể sạc, dung lượng bộ nhớ và tốc độ xử lý cũng cải tiến hơn rất nhiều
e-Mặc dù hầu hết các điện thoại dòng 5000 và 6000 của Blackberry đều hướng vào thị trường mạng GSM8 Nhưng với sự phát triển của Sprint và Verizon trên nền tảng mạng CDMA9 ở thị trường Mỹ, vào năm 2003 RIM đã phát tirển BlackBerry
6750 cho mạng của Verizon Kế tới là các phiên bản dòng 7200, điển hình là dòng sản phẩm 7250, được phân phối qua Sprint và Verizon Đây là thiết bị đầu tiên của
Trang 24Chương 2: Blackberry Mobile
7250 được thiết kế cho mạng CDMA Riêng 7270 thật chất là một thiết bị WLAN, không hoạt động dựa trên mạng di động mà được sử dụng cho mục đích gọi VoIP10 Dòng điện thoại 7500 sau đó được thiết kế cho mạng di động iDEN của Motorola
Có thể nói, bàn phím QWERTY là biểu tượng của Blackberry Tuy nhiên, một
số người lại cho rằng thiết bị full QWERTY lại quá cồng kềnh, và họ ưa chuộng dòng thiết bị mỏng và nhẹ hơn Chính vì điều này, RIM đã phát triển và phân phối 7100t thông qua mạng T-Mobile vào cuối năm 2004, sử dụng bàn phim SureType – kiểu bàn phím với 2 ký tự cho mỗi phím
Dòng thiết bị sử dụng bằng phím SureType thật sự được biết đến rộng rãi với
sự ra đời của phiên bản 8100 vào năm 2006, hay còn gọi là BlackBerry Pearl Với thay đổi lớn chính là một viên bi cuộn ở giữa(được gọi là Trackball) được thay thế cho thanh cuộn bên hông(được gọi là Trackwheel) của những dòng sản phẩm trước Ban đầu, Pearl được thiết kế hỗ trợ mạng GSM, nhưng vào cuối 2007, Pearl 8130 được phát triển cho mạng CDMA
Sau một loạt sản phẩm với bàn phím cải tiến SureType, BlackBerry lại cho ra đời dòng sản phẩm 8700 với kiểu bàn phím QWERTY, sản phẩm này là một trong những sản phẩm bán chạy nhất của BlackBerry 8700 được phát triển với 3 dòng sản phẩm, một cho mạng GSM với EDGE11, một cho mạng GSM không sử dụng
EDGE(phổ biến ở các nước Anh, Ý, Hồng Kông, Singapore, W-CDMA12 ở Nhật), và một dòng sản phẩm khác sử dụng cho mạng CDMA
Vào ngày 12/2/2007, Blackberry bắt đầu phân phối 8800, sản phẩm GSM bán chạy nhất tại thời điểm lúc bấy giờ Đây là thiết bị với kiểu bàn phím QWERTY kết hợp với viên bi Trackball của dòng sản phẩm 8100 Vài tháng sau dòng sản phẩm
8830 được phân phối thông qua Verizon, sử dụng mạng CDMA Và sau đó dòng sản phẩm 8820 ra đời đây là sản phẩm sử dụng Wifi đầu tiên của BlackBerry
Vào tháng 5/2007 BlackBerry lại tiếp tục giới thiệu dòng sản phẩm
BlackBerry 8300, hay còn gọi là BlackBerry Curve Đây là sản phẩm đầu tiên của BlackBerry có tích hợp camera, sản phẩm này cũng được phân phối ở nhiều mạng khác nhau như GSM hay CDMA
BlackBerry đã và đang phát triển cho tới tận ngày nay Với nhiều sản phẩm cải tiến theo từng năm cụ thể, với nhiều kiểu dáng khác nhau như nắp gập, nắp trượt, cảm ứng.v.v BlackBerry đã và đang dần khẳng định vị thế là một trong những sản phẩm thiết bị cầm tay thông minh mạnh và hiệu quả nhất
Trang 25Chương 2: Blackberry Mobile
2.2 Một số vấn đề khi xây dựng ứng dụng trên BlackBerry:
2.2.1 Java trên BlackBerry:
Ứng dụng trên Blackberry có thể được phát triển bằng ngôn ngữ Java, cụ thể là J2ME13 như các thiết bị di động có hỗ trợ Java khác Ngoài ra, Research In Motion còn cung cấp cho những người phát triển ứng dụng một bộ API14 bao gồm các hàm và các câu lệnh hỗ trợ việc lập trình trên điện thoại BlackBerry
API của BlackBerry bao gồm các lớp, các hàm hỗ trợ cho việc phát triển ứng dụng trên BlackBerry, bao gồm:
Brower: trong bộ net.rim.blackberry.api , hỗ trợ các thao tác về trình duyệt web
và tạo trang web
Invoke: trong bộ net.rim.blackberry.api, hỗ trợ truy cập vào các ứng dụng sẵn
có của máy như mail, task, memo.v.v
Mail:Hỗ trợ các thao tác về mail như đọc, soạn mail và gởi mail
Phone: Hỗ trợ các thao tác về nghe và nhận cuộc gọi
Pdap: Hỗ trợ thao tác cho các ứng dụng PDA như công việc, lịch, sổ địa
chỉ.v.v
API về thiết bị ngoại vi như bluetooth, pin, ui.v.v
API hỗ trợ việc mã hóa, lưu trữ khóa, giải mã.v.v
2.2.2 Chu kì sống của một chương trình BlackBerry:
Chương trình được bắt đầu ở trạng thái tạm dừng(Pause), lắng nghe các thông điệp mà người dùng có thể tương tác trong chương trình Khi có một thông điệp mà chương trình có thể quản lý, chương trình sẽ chuyển sang trạng thái hoạt
động(Active), sau khi thực hiện xong, chương trình lại quay về trạng thái tạm dừng
Chương trình kết thúc(Destroyed) khi người dùng chọn thoát chương trình Quá trình lắng nghe diễn ra liên tục
Trang 26Chương 2: Blackberry Mobile
Hình 2.1 - Chu kỳ sống của chương trình BlackBerry (Nguồn: BlackBerry OS Report - Josh Schiffman)
2.2.3 Môi trường lập trình BlackBerry:
Về cơ bản, người dùng có thể sử dụng bất kỳ môi trường nào để lập trình ứng dụng java cho BlackBerry BlackBerry còn cung cấp cho người dùng một số môi trường lập trình như sau để hỗ trợ thêm về API của BlackBerry
BlackBerry JDE15: Đây là chương trình cần thiết khi lập trình BlackBerry, nó cung cấp môi trường, máy ảo và các API cần thiết để lập trình BlackBerry Bộ lập trình này yêu cầu JRE16 và JDK17 1.6 để chạy Bộ lập trình này bao gồm:
o Một bộ tra cứu về API của BlackBerry và java
o Máy ảo giả lập để chạy và phát triển ứng dụng
o Giả lập MDS
o Một số chương trình mẫu
o Khả năng tạo code file để đưa ứng dụng vào máy Blackberry
o Công cụ ký(sign) code để phát triển ứng dụng trên môi trường máy thực
Trang 27Chương 2: Blackberry Mobile
Rapid Application Development tools for BlackBerry(MDS Studio 2.0): Môi trường này cung cấp cho người phát triển ứng dụng khả năng phát triển các ứng dụng khác nhau như mạng, cơ sở dữ liệu.v.v
BlackBerry Plug-in cho Microsoft Visual Studio: Đây là Plug-in dành cho Visual Studio của Microsoft Cung cấp khả năng phát triển ứng dụng
BlackBerry qua môi trường Visual Studio Tuy nhiên, Plug-in này hiện nay không được Research In Motion phát triển tiếp
NetBeans19: Người dùng có thể sử dụng Netbeans để lập trình ứng dụng
BlackBerry
Hình 2.2 - Các công cụ lập trình MDS trên BlackBerry (Nguồn: BlackBerry OS Report - Josh Schiffman)
2.2.4 Máy ảo BlackBerry:
BlackBerry cung cấp cho người dùng một bộ máy ảo gần như hoàn chỉnh về các tính năng để người dùng có thể chạy thử và phát triển ứng dụng trên BlackBerry
Tất cả các dòng máy đã sản xuất của Research In Motion đều có một máy ảo với chức năng và hình dáng tương đương
Máy ảo BlackBerry bao gồm tất cả các tính năng của một máy BlackBerry thông thường, bao gồm kết nối mạng di động và mạng máy tính, chế độ Holster20, chế
Trang 28Chương 2: Blackberry Mobile
Hình 2.3 - Máy ảo 9530 của BlackBerry (Nguồn: www.Blackberry.com)
2.2.5 Ký (sign) chương trình BlackBerry:
Mặc dù người phát triển ứng dụng có thể tự do phát triển ứng dụng cho
BlackBerry Tuy nhiên, khi sử dụng API của BlackBerry cung cấp, Research In
Motion cần phải theo dõi một số chương trình nhạy cảm sử dụng các API liên quan tới việc bảo mật và quản lý các thông tin nằm trong máy Các hàm về bảo mật và quản lý trong BlackBerry API đều bị khóa, và yêu cầu phải được ký trước khi sử dụng trên máy thật
Một số API như các API về mã hóa, bảo mật bắt buộc phải được Research In Motion ký trước khi sử dụng Điều này giúp cho người dùng có thể sử dụng các
chương trình được phát triển mà không phải lo về các vấn đề mã hóa và bảo mật của mình
Một số chương trình sử dụng MIDP21 để truy cập vào máy cần được ký để xác minh ứng dụng này an toàn Khi được ký, chương trình sẽ không xuất hiện các cảnh báo cho người dùng khi chương trình sử dụng các kết nối file, kết nối mạng cũng như truy cập dữ liệu trong máy nữa
21
Mobile Information Device Profile
Trang 29Chương 2: Blackberry Mobile
Các gói cần phải ký trước khi sử dụng là:
vào trình duyệt của BlackBerry
vào các ứng dụng có sẵn của BlackBerry như lịch công việc, tin nhắn, sổ ghi chép và các ứng dụng
về mạng điện thoại
phần mềm tin nhắn của BlackBerry để gởi, nhận và đọc tin nhắn E-mail
nghe, quản lý các sự kiện liên quan tới mail
có thể thêm các menu vào chương trình BlackBerry
thêm các tùy chọn của chương trình vào danh sách tùy chọn có sẵn của máy BlackBerry
vào chương trình quản lý thông tin người dùng của Blackberry như sổ địa chỉ, công việc, lịch
Javax.mircoedition.pim
các tính năng của các ứng dụng phone
Trang 30Chương 2: Blackberry Mobile
bảo mật, mã hóa, chữ ký điện tử, chứng thực dữ liệu và quản lý chứng thực
một hay nhiều địa chỉ tới trình duyệt web của BlackBerry
Bảng 2.1 - Các gói API cần phải ký trước khi sử dụng
(Nguồn:BlackBerry API references)
Các gói kể trên sẽ hoạt động bình thường trên máy ảo khi phát triển ứng dụng
Tuy nhiên, chương trình cần phải ký trước khi sử dụng trên máy thật
Để ký cho chương trình của mình, người phát triển ứng dụng cần truy cập vào
địa chỉ: http://na.blackberry.com/eng/developers/javaappdev/codekeys.jsp và điền đầy
đủ vào: https://www.blackberry.com/SignedKeys/ Sau khi trả phí cho Research In
Motion, người phát triển ứng dụng sẽ chờ để lấy chữ ký và ký cho ứng dụng của
mình Sau đó người phát triển ứng dụng có thể triển khai trên máy thật
Trang 31Chương 3: Lập trình với Blackberry API
Chương 3: Lập trình với BlackBerry API
3.1 BlackBerry API:
Ngoài việc hỗ trợ các gói thư viện MIDLET của các ứng dụng Java trên di động, BlackBerry còn bổ sung rất nhiều thư viện đặc biệt chỉ sử dụng trên RIM OS
Các gói thư viện này có tên bắt đầu net.rim.* Hướng dẫn sử dụng của các thư
viện này được miêu tả cụ thể trong BlackBerry JDK API References (nằm trong bộ SDK của BlackBerry) Trong nội dung của báo cào này chỉ xin giới thiệu một số lớp được sử dụng trong xây dựng chương trình
3.1.1 Lập trình giao diện trên BlackBerry:
BlackBerry API cung cấp cho người dùng các lớp cơ bản nhất để lập trình ứng dụng có giao diện tương tác người dùng Bao gồm các control cơ bản nhất của lập trình giao diện như button, listbox, combobox, textfield.v.v
Các lớp API này đều cho phép kế thừa để người phát triển ứng dụng có thể tùy biến tùy vào mục đích sử dụng của mình
Trong đó:
<host>: đường dẫn tới server
<port>: port kết nối tới server
<path>: đường dẫn thư mục trên server
<optional parameters>: Các tham số mở rộng, bao gồm:
o Deviceside: Cho biết kết nổi được kết nối trực tiếp qua TCP hay qua proxy TCP Deviceside=true nếu kết nối trực tiếp qua TCP, deviceside=false nếu kết nối thông qua proxy TCP
o Interface: interface=wifi cho biết kết nối wifi được mở
o Apn: một kết nối thông qua APN được tạo ra
Trang 32Chương 3: Lập trình với Blackberry API
o TunnelAuthUsername: tên truy cập để kết nối tới APN
o TunnetAuthPassword: mật khẩu để kết nối tới APN
Kết nối bằng SSL 24
/TLS 25 :
Lớp Connector mở một kết nối TLS hay SSL bằng câu lệnh sau:
Connector.open("tls://<host>:<port>/<path>[<optional parameters>]");
Hay
Connector.open("ssl://<host>:<port>/<path>[<optional parameters>]");
Trong đó:
<host>: đường dẫn tới server
<port>: port kết nối tới server
<path>: đường dẫn thư mục trên server
<optional parameters>: Các tham số mở rộng, bao gồm:
o Deviceside: Cho biết kết nổi được kết nối trực tiếp qua TCP hay qua proxy TCP Deviceside=true nếu kết nối trực tiếp qua TCP, deviceside=false nếu kết nối thông qua proxy TCP
o Interface: interface=wifi cho biết kết nối wifi được mở
o Apn: một kết nối thông qua APN được tạo ra
o TunnelAuthUsername: tên truy cập để kết nối tới APN
o TunnetAuthPassword: mật khẩu để kết nối tới APN
Kết nối SSL/TLS có thể thực hiện thông qua 2 chế độ:
Chế độ proxy: Dịch vụ dữ liệu điện thoại( Mobile Data Service – MDS) của BlackBerry Enterprise Server(BES) cung cấp TLS/SSL như một hỗ trợ cho thiết bị Mọi giao tiếp thông qua internet giữa BES và Web server được mã hóa sử dụng TLS Giao tiếp thông qua mạng diện rộng giữa thiết bị và BES không được mã hóa bởi TLS/SSL, nhưng vẫn được
mã hóa bằng thuật toán TripleDES Dữ liệu TLS được giải mã tại MDS
và mã hóa lần nữa bằng TripleDES
Chế độ proxy: Dịch vụ dữ liệu điện thoại( Mobile Data Service – MDS) của BlackBerry Enterprise Server(BES) cung cấp TLS/SSL như một hỗ trợ cho thiết bị Mọi giao tiếp thông qua internet giữa BES và Web server được mã hóa sử dụng TLS Giao tiếp thông qua mạng diện rộng giữa thiết bị và BES không được mã hóa bởi TLS/SSL, nhưng vẫn được
mã hóa bằng thuật toán TripleDES Dữ liệu TLS được giải mã tại MDS
và mã hóa lần nữa bằng TripleDES
Trang 33Chương 3: Lập trình với Blackberry API
3.1.2.2 javax.microedition.io.SocketConnection interface và javax.microedition.io.StreamConnection interface:
Hình 2.4 – Sơ đồ biểu diễn mới quan hệ giữa các lớp Connection
2 lớp này cung cấp kết nối socket giữa thiết bị và server Đồng thời nó còn cung cấp một dữ liệu InputStream và dữ liệu OutputStream để quản lý quá trình gởi/nhận của kết nối đó
Khi dữ liệu InputStream hay OutputStream bị đóng, nó chỉ có thể được
mở lại bằng lệnh gọi Connector.open()
3.1.2.3 net.rim.device.api.crypto.tls.tls10.TLS10Connection:
Lớp này có thể tạo ra một kết nối TLS1.0 trực tiếp thông qua kết nối thông thường(ví dụ như TCP) Ngoài ra lớp này còn có chức năng định hướng kết nối là kết nối TLS nếu sử dụng kết nối thông thường
3.1.3 Lưu trữ thông tin trên BlackBerry:
Thông tin trên BlackBerry được lưu trữ thông qua 2 lớp hỗ trợ là
PersistentObject và PersistentStore:
- PersistentObject: Lớp nãy hỗ trợ lưu trữ dữ liệu của chương trình trên thiết bị Dữ liệu này sẽ không bị mất sau mỗi lần thiết bị khởi động lại
o Để xác định dữ liệu cần lưu trữ, ta sử dụng câu lệnh
setContents(“Dữ liệu cần lưu trữ”)
o Để lưu trữ dữ liệu, ta sử dụng câu lênh commit() hoặc
forcecommit()
- PersistentStore: Lớp này hỗ trợ lưu trữ dữ liệu đã được xác định trong PersistentObject vào dữ liệu của thiết bị và lưu trữ
Trang 34Chương 3: Lập trình với Blackberry API
3.1.4 Lập trình truy cập các ứng dụng có sẵn trên BlackBerry:
Blackberry API cung cấp cho người phát triển ứng dụng khả năng truy cập và lấy dữ liệu trong thiết bị Blackberry như tin nhắn, danh bạ điện thoại, lịch làm việc, sổ ghi nhớ.v.v
Việc truy cập các dữ liệu trong thiết bị BlackBerry kể trên được thông qua các lớp trong nhóm lớp net.rim.blackberry.api.pdap Nhóm lớp này cung cấp các lớp ứng với các ứng dụng có sẵn trên BlackBerry:
- Lớp BlackBerryContact, BlackBerryContactGroup,
BlackBerryContactList: Cung cấp cho người dùng khả năng truy cập các thông tin trong danh bạ điện thoại của máy, bao gồm các thông tin về tên, E-mail, địa chỉ, số điện thoại.v.v tương ứng với các trường đã được định nghĩa sẵn trong 2 lớp này
- Lớp BlackBerryEvent và BlackBerryEventList: Cung cấp cho người dùng khả năng truy cập các lịch hẹn trên lịch của thiết bị
- Lớp BlackBerryMemo và BlackBerryMemoList: Cung cấp cho người dùng khả năng truy cập dữ liệu lưu trữ sổ ghi nhớ của BlackBerry
- Lớp BlackBerryToDo và BlackBerryToDoList: Cung cấp cho người dùng khả năng truy cập dữ liệu về lịch làm việc của thiết bị
- Ngoài ra nhóm lớp này còn cung cấp cho người dùng các lớp dùng để lắng nghe và quản lý các sự kiện lên quan tới sổ địa chỉ, lịch công việc và sổ ghi nhớ của BlackBerry
3.1.5 Lập trình sự kiện trên BlackBerry:
BlackBerry API cung cấp cho người phát triển ứng dụng khả năng lập trình sự kiện Người dúng có thể lắng nghe các sự kiện từ việc nhập liệu Kiểm tra các sự kiện
đó thuộc về phần nào của ứng dụng để quản lý
3.2 Mail API trên BlackBerry:
Điểm đặc biệt của BlackBerry API là cung cấp đầy đủ các lớp cần thiết để quản
lý thông tin của một cấu trúc Mime, Các lớp này được chứa trong gói thư viện net.rim.device.api.mime.* và net.rim.blackberry.api.mail.*
3.2.1 Gói net.rim.device.api.mime.*:
Multipurpose Internet Mail Exntensions(MIME) là một chuẩn được định nghĩa
để lưu trữ e-mail, hỗ trợ các loại định dạng khác nhau như văn bản, hình ảnh, âm
thanh, video.v.v
Vì mail gởi qua các server thường được mã hóa và đóng gói Nhóm lớp mime cung cấp các lớp lưu trữ dữ liệu giao tiếp giữa mail server và thiết bị để lưu trữ dữ liệu mail đã được đóng gói Bao gồm MIMEInputStream để đọc dữ liệu đã được mã
Trang 35Chương 3: Lập trình với Blackberry API
hóa theo chuẩn MIME26 Và MIMEOutputStream dùng để ghi dữ liệu mã hóa theo chuẩn MIME:
Trang 36Chương 4: Các giao thức trong gởi nhận E-mail
Do tầm quan trọng và thực tế của việc trao đổi thư điện tử, đến tháng 11 năm
1981, một giao thức mới được thiết kế riêng biệt cho việc gửi thư điện tử ra đời, đó là giao thức SMTP (Simple Mail Transfer Protocol) Ban đầu giao thức SMTP chỉ truyền những thư dạng văn bản theo chuẩn ARPAnet (định nghĩa trong RFC 733)
Đến tháng 8 năm 1982, 2 tài liệu RFC 821 và 822 được công bố, phát triển các tính năng cho giao thức SMTP
Từ đó đến nay, mặc dù có nhiều tài liệu mới nhưng chủ yếu là bổ sung vào tài liệu chuẩn RFC 821 và RFC 822 Có thể ghi nhận một số thay đổi đáng chú ý của giao thức SMTP, đó là RFC 1425 được công bố tháng 2 năm 1993
RFC 1425 bổ sung khả năng mở rộng cho SMTP và có tên là ESMTP (SMTP Service Extensions hoặc Extended SMTP hoặc Enhenced SMTP)
RFC 1425 tiếp tục được sửa thành RFC 1651 (6/1994) và RFC 1869 (11/1995) Các bổ sung về trao đổi kênh liên lạc và kích thước thư được định nghĩa trong những lần sửa đổi này
Một cột mốc đáng ghi nhận trong quá trình phát triển của giao thức SMTP là 2 tài liệu RFC 2821 và RFC 2822 được công bố tháng 4 năm 2001 RFC 2821 kết hợp chặt chẽ những đặc điểm của giao thức trong RFC 821 và RFC 1869, và hiện là tài liệu chuẩn của giao thức SMTP Các tài liệu khác tiếp theo hỗ trợ các cơ chế truyền an toàn, truyền tập tin kích thước lớn,
4.1.2 Tổng quan:
SMTP là giao thức truyền thư tín đơn giản, một chuẩn truyền thư điện tử qua mạng Internet dựa trên văn bản (text-based) Bên gửi và bên nhận lần lượt dùng các chuỗi lệnh và các thông tin cần thiết trao đổi qua một kênh truyền tin cậy (reliable
27
Simple Mail Transfer Protocol
Trang 37Chương 4: Các giao thức trong gởi nhận E-mail
channel) thông thường là TCP SMTP sử dụng cổng 25 cho kết nối thông thường và
465 (hoặc 587) cho các kết nối an toàn sử dụng SSL hoặc TLS
Một phiên (session) trao đổi SMTP được bắt đầu từ khi client kết nối thành công đến server và client thực hiện thành công lệnh HELO Sau khi thiết lập kết nối, server sẵn sàng lắng nghe các lệnh từ client gửi tới Client nên gửi lời chào HELO đến server, server sẽ đáp lại bằng mã 250 Nếu sử dụng EHLO thay thế thì kết quả trả về
là một danh sách các khả năng mà server hỗ trợ Sau câu lệnh trên, một phiên
(session) trao đổi giữa client và server được bắt đầu
Hình 4.1- Quá trình trao đổi dữ liệu trong giao thức SMTP
Trang 38Chương 4: Các giao thức trong gởi nhận E-mail
Hình 4.2 - Giao tác giữa Client và Server trong giao thức SMTP
(Nguồn: www.TCPIPGuide.com )
Một số đặc điểm và sự mở rộng của giao thức SMTP:
Ngoài chức năng cơ bản là gửi thư, giao thức SMTP còn được sử dụng vào một
số mục đích bên phía máy chủ như :
Chuyển tiếp thư (Mail relaying)
Chuyển thư (Mail forwarding): Nhận thư và chuyển tới một địa chỉ thích hợp
Cổng thư (Mail gatewaying): Máy chủ SMTP có thể được cấu hình thành một cổng thư có nhiệm vụ chuyển đổi e-mail TCP/IP thành một dạng tương thích với các hệ thống thư điện tử khác và ngược lại
Kiểm tra địa chỉ (Address Debugging): lệnh VRFY của giao thức SMTP có thể dùng để kiểm tra tính xác thực của một địa chỉ mail mà không cần phải gửi mail đến địa chỉ đó
Mở danh sách địa chỉ (Mailing list expansion): lệnh EXPN trong giao thức SMTP có thể được dùng để quyết định xem các địa chỉ mail có gắn với danh sách các địa chỉ mail không
Các định nghĩa mở rộng của SMTP: khi sử dụng ESMTP với lệnh EHLO, kết quả trả về từ server có thể bao gồm các khả năng mở rộng sau:
Trang 398-Chương 4: Các giao thức trong gởi nhận E-mail
nội dung của thư có dạng MIME
trạng thái chuyển thư
RFC
1891
Cho phép SMTP bên gửi yêu cầu SMTP bên nhận cung cấp thông tin khi xảy ra lỗi trong quá trình chuyển thư cho bên nhận
thước thư
RFC
1870
SMTP bên gửi có thể báo cho SMTP bên nhận biết kích thước thư sẽ gửi và bên nhận có thể quyết định nhận hay không
3207
Bảng 4.1 Các định nghĩa mở rộng của SMTP
Vấn đề an toàn trong trong SMTP:
Một số cơ chế an toàn được sử dụng trong giao thức SMTP:
Kiểm tra địa chỉ IP của thiết bị muốn kết nối tới SMTP server
Hạn chế lệnh được sử dụng, chẳng hạn một số lệnh chỉ được thực hiện sau khi
đã được chứng thực hoặc kênh truyền đã được thiết lập an toàn bằng SSL hoặc TLS
Hạn chế việc sử dụng lệnh EXPN để ngăn chặn các người dùng chưa được chứng thực vẫn truy cập được vào server
Giới hạn kích thước thư và số lượng thư được gửi trong một khoảng thời gian
4.1.3 Các lệnh hỗ trợ:
Lệnh HELO và EHLO:
- Cú pháp:
Trang 40Chương 4: Các giao thức trong gởi nhận E-mail
HELO <SP> <domain> <CRLF>
Hoặc EHLO <SP> <domain> <CRLF>
- Tham số: domain: tên miền bên gửi
- Ý nghĩa: Khởi tạo quá trình trao đổi giữa người dùng và server Giúp cho server biết được mình đang giao tiếp với ai Kết quả trả về thường nhiều dòng ứng với các khả năng mà server hỗ trợ bao gồm các cơ chế chứng thực, thiết lập kết nối an toàn, Kết thúc lệnh cả client và server đều ở trạng thái khởi tạo Hiện nay, hầu hết các máy chủ đều hỗ trợ ESMTP, do
đó ta nên thử gửi lệnh EHLO tới máy chủ trước thay vì lệnh HELO
- Ví dụ:
HELO mydomain.com Lệnh MAIL:
- Cú pháp:
MAIL <SP> FROM:<reverse-path> <CRLF>
- Tham số: reverse-path: chứa tên hộp thư người gửi
- Ý nghĩa: Lệnh MAIL sẽ khởi tạo một giao tác (transaction) - SMTP bên gửi báo cho SMTP bên nhận biết bên gửi muốn gửi thư và cung cấp địa chỉ e-mail cho bên nhận
- Tham số: forward-path: chứa tên hộp thư bên nhận
- Ý nghĩa: SMTP bên gửi cung cấp một địa chỉ e-mail của người nhận cho SMTP bên nhận
ký tự “\r\n.\r\n”
Lệnh RSET:
- Cú pháp:
RSET <CRLF>