邮件服务器之Postfix--Webmail的创建

这篇我们接着上一篇文章来写:(基于Red Hat Enterprise Linux Server release 5.8

邮件服务器的整体配置:postfix+dovecot+extmail+mysql,基于DNS,支持虚拟用户认证,支持调用mysql数据库等。
 
安装前说明:邮件服务器依赖于DNS服务器,要先确认下你的服务器已经为邮件应用配置完成了哦。
 
关于DNS的配置:(这里不再解释了哦,前面有DNS的介绍,可以参考下)
 
  
  
  
  
  1. vim /etc/named.conf 
  2. options { 
  3.         directory "/var/named"; 
  4.         forward only; 
  5.         forwarders { 172.16.9.3; }; 
  6. }; 
  7.  
  8. zone "." IN { 
  9.         type hint; 
  10.         file "named.ca"; 
  11. }; 
  12.  
  13. zone "test.com" IN { 
  14.         type master; 
  15.         file "test.com.zone"; 
  16. }; 
  17.  
  18. zone "9.16.172.in-addr.arpa" IN { 
  19.         type master; 
  20.         file "172.16.9.zone"; 
  21. }; 
cd /var/named
创建正向区域文件:
  
  
  
  
  1. vim test.com.zone 
  2. $TTL 86400 
  3. $ORIGIN test.com. 
  4. @       IN      SOA     ns.test.com.    admin.test.com. ( 
  5.                         20121105 
  6.                         2H   
  7.                         10M  
  8.                         7D   
  9.                         1D ) 
  10.         IN      NS      ns   
  11.         IN      MX  10  mail 
  12. ns      IN      A       172.16.9.2 
  13. mail    IN      A       172.16.9.2 
  14. www     IN      CNAME   mail 
创建反向区域文件:
  
  
  
  
  1. vim 172.16.9.zone 
  2. $TTL 86400 
  3. @       IN      SOA     ns.test.com.    admin.test.com. ( 
  4.                         20121105 
  5.                         2H   
  6.                         10M  
  7.                         7D   
  8.                         1D ) 
  9.         IN      NS      ns.test.com. 
  10. 2       IN      PTR     ns.test.com. 
  11. 2       IN      PTR     mail.test.com. 
一定要保证MX记录可以解析出来^_^
注:如果出现以下问题
  
  
  
  
  1. [root@mail named]# dig -t MX test.com 
  2.  
  3. <<>> DiG 9.7.0-P2-RedHat-9.7.0-6.P2.el5_7.4 <<>> -t MX test.com 
  4. ;; global options: +cmd 
  5. ;; connection timed out; no servers could be reached 
修改配置文件:
vim /etc/resove.conf
nameserver 172.16.9.2 #ip指向自己的主机
 
接下来要安装邮件服务器postfix
一、安装前需要做的配置:
1、安装开发所需要的环境包组:
yum groupinstall -y "Development Libraries" "Development Tools" "Legacy Software Development" "X Software Development"
 
2、安装所需要的rpm包:
yum install -y tcl-devel libart_lgpl-devel libtool-ltdl-develexpect
注:mysql要编译安装,这里不再给出过程
 
3、关闭linux自带的sendmail,并关闭随系统自动开启的功能:
service sendmail stop
chkconfig sendmail off
 
4、启动依赖的服务
数据库:
service mysqld start
chkconfig mysqld on
mysqladmin -uroot password 'redhat' #为root用户设置密码
 
启动saslauthd服务,并将其加入自动启动队列
service saslauthd start
chkconfig saslauthd on
 
、完成安装前的所有配置,就可以编译安装postfix了
说明:因为RHEL5中的postfix rpm包不支持基于mysql的认证功能,所以才在这里编译安装postfix,我们还可以根据postfix的默认配置进行新建用户等,免去了很多麻烦。
 
1、新建postfix、postdrop用户、组,并分别指定UID、GID
  
  
  
  
  1. groupadd -g 2525 postfix 
  2. useradd -g postfix -u 2525 -s /sbin/nologin -M postfix 
  3. groupadd -g 2526 postdrop 
  4. useradd -g postdrop -u 2526 -s /sbin/nologin -M postdrop 
2、下载安装postfix,路径在ftp://172.16.0.1/pub/Sources/postfix 下
  
  
  
  
  1. tar xf postfix-2.9.4.tar.gz 
  2. cd postfix-2.9.4 
  3. make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl  -DUSE_TLS ' 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2  -lssl -lcrypto' 
选项解析: 前半段指定关联的rpm包所在头文件的路径,后半段指定库文件的路径以及所支持的加密认证机制等
  
  
  
  
  1. make  
  2. make install 
按照以下的提示输入相关的路径,可以在后面做出相应修改,不作修改就是默认[]中的路径
  
  
  
  
  1. install_root: [/]  
  2. tempdir: [/root/postfix-2.9.4] /tmp/postfix 
  3. config_directory: [/etc/postfix]  
  4. command_directory: [/usr/sbin] 
  5. daemon_directory: [/usr/libexec/postfix]  
  6. data_directory: [/var/lib/postfix] 
  7. html_directory: [no]  
  8. mail_owner: [postfix] 
  9. mailq_path: [/usr/bin/mailq] 
  10. manpage_directory: [/usr/local/man] 
  11. newaliases_path: [/usr/bin/newaliases] 
  12. queue_directory: [/var/spool/postfix]  
  13. readme_directory: [no]  
  14. sendmail_path: [/usr/sbin/sendmail]  
  15. setgid_group: [postdrop] 
根据警告信息的提示,可以生成二进制文件
newaliases
或者postaliases /etc/aliases
 
3、一些基本配置:
测试启动postfix并进行发信
vim /etc/postfix/main.cf
修改以下几项配置:
myhostname = mail.test.com #指定运行postfix的主机名,默认是本地机器名
myorigin = test.com #指定发件人所在的域名
mydomain = test.com #指定你自己的域名
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain #指定postfix系统收件人的域名,即要接收哪些域内的邮件
mynetworks = 172.16.0.0/16, 127.0.0.0/8 #指定你所在网络的网络地址,postfix系统根据其值来区别用户是远程的还是本地的,如果是本地网络用户则允许其访问;
 
注:
1)、在postfix的配置文件中,参数行和注释行是不能处在同一行中的;
2)、任何一个参数的值都不需要加引号,否则,引号将会被当作参数值的一部分来使用;
3)、每修改参数及其值后执行 postfix reload 即可令其生效;但若修改了inet_interfaces,则需重新启动postfix;
4)、如果一个参数的值有多个,可以将它们放在不同的行中,只需要在其后的每个行前多置一个空格即可;postfix会把第一个字符为空格或tab的文本行视为上一行的延续
 
可以启动服务了:
postfix start即可
 
还可以为postfix提供服务脚本:(做参考)
  
  
  
  
  1. vim /etc/rc.d/init.d/postfix 
  2. #!/bin/bash 
  3. # postfix      Postfix Mail Transfer Agent 
  4. # chkconfig: 2345 80 30 
  5. # description: Postfix is a Mail Transport Agent, which is the program \ 
  6. #              that moves mail from one machine to another. 
  7. # processname: master 
  8. # pidfile: /var/spool/postfix/pid/master.pid 
  9. # config: /etc/postfix/main.cf 
  10. # config: /etc/postfix/master.cf 
  11.  
  12. # Source function library. 
  13. . /etc/rc.d/init.d/functions 
  14.  
  15. # Source networking configuration. 
  16. . /etc/sysconfig/network 
  17.  
  18. # Check that networking is up. 
  19. [ $NETWORKING = "no" ] && exit 3 
  20.  
  21. [ -x /usr/sbin/postfix ] || exit 4 
  22. [ -d /etc/postfix ] || exit 5 
  23. [ -d /var/spool/postfix ] || exit 6 
  24.  
  25. RETVAL=0 
  26. prog="postfix" 
  27.  
  28. start() { 
  29.     # Start daemons. 
  30.     echo -n $"Starting postfix: " 
  31.         /usr/bin/newaliases >/dev/null 2>&1 
  32.     /usr/sbin/postfix start 2>/dev/null 1>&2 && success || failure $"$prog start" 
  33.     RETVAL=$? 
  34.     [ $RETVAL -eq 0 ] && touch /var/lock/subsys/postfix 
  35.         echo 
  36.     return $RETVAL 
  37.  
  38. stop() { 
  39.   # Stop daemons. 
  40.     echo -n $"Shutting down postfix: " 
  41.     /usr/sbin/postfix stop 2>/dev/null 1>&2 && success || failure $"$prog stop" 
  42.     RETVAL=$? 
  43.     [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/postfix 
  44.     echo 
  45.     return $RETVAL 
  46.  
  47. reload() { 
  48.     echo -n $"Reloading postfix: " 
  49.     /usr/sbin/postfix reload 2>/dev/null 1>&2 && success || failure $"$prog reload" 
  50.     RETVAL=$? 
  51.     echo 
  52.     return $RETVAL 
  53.  
  54. abort() { 
  55.     /usr/sbin/postfix abort 2>/dev/null 1>&2 && success || failure $"$prog abort" 
  56.     return $? 
  57.  
  58. flush() { 
  59.     /usr/sbin/postfix flush 2>/dev/null 1>&2 && success || failure $"$prog flush" 
  60.     return $? 
  61.  
  62. check() { 
  63.     /usr/sbin/postfix check 2>/dev/null 1>&2 && success || failure $"$prog check" 
  64.     return $? 
  65.  
  66. restart() { 
  67.     stop 
  68.     start 
  69.  
  70. # See how we were called. 
  71. case "$1" in 
  72.   start) 
  73.     start 
  74.     ;; 
  75.   stop) 
  76.     stop 
  77.     ;; 
  78.   restart) 
  79.     stop 
  80.     start 
  81.     ;; 
  82.   reload) 
  83.     reload 
  84.     ;; 
  85.   abort) 
  86.     abort 
  87.     ;; 
  88.   flush) 
  89.     flush 
  90.     ;; 
  91.   check) 
  92.     check 
  93.     ;; 
  94.   status) 
  95.     status master 
  96.     ;; 
  97.   condrestart) 
  98.     [ -f /var/lock/subsys/postfix ] && restart || : 
  99.     ;; 
  100.   *) 
  101.     echo $"Usage: $0 {start|stop|restart|reload|abort|flush|check|status|condrestart}" 
  102.     exit 1 
  103. esac 
  104.  
  105. exit $? 
  106.  
  107. # END 
为该脚本赋予执行权限:
  
  
  
  
  1. chmod +x /etc/rc.d/init.d/postfix 
将postfix服务添加至服务列表,并设置开机自动启动:
chkconfig --add postfix
chkconfig postfix on
 
重启服务:
service postfix restart
 
接下来就可以发邮件了
例如:发给自己主机上的hadoop用户

切换到hadoop用户,就会有一封来自root的邮件了

我们还可以实现跨域收发邮件,再开启一台主机,地址为172.16.9.3,主机名mail.a.org这个域内按照以上步骤配置DNS,安装上postfix修改配置文件中相应的配置,并启动postfix(这里步骤不再给出)
 
两个域间进行通信:
test.com的hadoop用户给a.org的eucalyptus用户通信

、邮件配置的实现
1、邮件别名的实现:
vim /etc/aliases
在最后加入两行
  
  
  
  
  1. user1:      hadoop 
  2. user2:      [email protected] 
说明:将发到user1的邮件转发给hadoop
      将发给user2的邮件转发给a.org域内的eucalyptus
  
  
  
  
  1. newaliases 
在test.com 中给user2发邮件
查看日志:发给user2的邮件会自动转发给eucalyptus

在a.org域中切换用户,就可以看到root用户发来的邮件了。
2、实现基于客户端的访问控制
例如:在a.org 域内阻止obama用户发邮件
(1)首先建立/etc/postfix/denyuser文件在里面定义一行:
  
  
  
  
  1. obama@          REJECT 
(2)将此文件转换为hash格式
  
  
  
  
  1. postmap /etc/postfix/denyuser 
(3)配置postfix使用此文件对客户端进行检查
编辑/etc/postfix/main.cf文件,添加如下2行:
  
  
  
  
  1. smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/denyuser  
  2. smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination 
(4)重新启动postfix,以obama用户的身份进行发邮件就会被拒绝了。(这里效果不再演示)

扩展:
我们还可以基于windows来收发邮件:
打开windows配置Outlook Express

以上几步根据提示操作就可以了。

点击发送,在a.org主机上就可以收到来自hadoop的邮件了。
注:在安装dovecot之前,在Outlook Express 上是不能收邮件的。 
 
下面来安装下dovecot,让OE可以接收邮件。
yum -y install dovecot
 
编辑主配置文件/etc/dovecot.conf
启动pop3和imap协议
  
  
  
  
  1. protocols = imap pop3  
启动dovecot服务
  
  
  
  
  1. service dovecot start 
给用户hadoop发送邮件,OE就可以接收邮件了

四、为postfix开启基于cyrus-sasl的认证功能
首先确保你的cyrus有关的rpm包已经安装
vim /etc/sysconfig/saslauthd 
  
  
  
  
  1. 修改MECH=pam为 MECH=shadow 
启动服务:
  
  
  
  
  1. service saslauthd start 
测试验证:(这一步要确保你的selinux处于关闭状态)
  
  
  
  
  1. [root@mail ~]# testsaslauthd -u hadoop -p redhat 
  2. 0: OK "Success." 
配置postfix使用认证:
  
  
  
  
  1. vim /usr/lib/sasl2/smtpd.conf 
  2. pwcheck_method: saslauthd 
  3. mech_list: PLAIN LOGIN 
vim /etc/postfix/main.cf
在最后添加以下内容
  
  
  
  
  1. ############################CYRUS-SASL############################ 
  2. broken_sasl_auth_clients = yes 
  3. smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_invalid_hostname,reject_non_fqdn_hostname,reject_unknown_sender_domain,reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_unknown_recipient_domain,reject_unauth_pipelining,reject_unauth_destination 
  4. smtpd_sasl_auth_enable = yes 
  5. smtpd_sasl_local_domain = $myhostname 
  6. smtpd_sasl_security_options = noanonymous 
说明:
broken_sasl_auth_clients = yes: #开启基于基于sasl认证客户端
smtpd_recipient_restrictions: #根据收件人地址进行过滤控制
permit_mynetworks: #如果主机是mynetworks中定义的则允许
permit_sasl_authenticated: #允许通过sasl认证的主机
reject_invalid_hostname: #如果SMTP helo/ehlo命令中的主机名语法无效则拒绝
reject_non_fqdn_hostname: #如果主机地址不是正规的FQDN格式则拒绝
reject_unknown_sender_domain: #如果DNS无法解析发件人则拒绝
reject_unknown_recipient_domain: #如果DNS无法解析收件人则拒绝
reject_non_fqdn_sender: #如果发件人的地址不是正规的FQDN格式则拒绝
reject_non_fqdn_recipient: #如果收件人的收件地址不是正规的FQDN格式则拒绝
reject_unauth_pipelining: #拒绝验证未通过的
reject_unauth_destination: #如果目标地址在relay_domains或my_destinations中则拒绝
smtpd_sasl_auth_enable = yes: #开启smtp基于sasl认证
smtpd_sasl_local_domain = $myhostname: #sasl认证时$myhostname为本地域
smtpd_sasl_security_options = noanonymous: #sasl认证不允许匿名用户
 
重启postfix
验证postfix是否支持认证功能

五、安装courier-authlib,下载地址在ftp://172.16.0.1/pub/Sources/postfix/
1、先卸载mysql客户端
  
  
  
  
  1. cp /etc/my.cnf /root    #保存主配置文件 
  2. rpm -e mysql --nodeps    
  3. cp /root/my.cnf /etc/my.cnf  
说明:我们刚刚安装了dovecot,编译安装courier-authlib时,mysql客户端会受到影响,需要先卸载(不想做这一步,dovecot编译安装应该也是可以的)
  
  
  
  
  1. tar jxvf courier-authlib-0.64.0.tar.bz2 
  2. cd courier-authlib-0.64.0 
  3. ./configure \ 
  4.     --prefix=/usr/local/courier-authlib \ 
  5.     --sysconfdir=/etc \ 
  6.     --without-authpam \ 
  7.     --without-authshadow \ 
  8.     --without-authvchkpw \ 
  9.     --without-authpgsql \ 
  10.     --with-authmysql \ 
  11.     --with-mysql-libs=/usr/lib/mysql \ 
  12.     --with-mysql-includes=/usr/include/mysql \ 
  13.     --with-redhat \ 
  14.     --with-authmysqlrc=/etc/authmysqlrc \ 
  15.     --with-authdaemonrc=/etc/authdaemonrc \ 
  16.     --with-mailuser=postfix \ 
  17.     --with-mailgroup=postfix \ 
  18.     --with-ltdl-lib=/usr/lib \ 
  19.     --with-ltdl-include=/usr/include 
选项说明:
这是根据个人环境修改的头文件和库文件的路径
  
  
  
  
  1. make && make install 
2、安装后的配置:
(1)再安装mysql
yum -y install mysql
  
  
  
  
  1. cp /etc/authdaemonrc.dist  /etc/authdaemonrc 
  2. cp /etc/authmysqlrc.dist  /etc/authmysqlrc 
(2)修改/etc/authdaemonrc 文件
  
  
  
  
  1. authmodulelist="authmysql" 
  2. authmodulelistorig="authmysql" 
  3. daemons=10 
(3)修改/etc/authmysqlrc 为以下内容,其中2525,2525 为postfix 用户的UID和GID。
  
  
  
  
  1. MYSQL_SERVER localhost 
  2. MYSQL_USERNAME  extmail         #这是为后文要用的数据库的所有者的用户名 
  3. MYSQL_PASSWORD extmail          #密码 
  4. MYSQL_SOCKET  /tmp/mysql.sock 
  5. MYSQL_PORT 3306                 #指定你的mysql监听的端口,这里使用默认的3306 
  6. MYSQL_DATABASE  extmail 
  7. MYSQL_USER_TABLE  mailbox 
  8. MYSQL_CRYPT_PWFIELD  password 
  9. MYSQL_UID_FIELD   2525 
  10. MYSQL_GID_FIELD   2525 
  11. MYSQL_LOGIN_FIELD  username 
  12. MYSQL_HOME_FIELD  concat('/var/mailbox/',homedir) 
  13. MYSQL_NAME_FIELD  name 
  14. MYSQL_MAILDIR_FIELD  concat('/var/mailbox/',maildir) 
提供SysV服务脚本
  
  
  
  
  1. cp courier-authlib.sysvinit /etc/rc.d/init.d/courier-authlib 
  2. chkconfig --add courier-authlib 
  3. chkconfig courier-authlib on 
  
  
  
  
  1. vim /etc/ld.so.conf.d/courier-authlib.conf 
  2. /usr/local/courier-authlib/lib/courier-authlib 
  3. ldconfig -v 
  4. service courier-authlib start   #启动服务 
整合postfix和courier-authlib
 
新建虚拟用户邮箱所在的目录,并将其权限赋予postfix用户:
  
  
  
  
  1. mkdir –pv /var/mailbox 
  2. chown –R postfix /var/mailbox 
接下来重新配置SMTP 认证
编辑 /usr/lib/sasl2/smtpd.conf 
  
  
  
  
  1. pwcheck_method: authdaemond 
  2. mech_list:PLAIN LOGIN 
  3. authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket 
重启saslauthd
 
六、让postfix支持虚拟域和虚拟用户
vim /etc/postfix/main.cf
  
  
  
  
  1. ########################Virtual Mailbox Settings########################virtual_mailbox_base = /var/mailbox 
  2. virtual_mailbox_base = /var/mailbox 
  3. virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf 
  4. virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf 
  5. virtual_alias_domains = 
  6. virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf 
  7. virtual_uid_maps = static:2525 
  8. virtual_gid_maps = static:2525 
  9. virtualvirtual_transport = virtual 
  10. ##########################QUOTA Settings######################## 
  11. message_size_limit = 14336000 
  12. virtual_mailbox_limit = 20971520 
重启服务:service postfix restart
 
、安装extmail-1.2.tar.gz和extman-1.1.tar.gz 下载路径在ftp://172.16.0.1/pub/Sources/postfix/
1、安装前配置:
要提供web页面,所以先安装httpd
yum -y install httpd
 
创建存放网页的目录:
mkdir /var/www/extsuite
 
3、安装
  
  
  
  
  1. tar xf extmail-1.2.tar.gz -C /var/www/extsuite/ 
  2. tar xf extman-1.1.tar.gz -C /var/www/extsuite/ 
  
  
  
  
  1. cd /var/www/extsuite/ 
  2. mv extmail-1.2  extmail 
  3. mv extman-1.1   extman   
  
  
  
  
  1. cd extman/docs 
  2. sed -i 's@TYPE=MyISAM@Engine=MyISAM@g' extmail.sql 
  3. sed -i 's@TYPE=MyISAM@Engine=MyISAM@g' init.sql 
说明:由于extman版本中引擎不支持TYPE,所以将文件中包含TYPE的选项改为Engine,你也可以直接在配置文件中修改。
 
修改之后将该脚本导入数据库(顺序不可颠倒)
  
  
  
  
  1. mysql < extmail.sql 
  2. mysql < init.sql 
4、授予extmail访问extmail数据库的权限
  
  
  
  
  1. mysql> grant all on extmail.* to [email protected] identified by 'extmail'; 
  2. mysql> grant all on extmail.* to extmail@localhost identified by 'extmail'; 
  3. mysql> flush privileges; 
5、配置extmail和extman
修改extmail主配置文件:
  
  
  
  
  1. cp /var/www/extsuite/extmail/webmail.cf.default  /var/www/extsuite/extmail/webmail.cf 
  2. vim /var/www/extsuite/extmail/webmail.cf 
  
  
  
  
  1. SYS_USER_LANG = zh_CN               #语言选项 
  2. SYS_MAILDIR_BASE = /var/mailbox     #用户邮件的存放目录 
  3. SYS_MYSQL_USER = extmail            #连接数据库服务器所使用用户名 
  4. SYS_MYSQL_PASS = extmail            #密码 
  5. SYS_MYSQL_SOCKET = /tmp/mysql.sock      #mysql.sock的路径 
  6. SYS_AUTHLIB_SOCKET = /usr/local/courier-authlib/var/spool/authdaemon/socket     #指明authdaemo socket文件的位置 
修改extman的配置文件:
  
  
  
  
  1. cp /var/www/extsuite/extman/webman.cf.default  /var/www/extsuite/extman/webman.cf 
  2. vi /var/www/extsuite/extman/webman.cf  
  
  
  
  
  1. SYS_MAILDIR_BASE = /var/mailbox     #用户邮件的存放目录 
  2. SYS_DEFAULT_UID = 2525 
  3. SYS_DEFAULT_GID = 2525              #ID号需更改为前面创建的postfix用户和postfix组的id号 
  4. SYS_MYSQL_USER = extmail 
  5. SYS_MYSQL_PASS = extmail 
  6. SYS_MYSQL_SOCKET = /tmp/mysql.sock 
  7. SYS_CAPTCHA_ON = 0                  #关闭校验功能 
创建其运行时所需的临时目录,并修改其相应的权限:
  
  
  
  
  1. mkdir  -pv  /tmp/extman 
  2. chown postfix.postfix  /tmp/extman  
而后修改cgi目录的属主:
  
  
  
  
  1. chown -R postfix.postfix /var/www/extsuite/extman/cgi/  
拷贝docs中的文件复制到/etc/postfix下
  
  
  
  
  1. cd /var/www/extsuite/extman/docs/ 
  2. mv mysql_virtual_* /etc/postfix/ 
重启服务
service postfix restart
 
 
、配置web服务:
  
  
  
  
  1. cd /etc/httpd/conf 
  2. vim httpd.conf 
  3. User postfix 
  4. Group postfix   #修改所属用户和组  
取消中心主机,开启虚拟主机,并添加如下内容:
  
  
  
  
  1. <VirtualHost *:80> 
  2. ServerName mail.test.com 
  3. DocumentRoot /var/www/extsuite/extmail/html/ 
  4. ScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi 
  5. Alias /extmail /var/www/extsuite/extmail/html 
  6. ScriptAlias /extman/cgi /var/www/extsuite/extman/cgi 
  7. Alias /extman /var/www/extsuite/extman/html 
  8. </VirtualHost> 
启动httpd服务:
service httpd start
 
访问mail.test.com(或许会访问到互联网上),在此我用ip进行访问。

出现错误,依赖关系没有解决
由于extmail将会用到perl的Unix::syslogd功能,下载Unix-Syslog进行安装,下载路径在ftp://172.16.0.1/pub/Sources/postfix,你也可以去http://search.cpan.org搜索下载原码包进行安装。
  
  
  
  
  1. tar zxvf Unix-Syslog-1.1.tar.gz  
  2. cd Unix-Syslog-1.1 
  3. perl Makefile.PL 
  4. make 
  5. make install 
重启服务:
service httpd restart
刷新页面,就会出现如下访问页面了。

至此,webmail已经安装完毕了,选择管理即可登入extman进行后台管理了。

默认管理帐号为:[email protected]  密码为:extmail*123*

进入以下页面,就可以进行一系列的配置了

注:还有重要的一项:
启用虚拟域以后,需要取消中心域,即注释掉/etc/postfix/main.cf中的选项myhostname, mydestination, mydomain, myorigin几个指令;当然,也可以把mydestionation的值改为自己需要的。
之后配置虚拟域和虚拟用户,就可以利用虚拟用户来进行发邮件了。

在另外一个域内,切换用户到eucalyptus就可以看到基于base64编码的邮件了。。
整个webmail的配置过程了!!
 
补充:
如果想让OE基于mysql的认证,还可以对dovecot进行配置:
修改dovecot的配置wenjain
  
  
  
  
  1. vi /etc/dovecot.conf 
  2. mail_location = maildir:/var/mailbox/%d/%n/Maildir 
  3. …… 
  4. auth default { 
  5.     mechanisms = plain 
  6.     passdb sql { 
  7.         args = /etc/dovecot-mysql.conf 
  8.     } 
  9.     userdb sql { 
  10.         args = /etc/dovecot-mysql.conf 
  11.     } 
  12.     …… 
 修改和mysql相关的配置文件:
  
  
  
  
  1. vim /etc/dovecot-mysql.conf                  
  2. driver = mysql 
  3. connect = host=/tmp/mysql.sock 
  4. dbname=extmail 
  5. user=extmail 
  6. password=extmail 
  7. default_pass_scheme = CRYPT 
  8. password_query = SELECT username AS user,password AS password FROM mailbox WHERE username = '%u'                             
  9. user_query = SELECT maildir, uidnumber AS uid, gidnumber AS gid FROM mailbox WHERE username = '%u' 
 之后在windows的OE上就可以实现基于用户认证的收发邮件了。
 
 还有图形日志功能暂时搁置了,之后会补充上的。^_^
 
最后在webmail发送过程中遇到的未知的问题,给大家在这里贴出来,希望你有好的解决方法!!O(∩_∩)O谢谢
未知错误:
[root@mail docs]# !tail
tail /var/log/maillog
 
Nov  7 22:52:04 mail postfix/smtpd[18181]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
Nov  7 22:52:04 mail postfix/smtpd[18181]: connect from localhost.localdomain[127.0.0.1]
Nov  7 22:52:04 mail postfix/trivial-rewrite[18183]: warning: connect to mysql server localhost: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Nov  7 22:52:04 mail postfix/trivial-rewrite[18183]: warning: mysql:/etc/postfix/mysql_virtual_domains_maps.cf: table lookup problem
Nov  7 22:52:04 mail postfix/trivial-rewrite[18183]: warning: virtual_mailbox_domains lookup failure
Nov  7 22:52:04 mail postfix/smtpd[18181]: NOQUEUE: reject: RCPT from localhost.localdomain[127.0.0.1]: 451 4.3.0 <[email protected]>: Temporary lookup failure; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<localhost.localdomain>
Nov  7 22:52:04 mail postfix/smtpd[18181]: lost connection after RCPT from localhost.localdomain[127.0.0.1]
Nov  7 22:52:04 mail postfix/smtpd[18181]: disconnect from localhost.localdomain[127.0.0.1]
 
 
初级解决办法,将/tmp/mysql.sock路径全部换成了/var/lib/mysql/mysql.sock
 
 
 
 
 
 

 

你可能感兴趣的:(邮件服务器之Postfix--Webmail的创建)