Server - System - Manager - CentOS, Operation System, VBB, HACKING AND SECURITY

Go Back   Server - System - Manager - CentOS, Operation System, VBB, HACKING AND SECURITY > Email Server & Client > Mail server

Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 03-07-2008
Lovelinux's Avatar
Super Moderator
 
Join Date: Jun 2008
Posts: 221
Thanks: 22
Thanked 46 Times in 24 Posts
Default Cài đặt Postfix Mail server + Dovecot + Mysql trên CentOS 5.x

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.
Reply With Quote
The Following User Says Thank You to Lovelinux For This Useful Post:
boy8x_sg (3 Weeks Ago)
  #2 (permalink)  
Old 19-11-2008
Hackingart Member
 
Join Date: Nov 2008
Posts: 2
Thanks: 0
Thanked 0 Times in 0 Posts
Default

Quote:
Originally Posted by Lovelinux View Post

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
Sao khi thực thi các lệnh trên tôi bị lỗi như thế này là sao vậy...giúp tôi nhé. cảm ơn..

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
Reply With Quote
  #3 (permalink)  
Old 20-11-2008
Lovelinux's Avatar
Super Moderator
 
Join Date: Jun 2008
Posts: 221
Thanks: 22
Thanked 46 Times in 24 Posts
Default

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.
Reply With Quote
  #4 (permalink)  
Old 3 Weeks Ago
Hackingart Member
 
Join Date: Nov 2008
Posts: 2
Thanks: 0
Thanked 0 Times in 0 Posts
Default

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
em tai file dict_mysql.o ma khong ra
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'
Reply With Quote
  #5 (permalink)  
Old 3 Weeks Ago
Admin's Avatar
Administrator
 
Join Date: Jun 2008
Location: USA
Posts: 406
Thanks: 22
Thanked 19 Times in 17 Posts
Send a message via Skype™ to Admin
Default

đâ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
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT +1. The time now is 10:20 AM.


© Diễn đàn HackingArt (HA) được xây dựng và phát triển bởi các thành viên.
+ Diễn đàn HackingArt là nơi trao đổi của các webmaster chuyên nghiệp.