![]() |
![]() |
|
||||
|
Cài đặt Postfix Mail server + Dovecot + Mysql trên CentOS 5.x
@LM - VNLAMP 1.Giới thiệu: Bài viết này sẽ hướng dẫn các bạn cài đặt Mail server Postfix sử dụng Virtual Domain và Virtual User dựa trên database Mysql. 2.Chuẩn bị Cài đặt các gói cần thiết: yum -y install mysql mysql-devel dovecot cyrus-sasl Kiểm tra nếu server có Postfix rồi th́ remove đi yum remove postfix Tại sao chúng ta lại remove bản posfix có sẵn hoạc yum của CentOS, v́ default chưa có compile module pos mysql. Check bằng command: postconf -m Check trong kết quả trả về sẽ ko có mysql. 3. Cài đặt Postfix version 2.5.1 ftp://ftp.cuhk.edu.hk/pub/packages/m...x-2.5.1.tar.gz Xả nén file source. Vào thư mục source vừa xả nén. Chaỵ command: make -f Makefile.init makefiles \ CCARGS='-DUSE_SASL_AUTH -I/usr/include/sasl \ -DHAS_MYSQL -I/usr/include/mysql' \ AUXLIBS='-L/usr/lib64 -lldap -L/usr/lib64 -llber -L/usr/lib64 -lsasl2 \ -L/usr/lib64/mysql -lmysqlclient -lz -lm' Lưu ư chỗ bold, chỗ đó là khai báo lib của CentOS, ở đây LM build trên CentoS 64bit, v́ thế phaỉ khai báo là /usr/lib64 nếu bạn dung 32bit th́ thế /usr/lib64 thành /usr/lib Tiến hành Compile: make Tiến hành install make install Lưu ư: khi install nó sẽ hỏi các option và dir ở đâu, default nên enter hết để cho các phần sau map đúng các dir của postfix. Sauk hi xong, tiến hành test postfix start postconf –m Sẽ thấy có ḍng chứa mysql. 4. Thiết lập Mysql DB lưu trữ domain và account email. Tạo database tên là mailserver mysqladmin -p mailserver Sau khi chạy xong nó sẽ hỏi pw root, bạn nhập vào. Login vào mysql console: mysql -u root -p Tạo user mailserver với password vnlamp mysql> GRANT SELECT ON mailserver.* TO mailuser@localhost IDENTIFIED BY 'vnlamp'; Exit 5. Tạo DB Table Khi bạn thấy LM ghi là có mysql> nghĩa là ta đang log vào console của mysql. Tạo bảng chứa domain mysql> CREATE TABLE `virtual_domains` ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL ); Tạo bảng chứa user mysql> CREATE TABLE `virtual_users` ( id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, domain_id INT(11) NOT NULL, user VARCHAR(40) NOT NULL, password VARCHAR(32) NOT NULL, CONSTRAINT UNIQUE_EMAIL UNIQUE (domain_id,user), FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE ); Tạo bảng chứa alias mysql> CREATE TABLE `virtual_aliases` ( id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, domain_id INT(11) NOT NULL, source VARCHAR(40) NOT NULL, destination VARCHAR(80) NOT NULL, FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE ); 6. Cấu h́nh và tạo các file map cho Postfix Tạo file /etc/postfix/mysql-virtual-mailbox-domains.cf với nội dung user = mailuser password = vnlamp hosts = 127.0.0.1 dbname = mailserver query = SELECT 1 FROM virtual_domains WHERE name='%s' Thiết lập thông số cho postfix, chạy command này nó sẽ add line vạ file /etc/postfix/main.cf của postfix postconf -e virtual_mailbox_domains=mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf Tạo domain test cho db, chạy command mysql> INSERT INTO virtual_domains (id, name) VALUES (1, 'example.com'); exit Thiết lập cho postfix vdomain examaple.com sẽ lấy từ file, chạy command postmap -q example.com mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf Tạo vmailbox map, chạy command groupadd -g 5000 vmail useradd -g vmail -u 5000 vmail -d /home/vmail -m Khai báo owner, chạy command postconf -e virtual_uid_maps=static:5000 postconf -e virtual_gid_maps=static:5000 Tạo một user thử, Lưu ư kỹ phần này mysql> INSERT INTO virtual_users (id, domain_id, user, password) VALUES (1, 1, 'test', MD5('vnlamp')); Tạo record trung gian với bảng trung gian, Lưu ư kỹ phần này mysql> CREATE VIEW view_users AS SELECT CONCAT(virtual_users.user, '@', virtual_domains.name) AS email, virtual_users.password FROM virtual_users LEFT JOIN virtual_domains ON virtual_users.domain_id=virtual_domains.id; Tạo file /etc/postfix/mysql-virtual-mailbox-maps.cf với nội dung user = mailuser password = vnlamp hosts = 127.0.0.1 dbname = mailserver query = SELECT 1 FROM view_users WHERE email='%s' Thiết lập postfix dùng vmailbox, chạy command postconf -e virtual_mailbox_maps=mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf postmap -q test@example.com mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf Thiết lập alias , Lưu ư kỹ phần này mysql> INSERT INTO virtual_aliases (id, domain_id, source, destination) VALUES (1, 1, 'test', 'test@example.com'), (2, 1, 'test', 'test_alias@yahoo.com'); Tạo bảng trung gian Lưu ư kỹ phần này mysql> CREATE VIEW view_aliases AS SELECT CONCAT(virtual_aliases.source, '@', virtual_domains.name) AS email, destination FROM virtual_aliases LEFT JOIN virtual_domains ON virtual_aliases.domain_id=virtual_domains.id; Tạo file /etc/postfix/mysql-virtual-alias-maps.cf với nội dung user = mailuser password = vnlamp hosts = 127.0.0.1 dbname = mailserver query = SELECT destination FROM view_aliases WHERE email='%s' Thiết lập postfix user của domain nào cần alias postmap -q test@example.com mysql:/etc/postfix/mysql-virtual-alias-maps.cf Tạo file /etc/postfix/mysql-email2email.cf với nội dung user = mailuser password = vnlamp hosts = 127.0.0.1 dbname = mailserver query = SELECT email FROM view_users WHERE email='%s' Rồi chạy command: postmap -q test@example.com mysql:/etc/postfix/mysql-email2email.cf postconf -e virtual_alias_maps=mysql:/etc/postfix/mysql-virtual-alias-maps.cf,mysql:/etc/postfix/mysql-email2email.cf Security: chgrp postfix /etc/postfix/mysql-*.cf chmod u=rw,g=r,o= /etc/postfix/mysql-*.cf 7. Cấu h́nh Dovecot Thêm ḍng này vào file /etc/postfix/master.cf dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -d ${recipient} Restart Postfix postfix reload Thiết lập postfix sử dụng dovecot như là transport, chạy command postconf -e virtual_transport=dovecot postconf -e dovecot_destination_recipient_limit=1 Edit file /etc/dovecot.conf protocols = imap imaps pop3 pop3s disable_plaintext_auth = nomail_location = maildir:/home/vmail/%d/%nnamespace private { separator = . prefix = INBOX. inbox = yes}mechanisms = plain loginpassdb sql { args = /etc/dovecot-sql.conf}userdb static { args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes}socket listen { master { path = /var/run/dovecot/auth-master mode = 0600 user = vmail } client { path = /var/spool/postfix/private/auth mode = 0660 user = postfix group = postfix }} Taọ file /etc/dovecot-sql.conf với nội dung driver = mysql connect = host=127.0.0.1 dbname=mailserver user=mailuser password=vnlamp default_pass_scheme = PLAIN-MD5 password_query = SELECT email as user, password FROM view_users WHERE email='%u'; restart Dovecot: service dovecot restart mấy anh chính quy th́: /etc/init.d/dovecot restart Lưu ư cần theo dơi tail -f /var/log/maillog , dovecot hay postfix có error th́ nó sẽ báo. dovecot: Dovecot v1.0.rc15 starting up dovecot: auth-worker(default): mysql: Connected to 127.0.0.1 (mymailserver) Module auth-mysql đă duoc load. Security chgrp vmail /etc/dovecot/dovecot.conf chmod g+r /etc/dovecot/dovecot.conf 8. Setup SSL/SMTP cho Postfix/Dovecot mkdir -p/etc/ssl/private/ openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/dovecot.pem \ -keyout /etc/ssl/private/dovecot.pem chmod o= /etc/ssl/private/dovecot.pem Cấu h́nh các cilent cho phép relay mail không cần đăng nhập, chạy command postconf -e mynetworks=192.168.2.0/24 Hoàn tất cấu h́nh SMTP postconf -e smtpd_sasl_type=dovecot postconf -e smtpd_sasl_path=private/auth postconf -e smtpd_sasl_auth_enable=yes postconf -e smtpd_recipient_restrictions=permit_mynetworks,per mit_sasl_authenticated,reject_unauth_destination Lời kết: Lưu ư các ḍng In đỏ và các ḍng có ghi lưu ư Tạo thêm domain th́: Trong mysql console chạy INSERT INTO virtual_domains (name) VALUES ('<tendomain>'); Khai báo domain mới với postfix postmap -q <tendomain> mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf C̣n tạo user mới th́ tương tự, xem các ḍng màu đỏ. Last edited by Lovelinux; 24-07-2008 at 06:16 AM. |
| The Following User Says Thank You to Lovelinux For This Useful Post: | ||
boy8x_sg (3 Weeks Ago) | ||
|
|||
|
Quote:
make -f Makefile.in MAKELEVEL= Makefiles (echo "# Do not edit -- this file documents how Postfix was built for your machine."; /bin/sh makedefs) >makedefs.tmp makedefs: line 309: gcc: command not found make: *** [Makefiles] Error 1 make: *** [makefiles] Error 2 |
|
||||
|
bạn kiểm tra lại version bạn down về. SAu đó view lại file readme để xem cách setup của version đó. Ngoài ra kiểm tra lại quyền chạy bash file.
__________________
http://hackingart.com/tinh_yeu_va_gi...c_girl_9x.html |
|
|||
|
loi tren la do em chua cai goi GCC.
Postfix cua em la phien ban postfix-2.5.1 Bi gio no bao loi nhu sau Code:
dict_mysql.c:723: error: âHOSTâ has no member named âtypeâ dict_mysql.c:725: error: âHOSTâ has no member named ânameâ dict_mysql.c:726: error: âHOSTâ has no member named ânameâ dict_mysql.c:727: error: âHOSTâ has no member named âportâ dict_mysql.c:728: error: âHOSTâ has no member named ânameâ dict_mysql.c:730: error: âHOSTâ has no member named ânameâ dict_mysql.c:731: error: âHOSTâ has no member named ânameâ dict_mysql.c:732: error: âHOSTâ has no member named âtypeâ dict_mysql.c:737: error: âHOSTâ has no member named ânameâ dict_mysql.c:737: error: âHOSTâ has no member named ânameâ dict_mysql.c:738: error: âHOSTâ has no member named âportâ dict_mysql.c:738: error: âHOSTâ has no member named âtypeâ dict_mysql.c: In function âplmysql_deallocâ: dict_mysql.c:772: error: âHOSTâ has no member named âdbâ dict_mysql.c:773: error: âHOSTâ has no member named âdbâ dict_mysql.c:774: error: âHOSTâ has no member named âhostnameâ dict_mysql.c:775: error: âHOSTâ has no member named ânameâ dict_mysql.c:776: error: âHOSTâ has no member named ânameâ make: *** [dict_mysql.o] Error 1 make: *** [update] Error 1 Khi em khong nhap doan code sau, ma chi thuc hien lenh make, va make install thi cai dat binh thuong, nhung sau do dung lenh rpm -qa |grep postfix thi thay postfix chua cai dat....vay van de gi vay nhi??? Code:
make -f Makefile.init makefiles \
'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include' \
'AUXLIBS=-L/usr/local/mysql/lib -lmysqlclient -lz -lm'
|
|
||||
|
đây là cài từ source chứ không phải là cài gói PRM bạn ah.
Có 3 cách cài cơ bản 1. Yum (CentOS) 2. RPM 3. Từ Source, biên dịch và chạy!
__________________
Hacking - The Art of Exploitation ![]() DomainKeys: Ch́a khóa quan trọng của Anti-Spammer |
![]() |
| Thread Tools | |
| Display Modes | |
|
|