User agents được dùng để tạo và gửi thư đi, cũng như dùng để hiển thị, tổ chức lưu trữ và in ấn các thông điệp trong mailbox của người dùng.. Transfer Agents Mail transfer agents MTAs đư
Trang 1Một số khái niệm
Mail-boxes
Một mail-box là 1 file hoặc 1 thư mục chứa các file nơi các mail gửi đến được lưu trữ
User Agents
Một mail user agent, hoặc MUA, là một ứng dụng chạy trực tiếp bởi người dùng User agents được dùng để tạo và gửi thư đi, cũng như dùng để hiển thị, tổ chức lưu trữ và in ấn các thông điệp trong mailbox của người dùng Một số MUA phổ biến như elm, mailx, mh, zmail, Netscape, Eudora, MS Outlook
Transfer Agents
Mail transfer agents (MTAs) được dùng để chuyển các thông điệp giữa các máy User agents chuyển thông điệp đến MTA, MTA này chuyển thông điệp đến một MTA khác hoặc nhiều MTA khác nữa Người dùng có thể chuyển thông điệp trực tiếp đến MTA không thông qua MUA, nhưng đòi hỏi phải nắm được tập lệnh của giao thức chuyển thư,
ví dụ các lệnh SMTP
MTA có nhiệm vụ dẫn đường cho các thông điệp đi đến đúng đích nhận của chúng MTA phổ biến nhất (trên UNIX) là sendmail
Delivery Agents
Delivery agents dùng để đặt các thông điệp vào mail-box của người dùng Khi thông điệp đến được đích thì MTA sau cuối sẽ chuyển thông điệp đến delivery agent phù hợp và agent này sẽ đưa thông điệp vào mail-box của người dùng Ví dụ delivery agent cho Solaris từ phiên bản 2.5 trở đi là mail.local
Các thành phần trong hệ thống E-Mail
Một hệ thống mail gồm 3 thành phần có thể nằm trên cùng máy hoặc tách biệt trên nhiều máy:
• Một mail host
• Ít nhất một mail server
• Các mail client
Trang 2Cấu hình E-Mail cơ bản
Trong trường hợp muốn kết nối với hệ thống bên ngoài dùng giao thức chuyển mail khác thì cần thêm thành phần thứ tư là một mail gateway
Mail Host
Một mail host là máy giữ vai trò máy chủ mail chính trong hệ thống mạng Nó dùng như
thành phần trung gian để chuyển mail giữa các vị trí không kết nối trực tiếp được với nhau
Mail host phân giải địa chỉ người nhận để chuyển giữa các mail server hoặc chuyển đến mail gateway
Một ví dụ về mail host là máy trong mạng cục bộ LAN có modem được thiết lập liên kết PPP hoặc UUCP dùng đường dây thoại Mail host cũng có thể là máy chủ đóng vai trò router giữa mạng nội bộ và mạng Internet
Mail Server
Một mail server là một máy bất kỳ có chứa các mailbox của người dùng
Mail server nhận mail từ mail client gửi đến và đưa vào hàng đợi (mail queue) để gửi đến mail host
Mail server nhận mail từ mail host gửi đến và đưa vào mailbox của người dùng
Trang 3Người dùng sử dụng NFS (Network File System) để mount thư mục chứa mailbox trên server và đọc thư Nếu NFS không được hổ trợ thì người dùng phải login vào máy mail server để đọc thư
Trong trường hợp mail client của người dùng có hổ trợ POP/IMAP (POP/IMAP client) và trên mail server cũng hổ trợ POP/IMAP (POP/IMAP server) thì người dùng có thể đọc thư bằng POP/IMAP
Mail Client
Một mail client là hệ thống bất kỳ nhận mail từ mail server và không có mailbox cục bộ.
Mail Gateway
Một mail gateway là máy kết nối giữa các mạng dùng các giao thức truyền thông khác
nhau hoặc kết nối các mạng khác nhau dùng chung giao thức Ví dụ một mail gateway có thể kết nối một mạng TCP/IP với một mạng chạy bộ giao thức Systems Network
Architecture (SNA)
Một mail gateway đơn giản nhất dùng để kết nối 2 mạng dùng chung giao thức hoặc mailer Khi đó mail gateway chuyển mail giữa domain nội bộ và các domain bên ngoài Mail gateway cũng kết nối 2 mạng dùng mailer khác nhau như hình vẽ dưới
Gateway giữa 2 giao thức truyền khác nhau
Trang 4Một số cấu hình E-Mail
Hệ thống mail cục bộ
Cấu hình hệ thống mail đơn giản gồm một hoặc nhiều trạm làm việc kết nối vào một mailhost Tất cả mail đều chuyển cục bộ
Mail cục bộ có thêm kết nối từ xa
Hệ thống mail trong một mạng nhỏ gồm một mail server, một mail host và một mail gateway kết nối với hệ thống bên ngoài Không cần DNS server
Hai domain và một gateway
Cầu hình dưới đây gồm 2 domain và một mail gateway Trong cấu hình này mail server, mail host, và mail gateway (hoặc gateways) cho mỗi domain hoạt động như một hệ thống độc lập Để quản trị và phân phối mail cho 2 domain dịch vụ DNS buộc phải có
Trang 5Low-level Concepts
Character Sets
Một bảng mã character set đơn giản là sự ánh xạ các giá trị byte nhị phân vào các ký tự Character set phổ biến nhất là US-ASCII, có 32 ký tự điều khiển (không in được) và 96 ký
tự khác (in được), tổng cộng là 128 128 ký tự này mã hoá bằng 7 bit, vì thế một byte 8 bit biểu diễn các ký tự này chỉ dùng 7 bit thấp, còn bit thứ 8 luôn đặt bằng 0 US-ASCII vì thế được xem là bảng mã 7-bit
Nhưng các ngôn ngữ khác ở châu Âu dùng thêm các ký tự khác từ 128 đến 255 ngoài 128
ký tự trên nên phải dùng 8 bit để mã hoá Do đó chúng được coi là bảng mã 8-bit (ví dụ ISO-8859-1)
Nhiều ngôn ngữ châu Á cần nhiều byte để biễu diễn và được xem là bảng mã multiple-byte
Headers & Bodies
Mỗi thông điệp gồm 2 phần là header và body Phần header chứa các thông tin về ngừoi
tạo, người nhận, thời gian tạo, chủ đề của thư, … Mỗi thông điệp có dạng "keyword:
value", trong đó keyword là 1 từ đặc biệt (ví dụ From hoặc Date) chỉ ra loại thông tin được
chứa trong header, và value là giá trị của nó Khuyến nghị RFC 822 và RFC 1123, section
5 mô tả các loại header có thể có
Một dòng trắng ngăn cách giữa header và body
Phần body chứa các thông tin mà người gửi muốn chuyển đến cho người nhận
MIME
Ban đầu do các thông điệp đều ở dạng text không định dạng dùng bảng mã US-ASCII nên không cần có cấu trúc cho phần body của thông điệp Tuy nhiên cùng với sự phát triển của Internet đòi hỏi phải chuyển các thông điệp không những dùng bảng mã US-ASCII mà còn cần hổ trợ các ngôn ngữ châu Âu và châu Á, hơn nữa e-mail cũng dùng để chuỵển nội dụng multi-media nên cần phải mở rộng RFC 822
MIME (Multipurpose Internet Mail Extensions, đặc tả trong các RFC từ 2045 đến 2049,
đặc biệt là RFC 2045 và RFC 2046) định nghĩa cấu trúc phần body của thông điệp Nó bổ sung trường trong phần header là Content-Type chỉ ra bảng mã cụ thể hoặc kiểu dữ liệu non-text chứa trong body của 1 thông điệp Ví dụ header:
Content-Type: text/plain; charset=us-ascii
Trang 6chỉ ra thông điệp chứa text không địng dạng dùng bảng mã US-ASCII MIME cũng chỉ ra làm thế nào để mã hoá dữ liệu khi cần MUA dùng các thông tin này để hiể thị thông điệp theo dạng mà người dùng có thể hiểu được
Transfer Protocols
Là “ngôn ngữ” giao tiếp giữa các MTA Có nhiều giao thức chuyển mail đang tồn tại như
SMTP (Simple Mail Transfer Protocol); UUCP (Unix-to-Unix copy) và X.400, trong đó
SMTP đang được sử dụng rộng rãi nhất hiện nay Các lệnh SMTP được mô tả trong phần sau
Envelopes và Bodies
Giống như hệ thống thư thừong, SMTP sử dụng thông tin lưu trong “bì thư” - envelope để chuyển thông điệp e-mail Envelope chứa các thông tin như thông điệp xuất phát từ đâu và hướng đến đâu Địa chỉ nơi gửi dùng trong trường hợp thông điệp bị lỗi và hệ thống thông báo về lại nơi gửi Tuy nhiên một thông điệp có thể có nhiều đích nhận và các địa chỉ trong phần envelope có thể thay đổi khi chúng chuyển qua mạng
Phần SMTP body chính là toàn bộ thông điệp, tức gồm 2 phần Headers và Bodies đã mô tả
ở trên
Ví dụ toàn nội dung của một thông điệp:
Envelope:
<user1@host1.org> Return address
<user2@host2.org> Recipient #1
<user3@host3.org> Recipient #2
Headers:
Received: from host1.org by host2.org with SMTP; 01 Oct 1990
12:32:01 EDT
Date: Mon, 01 Oct 1990 11:19:47 EDT
From: user1@host1.org
To: user2@host2.org
Cc: user3@host3.org
Subject: Hello there
Body:
Just a quick note to let you know I'm alive
Have a nice day
Địa chỉ
Trang 7Địa chỉ e-mail có dạng
localpart@domain
trong đó domain là một domain Internet chỉ ra hệ thống cụ thể Domain Internet có dạng:
subdomain .subdomain2.subdomain1.top-level-domain
còn localpart thường là một người dùng trong hệ thống
Dữ liệu 7-bit và 8-bit
Do ban đầu phụ thuộc bảng mã US-ASCII nên SMTP là 1 giao thức 7-bit, có nghĩa là các byte dữ liệu gửi đi chỉ dùng 7-bit thấp và bit thứ 8 luôn luôn là 0
Tuy nhiên trong trường hợp cần dùng đến 8 bit, như các bộ mã ngôn ngữ châu Âu hoặc khi chuyển nội dung multi-media, sẽ dễ dàng xử lý hơn khi sử dụng mã 8-bit Hơn nữa nếu dữ liệu 8-bit mã hoá thành dữ liệu 7-bit sẽ tăng kích thước thông điệp lên khoảng 33% (mã hoá Base64)
Để đáp ứng yêu cầu trên, giao thức SMTP đã được mở rộng để cho phép dữ liệu 8-bit được chuyển giữa 2 MTA Hai MTA phải thoả thuận cùng hổ trợ truyền dữ liệu 8-bit theo khuyến nghị RFC 1869 (mô tả ccơ chế mở rộng SMTP gọi là ESMTP), và RFC 1652 (mô
tả cơ chế mở rộng truyền dữ liệu 8-bit gọi là 8BITMIME).Trong trường hợp 2 MTA không
cùng hổ trợ 8-bit thì phải mã hoá sang dạng 7-bit hoặc MTA nơi nhận thông báo không chấp nhận nhận thông điệp của nơi gửi
Routing
Cơ chế tìm đường cho việc chuyển mail dựa trên hệ thống tên miền Domain Name System được mô tả trong RFC 974
Bản ghi MX (Mail eXchanger) được duy trì bởi các domain name server (DNS) để cho các MTA biết nơi nào cần chuyển mail đến Một bản ghi MX có thể mô tả đích đến cho một máy (host) hoặc cho một domain
Giao thức SMTP
Giao thức SMTP dùng để chuyển mail 1 cách hiệu quả và tin cậy
Giao thức SMTP được thiết kế dựa trên mô hình truyền thông như sau:
User mail yêu cầu gửi
MTA nơi gửi sẽ thiết lập việc vận chuyển 2 chiều với MTA nơi nhận MTA nơi nhận có thể là đích hoặc là 1 nút trung gian
MTA nơi gửi phát sinh các lệnh SMTP và gửi đến MTA nơi nhận
MTA nơi nhận trả lời tương ứng với các lệnh gửi từ MTA nơi gửi
Trang 8
+ -+ + -+
+ -+ | | | |
| User |< >| | SMTP | |
+ -+ | Sender- |Commands/Replies| Receiver-| + -+ | SMTP |< ->| SMTP | + -+
| File |< >| | and Mail | |< >| File | |System| | | | | |System| + -+ + -+ + -+ + -+ Sender-SMTP Receiver-SMTP
Các 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>
TURN <CRLF>
HELO Đồng bộ MTA giữa nơi gửi và nơi nhận HELO abc.com MAIL Khởi động 1 giao tác chuyển mail MAIL FROM:
john@yahoo.com
Trang 9RCPT Chỉ ra 1 người nhận riêng biệt Nếu có nhiều người
nhận thì sẽ có nhiều RCPT RCPT TO: nva@vnn.vn
DATA Bắt đầu nhập nội dung thư Nội dung thư có thể chứa
ký tự ASCII 128 bit bất kỳ nào
Nội dung thư kết thúc bằng chuổi <CRLF>.<CRLF>
DATA <cr>
Subject: Hi!
…
<CRLF>.<CRLF> SEND Khởi động 1 giao tác chuyển mail trong đó mail sẽ
được chuyển đến 1 hoặc nhiều đầu cuối (terminal)
SOML
(SEND
OR
MAIL )
Khởi động 1 giao tác chuyển mail trong đó mail sẽ
được chuyển đến 1 hoặc nhiều đầu cuối (terminal)
hoặc các hộp thư Nếu người dùng đang làm việc thư
sẽ chuyển đến trạm của họ, ngược lại sẽ chuyển đến
hộp thư
SAML
(SEND
AND
MAIL )
Khởi động 1 giao tác chuyển mail trong đó mail sẽ
được chuyển đến 1 hoặc nhiều đầu cuối (terminal) và
các hộp thư
RSET Bỏ qua giao tác mail hiện thời Mọi người gửi, các
người nhận, nội dung thư bị bỏ qua và mọi vùng đệm
cùng bảng trạng thái bị xoá
VRFY Kiểm tra có tồn tại hộp thư người nhận hay không
EXPN Kiểm tra tên danh sách thư tín và trả về các thành
viên trong danh sách nếu có
NOOP Yêu cầu MTA nơi nhận trả lời OKz
QUIT Yêu cầu MTA nơi nhận trả lời OK và đóng phiên làm
việc