postfix+mysql+dovecot+extmail
slinux 和iptables都关掉!!!!!!

 实验一:准备环境:slinux 和iptables都关掉
    (1)yum install mysql mysql-server httpd telnet  dovecot-mysql  -y       
    (2)mkdir /var/www/extsuite
        cd /var/www/extsuite     
        lftp 192.168.0.254
         cd /pub/docs/extmail
        get  extmail-1.2.tar.gz extman-1.1.tar.gz
        tar zxf extmail-1.2.tar.gz 
        tar zxf extman-1.1.tar.gz 
        cd /var/www/extsuite/
        mv extmail-1.2  extmail
        mv extman-1.1   extman

        cd extmail
        ls
        cp webmail.cf.default webmail.cf
        cd extman
        ls
        cp webmail.cf.default webmail.cf
    (3)cd ../extman/docs
        mysql < extmial.sql
        vi init.sql

        INSERT INTO `mailbox` VALUES         ('postmaster@extmail.org','postmaster','westos','','PostMaster','
LOCK TABLES `manager` WRITE;
INSERT INTO `manager` VALUES ('root@extmail.org','westos','admin','root',
 

mysql < init.sql(将数据库中的一些框架和表加进数据库中。。。。?)
(4)    cp mysql_virtual_alias_maps  /etc/postfix/ mysql-alias.cf
cp mysql_virtual_domains_maps  /etc/postfix/ mysql-domains.cf
cp mysql_virtual_mailboxs_maps  /etc/postfix/ mysql-mailboxs.cf

 
    cd /etc/postfix/
     vi mysql-alias.cf
 

 
  
  1. user = extmail 
  2. password = extmail 
  3. hosts = localhost 
  4. dbname = extmail 
  5. table = alias 
  6. select_field = goto 
  7. where_field = address 
  8. additional_conditions = AND active = '1' 
  9.   


     vi mysql-domains.cf 
   

 
  
  1. user = extmail 
  2. password = extmail
  3. hosts = localhost 
  4. dbname = extmail 
  5. table = domain 
  6. select_field = domain 
  7. where_field = domain
  8. additional_conditions = AND active = '1'  


     vi    mysql-mailboxs.cf 
   

 
  
  1. user = extmail 
  2. password = extmail 
  3. hosts = localhost 
  4. dbname = extmail 
  5. table = mailbox 
  6. select_field = maildir 
  7. where_field = username 
  8. additional_conditions = AND active = '1'  


     
    编辑完之后要检查文件编写的正确与否:
  postmap -q "postmaster@extmail.org" mysql:/etc/postfix/mysql-mailboxs.cf 
    extmail.org/postmaster/Maildir/
    postmap -q "support@extmail.org" mysql:/etc/postfix/mysql-alias.cf 
    postmaster@extmail.org
    postmap -q "extmail.org" mysql:/etc/postfix/mysql-domains.cf  
    extmail.org

 
    postfix reload
    /etc/init.d/postfix restart

    收信
  
  (5)下面是关于dovecot的一些配置:
        cd /etc/dovecot/conf.d/
        vi 10-mail.conf
        mail_location = maildir:/home/vmail/%d/%n/Maildir
        first_valid_uid = 600
        vi 10-auth.conf
        !include auth-system.conf.ext
        !include auth-sql.conf.ext
 

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

        vi   /etc/dovecot/dovecot-sql.conf.ext 
connect = host=localhost dbname=extmail user=extmail password=extmail(会自动生成的用户名)
   default_pass_scheme=PLAIN
            password_query = \
          SELECT username, domain, password \
          FROM mailbox WHERE username = '%u'
         
       # where userid = '%u'
        user_query = SELECT maildir,600 AS uid, 600 AS gid FROM mailbox WHERE username = '%u'
           (7)
     postconf -e virtual_mailbox_base=/home/vmail
     postconf -e virtual_uid_maps=static:600
     postconf -e virtual_gid_maps=static:600
     postconf -e virtual_alias_maps=mysql:/etc/postfix/mysql-alias.cf
postconf -e virtual_mailbox_domains=mysql:/etc/postfix/mysql-domains.cf
postconf -e virtual_mailbox_maps=mysql:/etc/postfix/mysql-mailboxs.cf
    postconf -e inet_interface=all

    /etc/init.d/postfix restart
    测试完成:/etc/init.d/dovecot restart
        telnet localhost 110
        user postmaster@extmail.org
        pass westos
        list
        quit
        显示OK 代表是正确的。
 

倘若出现上述的情况,是错误的,有可能是你的配置文件有错误,你可以试着去检查文件/etc/dovecot/dovecot-sql.conf.ext 本人的错误是把:   user_query = SELECT maildir,600 AS uid, 600 AS gid FROM mailbox WHERE username = '%u'      后面的username写成:userid了啊。。。。   如果你找不到错误原因,你可以查看日志tail /var/log/maillog     正确的如下(不会自行终止哦!):



    实验二:web搭建收信模式
    步骤(1)环境:yum install perl-CGI -y
         (2)vi /etc/httpd/conf/httpd.conf 
     

 
  
  1. <VirtualHost *:80> 
  2.     DocumentRoot /var/www/html 
  3.     ServerName desktop85.example.com 
  4. </VirtualHost> 
  5. <VirtualHost *:80> 
  6.     DocumentRoot /var/www/extsuite/extmail/html 
  7.     ServerName mail.extmail.org 
  8.     ScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi 
  9.     Alias /extmail /var/www/extsuite/extmail/html 
  10.     ScriptAlias /extman/cgi /var/www/extsuite/extman/cgi 
  11.     Alias /extman /var/www/extsuite/extman/html 
  12.    SuexecUserGroup vmail vmail 
  13. </VirtualHost> 


     NameVirtualHost *:80
 <VirtualHost *:80>
        DocumentRoot /var/www/html
        ServerName desktop39.example.com     
</VirtualHost>
     
<VirtualHost *:80>
    ServerName mail.extmail.org
    DocumentRoot /var/www/extsuite/extmail/html/
  (这里的意思是设置你进入之后默认访问的网页)
    ScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi (别名/extmail/cgi代表的就是/var/www/extsuite/extmail/cgi)
    Alias /extmail /var/www/extsuite/extmail/html(以上两句的大致意思是网页产生实际上来自于脚本/var/www/extsuite/extmail/cgi,用别名/extmail/cgi就是告诉系统去执行 那里面的脚本CGI文件,然后你输入/extmail就是访问/var/www/extsuite/extmail/html,你输入extman就是访问/var/www/extsuite/extman/html,系统默认你输入mail.extmail.org就是去访问/var/www/extsuite/extmail/html/,所以说默认进入的是客户端)
    ScriptAlias /extman/cgi /var/www/extsuite/extman/cgi
    Alias /extman /var/www/extsuite/extman/html
    SuexecUserGroup vmail vmail
</VirtualHost>
    /etc/init.d/httpd restart
 
    cd /var/www/extsuite/
  chown vmail.vmail /var/www/extsuite/extmail/cgi/ /var/www/extsuite/extman/cgi/ -R
   
    vi  /var/www/extsuite/extmail/webmail.cf
    SYS_SESS_DIR = /tmp
    SYS_CRYPT_TYPE = plain
(设置密码为明文的,否则你登录不进去。)
 
    SYS_LOG_ON = 0//(该值为0意思是不启动日志,如果你 不关闭日志,那么你进入的时候会出现Unix::Syslog not found, please install it first! (in cleanup) Undefined subroutine &Ext::Logger::do_closelog called at /var/www/extsuite/extmail/libs/Ext/Logger.pm line 86. 报错,不能直接进去,只有把日志禁掉,才可以直接进去,)
    SYS_MAILDIR_BASE = /home/vmail//收到邮件的目录。来收邮件的
    SYS_MYSQL_USER = extmail//链接数据库的用户名 
    SYS_MYSQL_PASS = extmail //链接数据库的密码
    SYS_MYSQL_DB = extmail //使用的数据库的名字
    SYS_MYSQL_HOST = localhost //说明数据库在本机上。
    SYS_MYSQL_SOCKET= /var/lib/mysql/mysql.sock
    SYS_CAPTCHA_ON = 0(意思是你进入的时候不会弹出验证码要你输入)
 
   vim /var/www/extsuite/extman/ webman.cf(extman属于后台,默认的设置就可以的)
    SYS_MAILDIR_BASE = /home/vmail
    SYS_SESS_DIR = /tmp/
    SYS_CAPTCHA_ON
= 0(意思是你进入的时候不会弹出验证码要你输入)
    SYS_CRYPT_TYPE = plain
(意思是你以管理员身份进入的时候输入明文密码就可以进来)
    /etc/init.d/httpd restart
    /etc/init.d/dovecot restart
    /etc/init.d/mysqld restart

注意:extmail是属于前台,主要是指的是关于图形界面的一些操作,就像你等录邮箱的时候你在接收邮件的时候那就是前台,而extman是指的后台,主要指做的是管理员方面的工作,倘若你的帐号过期或者有什么问题,可以给你禁止。如果你在appache中输入:mail.extmail.org/extman就可以进去,然后选择ExtMan Login就可以以管理员身份进去,然后你输入root进去。密码当然是你的root密码了。然后你在里面可以创建新的域名,也可以在该域中添加用户,jack密码redhat。假如你添加的域名为linux.org,然后你在extmail客户端的时候可以以用户:jack  password:redhat。Domail:linux.org或者是你选择添加的其他的域名,进去之后你可以发送邮件接收邮件等信息。
    配置完成
    进行apache测试
假设以上设置是在虚拟机下设置的,那么你先在要用真机去测试在真机的vi /etc/hosts
    写进一条 192.168.0.139(IP地址)  mail.extmail.org
打开浏览器,然后 输入 mail.extmail.org
  如果出现下面:
   Unix::Syslog not found, please install it first! (in cleanup) Undefined subroutine &Ext::Logger::do_closelog called at /var/www/extsuite/extmail/libs/Ext/Logger.pm line 86.
  则说明是Unix-Syslog没装,或者你可以在webmail.cf中已经把SYS_LOG_ON = 0关了就不会出现那样的提示了。。。Unix-Syslog的安装下面,)
postmaster
    westos

   然后输入用户名进去
点击compose你就可以发送邮件,如发送为: "ExtMail Support" <support@extmail.org>,意思是发给本地的,你可以在Inbox中接收到你发送来的邮件信息。
你就会看到你创建的数据库信息。
compose 发信 to:support@extmail.org wxh@extmail.org
在你的sent里面可以看到已发送的邮件,在Inbox可以看到你收到的邮件信息
同样你可以在命令行下输入: mail 997365xxx@qq.com就可以发送到你发送的信息。
实验三:
     步骤(1)cd /var/www/extsuite/
        cd extmail
         vi webmail.cf
        SYS_LOG_FILE = /var/log/extmail.log
        SYS_LOG_TYPE = file
(syslog是你产生的日志于你系统产生的日志混在一起了,而file意思是产生独立的文件)
          保存退出。
        touch /var/log/extmail.log
        chmod 777 /var/log/extmail.log
(意思是让日志文件写进去)
        (2)    cd /var/www/extsuite
                lftp 192.168.0.254
        cd pub/docs/extmail
        get Unix-Syslog-1.1.tar.gz(你刚才在webmail.cf中已经把SYS_LOG_ON = 0关了。因为开启会报错,你现在安装之后可以收发日志不报错。)
        (软件也可以从网上下载。)
     tar zxf Unix-Syslog-1.1.tar.gz
               cd Unix-Syslog-1.1

        你可以查看README如何使用该源码。
                 在当前路径下执行 

              perl Makefile.PL
                make test
                make install

        注意在你执行上述三步的时候有可能会缺少某些包,例如,你看能会用到              yum    install make gcc perl-ExtUtils-MakeMaker perl-GD -y
    (3)安装完之后:
        测试:
        http://mail.extmail.org
        此时你登录你的账户
        postmaster     
        westos

        进入你可以管理员的身份添加用户http://mail.extmail.org/extman/cgi,新增加域名信息  如:Domain :linux.org
        Description: test
        Max users: 100
        Max Alias: 100
        Max Quota: 500
        Max Netdisk :500
        Enable signup service: Active

        比如你在linux.org域里增加一个用户jack,密码为jack1
        那么你推出之后,登录的时候就可以以此用户登录了。
    (4) yum install perl-rrdtool  -y(显示动态日志的时候系统绘图)
        cd /var/www/extsuite/extman
        cd addon/
        cp -r mailgraph_ext/       /usr/local/
        cd /usr/local/mailgraph_ext
        vi mailgraph_init
        BASEDIR=/usr/local/mailgraph_ext
        ./mailgraph-init start

        在上述操作的过程中可能会出现需要安装  yum install perl-File-Tail
        也可以在    服务器上下载 lftp 192.168.0.254
    cd /pub/docs/extmail
    get File-Tail-0.99.3.tar.gz
       tar zxf File-tail-0.99.3.tar.gz     
        cd File-tail-0.99.3

  在当前路径下执行
perl Makefile.PL
        make test
        make install

运行中可能回报错,此时也许缺少 perl-Time-HiRes  yum install perl-Time-HiRes -y
 当上述三步执行成功之后。
./mailgraph-init start 成功之后
测试:
    appache测试:
 http://mail.extmail.org/extman可以看到动态的日志。
在System下的Graph Log可以查看动态的日志。