Đồ án Phân tích và thiết kế hệ thống Quản lý email và các giao thức mail

ĐỒ ÁN:  
QUẢN LÝ EMAIL VÀ  
CÁC GIAO THỨC MAIL  
1.TỔNG QUAN.  
- Là dịch vụ rất phổ biến và thông dụng trong mạng Internet/Intranet và hầu như  
không thể thiếu được trong Internet/Intranet hiện nay. Tuy nhiên không phải là dịch vụ  
từ đầu - đến cuối” (end to end). Nghĩa là dịch vụ này không đòi hỏi hai máy tính gởi  
và nhận thư phải nối trực tiếp với nhau để thực hiện việc chuyển thư. Nó là dịch vụ  
kiểu lưu và chuyển tiếp (store and forward) thư được chuyển từ máy này sang máy  
khác cho tới khi máy đích nhận được. Người nhận cũng chỉ thực hiện một số thao tác  
đơn giản để lấy thư, đọc thư và nếu cần thì cho in ra. Cách liên lạc này thuận tiện hơn  
nhiều so với gởi thư thông thường qua bức điện hoặc Fax, lại rẻ và nhanh hơn. Cách  
thực hiện việc chuyển thư không cần phải kết nối trực tiếp với nhau để chuyển thư, thư  
có thể được chuyển từ máy này đến máy khác cho tới máy đích.. Giao thức truyền  
thống sử dụng cho hệ thống thư điện tử của Internet là SMTP(Simple Mail Transfer  
Protocol). Cơ chế hoạt động của thư điện tử(E-mail):  
2.GIAO THỨC SMTP(RFC821)  
- Mục đích của giao thức SMTP là truyền mail một cách tin cậy và hiệu quả. Giao  
thức SMTP không phụ thuộc vào bất kỳ hệ thống đặc biệt nào và nó chỉ yêu cầu trật tự  
của dữ liệu truyền trên kênh truyền đảm bảo tính tin cậy.  
User  
SMTP  
Commands / Replies  
Sender  
SMTP  
Receiver  
SMTP  
and Mail  
File  
File  
System  
System  
Sender - SMTP  
Receiver - SMTP  
Mô hình tổng quát sử dụng giao thức SMTP  
a. Ý nghĩa các lệnh SMTP:  
- Những lệnh SMTP định nghĩa sự truyền mail hay chức năng của hệ thống  
mail được yêu cầu bởi user. Những lệnh SMTP là những chuỗi ký tự kết thúc bằng  
<CRLF>. Bản thân mã lệnh là những ký tự chữ (alphabetic) kết thúc bởi <SP> nếu có  
những tham số theo sau và nếu không có thì <CRLF>. Cú pháp của những mailbox  
phải tuân theo những qui ước của receiver.  
HELLO (HELO)  
Lệnh này được dùng để xác định ra ai là người gởi mail. Vùng đối số chứa host  
name của bên gởi.  
Bên nhận định danh cho nó đối với sender thông qua việc bắt tay trả lời kết nối.  
Với lệnh này và sự trả lời OK để xác định rằng cả sender và reciever đang ở  
trạng thái khởi đầu, tất cả các bảng trạng thái và buffer đã được xoá sạch.  
MAIL  
Lệnh này được dùng để khởi tạo quá trình trao đổi mail mà ở đó mail data được  
phân phát tới một hay nhiều mailbox.  
RECIPIENT (RCPT)  
Lệnh này được sử dụng để định ra một người nhận mail, nhiều người nhận  
(cùng một nội dung mail) sẽ được xác định bằng cách gởi nhiều lệnh này.  
DATA  
Reciever sẽ xử lý những dòng theo sau lệnh khi mail data đến từ sender. Lệnh  
này tạo ra mail data để đặt vào mail data buffer. Mail data có thể chứa bất kỳ ký tự nào  
trong bộ mã ASCII. Mail data được kết thúc bởi một dòng mà nó chỉ chứa một dấu  
chấm “ .”  
SEND  
Lệnh này được dùng để khởi tạo sự truyền mail mà ở đó maildata sẽ được  
truyền đi tới một hay nhiều người nhận.  
SEND OR MAIL (SOML)  
Lệnh này được sử dụng để khởi tạo sự truyền mail mà ở đó mail data một hay  
nhiều người nhận hoặc các mailbox.  
RESET (RSET)  
Lệnh này xác định sự truyền mail hiện tại đã bị huỷ bỏ. Các sender, recipient,  
mail data đã lưu sẽ bị huỷ bỏ và tất cả các bảng trạng thái, các buffer bị xoá. Receiver  
phải gửi một reply OK.  
VERIFY (VRFY)  
Lệnh này yêu cầu receiver xác nhận đối số là định danh một user. Nếu nó là  
một user name, full name của user đó (nếu receiver biết) và mailbox đặc tả đầy đủ  
được trả về.Lệnh này không ảnh hưởng đến reverse-path buffer, forward-path buffer  
và data mail buffer.  
EXPAND (EXPN)  
Lệnh này yêu cầu receiver xác nhận đối số là một mailing list(danh sách địa  
chỉ) và trả về một thành phần trong danh sách đó. Full name của các user (nếu biết) và  
những mailbox đã xác định đầy đủ được trả về trong một reply gồm nhiều dòng.  
HELP  
Lệnh này cho receiver những thông tin giúp đỡ cho sender. Lệnh này có thể  
nhận một đối số (có thể là tên lệnh) và trả về thông tin chi tiết.  
Lệnh này không ảnh hưởng đến reverse-path buffer, forward-path buffer và data  
mail buffer.  
NOOP  
Lệnh này không ảnh hưởng các tham số hay các lệnh được đưa vào trước nó, nó  
đặc tả không có một hành động nào khác hơn là receiver gửi một reply OK. Lệnh này  
không ảnh hưởng đến reverse-path buffer, forward-path buffer và data mail buffer.  
QUIT  
Lệnh này định rõ receiver phải gửi một reply OK và sau đó đóng kênh truyền.  
Receiver sẽ không đóng kênh truyền cho đến khi nó nhận và trả lời cho lệnh QUIT  
(ngay cả nếu có một lỗi xảy ra).  
b. Cú pháp của các lệnh  
- Các lệnh bao gồm một mã lệnh theo sau là đối số của lệnh. Mã lệnh là 4 ký tự  
alphabetic. Không phân biệt chữ thường hoặc chữ hoa.  
- Giữa mã lệnh và đối số là một hoặc nhiều khoảng trắng. Tuy nhiên trong  
reverse-path và forward-path, kiểu chữ rất quan trọng. Đặc biệt, trên một số host, tên  
user cũng phân biệt kiểu chữ hoa và thường.  
- Đối số bao gồm một chuỗi ký tự có chiều dài biến đổi kết thúc bằng chuỗi ký tự  
“ <CRLF> “.  
- Dấu ngoặc vuông biểu diễn cho một vùng đối số tuỳ chọn.  
- Sau đây là những lệnh SMTP:  
HELO <SP> <domain> <CRLF>  
MAIL <SP> FROM:<reverse-path> <CRLF>  
RCPT <SP> TO:<forward-path> <CRLF>  
DATA <CRLF>  
RSET <CRLF>  
SEND <SP> FROM:<reverse-path> <CRLF>  
SOML <SP> FROM:<reverse-path> <CRLF>  
SAML <SP> FROM:<reverse-path> <CRLF>  
VRFY <SP> <string> <CRLF>  
EXPN <SP> <string> <CRLF>  
HELP [<SP> <string>] <CRLF>  
NOOP <CRLF>  
QUIT <CRLF>  
c. Ví dụ về một giao dịch của SMTP  
1. Server : 220 sample2 Simple Mail Transfer Service Ready  
khi được kết nối qua nghi thức TCP/IP, máy nhận trả lời với mã 220 đầu  
báo cho máy gởi biết dịch vụ SMTP đã sẵn sàng.  
2. Client : HELLO tmt01vn  
Bên nhận đã sẵn sàng, bên gởi gởi HELLO và xưng tên người gởi  
3. Server : 250 hello.  
Trả với mã 250 báo cho biết bên nhận đã sẵn sàng  
4. Client : MAIL FROM:<tmt01vn@tmt01vn.com>  
Bên gởi dùng lệnh MAIL để khởi động phiên giao dịch. Cú pháp như  
trên cho bên nhận biết địa chỉ bên gởi ( mailbox của bên gởi ) để bên nhận gởi  
thông báo lỗi nếu có về bên gởi  
5. Server : 250 OK  
Trả lời với mã 250 cho biết sẵn sàng  
6. Client : RCPT TO:<phungkhn@tmt01vn.com>  
7. Server: 250 OK  
8. Client : RCPT TO: phungkhn1@yahoo.com  
Muốn gởi cho bao nhiêu người dùng bấy nhiêu lệnh RCPT kèm theo địa  
chỉ nhận, bên nhận nếu đúng sẽ trả về mã 250 kèm theo OK  
9. Server : 550 No such user here  
Báo kèm theo mã 550 cho biết không có mailbox trên địa chỉ trên đối với  
nơi nhận  
10. Client : DATA  
Báo cho bên nhận biết dữ liệu bắt đầu từ sau từ DATA  
11. Server : 354 Start mail input; end with <CRLF>.<CRLF>  
Mã 354 báo cho biết đã sẵn sàng nhận mail, kết thúc mail với ký tự  
CRLF.CRLF  
12. Client : Bắt đầu thân của mail  
13. …v..v..  
14. Client : ( đến khi kết thúc nhấn CRLF.CRLF )  
15. Server : 250 OK  
16. Client : QUIT  
Phát lệnh báo kết thúc phiên giao dịch  
17. Server : 221 sample2 Service closing transmission channel  
Mã 221 đóng kết nối đã thiết lập  
Ví dụ trên sau phiên làm việc mail được gởi tới địa chỉ mail phungkhn@yahoo.com  
3. GIAO THỨC POP3(RFC1081, RFC1082)  
- Post Office Protocol Version 3 (Pop3) là một giao thức chuẩn trên internet cho  
phép một một workstation có thể truy xuất động đến một maildrop trên một server từ  
xa. Có nghĩa là Pop3 được dùng để cho phép workstation lấy mail mà server đang giữ  
nó.  
- Port chuẩn dành cho dịch vụ Pop3 đươc qui ước là TCP port 110. Pop3 server sẽ  
khởi động và lắng nghe trên port này. Một client muốn sử dụng các dịch vụ của Pop3  
thì nó phải thiết lập một kết nối tới Pop3 server. Khi kết nối được thiết lập thì Pop3  
server sẽ gởi tới client một lời chào. Sau đó, Pop3 Client và Pop3 Server sau đó trao  
đổi các request và reply cho đến khi kết nối được đóng hay loại bỏ.  
- Các lệnh trong Pop3 không phân biệt chữ thường và chữ hoa, bao gồm một tập từ  
khoá (chiều dài từ 3 đến 4 ký tự), có thể có hoặc không có đối số theo sau (chiều dài  
của đối số có thể lên đến 40 ký tự). Các từ khoá và đối số phân cách nhau bởi một ký  
tự trắng đơn, và không phải là các ký tự đặc biệt.  
- Các reply trong Pop3 bao gồm phần chỉ định trạng thái và từ khoá có thể có các  
thông tin hỗ trợ theo sau. Chiều dài của reply có thể lên tới 512 ký tự, kết thúc bằng  
cặp CRLF. Có hai loại chỉ định trạng thái là: “+OK” và “-ERR”. Server phải gởi các  
chỉ định trạng thái ở dạng chữ hoa.  
a. Các lệnh của POP3:  
Các lệnh có tác dụng trong quá trình xác nhận (authorization):  
USER username:  
+ Đối số username là một chuỗi định danh một mailbox, chỉ có ý nghĩa đối  
với server.  
+ Trả lời: +OK tên mailbox có hiệu lực.  
-ERR không chấp nhận tên mailbox.  
PASS string:  
+ Đối số là một password cho mailbox hay server.  
+ Trả lời: +OK khoá maildrop và sẵn sàng.  
-ERR password không hiệu lực.  
-ERR không được phép khoá maildrop.  
Các lệnh có tác dụng trong quá trình giao dịch (transaction):  
STAT:  
+ Không có đối số.  
+ Trả lời: +OK nn mm. “+OK” theo sau là khoảng trắng đơn, tiếp theo là nn:  
số message, khoảng trắng đơn, mm: kích thước của maildrop tính theo byte.  
+ Các message được đánh dấu xoá không được đếm trong tổng số.  
LIST [msg]:  
+ Đối số: số thứ tự của message, có thể không tham khảo tới các message đã  
được đánh dấu xoá.  
+ Trả lời: +OK scan listing follow.  
-ERR nosuch message.  
Một scan listing bao gồm số thứ tự message (message number) của message đó,  
theo sau là khoảng trắng đơn, và kích thước chính xác của message đó tính theo  
byte.  
RETR msg:  
+ Đối số: số thứ tự của message, có thể không tham khảo tới các message đã  
được đánh dấu xoá.  
+ Trả lời: +OK message follows  
-ERR no such message  
Trả lời của lệnh RETR là multi-line.  
DELE msg:  
+ Đối số: số thứ tự của message, có thể không tham khảo tới các message đã  
được đánh dấu xoá.  
+ Trả lời: +OK message deleted  
-ERR no such message  
Pop3 server sẽ đánh dấu xoá các message này. Tuy nhiên, quá trình xoá thật sự  
sẽ diễn ra ở trạng thái cập nhật (Update).  
NOOP:  
+ Không có đối số.  
+ Trả lời: +OK  
Pop3 server không làm gì hết, chỉ hồi âm lại cho client với trả lời: “+OK”.  
RSET:  
+ Không có đối số.  
+ Trả lời: +OK.  
Phục hồi lại các message đã bị đánh dấu xoá bởi Pop3 server.  
QUIT:  
+ Không có đối số.  
+ Trả lời: +OK.  
b. Ví dụ về một session của Pop3:  
Giai đoạn 1 : Nhận dạng user  
CLIENT : USER Tuyentm // cho biết tên user là Tuyentm  
SERVER : +OK // báo thành công  
CLIENT : PASS kimphung // cho biết password  
SERVER : +OK complet: maildrop has 2 messages ( 520 octets…)  
Giai đoạn 2 : Trao đổi  
CLIENT : STAT // số mail có trong mailbox  
SERVER : +OK 2 520 // có 2 mail với tổng kích thước là 520  
CLIENT : LIST // Liệt kê các ID và kích thước các mail  
SERVER : +OK 2 message ( 520 octets )  
SERVER : 1 110 // mail thứ 1 kích thước 110  
SERVER : 2 410 // mail thứ 2 kích thước 410  
CLIENT : LIST 1 // Cho thông tin về mail có ID là 1  
SERVER : +OK 1 110  
CLIENT : LIST 4  
SERVER : -ERR nosuch message, only 2 message in maildrop  
….v…v…  
Giai đoạn 3 :  
CLIENT : QUIT ; đóng kết nối TCP hiện hành  
SERVER : +OK dhbk POP3 server signing off…  
Chú ý rằng các message bị đánh dấu để xoá bằng lệnh DELE thực sự chưa bị  
xoá ngay để nếu sau đó ta có thể dùng lệnh phục hồi không xoá bằng lệnh RSET,  
chúng chỉ thực sự bị xoá bỏ khỏi maildrop khi bước vào giai đoạn Update ( khi gởi  
lệnh QUIT).  
4. GIAO THỨC IMAP4(RFC2060, RFC2193…)  
- Internet Message Access Protocol (IMAP) cung cấp lệnh để phần mềm thư điện tử  
trên máy khách và máy chủ dùng trong trao đổi thông tin phiên bản 4( IMAP4rev1).  
Đó là phương pháp để người dùng cuối truy cập thông điệp thư điện tử hay bản tin  
điện tử từ máy chủ về thư trong môi trường cộng tác. Nó cho phép chương trình thư  
điện tử dùng cho máy khách - như Netscape Mail, Eudora của Qualcomm, Lotus Notes  
hay Microsoft Outlook - lấy thông điệp từ xa trên máy chủ một cách dễ dàng như trên  
đĩa cứng cục bộ.  
- IMAP khác với giao thức truy cập thư điện tử Post Office Protocol (POP). POP  
lưu trữ toàn bộ thông điệp trên máy chủ. Người dùng kết nối bằng đường điện thoại  
vào máy chủ và POP sẽ đưa các thông điệp vào in-box của người dùng, sau đó xoá thư  
trên máy chủ. Hai giao thức này đã được dùng từ hơn 10 năm nay. Theo một nhà phân  
tích thì khác biệt chính giữa POP (phiên bản hiện hành 3.0) và IMAP (phiên bản hiện  
hành 4.0) là POP3 cho người dùng ít quyền điều khiển hơn trên thông điệp.  
a. Các lệnh của IMAP4:  
- Những tập lệnh của IMAP4rev1 được định nghĩa trong rfc2060 cũng nhưng  
quá trình bắt đầu và kết thúc của một phiên làm việc. Vì trong chương trình em chỉ sử  
dụng một số lệnh cơ bản trong bộ giao thức này, dưới đây là ý nghĩ cũng như cách sử  
dụng chúng.  
CAPABILITY  
- Arguments: none  
- Kết quả trả về : OK - capability completed  
BAD - command unknown or arguments invalid  
- Đây là lệnh thực hiện trước tiên của bất kỳ một trình mail Client nào muốn  
lấy mail từ trình chủ bằng giao thức IMAP, mục đích là kiểm tra version giao thức có  
đáp ứng được yêu cầu không. Version hiện nay đang dùng là IMAP4(IMAP4rev1).  
Ví dụ  
C: abcd CAPABILITY  
S: * CAPABILITY IMAP4rev1  
S: abcd OK CAPABILITY completed  
LOGIN  
- Arguments: [user name] [password ]  
- Kết quả trả về là: OK - login completed, now in authenticated state  
NO - login failure: user name or password rejected  
BAD - command unknown or arguments invalid  
- Lệnh này để xác nhận người sử dụng có hợp pháp không? Nếu thành  
công thì người dùng sẽ thực hiện các thao tác lệnh tiếp theo.  
Ví d C: a001 LOGIN tuyentm01 kimphung  
S: a001 OK LOGIN completed  
CHECK  
- Arguments: none  
- Kết quả trả về: OK - check completed  
BAD - command unknown or arguments invalid  
- Lệnh này dùng để kiểm tra tại thời điểm này lệnh SELECT đã thực hiện hay  
chưa, nếu thực hiện rồi trả về OK.  
SELECT  
- Arguments: mailbox name (tên hòm thư)  
- Kết quả trả về : OK - select completed, now in selected state  
NO - select failure, now in authenticated state: no  
such mailbox, can't access mailbox  
BAD - command unknown or arguments invalid  
- Lệnh Select dùng để nhận biết được hòm thư có bao nhiêu thư bao gồm thư  
mới, thư đọc rồi và thư đã xoá. Lệnh này cho phép ta thay đổi thuộc tính của hòm thư  
cũng như nhưng lá thư mà chúng lưu trữ bởi các lệnh khác trong IMAP.  
Ví dụ C: A142 SELECT INBOX  
S: * 172 EXISTS  
S: * 1 RECENT  
S: * OK [UNSEEN 12] Message 12 is first unseen  
S: * OK [UIDVALIDITY 3857529045] UIDs valid  
S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)  
S: * OK [PERMANENTFLAGS (\Deleted \Seen \*)] Limited  
S: A142 OK [READ-WRITE] SELECT completed.  
- Trong ví dụ trên chúng ta quan tâm các thông số sau:  
EXISTS : tổng số lá thư mà hòm thư này lưu trữ ví dụ trên là 172 lá thư.  
RECENT : là số lá thư mới trong thời gian gần đây mà người sử dụng  
chưa đọc ví dụ trên là 1.  
UNSEEN : là tổng số lá thư củ mà người dùng chỉ nhìn thấy nhưng nội  
dung chưa xem qua.  
UIDVALIDITY : dùng để chỉ định trạng thái của hòm thư đây là một  
thông số không quan trong.Mổi mail Server sẽ có cách đặc tả thông số này  
khác nhau tuỳ từng mục đích sử dụng nó của các nhà quản trị mail thông số  
này liên quan đến lệnh UID.  
CLOSE  
- Arguments: none  
- Kết quả trả về : OK - close completed, now in authenticated state  
NO - close failure: no mailbox selected  
BAD - command unknown or arguments invalid  
- Lệnh này dùng để đóng lệnh SELECT lại hay có thể hiểu loại bỏ lệnh này và  
không lưu lại các thuộc tính đã thay đổi với hòm thư này.  
FETCH  
- Arguments: message set message data item names  
- Kết quả: OK - fetch completed  
NO - fetch error: can't fetch that data  
BAD - command unknown or arguments invalid  
- Lệnh dùng để hiển thị nội dung của một lá thư. Thông số theo sau gồm có  
hai thông số: đầu tiên là số thứ tự của lá thư và thông số thư hai là message data item  
names nhưng thông số này phải tuân theo RFC822 được trình bày ở trên.  
Ví dụ: C: A654 FETCH 2:4 (FLAGS BODY[HEADER.FIELDS  
(DATE FROM)])  
S: * 2 FETCH ....  
S: * 3 FETCH ....  
S: * 4 FETCH ....  
S: A654 OK FETCH completed  
UID  
- Arguments: là các lệnh trong IMAP  
- Kết quả trả về: OK - UID command completed  
NO - UID command error  
BAD - command unknown or arguments invalid  
EXAMINE  
- Arguments: mailbox name  
- Kết quản trả về: OK - examine completed, now in selected state  
NO - examine failure, now in authenticated state: no  
such mailbox, can't access mailbox  
BAD - command unknown or arguments invalid  
- Lệnh này tương tự như lệnh SELECT cùng một kế quả trả về nhưng khi  
dùng lệnh này chúng ta chỉ xem thông tin không thay đổi được trạng thái của hòm thư  
cũng như các thuộc tính của nó.  
Ví dụ: C: A932 EXAMINE Inbox  
S: * 17 EXISTS  
S: * 2 RECENT  
S: * OK [UNSEEN 8] Message 8 is first unseen  
S: * OK [UIDVALIDITY 3857529045] UIDs valid  
S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)  
S: * OK [PERMANENTFLAGS ()] No permanent flags permitted  
S: A932 OK [READ-ONLY] EXAMINE completed  
CREATE  
- Arguments: tên hòm thư cần tạo.  
- Kết quả trả về:OK - create completed  
NO - create failure: can't create mailbox with that  
name  
BAD - command unknown or arguments invalid  
- Lênh tạo ra một hòm thư mới với tên đã chọn và trả lại là OK nếu quá trình  
tạo ra hòm thư trên Server không gặp lỗi.  
Ví dụ: C: A003 CREATE Tuyen  
S: A003 OK CREATE completed  
C: A004 CREATE Inbox  
S: A004 No mailbox name Exist  
DELETE  
- Arguments: tên hòm thư cần xoá.  
- Kết quả trả về:OK - delete completed  
NO - delete failure: can't delete mailbox with that name  
BAD - command unknown or arguments invalid  
- Lệnh xoá hòm thư, nếu xoá thành công thì kết quả nhận được là OK.  
Ví dụ: C: A682 LIST "" *  
S: * LIST () "/" Inbox  
S: * LIST () "/" Tuyen  
S: A682 OK LIST completed  
C: A683 DELETE Tuyen  
S: A683 OK DELETE completed  
C: A684 DELETE Tuyen  
S: A684 NO Name "Tuyen" has inferior hierarchical names  
C: A686 LIST "" *  
S: * LIST () "/" Inbox  
S: A686 OK LIST completed  
RENAME  
- Arguments: (tên hòm thư tồn tại) (tên hòm thư mới).  
- Kết quả: OK - rename completed  
NO - rename failure: can't rename mailbox with that name,  
can't rename to mailbox with that name  
BAD - command unknown or arguments invalid  
- Lệnh chuyển đổi tên hòm thư, kết quả là OK nếu thành công.  
COPY  
- Arguments: tên lá thư đến tên hòm thư  
- Kết quả trả về:OK - copy completed  
NO - copy error: can't copy those messages or to that name  
BAD - command unknown or arguments invalid  
- Đây là lệnh copy một lá thư từ hòm thư này sang hòm thư khác.  
Ví dụ: C: A003 COPY 2:4 MEETING  
S: A003 OK COPY completed  
SUBSCRIBE  
- Arguments: tên hòm thư  
- Kết quả trả về: OK - subscribe completed  
NO - subscribe failure: can't subscribe to that name  
BAD - command unknown or arguments invalid  
- Lệnh dùng để thiết lập thuộc tính active của hòm thư,tuy nhiên nó không thể  
thay đổi được đặc tính hòm thư hay nói cách khác nó dùng để kiểm tra xem hòm thư  
này có tồn tại hay không  
UNSUBSCRIBE  
- Arguments: tên hòm thư  
- Kết quả trả về:OK - unsubscribe completed  
NO - unsubscribe failure: can't unsubscribe that name  
BAD - command unknown or arguments invalid  
- Lệnh này ngược lại với SUBSCRIBE nghĩa là nó loại bỏ thuộc tính active  
của hòm thư.  
LIST  
- Arguments: tên hay những ký tự đặc trưng.  
- Kết quả trả về:OK - list completed  
NO - list failure: can't list that reference or name  
BAD - command unknown or arguments invalid  
- Nếu tên hay những ký tự theo sau hợp lệ thì lệnh này trả về tập tên các hòm  
thư, thường tên hay ký tự theo sau là “% ,*, “”, /, String*,”. Chúng ta tạm hiểu nó như  
một lệnh Dir trong MS-DOS.  
Ví dụ:  
C: A101 LIST "" ""  
S: * LIST (\Noselect) "/" ""  
S: A101 OK LIST Completed  
C: A102 LIST Tuy* ""  
S: * LIST (\Noselect) "/" ""  
S: A102 OK LIST Completed  
C: A102 LIST * *  
S: * LIST () "/*" "Inbox"  
S: * LIST () "/*" "Tuyen"  
S: * LIST () "/*" "Phung"  
S: A102 OK LIST Completed  
C: A102 LIST Tuy* *  
S: * LIST () "tuy*" "tuyen"  
S: A102 OK LIST Complete  
LUSB  
- Arguments: tên hay những ký tự đặc trưng.  
- Kết quả trả về: OK - list completed  
NO - list failure: can't list that reference or name  
BAD - command unknown or arguments invalid  
Lệnh này tương tự như list nhưng chỉ khác một điều là nhưng hòm thư nhận  
được phải ở trạng thái active.  
STATUS  
- Arguments: tên hòm thư (trạng thái)  
- Kết quả trả về:OK - status completed  
NO - status failure: no status for that name  
BAD - command unknown or arguments invalid  
- Lệnh này trả về trạng thái hiện tại của hòm thư, nó không làm ảnh hưởng  
đến sự chuyển đổi của hòm thư cũng như các trạng thái của các lá thư. Trạng thái theo  
sao hiện nay trong IMAP4rev1 như sau.chức năng của lệnh này dùng để check mail.  
MESSAGES : số thư mới trong hòm thư  
RECENT  
: số lá thơ củ.  
UIDNEXT : giá trị UID tiếp theo sẽ được gán cho một lá thư mới trong  
hòm thư  
UIDVALIDITY : giá trị UID của hòm thư.  
UNSEEN : nhưng lá thư của mà người dùng chưa xem nội dung.  
Ví d C: A042 STATUS tuyen (MESSAGES RECENT)  
S: * STATUS tuyen (MESSAGES 23 RECENT 40)  
S: A042 OK STATUS completed  
NOOP  
- Arguments: none  
- Kết quả trả về: OK - noop completed  
BAD - command unknown or arguments invalid  
- Lệnh này thực chất không làm gì cả mà mục đích để kiểm tra xem giữa mail  
Client và mail Server còn liên lạc với nhau không.  
Ví d C: a002 NOOP  
S: a002 OK NOOP completed  
. . .  
C: a047 NOOP  
S: * 22 EXPUNGE  
S: * 23 EXISTS  
S: * 3 RECENT  
S: * 14 FETCH (FLAGS (\Seen \Deleted))  
S: a047 OK NOOP completed  
STORE  
Arguments: message set message data item name value for message data  
item  
Responses: untagged responses: FETCH  
Result: OK - store completed  
NO - store error: can't store that data  
BAD - command unknown or arguments invalid  
- Thiết lập lại trạng thái của thư, mỗi lá thư có nhưng trạng thái như thư mới  
nhận là Recent tiếp theo là trạng thái chưa đọc Unsen, đọc rồi Seen và trạng thái xoá  
Deleted và một số cờ đặt trưng khác.  
- Nếu thêm trạng thái thì dùng lệnh trong Arguments tương ứng là +FLAGS  
<flag list> hay +FLAGS.SILENT <flag list>  
- Nếu loại bỏ trạng thái thì dùng lệnh trong Arguments tương ứng là -FLAGS  
<flag list> hay -FLAGS.SILENT <flag list>  
- FLAGS.SILENT là thiết lập lại trạng thái server hồi đáp lại là hiên tại lá thư  
đó đang ở những trạng thái nào lệnh này ngược lại với lệnh –FLAGS  
ví dụ  
C: A003 STORE 2:4 +FLAGS (\Deleted)  
S: * 2 FETCH FLAGS (\Deleted \Seen)  
S: * 3 FETCH FLAGS (\Deleted)  
S: * 4 FETCH FLAGS (\Deleted \Flagged \Seen)  
S: A003 OK STORE completed  
C: A003 STORE 2:4 +FLAGS.SILENT (\Deleted)  
S: A003 OK STORE completed  
EXPUNGE Command  
Arguments: none  
Responses: untagged responses: EXPUNGE  
Result :OK - expunge completed  
NO - expunge failure: can't expunge (e.g. permission denied)  
BAD - command unknown or arguments invalid  
Lệnh dùng để kiểm tra những lá thư có trạng thái deleted và loại nó ra khỏi hòm thư,  
đưa vào thùng rác(hòm thư trash). Nếu những như hòm thư Trash được chọn thì những  
lá thư này sẽ được xoá ra khỏi mail của bạn.  
LOGOUT  
- Arguments: none  
- Kết quả tả về: OK - logout completed  
BAD - command unknown or arguments invalid  
- Lệnh dùng để đóng kết nối lại sao một phiên làm việc.  
Ngoài các lệnh trên trong IMAP4 còn một số lệnh khá hay khác như SEARCH,  
AUTHENTICATE,... vì thời gian và năng lực có hạn nên đồ án của em có lẽ chỉ dừng  
lại ở các lệnh trên.  
b. Sự khác biệt giữa hai giao thức POP3 và IMAP4  
- Nói một cách đơn giản nhất, IMAP đặt sự kiểm soát e-mail lên server trong khi  
nhiệm vụ duy nhất của POP là "ném" toàn bộ thông điệp e-mail về chỗ trình client yêu  
cầu, và xong là "phủi tay". Theo nhận định của Terry Gray Giám đốc Networks &  
Distributed Computing ở University of Washington, và là người dùng IMAP 5 năm  
nay phát biểu: "Nhu cầu truy cập đến một nơi lưu trữ thư duy nhất từ nhiều máy khác  
nhau vào những thời điểm khác nhau là lý do chủ yếu cho sự bùng nổ mối quan tâm  
đến IMAP, và là nguyên nhân tại sao mọi nhà cung cấp hệ thống thư điện tử có tầm cỡ  
hiện nay đều đang hoặc sẽ hỗ trợ nó". Qua đó, cho ta thấy được giao thức IMAP vẫn là  
giao thức đọc mail tốt và an toàn nhất.  
- Hơn nữa, với các thông điệp e-mail được lưu giữ ở server, tất cả các các thao tác  
trên thông điệp đều có thể thực hiện được, chẳng hạn như có thể chỉ đọc phần header  
của thông điệp (xem thêm ở danh sách tính năng dưới đây). Ngoài khả năng thao tác  
trên thông điệp, dùng IMAP còn có những lợi ích khác nữa. Ví dụ, khi người dùng làm  
việc trên hai hay nhiều máy PC, chẳng hạn một máy để bàn, một máy di động, họ  
không cần phải lo lắng về việc thư từ nằm vương vãi trên các máy client khác nhau.  
Cũng vậy, đối với những cơ quan có người dùng di động và cả những máy PC để cố  
định, chẳng hạn như các trường học hay cơ quan y tế, IMAP là một giải pháp lý tưởng  
ố theo ý kiến của một chuyên gia phụ trách công nghệ.  
- Một lợi điểm khác của IMAP là e-mail có thể được tự động sao dự phòng trong  
server của xí nghiệp và tại máy cá nhân. Những thông điệp quan trọng sẽ được người  
dùng chép về máy client, và bản sao vẫn để lưu tại máy server. Tuy nhiên, phần lớn  
người dùng có khuynh hướng để lại các thông điệp ở server. Làm như vậy sẽ giúp cơ  
quan có thể có kế hoạch tổ chức việc sao dự phòng (backup) cho toàn bộ e-mail của cơ  
quan một cách dễ dàng. Tất nhiên việc quyết định tổ chức sao dự phòng tập trung phụ  
thuộc chủ yếu vào mức độ quan trọng của nội dung e-mail, nhưng nếu e-mail nằm rải  
rác trên các máy client thì khi cần thực hiện sao dự phòng bạn sẽ gặp rất nhiều khó  
khăn.  
- IMAP cũng làm giảm nhu cầu mà e-mail đòi hỏi trên mạng. Người dùng trước  
đây phải tải xuống toàn bộ e-mail họ có với POP, dù e-mail đó có chứa file gắn kèm  
lớn nhiều megabyte, thì giờ đây họ có thể tải xuống một cách có chọn lọc toàn bộ hay  
một phần nào đó của bức thư. Kết quả, theo ý kiến các nhà cung cấp, thì phần lớn  
người dùng ít tải thư về hơn. Kỹ thuật e-mail trên server còn có nghĩa là chi phí thiết  
lập server sẽ tăng lên khá nhiều so với POP.  
c. Những tính năng xuất sắc nhất của IMAP  
- Thật ra thì nhiều tính năng trong danh sách sau đây có thể có trong các trình  
client e-mail riêng. Nhưng hãy nhớ rằng Internet Messaging Access Protocol (IMAP)  
cung cấp một thứ mà các chương trình kia không có: độc lập với nhà cung cấp, và  
đang được chuẩn hoá.  
+ Người dùng có thể chỉ cần xem phần header của thông điệp để xác định thông  
điệp nào cần đọc.  
+ IMAP có thể chèn các thông điệp vào folder ở xa.  
+ Nó cho phép tạo ra các nhãn hiệu chuẩn hay được định nghĩa bởi người dùng  
cho thông điệp. Ví dụ, nhãn hiệu có thể dùng để định danh các nhóm làm việc, các dự  
án, v.v...  
+ Do các thông điệp IMAP có khuynh hướng được giữ lại tại server chứ không  
phải ở các máy client riêng lẻ, có thể cập nhật được chúng. IMAP hỗ trợ cập nhật đồng  
thời trong các folder dùng chung và thông báo cho người dùng về việc cập nhật.  
+ Người dùng có thể có nhiều folder trong một hộp thư đến (inbox), và có thể thiết  
lập chúng theo nhiều cách, như tạo cây thư mục.  
+ Người dùng có thể lựa chọn để đọc các phần của thông điệp MIME, như truy cập  
phần thân của thông điệp và bỏ qua phần gắn kèm.  
+ Người dùng có thể tìm kiếm các thông điệp trên server.  
5. Chức năng Replay hay Forward.  
- Có một vấn đề cần nói đến là khi trình mail Server nhận được một lá thư mà  
người nhận thư không thuộc quyền quản lý của trình mail server đang chạy, làm cách  
nào để đảm bảo thư đến được người dùng?.Cụ thể là với một địa chỉ mail như  
name@yahoo.com hay name@hotmail.com làm cách nào biết được địa chỉ mail server  
thực sự?. Chúng ta dựa vào tên domain mail. Mỗi mail Server sẽ đăng ký với DNS  
server nhưng tên miền mà nó quản lý theo dạng MX record(Mail Exchange Record).  
Ngoài ra ta có thể dùng một mail server trung gian để chuyển mail đến đích.  
+ ServerReply: là trình server mail đang chạy sẽ chuyển nội dung lá thư mà địa  
chỉ mail đến mà không thuộc quyền quản lý thông qua một mail Server khác có hỗ trợ  
dịch vụ này, thông thường thì rất ít trình Mail Server hỗ trợ dịch vụ này. Vì việc này sẽ  
làm cho trình chủ bị quá tải và tính bảo mật sẽ không được an toàn. Trên mạng internet  
các mail server của vnn.vn có hổ trợ dịch vụ server mail trung gian này.  
+ ServerForward: đây là một phương pháp tối ưu và hiệu quả nhất. Cụ thể là khi  
nhận được một lá thư mà địa chỉ đến không thuộc quyền quản lý, trình mail server  
đang chạy sẽ phân tích xem Domain mail này thuộc quyền quản lý của Server mail nào  
và địa chỉ máy đang chạy tên gì thông qua máy server DNS cổng kết nối là 53 (DNS  
Server lưu trữ các địa chỉ máy server đang chạy trên mạng Internet, ở việt nam có 2  
Server DNS tên là hcm-server1.vnd.net và dng-server2.vnd.net). Sau đó tiến hành gởi  
mail đến người nhận thông qua server mà nó đang quản lý.  
Ví dụ: ServerForward có tính năng tương tự nhu Nslookup.exe của dòng họ  
windows server. Sau đây là một ví dụ phân giải tên domain yahoo.com thành địa chỉ  
mail server thực thụ bằng chương trình nslookup.exe trong windows Server hay  
MXLookup.class trong chương trình là như nhau.  
C:\winnt> nslookup  
Default Server: hcm-server1.vnd.net  
Address: 203.162.4.1  
>set type=MX  
>yahoo.com  
yahoo.com MX preference=1, mail exchanger = mx1.mail.yahoo.com  
yahoo.com MX preference=1, mail exchanger = mx2.mail.yahoo.com  
yahoo.com MX preference=5, mail exchanger = mx4.mail.yahoo.com  
từ ví dụ trên ta thấy domain mail yahoo.com có tới 3 server mail quản lý đó là  
mx1.mail.yahoo.com, mx2.mail.yahoo.com và mx4.mail.yahoo.com. Ta sẽ chon ra  
một mail Server trong 3 mail server trên và gởi thư đến mail server này khi người nhận  
mail có domain mail là yahoo.com.  
CÁC TÍNH CHẤT ƯU VÀ KHUYẾT ĐIỂM CỦA JAVA  
a. Các tính chất cơ bản:  
- Đơn giản(simple) :Cú pháp của java thực ra giống cú pháp của C++ trong các  
phiên bản mới đây. Mặc dù java không phải là ngôn ngữ được ưa chuộng nhất hiện  
nay nhưng trong thời điểm này java là ngôn ngữ hay hơn cả. Một điểm khác nữa là  
java rất nhỏ, nó có thể tạo ra những phần mềm chạy độc lập trên các máy tính nhỏ kích  
thước bộ biên dịch và các lớp thư viện của nó chỉ có 40K.  
- Hướng đối tượng(Ọbect oriented): mọi ứng dụng của java điều phải được xây  
dựng trên các đối tượng. mỗi lớp có nhiều phương thức(method) và vùng(field).  
Phương thức là những chức năng mà đối tượng dùng để trả lời các tác động lên đối  
tượng.  
- Phân tán(distributed): Java được thiết kế để hỗ trợ các ứng dụng phân tán bằng  
các lớp mạng(java net). Ví dụ như lớp URL của java có thể truy xuất dễ dàng đến máy  
chủ ở xa, nó có thể mở hoặc truy cập đến các đối tượng thông qua mạng dễ dàng như  
một lập trình viên đang sử dụng ngay trên máy của mình.  
- kiểu tỉnh(statically typed): tất cả các đối tượng được sử dụng trong chương  
trình phải được khai báo trước khi sử dụng. Điều này giúp cho trình biên dịch java có  
thể xác định và báo cáo các xung đột.  

Tải về để xem bản đầy đủ

pdf 52 trang yennguyen 14/02/2025 150
Bạn đang xem 30 trang mẫu của tài liệu "Đồ án Phân tích và thiết kế hệ thống Quản lý email và các giao thức mail", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfdo_an_phan_tich_va_thiet_ke_he_thong_quan_ly_email_va_cac_gi.pdf