CHỮ VIẾT TẮT TIẾNG ANH1 SMTP Simple Mail Transfer Protocol Giao thức chuẩn dùng để gửi thư điện tử qua mạng Internet T Advanced Research Projects Agency Network Mạng lưới cơ quan với cá
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
CƠ SỞ TẠI THÀNH PHỐ HỒ CHÍ MINH KHOA VIỄN THÔNG 2
-TIỂU LUẬN MÔN HỌC INTERNET & GIAO THỨC
ĐỀ TÀI:
TÌM HIỂU GIAO THỨC SMTP
Sinh viên thực hiện: Trần Nguyễn Tuấn Khanh – N21DCVT044
Trần Phước Khang
Hồ Đăng Khoa Phạm Đức Khải Ngô Duy Khánh
TP Ho Chi Minh-10/2024
Trang 2Mục lục
CHỮ VIẾT TẮT TIẾNG ANH 1
MỤC LỤC HÌNH ẢNH 2
Chương 1: Giới thiệu về SMTP 3
1 Khái niệm SMTP 3
2 Lịch sử và sự phát triển của SMTP 4
Chương 2: Tổng quan hệ thống thư điện tử 5
1 Cấu trúc một hệ thống thư điện tử 5
2 Cấu trúc một thư điện tử 6
3 Giao thức SMTP 6
3.1 Giới thiệu cơ bản về SMTP 6
3.2 Mô hình giao thức SMTP 8
3.3 Hệ thống chuyển tiếp thư theo giao thức SMTP 8
Chương 3: Phương thức hoạt động của SMTP 10
1 Qúa trình gửi email qua SMTP 10
2 Qúa trình giao tiếp trong giao thức SMTP 10
3 Phương thức hoạt động của SMTP 13
Chương 4: Kết luận 16
1 Tương lai của SMTP 16
2 Các cải tiến tiềm năng 16
Trang 3CHỮ VIẾT TẮT TIẾNG ANH
1 SMTP Simple Mail Transfer Protocol Giao thức chuẩn dùng để gửi thư điện tử
qua mạng Internet
T
Advanced Research Projects
Agency Network
Mạng lưới cơ quan với các đề án nghiên cứu tân tiến
Giao thức tầng ứng dụng dùng để kết nối
và tải email từ máy chủ email về máy tính
cá nhân
4 IMAP Internet Message Access
Protocol
Giao thức được sử dụng để truy cập và quản lý email trên máy chủ email từ xa
5 TCP/IP Transmission Control
Protocol/Internet Protocol
Giao thức chịu trách nhiệm về việc điều khiển và truyền nhận dữ liệu trong mạng lưới Internet
Hệ thống phân giải tên miền cho phép thiết lập tương ứng giữa địa chỉ IP và tên miền trên internet
Một phương thức xác thực email giúp xác định các máy chủ thư được phép gửi email cho một miền nhất định
8 DKIM DomainKeys Identified Mail Phương thức giúp xác nhận Email thông
qua chữ ký số giúp tránh email giả mạo
Domain-based Message
Authentication, Reporting &
Conformance
Cung cấp cho chủ sở hữu miền email khả năng bảo vệ miền của họ khỏi việc sử dụng trái phép, thường được gọi là giả mạo email
Trang 4MỤC LỤC HÌNH ẢNH
Hình 2.4: Hoạt động của giao thức SMTP trong hệ thống thư điện tử 7
Trang 5Chương 1: Giới thiệu về SMTP
1 Khái niệm SMTP
SMTP (Simple Mail Transfer Protocol) là một giao thức chuẩn dùng để gửi thư điện tử
qua mạng Internet Nó hoạt động theo mô hình client-server, trong đó một máy khách (client) gửi email, và máy chủ (server) xử lý, lưu trữ hoặc chuyển tiếp thư điện tử đến máy chủ của người nhận
SMTP là giao thức lớp ứng dụng chủ yếu của thư điện tử Internet Nó sử dụng dịch vụ truyền dữ liệu tin cậy của TCP để gửi thư từ máy chủ thư người gửi đến máy chủ thư người nhận Như hầu hết các giao thức ứng dụng khác, SMTP có hai phía: phía khách – thực hiện trên máy chủ thư người gửi, và phía chủ - thực hiện trên máy chủ thư người nhận Cả hai bên khách
và chủ chạy SMTP trên mỗi máy chủ thư Khi một máy chủ thư gửi thư tới các máy chủ thư khác thì nó hoạt động như máy khách SMTP Khi một máy chủ thư nhận thư từ máy chủ thư khác thì nó hoạt động như máy chủ SMTP [1]
● user agents (đại lý người sử dụng)
● mail servers (máy chủ thư)
● simple mail transfer protocol: SMTP (giao thức truyền thư đơn giản)
Hình 1.1: Tổng quan về hệ thống thư điện tử Internet
Trang 62 Lịch sử và sự phát triển của SMTP
Giao thức SMTP được phát triển vào những năm đầu của internet, chủ yếu vào cuối thập
kỷ 1970 và đầu thập kỷ 1980 Được mô tả chi tiết lần đầu trong tài liệu “RFC 821 – Simple Mail Transfer Protocol” vào năm 1982 bởi Jonathan B Postel và đồng nghiệp tại DARPA (Defense Advanced Research Projects Agency)
Nguồn gốc của SMTP bắt đầu vào năm 1980, dựa trên các khái niệm được triển khai trên ARPANET từ năm 1971 Nó đã được cập nhật, sửa đổi và mở rộng nhiều lần Phiên bản giao thức được sử dụng phổ biến hiện nay có cấu trúc có thể mở rộng với nhiều phần mở rộng khác nhau để xác thực, mã hóa, truyền dữ liệu nhị phân và địa chỉ email quốc tế
Kể từ đó, SMTP đã trải qua nhiều phiên bản và cải tiến thông qua các RFC khác nhau để cung cấp tính linh hoạt và bảo mật cao hơn Các phiên bản sau này bao gồm RFC 2821, RFC
5321 và các phiên bản khác Sau này, trở thành một tiêu chuẩn ngành công nghiệp cho việc gửi email Nó không chỉ được sử dụng trong môi trường doanh nghiệp mà còn trở thành một phần quan trọng của giao thức truyền thông trên internet
Giao thức SMTP ban đầu chỉ hỗ trợ truyền thông văn bản ASCII 7 bit chưa xác thực, chưa
mã hóa, dễ bị tấn công trung gian, giả mạo và gửi thư rác, và yêu cầu bất kỳ dữ liệu nhị phân nào cũng phải được mã hóa thành văn bản có thể đọc được trước khi truyền
Trang 7Chương 2: Tổng quan hệ thống thư điện tử
1 Cấu trúc một hệ thống thư điện tử
Hình 2.1: Mô hình một hệ thống thư điện tử
Để thực hiện việc trao đổi thư với người dùng, giữa máy chủ (mail server) và các máy khách (mail client) thống nhất sử dụng chung một bộ giao thức gửi và nhận thư, trong đó có quy định cụ thể về cổng làm việc, quy trình thao tác, các câu lệnh trao đổi, cấu trúc của điện tử… Hình 2.1 trình bày mô hình một hệ thống thư tín điện tử với giao thức gửi thư SMTP và giao thức nhận thư POP hoặc IMAP [2]
Hệ thống này bao gồm bốn phần tử chính: MUA (Mail User Agent), MTA (Mail Transfer Agent), MDA (Mail Delivery Agent), MRA (Mail Retrieval Agent)
- Mail User Agent (MUA): là chương trình phần mềm của máy client được người dùng sử dụng để gửi, nhận, soạn thảo, xử lý thư điện tử
- Mail Tranfer Agent (MTA): là một chương trình thư của máy chủ, cho phép truyền tải thư điện tử từ máy này sang máy khác
Trang 8- Mail Delivery Agent (MDA): là chương trình mà MTA sử dụng để chuyển thư vào hộp thư của người dùng hoặc để truyền tải thư tới một MTA khác Mỗi MTA sử dụng một hoặc nhiều MDA, mỗi MDA được sử dụng cho một loại yêu cầu phân phát thư riêng
- Mail Retrieval Agent (MRA): là một chương trình hoặc một dịch vụ có chức năng lấy thư điện tử về từ một hộp thư trên một máy chủ ở xa và đưa chúng tới MUA Các MRA truy vấn các thư và các phần header từ những hộp thư ở xa và phân phát chúng tới các MUA trên máy của người dùng
2 Cấu trúc một thư điện tử
Thư điện tử thường có hai phần chính: phần đầu (Header) và phần thân (Body) là văn bản chứa nội dung của thư Khi gửi đi, toàn bộ thư điện tử được gói trong nội dung (content) Ngoài
ra, hệ thống thư còn tạo thêm một phần nữa được gọi là bì thư (envelope), phần này chứa các thông tin cần thiết cho việc chuyển thư đến nơi nhận [2]
Hình 2.2: Cấu trúc của một thư điện tử
3 Giao thức SMTP
3.1 Giới thiệu cơ bản về SMTP
SMTP (Simple Mail Transfer Protocol) là giao thức quy định việc truyền thư chủ yếu trên Internet, được sử dụng như một cơ chế chung cho việc chuyển tải dữ liệu thư điện tử giữa các máy tính với nhau trong giao thức TCP/IP Khi một tiến trình SMTP thực hiện, SMTP client
mở một kết nối TCP tới một tiến trình SMTP server nằm trên một máy chủ ở xa và cố gắng để gửi mail thông qua kết nối SMTP server lắng nghe một kết nối TCP trên một cổng 25 [2]
Trang 9Hình 2.3: Mô hình truyền thư sử dụng giao thức SMTP
Khi SMTP client có một thông điệp được truyền đi, nó thiết lập một kênh truyền hai chiều tới một SMTP server Trách nhiệm của SMTP client là chuyển giao những thông điệp thư cho một hoặc nhiều SMTP server (hoặc báo những lỗi sai khi thực hiện)
Hoạt động của giao thức SMTP trong hệ thống thư điện tử:
Hình 2.4: Hoạt động của giao thức SMTP trong hệ thống thư điện tử
Client liên quan đến thư đi, Server liên quan đến nhận thư Hệ thống thư cục bộ chứa hộp thư (mailbox) của mỗi user Mailbox có 2 phần: Phần cục bộ và phần toàn cục
Sau khi tháo bức thư trong khuôn dạng chuẩn, hệ thống thư cục bộ xác định tên người nhận ở hộp thư cục bộ hay phải gửi ra ngoài Để bức thư được gửi đi, Client SMTP phải biết địa chỉ IP của nơi nhận thông qua DNS và gửi qua cổng địa chỉ SMTP (25) để bắt đầu thiết lập kết nối server SMTP nơi nhận Khi mối nối đã được thiết lập, Client bắt đầu chuyển thư đến Server bởi các lệnh của SMTP
Trang 103.2 Mô hình giao thức SMTP
Mô hình SMTP hỗ trợ cả hai phương pháp truyền phát thư end-to-end (không có các MTA trung gian) và store-and-forward. Phương pháp end-to-end được sử dụng giữa các mạng nội bộ của các tổ chức và phương pháp store-and-forward được lựa chọn cho các hệ điều hành giữa các tổ chức có mạng sử dụng giao thức TCP/IP và SMTP cơ sở [2]
Một tiến trình SMTP cơ bản có thể truyền tải thư viện điện tử tới một tiến trình khác trên cùng một mạng hoặc tới một mạng khác thông qua một tiến trình truyền tiếp hoặc qua cổng nối
có thể tới được cả hai mạng
Hình 2.5: Mô hình giao thức SMTP
3.3 Hệ thống chuyển tiếp thư theo giao thức SMTP
Người dùng làm việc với UA (User Agent) Việc trao đổi thư sử dụng giao thức TCP được thực hiện nhờ một MTA MTA gửi truyền thư qua mạng tới cổng 25 của giao thức TCP của MTA nhận Việc truyền thông tin giữa máy chủ gửi và máy chủ nhận ở mạng ngoài thì việc chuyển tiếp có thể phức tạp Việc thêm một MTA vào phía người gửi và một MTA vào phía người nhận, các MTA khác thực hiện như máy chủ và máy khách, có thể chuyển tiếp thư điện
tử qua mạng [2]
Trang 11Hình 2.6: Mô hình SMTP với các MTA chuyển tiếp
Trang 12Chương 3: Phương thức hoạt động của SMTP
1 Qúa trình gửi email qua SMTP
Trong mô hình Giao thức Truyền tải Thư tin Đơn giản hóa (SMTP), máy khách email hoặc máy chủ của người gửi hoạt động như máy khách SMTP và máy chủ email của người gửi hoạt động như máy chủ SMTP Máy khách này khởi tạo kết nối đến máy chủ và truyền email, hoàn thành bằng các chi tiết người nhận, chủ đề và nội dung Máy chủ xử lý email này và xác định máy chủ tiếp theo phù hợp dựa trên địa chỉ của người nhận Máy chủ tiếp theo này có thể là một máy chủ SMTP khác trong tuyến đường truyền hoặc đích cuối cùng, tức là máy chủ email của người nhận Khi tin nhắn đến máy chủ của người nhận, nó sẽ được gửi đến hộp thư đến của người nhận bằng một giao thức khác, ví dụ như POP hoặc IMAP [3]
Máy chủ SMTP gửi email bằng cách làm theo lần lượt các bước Đầu tiên, máy khách email hoặc máy chủ của người gửi thiết lập kết nối với máy chủ SMTP của người nhận và cung cấp thông tin cần thiết, ví dụ như địa chỉ email của người nhận Sau đó, máy chủ SMTP xử lý thông tin này và xác minh địa chỉ của người nhận để quyết định có chấp nhận email hay không Nếu địa chỉ của người nhận hợp lệ, email sẽ được xếp hàng để gửi Sau đó, máy chủ của người nhận sẽ cố gắng gửi email đến hộp thư đến của người nhận hoặc một thư mục được chỉ định
Hình 3.1: Qúa trình gửi email qua SMTP
2 Qúa trình giao tiếp trong giao thức SMTP
Quá trình giao tiếp giữa máy khách và máy chủ SMTP tuân theo một loạt các bước tuần
tự Dưới đây là các bước chi tiết:
Trang 13Hình 3.2: SMTP hoạt động
Bắt đầu kết nối:
SMTP hoạt động dựa trên kết nối TCP (Transmission Control Protocol), và cổng mặc định được sử dụng là cổng 25 Khi một email cần được gửi, máy khách SMTP (ví dụ: ứng dụng email) khởi tạo một kết nối TCP đến máy chủ SMTP của người nhận Nếu kết nối không thành công (do máy chủ không khả dụng hoặc các vấn đề mạng), máy khách SMTP sẽ cố gắng lại sau một khoảng thời gian định sẵn
Sau khi kết nối TCP thành công, một thông báo chào mừng từ máy chủ SMTP sẽ được gửi đến máy khách, xác nhận rằng máy chủ sẵn sàng tiếp nhận các lệnh
Lệnh HELO/EHLO:
Sau khi nhận được thông báo chào mừng từ máy chủ, máy khách SMTP gửi lệnh HELO hoặc EHLO để giới thiệu danh tính của nó
Lệnh HELO là lệnh ban đầu trong phiên bản SMTP cơ bản, gửi kèm tên miền hoặc địa chỉ IP của máy khách
Lệnh EHLO (Extended HELO) là một phần của SMTP mở rộng (ESMTP), cho phép sử dụng các tính năng nâng cao như xác thực và mã hóa Khi máy khách gửi lệnh EHLO, máy chủ
sẽ phản hồi bằng danh sách các lệnh mở rộng mà nó hỗ trợ
Xác định người gửi:
Trang 14Máy khách SMTP sau đó sẽ cung cấp địa chỉ email của người gửi bằng cách gửi lệnh MAIL FROM Đây là địa chỉ email mà người nhận sẽ thấy trong mục "From" của email nhận được Địa chỉ này cũng được máy chủ dùng để xử lý các phản hồi hoặc lỗi nếu có Máy chủ SMTP phản hồi lại bằng mã trạng thái để xác nhận rằng địa chỉ người gửi hợp lệ và quá trình tiếp tục
Xác định người nhận:
Sau khi thông tin về người gửi được chấp nhận, máy khách SMTP gửi lệnh RCPT TO để chỉ định địa chỉ email của người nhận Máy chủ SMTP sẽ xác minh xem địa chỉ email này có tồn tại không và có thể tiếp nhận thư không Nếu địa chỉ người nhận không hợp lệ (ví dụ: không tồn tại hoặc bị sai), máy chủ sẽ gửi lại thông báo lỗi và quá trình sẽ dừng lại Nếu hợp lệ, máy chủ tiếp tục quy trình
Truyền nội dung email:
Sau khi thông tin về người gửi và người nhận đã được xác nhận, máy khách SMTP sử dụng lệnh DATA để bắt đầu truyền nội dung email Lệnh DATA bao gồm cả tiêu đề và phần thân của email Phần tiêu đề bao gồm các trường như “Subject” (Tiêu đề), “To” (Người nhận),
và “From” (Người gửi), trong khi phần thân là nội dung chính của email
Máy chủ SMTP sẽ lưu lại toàn bộ nội dung này và kiểm tra tính hợp lệ của nó Quá trình truyền nội dung email kết thúc bằng dấu hiệu kết thúc dòng dữ liệu với dấu chấm đơn (.) ở một dòng riêng biệt Sau khi nhận được toàn bộ dữ liệu, máy chủ phản hồi lại bằng mã trạng thái để xác nhận rằng email đã được nhận thành công
Xử lý mã hóa (nếu có):
Nếu sử dụng lệnh EHLO, các tính năng nâng cao của ESMTP cho phép bảo mật quá trình truyền bằng mã hóa TLS (Transport Layer Security) Sau khi máy khách SMTP gửi lệnh STARTTLS, máy chủ sẽ bắt đầu mã hóa kết nối Điều này giúp bảo vệ email khỏi các cuộc tấn công hoặc đánh cắp dữ liệu trong quá trình truyền tải
Gửi thêm nhiều người nhận (nếu có):
Nếu email có nhiều người nhận, lệnh RCPT TO sẽ được lặp lại cho mỗi địa chỉ người nhận bổ sung Điều này cho phép gửi một email đến nhiều địa chỉ trong cùng một kết nối SMTP mà không cần thiết lập lại kết nối nhiều lần
Trang 15Xử lý lỗi (nếu có):
Nếu trong quá trình gửi email xảy ra lỗi (ví dụ: người nhận không tồn tại hoặc máy chủ không khả dụng), mã lỗi tương ứng sẽ được trả về từ máy chủ SMTP Các mã lỗi này giúp thông báo cho người gửi về vấn đề đã xảy ra Một số mã lỗi phổ biến bao gồm:
550: Địa chỉ email không tồn tại
421: Dịch vụ không sẵn sàng (máy chủ bận hoặc bị quá tải)
451: Lỗi tạm thời trên máy chủ
Kết thúc phiên:
Khi việc truyền email hoàn tất, máy khách SMTP gửi lệnh QUIT để thông báo kết thúc phiên làm việc và yêu cầu đóng kết nối TCP Máy chủ SMTP phản hồi lại bằng một thông điệp xác nhận rằng kết nối đã được đóng Kết nối TCP sau đó sẽ được giải phóng, và quá trình gửi email kết thúc
Lưu trữ và xếp hàng email:
Sau khi email được chấp nhận, máy chủ SMTP có thể gửi nó ngay lập tức nếu đích đến sẵn sàng Tuy nhiên, nếu đích đến chưa khả dụng (ví dụ: máy chủ người nhận tạm thời không kết nối), email sẽ được lưu trữ trong hàng đợi (message queue) Máy chủ sẽ cố gắng gửi lại email này sau một khoảng thời gian nhất định cho đến khi thành công hoặc khi email quá hạn
và bị trả lại cho người gửi
3 Phương thức hoạt động của SMTP
SMTP sử dụng các mã phản hồi (status codes) để báo hiệu kết quả của các lệnh và tình trạng của quá trình truyền tải email Dưới đây là một số mã phản hồi phổ biến cùng cách xử lý:
Mã 2xx (Thành công):
Những mã phản hồi bắt đầu với số 2 báo hiệu rằng thao tác đã thành công Ví dụ:
●250: Yêu cầu được hoàn thành thành công Đây là mã phản hồi phổ biến sau khi một lệnh như MAIL FROM, RCPT TO, hoặc DATA được thực hiện mà không gặp lỗi
●220: Máy chủ SMTP sẵn sàng, thông báo khi kết nối TCP được mở thành công