強大的郵件系統和簡單的後臺管理

強大的郵件系統和簡單的後臺管理

環境: 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 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章