Qmail
Từ Hệ thống thông tin công ty truyền thông Hanel
Mục lục |
Giới thiệu
Qmail là một phần mềm chuyển thư (MTA) được chạy trên hệ điều hành Unix. Qmail đã được viết, bắt đầu từ Tháng Mười Hai năm 1995, bởi Daniel J. Bernstein. Qmail ra đời là lựa chọn thêm an toàn thay thế cho các phần mềm Sendmail phổ biến. Mã nguồn của Qmail được phát hành vào phạm vi công cộng, điều này đã làm cho qmail thành một phần mềm miễn phí và mở để ai cũng có thể sửa đổi cho phù hợp với mục đích sử dụng
Các chức năng phần mềm
An ninh Khi xuất bản lần đầu, Qmail đã đặt vấn đề an ninh-mail lên hàng đầu; từ đó, ý thức bảo mật khác MTAs đã được xuất bản. Những phần mềm tiền nhiệm phổ biến nhất trước qmail, Sendmail, không được thiết kế với bảo mật như là một mục tiêu, và kết quả là đã được một mục tiêu lâu năm cho kẻ tấn công. Trái ngược với sendmail, qmail có một kiến trúc mô-đun bao gồm cả hai bên thành phần, ví dụ, các SMTP nghe thành phần của chạy qmail với nhau các thông tin hơn người quản lý hàng đợi, hoặc SMTP người gửi. Qmail cũng được thực hiện với một nhận thức về an ninh thay thế cho các thư viện chuẩn C, và kết quả là đã không được dễ bị stack và heap, các cuộc tấn công chuỗi định dạng, hoặc chủng tộc điều kiện tập tin tạm thời.
Hiệu suất Khi nó được phát hành, qmail hoạt động nhanh hơn đáng kể so với Sendmail, đặc biệt cho các nhiệm vụ gửi mail số lượng lớn như các máy chủ gửi thư danh sách. Qmail được thiết kế như là một cách để quản lý danh sách gửi thư lớn.
Đơn giản Sendmail cấu hình rất phức tạp. Đối với các cấu hình chung, qmail khá dễ dàng hơn để cấu hình và triển khai.
Thành tựu Qmail khuyến khích việc sử dụng một số đổi mới trong mail
Maildir Bernstein đã phát minh ra Maildir định dạng cho qmail, Maildir chia tách thông điệp email cá nhân vào các tập tin riêng biệt. Không giống như các tiêu chuẩn mà mbox định dạng là tất cả các tin nhắn được lưu trữ trong một tập tin duy nhất, Maildir tránh nhiều khóa và các vấn đề đồng thời, và một cách an toàn có thể được cung cấp qua NFS. Qmail cũng mang đến hộp thư như mbox.
Ký tự đại diện các hộp thư Qmail giới thiệu khái niệm của các ký hiệu đại diện người sử dụng kiểm soát thư. Khi một Emalđược gửi đi, mail gửi đến "ký tự đại diện người sử dụng" trên máy qmail được gửi đến hộp thư riêng biệt, cho phép người dùng để xuất bản nhiều địa chỉ mail cho danh sách gửi thư và quản lý thư rác. Qmail cũng giới thiệu giao thức Mail Transport Protocol (QMTP) và giao thức Mail Queuing Protocol (QMQP).
Modunle Qmail gần như là một module hoàn toàn hệ thống trong đó mỗi chức năng chính là tách khỏi các chức năng chính khác. Nó rất dễ dàng để thay thế bất kỳ phần nào của hệ thống qmail với một mô-đun khác nhau miễn là các module mới giữ lại giao diện giống như bản gốc.
Cài đặt
1 Cài từ “gói” (RPM) hay từ tar ball?
Qmail thuộc dạng mở-nguồn nên bạn có thể tải mã nguồn của Qmail về để compile và thiết kế nó cho thích hợp với hệ điều hành của mình. Có một số RPM cho RedHat trên Internet (dùng http://rpmfind.net để tìm). Tuy nhiên, có ít nhiều hạn chế khi dùng RPM và không phải các “gói” này luôn luôn có sẵn cho các hệ điều hành.
RPM thường buộc người dùng cài đặt binaries vào một nơi trong những thư mục và đôi khi sự ép buộc này không tiện cho cách tổ chức thư mục đã có sẵn của bạn. RPM không giải quyết được các trường hợp bị thiếu hoặc sai “thư viện lệ thuộc” (dependencies). Bởi thế, phương cách compile và build từ mã nguồn xem ra là một phương cách khả thi nhất. Hơn nữa, nó sẽ tạo cơ hội cho bạn hiểu rõ hơn cơ chế làm việc của Qmail sau quá trình cài đặt. Tài liệu này sẽ chỉ chuyên chú vào quy trình compile và build từ mã nguồn.
2 Yêu cầu để cài đặt Qmail
Ðể có thể cài đặt Qmail thành công, sau đây là các yêu cầu tối yếu:
- Một C compiler, các thư mục header và các thư viện cho hệ thống lập trình. Nếu bạn dùng trong một phiên bản Linux, compiler của bạn hẳn là gcc.
- Có đủ nơi chứa cho quá trình build và các binaries và các tài liệu sau khi Qmail được build. Ổ chứa tuyệt đối cần thiết cho Qmail lưu trữ và xử lý mail trong các điểm “xếp hàng” (mail queues).
- Domain name của bạn. Qmail chỉ làm việc (đúng) khi bạn có một domain hợp pháp (fully qualified domain name FQDN). Liên hệ với dịch vụ Internet của bạn cho vấn đề này nếu bạn không rõ.
- Qmail được thiết kế như một MTA hạng nặng. Ðiều này có nghĩa máy chạy Qmail phải có băng thông ổn định và rộng đủ để tải và nhận mail. Nếu bạn có dự định thiết lập một MTA xuyên qua modem, có lẽ serialmail là một phần mềm thích hợp hơn (http://cr.yp.to/software/serialmail-0.75.tar.gz).
3 Những điều cần chuẩn bị
Qmail không phải là một phần mềm MTA phức tạp. Tuy nhiên, cách an toàn nhất nên thử cài đặt trên một máy tách biệt từ hệ thống mail đang làm việc của bạn và thâu thập kinh nghiệm trước khi cài đặt trên máy chính thức.
Thực ra quá trình compile và build qmail sẽ không ảnh hưởng gì đến hệ thống mail đang làm việc của bạn. Tuy nhiên, bước kiểm nghiệm Qmail sẽ làm gián đoạn hệ thống mail đang có. Ðề nghị trên đơn giản là một cách nhắc nhở mang tính an toàn. Nếu bạn có dụng ý chuyển đổi (migrate) từ một MTA khác sang Qmail, cũng như bao nhiêu quy trình chuyển đổi khác, giai đoạn hình thành một chiến thuật chuyển đổi (từng bước một) là một điều hết sức cần thiết và giai đoạn “thử” Qmail sẽ giúp bạn hình thành chiến thuật này chính xác hơn và hữu hiệu hơn.
4 Tải mã nguồn từ đâu
- Mã nguồn Qmail có thể được tải về từ: ftp://cr.yp.to/software/qmail-1.03.tar.gz hoặc theo đường dẫn của site http://cr.yp.to/software.html (site chính thức của mã nguồn Qmail). - Ngoài mã nguồn của Qmail ở trên, bạn cần thêm ít nhất hai phần mềm phụ nhưng tuyệt đối cần thiết cho Qmail (chi tiết hoạt động của các phần mềm phụ này sẽ được trình bày trong quy trình thiết lập Qmail). Hai phần mềm phụ nói trên là: ftp://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz (cho uscpi-tcp) và ftp://cr.yp.to/daemontools/daemontoo...76.tar.gz (cho daemontols).
5 Từng bước cài đặt
5.1 Giải nén mã nguồn
Các bước cài đặt cần chủ quyền root nên trước khi xả nén vào tạo các hồ sơ thư mục, bạn nên chuyển chủ quyền sang super user. Theo quy định chung của System V, các nguồn và binaries do người dùng thêm vào system nên cho vào /usr/local/src, cho nên chúng ta cứ theo vậy mà làm. - chuyển thành super user: myshell$ su (đánh mật khẩu của root)
- đổi umask thành 022 cho bảo đảm
- umask 022
- tạo thư mục /usr/local/src (nếu nó chưa có sẵn)
- mkdir -p /usr/local/src
- dời các source của qmail vào trong /usr/local/src
- mv qmail-1.03.tar.gz ucspi-tcp-0.88.tar.gz daemontools-0.76.tar.gz /usr/local/src
- vào thư mục /usr/local/src để xả nén cái gói qmail, uscpi-tcp và daemontools
- cd /usr/local/src
- gunzip *
- tar -xpvf qmail-1.03.tar
- tar -xpvf ucspi-tcp-0.88.tar
- tar -xpvf daemontools-0.76.tar
5.2 Tạo hồ sơ thư mục
Ðến đây bạn đã có một nhóm thư mục như sau: /usr/local/src/qmail-1.03, /usr/loca/src/ucspi-tcp-0.88 và /usr/local/src/admin/daemontools-0.76.
- Bước kế tiếp tạo thư mục chủ cho Qmail, đây là nơi trọn bộ binary và configuration cho qmail được cất giữ và điều hành.
- mkdir /var/qmail
- Tạo thư mục bin trong thư mục chủ của qmail, nơi chứa các binaries
- mkdir /var/qmail/bin
- Tạo thư mục control trong thư mục chủ của qmail, nơi chứa các hồ sơ chỉnh liệu
- mkdir /var/qmail/control
- Tạo thư mục alias trong thư mục chủ của qmail, nơi chứa các hồ sơ ảo
- mkdir /var/qmail/alias
- Tạo thư mục man trong thư mục chủ của qmail, nơi chứa các tài liệu cho qmail
- mkdir /var/qmail/man
5.3 Tạo tài khoản nhân dụng và nhóm nhân dụng
Vấn đề tạo tài khoản nhân dụng và nhóm nhân dụng hết sức quan trọng cho qmail trong vấn đề hoạt động vào bảo mật. Tài khoản nhân dụng cho phép qmail hoạt động trong giới hạn trách nhiệm của nó. Ðiều này có nghĩa, trường hợp qmail bị “hack”, tài khoản nhân dụng của qmail không thể dùng (hoặc rất khó) để xâm nhập hệ thống sâu hơn.
Có một số phương thức khác nhau để tạo tài khoản nhân dụng và nhóm nhân dụng. Nhiều người xử dụng qmail đã tạo ra một số scripts để thực hiện bước này một cách nhanh chóng và dễ dàng. Tuy nhiên ở đây chúng ta nên đi xuyên qua các bước này một cách cụ thể để có thể hiểu sâu hơn vấn đề tài khoản nhân dụng và bảo mật trong quá trình tạo tài khoản nhân dụng.
- Tạo nhóm nhân dụng nofiles
- groupadd nofiles
- Tạo tài khoản nhân dụng cho nhóm nofiles này
- useradd alias -g nofiles -d /var/qmail/alias -s /bin/true
- useradd qmaild -g nofiles -d /var/qmail -s /bin/true
- useradd qmaill -g nofiles -d /var/qmail -s /bin/true
- useradd qmailp -g nofiles -d /var/qmail -s /bin/true
Như các bạn thấy, chuỗi lệnh ở trên là lệnh căn bản tạo tài khoản nhân dụng cho các user alias, qmaild, qmaill và qmailp có cùng một nhóm nhân dụng là nofiles. Ðặc biệt các lệnh trên không cho những user này một shell nào cả (-s /bin/true – lệnh true thực sự không làm gì cả) vì lý do các user này là các “nhân viên” hoạt động của qmail và chúng không hề cần shell. Một điểm cần nhớ trong quá trình tạo tài khoản nhân dụng: khi “người dùng” không cần một shell để thi hành trách nhiệm thì không nên cho họ một shell. Trường hợp một tài khoản nhân dụng bị hack, tin tặc khó có thể đi sâu hơn nếu tài khoản nhân dụng đó không được phép xử dụng bất cứ một shell nào.
- Tương tự, tạo nhóm nhân dụng qmail như sau:
- groupadd qmail
- Tạo tài khoản nhân dụng cho nhóm nhân dụng qmail này:
- useradd qmailq -g qmail -d /var/qmail -s /bin/true
- useradd qmailr -g qmail -d /var/qmail -s /bin/true
- useradd qmails -g qmail -d /var/qmail -s /bin/true
Một lần nữa, các “người dùng” qmailq, qmailr và qmails thuộc nhóm qmail này không cần shell. Lý do phải tạo các người dùng như trên sẽ được giải thích trong những bước sau.
Bước kế tiếp rất quan trọng. Bước này kiểm nghiệm chủ quyền và nhóm nhân dụng của các “người dùng” vừa tạo ra ở trên.
- Dùng vihoặc bất cứ text editor nào vào /etc/group và viết xuống mã hiệu (GID hay group ID) của nhóm nhân dụng nofiles và qmail.
- Ví dụ group nofiles có mã hiệu là 2004 và group qmail là 2005. Bạn dùng vi vào /etc/passwd và kiểm lại xem các entry cho alias, qmaild, qmaill, qmailp, qmailq, qmailr và qmails có đúng nhóm nhân dụng và shell của họ là /bin/true hay không. Những entry này tương tự như:
alias:*:1005:2004::/var/qmail/alias:/bin/true
qmaild:*:1006:2004::/var/qmail:/bin/true
qmaill:*:1007:2004::/var/qmail:/bin/true
qmailp:*:1008:2004::/var/qmail:/bin/true
qmailq:*:1009:2005::/var/qmail:/bin/true
qmailr:*:1010:2005::/var/qmail:/bin/true
qmails:*:1011:2005::/var/qmail:/bin/true
Trong các entry ở trên mỗi user có riêng một mã hiệu và thuộc vào nhóm nhân dụng khác nhau.
5.4 Build binaries từ mã nguồn
Ðến đây bạn đã sẵn sàng thực hiện bước compile và build qmail. Các bước build qmail như sau: - cd vào thư mục chứa mã nguồn của qmail
- cd /usr/local/src/qmail-1.03
- Ðánh lệnh make buộc compiler biên dịch mã nguồn của qmail dựa trên chỉnh định của hồ sơ Makefile
- make
- Ðánh các lệnh make setup check. Ðây là 2 lệnh gom lại thành một.. Lệnh thứ nhất make setup chuyển các binaries đã được build ở trên vào đúng nơi của nó. Lệnh thứ nhì make check là lệnh dùng để kiểm tra lại thực tính của các hồ sơ và binaries được build.
- make setup check
- Bước kế tiếp là bước hiệu chỉnh DNS cho qmail. Nếu DNS server (fully qualified) của bạn đã sẵn sàng, bạn chỉ cần chạy lệnh:
- ./config
Lệnh này kiểm tra DNS server của bạn, nếu không có gì trở ngại nó đặt domain name của bạn vào /var/qmail/control/defaultdomain và /var/qmail/control/plusdomain (plusdomain dành cho một binary của qmail “qmail-inject” để thêm vào entry của plusdomain khi cần. Xem thêm ở phần 4: Hồ sơ điều chỉnh của Qmail trong “qmail-control”). Lệnh này cũng thêm vào các entry cần thiết cho /var/qmail/control/locals và /var/qmail/control/rcphosts.
Vì một lý do trục trặc nào đó thuộc DNS làm cho lệnh ./config ở trên không thể lấy được DNS entry để điều chỉnh các hồ sơ trên, bạn phải dùng lệnh ./config-fast để cài các entry cần thiết vào /var/qmail/control/
- Ðánh lệnh ./config-fast với thông số là domain name của bạn
- ./config-fast mydomain.com
mydomain.com phải là một domain name hoàn toàn hợp pháp và đã đăng ký với Internic (xem ở bước 2: Yêu cầu để cài đặt qmail ở trên). Lệnh ./config-fast của bước này sẽ cài các entry cần thiết với domain name bạn đã cho (như thông số ở trên); chắc chắn bạn sẽ không bị trở ngại gì trong bước này. Tuy nhiên, những bước sau này bạn sẽ gặp trở ngại nếu như bạn không cung cấp một domain name hợp pháp. Bước này chỉ buộc ./config-fast cài vào entry bạn cung cấp mà không bảo đảm (không kiểm nghiệm) là domain name đó giá trị hay không.
5.5 Cài ucspi-tcp
ucspi-tcp là phần mềm Dr. Dan Bernstein viết với mục đích thay thế cho inet daemon của Unix. Inet daemon được dùng rộng rãi trên các ứng trình Unix và gần đây, xinet ra đời để nâng cao tính năng của inet. Theo Dr Bernstein, phần mềm ucspi-tcp (dùng Unix Client-Server Program Interface cũng của ông) gọn nhẹ, hiệu quả và an toàn hơn inet rất nhiều. Bản thân người viết tài liệu này đã thử cả hai ứng dụng trên xinetd và uscpi-tcp và thấy rõ ưu điểm của ucspi-tcp trên bình diện hiệu năng. Ucspi-tcp được tạo ra với quan tâm bảo mật nên cách xử lý socket giữa client và server rất hiệu quả. Thực tế cho thấy ucspi-tcp ứng hoạt khít khao với qmail.
- Ðể compile và build uscpi-tcp, bạn cd vào thư mục uscpi-tcp
- cd /usr/local/src/ucspi-tcp-0.88
- Ðánh lệnh make buộc compiler biên dịch mã nguồn của ucspi-tcp dựa trên chỉnh định của hồ sơ Makefile
- make
- Ðánh các lệnh make setup check. Ðây là 2 lệnh gom lại thành một.. Lệnh thứ nhất make setup chuyển các binaries đã được build ở trên vào đúng nơi của nó. Lệnh thứ nhì make check là lệnh dùng để kiểm tra lại thực tính của các hồ sơ và binaries được build.
- make setup check
Nếu quy trình này không bị trở ngại gì, bạn đã compile và build xong ucspi-tcp.
5.6 Cài daemontols
Daemontools là một phần mềm giúp bạn rất nhiều trong quy trình quản lý và điều hành qmail server. Bạn có thể dùng qmail mà không cần đến daemontools. Tuy nhiên, khi đã dùng qmail nhiều hơn, bạn sẽ khám phá daemontools là một thứ đồ nghề không thể thiếu được.
Ðể compile và build daemontools, chỉ đơn giản cd vào thư mục của daemontools-0.76
- cd /usr/local/src/admin/daemontools-0.76
- Thư mục này có hai thư mục con, bạn không cần vào các thư mục con mà chỉ cần đánh lệnh
- package/install
Hướng dẫn sử dụng
Góp ý chuyên gia / Đánh giá
phần này sẽ những góp ý của chuyên gia như phần mềm này thì phù hợp với doanh nghiệp nào, nên áp dụng thế nào hoặc chọn đơn vị nào để triển khai phần mềm đó. Có thể là đóng góp cả quy trình triển khai và cách thức triển khai.
So sánh với các phần mềm thương mại
phần này sẽ so sánh hơn kém và tính hiệu quả khi triển khai phần mềm nguồn mở với phần mềm thương mại
Đóng góp cộng đồng
Đây là phần mà cộng đồng phát triển có thể chia sẻ những module,component cho nhau.
Demo
phần cho phép cộng đồng đưa các link demo cụ thể cho từng phần mềm.(Ngoài việc công ty mình có server demo riêng thì cũng nên cho phép cộng đồng chia sẻ bản demo để người dùng có cái nhìn rộng hơn giúp họ thấy điểm mạnh của phần mềm)
