Với tiến trình con mỗi yêu cầu được xử lý bởi một luồng riêng.Vì thế tiến trình quản lý các chỉ thị là khác nhau: + Các chỉ thị mà chấp nhận các tên file như các đối số phải sử dụng các
Trang 1Quá trình cấu hình sẽ được bắt đầu bằng cách tham khảo httpd.conf và các chỉ thị của nó Mặc dù các file access.conf và srm.conf còn tồn tại song chúng là những file
cũ mà không được sử dụng nhiều bởi hầu hết các nhà quản trị và người sử dụng sẽ không tìm thấy bất kỳ chỉ thị nào ở đó
Httpd.conf chứa rất nhiều các tư liệu của chính nó, được sinh ra bởi các chỉ thị cấu hình mặc định gửi gắm khi khởi động với Apache server Bắt đầu bằng cách đọc các lời chú thích để hiểu file cấu hình và làm một số thay đổi nhỏ, khởi động lại Apache trong một cửa sổ giao tiếp với mỗi thay đổi Nếu người sử dụng tạo ra một lỗi, nó sẽ
dễ dàng sao lưu để định dạng lần làm việc cuối cùng
Các khác nhau của Apache trên Windows chính là:
+ Bởi vì Apache trên Windows thì đang luồng, nó không sử dụng các tiến trình riêng biệt cho mỗi yêu cầu như là của Unix Thay cho việc thường chỉ có 2 tiến trình đang chạy: Một tiến trình cha và một tiến trình con để xử lý các yêu cầu Với tiến trình con mỗi yêu cầu được xử lý bởi một luồng riêng.Vì thế tiến trình quản lý các chỉ thị là khác nhau:
+ Các chỉ thị mà chấp nhận các tên file như các đối số phải sử dụng các tên file kiểu Windows thay cho các tên file Unix Tuy nhiên, bởi vì Apache server sử dụng các tên file kiểu Unix bên trong, phải tiến hành cắt bớt, không cắt phần sau Các ký tự điều khiển có thể được sử dụng, nếu bỏ qua, ký tự điều khiển với Apache khả thi sẽ đảm nhận
+ Apache trên Windows có khả năng nạp các mô đun ngay khi chay mà không biên dịch lại server Nếu Apache biên dịch bình thường, nó sẽ cài đặt một số mô đun tuỳ
Trang 2chọn trong thư mục /module, để kích hoạt chúng hoặc các mô đun khác sử dụng lệnh sau đây:
LoadModule status_module modules/mod_status.so
+ Apache cũng có thể nạp các phần mở rộng ISAPI (các dịch vụ ứng dụng Internet) chẳng hạn các ứng dụng được sử dụng bởi Microsoft IIS và các server Windows khác (Chú ý: Apache không nạp các bộ lọc ISAPI)
+ Khi đang chạy CGI script, các phương thức Apache tìm kiếm các giải thích cho script được cấu hình đang sử dụng chỉ thị ScriptInterpreterSource
9 Apache và các dịch vụ hỗ trợ:
a) HTTPD:
Tên dòng lệnh:
httpd [ -X ] [ -R libexecdir ] [ -d serverroot ] [ -f config]
[ -C directive ] [ -c directive ] [ -D parameter ]
Mô tả:
là một chương trình HTTP server Nó được thiết kế để chạy như một tiến trình deamon một mình Khi dùng đến dịch vụ này, nó sẽ tạo ra một nhóm các tiến trình con để đáp ứng các yêu cầu Để ngừng dịch vụ này, nó sẽ gửi một tín hiệu TERM đến tiến trình cha PIG của tiến trình này sẽ ghi lên một file và dưa vào file cấu hình HTTPD sẽ được gọi bởi Internet deamon inetd mỗi khi có một kết nối đến dịch vụ HTTP đã được thiết lập
Các đối số cụ thể của dòng lệnh
-R libexecdir: Tham số này chỉ có hiệu lực nếu Apache được cài đặt với tập SHARED_CORE cho phép, nó tác động đến nhân nhị phân của Apache để thay thế
Trang 3vào trong một file đối tượng chia xẻ động (DSO) File này được dò tìm trên một đường dẫn hardcoded bên dưới ServerRoot mặc định
-d serverroot: Thiết lập giá trị ban đầu của chỉ thị ServerRoot đến serverroot Chức năng này có thể bị bỏ qua bởi dòng lệnh ServerRoot trong file cấu hình Mặc định server root là usr/local/apache
-f : Thực thi các lệnh trong file config khi Startup Nếu file config không bắt đầu với a/, lúc đó nó sẽ lấy một một đường dẫn có liên quan đến ServerRoot Mặc định của nó là conf/httpd.conf
-C directive: Thực hiện cấu hình các chỉ thị trước khi đọc file config
-c directive: Thực hiện cấu hình các chỉ thị sau khi đọc file config
-D parameter: Thiết lập một thông số cấu hình mà nó có thể sử dụng với cặp thẻ
<IfDefine> … </IfDefine> trong các file cấu hình để bỏ qua có điều kiện hoặc thực hiện các lệnh
Trang 4Restart: Khởi động lại Apache deamon bằng cách gửi cho nó một SIGHUP Lệnh này tự động kiểm tra các file cấu hình qua văn bản cấu hình trước khi bắt đầu khởi động lại để chắc chắn rằng Apache vẫn còn đang hiện diện trong máy
Fullstatus: Hiển thị đầy đủ các báo cáo trạng thái từ mod_status Để lệnh này được thi hành, cần phải cho phép mod_status trên server và một trình duyệt text_based chẳng hạn như Lynx có sẵn trong hệ thống URL sử dụng nó để truy cập bản báo cáo trạng thái có thể được thiết lập bằng giá trị STATUSURL có sẵn trong script Status: Hiển thị ngắn gọn bảng trạng thái giống như chức năng fullstatus trừ phi danh sách các yêu cầu phục vụ thời bị bỏ quên
Configtest: Chạy một đoạn văn bản các cụ pháp của file cấu hình Nó phân tích các file cấu hình và các bảng Syntax Ok hoặc thông tin chi tiết về các lỗi cú pháp đặt biệt
Help: Hiển thị các thông báo lỗi được sắp xếp
c) APXS
Tên dòng lệnh:
apxs -g [ -S variable=value ] -n name
apxs -q [ -S variable=value ] query
apxs -i [ -S variable=value ] [ -n name ] [ -a ] [ -A ] dsofile
apxs -e [ -S variable=value ] [ -n name ] [ -a ] [ -A ] dsofile
Mô tả:
Là một công cụ để xây dựng và các đặt các mô đun mở rộng cho Apache HTTP server Được thực hiện bằng cách cài đặt một DSO từ một hay nhiều nguồn hoặc
Trang 5đối tượng file mà sau đó nó có thể nạp vào Apache trong thời gian chương trình đang chạy qua chỉ thị LoadModule từ mod_so
Để sử dụng kỹ thuật mở rộng này, máy tính của người sử dụng phải hỗ trợ DSO và Apache HTTPD nhị phân phải được xây dựng với mô đun mod_so Công cụ apxs sẽ
tự động nhắc nhở nếu là các trường hợp ngược lại Ta cần phải kiểm tra việc này bằng dòng lệnh:
$ httpd -l
mô đun mod_so phải có trong danh sách được hiển thị Nếu các yêu cầu này được thỏa mãn, thì có thể dễ dàng mở rộng các chức năng của Apache server bằng cách cài đặt các mô đun của mình với kỹ thuật DSO bằng công cụ apxs này
Ví dụ:
$ apxs -i -a -c mod_foo.c
gcc -fpic -DSHARED_MODULE -I/path/to/apache/include -c mod_foo.c
ld -Bshareable -o mod_foo.so mod_foo.o
cp mod_foo.so /path/to/apache/libexec/mod_foo.so
chmod 755 /path/to/apache/libexec/mod_foo.so
[activating module `foo' in /path/to/apache/etc/httpd.conf]
$ apachectl restart
/path/to/apache/sbin/apachectl restart: httpd not running, trying to start
[Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): loaded module foo_module /path/to/apache/sbin/apachectl restart: httpd started
Các đối số File có thể là bất kỳ một file nguồn c (.c), file đối tượng (.o) hoặc ngay
cả một thư việc lưu trữ (.a) Công cụ apxs tự động công nhận các phần mở rộng này
Trang 6và tử động sử dụng các file nguồn C cho việc biên dịch trong khi nó chỉ sử dụng các file đối tượng và lưu trữ cho giai đoạn liên kết Nhưng khi sử dụng nhiều đối tượng trước biên dịch , phải chắc chắn rằng chứng được liên kết cho PIC để có thể sử dụng chúng cho một DSO Cho ví dụ với GCC, người sử dụng luôn chỉ phải sử dụng –fpic Đối với các các biên dịch C khác yêu cầu phải tham khảo tài liệu hướng dẫn của nó hoặc chờ đợi các cờ apxs, để biên dịch các file đối tượng
Các đối số cụ thể của dòng lệnh:
- n name: Thiết lập tên mô đun cho chức năng –i (cài đặt) và –g (tạo khuôn mẫu)
Sử dụng nó để chỉ ra tên mô đun Chức năng –g là bắt buộc, chức năng –I thì có tác dụng khiến công cụ apxs cố gắng xác định tên từ nguồn hoặc ít nhất cũng đoán được từ tên file
-q : Thực hiện ruy vấn cho apxs về các cài đặt nào đó Tham số truy vấn có thể là một hoặc nhiều các giá trị:
Sử dụng các chức năng này để hướng dẫn xác định các thông số cài đặt:
INC = I ‘apxs –q INCLUDEDIR’
bên trong các Makefile nếu cần hướng dẫn các truy cập đến các file tiêu đề của Apache
Trang 7-S variable = value: Chức năng này thay đổi các cài đặt apx đi kèm với các giá trị đặc biệt theo sau như:
• Chức năng tạo ra một khuôn mẫu:
-q: chức năng tạo ra một thư mục con và 2 file trong đó: Một file nguồn ví dụ mô đun tên là mod_name.c mà nó có thể sử dụng như một khuôn mẫu cho việc tạo các
mô đun của chính người sử dụng hoặc như một quá trình khởi động nhanh cho việc chạy các kỹ thuật apxs Và một mẫu thư Makefile với mục đích là dễ tạo và cài đặt các mô đun này
• Chức năng biên dịch DSO:
-c : Chức năng này chỉ ra thao tác biên dịch Đầu tiên nó biên dịch các file nguồn C (.c) của files vào trong các file đối tượng tương ứng (.o) và sau đó cài đặt một DSO vào trong dsofile bằng cách liên kết các file đối tượng này cùng với các file đối tượng còn lại (.o và a) của files
-o dsofile: Chỉ ra tên file của file DSO đã tạo Nếu không có sự chỉ định và tên file không thể đoán được từ bảng liệt kê các file, tên dự phòng mod_unknow.so được
sử dụng
• Chức năng cài đặt và định dạng DSO:
-i : Chức năng này để chỉ thao tác cài đặt và cài đặt một hoặc nhiều hơn các DSO vào trong thư mục libexec của server
-a : Chức năng này để chỉ thao tác kích hoạt đến mô đun bằng cách tự động thêm vào một dòng LoadModule đến file cấu hình httpd.conf của Apache hoặc cho phép
nó thực thi nếu đã tồn tại
Trang 8-A :Chức năng này cũng giống như –a nhưng nó tạo một chỉ thị LoadModule được đặt thêm vào một dấu (#), có nghĩa là mô đun chỉ cho phép cho các thi hành ngay sau đó còn lúc đầu thì bị cấm
-e : Chức năng này dành cho thao tác hiệu chỉnh, có thể sử dụng kèm với chức năng –a và –A, cũng giống như chức năng –I: Thao tác hiệu chỉnh file cấu hình httpd.conf của Apache mà không cố găng cài đặt các mô đun
Ví dụ:
Giả sử người sử dụng đã có sẵn một mô đun Apache tên là mod_foo.c mà nó sẽ mở rộng chức năng server của Apache Để làm việc đó, trước hết cần phải biên dịch một nguồn C vào trong một DSO phù hợp cho việc nạp vào trong Apache server
Có thể sử dụng lệnh sau:
$ apxs -c mod_foo.c
gcc -fpic -DSHARED_MODULE -I/path/to/apache/include -c mod_foo.c
ld -Bshareable -o mod_foo.so mod_foo.o
$ _
Sau đó tiến hành cập nhật cấu hình Apache bằng cách chắc chắn rằng một chỉ thị LoadModule được đưa ra để nạp DSO này Để đơn giản bước này, apxs cung cấp một cách tự động cách cài đặt DSO vào trong thư mục libexec và cập nhật file httpd.conf
Bằng cách sử dụng các lệnh:
$ apxs -i -a mod_foo.c
cp mod_foo.so /path/to/apache/libexec/mod_foo.so
chmod 755 /path/to/apache/libexec/mod_foo.so
Trang 9[activating module `foo' in /path/to/apache/etc/httpd.conf]
$ _
Cách này là một dòng lệnh có tên:
LoadModule foo_module libexec/mod_foo.so
được thêm vào để cấu hình file nếu vẫn chưa được đưa ra Nếu muốn cấm thao tác này sử dụng thêm vào chức năng –A
$ apxs -i -A mod_foo.c
Để kiểm tra nhanh apxs, người sử dụng tạo ra một mẫu ví dụ mô đun Apache cùng với một thư từ Makefile bằng cách:
$ apxs -g -n foo
Creating [DIR] foo
Creating [FILE] foo/Makefile
Creating [FILE] foo/mod_foo.c
gcc -fpic -DSHARED_MODULE -I/path/to/apache/include -c mod_foo.c
ld -Bshareable -o mod_foo.so mod_foo.o
apxs -i -a -n "foo" mod_foo.so
cp mod_foo.so /path/to/apache/libexec/mod_foo.so
Trang 10chmod 755 /path/to/apache/libexec/mod_foo.so
[activating module `foo' in /path/to/apache/etc/httpd.conf]
apachectl restart
/path/to/apache/sbin/apachectl restart: httpd không chạy,cố gắêng khởi động
[Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): nạp foo_module
/path/to/apache/sbin/apachectl restart: httpd khởi động
$ _
Người sử dụng có thể sử dụng apxs để biên dịch các mô đun phức tạp bên ngoài cây nguồn Apache, cũng như PHP bởi vì apxs tự động chấp nhận nguồn C và các file đối tượng
10 Biên dịch Apache trên Windows:
Để biên dịch Apache đòi hỏi Microsoft Visual C++ 5.0 hoặc 6.0 phải được cài đặt sẵn sàng Nó có thể được cài đặt với các công cụ dòng lệnh hoặc với môi trường Viual Studio Tham khảo sách hướng dẫn C++ để xác định cách cài đặt chúng Đặc biệt nhất là nhận thấy file vcvars32.bat từ thư mục Program Files/DevStudio/VC/bin và và file setenv.bat từ Platform SDK được yêu cầu để chuẩn bị các công cụ dòng lệnh cho việc sử dụng dòng lệnh Để cài đặt Apache với file Makefile.win hoặc dự án Install.Bin trong Visual Studio IDE, tiện ích awk cũng được yêu cầu
Đầu tiên bản phải cài đặt awk.exe ở nơi nó có thể được tìm thấy trong đường dẫn và môi trường DevStudio nếu dự định sử dụng IDE, có nhiều phiên bản của awk sẵn có trên Windows Cách dễ nhất là cài đặt bằng cái có sẵn được tải xuống từ
Trang 11http://cm.bell-labs.com/cm/cs/who/bwk/awk95.exe và nên lưu nó với tên awk.exe hơn là awk95.exe
Sau đó bung gói Apache đưa vào trong một thư mục thích hợp, mở cửa sổ dòng lệnh và thay đổi thư mục con src của Apache Các tài liệu chính cung cấp cho các file tạo Apache được chứa trong file Makefile.win Để biên dịch Apache trên Windows chỉ cần sử dụng các dòng lệnh:
nmake /f Makefile.win _apacher (release build)
nmake /f Makefile.win _apached (debug build)
Nếu được một thông báo lỗi kiểu như "the name specified is not recognized " thì phải chạy file vevas32.bat trước: bằng dòng lệnh sau:
"C:\Program Files\DevStudio\VC\Bin\VCVARS32.BAT"
(cần phải sửa đổi dòng lệnh này nếu VC được cài ở nơi khác)
Sau đó chạy nmake một lần nữa
Apache cũng có thể được biên dịch với môi trường Visual Studio development của VC++ Để đơn giản tiến trình này một vùng làm việc Visual Studio, Apachedsw (được cung cấp trong thư mục src) đưa ra danh sách lối vào của các dự án working.dsb được yêu cầu để hoàn thành Apache (binary release) Nó cung cấp các phần phụ thuộc giữa các tiến trình Nó bao gồm cả các phần phụ thuộc giữa các dự
án để đảm bảo rằng chúng được cài đặt theo một trật tự thích hợp InstallBin là một
dự án cao cấp mà nó sẽ cài đặt tất cả các dự án, và cài đặt các file biên dịch vào nơi thích hợp của nó
Các nhân dự án dsp được cài đặt bởi Apache.dsw và makefile.win là:
os\win32\ApacheOS.dsp
Trang 12ApacheCore.dsp yêu cầu tất cả các file ở trên
Apache.dsp yêu cầu ApacheCore
Trong phần thêm vào, thư mục con os/win32 chứa các file dự án cho các mô đun chức năng, tất cả chúng đều yêu cầu ApacheCore
Trang 13nmake /f Makefile.win installd INSTDIR=c:\ServerRoot (for debug build)
Đối số c:\ServerRoot để cho INTSDIR nhận các thư mục cài đặt (nó có thể được bỏ qua nếu Apache được cài đặt trong thư mục \Apache)
Quá trình cài đặt sẽ diễn ra như sau:
c:\ServerRoot\Apache.exe – Chương trình Apache
c:\ServerRoot\ApacheCore.dll - Apache runtime [shared libary]
c:\ServerRoot\Win9xConHook.dll - Win9x console fixups [shared library]
Trang 14c:\ServerRoot\xmlparse.dll – phân tích cú pháp XML [shared library]
c:\ServerRoot\xmltok.dll - XML token engine [shared library]
c:\ServerRoot\bin\*.exe – Các chương trình quản trị
c:\ServerRoot\cgi-bin – Ví dụ CGI scripts
c:\ServerRoot\conf – Thư mục chứa các file cấu hình
c:\ServerRoot\icons - Icons for FancyIndexing
c:\ServerRoot\include\*.h – Các file header củaApache
c:\ServerRoot\htdocs - Site Welcome index.html
c:\ServerRoot\htdocs\manual – Tài liệu Apache
c:\ServerRoot\lib – Các file tài liệu động
c:\ServerRoot\libexec – Thư viện liên kết động
c:\ServerRoot\logs – Thư mục rỗng logging
c:\ServerRoot\modules\mod_*.dll – Các mô đun nạp Apache
CHƯƠNG II CÁC NGHI THỨC TRUYỀN NHẬN
(Mail System) đòi hỏi hình thành các chuẩn về Mail Điều này giúp cho việc gởi nhận các message được đảm bảo, làm cho những người ở các nơi khác nhau có thể trao đổi thông tin cho nhau
Có 2 chuẩn về Mail quan trọng nhất và được sử dụng nhiều nhất từ trước đến nay là X.400 và SMTP (Simple Mail Transfer Protocol) SMTP thường đi kèm với chuẩn POP3 và do hạn chế của SMTP mà ngày nay người ta dùng chuẩn mở rộng của nó là ESMTP (Extended SMTP) Mục đích chính của X.400 là cho phép các mail có thể được truyền nhận thông qua các loại mạng khác nhau bất chấp cấu hình phần cứng, hệ điều hành mạng , giao thức truyền dẫn được dùng Còn mục đích của
Trang 15chuẩn SMTP miêu tả cách điều khiển các message trên mạng Internet Điều quan trọng của chuẩn SMTP là giả định máy nhận phải dùng giao thức SMTP gởi Mail cho 1 Server luôn luôn hoạt động Sau đó, người nhận sẽ đến lấy Mail của họ từ Server khi nào họ muốn dùng giao thức POP (Post Office Protocol), ngày nay POP được cải tiến thành POP3 (Post Officce Protocol vertion 3) Các giao thức Mail thông dụng : chuẩn X.400, chuẩn MAIP, SMTP (ESMTP), POP3 Ở đây chỉ trình bày chi tiết về POP3 và SMTP
PHẦN 1 GIAO THỨC SMTP (SIMPLE MAIL TRANSFER PROTOCOL )
Bộ phận chính của hệ thống Internet Mail chính là các MTA ( Message Transfer Agent), các MTA giữ 1 vai trò quan trọng trong việc chuyển giao email Ví dụ sau khi một người sử dụng gửi một bức mail tới hàng đợi message, MTA sẽ lấy đó và chuyển nó tới một MTA khác Quá trình đó sẽ tiếp tục tiếp diễn cho đến khi message đến được nơi nhận Để có thể liên lạc với các MTA thông qua kết nối TCP các MTA của hệ thống Internet Mail có thể sử dụng nhiều nghi thức khác nhau để chuyển giao các thông tin (X400,ESMTP, ), Nhưng ở đây ta chỉ xét nghi thức SMTP Đây là một nghi thức cho phép chuyển mail từ điểm này sang điểm khác cho đến đích trên mạng Internet Nó được cấu tạo bởi tập các câu lệnh để Client có thể yêu cầu Sever thực hiện một số tác vụ và tập các câu trả lời để Server hồi đáp lại cho Client về kết quả thực hiện các tác vụ đó Một chương trình muốn gởi được mail thì nó phải biết địa chỉ của một SMTP server Server này có nhiệm vụ chuyển mail đến nơi cần thiết
I- GIỚI THIỆU
Trang 16Một đặc trưng quan trọng của SMTP là khả năng chia ca Mail qua môi trường dịch
vụ giao chuyển, một dịch vụ giao chuyển cung cấp một môi trường truyền thông liên quá trình (Interprocess Communication Environment –IPCE ) Một môi trường truyền thông liên quá trình có thể bao gồm một Network, vài Network, hay một tập hợp con của Network Điều đó quan trọng cho việc thực hiện hệ thống giao chuyển (hay các IPCE) one-to-one với Network, một quá trình có thể giao tiếp với một quá trình khác thông qua việc nhận biết IPCE Mail là ứng dụng hay là cách dùng của giao tiếp liên quá trình, Mail có thể giao tiếp giữa các quá trình trong những IPCE khác bằng cách chia ca thông qua một quá trình được kết nối đến hai (hay nhiều ) IPCE Chi tiết hơn Mail có thể chia ca giữa những Host trên hệ thống giao chuyển khác nhau bằng một Host trên cả hai hệ thống chuyển giao
II- MÔ HÌNH SMTP:
SMTP được thiết kế dựa trên mô hình giao tiếp sau: như kết quả của một yêu cầu Mail của user Sender- SMTP thiết lập một kênh hai đường vận chuyển đến một receiver- SMTP Receiver- SMTP có thể là đích đến cuối cùng hay một trung gian Những lệnh SMTP được sinh ra bởi Sender-SMTP gửi đến Receiver- SMTP Những reply SMTP được gửi từ Receiver- SMTP đến Sender- SMTP trong sự đáp ứng cho những lệnh đó
Khi một kênh giao chuyển được thiết lập Sender-SMTP gửi đi 1 lệnh Mail biểu thị cho người gửi của mail đó Nếu Receiver-SMTP có thể chấp nhận mail, nó trả lời với một OK reply Sau đó Sender-SMTP gửi một lệnh RCPT nhận diện Receiver mail nếu Receiver-SMTP có thể chấp nhận mail nó trả lời với 1 OK reply nếu không nó sẽ lời với 1 reply bác bỏ receiver đó (nhưng không phải toàn bộ sự giao
Trang 17dịch đó) Sender- SMTP và Receiver- SMTP có thể điều đình với vài recipient, khi những recipient đã được dàn xếp Sender-SMTP gửi mail data kết thúc với một chuỗi đặc biệt nếu receiver xử lý mail data thành công nó trả lời với 1 OK reply Cuộc hội thoại một cách chủ ý lock –step (one-at-a-time)
Sơ đồ trên là mô hình cho cách dùng SMTP
SMTP cung cấp những cơ chế giao chuyển Mail một cách trực tiếp từ Host của user gửi đến host của user nhận khi cả hai host được kết nối đến cùng dịch vụ giao chuyển hay qua nhiều SMTP-Sever tiếp vận khi host xuất phát hay đích đến không được kết nối đến cùng dịch vụ chuyển giao Để có thể cung cấp khả năng tiếp vận SMTP-Sever phải được cung cấp tên của host đến cùng chẳng hạn như hạn của mailhost đến
Đối số của lệnh mail là 1 reverse-path nó đặc tả mail đó từ đâu đến; đối số cho RCPT là 1 Forward-path nó đặc tả mail đó đi đến đâu Forward-path là một lộ trình nguồn, reverse-path là một lộ trình trở về (nó có thể được dùng để trả về một message cho người gửi khi xảy ra lỗi với 1 message được tiếp nhận)
Khi cùng một message được gửi cho nhiều recipient SMTP khuyến khích chuyển giao chỉ một bản sao của data cho tất cả các Receiver ở cùng một host đích
Những command và reply mail có những cú pháp khắc khe Những reply cũng có một mã số Trong những thí dụ theo sau sẽ xuất hiện những lệnh (commands) và những trả lời (replies) , một danh sách các lệnh và reply hoàn chỉnh trong phần 4 Các command và reply không phân biệt kiểu chữ hoa hay thường Lưu ý, điều này không đúng với tên của User mailbox Cho một số host tên của user có phân biệt kiểu chữ, SMTP phải thi hành đầy đủ việc nhận kiểu chữ và giữ gìn kiểu chữ của
Trang 18những user name như chúng đã xuất hiện trong những đối số của mailbox Host names không phân biệt kiểu chữ
Các command và reply là những ký tự được tạo ra từ tập ký tự ASCII{1}, khi dịch
vụ vận chuyển cung cấp một kênh chuyển giao 8 bit (octet) Mỗi một ký tự 7 bit được truyền đúng bằng cách chuyển nó về hệ 8 (octet) với bit có thứ tự cao nhất bị xóa về 0
Khi đặc tả cấu trúc thông thường của command và reply, một đối số (hay một ký hiệu đặc biệt ) sẽ được biểu thị bằng một biến meta-linguistic (hay một hằng số), ví dụ như : “<string>”, hay “<reverse-path>” Ở đây dấu ngoặc nhọn chỉ định chúng là những biến meta-linguistic Tuy nhiên các đối số thì dùng dấu ngoặc nhọn một cách literal Ví dụ như, một reverse-path thực được bao trong dấu ngoặc nhọn như, “<John.Smith@USC-ISI.ARPA>” là một trường hợp của <reverse-path> (dấu ngoặc nhọn được giao chuyển trong command và reply là mã thực của nó)
III MAIL:
1- Khái quát :
Có 3 bước cho sự giao dịch SMTP mail Giao dịch được bắt đầu với yêu cầu Mail mang sự nhận diện người gửi, tiếp theo sau là một chuỗi của một hay nhiều lệnh RCPT trao những thông tin của receiver, sau đó một lệnh DATA cho mail data.Và cuối cùng là phần chỉ định kết thúc mail data xác nhận giao dịch đó
Bước đầu tiên trong thủ tục là lệnh MAIL <reverse-path> chứa mailbox nguồn: MAIL <SP> FROM : <reverse-path> <CRLF>
Lệnh này báo cho receiver biết một giao dịch mail mới sẽ bắt đầu và để reset tất cả các bảng trạng thái và các buffer của nó bao gồm tất cả recipient hay mail data Nó
Trang 19phát ra reverse-path có thể được dùng để báo lỗi Nếu được chấp nhận SMTP trả về một reply 250 OK
receiver-<Reverse-path> có thể chứa nhiều hơn một mailbox.receiver-<Reverse-path> là một lộ trình nguồn trở về liệt kê các host và mailbox nguồn Host đầu tiên trong reverse-path sẽ
là host gửi lệnh này
Bước thứ hai trong thủ tục này là lệnh RCPT :
RCPT <SP> To : <forward-path> <CRLF>
Lệnh này phát đi một forward-path nhận diện recipient Nếu được chấp nhận receiver-SMTP trả về một reply 250 OK Và lưu lại forward-path Nếu recipient không nhận biết thì receiver trả về reply 550 Failure Bước thứ hai của thủ tục này
có thể lặp lại nhiều lần
Forward-path có thể chứa nhiều hơn một mailbox Forward-path là lộ trình nguồn liệt kê các host và mailbox đích Host đầu tiên trong <forword-path> sẽ là host nhận lệnh này
Bước thứ ba trong thủ tục là lệnh DATA
DATA <CRLF>
Nếu chấp nhận receiver-SMTP trả về một reply 354 và coi tất cả các dòng nối tiếp
đó là message text Khi văn bản cuối cùng được nhận và lưu trữ receiver-SMTP gửi một reply 250 OK
Kể từ khi mail được gửi trên kênh chuyển giao, điểm kết thúc của mail phải được chỉ định để hội thoại command và reply có thể bắt đầu trở lại SMTP chỉ định kết thúc của mail bằng cách gửi một dòng chứa chỉ một dấu chấm