Ảo hóa tài khoản người dùng và tên miền
Trong bài viết sau, Ban Quản Trị sẽ hướng dẫn, giải thích với các bạn
cách cài đặt hệ thống mail server dựa trên Postfix – được xây dựng trên
tài khoản user và domain ảo (ví dụ 2 giá trị này được lưu trữ trong cơ
sở dữ liệu MySQL).
Đồng thời chúng tôi cũng xây dựng lại toàn bộ quá trình cài đặt và thiết lập
của Courier (Courier-POP3, Courier-IMAP), qua đó Courier có thể nhận
dạng được luồng thông tin dữ liệu tương tự như MySQL.
Kết quả của Postfix server là khả năng hỗ trợ cơ chế xác thực SMTP-AUTH,
TLS và quota (quota không được tích hợp cùng với Postfix ở chế độ mặc
định), trong đó mật khẩu sẽ được lưu trữ dưới mẫu encrypted trong cơ sở dữ
liệu. Bên cạnh đó, bài viết cũng sẽ chỉ ra cách cài đặt Amavisd,
tfix/master.cf:
vi /etc/postfix/master.cf
[...]
amavis unix - - - - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
127.0.0.1:10025 inet n - - - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o
receive_override_options=no_unknown_recipient_checks,no_header_body_
checks
-o smtpd_bind_address=127.0.0.1
Khởi động lại Postfix để áp dụng các sự thay đổi:
/etc/init.d/postfix restart
Cài đặt Razor, Pyzor và DCC đồng thời cấu hình SpamAssassin
Razor, Pyzor và DCC là các bộ lọc email với tính năng tương tác lẫn nhau.
Để cài đặt Razor và Pyzor, gõ lệnh sau:
yum install perl-Razor-Agent pyzor
Khởi tạo cả 2 dịch vụ:
chmod -R a+rX /usr/share/doc/pyzor-0.5.0 /usr/bin/pyzor /usr/bin/pyzord
chmod -R a+rX /usr/lib/python2.6/site-packages/pyzor
su -m amavis -c 'pyzor --homedir /var/spool/amavisd discover'
su -m amavis -c 'razor-admin -home=/var/spool/amavisd -create'
su -m amavis -c 'razor-admin -home=/var/spool/amavisd -register'
Và cài đặt DCC theo cách sau:
cd /tmp
wget
tar xzvf dcc-dccproc.tar.Z
cd dcc-dccproc-1.3.126
./configure --with-uid=amavis
make
make install
chown -R amavis:amavis /var/dcc
ln -s /var/dcc/libexec/dccifd /usr/local/bin/dccifd
Bước tiếp theo, chúng ta cần “thông báo” cho SpamAssassin để sử dụng 3
chương trình này. Chỉnh sửa file /etc/mail/spamassassin/local.cf như sau:
vi /etc/mail/spamassassin/local.cf
# These values can be overridden by editing ~/.spamassassin/user_prefs.cf
# (see spamassassin(1) for details)
# These should be safe assumptions and allow for simple visual sifting
# without risking lost emails.
#required_hits 5
#report_safe 0
#rewrite_header Subject [SPAM]
# dcc
use_dcc 1
dcc_path /usr/local/bin/dccproc
#pyzor
use_pyzor 1
pyzor_path /usr/bin/pyzor
#razor
use_razor2 1
razor_config /var/spool/amavisd/razor-agent.conf
#bayes
use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1
Tiếp theo, kích hoạt plugin DCC trong SpamAssassin. Mở
/etc/mail/spamassassin/v310.pre và bỏ ghi chú của dòng loadplugin
Mail::SpamAssassin::Plugin::DCC:
vi /etc/mail/spamassassin/v310.pre
[...]
# DCC - perform DCC message checks.
#
# DCC is disabled here because it is not open source. See the DCC
# license for more details.
#
loadplugin Mail::SpamAssassin::Plugin::DCC
[...]
Kiểm tra lại toàn bộ thiết lập của SpamAssassin bằng lệnh sau:
spamassassin --lint
Nếu thành công, thì chương trình sẽ không thông báo gì cả. Sau đó, chạy
lệnh:
/etc/init.d/amavisd restart
Tiến hành cập nhật các quy luật của SpamAssassin như sau:
sa-update --no-gpg
Tạo tham số cron để bộ quy luật này cập nhật thường xuyên và có trình tự.
Chạy lệnh sau:
crontab -e
để mở thẻ chỉnh sửa cron. Tạo tham số sau:
23 4 */2 * * /usr/bin/sa-update --no-gpg &> /dev/null
Có nghĩa là việc cập nhật sẽ được tiến hành hàng ngày vào lúc 4.23h.
Cảnh báo về Quota Exceedance
Để thiết lập nhận thông tin cảnh báo đối với những tài khoản sử dụng email
vượt quá mức quota cho phép, tạo file /usr/local/sbin/quota_notify:
[xem lệnh]
Hãy chắc chắn rằng bạn đã điều chỉnh các biến phù hợp ở trên đầu (đặc biệt
là địa chỉ postmaster@domain.tld)
Và tiếp đó, tạo file thực thi đoạn mã này:
chmod 755 quota_notify
Và gõ lệnh:
crontab -e
để tạo tham số cron cho đoạn mã đó:
0 0 * * * /usr/local/sbin/quota_notify &> /dev/null
Kiểm tra Postfix
Để kiểm tra chắc chắn Postfix có hoạt động với SMTP-AUTH và TLS, chạy
lệnh sau:
telnet localhost 25
Sau khi bạn thiết lập 1 kết nối bất kỳ đến Postfix mail server, gõ lệnh:
ehlo localhost
Và sẽ thấy những dòng thông báo sau:
250-STARTTLS
và
250-AUTH LOGIN PLAIN
Nghĩa là mọi thứ đều ổn.
[root@server1 sbin]# telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 server1.example.com ESMTP Postfix
ehlo localhost
250-server1.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.
[root@server1 sbin]#
Gõ:
quit
để quay trở lại hệ thống.
Đồng bộ hóa các cơ sở dữ liệu và kiểm tra
Để thực hiện bước này, gõ câu lệnh sau:
mysql -u root -p
USE mail;
Và tối thiểu, bạn phải tạo những thành phần sau trong bảng domains và
users:
INSERT INTO `domains` (`domain`) VALUES ('example.com');
INSERT INTO `users` (`email`, `password`, `quota`) VALUES
('sales@example.com', ENCRYPT('secret'), 10485760);
Hãy cẩn thận khi dùng cú pháp ENCRYPT trong lệnh INSERT thứ 2 để mã
hóa mật khẩu.
Nếu muốn tiếp tục thêm dữ liệu vào các bảng khác, thì hãy làm theo cách
sau:
INSERT INTO `forwardings` (`source`, `destination`) VALUES
('info@example.com', 'sales@example.com');
INSERT INTO `transport` (`domain`, `transport`) VALUES ('example.com',
'smtp:mail.example.com');
Thoát khỏi MySQL shell, gõ lệnh:
quit;
Đối với nhiều người, sẽ dễ dàng và đơn giản hơn rất nhiều nếu quản lý và
điều khiển MySQL bằng giao diện, qua đó, có thể sử dụng thêm
phpMyAdmin (ở bài viết này là hoặc
để quản lý cơ sở dữ liệu mail.
Bên cạnh đó, mỗi khi tạo mới tài khoản, hãy nhớ sử dụng chức năng
ENCRYPT để mã hóa password:
Và tương tự, bảng dữ liệu forwardings sẽ trông như thế này:
Bảng transport:
Gõ lệnh:
man transport
để biết thêm thông tin chi tiết cụ thể.
Gửi email Welcome để tạo Maildir
Khi bạn tạo 1 tài khoản email mới, và thử lấy email từ đó (với chuẩn
POP3/IMAP), thông thường sẽ nhận được thông báo lỗi rằng Maildir không
tồn tại. Maildir sẽ tự động được tạo ra khi email đầu tiên được tạo đối với tài
khoản đầu tiên tương ứng. Trước tiên, cài đặt gói mailx:
yum install mailx
Để gửi email welcome tới địa chỉ sales@example.com, làm như sau:
mailx sales@example.com
Bạn sẽ nhận được thông báo của tiêu đề, gõ bất kỳ nội dung nào (ví dụ
Welcome), sau đó nhấn Enter. Trong dòng tiếp theo, gõ nội dung thông báo.
Khi hoàn tất phần nội dung, nhấn Enter để bắt đầu 1 dòng mới, tại đây nhấn
CTRL+D:
[root@server1 ~]# mailx sales@example.com
Subject: Welcome <-- ENTER
Welcome! Have fun with your new mail account. <-- ENTER
<-- CTRL+D
EOT
[root@server1 ~]#
Cài đặt SquirrelMail
SquirrelMail là hệ thống quản lý webmail có giao diện, cho phép người sử
dụng gửi và nhận email thông qua trình duyệt. Để cài đặt SquirrelMail, gõ
lệnh sau:
yum install squirrelmail php-pear-DB
Sau đó, khởi động lại Apache:
/etc/init.d/httpd restart
SquirrelMail có đi kèm với 1 số plugin có sẵn, nhưng thật không may, không
có plugin nào hỗ trợ người dùng thay đổi mật khẩu email trong cơ sở dữ liệu
MySQL. Nhưng thay vào đó, các bạn có thể sử dụng plugin thay thế sau:
cd /usr/share/squirrelmail/plugins
wget
uirrelmail.org%2Fplugins%2Fchange_sqlpass-3.3-1.2.tar.gz
tar xvfz change_sqlpass-3.3-1.2.tar.gz
cd change_sqlpass
cp config.php.sample config.php
Tiếp theo, chúng ta phải điều chỉnh config.php, thay đổi các biến sau:
$csp_dsn, $lookup_password_query, $password_update_queries,
$password_encryption, $csp_salt_static, và $csp_delimiter như sau và chú
thích bên ngoài $csp_salt_query:
vi config.php
[...]
$csp_dsn = 'mysql://mail_admin:mail_admin_password@localhost/mail';
[...]
$lookup_password_query = 'SELECT count(*) FROM users WHERE email
= "%1" AND password = %4';
[...]
$password_update_queries = array('UPDATE users SET password = %4
WHERE email = "%1"');
[...]
$password_encryption = 'MYSQLENCRYPT';
[...]
$csp_salt_static = 'LEFT(password, 2)';
[...]
//$csp_salt_query = 'SELECT salt FROM users WHERE username = "%1"';
[...]
$csp_delimiter = '@';
[...]
File sau khi chỉnh sửa sẽ trông giống thế này:
[xem lệnh]
Mặt khác, plugin Change SQL Password cũng phụ thuộc phần lớn vào khả
năng tương thích của các hệ thống plugin như sau:
cd /usr/share/squirrelmail/plugins
wget
uirrelmail.org%2Fplugins%2Fcompatibility-2.0.16-1.0.tar.gz
tar xvfz compatibility-2.0.16-1.0.tar.gz
Bước tiếp theo, di chuyển tới mục điều chỉnh SquirrelMail và “thông báo”
tới SquirrelMail rằng chúng ta sẽ sử dụng Courier như chuẩn POP3 và
IMAP server, đồng thời kích hoạt 2 plugin Change SQL Password và
Compatibility:
/usr/share/squirrelmail/config/conf.pl
Menu điều khiển sẽ hiển thị:
[xem lệnh]
Điều cuối cùng cần thực hiện là chỉnh sửa file
/etc/squirrelmail/config_local.php và chú thích bên ngoài biến
$default_folder_prefix – nếu không thực hiện bước này, bạn sẽ nhận được
thông báo lỗi trong SquirrelMail sau khi đăng nhập: Query: CREATE "Sent"
Reason Given: Invalid mailbox name.
vi /etc/squirrelmail/config_local.php
<?php
/**
* Local config overrides.
*
* You can override the config.php settings here.
* Don't do it unless you know what you're doing.
* Use standard PHP syntax, see config.php for examples.
*
* @copyright © 2002-2006 The SquirrelMail Project Team
* @license GNU Public
License
* @version $Id: config_local.php,v 1.2 2006/07/11 03:33:47 wtogami Exp $
* @package squirrelmail
* @subpackage config
*/
//$default_folder_prefix = '';
?>
Mở trình duyệt và gõ địa chỉ sau: hoặc
để truy cập SquirrelMail, sử dụng tài khoản
email (ở đây là sales@example.com) và mật khẩu khai báo bên trên:
Bạn sẽ thấy email welcome trong mục inbox:
Để thay đổi mật khẩu, chọn Options > Change Password:
Gõ mật khẩu hiện tại và mật khẩu mới 2 lần:
Ngay sau khi đổi mật khẩu, bạn sẽ bị “văng” ra khỏi cửa sổ làm việc hiện tại
và phải tiến hành đăng nhập lại:
Chúc các bạn thành công!
File đính kèm:
Ảo hóa tài khoản người dùng và tên miền.pdf

