Giao thức SMTP, POP, IMAP

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

Giao thức SMTP, POP, IMAP

Bài gửi  TranNgocTai on Thu Mar 01, 2012 9:32 pm

Tìm Hiểu Về các giap thức SMTP,POP và IMAP
Chuẩn Internet cho e-mail là Simple Mail Transport Protocol (SMTP). SMTP là nghi thức cấp ứng dụng (application-level) dùng để điều khiển các dịch vụ thông điệp thông qua các mạng TCP/IP. SMTP được nói rõ trong RFC 321 và 822. SMTP sử dụng cổng TCP 25.

Bên cạnh SMTP, hai nghi thức khác dùng để phân phát mail đến client là POP3 và IMAP4.


MIME và SMTP


MIME (Multipurpose Internet Mail Extensions) bổ sung thêm cho SMTP để cho phép gắn kèm các thông điệp đa phương tiện (không phải là văn bản) bên trong thông điệp SMTP chuẩn. MIME sử dụng mã hóa Base64 để chuyển các file phức tạp sang ASCII. MIME được mô tả trong các RFC 2045-2049.


Các lệnh SMTP thường sử dụng:


HELO - Sử dụng để định danh máy gửi với máy nhận. Lệnh này phải kèm với tên máy tính của máy gửi. Trong nghi thức mở rộng (ESMTP), lệnh EHLO thay cho lệnh này.


MAIL - Khởi tạo một phiên gửi mail. Đối số bao gồm trường “FROM” và địa chỉ email của người gửi.


RCPT - Định danh người nhận thông điệp. Đi kèm với “TO” và địa chỉ email người nhận.


DATA - Thông báo bắt đầu gửi dữ liệu thực sự của mail (phần thân của message). Dữ liệu kết thúc bằng một dòng trống và một dấu chấm (.).


RSET - Hủy (reset) phiên gửi mail hiện hành.


VRFY - Sử dụng để xác nhận một người nhận mail.


NOOP - Viết tắt của “no operation”, lệnh này không làm gì cả.


QUIT - Đóng kết nối


SEND - Báo cho host nhận biết là message phải được gửi đến một terminal khác.


HELP - Yêu cầu thông tin trợ giúp từ host nhận.


Ví dụ một phiên giao dịch SMTP:


220 ntbooks-pro Microsoft ESMTP MAIL Service, Version: 6.0.2505.1 ready at Mon, 8 Jul 2002 17:44:12 -0700

HELO

250 ntbooks-pro Hello [192.168.0.1]

MAIL FROM : user1@mydomain.com

250 2.1.0 user1@mydomain.com....Sender OK

RCPT TO : user2@mydomain.com

250 2.1.5 user2@mydomain.com

DATA

354 Start mail input; end with .

mail test

ha ha ha


.

250 2.6.0 Queued mail for delivery

QUIT

221 2.0.0 ntbooks-pro Service closing transmission channel


Nội dung mail nhận được có dạng như sau:


Received: from ([192.168.0.1]) by ntbooks-pro with Microsoft SMTPSVC(6.0.2505.1); Mon, 8 Jul 2002 17:46:21 -0700

From: user1@mydomain.com

Bcc:

Return-Path: user1@mydomain.com

Message-ID:

X-OriginalArrivalTime: 09 Jul 2002 00:46:50.0836 (UTC) FILETIME=[1CDAC940:01C226E2]

Date: 8 Jul 2002 17:46:50 -0700


mail test

ha ha ha





Các mã trạng thái SMTP


Khi một sending host gửi một lệnh SMTP đến receiving host, host nhận trả về một mã trạng thái cho máy gửi biết là điều gì đã xảy ra. Danh sách bên dưới là code được nhóm theo số đầu tiên (5xx là lỗi, 4xx lỗi tạm thời, 1xx-3xx thành công):


211 Trả lời trợ giúp, trạng thái hệ thống

214 Help message

220 Dịch vụ sẳn sàng (Service ready)

221 Đóng kết nối

250 Hành động yêu cầu được chấp nhận

251 Người sử dụng không ở mạng cục bộ, chuyển đến

354 Bắt đầu nhập mail

421 Dịch vụ không sẳn sàng

450 Hành động không chấp nhận, mailbox bận

451 Hành động bị hũy, lỗi cục bộ

452 Hành động không chấp nhận, thiếu không gian lưu trữ

500 Không hiểu lệnh hoặc lỗi cú pháp

501 Lỗi cú pháp ở tham số

502 Lệnh không được hổ trợ

503 Sai thứ tự các lệnh

504 Tham số của lệnh không được hổ trợ

550 Hành động không chấp nhận, mailbox không có.

551 Không phải là người sử dụng cục bộ

552 Hũy lệnh do vượt quá không gian lưu trữ

553 Hành động không chấp nhận, tên mailbox không cho phép

554 Phiên dao dịch bị lỗi
Post Office Protocol (POP)

POP cho phép các mail client (UA – User Agent) ở máy cục bộ kết nối vào pop server (MTA – Message Transfer Agent) và lấy mail về máy tính cục bộ nơi mà người sử dụng có thể đọc và trả lời các message. POP được định nghĩa đầu tiên vào năm 1984, được nâng cấp trong POP2 vào năm 1988. Chuẩn hiện hành là POP3.

POP3 UA kết nối với TCP/IP đến server (cổng chuẩn 110). UA nhập vào một tên đăng nhập (username) và mật mã (password). Sau khi đăng nhập, UA sử dụng các lệnh POP3 để lấy và xóa mail.

POP3 là nghi thức chỉ để nhận mail. POP3 UA sử dụng SMTP để gửi mail đến server.

POP3 được mô tả trong RFC 1939.


Các lệnh của POP3


USER Chỉ rõ username

PASS Chỉ rõ password

STAT Yêu cầu trạn thái của mailbox (số lượng message, kích thước của các message)

LIST Liệt kê các message

RETR Lấy một message cụ thể

DELE Xóa một message cụ thể

NOOP Không làm gì cả

RSET Hủy hành động của các lệnh DELE (rollback)

QUIT Chấp nhận các thay đổi và cắt kết nối.




Internet Mail Access Protocol (IMAP)


POP3 là một nghi thức đơn giản. IMAP4 là một chuẩn mail khác có hổ trợ nhiều tính năng hơn.

IMAP4 được mô tả trong RFC 2060. IMAP4 sử dụng cổng TCP 143.


Các lệnh IMAP4


CAPABILITY Yêu cầu một danh sách các chức năng có hỗ trợ.

AUTHENTICATE Chỉ rõ cơ chế đăng nhập

LOGIN Cung cấp username và password

SELECT Chỉ rõ mailbox

EXAMINE Chỉ định mailbox ở chế độ chỉ đọc.

CREATE Tạo một mailbox

DELETE Xóa một mailbox

RENAME Đổi tên một mailbox

SUBSCRIBE Thêm một mailbox vào danh sách cho phép.

UNSUBSCRIBE Loại mailbox ra khỏi danh sách cho phép.

LIST Liệt kê các mailbox

LSUB Liệt kê các mailbox cho phép.

STATUS Yêu cầu trạng thái của mailbox

APPEND Thêm một message vào mailbox

CHECK Yêu cầu một mailbox checkpoint

CLOSE Chấp nhận các thao tác xóa và đóng mailbox

EXPUNGE Chấp nhận các thao tác xóa

SEARCH Tìm trong mailbox các message thỏa điều kiện cụ thể

FETCH Lấy một phần của một message cụ thể

STORE Thay đổi dữ liệu của message cụ thể

COPY Chép message sang một mailbox khác

NOOP Không làm gì cả

LOGOUT Đóng kết nối

Các lệnh RFC thực sự không phải là các lệnh ngôn ngữ lập trình, nó là các chuỗi dùng để gửi đến Server qua Socket được tạo với cổng tương ứng.Ví dụ, nếu muốn gửi mail, tạo một socket TCP cổng 25 với Server (ví dụ, Post Office) sau đó lần lượt gửi các lệnh RFC (kết thúc lệnh là ký tự ENTER) và nhận các trả lời từ server để gửi mail.
Cách nhanh nhất để thử các lệnh RFC là dùng chương trình Telnet. Ví dụ để gửi một mail, làm như sau:

Windows 2000: ở Command Prompt gõ lệnh:

Telnet mail.myserver.com 25

Sau đó gõ các lệnh như trong ví dụ đã nêu phần trước.

Nếu viết một Windows Application thì có thể dùng MAPI control của Windows, nếu viết (asp) Webmail có thể dùng CDO, các control này giúp cho người lập trình không cần biết RFC nhưng vẫn có thể viết được các ứng dụng mail bằng cách sử dụng các phương thức và các thuộc tính của chúng. Nhưng các control trên đều dùng các lệnh RFC để làm việc gửi và nhận mail thực sự.

Việc viết một ứng dụng bằng cách sử dụng trực tiếp RFC đòi hỏi người lập trình phải code nhiều (hầu như là mọi thứ), phải tìm hiểu nhiều chuẩn khác (MIME), các kiểu mã hóa (Base64, uuencode ,...), nếu viết Webmail phải tìm hiểu thêm upload file (để attach), cách tổ chức trên Webserver để quản lý mail đọc rồi và chưa đọc, hoặc tạo thêm các thư mục...

TranNgocTai

Tổng số bài gửi : 40
Join date : 14/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết