Ả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