Chương trình Pop3 Client được thực thi đầu tiên khi có kết nối với Server
Mail của nhà cung cấp dịch vụ. Khi được thực thi, đầu tiên, nó sẽ lấy các thông tin
như: Tên máy hoặc địa chỉ IP Server Mail của nhà cung cấp dịch vụ, đây chính là
Server gởi Mail, username và password dùng để login vào Mailbox trên máy Server
nhận Mail, hộp thư Inbox trên máy cục bộ dùng để lưu giữ các thư được nhận về, số
lần kết nối lại nếu chương trình đang nhận mà bị ngắt giữa chừng, và thời gian
timeout trong trường hợp Server không trả lời.
160 trang |
Chia sẻ: lylyngoc | Lượt xem: 4328 | Lượt tải: 5
Bạn đang xem trước 20 trang tài liệu Đề tài Tìm hiểu về các Web server thông dụng hiện nay, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ức là chương trình MTA có thể hoạt động ở một
trong hai chế độ : Client hay Server.
Message Store (MS) :
Các Message Store là nơi các Message sau khi được tạo ra ở USER AGENT
,có thể được lưu trữ ở đó chờ MTA đến lấy và gởi đi. Đó cũng là nơi các Message sau
khi được các MTA nhận về lưu trữ ở đó chờ cho đến khi người sử dụng xem Message
này dùng một user agent.
Với sự tham gia của MS, mô hình 1988 X.400 MHS được gọi là mô hình
Store-and-Forward. Lúc này các user agent có thể gửi (submit) các Message cho
các MS hay trực tiếp gửi đến các MTA.
Một công dụng của MS là khi chương trình user agent của người nhận không
hoạt động vào thời điểm Message đến máy đó. Lúc này Message sẽ được lưu trữ trong
MS.
Message Transfer System (MTS) : Là một bộ tập hợp các MTA
Message Handling System (MHS) : Là một bộ các user agent và MTA làm
việc cộng tác nhau để truyền nhận thông điệp.
Message Handling Environment (MHE) : Bao gồm tất cả các bộ phận của
MHS, người sử dụng và môi trường truyền nhận thông điệp.
C. Mô hình Client / Server :
Một trong những nguyên tắc sử dụng mạng là cho phép chia xẻ các tài
nguyên. Việc chia xẻ này thường được thi hành bởi 2 chương trình riêng biệt, mỗi
chương trình chạy trên các máy tính khác nhau. Một chương trình được gọi là
Server, cung cấp tài nguyên, chương trình kia được gọi là Client, để sử dụng tài
nguyên đó. Các chương trình Server và Client thường là chạy trên các máy khác
nhau. Môt chương trình Server có thể cùng đáp ứng cho nhiều chương trình Client
trên nhiều máy tính khác nhau cùng một lúc.
Thông thường chương trình Server chạy trên một máy tính nào đó trong
mạng, có khả năng cung cấp một dịch vụ nào đó. Chương trình Client là chương
trình giao tiếp với người sử dụng, khi nhận yêu cầu của người sử dụng, chương
trình Client sẽ gởi các yêu cầu đến chương trình Server và chờ kết quả trả về,
chương trình Server khi nhận được yêu cầu, sẽ thi hành dịch vụ tương ứng và trả kết
quả về cho chương trình Client.
Sự liên hệ giữa chương trình Client và Server chỉ thông qua những dạng thức
thông điệp được qui định khi lập trình còn việc xử lý lại Server và hiển thị tại Client là
độc lập nhau. Do đó chương trình Client và Server có thể thay đổi thường xuyên mà
vẫn hoạt động tốt miễn sao vẫn tuân theo các giao thức truyển thông giữa chúng.
D. Giao thức TCP / IP :
Dữ liệu trong mạng được truyền và nhận thông qua các giao thức được qui
định trước. Một giao thức là một tập hợp những qui tắc cho việc truyền nhận dữ liệu
giữa các thiết bị máy tính với nhau.
TCP/ IP là tên chung cho một tập hợp hơn 100 giao thức được sử dụng để
kết nối các máy tính vào mạng, để tổ chức các máy tính và các thiết bị viễn thông
trên một mạng. Tên TCP/IP là chữ viết tắt của 2 giao thức quan trọng nhất trong
nhóm là TCP (Transmission Control Protocol) và IP (Internet Protocol)
Mạng dùng giao thức TCP/IP dữ liệu được chia thành những gói nhỏ gọi là
những packet. Khi ta gởi đi một thông điệp, TCP sẽ chia thông điệp này thành các
packet, mỗi packet được đánh dấu bởi một số thứ tự và địa chỉ của người nhận,
thêm vào đó là một số thông tin kiểm soát lỗi. Các packet này được gởi lên mạng và
công việc của IP là truyền tải chúng tới host từ xa kia. Tại nơi nhận, TCP nhận các
packet và kiểm tra lỗi, gởi trả lại nếu gói không đúng, với những gói dúng, TCP sử
dụng số thứ tự để tạo lại thông điệp ban đầu. Tóm lại công việc của IP là chuyển dữ
liệu thô - các packet từ nơi này đến nơi khác. Công việc của TCP là quản lý dòng
chảy và đảm bảo rằng dữ liệu là đúng.
TCP/IP có những đặc điểm sau :
- Độc lập với cách nối mạng
- Độc lập với phần cứng của mạng
- Các nghi thức theo tiêu chuẩn của hệ mở
- Cách đánh địa chỉ phổ dụng (Universal Addressing)
- Cung cấp một số dịch vụ mạng được sử dụng rộng rãi như Email, FTP,
Telnet…
- Là cơ sở để xây dựng các ứng dụng theo mô hình Client / Server
CẤU TRÚC CỦA MỘT BỨC MAIL
---------***--------
Về cơ bản, một bức mail bao gồm 3 phần chính: Phần phong bì: Mô tả thông
tin về người gởi và ngưòi nhận. Do hệ thống tạo ra. Phần tiêu đề (header): chứa
đựng các thông tin về người gởi, người nhận, chủ đề bức mail, địa chỉ hồi âm .v.v..
Các thông tin này một số được người sử dụng cung cấp khi gởi mail, một số khác
được chương trình mail thên vào, và số còn lại do hệ thống điền thêm. Phần nội
dung (body): chứa đựng nội dung của bức mail, là nội dung được tạo ra bởi trình
soạn thảo Editor của chương trình mail. Sau đây là chi tiết của từng phần:
A. Phần phong bì (Envelope)
Phần này do các MTA tạo ra và sử dụng, nó chứa các thông tin để chuyển
nhận email như địa chỉ của nơi nhận, địa chỉ của nơi gửi. Hay nói cách khác, nghi
thức SMTP sẽ quy định thông tin của phong bì, thông tin này được hệ thống email
đòi hỏi để chuyển dữ liệu từ một máy tính này sang một máy tính khác.
B. Phần tiêu đề (header)
Phần này cung cấp những thông tin tổng quát về email như người nhận,
người gửi, ngày giờ nhận... Cấu tạo gồm nhiều trường (field) cấu trúc mỗi trường là
một dòng văn bản ASCII chuẩn 7 bit như sau: : <nội dung của
trường> Sau đây là một số trường thông dụng và ý nghĩa của nó :
Date: Chỉ ngày giờ nhận mail.
From: Chỉ người gửi.
To: Chỉ người nhận.
Cc: Chỉ người nhận được phiên bản copy của mail.
Return-path: Chứa các thông tin để người nhận có thể phúc đáp thư trở lại
(thường cũng là địa chỉ người gửi).
Subject: Chủ đề của nội dung email.
Các trường trên là các trường chuẩn do giao thức SMTP quy định, ngoài ra
trong phần header cũng có thể có thêm một số trường khác do chương trình email
tạo ra nhằm quản lý các email mà chúng tạo. Các trường này được bắt đầu bằng ký
tự X- và thông tin theo sau là cũng giống như ta thấy trên một trường chuẩn. Ví dụ
trong chương trình của một hệ thống mail ngoài các trường chuẩn do nghi thức
SMTP quy định còn có thêm trường X-WinMail-Editor, trường này giúp cho
chương trình nhận ra những bức mail nào là do người sử dụng tạo (nếu đúng thì
cung cấp thông tin về việc nén nội dung bức mail) ra và những bức mail nào là do
một chương trình email khác tạo ra.
C. Phần nội dung (body)
Để phân biệt phần tiêu đề và phần nội dung của bức mail, người ta qui ước
đặt ranh giới là một dòng trắng (chuỗi ký tự "\r\n"). Kết thúc của phần nội dung là
chuỗi ký tự kết thúc mail: "\r\n.\r\n". Như vậy nội dung bức mail nằm trong khoảng
giữa dòng trắng đầu tiên và ký tt thúc mail và trong phần nội dung của bức mail
không được phép tồn tại chuỗi ký tự kết thúc mail. Mặt khác do môi trường truyền
thông là mạng Internet nên các ký tự cấu thành thân bức mail cũng phải là các ký tự
ASCII chuẩn.
. TÓM TẮT NHỮNG CHỨC NĂNG THÔNG DỤNG CỦA INTERNET
MAIL
----***----
Công cụ Chức năng
New message Tạo một bức thư mới
Reply to Author Trả lời thư cho tác giả (người đã gởi thư cho mình
Reply to All Trả lời thư cho tác giả và tất cả những người có địa
chỉ được ghi trong mục Cc cuả bức thư
Forward Chuyển thư đi (sẽ hiện ra một bảng để ta điền địa
chỉ nơi đến và các thông tin phụ)
Send and Receice Gởi thư (nếu như có thư trong folder Outbox) hoặc
tải các thư mới từ server về
Delete Xóa thư
Address Book Sổ điện thoại. Đây là nơi chứa địa chỉ và các thông
tin cụ thể của những người sở hữu những địa chỉ
đó
Mark as Read Đánh dấu những bức thư để cho ta biết là thư đã
được đọc
Mark as Unread Đánh dấu những bức thư để cho ta biết là thư chưa
được đọc
File Attachment Gửi thư có đính kèm theo một file nào khác (văn
bản, hình ảnh, trang web…)
Inbox Assistant Tạo ra các nguyên tắc để nhận thư và chuyển thư
đến những thư mục đã được định trước
Singature Tạo một chữ ký
Priority Tạo độ ưu tiên cho từng bức thư sẽ được gửi đi
CHƯƠNG IV
TÌM HIỂU VỀ CÁC HỆ THỐNG MAIL TRÊN HỆ ĐIỀU HÀNH LINUX
Một hệ thống mail trên hệ điều hành Linux thường bao gồm hai thành phần:
Mail User Agent (MUA) chính là giao diện của phần mềm mail được sử dụng
để soạn thảo và đọc mail.
Mail Transfer Agent (MTA) Thành phần chuyển vận mail cơ bản: được dùng
để gửi và nhận mail. Có hai MTA phổ biến được dùng trên hệu điều hành Linux và
hàng tá MUA đã có sẵn trên đó. Có nhiều phiên bản của các hệ thống mail đã có sẵn
trên Linux, mỗi phiên bản đều có sự khác nhau về vấn đề thực thi không đáng kể
lắm. Hệ thống e-mail thông thường cho Linux là Smail và Smail cũng có rất nhiều
phiên bản đã có sẵn trên Linux.
Bởi vì cả Smail và Sendmail đều được cung cấp sẵn trên hầu hết các đĩa CD-
ROM cài đặt hệ điều hành Linux cho nên người sử dụng có thể lựa chọn để có một
hệ thống thích hợp.
Với mỗi cách cài đặt riêng, cả hai hệ thống đều làm việc tốt. Nhưng trong một số
trường hợp Smail dễ dàng cấu hình và sử dụng hơn Sendmail ở một mức độ không đáng
kể, nguyên nhân chính là vì nó có phần cài đặt sẵn cho nhiều modem hơn. Để sử dụng
cho một hệ thống lớn và với các yêu cầu cấu hình đặc biệt, Sendmail thì linh hoạt hơn và
cung nhiều nhiều chức năng hơn.
Cả Smail và Sendmail đều yêu cầu phải thiết lập các thông số cho phù hợp
thông qua các file cấu hình, mặc dù quá trình cấu hình là khác nhau cho mỗi sản
phẩm. Đối với các yêu cầu email cơ bản, chẳng hạn như kết nối đến một mail server
hoặc một máy khác trong mạng, quá trình thiết lập thì hoàn toàn đơn giản và dễ
dàng thực hiện.
Khi soạn thảo một message sử dụng một MUA thông qua một giao diện
chương trình (chẳng hạn như Elm, Pine hoặc mail) trên hệ thống Linux, trình ứng
dụng sẽ gửi message đến MTA (chẳng hạn như Sendmail hoặc Smail). Ngay lập
tức, các MUA sẽ chuyển message đến một bộ phận phân phát gọi là rmail mà nó
thường đặt bí danh đến MTA cụ thể đang sử dụng. Có thể có nhiều MTA đang cùng
chạy một lúc (chẳng hạn như một cho email LAN và một cho UUCP phát), mặc dù
hầu hết các hệ thống đều chỉ sử dụng một cái thích hợp nhất.
Nếu message được gửi cho một người nào đó trên mạng LAN (hoặc đến một
máy tương tự khác), MTA có thể tìm ra các thông tin từ địa chỉ. MTA phải có thể
hiểu các bí danh thật tốt đối với các trường hợp người sử dụng gọi đến một máy
khác, một mạng hoặc những người sử dụng bằng các tên khác nhau. Nếu message
dành cho một người sử dụng từ một hệ thống xa, MTA phải có khả năng thiết lập
kết nối đến một máy khác thông qua một router (bộ dẫn đường) đến địa chỉ đích và
chuyển message đi (kết nối đó có thể là giao thức TCP hoặc UUCP). Nếu thành
công, một giao thức chuyển vận gọi là SMTP được sử dụng. Một MTA phải có khả
năng xử lý các vấn đề về chuyển phát mail, chẳng hạn như máy đích không sẵn sàng
để sử dụng hoặc user không tồn tại. Trong trường hợp đó, mail được trả về người
gửi kèm theo một thông báo lỗi.
Một hệ thống email phải có khả năng sử dụng các địa chỉ của người gửi và
người nhận theo nhiều định dạng khác nhau. Thông thường thì sử dụng địa chỉ định
dạng kiểu chấm than của UUCP, ví dụ như: merlin!brutus!tpci!com!tpaker (có
nghĩa là chuyển mail cho merlin, sau đó là brutus, và sau đó là tpci.com đến người
sử dụng tparker) hoặc tên miền, chẳng hạn như tparker@tpci.com. Kiểu UUCP thì
chỉ ra đường dẫn đầy đủ đến máy đích còn tên miền sử dụng địa chỉ quyết định hệ
thống sẽ làm việc mà không cần đường dẫn. Các kiểu địa chỉ khác cũng được sử
dụng, chẳng hạn như DECnet với địa chỉ kiểu % nhưng UUCP và các tên miền thì
được sử dụng trên hầu hết các hệ thống.
Bộ dẫn đường (Router) để đưa message mail đến đích cũng là một khía cạnh
quan trọng của phần mềm MTA và các phần mềm mail khác phụ thuộc vào UUCP
(trong trường hợp đường dẫn đầy đủ được chỉ định) hoặc tên miền (trong trường
hợp router được đưa ra) địa chỉ sử dụng. Đối với cách đánh địa chỉ dựa trên giao
thức TCP (thường sử dụng các tên miền), chức năng mặc định cho một MTA là
phát message đến máy đích dựa vào địa chỉ IP và không cần đến router, đưa đến
phần mềm IP trong các điều khiển TCP/IP.
Để đơn giản việc chuyển phát mail trong các mạng lớn hoặc các hệ thống, nơi
mà một máy đơn lẻ được đóng vai trò như bộ mặt của Internet, một mạng cục bộ có
thể đưa ra một bảng ghi MX (Mail Exchange) mà nó được hiểu bởi hệ thống tên
miền (DNS) và một chỉ thị (hoặc lệnh) đến router đối với tất cả các mail của tên
miền đó đến một máy đơn. Bản ghi MX cho phép các máy không kết nối đến
Internet tất cả thời gian để có mail nhận được từ một máy chủ, với UUCP hay là
TCP, sau đó thỉnh thoảng mới kết nối một lần. Ví dụ sau đây là kiểu của một bảng
ghi MX:
merlin.tpci.com IN MX 3 bigserver.tpci.com
Dòng trên nói về một hệ thống tên miền mà một mail bất kỳ của
merlin.tpci.com có thể gửi đến hệ thống bigserver.com. Cổng vào INTERNET nhận
biết kiểu bảng ghi tài nguyên có liên quan (rất quan trọng đối với TCP/IP) và MX
cho thấy là bảng ghi này là một bảng ghi MX. Số 3 trong ví dụ trên là một con số
ưu tiên. Trong mạng có thể có nhiều mail server, mỗi cái đều có một con số ưu tiên.
Các số mức thấp được sử dụng bởi phần mềm chuyển vận trước và chỉ chuyển lến
các số mức cao hơn khi các số mức thấp hơn không được máy trả lời tín hiệu.
Cấu trúc một thư điện tử trên Linux:
Để hiểu cách một hệ thống mail hoạt động như thế nào, cần phải biết cấu trúc
một message mail thì phải như thế nào?
Một message mail chứa một đoạn văn bản (gọi là phần body) và một phần
của thông tin ở chỗ bắt đầu một message chứa các thông tin về người gửi, nơi nó
được tạo ra… được gọi là phần header. Thông thường phần header và body của
message được cách bằng một dòng trống. Có nhiều message cũng chứa một phần dữ
liệu tại đoạn cuối của message gọi là tái bút.Tái bút là một bít dữ liệu ASCII được
viết bởi người gửi và được bao gồm trong bất một message bất kỳ khác. Nó thương
đưa ra các thông tin về người gửi và có thể chứa đứng các lời nói ngắn gọn.
Một header bao gồm 2 phần: Phần đầu tiên chứa các thông tin về người gửi
người nhận và các địa chỉ của họ. Phần này thường được gọi là phần phong bì. Phần
thứ hai chứa các thông tin để điều khiển message mail, chứa phần tiêu đề message
và chuyển vận sử dụng để gửi message, dach sách các người nhận kèm khác, ngày
giờ …
Mỗi header của một message mail chúa một số các dòng cách bở các ký tự
dòng mới. Mỗi dòng gồm một tên trường theo sau bởi một dấu : và nội dung của
trường đó. Sau đây là một ví dụ của một header:
From brutus!bignet.com Thu Sep 21 17:40:32 1995
Received: from bignet.com by tpci.tpci.com id aa00184; 21 Sep 95 17:39
EDT
Received: from mailserv.biggernet.com ([147.77.1.1]) by bignet.com with
SMTP id ; Thu, 21 Sep 1995 20:48:04 -0400
Received: by biggernet.com (4.1/SMI-4.1)
id AA00266; Thu, 21 Sep 95 17:39:03 PDT
Date: Thu, 21 Sep 1995 20:39:03 -0400
From: Yvonne
Message-Id:
To: tparker@tpci.com
Subject: Important stuff
Cc: prudie@bignet.com
Có hai trường From: Một chỉ ra máy đã chuyển mail đến hệ thống của người
sử dụng và một là địa chỉ email của người gửi. Trường này có thể có nhiều kiểu
định dạng khác nhau, bao gồm cả địa chỉ kiểu UUCP và các định dạng kiểu tên
miền đầy đủ.
Mỗi máy mà message gửi thông qua dòng địa chỉ đến trường Received chỉ ra
nơi mà message đã nhận từ đâu và nơi mà nó được nhận. Thông tin này cho phép
người sử dụng lần theo message tìm đến nơi xuất phát của nó.
Trường Date hiển thị ngày tháng mà message được gửi.
Trường Message-ID liệt kê một số nhận biết duy nhất cho message.
Trường To hiển thị tên người nhận.
Người gửi cung cấp thông tin trong trường Subject để một tả về message.
Trường CC: Chỉ người nhận được phiên bản copy của mail
Phụ thuộc vào hệ thống mà ban sử dụng, có khi phần header còn bao gồm cả
các trường sau:
Trường Repley – To: Chứa các thông tin để người nhận có thể phúc đáp thư
trở lại (thường cũng là địa chỉ người gửi)
Trường Oganization cung cấp tên công ty mà máy của công ty đó đang sử
dụng. Trường tùy chọn này thường để trống hoặc thiết lập riêng biệt cho các máy
của các tập đoàn lớn.
I. CÀI ĐẶT VÀ CẤU HÌNH CHO SENDMAIL
Hệ thống Sendmail được cấu hình chủ yếu thông qua một file nàm ở
/etc/senmail.cf (mặc dù một vài hệ thống đặt nó ở /usr/lib/sendmail.cf hoặc ở nơi
khác). Ngôn ngữ sử dụng trong file cấu hình senmail.cf thì hoàn toàn khác so với
các file cấu hình khác và rất phức tạp.
File Sendmail.cf điều khiển các chức năng mặc định của hệ thống gửi mail.
Có nhiều file khác cũng có liên qua trong quá trình cấu hình, đó là:
Decnetxtable: có nhiệm vụ đổi địa chỉ thông thường sang địa chỉ DEC.
Genericfrom: Có nhiệm vụ đổi địa chỉ bên trong sang địa chỉ thông thường.
Mailtertable: Định nghĩa các xử lý đặc biệt cho các máy chủ từ xa và các tên
miền.
Pathtable: Định nghĩa các đường dẫn UUCP đến các máy từ xa và các tên
miền.
Uucprelays: Cho phép gián tiếp đến các máy chủ từ xa.
Xaliases: Đổi địa chỉ thông thường thành địa chỉ bên trong.
Sendmail + hệ thống IDA sử dụng một bộ tiền xử lý chẳng hạn như m4 hoặc
dbm để tạo ra các file cấu hình sau khi người sử dụng chỉ định các giá trị cho các
thông số. Sau khi sử dụng bộ tiền xử lý, hệ thống sử dụng một bộ tạo file để tạo ra
các file cấu hình cuối cùng.
1. File sendmail.cf
Khi sử dụng Sendmail + IDA, file sendmail.cf không được thiết lập các giá
trị phù hợp với hệ thống và công việc của người sử dụng. Thay vì quá trình cấu hình
xử lý các thay đổi sinh ra, một quá trình cấu hình bình thường được điều khiển bởi
một file gọi là sendmail.m4, nó cung cấp các thông tin cơ bản về tên hệ thống,
đường dẫn sử dụng trên hệ thống của người sử dụng và mailer mặc định đang sử
dụng. Mặc dù việc thay đổi file sendmail.m4 có thể mất nhiều thời gian nhưng nó
cần thiết đối với các thông tin cơ bản cho việc cài đặt Linux sử dụng uucp và
SMTOP cho việc chuyển vận mail.
Phần quan trọng nhất trong file sendmail.m4 là phần khai báo các thư mục.
Phần này thường bắt đầu với một dòng khai báo LIBDIR:
dnl #define(LIBDIR, /usr/local/lib/mail)
Thư mục LIBDIR là nơi Sendmail + hệ thống IDA tìm kiếm các file định
dạng và các bảng router, thông thường dòng này được bỏ qua nhưng đường dẫn
mặc định thì nằm ở vị trí thông thường cho tất cả hệ thống Linux mail. Nếu đường
dẫn hiển thị trong Sendmail là chính xác, không cần điều chỉ lại file này. Đường dẫn
này thường ghi mã trực tiếp vào trong bộ nhị phân Sendmail và không cần thiết để
ghi đè lên bởi file sendmail.m4 (hoặc sendmail.cf). Nếu cần phải thay đổi đường
dẫn này, phải gỡ bỏ giá trị dnl ở dòng bắt đầu, thêm vào đường dẫn đúng và sau đó
lưu lại trong file sendmail.cf
Mailer cục bộ được sử dụng bởi Sendmail được khai báo tại một dòng có giá
trị LOCAL_MAILER_DEF
define(LOCAL_MAILER_DEF, mailers.linux)dnl
Dòng này là cần thiết bởi vì Sendmail không điều khiển các mail gửi đi. Một
chương trình khác sẽ đảm nhận việc này thay cho Sendmail. Mặc dịnh, giá trị dùng
cho mailer cục bộ được chứa trong một file gọi là mailers.linux. File này được
chuyển đến mục nhập LOCAL_MAILER_DEF trong file sendmail.m4, điều này có
nghĩa là người sử dụng cần phải kiểm tra file mailer.linux trong thư mục con tương
tự (thường là /usr/local/lib/mailer.linux) để chắc chắn chương trình chuyển (hoặc
một chương trình bất kỳ đã sử dụng) đã được nhập các thuộc tính.
Nội dung một file mailer.linux sẽ bao gồm như sau:
# mailers.linux
Mlocal, P=/usr/bin/deliver, F=SlsmFDMP, S=10,R=25/10, A=deliver $u
Mprog, P=/bin/sh, F=lsDFMeuP, S=10, A=sh -c $u
Một agent phát thư đi cũng được chỉ định trong file sendmail.mc, file này
được dùng để xây dựng file sendmail.cf. Nếu agent phát không chuyển thư đi, phải
kiểm tra file sendmail.mc để chắc rằng agent chuyển mail đã được thiết lập các
thuộc tính. Sendmail.mc là một file quan trọng và nó phải được đọc khi
sendmail.m4 được xử lý. Thường có một dòng khai báo trong file sendmail.m4 để
chắc rằng việc này phải xảy ra. Dòng này thường nằm ở phần đầu file sendmail.m4
include(Sendmail.mc)dnl
Người sử dụng cần phải chỉ định một vài mục nhập trong biến
PSEUDOMAINS. Biến này được dùng để điều khiển hệ thống mà nó không thể mở
rộng vào trong các tên miền một cách chính xác, thông thường là hệ thống UUCP.
Các mục nhập trong trường PSEUDOMAINS chỉ ra rằng Sendmail + IDA không
sử dụng DNS cho những mạng đó. Biến PSEUDOMAINS được khai báo như sau:
define(PSEUDODOMAINS, BITNET UUCP)dnl
Có thể sử dụng biến PSEUDONYMS để làm ẩn tên máy của người sử dụng.
Ví dụ, một mail nhận trên mạng khác sẽ chỉ thấy địa chỉ tpci.com mà không quan
tâm đến việc dù là được gửi từ merlin.tpci.com hay chatton.tpci.com. Khi sử dụng
biến PSEUDONYMS, Sendmail chấp nhận mail từ tất cả các máy được khai báo
trong trường PSEUDONYMS. Trường PSEUDONYMS được hiển thị như sau:
define(PSEUDONYMS, tpci.com)dnl
Mục vào nhày cho phép một máy tính bất kỳ của mạng tpci.com gửi mail
thông qua Sendmail.
Để định nghĩa tên máy, sử dụng biến DEFAULT_HOST. Biến này thường
được gán giá trị tên mail server của người sử dụng. Người sử dụng có thể khai báo
như sau để thiết lập tên mail server mặc định:
define(DEFAULT_HOST, merlin.tpci.com)dnl
Nếu không gán một tên đúng cho biến DEFAULT_HOST sẽ không có mail
được trả về chính xác đến hệ thống đang sử dụng.
Nếu hệ thống không phải là một cổng nối mail lên Internet (hoặc các mạng
khác được truy cập từ mạng LAN) người sử dụng có thể thiết lập cho hệ thống
Linux cho phép gửi mail lên một máy khác để xử lý bằng cách thiết lập các biến
RELAY_HOST và RELAY_MAILER trong file sendmail.m4. Các biến này sẽ đặt
tên của mail server mà tất cả các mail sẽ được chuyển đến. Ví dụ: Để thiết lập cho
hệ thống cục bộ dẫn hướng tất cả các mail bên ngoài đến một máy tên là wizard,
phải khai báo 2 dòng như sau:
define(RELAY_HOST, wizard)dnl
define(RELAY_MAILER, UUCP=A)dnl
Dòng thứ hai chỉ định mailer sử dụng để gửi message đến máy
RELAY_HOST.
2. Điều chỉnh UUCP:
Nếu phải đang làm việc với một hệ thống mail trên nền tảng UUCP, người sử
dụng phải điều chỉnh một vài mục nhập trong file sendmail.m4. Sự điều chỉnh này
là cần thiết bởi vì một hệ thống mail UUCP thường đánh địa chỉ khác so với các hệ
thống trên nền tảng DNS. Các khai báo của UUCP trong file sendmail.m4 như sau:
define(UUCPNAME, tpci)dnl
define(UUCPNODES, |uuname|sort|uniq)dnl
define(BANGIMPLIESUUCP)dnl
define(BANGONLYUUCP)dnl
Dòng đầu tiên khai báo UUCPNAME dùng để chỉ định tên của hệ thống cục
bộ trong giới hạn UUCP. Tên này có thể khác hơn tên sử dụng trong DNS, mặc dù
thông thường thì các tên đó trông cũng không khác nhau mấy.
Biến UUCPNODES khai báo lệnh sử dụng để cung cấp một danh sách tên
các host mà hệ thống kết nối tới thông qua UUCP.
Biến BANGIMPLIESUUCP để cho Sendmail biết là bất kỳ một địa chỉ nào
chứa dấu ! đều là địa chỉ kiểu UUCP. Biến BANGONLYUUCP thì làm điều ngược
lại. Cả 2 biến này thường được khai báo bởi vì một vài hệ thống DNS sử dụng
phương pháp đánh địa chỉ kiểu dấu chấm than.
3. Cấu hình các bảng định vị
Có nhiều dòng trong file sendmail.m4 dùng để khai báo các bảng cấu hình.
Các bảng cấu hình này nằm dưới thư mục khai báo bởi biến LIBDIR. Phần này
gồm các dòng sau:
define(ALIASES, LIBDIR/aliases)dnl
define(DOMAINTABLE, LIBDIR/domaintable)dnl
Có khoảng 7 file cấu được chỉ định trong toàn bộ. Người sử dụng có thể thay
đổi bất kỳ giá trị nào nếu muốn nhưng phải chắc chắn rằng việc di chuyển nó thị vị
trí được chỉ định. Để bảo đảm, tốt nhất nên gỡ bỏ các file khỏi các ví trí mặc định
của nó.
4. Cấu hình mailertable
Bảng mailertable khai báo các điều khiển đặc biệt cho cac host hoặc các tên
miền. Trong hầu hết các trường hợp, mailertable chỉ định các tên miền chắc chắn
hoặc các host được truy cập và các giao thức nào sử dụng cho các tên miền và các
host đó. Người sử dụng không phải điều chỉnh file này nếu hệ thống đang sử dụng
UUCP nhưng phải kiểm tra nội dung của nó nếu là đang sử dụng SMTP hoặc DNS.
File mailertable được dọc từ dòng đầu tiên xuống và Sendmail xử lý mail dựa
trên mỗi dòng trong file này. Trong mỗi trường hợp, nơi mà hầu hết các quy tắc chỉ
định nằm ở đầu file, theo sau bởi các quy tắc thông thường khác. Các quy tắc chỉ ra
phương thức của kết nối đầu tiên và sau đó liệt kê các hệ thống từ xa hoặc tên miền:
mailer delimiter relayname remote
Trong khai báo trên, mailer là giao thức chuyển vận được sử dụng, delimiter
là ký tự đặc biệt, relayname là tên của hệ thống chuyển mail đến và remote là host
từ xa hoặc tên miền.
Mailer có thể là các giá trị:
TCP-A: TCP với địa chỉ kiểu Internet.
TCP-U: TCP với địa chỉ kiểu UUCP.
UUCP-A: UUCP với địa chỉ kiểu Internet.
Delimiter có một ý nghĩa đặc biệt và phải là một trong cac ký tự sau:
! Gỡ bỏ tên host từ phần địa chỉ trước khi gửi đi.
, Không điều chỉnh địa chỉ cho tất cả.
: Gỡ bỏ tên host chỉ khi các host trung gian được chỉ định.
Có thể xây dựng các quy tắc mailertable một các dễ dàng khi chuyển mail
đến một mail server từ xa. Ví dụ, để bắt buộc Sendmail sử dụng UUCP thông qua
một mail server từ xa gọi là wizard kết nối đế một hệ thống từ xa roy.sailing.org,
thêm một quy tắc như sau vào file mailertable:
UUCP-A,wizard roy.sailing.org
5. File cấu hình uucprelays
File uucprelays dùng để bỏ qua đường dẫn UUCP đến một site từ xa khi một
đường dân tốt hơn đã tồn tại. Ví dụ, nếu người sử dụng thường sử dụng đường dẫn
wizard!bignet!merlin!tpci và có thể tạo ra một liên kết chỉ đường đến tpci, nên sử
dụng file uucprelays để đổi lại đường dẫn địa chỉ mail.
6. File cấu hình uucpxtalbe
File uucpxtalbe được sử dụng khi một địa chỉ kiểu UUCP được sử dụng trong
việc vận chuyển mail. File này cung cấp các chỉ dẫn cho công việc chuyển một địa
chỉ kiểu DNS sang UUCP. Nếu người sử dụng đang sử dụng một mail server khác
hơn mail server hiện tại hoặc muốn sử dụng UUCP để kết nối đến một máy cụ thể
vì độ tin cây, file này thực sự cần thiết.
File này chứa các mục vào liệt kê tên kiểu UUCP theo sau bởi tên miền:
Chatton chatton.com
Mục vào này chỉ ra rằng Sendmail mà một mail chatton.com bất kỳ nào đó
đều phải được cập nhập qua UUCP đến chatton ( đánh địa chỉ kiểu UUCP). Mục
vào này bắt buộc các địa chỉ mail đến yvone@chatton.com phải được viết lại giống
như chatton!yvone, một địa chỉ mà UUCP có thể sử dụng.
7. Xây dựng file sendmail.cf từ file sendmail.m4
Bây giờ, đã cấu hình xong file sendmail.m4 và các file có liên qua của nó, có
thể sử dụng bộ xử lý m4 để tạo ra file sendmail.cf. Một khi file sendmail.m4 đã sẵn
sàng để làm việc, bắt nguồn từ dòng lệnh:
Make sendmail.cf
Một khi file đã được tạo, chép nó sang thư mục /etc và khởi động Sendmail
với dòng lệnh:
/usr/lib/sendmail –bd –q1h
hoặc khởi động lại máy tính.
II. SỬ DỤNG SENDMAIL PHIÊN BẢN 8.0
Trên đĩa CD-ROM Linux luôn kèm theo chương trình Sendmail 8.0 và có thể
sẵn sàng cài đặt để sử dụng. Có một thay đổi nhỏ so với các phiên bản trước là
Sendmail 8.0 gồm có 4 phần khác nhau để chọn lựa.
- uucp-old: (cũng giống như uucp) : Sử dụng phiên bản này nếu cần khả năng
tương thích với các hệ thống UUCP kiểu cũ.
- uucp-new: (phiên bản mới nhất gần đây là suucp) cũng giống như Sendmail
chỉ trừ việc nó có thêm lệnh rmail để gửi đến nhiều người nhận đồng thời. Phiên
bản này không có cải tiến gì mấy so với uucp-old.
- uucp-dom: Cho phép sử dụng các địa chỉ kiểu tên miền. Phiên bản này
không có khả năng tương thích với một số hệ thống khác mà người sử dụng kết nối
đến.
- uucp-uudom: Là một sự kết hợp giữa uucp-new và uucp-dom cung cấp các
nét đặc trưng nhất của cả hai. Nó cho phép sử dụng địa chỉ kiểu UUCP và kiểu tên
miền.
Thiết lập các thư mục cấu hình cho Sendmail
Các file cấu hình Sendmail ngày càng trở nên nhỏ hơn để làm cho công việc
của người quản trị được dễ dàng hơn. Hệ thống Sendmail có các thư mục chứa các
file cần thiết cho công việc cấu hình, đó là:
- cf: Thư mục này cung cấp cho người sử dụng các thông tin về các host được
sử dụng bởi Sendmail.
- hack: Thư mục này là một danh sách của các hack được sử dụng bởi các
macro m4 để cung cấp các chỉ định mở rộng. Các thông tin mà thư mục này hỗ trợ
được cung cấp một cách hợp lý trong các file cấu hình chính.
- m4: Thư mục này cung cấp các file chứa các thông tin thích hợp cho tất cả
các file cấu hình.
- mailer: Thư mục này chứa các file định nghĩa các mailer được sử dụng bởi
m4. Các file này thường cung cấp các thông tin cho mạng cục bộ, UUCP, USENET,
phần mềm FAX …
- site config: Thư mục này chứa các thông tin về site cục bộ. Một số các site
rất quan trọng để cài đặt Sendmail và xử lý cấu hình.
III. SỬ DỤNG SMAIL
Hệ thống Smail cũng giống như hệ thống Sendmail trong hầu hết các chức
năng, mặc dù quá trình cấu hình cấu hình thì khác. Trong nhiều trường hợp, Smail
dễ dàng làm việc hơn Sendmail và nó có thể là một lựa chọn tốt cho các hệ thống
nhỏ và vừa.
Smail điều khiển việc chuyển nhận mail như thế nào?
Hệ thống Smail được quản lý bởi một daemon, được khởi tạo khi hệ thống
chạy ở chế độ nhiều người sử dụng đồng thời. Sau đó Smail chờ cho đến khi có kết
nối (thường là TCP hoặc UUCP) và sẽ xử lý tất cả các mail vừa mới được nhận.
Bởi vì Smail chạy như một daemon, điều này cho phép nó xử lý và phân phát
nhanh các mail mới nhập mà không cần khởi động một chương trình mail.
Hệ thống Smail điều khiển các mail gửi đi bằng cách sử dụng các kết nối đến
mailer của người sử dụng. Ví dụ: Nếu message được gửi từ một mailer agent chẳng
hạn như ELM hoặc mail, các chương trình dùng để gửi mail và các tên người nhận
đến rmail, một chương trình chuyển phát mail. Có một vài mailer agent gửi mail
đến chương trình Sendmail thay vì rmail. Như vậy, cả các mail nhận được và các
mail gửi đi được điều khiển bằng các liên kết giữa Smail, rmail và Sendmail.
Chương trình xử lý của Smail được chia thành 3 phần riêng biệt, bao gồm:
Bộ dẫn đường (router), Bộ chuyển hướng (director) và chuyển vận (transport).
- Bộ dẫn đường điều khiển quá trình xử lý các địa chỉ và cách mà message
được gửi đi giữa các máy
- Bộ chuyển hướng điều khiển quá trình gửi chuyển tiếp giữa các máy và giải
quyết các bí danh được sử dụng trong message.
- Bộ chuyển vận điều khiển các chuyển vận hiện tại của message.
Hầu hết các hệ thống Linux đều có chương trình Smail nằm trong thư mục
/usr/local/bin mặc dù cũng có khi chúng nằm ở thư mục khác vì thế cần phải biết
chính xác đường dẫn đến thư mục Smail để cấu hình hệ thống một cách đúng đắn.
Có thể định vị đường dẫn của nó với dòng lệnh:
Find /-name Smail –print
1. Cài đặt Smail
Hệ thống Smail đòi hỏi nhiều liên kết để Smail có thể thi hành đúng. Có 2
liên kết quan trọng hầu hết là đều đưa đến file /usr/sbin/rmail và /usr/lib/sendmail.
Các liên kết này thực sự cần thiết bởi vì hầu hết những chương trình gửi mail của
người sử dụng đều gửi mail đến hoặc là rmail hoặc là Sendmail (phụ thuộc vào
chương trình mail đang sử dụng) và các mail này còn được gửi thêm một lần nữa
đến Smail. Các liên kết cho phép quá trình chuyển hướng này xảy ra trong suốt đối
với người sử dụng và các ứng dụng mail.
Phải kiểm tra các file rmail và Sendmail có được liên kết đến Smail hay chưa,
nếu chưa có thì phải thiết lập các liên kết. Các liên kết có sẵn thường chỉ được thiết
lập tượng trưng và được hiển thị trong thư mục liệt kê các mục nhập như sau:
lrwxrwxrwx 1 root root 6 Sep 16:35 file1 -> file2
Ký tự -> chỉ ra một biểu tượng liên kết tồn tại. Hãy kiểm tra trên cả rmail và
Sendmail , nếu các biểu tượng liên kết chưa có, tạo ra chúng bằng dòng lệnh:
ln -s /usr/local/bin/smail /usr/bin/rmail
ln -s /usr/local/bin/smail /usr/lib/sendmail
Các đường dẫn cần phải được thay đổi cho phù hợp với đường dẫn của Smail,
Sendmail và rmail trên máy. Một khi các liên kết đã được tạo, kiểm tra sự tồn tại
của chúng bằng cách hiển thị các thư mục và tìm các ký hiệu biểu tượng liên kết.
Nếu Smail đã được cài đặt vào hoặc sau đó gỡ bỏ khỏi hệ thông qua một
kênh SMTP thì cũng cần phải thiết lập một liên kết giữa chương trình Smail và hệ
thống SMTP bằng dòng lệnh:
ln -s /usr/local/bin/smail /usr/sbin/smtpd
Tiếp theo, dịch vụ SMTP phải được cho phép thông qua các file cấu hình
TCP. Một file /etc/service phải được thiết lập để cho phép các kết nối SMTP thông
qua dòng lệnh:
smtp 25/tcp # Simple Mail Transfer Protocol
Phải kiểm tra nội dung của dòng này để không xảy ra tình trạng kết nối ra
ngoài. Dòng lệnh này cho phép liên kết SMTP được thiết lập giống như một cổng
TCP số 25.
Nếu lựa chọn cài đặt mặc định Smail như một daemon (tự động khởi tạo khi
khởi động hệ thống), phải chắc chắn rằng Smail daemon đã được khởi tạo trong file
rc (chẳng hạn như rc.inet2). Câu lệnh thường dùng đối với Smail daemon :
/usr/local/bin/smail -bd -q15m
Mục chọn –bd trả vệ quá trình hoạt động daemon của Smail và –q15m bắt
buộc Smail xử lý các message cứ sau 15 phút. Nếu muốn thiết lập cho quá trình
phân phát mail xảy ra thường xuyên hơn nữa hay thay đổi giá trị này.
Nếu phải lựa chọn cài đặt Smail không chạy ở chế độ giống như một daemon
và muốn nó xuất hiện bằng cách inetd mỗi khi có mail đến, điều này phải được chỉ
ra trong file rc. Bởi vì không thể vừa chạy Smail trong cả hai chế độcùng một lúc.
Tiếp đó, điều chỉnh các mục nhập trong file /etc/inetd.conf giống như sau:
smtp stream tcp nowait root /usr/sbin/smtpd smtpd
Biểu tượng liên kết giữa SMTPD và chương trình Smail phải được chỉ ra
trong dòng lệnh này để phù hợp với chức năng hoạt động.
Sự thay đổi các thiết lập trong các file cấu hình là cần thiết cho Smail, nó phụ
thuộc vào hệ thống kết nối nào đang được sử dụng đối với mail hiện tại. Ở những
nơi khác việc cấu hình còn thay đổi nếu đang sử dụng hệ thống UUCP hoặc một kết
nối TCP trên mạng. Có thể chọn cả hai giải pháp nếu cho phép mail được phân phát
thông qua cả hai giao thức.
2. Cấu hình Smail cho UUCP
Việc cấu hình hệ thống Smail để sử dụng với các message mail UUCP gửi
đến và gửi đi rất đơn giản. Chỉ cần phải điều chỉnh file cấu hình mặc định nằm ở
/usr/lib/smail/config bằng một chương trình soạn thảo ASCII bất kỳ bằng cách thay
đổi giá trị của 4 biến sau:
Visible_domain : Các tên miền site của người sử dụng có liên quan.
Visible_name: Tên miền đầy đủ của site.
UUCP_name: Tên UUCP cơ sở của site.
Smart_host: Tên của host UUCP.
3. Thiết lập các tên miền cục bộ:
Bắt đầu bằng cách thiết lập tên miền của máy cục bộ nằm trong file cấu hình
config, nơi định nghĩa biến visible_domain
# Our domain name
visible_domain = tpci;
Biến visible_domain thiết lập các tên miền site của người sử dụng trỏ tới.
Trường này được sử dụng bởi Smail để tìm ra nếu người nhận message là một user
cục bộ. Hệ thống Smail lấy message và trích ra địa chỉ của người nhận, đối chiếu nó
dựa vào tên máy cục bộ (từ dòng lệnh hostname) và tất cả các giá trị chỉ định ở
biến visible_domain. Nếu có một sự so khớp với một tên bất kỳ trong số đó,
message dành cho người nhận cục bộ. Nếu không khớp, message được chuyển ra
mạng bên ngoài.
Nếu có hơn một giá trị hợp lệ cho tên miền cục bộ, các giá trị được cách ra
bởi dấu hai chấm.
Ví dụ: visible_domain = tpci : tpci.com : tpci.uucp
Nếu site của người sử dụng được đăng ký hợp lệ trên các bảng định vị
UUCP, thêm miền UUCP vào danh sách các giá trị hợp lệ. Trường hợp sau đay là
khi người sử dụng trỏ tới miền tpci (từ tên miền đầy đủ tpci.com) và UUCP:
visible_domain = tpci : tpci.com : uucp
Khi một message được gửi ra khỏi một máy cục bộ, hệ thống Smail nối thêm
tên miền đầy đủ của máy cục bộ như một phần của thông tin dẫn đường. Tên đầy đủ
của mạng cục bộ được define trong file/ usr/ lib/ smail/ config mà dial với biến
visible_domain.
#Our domain name for outgoing mail
visible_name = tpci.com.
Giá trị visible_domain phải là một sự kết hợp của tên host và một của các tên
miền nhận được trong giá trị visible_domain. Giá trị visible_domain thường là một
tên miền đầy đủ của người sử dụng (nếu có) hoặc một tên miền đã tồn tại trong các
bảng dẫn đường khác.
4. Các tên UUCP luân phiên:
File cấu hình config đôi khi chứa một mục nhập cho một biến tên là
uucp_name. Biến này thường được gán tuỳ ý, không bắt buộc với điều kiện là các
biến visible_domain và visible_name được nhập các giá trị đúng. Biến này được
dùng khi tên của hệ thống trả về bởi dòng lệnh hostname không phải là tên được
đăng ký trong bảng định vị UUCP.
Để thiết lập giá trị cho biến uucp_name, tìm (hoặc tạo ra nếu chưa có) bởi
dòng khai báo sau:
# uucp mapping name
uucp_name = tpci.com
Nếu tên của người sử dụng được đăng ký giống như đã thiết lập trong biến
visible_name thì có thể đơn giản chỉ lặp lại giá trị trong biến uucp_name mà vẫn
không mất đi tác dụng. Nếu tên site đã thay đổi, nhập vào giá trị thích hợp để thay
thế.
5 Thiết lập UUCP Smart Host:
Một vài hệ thống sử dụng máy khác bên ngoài như một smart host để điều
khiển quá trình phát đi các message đến và nhận từ các mạng khác. Nếu đang sử
dụng một smart host, người sử dụng phải đặt tên cho nó trong file cấu hình config
đến biến smart_host.
# Smart host
smart_host = merlin;
Trong trường hợp trên, bất kỳ mail nào cho các mạng ngoài khác đều được
chuyển đi bởi Smail đến máy merlin mà máy này có thể để ý đến quá trình dẫn
đường ra khỏi mạng. Bất kỳ tên máy nào được nhận trong biến smart_host đều phải
thuộc phạm vi hoạt động của hệ thống UUCP.
6. Thiết lập kiểu phát chuyển mail:
Có thể thiết lập hệ thống Smail để xử lý mail gửi đến bằng nhiều cách khác
nhau. Có thể thiết lập Smail chứa các message gửi đến và gửi đi trong một hàng đợi
và xử lý chúng ngay sau đó hoặc xử lý ngay tức thì. Quá trình này được điều khiển
với các biến queue_only và delivery_mode.
Biến queue_only là một giá trị kiểu Boolean, nếu được thiết lập sẽ cho phép
biến delivery_mode có thể thiết lập 1 trong 3 giá trị sau:
Foreground: Xử lý các message gửi đến ngay tức thì.
Background: Message được phát đi bởi một quá trình nhỏ.
Queue: Giữ message lại để sau đó xử lý.
Một khi hàng đợi đã được phép, các message được giữ lại trong một hàng đợi
Smail (thường nằm ở /var/spool/smail/message) cho đến khi hàng đợi được xử lý.
Quá trình xử lý được điều khiển bởi chức năng –q trên dòng lệnh Smail (nếu Smail
được chạy như một daemon) hoặc bằng cách đưa ra dòng lệnh runq từ một file
crontab (nếu Smail được chạy từ inetd), để quá trình làm việc sau đó được chính
xác, runq cũng phải được liên kết Smail.
Gọi dòng lệnh khởi động từ file rc:
/usr/local/bin/smail/ -bd –q15
Chú ý là hàng đợi được xử lý cứ mỗi sau 15 phút, trong ví dụ trên, dòng lệnh
xử lý hàng đợi có thể được thiết lập bất kỳ giá trị nào, nhưng phải không được quá
dài để các file hàng đợi không nhận quá nhiều. Và cũng có thể hiển thị nội dung
hiện tại của hàng đợi Smail bằng cách đưa ra dòng lệnh với chức năng –bd hoặc với
dòng lệnh mailq (cũng được liên kết đến Smail).
7. Gỡ rối Smail
Trên hệ điều hành Linux, Smail sử dụng 2 file log để ghi lại các công việc.
Hầu hết các công việc đều được ghi lại trong file /var/spool/smail/log/logfile. Mỗi
mục nhập trong trong file log tương ứng với một công việc Smail đã hoàn tất và
chứa đứng thống số xác minh của message, người gửi, người nhập, time, kích cỡ và
thông tin dẫn đường. Người sử dụng có thể xem nội dung của file log để kiểm tra hệ
thống Smail làm việc được tốt hơn.
Các lỗi và các vấn đề khác được ghi trong file paniclog
(/var/spool/smail/log/paniclog). Một mục nhập trong file này cho thấy thông tin cơ
bản về message và cả các lý do mà message không được gửi đi. Ví dụ: Các lỗi
chung hầu hết là lỗi dẫn đường message thông qua SMTP
(ERR_148) transport smtp: connect: Connection refused
Nếu tìm thấy các lỗi này trong file paniclog thì điều này có nghĩa là SMTP đã
bị lỗi, kết nối không được trả lời bởi vì một host từ xa không còn nữa hoặc dịch vụ
TCP đã không được phép.
Nếu mục nhập trong file paniclog không thể giúp người sử dụng giải quyết
được vấn đề thì có thể cho phép một trình gỡ rối trên Smail bằng cách thêm vào
chức năng –d theo sau một con số trong dòng lệnh khởi động. Con số cho thấy số
lượng thông tin gỡ rối được sinh ra và hiển thi trên màn hình. .
Nếu không nhận được bất kỳ mail nào chuyển đến mailbox của người sử
dụng, kiểm tra tên đường dẫn của file mailbox. Nếu không chắc chắn nơi chứa
mailbox, cố gắng tạo ra liên kết giữa
/usr/spool/mail/username và /var/spool/mail/username
8. Điều chỉnh cách vận hành Smail:
Ba thành phần cơ bản của Smail (rooter, director và transport) có thể được
cấu hình để điều chỉnh quá trình vận hành của chúng. Nhưng người sử dụng chỉ cần
xem xét chi tiết thành phần rooter còn hai thành phần còn lại đều được tùy biến
trong quá trình cài đặt Linux đầy đủ.
Trong hầu hết các trường hợp, quá trình vận hành của mỗi thành phần trong
Smail được điều khiển bởi một hoặc nhiều file dựa vào thư mục cấu hình Smail
(/usr/lib/smail). Tùy theo file cấu hình có sẵn từ các đĩa CD-ROM hoặc từ các site
FTP Linux mà nó sẽ đưa ra các cấu hình khác nhau. Tìm một trong những file này
và sau đó hiệu chỉnh nó cho phù hợp với hệ thống đang sử dụng.
Thành phần router của Smail điều khiển quá trình xử lý các địa chỉ đích, dẫn
đường đến mail host kế tiếp cho quá trình gửi message được xa hơn và xác định
kiểu chuyển vận nào sẽ được sử dụng để gửi message đi. Thành phần rooter thực
hiện một số tác vụ, đầu tiên là việc xác định nếu message gửi đến một máy cục bộ
hay một máy từ xa (sử dụng các giá trị biến được khai báo trong
/usr/lib/smail/config). Nếu message dành cho máy cục bộ, message sẽ được chuyển
sang director.
Nếu message dành cho một máy từ xa, địa chỉ của message được đưa đến
router driver để xác định host nào mà message chuyển đến. Router driver được chỉ
định trong file router (/usr/lib/smail/router). File này chứa tên các router driver, mỗi
router driver được nhận địa chỉ đích của message để nhận ra nếu chúng có thông tin
yêu cầu về router cụ thể để gửi message.
Nếu đang sử dụng cả kết nối SLIP/PPP lẫn UUCP người sử dụng có thể gặp
một số vấn đề đối với Smail là phải chờ đợi quá lâu cho một phiên kết nối. Để đơn
giản kiểu cài đặt này, sắp xếp lại trật tự các router và kiểm tra đường dẫn file trước
khi giải quyết các router.
Khi một router nhận ra đường đi tốt nhất đến một máy đích, nó cũng nhận
một transport được yêu cầu để liên lạc với router mail của máy đó. Đường dẫn thực
sự đến máy đích có thể được hiệu chỉnh tại một số thời điểm. Ví dụ, nếu một máy
tính từ xa chatton@bigcat.com có thể được truy cập đến tốt nhất thông qua một liên
kết UUCP thay vì SMTP, các địa chỉ đích có thể được điều chỉnh lại bởi router đến
bigcat!chatton (kiểu địa chỉ UUCP). Như vậy một địa chỉ đích có thể trở nên cụ thể
và rõ ràng hơn. Ví dụ, địa chỉ chatton@bigcat.com có thể được giải quyết để chỉ
định một máy khác chẳng hạn như chatton@whisker.bigcat.com nếu địa chỉ đó sẽ
nhận message chuyển đến hiệu quả hơn.
9. Cấu hình Smail để sử dụng với hệ thống TCP
Nếu cần phải sử dụng một kết nối mạng truyền mail thì cần phải điều chỉnh
lại file config để chỉ định các kiểu kết nối và các tên host. Có nhiều cách để cấu
hình các hệ thống mail cho một mạng. Các cách nào bao gồm sử dụng hệ thống
NFS (Network File System) để cho phép một file cấu hình đơn lẻ chia sẻ với tất cả
các máy, sử dụng POP hoặc IMAP để điều khiển mail trên một site trung tâm và cài
đặt lên mỗi máy như một bộ điều khiển mail độc lập. Quá trình cấu hình cho tất cả
các phương thức đó thì phần nhiều là giống nhau. Chỉ khác nhau ở chỗ có hay
không các file cấu hình đặt trên mỗi máy trong mạng hoặc một máy đơn lẻ được
truy cập sau đó bằng NFS hoặc SMTP bởi các máy khác.
Bắt đầu quá trình cấu hình bằng cách thiết lập các tên miền cục bộ sử dụng
các biến visible_domain và visible_name.
Ví dụ:
# Our domain name
visible_domain=tpci.com
# Our domain name for outgoing mail
visible_name=tpci.com
Đoạn mã này thiết lập tên miền cục bộ và các tên miền quyết định. Mục nhập
cho biến visible_domain được sử dụng bởi Smail để gửi đính kèm đến tất cả các
mail gửi đi. Cả hai biến thường được gán giống nhau.
Bước cấu hình kế tiếp là thiết lập tên của smart_host điều khiển các message
ra ngoài mạng cục bộ. Nếu không sử dụng smart_host hoặc máy của người sử dụng
điều khiển các kết nối mạng đến chính nó thì không cần những giá trị này. Các biến
có liên quan trong việc cài đặt lên một smart_host là smart_path ( chỉ định tên máy
smarthost) và smart_transport (chỉ định kiểu phương thức sử dụng để kết nối đến
smarthost).
Ví dụ:
# smart host routing
# smart host name
smart_host=merlin
# communications protocol to smart host
smart_transport=smtp
Giá trị smart_transport của SMTP được sử dụng để nhận biết giao thức kết
nối SMTP.
C. HIỆN THỰC CHƯƠNG TRÌNH
Trên cơ sở lý thuyết tìm hiểu về Mailing list và các Mail system em tiến
hành xây dựng mô phỏng một hệ thống mail với các chức cơ bảng như năng gửi
và nhận mail dựa trên 2 giao thức truyền nhận cơ bản là SMTP và POP3. Chương
trình này là một chương trình Mail Client được viết bằng ngôn ngữ lập trình
PERL
Phần sau đây sẽ trình bày các lưu đồ thực hiện của chương trình và lưu đồ
của các giao thức truyền nhận mail SMTP và POP3.
Lưu đồ tổng quát:
LOGIN
EXIT
Logout
CHECK
MAIL
SEND
MAIL
MENU
HOẠT ĐỘNG CỦA CHƯƠNG TRÌNH POP3CLIENT:
Chương trình Pop3 Client được thực thi đầu tiên khi có kết nối với Server
Mail của nhà cung cấp dịch vụ. Khi được thực thi, đầu tiên, nó sẽ lấy các thông tin
như: Tên máy hoặc địa chỉ IP Server Mail của nhà cung cấp dịch vụ, đây chính là
Server gởi Mail, username và password dùng để login vào Mailbox trên máy Server
nhận Mail, hộp thư Inbox trên máy cục bộ dùng để lưu giữ các thư được nhận về, số
lần kết nối lại nếu chương trình đang nhận mà bị ngắt giữa chừng, và thời gian
timeout trong trường hợp Server không trả lời.
Kế tiếp, chương trình sẽ khởi tạo các signal dùng để xử lý các biến cố có thể
xảy ra trong quá trình nhận Mail, ví dụ: đường truyền bị ngắt, timeout,…. Nếu các
biến cố này xảy ra thì quá trình sẽ gọi các hàm cài đặt sẳn đi kèm với biến cố để xử
lý.
Tiếp theo, chương trình sẽ thực hiện việc kiểm tra lại xem username và
password dùng để đăng nhập vào Mailbox của Server Mail đã có trong cấu trúc
POP3_SERVER chưa, nếu đã có thì chương trình sẽ dùng username và password
này để thực hiện quá trình login vào Mailbox của Server, nếu chưa có thì sẽ hiển thị
yêu cầu nhập vào username và password để thực hiện quá trình login.
Sau đó, Pop3Client sẽ mở một socket để thực hiện một kết nối tới Server
nhận Mail, mà tên hoặc địa chỉ IP của computer mà chương trình Pop3Server đang
chạy được lưu giữ trong trường host của cấu trúc POP3_SERVER. Nếu là tên,
chương trình sẽ thực hiện việc chuyển đổi sang địa chỉ IP để thực hiện kết nối.
Nếu kết nối thực hiện thành công, Pop3 Client sẽ nhận được một lời chào
được gởi tới bởi Pop3 Server và session sẽ bước vào quá trình AUTHORIZATION.
Lúc này, Pop3Client sẽ gởi username và password tới cho Pop3Server kiểm tra.
Nếu quá trình AUTHORIZATION thực hiện thành công, session sẽ bước
vào quá trình TRANSACTION, nếu không thành công, Pop3Server sẽ gởi thông
báo lỗi lại cho Pop3Client. Lúc này, Pop3Client có thể thực hiện việc đăng nhập lại
với username và password khác hoặc có thể gởi lệnh “QUIT” để thoát.
Bước vào quá trình TRANSATION, đầu tiên Pop3 Client sẽ gởi lệnh
“STAT” tới server để kiểm tra xem có mail trong mailbox hay không. Nếu có,
server sẽ trả về tổng số thư hiện có trong mailbox và kích thước của mailbox. Tiếp
đó, Pop3Client sẽ gởi lệnh “LIST” để lấy kích thước của từng message.
Sau khi có được tổng số message có trong mailbox, Pop3 Client sẽ bước vào
vòng lặp dùng để nhận mail, với mỗi bước của vòng lặp sẽ thực hiện một lệnh
“RETR” với số thứ tự tương ứng với chỉ số của vòng lặp dùng để nhận message
tương ứng.
Sau khi nhận xong message, Pop3Client sẽ gởi lệnh “DELE i” tới server để
xóa message này.
Sau khi lấy hết các message có trong mailbox của server, Pop3Client sẽ gởi
lệnh “QUIT” tới server để yêu cầu server chuyển Pop session sang trạng thái
Update và thoát.
Đối với Server, khi bước vào trạng thái UPDATE, nó sẽ xóa thật sự các
message đã được đánh dấu xóa trong Mailbox vào đóng kết nối. Nếu một kết nối đã
đóng lại mà Server không bước vào trạng thái UPDATE thì các message được đánh
dấu xóa sẽ không được xóa trong Mailbox mà nó sẽ trở lại trạng thái ban đầu.
Tạo socket
Connect server No
Lưu Đồ Cho Getmail
Lưu Đồ Cho Getmail (Tiếp tục)
No
1
Xử lý hàng nhận được lấy
tổng số message
Gán i=1
Gởi lệnh
RETR i
Đọc từng vào từng dòng từ
socket và ghi File cho đến khi
kết thúc bức mail.
incr i
i <= số msg
Gởi lệnh QUIT
Đóng Socket
Yes
HOẠT ĐỘNG CỦA CHƯƠNG TRÌNH SMTP CLIENT
Chương trình smtp client sẽ thực hiện lần lượt theo sơ đồ sau:
Yes
Deliver mail và tạo back up
nếu có yêu cầu
Đóng kết nối
Mở và đọc file outbox
Có thư cần gởi?
Tạo socket kết nối tới server
Thoát và báo lỗi tương ứng
No
END
BEGIN
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
TRƯỜNG ĐẠI HỌC THUỶ SẢN
KHOA CÔNG NGHỆ THÔNG TIN
ĐỀ CƯƠNG VIẾT ĐỒ ÁN TỐT NGHIỆP
Họ tên sinh viên: Đặng Vũ Quốc Khánh
Lớp 39TH – Hệ chính quy.
Giáo viên hướng dẫn: Thầy Nguyễn Ngọc Bình
Thời gian làm đồ án tốt nghiệp: Từ ngày 21/4/2002 đến 25/9/2002
Tên đồ án:
- Tìm hiểu về các Web Server thông dụng hiện nay.
- Tìm hiểu về Mailing list và các Mail system.
- Xây dựng một chương trình Internet mail.
Đề cương viết đồ án:
A. CÁC YÊU CẦU CỦA ĐỀ TÀI
B. CƠ SỞ LÝ THUYẾT
Chương I: Tìm hiểu về các Web Server thông dụng
Chương II: Các nghi thức truyền nhận
Phần I: Giao thức SMTP
Phần II: Giao thức POP3
Chương III: Giới thiệu về Internet Mail
Chương IV: Tìm hiệu về các hệ thống mail trên hệ điều hành Linux
C. HIỆN THỰC CHƯƠNG TRÌNH
Các file đính kèm theo tài liệu này:
- Đồ án tốt nghiệp - Phân tích thiết kế hệ thống - Tìm hiểu về các Web server thông dụng hiện nay.pdf