Powered by Blogger.

Quá trình xử lý mail của postfix

Quá trình xử lý mail của postfix Để trở thành system admin thì điều không thể thiếu đó là phải nắm rõ sự hoạt động của hệ thống ở mức độ chuyên sâu.Bài viết sau đây nhằm mục đích mang lại cho bạn một kiến thức chuyên sâu nhất có thể trong phạm vi sự tìm hiểu và độ hiểu biết của tôi về sự hoạt động của hệ thống mail postfix. Lúc đầu tôi định đặt bài này trong mục kiến thức linux nhưng tôi nghĩ đặt nó ở đây sẽ tốt hơn. Về postfix thì tôi chỉ nói qua qua chút là nó là một MTA (mail transfer agent) cực kỳ tuyệt vời với khả năng xử lý đến hơn 10.000 connection mà vẫn hoạt động ổn định . Postfix mà được kết hợp với dovecot làm backen thì còn tuyệt vời hơn nữa.Nhưng trong bài này tôi chỉ nói đến postfix thôi. Hiện tại maximum connection của postfix vẫn là một ẩn số mà mình chưa được biết. Đầu tiên tôi xin giải thích một chút về ký tự và hình vẽ để các bạn dễ hiểu khi chúng ta đi sâu phân tích. - Hình ê-líp màu vàng là các chương trình mail . - Hộp vuông màu vàng là hàng đợi mail hoặc các tập tin . - Hộp màu xanh là các bảng tra cứu . - Các chương trình trong hộp lớn chạy dưới sự kiểm soát của Postfix resident master deamon. - Dữ liệu trong hộp lớn là thuộc tính của hệ thống mail Postfix. Hình trên đã lược bớt một số thứ như truy vấn DNS , các thư bị trả lại và quá trình trả lại thư , quá trình chuyển tiếp thư , các lỗi về giao thức , các cảnh báo....vv để chúng ta có thể đọc được. Nhận thư Khi một email được gởi đến postfix thì nơi đầu tiên nó đặt chân tới hàng đợi -incoming -. Hình dưới đây cho thấy các thành phần chính có liên quan đến thư mới. Khi mail được gởi đi ở local . Các chương trình sendmail của postfix gởi tin nhắn đến thư mục maildrop. Các tin nhắn được sàng lọc bởi pickup deamon . Deamon này - pickup deamon - thực hiện một số kiểm tra ở sanity .( Sanity testing là kiểu test dựa trên việc đánh giá ước lượng tính phù hợp của yêu cầu hoặc sự tính toán một cách nhanh chóng. Ví dụ như trong lĩnh vực toán học, khi lấy 3 nhân cho 9, ta phải kiểm tra rằng tổng các chữ số của kết quả phải chia hết cho 3 hoặc 9 (đây là phương pháp casting out nines), tương tự như là sanity testing. ) . Việc kiểm tra ở sanity là để bảo vệ phần còn lại của hệ thống postfix . Để tránh rủi ro , các quyền về thư mục trên thư mục maildrop phải được chỉnh sửa sao cho user không được xoá mail của người khác. (ví dụ như 1777 ) . Trong trường hợp bức thư được gởi qua mạng internet - gởi từ ngoài vào chẳng hạn - thì máy chủ SMTP postfix nhận tin nhắn và thực hiện một số kiểm tra sanity để bảo vệ phần còn lại của hệ thống Postfix. Các máy chủ SMTP có thể được cấu hình để chống UCE (unsolicited commercial email) - chống spam - dựa trên danh sách đen tại local hoặc trên mạng . ( thông tin về UCE có thể tham khảo qua link http://www.porcupine.org/postfix/doc/uce.html) . Ngoài ra thì máy chủ SMTP có thể được cấu hình để truy vấn DNS hoặc các yêu cầu khác của client. Mail cũng có khi được postfix tạo ra trong hệ thống nhằm mục đích như thông báo mail không gởi được ,mail bị trì hoãn gởi , báo lỗi hệ thống mail , mail gởi cho postmaster thông báo vi phạm chính sách (UCE) , vấn đề của SMTP....vv Nói sơ qua như trên về quá trình nhận mail có lẽ các bạn hơi bị choáng vì lằng nhằng quá nhưng là system admin thì phải hiểu , cố gắng hiểu, đọc đi đọc lại nhiều lần và đừng nản chí nhé. Từ ngữ tôi không diễn tả được dễ hiểu hơn nữa vì trình độ của tôi và đơn giản đó là kiến thức chuyên sâu. Kết luận cho quá trình nhận mail của postfix như sau : - Thư từ internet gởi đến postfix thông qua máy chủ SMTPd hoặc QMQPd . Những máy chủ này hoặc loại bỏ giao thức smtp hoặc đóng gói qmqp , rồi thi hành một số kiểm tra sanity để bảo vệ postfix. Sau đó cung cấp người gởi , người nhận và nội dung tin nhắn cho máy chủ cleanup để rồi sau quá trình này mail đến được người nhận. Postfix có thể được cấu hình để chống thư không mong muốn như mấy bức thư quảng cáo , marketing , thương mại. - Thư từ nội bộ thì được lệnh sendmail đưa đến hàng đợi để sắp xếp mail. Sự sắp xếp này vẫn được thực hiện kể cả khi postfix không start.Sau khi mail đến hàng đợi maildrop thì nó được chuyển đến máy chủ pickup. Ở đây thì sẽ có sự kiểm tra sanity để bảo vệ postfix. Tiếp theo mail được chuyển đến máy chủ cleanup và rồi đến người nhận. - Máy chủ cleanup là nơi bức thư được chế biến lần cuối. Ở đây nó thêm vào các thông tin như tiêu đề thư khác , sửa lại địa chỉ người gởi , thêm các thông điệp khác nữa....vv. Máy chủ cleanup là nơi quan trọng nhất trong quá trình xử lý mail. Nó còn làm việc cân đo đong đếm trọng lượng mail . Thông báo đến "người quản lý hàng đợi mail" là có thư mới. ---------- Gửi bài lúc 01:33 AM ---------- đã bổ sung lúc 12:54 AM ---------- Gởi thư Khi một mail được đưa đến hàng đợi thì bước tiếp theo là gởi nó đi.Hình trên cho thấy quá trình gởi mail. Postfix queue manager (qmgr) - quản lý hàng đợi - là trung tâm của hệ thống mail postfix. Nó làm phần lớn công việc trong công việc xử lý mail. Nó sẽ liên hệ với local delivery agent , smtp hoặc pipe delivery agent , và gửi một yêu cầu cung cấp thông tin hàng đợi tên đường dẫn tập tin, địa chỉ người gửi tin nhắn, máy chủ để cung cấp cho nếu điểm đến là từ xa, và một hoặc nhiều địa chỉ người nhận tin nhắn.Các tin nhắn sẽ được xếp vào hàng đợi - queue - sau khi được cleanup deamon kiểm tra. Ở yêu cầu của qmgr thì trivial-rewrite daemon là nơi giải quyết địa chỉ đến. Theo mặc định thì trivial-rewrite daemon chỉ phân biệt được địa chỉ cục bộ và địa chỉ từ xa . Có thể bổ sung thêm thông tin định tuyến với tuỳ chọn transport table. Ở yêu cầu của qmgr thì bounce hoặc defer daemon sẽ tạo ra một bản báo cáo khi mail không thể gởi được vì các lý do như điểm đến không tồn tại hay việc phân giải địa chỉ đến không thể thực thi - timeout - . Ở Postfix queue manager mail sẽ được phân phối theo địa chỉ người nhận. Nếu địa chỉ người nhận ở internet hay ở domain khác thì mail sẽ được chuyển mail qua máy chủ smtp để gởi đến domain khác. Nếu mail được gởi cho người dùng nội bộ kiểu như gmail gởi cho gmail thì mail sẽ được chuyển đến local rồi chuyển vào mailbox của người nhận. Mail có thể gởi ra bên ngoài thông qua pipe ở môi trường dòng lệnh. Kết luận : cơ chế gởi nhận mail của postfix khá lằng nhằng nhưng nếu bạn đọc kỹ thì cũng không quá khó khăn để hiểu.Ở bài viết này có lẽ vẫn chưa chuyên sâu lắm nhưng ngay cả trên trang chủ postfix nó cũng chỉ đến thế là cùng.Ở bài này mình cũng lược bớt một số thứ nên bạn nào muốn hiểu rõ hơn có thể tham khảo các link sau : http://www.postfix.org/OVERVIEW.html http://www.porcupine.org/postfix/doc/delivering.html http://www.porcupine.org/postfix/doc/receiving.html

ST
    Blogger Comment
    Facebook Comment