Những lệnh SMTP (Commands SMTP) 1 Ngữ nghĩa lệnh :

Một phần của tài liệu luận văn tìm hiểu về các web server thông dụng hiện nay và các nghi thức truyền nhận mail cơ bản như smtp và pop3 (Trang 38 - 42)

IV. ĐẶC TẢ SMTP

A.Những lệnh SMTP (Commands SMTP) 1 Ngữ nghĩa lệnh :

1. Ngữ nghĩa lệnh :

Những lệnh SMTP định nghĩa sự truyền mail hay chức năng của hệ thống mail được yêu cầu bởi user. Những lệnh SMTP là những chuỗi ký tự kết thúc bằng

<CRLF>. Bản thân mã lệnh là những ký tự chữ kết thúc bởi chuỗi <SP> nếu cĩ

những tham số theo sau và <CRLF> khác. Cú pháp của những mailbox phải tuân

theo những thoả hiệp phía người nhận. Những reply SMTP được bàn đến trong phần

B.

Một sự giao dịch mail bao gồm vài đối tượng dữ liệu được giao tiếp khi

những đối số cho các lệnh khác nhau. Reverse-path là đối số của lệnh MAIL.

Forward-path là đối số của lệnh RCPT. Và mail data là đối số của lệnh DATA. Ba đối số và những đối tượng dữ liệu được duy trì cho đến khi xác nhận truyền xong

bởi sự chỉ định kết thúc của mail data thì thật sự kết thúc giao dịch. Mơ hình cho nĩ là những buffer riêng biệt được cung cấp để giữ kiểu của đối tượng dữ liệu. Một số

lệnh đặc trưng sinh ra thơng tin được gắn vào một buffer đặc trưng, hay làm cho

một hay nhiều buffer bị xố.

HELLO (HELO) : Lệnh này dùng định danh Sender-SMTP đến Receiver-

SMTP. Trường đối số chứa host name của Sender-SMTP. Receiver-SMTP định danh nĩ đến Sender-SMTP trong trả lời bắt tay cho việc kết nối, và trong câu trả lời

cho lệnh này.Lệnh này và một reply OK để xác nhận cả hai Sender-SMTP và Receiver-SMTP đang trong tình trạng khởi động, điều đĩ là: Khơng cĩ một giao

dịch mail nào đang tiến hành và tất cả các bảng trạng thái và buffer đã được xố.

MAIL : Lệnh này được dùng khởi tạo một giao dịch mail trong đĩ mail data được phân phối đến một hay nhiều mailbox. Feild đối số chứa một reverse-path. Reverse-path bao gồm một danh sách các host tuỳ ý và mailbox của user. Khi danh sách các host hồn tất nĩ là một lộ trình nguồn “trở về” và chỉ định mail đĩ được

chia ca thơng qua mỗi host trên danh sách đĩ (host đầu tiên trong list là host chia ca gần nhất). List này được dùng như một lộ trình nguồn để trả về người gửi những

thơng báo khơng thể phân phát. Tại mỗi host chia ca nĩ thêm phần định danh của

bản thân vào chổ bắt đầu của list đĩ và phải dùng tên của nĩ được biết trong IPCE nơi nĩ sẽ chia ca mail đến đĩ, đúng hơn là ICPE cĩ mail đến từ đĩ (nếu chúng khác

nhau). Trong một số loại message thơng báo lỗi (ví dụ thơng báo mail khơng thể

phân phát) reverse-path cĩ thể là null.

RECIPIENT (RCPT) : Lệnh này dùng định danh một người nhận mail riêng lẻ,

nhiều recipient được đặc tả bằng nhiều lệnh này. Forward-path bao gồm một danh sách các host tuỳ ý và một mailbox đích được yêu cầu. Khi danh sách host đĩ hoàn tất. Nĩ là một lộ trình nguồn và chỉ định mail phải được chia ca đến host kế tiếp trên

list đĩ. Nếu Receiver-SMTP khơng thực thi chức năng chia ca nĩ cĩ thể dùng được

reply này và sẽ cho một unknown local user (550). Khi mail được chia ca, host chia

ca phải chuyển phần định danh nĩ từ chổ bắt đầu forward-path và đặt vào chổ bắt đầu của reverse-path. Khi mail trải ra tới đích cuối cùng (forward-path chỉ chứa

một mailbox đích) receiver-SMTP chèn nĩ vào trong mailbox đích trong sự đồng ý

với thoả hiệp host mail của nĩ.

Ví dụ mail được nhận tại host chia ca A với những đối số:

FROM:<USERX@HOSTY.ARPA> (adsbygoogle = window.adsbygoogle || []).push({});

TO:<@HOSTA.ARPA,@HOSTB.ARPA:USERC@HOSTD.ARPA> Sẽ được chia ca đến host B với đối số

FROM:<@HOSTA.ARPA:USERX@HOSTY.ARPA> TO:<@HOSTB.ARPA:USERC@HOSTD.ARPA>.

Lệnh này sinh ra đối số forward-path của nĩ được gắn vào forward-path buffer.  DATA(DATA) : Receiver-SMTP xử lý những dịng theo sau lệnh này khi mail từ Sender-SMTP đến. Nĩ làm cho mail data từ lệnh này được ghi vào data buffer. Mail data này cĩ thể chứa những ký tự của 128 mã ACSII. Data mail được kết thúc

bằng một dịng chỉ chứa một dấu chấm. Đĩ là một dãy ký tự "<CRLF>. <CRLF>"

(xem phần 4.D.2). Và đĩ là chỉ định kết thúc của mail data.

Sự chỉ định kết thúc một chuổi địi hỏi người nhận phải xử lý việc lưu trữ

những thơng tin giao dịch mail ngay lập tức. Quá trình xử lý này dùng thơng tin trong reverse-path buffer, forward-path buffer, mail data buffer, và khi hồn tất

lệnh này những buffer đĩ sẽ bị xĩa, những message được chia ca sẽ cĩ nhiều dịng

đánh dấu thời gian.

Khi một Receiver-SMTP tạo ra “final delivery” của một message nĩ chèn vào chổ bắt đầu của mail data một dịng return-path. Dịng return-path đĩ bảo quản

thơng tin trong “reverse-path” từ lệnh mail. Ơ đây deliver final cĩ nghĩa là message

đĩ rời khỏi thế giới SMTP. Thơng thường cĩ nghĩa là nĩ đã được chuyển đến user đích, nhưng trong một số trường hợp nĩ cĩ thể được xử lý nữa và và được giao

chuyển bởi hệ thống mail khác.

Cĩ thể cho mailbox trong return-path là khác biệt với mailbox thật sự của

Sender-SMTP, ví dụ như nếu những trả lời error được dùng phân phát một lỗi đặc

biệt điều khiển mailbox.

Hai đoạn trước ý nĩi mail data cuối cùng sẽ bắt đầu với một dịng return- path theo sau là một hay nhiều dịng đánh dấu thời gian , sau những dịng này sẽ là phần header và body của mail data [2].

Sự đề cập đặc biệt cần thiết cho sự trả lời (response) và sự hành động tiếp

nữa được yêu cầu khi quá trình xữ lý theo sau sự chỉ định kết thúc mail data là sự

thành cơng cục bộ. Điều này cĩ thể phát sinh nếu sau khi chấp nhận một vài người

nhận và data mail của receiver-SMTP thấy mail data đĩ cĩ thể được phân phát đến

một số người thành cơng nhưng lại khơng thể đến những người khác (ví dụ như xảy

ra vấn đề về việc chỉ định vị trí của mailbox). Trong tình trạng như vậy câu trả lời

cho lệnh DATA phải là một reply OK. Nhưng receiver-SMTP phải soạn và gửi về nơi xuất xứ của message đĩ một message thơng báo “undelivered mail”. Một thơng báo đơn liệt kê tất cả các recipient khơng nhận được message, hay những message

thơng báo riêng lẽ phải được gửi cho từng recipient một , tất cả những thơng báo

mail khơng thể phân phát được gửi dùng lệnh MAIL (ngay cả nếu kết quả đĩ từ quá

trình xử lý một lệnh SEND, SOML, hay SAML ).

Ví dụ cho đường dẫn trả về và nhận đánh dấu thời gian nhận:

Return-Path:

<@GHI.ARPA,@DEF.ARPA,@ABC.ARPA:JOE@ABC.ARPA> Received: from GHI.ARPA by JKL.ARPA ; 27 Oct 81 15:27:39 PST Received: from DEF.ARPA by GHI.ARPA ; 27 Oct 81 15:15:13 PST Received: from ABC.ARPA by DEF.ARPA ; 27 Oct 81 15:01:59 PST Date: 27 Oct 81 15:01:01 PST (adsbygoogle = window.adsbygoogle || []).push({});

From: JOE@ABC.ARPA

Subject: Improved Mailing System Installed

To: SAM@JKL.ARPA This is to inform you that ...

SEND (SEND) : Lệnh này dùng khởi tạo một giao dịch mail trong đĩ mail data được phân phát đến một hay nhiều terminal. Trường đối số chứa một reverse- path. Lệnh này thành cơng nếu message được phân phát đến một terminal.

Reverse-path bao gồm một list các host và mailbox người gửi tuỳ ý khi list đĩ hồn tất, nĩ là một lộ trình nguồn “trở về” và chỉ định mail đã được chia ca thơng qua các host trong list đĩ (host đầu tiên trong list là host chia ca gần nhất) danh sách này được dùng như một lộ trình nguồn để trả về cho người gửi những

thơng báo về việc khơng phân phát được. Khi mỗi host chia ca thêm phần định

danh vào trong vị trí bắt đầu của list , nĩ phải dùng tên mà nĩ được biết đến trong IPCE nơi nĩ sẽ chia ca mail tới đĩ , đúng hơn là IPCE cĩ mail tới từ đĩ.

Lệnh này xố reverse-path buffer, forward-path buffer và mail data buffer và chèn thơng tin reverse-path từ lệnh này vào trong reverse-path buffer.

END OR MAIL (SOML) : Lệnh này dùng khởi tạo một giao dịch mail trong đĩ mail data được phân phát đến một hay nhiều terminal hay mailbox. Cho từng recipient, data mail được phân phát đến terminal của người nhận nếu người nhận đĩ đang hoạt động trên host đĩ (và chấp nhận những terminal message ), mặt khác là

đến mailbox của những người nhận đĩ. Trường đối số chứa một reverse-path . Lệnh

này thành cơng khi message được phân phát đến một terminal hay mailbox.

Reverse-path bao gồm một danh sách các host tuỳ ý và mailbox của người

gửi. Khi danh sách các host đĩ hoàn tất, nĩ là một lộ trình nguồn “trở về” và chỉ định mail đĩ đã được chia ca thơng qua các host trên danh sách (host đầu tiên trong danh sách là host chia ca gần nhất). Danh sách này được dùng như một lộ trình nguồn trả về cho người gửi những thơng báo về việc khơng thể phân phát. Khi mỗi

host chia ca thêm phần định danh nĩ vào chổ bắt đầu của danh sách đĩ, nĩ phải dùng tên được biết đến trong IPCE nơi nĩ sẽ chia ca mail đến đĩ đúng hơn là IPCE cĩ mail đến từ đĩ(nếu chúng khác nhau).

Lệnh này xố reverse-path buffer, forward-path buffer và mail data buffer và chèn thơng tin reverse-path từ lệnh này vào trong reverse-path buffer.

SEND AND MAIL (SAML) : Lệnh này dùng khởi tạo một giao dịch mail trong đĩ mail data được phân phát đến một hay nhiều terminal và các mailbox. Cho từng người nhận mail được phân phát đến terminal của người nhận nếu người nhận đĩ đang hoạt động trên host đĩ (và chấp nhận những terminal message ) và cho tất

cả recipient thì đến mailbox của các recipient đo. Trường đối số chứa một reverse- path. Lệnh này thành cơng khi message được phân phát đến mailbox.

Reverse-path bao gồm một danh sách các host tuỳ ý và mailbox của người

gửi. Khi danh sách hoàn tất nĩ là một lộ trình nguồn “trở về” và chỉ định mail đã

được chia ca thơng qua các host trong danh sách đĩ(host đầu tiên trong danh sách là host chia ca gần nhất ) Danh sách này được dùng như một lộ trình nguồn trả về cho người gửi những thơng báo về việc khơng thể phân phát. Khi mỗi host chia ca thêm phần định danh nĩ vào chổ bắt đầu của danh sách đĩ nĩ phải dùng tên mà nĩ được

biết đến trong IPCE mà nĩ sẽ chia ca mail đến đĩ đúng hơn là IPCE mà mail đến

từ đĩ (nếu chúng khác nhau).

Lệnh này xố reverse-path buffer, forward-path buffer và mail data buffer và chèn thơng tin reverse-path từ lệnh này vào trong reverse-path buffer.

RESET (RSET) : Lệnh này định rõ giao dịch mail hiện hành bị huỷ bỏ. Các người gửi, recipient, mail data đã lưu sẽ bị huỷ bỏ và tất cả các bảng trạng thái, các

buffer bị xố. Receiver phải gửi một reply OK.

VERIFY (VRFY) : Lệnh này yêu cầu receiver xác nhận đối số định danh

một user. Nếu nĩ là một user name, full name của user đĩ (nếu receiver biết) và

mailbox đặc tả đầy đủ được trả về.Lệnh này khơng ảnh hưởng đến reverse-path buffer, forward-path buffer và data mail buffer.

EXPAND (EXPN) : Lệnh này yêu cầu receiver xác nhận một mailing list (danh sách địa chỉ) và trả về một thành phần trong danh sách đĩ. Full name của các

user (nếu biết) và những mailbox được đặc tả đầy đủ được trả về trong một reply (adsbygoogle = window.adsbygoogle || []).push({});

nhiều dịng.

Lệnh này khơng ảnh hưởng đến reverse-path buffer, forward-path buffer và data mail buffer.

HELP (HELP) : Lệnh này làm cho receiver thơng tin giúp đỡ cho người gửi

lệnh HELP. Lệnh này cĩ thể nhận một đối số (cĩ thể là tên lệnh) và trả về thơng tin

chi tiết.

Lệnh này khơng ảnh hưởng đến reverse-path buffer, forward-path buffer và data mail buffer.

NOOP (NOOP) : Lệnh này khơng ảnh hưởng các tham số hay các lệnh được đưa vào trước nĩ, nĩ đặc tả khơng cĩ một hành động nào khác hơn là receiver gửi một

reply OK.

Lệnh này khơng ảnh hưởng đến reverse-path buffer, forward-path buffer và data mail buffer.

QUIT (QUIT) : Lệnh này định rõ receiver phải gửi một reply OK và sau đĩ đĩng kênh giao dịch . Receiver sẽ khơng đĩng kênh giao dịch cho đến khi nĩ nhận

và trả lời cho lệnh QUIT (ngay cả nếu cĩ một lỗi xãy ra). Người gửi sẽ khơng đĩng

kênh giao dịch cho đến khi nĩ gửi một lệnh QUIT và nhận reply đĩ (ngay cả nếu cĩ

một lỗi trả lời cho lệnh trước đĩ). Nếu kết nối bị đĩng trước thời gian mong muốn

receiver sẽ làm việc như vừa nhận được một lệnh RSET (bỏ tất cả các giao dịch đang treo mà chưa làm, nhưng khơng “undo” những giao dịch đã hồn tất trước đĩ) người gửi sẽ hành động như nếu lệnh hay giao dịch đĩ trong quá trình xử lý nhận được một lỗi tạm thời (4xx).

TURN (TURN) : Lệnh này định rõ Receiver-SMTP phải gửi một trong hai reply sau: (1) reply OK và sau đĩ nhận vai trị của một Sender-SMTP, hay (2) gửi

một reply từ chối và giữ lại vai trị một Receiver-SMTP.

Nếu program-A hiện tại là một Sender-SMTP gửi một lệnh TURN và nhận

một reply OK (250) thì program-A trở thành Receiver-SMTP sau đĩ program-A sẽ

trong trạng thái khởi động chỉ nếu kênh giao chuyển đã được mở, sau đĩ nĩ chờ

nhận một chào hỏi dịch vụ đã sẵn sàng 220.

Để từ chối thay đổi vai trị Receiver-SMTP gửi một reply 502.

Cĩ sự hạn chế trong trật tự khi dùng những lệnh này.

Đầu tiên trong một cuộc trao đổi phải là lệnh HELLO, lệnh này cĩ thể được dùng sau đĩ trong một cuộc trao đổi khác. Nếu đối số trong lệnh HELLO khơng được chấp nhận một reply failure 501 phải được trả về và Receiver-SMTP đĩ phải ở

trong trạng cũ.

Những lệnh NOOP, HELP, EXPAND và VRFY cĩ thể được dùng nhiều lần

trong một cuộc giao dịch.

Các lệnh MAIL, SEND, SOML, và SAML bắt đầu một giao dịch mail. Khi

bắt đầu một giao dịch mail bao gồm một lệnh khởi tạo giao dịch , một hay nhiều

lệnh RCPT, và một lệnh DATA đĩ là một trật tự . một giao dịch mail cĩ thể được

bỏ qua bởi một lệnh RSET cĩ thể cĩ hay khơng cĩ nhiều giao dịch trong một cuộc trao đổi (session). (adsbygoogle = window.adsbygoogle || []).push({});

Nếu đối số của lệnh khởi động giao dịch khơng thể chấp nhận một reply

failure 501 phải được trả về và Sender-SMTP phải nằm trong trạng thái cũ. Nếu

những lệnh trong cuộc giao dịch khơng đúng trật tự một reply failure 503 được trả

về và Receiver-SMTP đĩ phải nằm trong trạng thái cũ.

Lệnh cuối cùng trong cuộc trao đổi phải là lệnh QUIT và lệnh QUIT khơng

thể được dùng nhiều lần trong một cuộc trao đổi.

Một phần của tài liệu luận văn tìm hiểu về các web server thông dụng hiện nay và các nghi thức truyền nhận mail cơ bản như smtp và pop3 (Trang 38 - 42)