Mail Server Trang 1
Mộ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
Mail Server Trang 2
Cấ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.
Mail Server Trang 3
Ngườ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
Mail Server Trang 4
Mộ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ó.
Mail Server Trang 5
Low-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:
Mail Server Trang 6
Content-Type: text/plain; charset=us-ascii
chỉ 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:
Return address
Recipient #1
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:
[email protected]
To:
[email protected]
Cc:
[email protected]
Subject: Hello there
Body:
Just a quick note to let you know I'm alive.
Have a nice day.
Mail Server Trang 7
Địa chỉ
Đị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.
Mail Server 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
MAIL FROM:
RCPT TO:
DATA
RSET
SEND FROM:
SOML FROM:
SAML FROM:
VRFY
EXPN
HELP [ ]
NOOP
QUIT
TURN
Lệnh Chức năng Ví dụ
Mail Server Trang 9
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:
[email protected]
RCPT Chỉ ra 1 người nhận riêng biệt. Nếu có nhiều RCPT TO:
người nhận thì sẽ có nhiều RCPT
[email protected]
DATA Bắt đầu nhập nội dung thư. Nội dung thư có thể DATA
chứa ký tự ASCII 128 bit bất kỳ nào. Subject: Hi!
Nội dung thư kết thúc bằng chuổi …
. .
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 Khởi động 1 giao tác chuyển mail trong đó mail sẽ
(SEND được chuyển đến 1 hoặc nhiều đầu cuối
OR (terminal) hoặc các hộp thư. Nếu người dùng đang
MAIL ) 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 Khởi động 1 giao tác chuyển mail trong đó mail sẽ
(SEND được chuyển đến 1 hoặc nhiều đầu cuối
AND (terminal) và các hộp thư.
MAIL )
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.