实现 postfix实现extmail界面

环境:

主机1:172.16.115.169  (DNS服务器)

主机2:172.16.115.161(邮件服务器)


【主机1】

1. 搭建DNS服务器

  yum install -y bind


1.1 编辑主配置vim /etc/named.conf


# 监听本机所有ip,允许客户机查询


options {

       listen-on port 53 { any; };

       listen-on-v6 port 53 { ::1; };

       directory       "/var/named";

       dump-file       "/var/named/data/cache_dump.db";

       statistics-file "/var/named/data/named_stats.txt";

       memstatistics-file "/var/named/data/named_mem_stats.txt";

       allow-query     { any; };

       recursion yes;

       dnssec-enable yes;

       dnssec-validation yes;


1.2 编辑域配置文件vim /etc/named.rfc1912.zones


#正向解析和反向解析


zone "huangzp2.com" IN {

       type master;

       file "huangzp2.com";

       allow-update { none; };

};

zone "115.16.172.in-addr.arpa" IN {

       type master;

       file "huangzp2.empty";

       allow-update { none; };

};


1.3 编辑数据配置文件

cd /var/named/


1.3.1 正向解析数据记录

cp -p named.localhost huangzp2.com


或者


cp named.localhost huangzp2.com;chown named huangzp2.com

vim  huangzp2.com


# 添加正向解析记录


$TTL 1D

@       IN SOA huangzp2.com. rname.invalid. (

                                       0       ; serial

                                       1D      ; refresh

                                       1H      ; retry

                                       1W      ; expire

                                       3H )    ; minimum

       NS      dns.huangzp2.com.

       MX 3    mail.huangzp2.com.

dns     A       172.16.115.169

mail    A       172.16.115.161


1.3.2 反向解析数据记录

cp -p named.empty  huangzp2.empty

vim  huangzp2.empty


# 反解析记录

$TTL 3H

@       IN SOA  huangzp2.com. rname.invalid. (

                                       0       ; serial

                                       1D      ; refresh

                                       1H      ; retry

                                       1W      ; expire

                                       3H )    ; minimum

       NS      dns.huangzp2.com.

169     PTR     dns.huangzp2.com.

161     PTR     mail.huangzp2.com.


2. 启动named

service named restart


【主机2】

1. 测试邮件域解析

vim /etc/sysconfig/network-scripts/ifcfg-eth0

# 设置DNS服务器

DEVICE=eth0

HWADDR=00:0C:29:CB:DB:6C

TYPE=Ethernet

UUID=05904c7e-119a-4e58-8b65-26d344366982

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=static

IPADDR=172.16.115.161

NETMASK=255.255.0.0

GATEWAY=172.16.0.199

DNS1=172.16.115.169

DNS=202.96.134.133


# 测试正向解析

[root@huangzp2 docs]# nslookup mail.huangzp2.com

Server:         172.16.115.169

Address:        172.16.115.169#53

Name:   mail.huangzp2.com

Address: 172.16.115.161


# 测试反向解析

[root@huangzp2 docs]# nslookup 172.16.115.161

Server:         172.16.115.169

Address:        172.16.115.169#53

161.115.16.172.in-addr.arpa     name = mail.huangzp2.com.


2. 安装工具包

yum install -y mysql mysql-server mailx

service mysqld start


3. 安装extmail和extman

下载 extmail-1.2.tar.gz

extman-1.1.tar.gz

解压

tar -zxf  extmail-1.2.tar.gz -C /var/www/extsuite/

tar -zxf  extmman-1.1.tar.gz -C /var/www/extsuite/

更名

mv  extmail-1.2  extmail

mv  extman-1.1  extman


4. 导入数据库模板文件

进入目录:

/var/www/extsuite/extman/docs


4.1 拷贝配置文件:

cp mysql_virtual_alias_maps.cf /etc/postfix/

cp mysql_virtual_domains_maps.cf /etc/postfix/

cp mysql_virtual_mailbox_maps.cf /etc/postfix/

cp mysql_virtual_sender_maps.cf /etc/postfix/


4.2 修改数据库初始数据:

vim /var/www/extsuite/extman/docs/init.sql

# 替换域名

:1,$s/extmail.org/huangzp2.com/g

# 更改密码

INSERT INTO `manager` VALUES ('root@huangzp2.com','123456','admin','root','Super User','my question','my answer','0','2007-02-14 15:10:04','2010-11-08',1);


4.3 导入数据库模板

mysql < extmail.sql

mysql < init.sql


5. 创建虚拟用户映射的真实用户

useradd -u 600 vmail


6. 修改主postfix配置文件

vim /etc/postfix/main.cf

# 对所有地址提供服务

inet_interfaces = all

#inet_interfaces = $myhostname

#inet_interfaces = $myhostname, localhost

#inet_interfaces = localhost

# Enable IPv4, and IPv6 if supported

inet_protocols = all

# 邮件保存位置;收取邮件时使用的用户和组id ;添加指定配置文件

virtual_mailbox_base = /home/vmail

virtual_uid_maps = static:600

virtual_gid_maps = static:600

virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf

virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf


7. 启动postfix

service postfix start

netstat -anpt


8. 发邮件测试

 发送邮件:

echo "hi" |mail -s test support@huangzp2.com

查看生成的目录内容:

# support是postmaster的别名

ls /home/vmail/huangzp2.com/postmaster/Maildir/new


9. 安装和配置dovecot(MRA)

说明:提供检索作用

yum install -y dovecot dovecot-mysql


9.1 修改配置文件:

vim  /etc/dovecot/conf.d/10-mail.conf

# 设置收取邮件的位置

  mail_location = maildir:/home/vmail/%d/%n/Maildir

# 收邮件的虚拟用户id号从600开始排

  first_valid_uid = 600


9.2 修改配置文件:

vim /etc/dovecot/conf.d/10-auth.conf

# 收邮件认证方式数据库认证

!include auth-system.conf.ext

!include auth-sql.conf.ext


9.3 拷贝并编辑数据库验证模板配置文件

cp /usr/share/doc/dovecot-2.0.9/example-config/dovecot-sql.conf.ext  /etc/dovecot

编辑该配置文件:

vim /etc/dovecot/dovecot-sql.conf.ext

# 设置数据库类型是mysql

driver = mysql

# 数据库的连接和默认的加密方式

connect = host=localhost dbname=extmail user=extmail password=extmail

default_pass_scheme = MD5

# 查询密码以及用户的方法

password_query = \

 SELECT username, domain, password \

 FROM mailbox WHERE username = '%u' AND domain = '%d'

user_query = SELECT maildir, 600 AS uid, 600 AS gid FROM mailbox WHERE username = '%u'


9.4 启动dovecot

service dovecot start


10. 测试收取邮件

说明:表示dovecot能够通过mysql进行身份认证(postmaser用户的用户名和密码)只有验证成功,才能登陆进来,并查看邮件内容

[root@huangzp2 docs]# telnet mail.huangzp2.com 110

Trying 172.16.115.161...

Connected to mail.huangzp2.com.

Escape character is '^]'.

+OK Dovecot ready.

user postmaster@huangzp2.com

+OK

pass extmail

+OK Logged in.

list

+OK 2 messages:

1 533

2 530


11. 安装和配置web服务器

yum install -y httpd


11.1 编辑配置文件

vim /etc/httpd/conf/httpd.conf

# 开启虚拟主机

NameVirtualHost *:80

# 调用脚本,设置目录别名,调用脚本运行的用户和组

<VirtualHost *:80>

   DocumentRoot /var/www/extsuite/extmail/html

   ServerName mail.huangzp2.com

   scriptalias /extmail/cgi /var/www/extsuite/extmail/cgi

   alias /extmail /var/www/extsuite/extmail/html

   scriptalias /extman/cgi /var/www/extsuite/extman/cgi

   alias /extman /var/www/extsuite/extman/html

   suexecusergroup vmail vmail

</VirtualHost>


12. 设置extmail的cgi目录权限和编辑配置文件

# 权限 ;将模板配置文件变成主配置配置文件

cd /var/www/extsuite/extmail

chown -R vmail.vmail cgi/

cp webmail.cf.default webmail.cf

编辑配置文件

vim /var/www/extsuite/extmail/webmail.cf

#设置邮件的基本目录;加密类型;数据库的用户和密码

SYS_MAILDIR_BASE = /home/vmail

SYS_CRYPT_TYPE = plain

SYS_MYSQL_USER = extmail

SYS_MYSQL_PASS = extmail


13. 设置extman的cgi目录权限和编辑配置文件

cd /var/www/extsuite/extman

chown -R vmail.vmail cgi/

cp webman.cf.default webman.cf

加密方式;基本家目录;临时会话目录;校验码

SYS_CRYPT_TYPE = plain

SYS_MAILDIR_BASE = /home/vmail

SYS_SESS_DIR = /tmp/

SYS_CAPTCHA_ON = 0


14. 客户机测试解析

启动httpd

postfix邮件服务器搭建_主机


postfix邮件服务器搭建_服务器_02

15. 编译安装Unix-syslog模块

yum install perl-CGI  gcc*

Unix-Syslog-1.1.tar.gz

tar -zxf Unix-Syslog-1.1.tar.gz

cd  Unix-Syslog-1.1

# 模块使用perl语言写的,需要用perl安装

perl Makefile.PL

make test

make install


16. 客户端测试:

浏览器:http://mail.huangzp2.com/extmail/cgi/index.cgi

邮箱登录

默认用户名:postermaster

默认密码:密码extmail

邮箱管理登录

默认用户名:root@huangzp2.com

默认密码:123456

postfix邮件服务器搭建_主机_03


postfix邮件服务器搭建_主机_04