Ảo hóa người dùng và tên miền với Postfix, Courier, MySQL và SquirrelMail Quản Trị Mạng - Postfix là một MTA (Mail Transport Agent), được viết bởi Wietse Venema khi ông đang làm việc ở trung tâm nghiên cứu T. J. Watson của IBM. Đặc điểm của Postfix: dễ quản lý, nhanh, an toàn. Chỉ cần một server với hardware thông thường, Postfix có thể chuyển giao hàng triệu email một ngày. Trong bài viết sau chúng tôi sẽ hướng dẫn các bạn cách cài đặt một mail server Postfix cơ bản trên user và domain ảo (tức là user và domain được lưu trong cơ sở dữ liệu MySQL). >>> Chạy SquirrelMail trên Nginx (LEMP) trong Debian Squeeze/Ubuntu 11.04 Ngoài ra, bài viết sẽ thể hiện quá trình cài đặt và cấu hình Courier (Courier-POP3, Courier-IMAP), từ đó Courier có thể xác thực cơ sở dữ liệu MySQL mà Postfix sử dụng. Kết quả là máy chủ Postfix có khả năng xác thực SMTP-AUTH, TLS và quota (quota không được xây dựng trong Postfix theo mặc định, chúng ta sẽ vá Postfix một cách thích hợp). Những mật khẩu sẽ được lưu trữ trong form encrypted của database. Đồng thời chúng tôi sẽ trình bày tới các bạn cách cài đặt Amavisd, SpamAssassin và ClamAV để các email này được quét và kiểm tra spam, virus. Cuối cùng chúng ta sẽ tiến hành cài đặt giao diện webmail SquirrelMail để các user có thể đọc và gửi mail, thay đổi password. Tổng quan Ưu điểm của một thiết lập “ảo” (user và domain ảo trong MySQL database) là nó làm tăng rất nhiều hiệu suất so với một thiết lập cơ bản dựa trên user hệ thống “real”. Với thiết lập ảo, mail server của bạn có thể xử lý hàng ngàn domain và user. Bên cạnh đó, việc quản trị cũng trở nên dễ dàng hơn bởi bạn chỉ cần xử lý với MySQL database khi thêm user/domain mới hoặc chỉnh sửa những tài khoảng hiện có. Không cần những lệnh postmap để tạo file db, không cần tải lại Postfix việc quản lý MySQL database có thể thông qua công cụ web như phpMyAdmin (sẽ được cài đặt trong hướng dẫn này). Ưu điểm thứ ba là người dùng sẽ có một địa chỉ email chính là tên user thay vì một username và một email gây phiền phức. 1. Một số lưu ý Ở đây chúng tôi sử dụng hệ thống Fedora 15 x86_64, có địa chỉ IP tĩnh 192.168.0.100 và hostname server1.example.com. Bạn cần chắc chắn rằng tường lửa và SELinux đều được vô hiệu hóa. 2. Một số phần mềm cần thiết Trước tiên chúng ta cần cập nhập các gói có sẵn trên hệ thống: yum update Sau đó cài đặt một số phần mềm cần thiết: yum groupinstall 'Development Tools' yum groupinstall 'Development Libraries' 3. Cài đặt Apache, MySQL, phpMyAdmin Bộ phần mềm này có thể được cài cùng lúc qua một dòng lệnh sau (bao gồm các gói cần xây dựng cho Courier-IMAP): yum install ntp httpd mysql-server php php-mysql php-mbstring rpm-build gcc mysql-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel phpMyAdmin pcre-devel openldap-devel postgresql-devel expect libtool-ltdl- devel openldap-servers libtool gdbm-devel pam-devel gamin-devel libidn- devel 4. Cài đặt Courier-IMAP, Courier-Authlib, And Maildrop Thật không may vì gói rpm không được tích hợp sẵn cho Courier-IMAP, Courier- Authlib, và Maildrop. Do đó chúng ta cần xây dựng nó để sử dụng. Các gói rpm không nên xây dựng với quyền là root, courier-imap sẽ từ chối biên dịch nếu phát hiện gói này chạy ở root. Vì vậy chúng tôi sẽ tạo một tài khoản bình thường (ví dụ quantrimang) và gán cho nó một mật khẩu: useradd -m -s /bin/bash quantrimang passwd quantrimang Sau đó chúng ta sử dụng lệnh sudo để quantrimang có thể biên dịch và cài đặt các gói rpm. Nhưng trước tiên cần cho phép quantrimang chạy tất cả các lệnh sử dụng sudo: visudo Trong tập tin được mở, tại dòng root ALL=(ALL) ALL thêm một dòng tương tự dành cho quantrimang bên dưới: [ ] ## Allow root to run any commands anywhere root ALL=(ALL) ALL quantrimang ALL=(ALL) ALL [ ] Bây giờ là lúc xây dựng gói rpm. Đầu tiên trở thành quantrimang: su quantrimang Tiếp theo tạo môi trường xây dựng: mkdir $HOME/rpm mkdir $HOME/rpm/SOURCES mkdir $HOME/rpm/SPECS mkdir $HOME/rpm/BUILD mkdir $HOME/rpm/BUILDROOT mkdir $HOME/rpm/SRPMS mkdir $HOME/rpm/RPMS mkdir $HOME/rpm/RPMS/i386 mkdir $HOME/rpm/RPMS/x86_64 echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros Tạo thư mục downloads và tải về tập tin nguồn tại đây: mkdir $HOME/downloads cd $HOME/downloads wget https://sourceforge.net/projects/courier/files/authlib/0.63.0/courier- authlib-0.63.0.tar.bz2/download wget https://sourceforge.net/projects/courier/files/imap/4.9.3/courier-imap- 4.9.3.tar.bz2/download wget https://sourceforge.net/projects/courier/files/maildrop/2.5.4/maildrop- 2.5.4.tar.bz2/download Vẫn ở trong $HOME/downloads, chúng ta xây dựng courier-authlib: sudo rpmbuild -ta courier-authlib-0.63.0.tar.bz2 Sau khi hoàn thành, gói rpm có thể được tìm thấy trong /root/rpmbuild/RPMS/x86_64 (/root/rpmbuild/RPMS/i386 nếu bạn đang chạy hệ thống i386): sudo ls -l /root/rpmbuild/RPMS/x86_64 Các gói có sẵn của rpm hiển thị như sau: [quantrimang@server1 downloads]$ sudo ls - l /root/rpmbuild/RPMS/x86_64 total 520 -rw-r r 1 root root 123448 May 25 18:06 courier- authlib-0.63.0-1.fc15.x86_64.rpm -rw-r r 1 root root 265144 May 25 18:06 courier- authlib-debuginfo-0.63.0-1.fc15.x86_64.rpm -rw-r r 1 root root 34876 May 25 18:06 courier- authlib-devel-0.63.0-1.fc15.x86_64.rpm -rw-r r 1 root root 17448 May 25 18:06 courier- authlib-ldap-0.63.0-1.fc15.x86_64.rpm -rw-r r 1 root root 13808 May 25 18:06 courier- authlib-mysql-0.63.0-1.fc15.x86_64.rpm -rw-r r 1 root root 13020 May 25 18:06 courier- authlib-pgsql-0.63.0-1.fc15.x86_64.rpm -rw-r r 1 root root 8276 May 25 18:06 courier- authlib-pipe-0.63.0-1.fc15.x86_64.rpm -rw-r r 1 root root 34108 May 25 18:06 courier- authlib-userdb-0.63.0-1.fc15.x86_64.rpm [quantrimang@server1 downloads]$ Chọn một gói bạn muốn, sau đó cài đặt nó tương tự dưới đây: sudo rpm -ivh /root/rpmbuild/RPMS/x86_64/courier-authlib-0.63.0- 1.fc15.x86_64.rpm /root/rpmbuild/RPMS/x86_64/courier-authlib-mysql- 0.63.0-1.fc15.x86_64.rpm /root/rpmbuild/RPMS/x86_64/courier-authlib-devel- 0.63.0-1.fc15.x86_64.rpm Quay trở lại thư mục downloads: cd $HOME/downloads Chạy các lệnh sau đây để tạo các thư mục tiếp nhận yêu cầu/cho phép thay đổi (nếu không quá trình xây dựng Courier-Imap sẽ thất bại): sudo mkdir /var/cache/ccache/tmp sudo chmod o+rwx /var/cache/ccache/ sudo chmod 777 /var/cache/ccache/tmp Bây giờ chạy lệnh rpmbuild lần nữa, lưu ý rằng không thông qua sudo bởi trình biên dịch không cho phép nó chạy như là root. rpmbuild -ta courier-imap-4.9.3.tar.bz2 Sau đó gói rpm sẽ được tìm thấy trong $HOME/rpm/RPMS/x86_64 ($HOME/rpm/RPMS/i386 nếu là hệ thống i386): cd $HOME/rpm/RPMS/x86_64 Chạy lệnh sau: ls -l Bạn sẽ nhận được các gói rpm có sẵn: [quantrimang@server1 x86_64]$ ls -l total 1040 -rw-rw-r 1 quantrimang quantrimang 315872 May 25 18:33 courier-imap- 4.9.3-1.15.x86_64.rpm -rw-rw-r 1 quantrimang quantrimang 743200 May 25 18:33 courier-imap- debuginfo-4.9.3-1.15.x86_64.rpm [quantrimang@server1 x86_64]$ Cài đặt courier-imap bằng lệnh sau: sudo rpm -ivh courier-imap-4.9.3-1.15.x86_64.rpm Quay trở lại thư mục downloads: cd $HOME/downloads Chạy lệnh rpmbuild để xây dựng gói maildrop: sudo rpmbuild -ta maildrop-2.5.4.tar.bz2 Sau đó gói rpm có thể tìm thấy tại /root/rpmbuild/RPMS/x86_64 (/root/rpmbuild/RPMS/i386 với hệ thống i386). sudo ls -l /root/rpmbuild/RPMS/x86_64 Các gói rpm có sẵn được liệt kê: [quantrimang@server1 downloads]$ sudo ls - l /root/rpmbuild/RPMS/x86_64 total 1628 -rw-r r 1 root root 123448 May 25 18:06 courier- authlib-0.63.0-1.fc15.x86_64.rpm -rw-r r 1 root root 265144 May 25 18:06 courier- authlib-debuginfo-0.63.0-1.fc15.x86_64.rpm -rw-r r 1 root root 34876 May 25 18:06 courier- authlib-devel-0.63.0-1.fc15.x86_64.rpm -rw-r r 1 root root 17448 May 25 18:06 courier- authlib-ldap-0.63.0-1.fc15.x86_64.rpm -rw-r r 1 root root 13808 May 25 18:06 courier- authlib-mysql-0.63.0-1.fc15.x86_64.rpm -rw-r r 1 root root 13020 May 25 18:06 courier- authlib-pgsql-0.63.0-1.fc15.x86_64.rpm -rw-r r 1 root root 8276 May 25 18:06 courier- authlib-pipe-0.63.0-1.fc15.x86_64.rpm -rw-r r 1 root root 34108 May 25 18:06 courier- authlib-userdb-0.63.0-1.fc15.x86_64.rpm -rw-r r 1 root root 278520 May 25 18:50 maildrop- 2.5.4-1.15.x86_64.rpm -rw-r r 1 root root 685672 May 25 18:50 maildrop- debuginfo-2.5.4-1.15.x86_64.rpm -rw-r r 1 root root 99924 May 25 18:50 maildrop- devel-2.5.4-1.15.x86_64.rpm -rw-r r 1 root root 63968 May 25 18:50 maildrop- man-2.5.4-1.15.x86_64.rpm [quantrimang@server1 downloads]$ Cài đặt maildrop bằng lệnh sau: sudo rpm -ivh /root/rpmbuild/RPMS/x86_64/maildrop-2.5.4- 1.15.x86_64.rpm Sau khi biên dịch và cài đặt thành công các gói cần thiết, bạn có thể trở lại root bằng lệnh: exit 5. Áp dụng bản vá Quota Patch cho Postfix Chúng ta phải lấy các nguồn Postfix rpm, vá nó với bản vá quota, xây dựng một gói Postfix rpm mới và cài đặt nó: cd /usr/src wget http://ftp-stud.fht- esslingen.de/pub/Mirrors/fedora/linux/releases/15/Everything/source/SRPMS/p ostfix-2.8.2-2.fc15.src.rpm rpm -ivh postfix-2.8.2-2.fc15.src.rpm Các cảnh báo sau hiện ra, bạn có thể bỏ qua nó: warning: user mockbuild does not exist - using root warning: group mockbuild does not exist - using root cd /root/rpmbuild/SOURCES wget http://vda.sourceforge.net/VDA/postfix-vda-v10-2.8.2.patch cd /root/rpmbuild/SPECS/ Chúng ta cần sửa lại tập tin postfix.spec: vi postfix.spec Và thêm Patch0: postfix-vda-v10-2.8.2.patch vào đoạn # Patches, thêm %patch0 - p1 -b .vda-v10 vào đoạn %setup -q như sau: [ ] # Patches Patch0: postfix-vda-v10-2.8.2.patch Patch1: postfix-2.7.0-config.patch Patch2: postfix-2.6.1-files.patch Patch3: postfix-alternatives.patch Patch8: postfix-large-fs.patch Patch9: pflogsumm-1.1.3-datecalc.patch [ ] %prep %setup -q # Apply obligatory patches %patch0 -p1 -b .vda-v10 %patch1 -p1 -b .config %patch2 -p1 -b .files %patch3 -p1 -b .alternatives %patch8 -p1 -b .large-fs [ ] Sau đó xây dựng gói Postfix rpm mới với quota và hỗ trợ MySQL: rpmbuild -ba postfix.spec Vào thư mục chứa postfix rpm trong /root/rpmbuild/RPMS/x86_64 (/root/rpmbuild/RPMS/i386 nếu là hệ thống i386): cd /root/rpmbuild/RPMS/x86_64 Chạy lệnh: ls -l Bạn sẽ nhận được các gói có sẵn: [root@server1 x86_64]# ls -l total 8308 -rw-r r 1 root root 123528 Jun 20 16:33 courier- authlib-0.63.0-1.fc15.x86_64.rpm -rw-r r 1 root root 265100 Jun 20 16:33 courier- authlib-debuginfo-0.63.0-1.fc15.x86_64.rpm -rw-r r 1 root root 34876 Jun 20 16:33 courier- authlib-devel-0.63.0-1.fc15.x86_64.rpm -rw-r r 1 root root 17452 Jun 20 16:33 courier- authlib-ldap-0.63.0-1.fc15.x86_64.rpm -rw-r r 1 root root 13812 Jun 20 16:33 courier- authlib-mysql-0.63.0-1.fc15.x86_64.rpm -rw-r r 1 root root 13040 Jun 20 16:33 courier- authlib-pgsql-0.63.0-1.fc15.x86_64.rpm -rw-r r 1 root root 8280 Jun 20 16:33 courier- authlib-pipe-0.63.0-1.fc15.x86_64.rpm -rw-r r 1 root root 34144 Jun 20 16:33 courier- authlib-userdb-0.63.0-1.fc15.x86_64.rpm -rw-r r 1 root root 278628 Jun 20 18:29 maildrop- 2.5.4-1.15.x86_64.rpm -rw-r r 1 root root 685320 Jun 20 18:29 maildrop- debuginfo-2.5.4-1.15.x86_64.rpm -rw-r r 1 root root 99920 Jun 20 18:29 maildrop- devel-2.5.4-1.15.x86_64.rpm -rw-r r 1 root root 63964 Jun 20 18:29 maildrop- man-2.5.4-1.15.x86_64.rpm -rw-r r 1 root root 2170848 Jun 20 18:40 postfix- 2.8.2-2.fc15.x86_64.rpm -rw-r r 1 root root 4599208 Jun 20 18:40 postfix- debuginfo-2.8.2-2.fc15.x86_64.rpm -rw-r r 1 root root 63536 Jun 20 18:40 postfix- perl-scripts-2.8.2-2.fc15.x86_64.rpm [root@server1 x86_64]# Chọn một gói bạn muốn và cài đặt như dưới đây: rpm -ivh postfix-2.8.2-2.fc15.x86_64.rpm . Ảo hóa người dùng và tên miền với Postfix, Courier, MySQL và SquirrelMail Quản Trị Mạng - Postfix là một MTA (Mail Transport. của một thiết lập ảo (user và domain ảo trong MySQL database) là nó làm tăng rất nhiều hiệu suất so với một thiết lập cơ bản dựa trên user hệ thống “real”. Với thiết lập ảo, mail server của. Amavisd, SpamAssassin và ClamAV để các email này được quét và kiểm tra spam, virus. Cuối cùng chúng ta sẽ tiến hành cài đặt giao diện webmail SquirrelMail để các user có thể đọc và gửi mail, thay