09/03/2012 22:07:07 PM

Ảo hóa người dùng và tên miền với Postfix

(Lượt xem: 1608)

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...

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 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/postfix-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

  • Mẫu giao diện web thiết kế bởi Topweb
Tài nguyên





Xem tất cả
Tư vấn khách hàng
Điện thoại để được tư vấn tốt nhất
0973668377