- Thư được lư trữ dưới dạng cây thư mục, thư mục gốc được mặt định là c:\MailSystem, bên trong có 2 thư mục con, một là Account và outbox.
+ Account: là thư mục chính nó lưu trữ các domain và Account người sử dụng được mô tả ở bên dưới
bên trong thư mục Accout có 6 thư mục, tên từng thư mục tương ứng với tên từng Doain mà server đang quản lý. Bên trong các thư mục Domain này có rất nhiều các thư mục con và tên thư mục con trong từng Doamin tương ứng với tên Account mail của một người sử dụng nào thuộc Domain nay.
Ví dụ thư mục tuyen thuộc Domain tuyen.com như vậy địa chỉ mail có tên là
tuyen@tuyen.com và tên của Account là tuyen. Vào bên trong từng Account này sẽ có ít nhất 4 thư mục chủ yếu của giao thức Imap là Ibox, Trash, Drafts, Sent Items, và các thư mục khác do người sử dụng tạo ra, tên những thư mục này tương ứng với tên thùng thư mà chúng ta thấy trong duyệt mail từ Client và bên trong mỗi thư mục chứa các tập tin thư, thông thường thư đến sẽ được lưu trữ trong thư mục Inbox.
- Thư mục Outbox: đây là thư mục lưu trữ nội dung của những lá thư đến không thuộc quyền quản lý được lưu tạm vào đây chờ gọi chương trình ServerReply hay ServerForward ra xử lý.
III.Lưu trữ thông tin người dùng :
- Để cho tiện trong quá trình thao tác cũng như cải thiện tốc độ xử lý trong chương trình em dùng cơ sở dữ liệu là Access để lưu trữ thông tin người dùng thông qua cầu nối ODBC với tên đăng ký trong cầu nối là AccountMail
Cơ sở dữ liệu này lưu trữ cơ bản là những thông tin mà người dùng đăng ký ban đầu hay là lần sửa đổi gần đây nhất. Bao gồm Họ, tên, Tên Account, Ngày sinh, Address book,…… Mục đích chính là cho điện trong việc quản lý người dùng cũng như việc cập nhật, thêm hay loại bỏ người sử dụng. Ngoài ra còn một số lưu trữ khác nhưng mục đích chính của em là dùng để lưu trữ thông tin nên các table hay các trường trong cơ sở dữ liệu không có ràng buộc chặt chẽ lắm.
IV.Lưu đồ mô phỏng tiến trình của các giao thức.
1. Tiến trình giao dịch SMTPN N Y N N Y Y N Y Y N N N N N Y Nhận lệnh từ Client HELO N từ điển lệnh SMTP Y Định danh Sender kiểm tra lệnh nhận được tên Domain từ Client Y MAIL Y Báo lỗi Ghi lại địa chỉ
người gởi Định danh Recipient N Y RCPT người nhận là cục bộ Y Ghi lại địa chỉ
người nhận
Inbox DATA Nhận dữ
liệu từ client <CRLF>. <CRLF>
Ghi lại nội dung thư chuyển thư đến Server người nhận RSET huỷ bỏ các lệnh trước đó Y N
NOOP kiểm tra lại kết nối
QUIT kết thúc kết nối
- Tiến trình giao dịch SMTP là khá phức tạp. Nó phải thực hiện chức năng như một bộ dịch và xử lý lệnh theo chuẩn giao thức SMTP. Tất cả các lệnh gửi tới đều phải trải qua quá trình phân tích để xác định chính xác yêu cầu của người sử dụng. Hệ thống sử dụng một từ điển các lệnh của SMTP để làm công việc này.
- Sau khi lệnh đã được xác định là hợp lệ, nó sẽ được thực hiện tuỳ theo yêu cầu của người sử dụng.
- Trong toàn bộ phiên giao dịch SMTP, hệ thống sử dụng chủ yếu năm lệnh là: HELO, MAIL FROM, RCPT TO, DATA và QUIT. Các lệnh này luôn phải thực hiện theo một trình tự quy định như sau:
HELO
MAIL FROM
RCPT TO (lệnh này có thể được lập lại nhiều lần - sử dụng trong trường hợp cho nhiều người nhận).
.. .
DATA
.. . (phần dữ liệu thư) <CRLF>.<CRLF>
QUIT
- Bên trên chỉ là mô phỏng một phiên làm việc cơ bản của giao thức SMTP, ngoài ra nó còn một số lệnh khác tuỳ vào người sử dụng ở client gởi đến nhìn chung qui tắc hoạt động của tiến trình vẫn đảm bảo theo lược đồ trên cho dù lệnh SMTP có thêm vào hay bớt đi.
- Trong quá trình nhận thư từ phía Client, hệ thống sẽ phân tích địa chỉ người nhận để xác định là người nhận cục bộ hoặc người nhận thuộc một hệ thống Mail Server khác. Đây là phần phức tạp nhất trong phiên giao dịch
SMTP:
1. Nếu người nhận là cục bộ, hệ thống chỉ cần ghi nội dung thư vào hộp thư tương ứng của người sử dụng.
2. Nếu người nhận không thuộc mạng cục bộ, hệ thống sẽ chuyển thư cho modul SMTP Sender. Phần chức năng này sẽ chịu trách nhiệm kết nối với hệ thống Mail Server ở xa. Nếu kết nối thành công, thư sẽ được chuyển đến Mail Server ở xa đó. Trong trường hợp ngược lại, hệ thống sẽ gửi trả các thông tin phản hồi cho người sử dụng.
- Vì hệ thống được thiết kế để cung cấp dịch vụ đồng thời cho nhiều Client nên để đảm bảo an toàn và tính đồng bộ trong các thao tác xử lý, mỗi lần hệ thống ghi nội dung thư vào hộp thư, nó đều thực hiện việc khoá tạm thời hộp thư để tránh tình trạng mất mát và sai xót.
- Phiên giao dịch sẽ kết thúc khi có yêu cầu ngừng phiên giao dịch từ phía Client. Tất nhiên, nếu hệ thống phía máy chủ kết thúc thì tất cả các phiên giao dịch cũng sẽ kết thúc và mọi thao tác sẽ bị huỷ bỏ.