强大的邮件系统和简单的后台管理

环境: CentOS 6.0
软件:PostFix Dovecot
描述:Postfix是收发信全球最快的邮件服务器,而且安全免费,无论是从成本还是稳定/安全考虑
      都是企业最好的选择。服务器运维技术一直都是朝着高效,稳定,安全,易管理的方向发展。
      本邮件服务器有各种安全机制和一条命令可完成管理员所有的任务。规范,易于操作,而且管
      理界面简洁,全中文,就是一个不懂linux和英文的IT管理员都能完成所有邮件后台工作。

环境配置

网卡配置
(LAN IP能出外网的哦)(如果有WAN IP,可以再配一个网卡,域名在WAN上有MX解析的话就能接收外部邮件)
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=08:00:27:2a:6c:9d
NM_CONTROLLED=yes
ONBOOT=yes
IPADDR=192.168.1.109
BOOTPROTO=none
NETMASK=255.255.255.0
TYPE=Ethernet
GATEWAY=192.168.1.1
IPV6INIT=no
USERCTL=no
DNS1=192.168.1.1


关闭Selinux
[root@mail ~]# vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled                                  #这里设成禁用disabled
# SELINUXTYPE= can take one of these two values:  
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted
#一定要关了它,要不然会出现Maildir权限问题。


搞个防火墙规则,有点粗口,还是叫建个防火墙规则吧。这样更安全,除了指定的端口开放,其它的端口都进不了服务器。
vi /usr/local/sbin/startmailf
#!/bin/bash
#create: 15-Nov-2014
#Creater: Davis Dai
service network restart                            #重启网络
service postfix restart                            #重启postfix
service dovecot restart                            #重启dovecot
service saslauthd restart                          #重启ASAL授权
iptables -F                                        #清空防火墙
iptables -I INPUT -j DROP                          #拒绝所有输入端口
iptables -I INPUT -p tcp --dport 110 -j ACCEPT     #允许邮件收信110端口,POP3的IP入口
iptables -I INPUT -p udp --dport 110 -j ACCEPT     #允许邮件收信110端口,POP3的带数据包入口
iptables -I INPUT -p tcp --dport 25 -j ACCEPT      #允许邮件发信25端口,IP入口
iptables -I INPUT -p udp --dport 25 -j ACCEPT      #允许邮件发信25端口,带数据包入口
iptables -I INPUT -p udp --dport 143 -j ACCEPT     #允许邮件收信143端口,IMAP的IP入口
iptables -I INPUT -p tcp --dport 143 -j ACCEPT     #允许邮件收信143端口,IMAP的带数据包入口
iptables -I INPUT -p udp --dport 22 -j ACCEPT      #开放PUTTY和WINSCP 22号端口,方便管理员进入
iptables -I INPUT -p tcp --dport 22 -j ACCEPT      #开放PUTTY和WINSCP 22号端口,方便管理员进入
iptables -I INPUT -p tcp --dport 53 -j ACCEPT      #开放DNS查询端口,这样能解析到邮件服务器
iptables -I INPUT -p udp --dport 53 -j ACCEPT      #开放DNS查询端口,这样能解析到邮件服务器
#当然你也可以再加456,1925,587等邮件SSL/TLS端口,80网页管理端口,根据你的邮件服务器而定。


建好了防火墙规则,现把它加为开机启动,让它自动化,省得开机后来要打那该死的命令。
vi /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
sh /usr/local/sbin/startmailf  #把你的防火墙规则加在这里启动

软件安装

在安装之前你可以先更新一下您的yum源:
下载软件仓库
[root@mail ~]# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
[root@mail ~]# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
备份原有源
[root@mail ~]# cd /etc/yum.repos.d/
[root@mail yum.repos.d]# mkdir backup
[root@mail yum.repos.d]# mv CentOS-* backup/
更新源
[root@mail ~]# cp CentOS6-Base-163.repo /etc/yum.repos.d/
[root@mail ~]# rpm -ivh rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
以上repo和rpm包的版本号要实时上网查询,现在不一定为个是最新版的了哦


用CentOS提供在线安装的功能。
Yum –y install postfix*
Yum –y install dovecot*
还要用到Pam.但这都是系统默认有的,如果没有,要安装
Yum -y install pam-devel

邮件服务器配置

邮件服务器是怎么工作的

花上几分钟了解它的工作流程,绝对对下面的学习有用,这就可能是传说中的洗脑吧。Postfix是干嘛的呀,大道理很难懂,也很难讲,通俗一点,打个比喻,它就是一个快递公司,客户要寄一件东西出去,首先客户会电话或其它方式联系快递公司,打好包(客户端(outlook,foxmail...)配置好与服务器的连结,也就是我们平常说的客户端邮件配置,客户端的必须要POSTFIX服务器提供的用户和密码,服务器地址等,也就是说客户寄快递要先找到快递公司的电话或联系方式,设置完客户端的后,我们就要写邮件了,可以理解为寄件者先准备和打包好包裹),客户一切都准备好后(邮寄地址,邮编.....),就转交给快递公司代理递送业务,快递公司收到后会给这个这个包裹一个运单号,供客户查询快递情况(就是说我们的POSTFIX服务器会给每一封邮件一个MESSAGE ID号,这个ID号在是不变的,一直到递送完成,对于管理员来说一定要知道怎么去找这个ID号,便于你追踪邮件的去向,)快递公司有的时候可能是因为业务员不够或双十一节日快递爆棚,处理不过来,所以来的包裹要先来后到顺序排队,(就是说POSTFIX服务器会排先来后到来处理你的邮件,我们可以用mailq来查询有哪些在排队未处理的),快递公司首先会对包裹进行检查,是否符合国家法律,如果是***,枪支,违禁品危险品等直接扣下,不给邮寄,(POSTFIX 会对邮件进行检查,是否带病毒,地址是否正确等等,POSTFIX 有spam过滤所有的邮件,如果不合格直接丢弃,并返回信息给客户端说明为什么),如果合格包裹快递公司会按地方进行分类,该装船的装船,该空运的空运,送行目的城市的代理点,让他们再去派送,本地的就叫业务员直接送过去(postfix也是一样,先分出哪些是本地域的,哪些是外域的,本地的址接放入目地邮箱,外域的送住目的域的邮件服务器,让它们去分发下去),同时快递公司也接收其它城市的快件,接到后同样一样的检查,有些直接拒收,有些地址不祥,退回,等等(postfix 收到从各个域发来的快件经检查该退回的退回,该投递到本地邮箱的投递到本地邮箱),整个工作流程大致就是这样,当然我们今天开的这个快递公司未经注册,别人查不到有这个快递公司,外地的快递是送不过来的,但我们的快递还是可以送到外地,因为我们能知道外地的注册过的快递公司在哪,可以送达,除非人家拒收我们这种无证公司的快件。(我们的域名没注册,在WAN上没有MX记录,WAN上邮件不知怎么发给我们,这也是WAN的规矩,如果每个外部IP都可以收邮件,那就天下大乱了,因为我们能上网,不管是动态的还是静态的,都
个有个WAN IP,有WAN IP我们就能找到WAN的域,就可以发给他们,但有很多邮件服务器处于安全考虑拒收没经注册的域邮件,同样我们也可以在我们的服务器上做这种设置)。


废话少说,马上开配。
  /etc/postfix/目录有两个主配置文件main.cf和master.cf,我们主要设置main.cf,master.cf基本保持默认就行。
其它文件都是些参数呀,表呀....,打个比方说,main.cf 是个人,其它的都是这个人的手机,衣服呀,手表呀,钱包呀。
postfix有100多个参数,但我们可以根据自己的要求去改少量的参数,其它保持默认就可。


我们用pam去调用连接系统用户为邮件用户验证saslauthd,当然也可以用LDAP,MYSQL等,或SYRUS的shadow.后面我们会讲到。
# Directory in which to place saslauthd's listening socket, pid file, and so
# on.  This directory must already exist.
SOCKETDIR=/var/run/saslauthd
# Mechanism to use when checking passwords.  Run "saslauthd -v" to get a list
# of which mechanism your installation was compiled with the ablity to use.
MECH=pam                                                                         #这行MECH设成pam
# Options sent to the saslauthd. If the MECH is other than "pam" uncomment the next line.
# DAEMONOPTS=--user saslauth
# Additional flags to pass to saslauthd on the command line.  See saslauthd(8)
# for the list of accepted flags.
FLAGS=


我们用的是dovecot给客户端验证收信,所以我们先确定pam下的dovecot授权如下。
Vi /etc/pam.d/dovecot   
#%PAM-1.0
auth       required     pam_nologin.so
auth       include      password-auth
account    include      password-auth
session    include      password-auth


下面我们来弄一下dovecot收信。没文化,又说粗口了,应该说来配置一下dovecot收信。


建立邮件存放目录邮件备份目录


mkdir /vbox                              #建立邮件MAILDIR目录
chmod 755 /vbox                          #给权限
mkdir /backup                            #删除用户的备份目录
chmod 755 /backup                        #备份目录权限
mkdir /etc/postfix/Mail_Group            #邮件组软链目录,以后做管理面版脚本要用


启动服务


service postfix start
service dovecot start
service saslauthd start


设置服务开机自动启动


chkconfig postfix on
chkconfig dovecot on
chkconfig saslauthd on

脚本编写

管理员控制面版


vi /usr/local/sbin/main
#!/bin/bash
#create: 15-Nov-2014
#Creater: Davis Dai
echo "1 新建邮件帐号"            #在屏幕上输出菜单 
echo "2 查看邮件帐号"
echo "3 删除邮件帐号"
echo "4 新建邮件组"
echo "5 删除邮件组"
echo "6 查看邮件组"
echo "7 添加用户到组"
echo "8 从组里删除用户"
echo "0 退出邮件管理"
order=""                          #设参数为你要先择的菜单
echo "请选择任务代码:"
read order
echo $order >/tmp/order.txt
if [ "$order" == "1" ];then         #设条件根据你的选择跳到相应的管理模块
    mailacounts;
elif [ "$order" == "2" ];then
    viewusers;
elif [ "$order" == "3" ];then
    dusers;
elif [ "$order" == "4" ];then
    groupacounts;
elif [ "$order" == "5" ];then
    dgroup;
elif [ "$order" == "6" ];then
  viewgroup;
elif [ "$order" == "7" ];then
    AMFG;
elif [ "$order" == "8" ];then
    RMFG;
elif [ "$order" == "0" ];then
   exit 0;
else                                           #如果你的选择不是以上菜单,提示错误并返回控制面版。
    echo "任务代码错误,请重新输入!"
    main
fi


新建邮件模块


vi /usr/local/sbin/mailacounts
home="/vbox/"                                           #没置目录参数
useraccount=""                                          #设置用户参数       
echo "请给新用户名字:"            
read useraccount
echo $useraccount > /tmp/user.txt                       #给用户参数赋值
userpass=""                                             #设置密码参数
echo "请输入用户密码:"
read userpass
echo $userpass > /tmp/pass.txt                          #给密码参数赋值
useradd -d $home/$useraccount $useraccount              #添加用户并指定邮件主目录
echo $userpass |passwd --stdin $useraccount             #设置邮箱密码
mkdir -p $home/$useraccount/Maildir/{cur,new,tmp}       #建邮件目录和文件
mkdir -p $home/$useraccount/Maildir/.Drafts/{cur,new,tmp}
mkdir -p $home/$useraccount/Maildir/.Sent/{cur,new,tmp}
mkdir -p $home/$useraccount/Maildir/.Trash/{cur,new,tmp}
chown -R $useraccount $home/$useraccount/*    #设置属主-R是做个递归,也就是说文件夹下所以有子文件夹和文件
chmod 700 -R $home/$useraccount/*                       #设置属主有完全权限,其它人没任何权限。
main                                                    #回到管理员控制面版


新建邮件组模块


vim /usr/local/sbin/groupacounts
#/bin/bash
#Create: 14-Nov-2014
#Creater: Davis Dai
ls /etc/postfix/Mail_Group/                          #显示现有组
home="/vbox/"                                        #没置目录参数      
groupaccount=""                                      #设置邮件组参数  
echo "请输入新邮件组名:"
read groupaccount
echo $groupaccount > /tmp/group.txt                  #给组邮箱参数赋值
grouppass=""                                         #设置密码参数
echo "请输入新邮件组密码:"
read grouppass
echo $grouppass > /tmp/pass.txt                      #给密码参数赋值
useradd -d $home/$groupaccount $groupaccount         #添加组邮箱并指定邮件主目录
echo $grouppass |passwd --stdin $groupaccount        #设置组邮箱密码
mkdir -p $home/$groupraccount/Maildir/{cur,new,tmp}  #建组邮件目录和文件
mkdir -p $home/$groupaccount/Maildir/.Drafts/{cur,new,tmp}
mkdir -p $home/$groupaccount/Maildir/.Sent/{cur,new,tmp}
mkdir -p $home/$groupaccount/Maildir/.Trash/{cur,new,tmp}
chown -R $groupaccount $home/$groupaccount/*    #设置属主权限-R是做个递归,也就是说文件夹下所以有子文件夹和文件
chmod 700 -R $home/$groupaccount/*                   #设置属主有完全权限,其它人没任何权限。
touch $home/$groupaccount/.forward                   #建组邮件名单表
chown root $home/$groupaccount/.forward              #设置权限给名单表
chmod 755 $home/$groupaccount/.forward 
ln -s $home/$groupaccount/.forward /etc/postfix/Mail_Group/$groupaccount #做一个软连结,便于查找
main                                                 #回到管理员控制面版


添加邮箱到指定邮箱组模块


vim /usr/local/sbin/AMFG
#!/bin/bash
#Create Date: 15-Nov-2014
#Creater: Davis Dai
ls /etc/postfix/Mail_Group
Groupname=""
echo "请输入你要加入的组全称:"
read Groupname
echo $Groupname >/tmp/Groupname.txt
cat -n /vbox/$Groupname/.forward
usermail=""
echo "请输入你要加组的用户邮件地址:"
read usermail
echo $usermail >/tmp/usermail.txt
echo $usermail >> /vbox/$Groupname/.forward
main


删除邮箱帐号模块


vim /usr/local/sbin/dusers
#!/bin/bash
#create: 15-Nov-2014
#Creater: Davis Dai
ls /vbox/
deluser=""
echo "请键入你要删除的用户:"
read deluser
echo $deluser > /tmp/deluser.txt
cp -R -u -i /vbox/$deluser /backup/
userdel $deluser
rm -rf /vbox/$deluser
main


删除邮箱组模块


vim /usr/local/sbin/dgroup
#!/bin/bash
#create: 15-Nov-2014
#Creater: Davis Dai
ls /etc/postfix/Mail_Group/
degroup=""
echo "请键入你要删除的邮件组:"
read degroup
echo $degroup > /tmp/degroup.txt
cp -R -u -i /vbox/$degroup /backup/
userdel $degroup
rm -rf /vbox/$degroup
main


查找邮箱用户模块


vim /usr/local/sbin/viewusers
#!/bin/bash
#create: 15-Nov-2014
#Creater: Davis Dai
ls /vbox/ >/tmp/userview.txt
cat -n /tmp/userview.txt
svuser=""
echo "请输入你要查找的用户名:"
read svuser
echo $svuser > /tmp/svuser.txt
if grep -q $svuser /tmp/userview.txt; then
    echo "用户$svuser已经存在!";
else
  echo "用户$svuser不存在!";
fi
grep -n $svuser /tmp/userview.txt
main


查找用户组模块


vim /usr/local/sbin/viewgroup
#!/bin/bash
#create: 15-Nov-2014
#Creater: Davis Dai
ls /etc/postfix/Mail_Group/ >/tmp/groupview.txt
cat -n /tmp/groupview.txt
svgroup=""
echo "请输入你要查找的邮件组:"
read svgroup
echo $svuser > /tmp/svgroup.txt
if grep -q $svgroup /tmp/groupview.txt; then
     echo "邮件组$svgroup已经存在!";
else
    echo "邮件组$group不存在!";
fi
grep -n $svgroup /tmp/groupview.txt
main


从邮箱组里删除用户模块


vi /usr/local/sbin/RMFG
#!/bin/bash
#create: 15-Nov-2014
#Creater: Davis Dai
ls /etc/postfix/Mail_Group >/tmp/groupview.txt
cat -n /tmp/groupview.txt
sgroup=""
echo "请键入你要删除的用户属组名称:"
read sgroup
echo $scgoup >/tmp/sgroup.txt
cat -n /vbox/$sgroup/.forward
rguser=""
echo "请键入你要删除的用户编号:"
read rguser
echo $rguser >/tmp/rguser.txt
sed -i ''$rguser'd' /vbox/$sgroup/.forward #按编号删除
#sed -i “/$rguser/d” /vbox/$sgroup/.forward #按地址删除
main

管理员手册

进入服务器,输入邮件管理命令main,管理所有的任务


[root@mail sbin]# main
1 新建邮件帐号
2 查看邮件帐号
3 删除邮件帐号
4 新建邮件组
5 删除邮件组
6 查看邮件组
7 添加用户到组
8 从组里删除用户
0 退出邮件管理
请选择任务代码


新建邮件帐号


[root@mail ~]# main
1 新建邮件帐号
2 查看邮件帐号
3 删除邮件帐号
4 新建邮件组
5 删除邮件组
6 查看邮件组
7 添加用户到组
8 从组里删除用户
0 退出邮件管理
请选择任务代码:
1
请给新用户名字:
john
请输入用户密码:
123456
Changing password for user john.
passwd: all authentication tokens updated successfully.

新建邮件组


[root@mail sbin]# main
1 新建邮件帐号
2 查看邮件帐号
3 删除邮件帐号
4 新建邮件组
5 删除邮件组
6 查看邮件组
7 添加用户到组
8 从组里删除用户
0 退出邮件管理
请选择任务代码:
4
admin  hr  it  price
请输入新邮件组名:
development
请输入新邮件组密码:
123456
Creating mailbox file: File exists
Changing password for user development.
passwd: all authentication tokens updated successfully.


添加用户到组


[root@mail sbin]# main
1 新建邮件帐号
2 查看邮件帐号
3 删除邮件帐号
4 新建邮件组
5 删除邮件组
6 查看邮件组
7 添加用户到组
8 从组里删除用户
0 退出邮件管理
请选择任务代码:
7
admin  development  hr  it  price
请选择你要加入的组:
development
请输入你要加组的用户邮件地址:
[email protected]


查看邮件帐号/备份邮件数据(备份到/backup/)/删除邮件目录


[root@mail sbin]# main
1 新建邮件帐号
2 查看邮件帐号
3 删除邮件帐号
4 新建邮件组
5 删除邮件组
6 查看邮件组
7 添加用户到组
8 从组里删除用户
0 退出邮件管理
请选择任务代码:
3
4  admin  Computer  davis  development  hr  john  Maildir  price  qq
请键入你要删除的用户:
qq


删除邮件组/备份邮件组数据(备份到/backup/)/删除邮件组目录


[root@mail sbin]# main
1 新建邮件帐号
2 查看邮件帐号
3 删除邮件帐号
4 新建邮件组
5 删除邮件组
6 查看邮件组
7 添加用户到组
8 从组里删除用户
0 退出邮件管理
请选择任务代码:
5
admin  development  hr  it  price
请键入你要删除的邮件组:
it
cp: overwrite `/backup/it/.forward'? y


查看邮件帐号是否存在


[root@mail sbin]# main
1 新建邮件帐号
2 查看邮件帐号
3 删除邮件帐号
4 新建邮件组
5 删除邮件组
6 查看邮件组
7 添加用户到组
8 从组里删除用户
0 退出邮件管理
请选择任务代码:
2
   1  4
   2  admin
   3  Computer
   4  davis
   5  development
   6  hr
   7  john
   8  price
请输入你要查找的用户名:
john
用户john已经存在!


查看邮件组是否存在


[root@mail sbin]# main
1 新建邮件帐号
2 查看邮件帐号
3 删除邮件帐号
4 新建邮件组
5 删除邮件组
6 查看邮件组
7 添加用户到组
8 从组里删除用户
0 退出邮件管理
请选择任务代码:
6
   1  admin
   2  development
   3  hr
   4  price
请输入你要查找的邮件组:
fjdajkldajf
邮件组不存在!


从邮件组里删除用户


[root@mail sbin]# main
1 新建邮件帐号
2 查看邮件帐号
3 删除邮件帐号
4 新建邮件组
5 删除邮件组
6 查看邮件组
7 添加用户到组
8 从组里删除用户
0 退出邮件管理
请选择任务代码:
8
   1  admin
   2  development
   3  hr
   4  price
请键入你要删除的用户属组名称:
admin
   1  [email protected]
   2  [email protected]
请键入你要删除的用户编号:
2

客户端测试

只测试收发信,其它组呀,安全呀的,懒得去写了,本人保证做过测试,全部通过!

微软OUTLOOK配置

强大的邮件系统和简单的后台管理_第1张图片

发送一个邮件给外部邮箱同时抄送内部邮箱(就自己了呀,这样同时可以测试内部收信)

强大的邮件系统和简单的后台管理_第2张图片

自己邮箱也收到了,测试内部成功。

强大的邮件系统和简单的后台管理_第3张图片

外部邮箱收到,测试成功.(域名没在INTERNET上注册,所以收不到外部发来的邮件,等我中了500万去注册一个,哈哈)

强大的邮件系统和简单的后台管理_第4张图片

PostfixAdmin网页管理界面

PostfixAdmin软件和依赖包的安装


依赖包的安装
yum install -y mysql-server php php-mysql php-imap php-mbstring


PostfixAdmin软件安装 点击这里进入源安装包下载网站下载最新的.tar.gz格式的文件。


下载后解压改名,放在你想放的位置,并设置权限。
 [root@mail ~]# tar -xzvf postfixadmin-2.92.tar.gz  #解压
 [root@mail ~]# mv postfixadmin-2.92 /postfixadmin  #改名放到指定位置
 [root@mail ~]# chmod 777 /postfixadmin/ -R


修改PostfixAdmin网页主配置文件
 vim /postfixadmin/config.inc.php
 $CONF['configured'] = true; 
 $CONF['postfix_admin_url'] = '/postfixadmin';
 $CONF['database_type'] = 'mysqli';
 $CONF['database_host'] = 'localhost';
 $CONF['database_user'] = 'vmail';
 $CONF['database_password'] = 'vmail';
 $CONF['database_name'] = 'vmail';
 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';
 $CONF['encrypt'] = 'dovecot:CRAM-MD5'; 
 $CONF['emailcheck_resolve_domain] = 'NO';
 $CONF['dovecotpw'] = "/usr/bin/doveadm pw";


新建PostfixAdmin数据库


touch /postfixadmin/DATABASE_MYSQL.TXT
mysql -uvmail -p vmail < /postfixadmin/DATABASE_MYSQL.TXT
如果显示ACCESS DENIY, mysql -u vmail -p vmail 
mysql> set password = password ('newpassword')


POSTFIX的虚拟用户MYSQL设置和sasl设置

建立邮件目录和管理用户


useradd -u 1000 -d /vmail -s /sbin/nologin vmail
mkdir /vmail
chmod 770 /vmail/
chown vmail:vmail /vmail/


vim /etc/postfix/main.cf  加入如下设置。


vim /etc/postfix/master.cf  最后行加入,flages 前一定要有两个空格哦
dovecot unix -  n  n  -  -  pipe
  flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -d ${recipient}


[root@mail ~]# vim /etc/postfix/mysql_virtual_domains_maps.cf
user = vmail
password = vmail
hosts = localhost
dbname =vmail
table = domain
select_field = domain
where_field = domain
additional_conditions = and backupmx = '0' and active = '1'


[root@mail ~]# vim /etc/postfix/mysql_virtual_alias_maps.cf
user = vmail
password = vmail
hosts = localhost
dbname = vmail
table = alias
select_field = goto
where_field = address
additonal_conditions = and active = '1'


[root@mail ~]# vim /etc/postfix/mysql_virtual_mailbox_maps.cf
user = vmail
password = vmail
hosts =localhost
dbname = vmail
table = mailbox
select_field = CONCAT(domain,'/',maildir)
where_field =username
additional_conditions = and active = '1'


vim /etc/postfix/mysql_virtual_mailbox_limit_maps.cf
user = vmail
password vmail
hosts = localhost
dbname= vmail
table = mailbox
select_field = quota
where_field = username
additional_conditions = and active ='1'


DOVECOT收信和SMTPD认证


[root@mail ~]# vim /etc/dovecot/dovecot.conf 修改如下选项
protocols = imap pop3 lmtp
listen = *
base_dir = /var/run/dovecot/
#first_valid_uid = 89
#last_valid_uid = 89
#maildir_copy_with_hardlinks = yes


[root@mail ~]# vim /etc/dovecot/conf.d/10-auth.conf  修改如下选项
disable_plaintext_auth = no
auth_mechanisms = plain login cram-md5
!include auth-sql.conf.ext


[root@mail ~]# vim /etc/dovecot/conf.d/10-master.conf   修改如下选项
unix_listener /var/spool/postfix/private/auth {
  mode = 0666
  user = vmail
  group = vmail
}


[root@mail ~]# vim /etc/dovecot/conf.d/10-mail.conf 修改如下选项
mail_location = maildir:/vmail/%u/Maildir


[root@mail ~]# vim /etc/dovecot/conf.d/15-lda.conf  修改如下选项
protocol lda {
  postmaster_address = [email protected]
  sendmail_path = /usr/lib/sendmail
  auth_socket_path = /var/run/dovecot/auth-master
}


[root@mail ~]# vim /etc/dovecot/conf.d/20-pop3.conf  修改如下选项
pop3_uidl_format = %08Xu%08Xv


[root@mail ~]# vim /etc/dovecot/conf.d/auth-sql.conf.ext  修改如下选项
passdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}


[root@mail ~]# vim /etc/dovecot/dovecot-sql.conf.ext
driver = mysql
connect = host=localhost dbname=vmail user=vmail password=vmail
default_pass_scheme = PLAIN-MD5
password_query = SELECT username as user, password, '/vmail/%d/%n' as userdb_home, 'maildir:/vmail/%d/%n/Maildir' as userdb_mail, 1000 as userdb_uid, 1000 as userdb_gid FROM mailbox WHERE username = '%u' AND active = '1'
user_query = SELECT '/vmail/%d/%n' as home, 'maildir:/vmail/%d/%n/Maildir' as mail, 1000 AS uid, 1000 AS gid, concat('dirsize:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1'


改文件权限
[root@mail ~]# chmod 600 /etc/dovecot/* -R
[root@mail ~]# chown vmail /etc/dovecot/* -R
[root@mail ~]# chomd 777 /var/run/dovecot/auth-master


打开PostfixAdmin管理界面 http://localhost/postfixadmin/setup.php 填写安装密码。 强大的邮件系统和简单的后台管理_第5张图片

复制产生出来的安装密码写入到主配置文件/postfixadmin/config.inc.php的$CONF['setup_password'] =''; 然后设置超级管理员和密码

现在你就可以成功的登陆PostfixAdmin管理你的邮件帐户了。

你登陆后就什么都会了

客户端测试全部通过,不再上图了。

RoundCube网页访问客户端


下载解压改名,放入网页引导路径

Apache添加php模块

添加PHP模块时间区域

vim /etc/php.ini 添加下面一行
   date.timezone = Asia/Shanghai


修改权限
chmod 777 /var/www/html/usermail/temp
chmod 777 /var/www/html/usermail/logs
chmod 777 /var/www/html/usermail/config -R
chmod 777 /var/lib/php/session -R


配置CONFIG文件与postfixadmin连接同一个数据库。


安装PHP-DOM
yum install php53-dom
yum -y install php-dom


网页配置
 1: http://域名或IP/usermail/installer 打开IE,点击NEXT(下一步).
 2: Create config,设置你的配置文件,显示/服务器名/网络/数据库连接(与postfixadmin相同数据)..等等。自己揣摸。
 3: TEST CONFIG
  出现如下NOT OK.数据库没有初始化
    Check DB config
    DSN (write):  OK
    DB Schema:  NOT OK(Database not initialized)
 点击 Initialize Database, 初始化数据,它会返回结果OK.
    Check DB config
    DSN (write):  OK
    DB Schema:  OK
    DB Write:  OK
    DB Time:  OK 
  输入POSTFIXADMIN建的邮件地址测试SMTP和IMAP.会返回结果OK.
  

完成了,http://域名或IP/usermail



博主个人网站 http://www.davis-wiki.com