强大的邮件系统和简单的后台管理
环境: 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配置
发送一个邮件给外部邮箱同时抄送内部邮箱(就自己了呀,这样同时可以测试内部收信)
自己邮箱也收到了,测试内部成功。
外部邮箱收到,测试成功.(域名没在INTERNET上注册,所以收不到外部发来的邮件,等我中了500万去注册一个,哈哈)
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 填写安装密码。
复制产生出来的安装密码写入到主配置文件/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