Mục tiêu của Simple Mail Transfer Protocol (SMTP) là chuyển gia gửi đáng tin cậy và hiệu quả.SMTP là độc lập với các hệ thống phụ truyền đặc biệt và chỉ đòi hỏi một đáng tin cậy đã ra lệnh kênh luồng dữ liệu. Phụ lục A, B, C, và D mô tả việc sử dụng SMTP với dịch vụ vận tải khác nhau.Một điển cung cấp các định nghĩa của thuật ngữ được sử dụng trong tài liệu này.Một tính năng quan trọng của SMTP là khả năng của mình để chuyển tiếp mail trên môi trường dịch vụ vận tải. Một dịch vụ vận tải cung cấp một interprocess môi trường giao tiếp (IPCE). Một IPCE có thể bao gồm một mạng, một số mạng, hoặc một tập hợp con của một mạng lưới. Điều quan trọng là nhận ra rằng hệ thống giao thông (hoặc IPCEs) không phải là mộtmột với mạng. Một quá trình có thể giao tiếp trực tiếp với các quá trình khác thông qua bất kỳ IPCE cùng biết. Mail là một ứng dụng hoặc sử dụng interprocess truyền thông. Mail có thể được trao đổi giữa các quy trình trong IPCEs khác nhau bằng cách chuyển tiếp thông qua một quá trình kết nối để hai (hoặc nhiều hơn) IPCEs. Cụ thể hơn, mail có thể được chuyển tiếp giữa các host trên hệ thống giao thông khác nhau bởi một máy chủ trên cả hai hệ thống giao thông.
Trang 1Mục Lục
I.GIỚI THIỆU 3
II.MÔ HÌNH SMTP 4
III.THỦ TỤC SMTP 6
1 Mail 6
2.Nhận 8
3 Thẩm tra mở rộng 9
4 Gửi và gửi thư 11
5.Mở và đóng 12
6.Chuyển tiếp 13
IV LỆNH SMTP 16
1 Ngữ nghĩa command 16
1.1 Cú pháp lệnh 23
2 Trả lời SMTP 27
2.1 Trả lời mã theo nhóm chức năng 28
2.2 Số tự danh mục mã trả lời 29
3 Trình tự lệnh và trả lời 30
4 Sơ đồ nhà nước 33
5 Chi tiết 35
5.1 Thực hiện tối thiểu 35
Trang 25.2 Minh bạch 35
5.3 Kích cỡ 36
PHỤ LỤC A 37
PHỤ LỤC B 38
PHỤ LỤC C 38
PHỤ LỤC D 38
TÀI LIỆU THAM KHẢO 53
Trang 3I.GIỚI THIỆU
Mục tiêu của Simple Mail Transfer Protocol (SMTP) là chuyển gia gửi đángtin cậy và hiệu quả.SMTP là độc lập với các hệ thống phụ truyền đặc biệt và chỉ đòihỏi một đáng tin cậy đã ra lệnh kênh luồng dữ liệu Phụ lục A, B, C, và D mô tả việc
sử dụng SMTP với dịch vụ vận tải khác nhau.Một điển cung cấp các định nghĩa củathuật ngữ được sử dụng trong tài liệu này.Một tính năng quan trọng của SMTP là khảnăng của mình để chuyển tiếp mail trên môi trường dịch vụ vận tải Một dịch vụ vậntải cung cấp một interprocess môi trường giao tiếp (IPCE) Một IPCE có thể bao gồmmột mạng, một số mạng, hoặc một tập hợp con của một mạng lưới Điều quan trọng lànhận ra rằng hệ thống giao thông (hoặc IPCEs) không phải là một-một với mạng Mộtquá trình có thể giao tiếp trực tiếp với các quá trình khác thông qua bất kỳ IPCE cùngbiết Mail là một ứng dụng hoặc sử dụng interprocess truyền thông Mail có thể đượctrao đổi giữa các quy trình trong IPCEs khác nhau bằng cách chuyển tiếp thông quamột quá trình kết nối để hai (hoặc nhiều hơn) IPCEs Cụ thể hơn, mail có thể đượcchuyển tiếp giữa các host trên hệ thống giao thông khác nhau bởi một máy chủ trên cảhai hệ thống giao thông
Trang 4II.MÔ HÌNH SMTP
Thiết kế SMTP được dựa trên mô hình sau đây của thông tin liên lạc: như kếtquả của một yêu cầu mail của người sử dụng, người gửi-SMTP thiết lập một kênhtruyền dẫn hai chiều với một máy thu-SMTP Thu-SMTP có thể là điểm đến cuối cùnghoặc trung gian SMTP lệnh được tạo ra bởi người gửi-SMTP và gửi đến thu-SMTP.SMTP trả lời được gửi đi từ máy thu-SMTP gửi-SMTP để đáp ứng với các lệnh
Một khi các kênh truyền dẫn được thiết lập, SMTP-người gửi gửi LệnhMAIL cho thấy người gửi thư Nếu SMTP-thu có thể chấp nhận mail nó phản ứng vớimột thư trả lời OK SMTP-người gửi sau đó gửi một lệnh RCPT xác định một ngườinhận thư Nếu SMTP-nhận có thể chấp nhận thư cho người nhận rằng nó phản ứng vớimột Trả lời OK, nếu không, nó sẽ trả lời với một trả lời từ chối người nhận (Nhưngkhông phải là giao dịch toàn thư) SMTP-người gửi và người SMTP-thu có thể đàmphán nhiều người nhận Khi người nhận đã được đàm phán SMTP-người gửi gửi dữliệu mail, chấm dứt với một trình tự đặc biệt Nếu SMTP-nhận xử lý thành công dữliệu mail của nó phản ứng với một thư trả lời OK Hộp thoại là cố khóa bước, một lúc,một thời gian
Trang 5Để có thể cung cấp khả năng chuyển tiếp SMTP-server phải cung cấp tên củacác máy chủ đích đến cuối cùng cũng như tên hộp thư đến.
Các đối số cho lệnh MAIL là một ngược đường dẫn, trong đó xác định người thư từ.Các đối số cho lệnh RCPT là một về phía trước con đường, trong đó xác định ngườithư là Phía trước con đường là một tuyến đường nguồn, trong khi ngược lại conđường là một con đường trở lại (mà có thể được sử dụng để trả lại một tin nhắn chongười gửi khi một lỗi xảy ra với một thông điệp chuyển tiếp)
Khi cùng một thông điệp được gửi tới nhiều người SMTP khuyến khích việctruyền tải chỉ có một bản sao của dữ liệu cho tất cả các người nhận ở máy đích tươngtự.Các lệnh mail và trả lời có một cú pháp cứng nhắc Trả lời cũng có một mã số.Trong phần tiếp theo, ví dụ xuất hiện mà sử dụng thực tế lệnh và trả lời Các danh sáchđầy đủ các lệnh và trả lời xuất hiện trong phần 4 trên thông số kỹ thuật Lệnh và trả lờikhông phải là trường hợp nhạy cảm Có nghĩa là, một lệnh hoặc trả lời từ có thể làtrường hợp trên, trường hợp thấp hơn, hoặc bất kỳ hỗn hợp trên và thấp hơn trườnghợp Lưu ý rằng điều này không đúng tên người sử dụng hộp thư Cho một số tổ chứctên người dùng là trường hợp nhạy cảm, và triển khai SMTP phải trường hợp để bảo
vệ trường hợp của tên người dùng như chúng xuất hiện trong đối số hộp thư Tên máychủ không phải là trường hợp nhạy cảm Lệnh và trả lời bao gồm các ký tự từ ASCII
ký tự [1] Khi các dịch vụ vận tải cung cấp một byte 8-bit (Octet) kênh truyền dẫn, mỗi
ký tự 7-bit được truyền phải hợp lý trong một octet với các bit cao để xóa không.Khi xác định hình thức chung của một lệnh hoặc trả lời, một cuộc tranh cãi (Hoặc kýhiệu đặc biệt) sẽ được biểu thị bằng một biến siêu ngôn ngữ (hoặc không đổi), ví dụ,
"<string>" hoặc "<reverse-path>" Ở đây dấu ngoặc nhọn cho thấy đây là những biếnsiêu ngôn ngữ
Tuy nhiên, một số đối số sử dụng dấu ngoặc nhọn theo nghĩa đen Cho Ví dụ,một ngược đường dẫn thực tế được đặt trong dấu ngoặc nhọn, ví dụ,
"<John.Smith@USC-ISI.ARPA>" Là một thể hiện của <reverse-path> (các
dấu ngoặc nhọn thực sự truyền lệnh hoặc trả lời)
III.THỦ TỤC SMTP
Trang 6Phần này trình bày các thủ tục được sử dụng trong SMTP trong một số bộphận Đầu tiên là các thủ tục điện tử cơ bản được xác định như một giao dịch qua thư.Sau này là những mô tả của thư chuyển tiếp, kiểm tra hộp thư tên và mở rộng danhsách gửi thư, gửi đến thiết bị đầu cuối thay vì hoặc kết hợp với hộp thư, và các sàngiao dịch mở và đóng Ở cuối của phần này là ý kiến về chuyển tiếp, một lưu ý vềemail lĩnh vực, và một cuộc thảo luận về thay đổi vai trò Trong phần này là ví dụ vềmột phần lệnh và trình tự trả lời, một số hoàn toàn kịch bản được trình bày trong Phụlục F.
1 Mail
Có ba bước để giao dịch SMTP mail Giao dịch được bắt đầu với một lệnhAIL đó cung cấp cho người gửi xác định Một loạt các một hoặc nhiều lệnh RCPT sauđưa ra các thông tin nhận Sau đó, một lệnh dữ liệu cung cấp cho các dữ liệu mail Vàcuối cùng, kết thúc của chỉ số dữ liệu email xác nhận giao dịch
Bước đầu tiên trong quy trình là lệnh MAIL Các <reverse-path> chứa hộp thư nguồn MAIL <SP> TỪ: <CRLF> <reverse-path>
Lệnh này cho SMTP-nhận rằng một thư mới giao dịch được bắt đầu và đểthiết lập lại tất cả các bảng trạng thái của nó và bộ đệm, bao gồm cả những người nhậnhoặc dữ liệu mail Nó mang lại cho ngược lại con đường mà có thể được sử dụng đểbáo cáo lỗi Nếu được chấp nhận, thu-SMTP trả về một OK trả lời 250
Các <reverse-path> có thể chứa nhiều hơn chỉ là một hộp thư Các <reverse-path> làmột danh sách định tuyến nguồn sau của máy chủ và hộp thư nguồn Các máy chủ đầutiên trong <reverse-path> nên máy chủ gửi lệnh này
Bước thứ hai trong thủ tục là lệnh RCPT
RCPT <SP> để: <CRLF> <forward-path>
Lệnh này cho một phía trước con đường xác định một người nhận Nếu được chấpnhận, người nhận-SMTP trả về một OK trả lời 250, và các cửa hàng phía trước conđường Nếu người nhận là chưa biết thu-SMTP trả về một 550 Không trả lời Đây làbước thứ hai của thủ tục có thể được lặp đi lặp lại bất kỳ số lần
Các <forward-path> có thể chứa nhiều hơn chỉ là một hộp thư
Các <forward-path> là một danh sách định tuyến nguồn gốc của máy chủ và các hộpthư đến
Trang 7Các máy chủ đầu tiên trong <forward-path> nên máy nhận lệnh này.
Bước thứ ba trong các thủ tục là lệnh dữ liệu
DỮ LIỆU <CRLF>
Nếu được chấp nhận, người nhận-SMTP trả về một Trung trả lời 354 và xemxét tất cả các dòng thành công là tin nhắn văn bản Khi kết thúc văn bản được nhận vàđược lưu trữ SMTP-thu gửi một OK trả lời 250 Kể từ khi dữ liệu mail được gửi trêncác kênh truyền dẫn cuối cùng các dữ liệu thư phải được chỉ định để các lệnh và trả lờithoại có thể được nối lại SMTP cho biết kết thúc của dữ liệu điện tử bằng cách gửimột dòng chứa chỉ một thời gian Một thủ tục minh bạch được sử dụng để ngăn chặnđiều này can thiệp với văn bản của người dùng (xem Phần 4.5.2) Xin lưu ý rằng các
dữ liệu điện tử bao gồm các tiêu đề ghi nhớ các hạng mục như ngày, Chủ đề, To, Cc,
Từ [2]
Sự kết thúc của chỉ số dữ liệu mail cũng xác nhận qua đường bưu điện giaodịch và nói với người nhận-SMTP đến nay xử lý lưu trữ và nhận dữ liệu qua thư Nếuchấp nhận, thu-SMTP trả về một OK trả lời 250 Lệnh dữ liệu nên chỉ thất bại nếu cácgiao dịch điện tử là không đầy đủ (ví dụ, không có người nhận), hoặc nếu tài nguyênkhông có sẵn Các thủ tục trên là một ví dụ của một giao dịch qua thư Những lệnhphải được chỉ được sử dụng theo thứ tự thảo luận ở trên
Ví dụ (bên dưới) cho thấy việc sử dụng các lệnh này trong một thư giaodịch Ví dụ này cho thấy SMTP mail được gửi bởi Smith tại máy chủ Alpha.ARPA,Jones, Green và Brown tại máy chủ Beta.ARPA Ở đây chúng ta giả định rằng máychủ Alpha địa chỉ liên lạc chủ Beta trực tiếp
S: MAIL FROM: <Smith@Alpha.ARPA>
Trang 8S: RCPT TO: <Brown@Beta.ARPA>
R: 250 OK
S: DỮ LIỆU
<CRLF> Kết thúc với <CRLF>; 354 Bắt đầu vào mail: R
S: Blah blah blah
<forward-path> Trả lời này chỉ ra rằng thu-SMTP biết của người sử dụng hộp thư trênmáy chủ khác và chỉ ra chính xác về phía trước con đường để sử dụng Lưu ý rằngmột trong hai máy chủ hoặc người sử dụng hoặc cả hai có thể khác nhau Người nhận
từ chối chấp nhận mail cho người dùng này, và người gửi hoặc phải được chuyển quađường bưu điện theo thông tin được cung cấp hoặc trả lại một lỗi đáp ứng cho người
Trang 9"Tên người dùng" là một thuật ngữ mờ và sử dụng có mục đích Nếu một máy chủthực hiện các lệnh VRFY hoặc EXPN sau đó hộp thư ít nhất địa phương phải đượccông nhận là "tên người dùng" Nếu một máy chủ chọn nhận ra các chuỗi khác như
"tên người dùng" được phép
Trong một số tổ chức sự khác biệt giữa một danh sách gửi thư và một bí danhcho một hộp thư duy nhất là một mờ chút, vì một cấu trúc dữ liệu phổ biến có thể giữ
cả hai loại mục, và nó có thể có gửi thư danh sách của một hộp thư Nếu yêu cầu đượcthực hiện để xác minh một thư liệt kê một phản ứng tích cực có thể được đưa ra nếukhi nhận được một tin nhắn để giải quyết nó sẽ được gửi đến tất cả mọi người trongdanh sách, nếu không một lỗi sẽ được báo cáo (ví dụ, "550 Đó là một danh sách gửithư, không phải là một người sử dụng ") Nếu một yêu cầu được thực hiện để mở rộngngười dùng tên một phản ứng tích cực có thể được hình thành bằng cách trả lại mộtdanh sách có chứa một tên, hoặc một lỗi có thể được báo cáo (ví dụ, "550 đó là mộttên người dùng, không phải là một danh sách gửi thư ")
Trong trường hợp của một trả lời nhiều dòng (bình thường cho EXPN) mộtcách chính xác hộp thư được xác định trên mỗi dòng trả lời Trong trường hợp củamột yêu cầu không rõ ràng, ví dụ, "VRFY Smith", nơi có hai Smith là phản ứng phải là
"553 tài không rõ ràng"
Trang 10Trường hợp xác minh tên người dùng là đơn giản như trong Ví dụ về Thẩmđịnh User Name
Trường hợp mở rộng danh sách hộp thư yêu cầu trả lời nhiều dòng như trong ví dụ 4
Ví dụ về mở rộng một danh sách gửi thư
Hay
S: EXPN Ví dụ-dân
R: 250 Jon Postel <Postel@USC-ISIF.ARPA>
R: 250-Fred Fonebone <Fonebone@USC-ISIQ.ARPA>
R: 250-Sam Q Smith <SQSmith@USC-ISIQ.ARPA>
R: 250-Quincy Smith <@ USC-ISIF.ARPA: Q-Smith@ISI-VAXA.ARPA> R: 250 - <joe@foo-unix.ARPA>
R: 250 <xyz@bar-unix.ARPA>
Hoặc
S: EXPN điều hành-Nhà vệ sinh-Danh sách
R: 550 Truy cập bị từ chối cho bạn
Trang 11Các đối số chuỗi ký tự của VRFY và lệnh EXPN không thể được hạn chế hơnnữa do sự đa dạng của hiện thực của tên người dùng và danh sách các khái niệm hộpthư Trên một số hệ thống nó có thể thích hợp cho các đối số của lệnh EXPN là mộttên tập tin cho một tập tin có chứa một danh sách gửi thư, nhưng một lần nữa có nhiềutập tin quy ước đặt tên trong Internet Các VRFY và EXPN lệnh không được bao gồmtrong đó tối thiểu thực hiện (mục 4.5.1), và không cần phải làm việc trên chuyển tiếpkhi chúng được thực hiện.
4 Gửi và gửi thư
Mục đích chính của SMTP để gửi tin nhắn đến người sử dụng hộp thư Mộtdịch vụ tương tự được cung cấp bởi một số máy chủ là để cung cấp các tin nhắn đếnthiết bị đầu cuối của người sử dụng (được cung cấp cho người sử dụng đang hoạt độngtrên máy chủ) Giao hàng đến hộp thư của người dùng được gọi là "Gửi thư", việccung cấp cho thiết bị đầu cuối của người sử dụng được gọi là "Gửi" Bởi vì trongnhiều máy chủ thực hiện việc gửi là gần giống với việc thực hiện gửi thư hai chứcnăng được kết hợp trong SMTP Tuy nhiên các lệnh gửi là không bao gồm trongviệc thực hiện yêu cầu tối thiểu (Mục 4.5.1) Người sử dụng cần phải có khả năngkiểm soát viết tin nhắn trên thiết bị đầu cuối của họ Hầu hết các host cho phép ngườidùng có thể chấp nhận hoặc từ chối những thông điệp đó Ba lệnh sau đây được xácđịnh để hỗ trợ việc gửi tùy chọn Chúng được sử dụng trong các giao dịch điện tử thay
vì Lệnh MAIL và thông báo cho người nhận-SMTP của ngữ nghĩa đặc biệt giao dịchnày:
GỬI <SP> TỪ: <CRLF> <reverse-path>
Lệnh SEND yêu cầu các dữ liệu email được gửi đến thiết bị đầu cuối của người sửdụng Nếu người dùng không hoạt động (hoặc không chấp nhận thông điệp thiết bị đầucuối) trên máy chủ có thể trả lời 450 trả lại cho một lệnh RCPT Giao dịch mail thànhcông nếu tin nhắn được gửi các thiết bị đầu cuối
SOML <SP> TỪ: <CRLF> <reverse-path>
Gửi các lệnh hoặc thư yêu cầu các dữ liệu email được gửi đến thiết bị đầu cuối củangười sử dụng nếu người dùng đang hoạt động (và chấp nhận thông điệp thiết bị đầucuối) trên máy chủ Nếu người dùng không hoạt động (hoặc không chấp nhận thôngđiệp thiết bị đầu cuối), sau đó dữ liệu điện tử được nhập vào hộp thư của người dùng
Trang 12Thư giao dịch thành công nếu tin nhắn được gửi hoặc để các thiết bị đầu cuốihoặc hộp thư.
SAML <SP> TỪ: <CRLF> <reverse-path>
Các Gửi và gửi lệnh yêu cầu dữ liệu email được gửi đến thiết bị đầu cuối của người sửdụng nếu người dùng đang hoạt động (và chấp nhận thông điệp thiết bị đầu cuối) trênmáy chủ Trong mọi trường hợp dữ liệu điện tử được nhập vào hộp thư của ngườidùng Thư giao dịch thành công nếu tin nhắn được gửi các hộp thư Các mã trảlời tương tự được sử dụng cho các lệnh MAIL được sử dụng cho các lệnh này
5.Mở và đóng
Đồng thời các kênh truyền dẫn được mở ra có một trao đổi để đảm bảo rằng các máychủ đang giao tiếp với các máy chủ họ nghĩ rằng họ đang có Hai lệnh sau đây được sửdụng trong kênh truyền dẫn mở và đóng cửa:
Trang 13Khái niệm các yếu tố của con đường hướng tới tương lai được chuyển đến cácngược đường dẫn như các tin nhắn được chuyển tiếp từ một máy chủ SMTP khác.Ngược lại con đường là một tuyến đường nguồn ngược lại, (nghĩa là một tuyếnđường nguồn từ vị trí hiện tại của thông điệp đến khởi của tin nhắn) Khi xóa máy chủSMTP của nó nhận dạng từ phía trước con đường và chèn nó vào ngược đường dẫn,
nó phải sử dụng tên nó được biết đến bởi trong môi trường nó được gửi vào, khôngphải là môi trường thư đến từ, trong trường hợp máy chủ SMTP được gọi bằng tênkhác nhau trong môi trường khác nhau
Nếu khi tin nhắn đến lúc một SMTP phần tử đầu tiên của về phía trước conđường không phải là định danh của SMTP mà các phần tử không phải là xóa từ phíatrước con đường và được sử dụng để xác định tiếp theo SMTP để gửi tin nhắn đến.Trong mọi trường hợp, SMTP cho biết thêm riêng của mình định danh để ngượcđường dẫn Sử dụng nguồn định tuyến thu-SMTP nhận được thư được chuyển tiếp đếnmột máy chủ SMTP-thu-SMTP có thể chấp nhận hoặc từ chối nhiệm vụ chuyển tiếpthư trong cùng một cách nó chấp nhận hoặc từ chối mail cho một người dùng địaphương Thu-SMTP biến đổi lệnh lập luận bằng cách di chuyển nhận dạng riêng củamình từ phía trước con đường đầu ngược đường dẫn Thu-SMTP sau đó trở thànhngười gửi-SMTP, thiết lập một kênh truyền dẫn đến SMTP tiếp theo ở phía trước conđường, và gửi qua đường bưu điện Các máy chủ đầu tiên trong ngược đường dẫn nêncác máy chủ gửi Lệnh SMTP, và máy chủ đầu tiên ở phía trước con đường nên máynhận các lệnh SMTP Thông báo rằng phía trước con đường và ngược đường dẫn xuấthiện trong SMTP lệnh và trả lời, nhưng không nhất thiết trong tin nhắn Mà là, không
có nhu cầu cho các đường dẫn và đặc biệt là cú pháp này để xuất hiện trong "To:",
"From:", "CC:", vv của thư tiêu đề
Nếu một máy chủ SMTP đã chấp nhận nhiệm vụ chuyển tiếp thư và sau đóphát hiện ra rằng phía trước con đường là không chính xác hoặc thư không có thểđược giao vì lý do gì, sau đó nó phải xây dựng một "Không gửi được thư" tin nhắnthông báo và gửi cho các khởi của thư không gửi được (như được chỉ ra bởi các ngượcđường dẫn) Tin nhắn thông báo này phải được từ các máy chủ SMTP này máy chủ.Tất nhiên, máy chủ SMTPS không nên gửi thông báo thông điệp về vấn đề với tinnhắn thông báo Một cách để ngăn chặn vòng trong báo cáo lỗi là để xác định một null
Trang 14ngược đường dẫn trong lệnh MAIL của một tin nhắn thông báo Khi một tin nhắnđược chuyển tiếp nó được cho phép rời ngược đường dẫn null Một lệnh MAIL vớimột null ngược đường dẫn xuất hiện như sau:
MAIL FROM: <>
Một tin nhắn thông báo không gửi được email được hiển thị trong ví dụ 7.Thông báo này là để đáp ứng với một tin nhắn có nguồn gốc bởi JOE tại HOSTW vàgửi qua HOSTX để HOSTY với hướng dẫn để tiếp sức trên để HOSTZ Các giao dịchgiữa những gì chúng ta thấy trong ví dụ này là HOSTY và HOSTX, đó là bước đầutiên trong sự trở lại của tin nhắn thông báo
Ví dụ không gửi được thư thông báo Thông báo
S: Xin lỗi JOE, thông điệp của bạn SAM@HOSTZ.ARPA mất
S: HOSTZ.ARPA nói điều này:
S: "550 Không có như vậy người dùng"
S:
R: 250 ok
Trang 15là bộ đệm riêng biệt được cung cấp để giữ các loại dữ liệu đối tượng, có nghĩa là, cómột bộ đệm ngược đường dẫn, một đệm phía trước con đường, và các dữ liệu emailmột bộ đệm Lệnh cụ thể gây ra các thông tin để được nối đến một bộ đệm cụ thể, hoặc
Trang 16gây ra một hoặc nhiều bộ đệm được xóa Hello (HELO) Lệnh này được sử dụng đểxác định người gửi-SMTP thu-SMTP Lĩnh vực lý luận có chứa các tên máy chủ củangười gửi-SMTP Thu-SMTP xác định chính nó cho người gửi-SMTP trong lời chàotrả lời kết nối, và trong các phản ứng này lệnh.
Lệnh này và trả lời OK để nó xác nhận rằng cả hai gửi-SMTP và thu-SMTP làtrong tình trạng ban đầu, có nghĩa là, không có giao dịch được tiến hành và tất cả cácnhà nước bảng và bộ đệm sẽ bị xóa MAIL (MAIL) Lệnh này được sử dụng để bắt đầumột giao dịch điện tử trong đó các dữ liệu email được gửi đến một hoặc nhiều hộp thư.Các lĩnh vực lập luận có một ngược đường dẫn Ngược lại con đường bao gồm mộtdanh sách tùy chọn của máy chủ và hộp thư người gửi Khi danh sách các máy hiện thì
nó là một tuyến đường nguồn "đảo ngược" và chỉ ra rằng thư đã được chuyển tiếp quamỗi máy chủ trong danh sách (các máy chủ đầu tiên trong Danh sách đã được tiếp sứcgần đây nhất) Danh sách này được sử dụng như một tuyến đường nguồn trở lại thôngbáo không giao hàng cho người gửi Như mỗi máy chủ tiếp thêm nó vào đầu danhsách, nó phải sử dụng tên của nó như được biết đến trong IPCE mà nó là chuyển tiếpthư chứ không phải là IPCE mà từ đó thư đến (nếu chúng khác nhau) Trong một sốloại lỗi tin báo cáo (ví dụ, thư không gửi được thông báo) là ngược đường dẫn có thể
là vô giá trị (xem Ví dụ 7) Lệnh này sẽ xóa bộ đệm ngược đường dẫn, các đệm phíatrước con đường, và các bộ đệm dữ liệu điện tử; và chèn các thông tin ngược đườngdẫn từ lệnh này vào đệm ngược đường dẫn
NHẬN (RCPT) Lệnh này được sử dụng để xác định một người nhận cá nhân
dữ liệu điện tử; nhiều người nhận được quy định bởi nhiều sử dụng lệnh này Phíatrước con đường bao gồm một danh sách tùy chọn của máy chủ và một cần hộp thưđến Khi danh sách các máy là Hiện nay, nó là một lộ trình nguồn và chỉ ra rằng thưphải được chuyển tiếp đến các máy chủ tiếp theo trong danh sách Nếu thu-SMTPkhông thực hiện chức năng chuyển tiếp nó có thể người sử dụng cùng nó sẽ trả lời chomột người dùng địa phương chưa biết (550) Khi thư được chuyển tiếp, các máy chủchuyển tiếp phải loại bỏ chính nó từ đầu về phía trước con đường và đặt chính nó ngay
từ đầu của ngược đường dẫn Khi thư đến cuối cùng của nó đích (phía trước đườngdẫn chứa chỉ là điểm đến hộp thư), chèn thu-SMTP vào các điểm đến hộp thư phù hợp
Trang 17với công ước Email chủ của nó Ví dụ, thư nhận được chuyển tiếp máy chủ A với cácđối số
TO: <@ HOSTB.ARPA: USERC@HOSTD.ARPA>
Lệnh này gây ra tranh cãi về phía trước đường đi của nó được nối vào bộ đệmphía trước con đường
DỮ LIỆU (DATA) Người nhận xử lý các dòng sau lệnh như email dữ liệu từ ngườigửi Lệnh này làm cho dữ liệu email từ lệnh này được nối vào bộ đệm dữ liệu mail
Dữ liệu mail có thể chứa bất kỳ ký tự ASCII 128 mã số Dữ liệu mail được kết thúcbằng một dòng chỉ chứa một thời gian, đó là các chuỗi ký tự "<CRLF> <CRLF>"(xem Phần 4.5.2 trên minh bạch) Đây là phần cuối của email dấu hiệu cho thấy dữliệu Sự kết thúc của thư chỉ dữ liệu đòi hỏi rằng người nhận bây giờ phải xử lý thôngtin được lưu trữ giao dịch qua thư Xử lý này tiêu thụ các thông tin trong ngược đườngdẫn đệm, đệm phía trước con đường, và các bộ đệm dữ liệu mail, và về việc hoànthành lệnh này những bộ đệm xóa Nếu việc xử lý thành công nhận phải gửi trả lời
OK Nếu việc xử lý không hoàn toàn nhận phải trả lời thất bại Khi thu-SMTP chấpnhận một tin nhắn hoặc cho chuyển tiếp hoặc giao thức nó chèn vào đầu của gửi các
dữ liệu một dòng tem thời gian Dòng thời gian đóng dấu chỉ danh tính của host gửi tinnhắn, và các danh tính của máy chủ mà nhận được tin nhắn (và là chèn dấu thời giannày), và ngày và thời gian tin nhắn đã được nhận Thông điệp chuyển tiếp sẽ có nhiềudòng thời gian đóng dấu
Khi thu-SMTP làm cho "giao hàng cuối cùng" của một tin nhắn nó chèn vàođầu của dữ liệu email một trở lại đường đường Dòng con đường trở lại giữ gìn
thông tin trong <reverse-path> từ lệnh MAIL.Ở đây, giao hàng cuối cùng có nghĩa làthông điệp rời SMTP thế giới Thông thường, điều này sẽ có nghĩa là nó đã được gửiđến người sử dụng đến, nhưng trong một số trường hợp, nó có thể được tiếp tục xử lý
Trang 18và truyền qua một hệ thống mail Có thể cho hộp thư trong con đường trở về được khác nhau từ hộp thư của người gửi thực tế, ví dụ,
nếu trả lời sai sẽ được chuyển giao một lỗi đặc biệt xử lý hộp thư chứ không phải là người gửi tin nhắn Các trước hai đoạn văn có nghĩa là các dữ liệu email thức sẽ bắt đầu với một dòng con đường trở lại, tiếp theo một hoặc nhiều dòng thời gian đóng dấu Những dòng này sẽ được theo sau bởi thư tiêu đề và cơ thể [2] dữ liệu Xem Ví dụ 8
Đề cập đặc biệt là cần thiết của các phản ứng và hành động hơn nữa cần thiết khi xử lý sau khi kết thúc dữ liệu email chỉ là một phần thành công Điều này có thể xảy ra nếu sau khi chấp nhận nhiều người nhận và các dữ liệu mail, thu-SMTP thấy rằng các dữ liệu mail có thể được thành công
giao cho một số người nhận, nhưng nó không có thể được để những người khác (ví dụ,
do phân bổ không gian hộp thư vấn đề) Trong tình hình như vậy, phản ứng với các dữ liệu lệnh phải là một bài trả lời OK Tuy nhiên, thu-SMTP phải
soạn và gửi một "không gửi được thư" thông báo thông điệp tới người khởi của tin nhắn Hoặc là một đơn thông báo trong đó liệt kê tất cả các người nhận thất bại để có được những tin nhắn, hoặc tin nhắn thông báo riêng biệt phải được gửi cho mỗi người nhận thất bại (xem Ví dụ 7) Tất cả tin nhắn thông báo không gửi được email được gửi
đi bằng cách sử dụng
Lệnh MAIL (ngay cả khi họ là kết quả của chế biến một SEND, SOML, hoặc SAML lệnh)
Ví dụ của Return Path và nhận Thời gian Tem Return-Path: <@ GHI.ARPA, @ DEF.ARPA, @ ABC.ARPA: JOE@ABC.ARPA>
Nhận được: từ GHI.ARPA bởi JKL.ARPA; 27 tháng 10 81 15:27:39 PST
Nhận được: từ DEF.ARPA bởi GHI.ARPA; 27 tháng 10 81 15:15:13 PST
Nhận được: từ ABC.ARPA bởi DEF.ARPA; 27 tháng 10 81 15:01:59 PST
Ngày: 27 Tháng Mười 81 15:01:01 PST
Từ: JOE@ABC.ARPA
Tiêu đề: Cải thiện hệ thống gửi thư cài đặt
Đến: SAM@JKL.ARPA
Điều này là để thông báo cho bạn rằng
SEND (gửi)
Trang 19Lệnh này được sử dụng để bắt đầu một giao dịch điện tử trong đó các dữ liệuemail được gửi đến một hoặc nhiều thiết bị đầu cuối Các lĩnh vực lập luận có mộtngược đường dẫn Lệnh này là thành công nếu các tin nhắn được gửi đến một thiết bịđầu cuối Ngược lại con đường bao gồm một danh sách tùy chọn của máy chủ và hộpthư người gửi Khi danh sách các máy hiện thì nó là một tuyến đường nguồn "đảongược" và chỉ ra rằng thư đã được chuyển tiếp qua mỗi máy chủ trong danh sách (cácmáy chủ đầu tiên trong Danh sách đã được tiếp sức gần đây nhất) Danh sách này được
sử dụng như một tuyến đường nguồn trở lại thông báo không giao hàng cho người gửi.Như mỗi máy chủ tiếp thêm nó vào đầu danh sách, nó phải sử dụng tên của nó nhưđược biết đến trong IPCE mà nó là chuyển tiếp thư chứ không phải là IPCE mà từ đóthư đến (nếu chúng khác nhau) Lệnh này sẽ xóa bộ đệm ngược đường dẫn, các đệmphía trước con đường, và các bộ đệm dữ liệu điện tử; và chèn các thông tin ngượcđường dẫn từ lệnh này vào đệm ngược đường dẫn
GỬI HOẶC MAIL (SOML)
Lệnh này được sử dụng để bắt đầu một giao dịch điện tử trong đó các dữ liệuemail được gửi đến một hoặc nhiều thiết bị đầu cuối hoặc hộp thư Cho mỗi ngườinhận dữ liệu email được gửi đến thiết bị đầu cuối của người nhận nếu người nhận làhoạt động trên tổ chức (và chấp nhận thông điệp thiết bị đầu cuối), nếu không đến hộpthư của người nhận Lĩnh vực lý luận có chứa một
ngược đường dẫn Lệnh này là thành công nếu được thông báo là giao cho một thiết bịđầu cuối hoặc hộp thư Ngược lại con đường bao gồm một danh sách tùy chọn củamáy chủ và hộp thư người gửi Khi danh sách các máy hiện thì nó
là một tuyến đường nguồn "đảo ngược" và chỉ ra rằng thư đã được chuyển tiếp quamỗi máy chủ trong danh sách (các máy chủ đầu tiên trong Danh sách đã được tiếp sứcgần đây nhất) Danh sách này được sử dụng như một tuyến đường nguồn trở lại thôngbáo không giao hàng cho người gửi Như mỗi máy chủ tiếp thêm nó vào đầu danhsách, nó phải sử dụng tên của nó như được biết đến trong IPCE mà nó là chuyển tiếpthư chứ không phải là IPCE mà từ đó thư đến (nếu chúng khác nhau).Lệnh này sẽ xóa
bộ đệm ngược đường dẫn, các đệm phía trước con đường, và các bộ đệm dữ liệu điệntử; và chèn các thông tin ngược đường dẫn từ lệnh này vào đệm ngược đường dẫn.GỬI VÀ MAIL (SAML)
Trang 20Lệnh này được sử dụng để bắt đầu một giao dịch điện tử trong đó các dữ liệuemail được gửi đến một hoặc nhiều thiết bị đầu cuối và hộp thư Cho mỗi người nhận
dữ liệu email được gửi đến thiết bị đầu cuối của người nhận nếu người nhận là hoạtđộng trên máy chủ (và chấp nhận thông điệp thiết bị đầu cuối), và cho tất cả ngườinhận vào hộp thư của người nhận Lĩnh vực lý luận chứa một ngược đường dẫn Lệnhnày là thành công nếu tin nhắn được gửi đến hộp thư
Ngược lại con đường bao gồm một danh sách tùy chọn của máy chủ và hộp thư ngườigửi Khi danh sách các máy hiện thì nó là một tuyến đường nguồn "đảo ngược" và chỉ
ra rằng thư đã được chuyển tiếp qua mỗi máy chủ trong danh sách (các máy chủ đầutiên trong Danh sách đã được tiếp sức gần đây nhất) Danh sách này được sử dụng nhưmột tuyến đường nguồn trở lại thông báo không giao hàng cho người gửi Như mỗimáy chủ tiếp thêm nó vào đầu danh sách, nó phải sử dụng tên của nó như được biếtđến trong IPCE mà nó là chuyển tiếp thư chứ không phải là IPCE mà từ đó thư đến(nếu chúng khác nhau) Lệnh này sẽ xóa bộ đệm ngược đường dẫn, các đệm phía trướccon đường, và các bộ đệm dữ liệu điện tử; và chèn các thông tin ngược đường dẫn từlệnh này vào
Mở rộng (EXPN)
Lệnh này yêu cầu người nhận để xác nhận rằng các đối số xác định một danhsách gửi thư, và nếu như vậy, để trả lại thành viên của danh sách đó Tên đầy đủ củangười sử dụng (nếu được biết đến) và các hộp thư quy định đầy đủ được trả về trong
Trang 21một trả lời nhiều dòng Lệnh này không ảnh hưởng đến bất kỳ ngược đường dẫn đệm,đệm phía trước con đường, hoặc các bộ đệm dữ liệu mail.
Trợ giúp (HELP)
Lệnh này làm cho người nhận để gửi thông tin hữu ích người gửi lệnh Giúp
đỡ Lệnh này có thể có một đối số (ví dụ, bất kỳ tên lệnh) và quay trở lại cụ thể hơnthông tin như một phản ứng Lệnh này không ảnh hưởng đến bất kỳ ngược đường dẫnđệm, đệm phía trước con đường, hoặc các bộ đệm dữ liệu mail
OK (250), sau đó chương trình B trở thành người gửi-SMTP Chương trình B là sau đó
Trang 22trong ban đầu nhà nước như các kênh truyền dẫn vừa mở ra, và nó sau đó hy vọng sẽnhận được 220 dịch vụ đã sẵn sàng chúc mừng Từ chối thay đổi vai trò người nhậngửi 502 trả lời.Có những hạn chế về trình tự mà trong đó các lệnh có thể được sửdụng Lệnh đầu tiên trong phiên phải được lệnh HELO Lệnh HELO có thể được sửdụng sau này trong một phiên là tốt Nếu đối số lệnh HELO là không thể chấp nhậnmột thất bại 501 trả lời phải được trả lại và thu-SMTP phải ở trong cùng nhà nước.Các noop, Giúp đỡ, EXPN, và các lệnh VRFY có thể được sử dụng bất cứ lúc nào thờigian trong một phiên MAIL, SEND, SOML, hoặc lệnh SAML bắt đầu một mail giaodịch Một khi bắt đầu giao dịch mail bao gồm một trong các lệnh bắt đầu giao dịch,một hoặc nhiều RCPT lệnh, và một lệnh dữ liệu, trong trật tự đó Một email giao dịch
có thể được hủy bỏ bởi lệnh RSET Có thể bằng không hoặc nhiều giao dịch trong mộtphiên Nếu đầu đối số lệnh giao dịch không phải là chấp nhận một thất bại trả lời 501phải được trả lại và thu-SMTP phải ở trong tình trạng tương tự Nếu các lệnh trongmột giao dịch là ra lệnh một thất bại trả lời 503 phải được trả lại và thu-SMTP phải ởtrong cùng một nhà nước
Lệnh cuối cùng trong một phiên họp phải được lệnh QUIT Các QUIT lệnh không thểđược sử dụng tại bất kỳ thời điểm nào trong một phiên
1.1 Cú pháp lệnh
Các lệnh bao gồm một mã lệnh theo sau một cuộc tranh cãi lĩnh vực Mã lệnhbốn ký tự chữ cái Trên và trường hợp thấp hơn các ký tự chữ thì được coi giống nhau
Vì vậy, bất kỳ những điều sau đây có thể đại diện cho thư lệnh:
MAIL Mail cho email Mail Mail
Điều này cũng áp dụng cho bất kỳ biểu tượng đại diện cho các giá trị tham số,chẳng hạn như "TO" hoặc "" để tiến lên phía trước con đường Mã lệnh và các lĩnh vựctham số được phân cách bởi một hoặc nhiều không gian Tuy nhiên, trong ngượcđường dẫn và lập luận về phía trước con đường trường hợp là quan trọng Đặc biệt,trong một số tổ chức người sử dụng "Smith" là khác nhau từ người sử dụng "Smith".Lĩnh vực lý luận bao gồm một nhân vật dài biến chuỗi kết thúc bằng dãy ký tự
<CRLF> Người nhận là không có hành động cho đến khi trình tự này được nhận Dấungoặc vuông biểu thị trường đối số tùy chọn Nếu tùy chọn không được thực hiện, mặcđịnh thích hợp là ngụ ý
Trang 23Cú pháp của các lĩnh vực lập luận ở trên (sử dụng ký hiệu BNF
nếu có) được đưa ra dưới đây Các " " ký hiệu chỉ ra
là một lĩnh vực có thể được lặp đi lặp lại một hoặc nhiều lần
<reverse-path> :: = <path>
<forward-path> :: = <path>
<path> :: = "<" [<adl> ":"] <mailbox> ">"
<adl> :: = <at-domain> | <at-domain> "," <adl>
<at-domain> :: = "@" <domain>
<domain> :: = <element> | "." <element> <domain>
<element> :: = <name> | "#" <number> | "[" <dotnum> "]"
Trang 24<mailbox> :: = <local-part> "@" <domain>
<local-part> :: = <dot-string> | <quoted-string>
name :: = <a> <ldh-str> <let-dig>
<ldh-str> :: = <let-dig-hyp> | <let-dig-hyp> <ldh-str>
<let-dig> :: = <a> | <D>
<let-dig-hyp> :: = <a> | <D> | "-"
<dot-string> :: = <string> | "." <string> <dot-string>
<string> :: = <char> | <char> <string>
<CR> :: = Nhân vật trở về vận chuyển (mã ASCII 13)
<LF> :: = Nhân vật thức ăn đường (mã ASCII 10)
<SP> :: = Nhân vật không gian (mã ASCII 32)
<snum> :: = một, hai, hoặc ba chữ số đại diện cho một số thập phân
giá trị số nguyên trong phạm vi từ 0 đến 255
<a> :: = bất kỳ một trong số 52 ký tự chữ cái từ A đến Z
trong trường hợp trên và một đường z trong trường hợp thấp hơn
<c> :: = bất kỳ một trong 128 ký tự ASCII, nhưng không có bất kỳ
Trang 25<x> :: = bất kỳ một trong 128 ký tự ASCII (không có trường hợp ngoại lệ)
ví dụ, "[123.255.37.2]", mà chỉ ra một 32-bit ARPA Internet
Giải quyết trong bốn lĩnh vực 8-bit
Dòng tem thời gian và dòng con đường trở lại là chính thức
quy định như sau:
<return-path-line> :: = "Return-Path:" <SP> <reverse-path> <CRLF>
<time-stamp-line> :: = "đã nhận:" <SP> <stamp> <CRLF>
<stamp> :: = <from-domain> <by-domain> <opt-info> ";"
<daytime>
<from-domain> :: = "FROM" <SP> <domain> <SP>
<by-domain> :: = "bởi" <SP> <domain> <SP>
<opt-info> :: = [<via>] [<with>] [<id>] [<for>]
<via> :: = "VIA" <SP> <link> <SP>
<with> :: = "VỚI" <SP> <protocol> <SP>
<id> :: = "ID" <SP> <string> <SP>
<for> :: = "CHO" <SP> <SP> <path>
<link> :: = Tên tiêu chuẩn cho các liên kết được đăng ký với
Trung tâm thông tin mạng
Trang 26<protocol> :: = Tên tiêu chuẩn cho các giao thức
đăng ký với Trung tâm Thông tin mạng
<daytime> :: = <SP> <date> <SP> <time>
<date> :: = <dd> <SP> <mon> <SP> <yy>
<zone> :: = "UT" cho Universal Time (mặc định) hoặc khác
vấn thiết kế múi giờ (như trong [2])
Trở lại con đường Ví dụ
Return-Path: <@ CHARLIE.ARPA, @ BAKER.ARPA: JOE@ABLE.ARPA> Nhận được: TỪ ABC.ARPA xếp XYZ.ARPA, 22 Tháng 10 81 09:23:59 PDT Nhận được: từ ABC.ARPA bởi XYZ.ARPA qua TELENET với X25
id M12345 cho Smith@PDQ.ARPA; 22 tháng 10 81 09:23:59 PDT
2 TRẢ LỜI SMTP
Trả lời cho các câu lệnh SMTP được đưa ra để đảm bảo sự đồng bộ các yêucầu và hành động trong quá trình chuyển mail, và để đảm bảo rằng người gửi-SMTPluôn luôn biết trạng thái của thu-SMTP Mỗi lệnh phải tạo ra chính xác một trả lời Các