CentOS7下搭建postfix邮箱服务器并实现extmail的web访问

文章目录

[隐藏]

  • 1. 准备工作
  • 2. 安装postfix
  • 3. 安装dovecot
  • 4. 安装courier-authlib
  • 6. 安装extman
  • 7. 测试
  • 8. 启动nginx实现web访问

闲来无事想着尝试使用postfix搭建一个邮箱服务器,我是边搭建边写这个笔记,搭建过程中遇到坑也会一并记录,使用的系统版本如下:

[[email protected] ~]# cat /etc/redhat-release  CentOS Linux release 7.2.1511 (Core)  

本示例基于LNMP环境。

1. 准备工作

关闭selinux

[[email protected] ~]# setenforce 0  [[email protected] ~]# getenforce  Permissive  [[email protected] ~]#  

关闭firewalld防火墙,并清空iptables规则:

[[email protected] ~]# systemctl stop firewalld  [[email protected] ~]# iptables -F  [[email protected] ~]# iptables -X  [[email protected] ~]# iptables -nvL  Chain INPUT (policy ACCEPT 38 packets, 7291 bytes)   pkts bytes target     prot opt in     out     source               destination    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)   pkts bytes target     prot opt in     out     source               destination    Chain OUTPUT (policy ACCEPT 12 packets, 1208 bytes)   pkts bytes target     prot opt in     out     source               destination  [[email protected] ~]#  

由于CentOS7默认安装的是MariaDB,所以要添加MySQL的yum源,有些编译需要的devel包只有epel扩展源有,所以我们需要把epel源也一并添加。因为是通过wget命令从下载地址中下载,但是最小化安装的CentOS7不自带wget命令,还需要先安装这个命令:

yum install -y wget  wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm  rpm -ivh mysql-community-release-el7-5.noarch.rpm  wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm  rpm -ivh epel-release-latest-7.noarch.rpm  
2. 安装postfix

首先需要安装编译环境及其他所需要的包,免得一会编译过程中老报缺少包的错误,因为需要安装的包有点多,所以这个过程有点慢:

yum install nginx vim gcc gcc-c++ openssl openssl-devel db4-devel ntpdate mysql mysql-devel mysql-server bzip2 php-mysql cyrus-sasl-md5 perl-GD perl-DBD-MySQL perl-GD perl-CPAN perl-CGI perl-CGI-Session cyrus-sasl-lib cyrus-sasl-plain cyrus-sasl cyrus-sasl-devel libtool-ltdl-devel telnet mail libicu-devel  -y  

安装完以上所需的包后,开始编译安装postfix:

1、首先卸载系统自带的postfix,并删除postfix用户,重新指定uid、gid创建新用户postfix,postdrop,嫌一条条命令去执行有点麻烦就写成脚本文件去执行:

yum remove postfix -y  userdel postfix  groupdel postdrop  groupadd -g 2525 postfix  useradd -g postfix -u 2525 -s /sbin/nologin -M postfix  groupadd -g 2526 postdrop  useradd -g postdrop -u 2526 -s /sbin/nologin -M postdrop  

2、下载源码包并解压编译(如果下载地址失效就到官网去找下载连接):

cd /usr/local/src/  wget http://cdn.postfix.johnriley.me/mirrors/postfix-release/official/postfix-3.0.11.tar.gz  tar -zxvf postfix-3.0.11.tar.gz  cd postfix-3.0.11  make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl -DUSE_TLS ' 'AUXLIBS=-L/usr/lib64/mysql -lmysqlclient -lz -lrt -lm -L/usr/lib64/sasl2 -lsasl2   -lssl -lcrypto'  make && make install  echo $?  

在make install环节的时候会有个交互式的界面,可以自定义一些目录,我这里只更改了第二项临时文件目录,其他的都选择了默认目录:

Please specify the prefix for installed file names. Specify this ONLY  if you are building ready-to-install packages for distribution to OTHER  machines. See PACKAGE_README for instructions.  install_root: [/]    Please specify a directory for scratch files while installing Postfix. You  must have write permission in this directory.  tempdir: [/usr/local/src/postfix-3.0.11] /tmp/extmail     // 就只更改这一项为tmp目录,其他的全部默认    Please specify the final destination directory for installed Postfix  configuration files.  config_directory: [/etc/postfix]    Please specify the final destination directory for installed Postfix  administrative commands. This directory should be in the command search  path of adminstrative users.  command_directory: [/usr/sbin]    Please specify the final destination directory for installed Postfix  daemon programs. This directory should not be in the command search path  of any users.  daemon_directory: [/usr/libexec/postfix]    Please specify the final destination directory for Postfix-writable  data files such as caches or random numbers. This directory should not  be shared with non-Postfix software.  data_directory: [/var/lib/postfix]    Please specify the final destination directory for the Postfix HTML  files. Specify "no" if you do not want to install these files.  html_directory: [no]    Please specify the owner of the Postfix queue. Specify an account with  numerical user ID and group ID values that are not used by any other  accounts on the system.  mail_owner: [postfix]    Please specify the final destination pathname for the installed Postfix  mailq command. This is the Sendmail-compatible mail queue listing command.  mailq_path: [/usr/bin/mailq]    Please specify the final destination directory for the Postfix on-line  manual pages. You can no longer specify "no" here.  manpage_directory: [/usr/local/man]    Please specify the final destination pathname for the installed Postfix  newaliases command. This is the Sendmail-compatible command to build  alias databases for the Postfix local delivery agent.  newaliases_path: [/usr/bin/newaliases]    Please specify the final destination directory for Postfix queues.  queue_directory: [/var/spool/postfix]    Please specify the final destination directory for the Postfix README  files. Specify "no" if you do not want to install these files.  readme_directory: [no]    Please specify the final destination pathname for the installed Postfix  sendmail command. This is the Sendmail-compatible mail posting interface.  sendmail_path: [/usr/sbin/sendmail]    Please specify the group for mail submission and for queue management  commands. Specify a group name with a numerical group ID that is  not shared with other accounts, not even with the Postfix mail_owner  account. You can no longer specify "no" here.  setgid_group: [postdrop]    Please specify the final destination directory for Postfix shared-library  files.  shlib_directory: [no]  

3、更改目录的属主和属组:

chown -R postfix:postdrop /var/spool/postfix  chown -R postfix:postdrop /var/lib/postfix/  chown root /var/spool/postfix  chown -R root /var/spool/postfix/pid  

4、修改postfix的配置文件:

[[email protected] ~]# vim /etc/postfix/main.cf  myhostname = mail.everyoo.com        //设置主机名  mydomain = everyoo.com        //指定域名  myorigin = $mydomain        //指明发件人所在的域名  inet_interfaces =         //all指定postfix系统监听的网络接口  mydestination = $myhostname, localhost.$mydomain, localhost,$mydomain        //指定postfix接收邮件时收件人的域名 [使用虚拟域需要禁用]  mynetworks_style = host        //指定信任网段类型  mynetworks = 192.168.77.1/24, 127.0.0.0/8        //指定信任的客户端  relay_domains = $mydestination        //指定允许中转邮件的域名  alias_maps = hash:/etc/aliases        //设置邮件的别名  

5、然后需要在/etc/init.d/目录下提供一个脚本来管理postfix的启动与停止:

[roo[email protected] /var/www/extsuite/extman]# vim /etc/init.d/postfix  

把下面的内容放在/etc/init.d/postfix里面:

#!/bin/bash  #  # postfix      Postfix Mail Transfer Agent  #  # chkconfig: 2345 80 30  # description: Postfix is a Mail Transport Agent, which is the program   #              that moves mail from one machine to another.  # processname: master  # pidfile: /var/spool/postfix/pid/master.pid  # config: /etc/postfix/main.cf  # config: /etc/postfix/master.cf    # Source function library.  . /etc/rc.d/init.d/functions    # Source networking configuration.  . /etc/sysconfig/network    # Check that networking is up.  [ $NETWORKING = "no" ] && exit 3    [ -x /usr/sbin/postfix ] || exit 4  [ -d /etc/postfix ] || exit 5  [ -d /var/spool/postfix ] || exit 6    RETVAL=0  prog="postfix"    start() {       # Start daemons.       echo -n $"Starting postfix: "          /usr/bin/newaliases >/dev/null 2>&1       /usr/sbin/postfix start 2>/dev/null 1>&2 && success || failure $"$prog start"       RETVAL=$?       [ $RETVAL -eq 0 ] && touch /var/lock/subsys/postfix          echo       return $RETVAL  }    stop() {    # Stop daemons.       echo -n $"Shutting down postfix: "       /usr/sbin/postfix stop 2>/dev/null 1>&2 && success || failure $"$prog stop"       RETVAL=$?       [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/postfix       echo       return $RETVAL  }    reload() {       echo -n $"Reloading postfix: "       /usr/sbin/postfix reload 2>/dev/null 1>&2 && success || failure $"$prog reload"       RETVAL=$?       echo       return $RETVAL  }    abort() {       /usr/sbin/postfix abort 2>/dev/null 1>&2 && success || failure $"$prog abort"       return $?  }    flush() {       /usr/sbin/postfix flush 2>/dev/null 1>&2 && success || failure $"$prog flush"       return $?  }    check() {       /usr/sbin/postfix check 2>/dev/null 1>&2 && success || failure $"$prog check"       return $?  }    restart() {       stop       start  }    # See how we were called.  case "$1" in    start)       start       ;;    stop)       stop       ;;    restart)       stop       start       ;;    reload)       reload       ;;    abort)       abort       ;;    flush)       flush       ;;    check)       check       ;;    status)         status master       ;;    condrestart)       [ -f /var/lock/subsys/postfix ] && restart || :       ;;    *)       echo $"Usage: $0 {start|stop|restart|reload|abort|flush|check|status|condrestart}"       exit 1  esac    exit $?  

为脚本添加执行权限,并将服务添加到开机启动项中:

[[email protected] /var/www/extsuite/extman]# chmod +x /etc/init.d/postfix  [[email protected] /var/www/extsuite/extman]# chkconfig --add postfix  [[email protected] /var/www/extsuite/extman]# chkconfig postfix on  [[email protected] /var/www/extsuite/extman]# chown postfix.postfix -R /var/lib/postfix/  [[email protected] /var/www/extsuite/extman]# chown postfix.postfix /var/spool/ -R  
3. 安装dovecot

yum安装:

[[email protected] ~]# yum install -y dovecot dovecot-mysql  

配置dovecot:

[[email protected] ~]# cd /etc/dovecot/  [[email protected] dovecot]# vim dovecot.conf     //直接在配置文件最后添加即可  protocols = imap pop3  !include conf.d/*.conf  listen = *  base_dir = /var/run/dovecot/  [[email protected] dovecot]# cd conf.d/  [[email protected] conf.d]# vim 10-auth.conf  disable_plaintext_auth = no  [[email protected] conf.d]# vim 10-mail.conf  mail_location = maildir:~/Maildir  mail_location = maildir:/var/mailbox/%d/%n/Maildir  mail_privileged_group = mail  [[email protected] conf.d]# vim 10-ssl.conf  ssl = no  [[email protected] conf.d]# vim 10-logging.conf  log_path = /var/log/dovecot.log  info_log_path = /var/log/dovecot.info  log_timestamp = "%Y-%m-%d %H:%M:%S "  [[email protected] conf.d]# cp auth-sql.conf.ext auth-sql.conf  [[email protected] conf.d]# vim auth-sql.conf  passdb {      driver = sql        # Path for SQL configuration file, see example-config/dovecot-sql.conf.ext      args = /etc/dovecot/dovecot-sql.conf.ext  }    userdb {      driver = sql      args = /etc/dovecot/dovecot-sql.conf.ext  }  

编辑dovecot通过mysql认证的配置文件:

[[email protected] conf.d]# vim /etc/dovecot-mysql.conf  driver = mysql  connect = host=localhost dbname=extmail user=extmail password=extmail  default_pass_scheme = CRYPT  password_query = SELECT username AS user,password AS password FROM mailbox WHERE username = '%u'  user_query = SELECT maildir, uidnumber AS uid, gidnumber AS gid FROM mailbox WHERE username = '%u'  
4. 安装courier-authlib

下载解压并编译:

[[email protected] ~]# cd /usr/local/src/  [[email protected] /usr/local/src]#  wget https://sourceforge.net/projects/courier/files/authlib/0.66.2/courier-authlib-0.66.2.tar.bz2  [[email protected] /usr/local/src]# tar -jxvf courier-authlib-0.66.2.tar.bz2  [[email protected] /usr/local/src]# cd courier-authlib-0.66.2  [[email protected] /usr/local/src/courier-authlib-0.66.2]# ./configure --prefix=/usr/local/courier-authlib     --sysconfdir=/etc     --without-authpam     --without-authshadow     --without-authvchkpw     --without-authpgsql     --with-authmysql     --with-mysql-libs=/usr/lib64/mysql     --with-mysql-includes=/usr/include/mysql     --with-redhat     --with-authmysqlrc=/etc/authmysqlrc     --with-authdaemonrc=/etc/authdaemonrc     --with-mailuser=postfix  [[email protected] /usr/local/src/courier-authlib-0.66.2]# make && makeinstall  

编译过程中发生了一个错误:

configure: error: The Courier Unicode Library 1.2 appears not to be installed. You may need to install a separate development subpackage, in addition to the main package  

这是因为Courier Unicode Library没有安装,我们下载courier-unicode-1.2并编译安装:

[[email protected] ~]# wget https://sourceforge.net/projects/courier/files/courier-unicode/1.2/courier-unicode-1.2.tar.bz2  [[email protected] ~]# tar jxvf courier-unicode-1.2.tar.bz2  [[email protected] ~]# cd courier-unicode-1.2  [[email protected] courier-unicode-1.2]# ./configure  [roo[email protected] courier-unicode-1.2]# make && make install  

完成Courier Unicode Library的安装后,倒回去再次编译courier-authlib就没问题了

配置courier-authlib:

[[email protected]  courier-authlib-0.66.2]# chmod 755 /usr/local/courier-authlib/var/spool/authdaemon  [[email protected]  courier-authlib-0.66.2]# cp /etc/authdaemonrc.dist  /etc/authdaemonrc  [[email protected]  courier-authlib-0.66.2]# cp /etc/authmysqlrc.dist  /etc/authmysqlrc  [[email protected]  courier-authlib-0.66.2]# vim /etc/authdaemonrc      //配置文件里的验证方法比较多,我们这里只使用authmysql  authmodulelist="authmysql"  authmodulelistorig="authmysql"  [[email protected]  courier-authlib-0.66.2]# vim /etc/authmysqlrc     //直接添加到配置文件尾部,然后去上面将响应系统默认的注视掉,或者删除即可  MYSQL_SERVER            localhost  MYSQL_USERNAME          extmail  MYSQL_PASSWORD          extmail  MYSQL_SOCKET            /var/lib/mysql/mysql.sock  MYSQL_PORT               3306  MYSQL_DATABASE          extmail  MYSQL_USER_TABLE        mailbox  MYSQL_CRYPT_PWFIELD     password  DEFAULT_DOMAIN          test.com  MYSQL_UID_FIELD         '2525'  MYSQL_GID_FIELD         '2525'  MYSQL_LOGIN_FIELD       username  MYSQL_HOME_FIELD        concat('/var/mailbox/',homedir)  MYSQL_NAME_FIELD        name  MYSQL_MAILDIR_FIELD     concat('/var/mailbox/',maildir)  

courier-authlib添加服务启动脚本及其他:

[[email protected]  courier-authlib-0.66.2]# cp courier-authlib.sysvinit /etc/init.d/courier-authlib  [[email protected]  courier-authlib-0.66.2]# chmod +x /etc/init.d/courier-authlib  [[email protected]  courier-authlib-0.66.2]# chkconfig --add courier-authlib  [[email protected]  courier-authlib-0.66.2]# chkconfig courier-authlib on  [[email protected]  courier-authlib-0.66.2]# echo "/usr/local/courier-authlib/lib/courier-authlib" >> /etc/ld.so.conf.d/courier-authlib.conf  [[email protected]  courier-authlib-0.66.1]# ldconfig  [[email protected]  courier-authlib-0.66.1]# service courier-authlib start  Starting Courier authentication services: authdaemond  

smtp以及虚拟用户相关的设置:

[[email protected] ~]# vim /usr/lib64/sasl2/smtpd.conf    //文件不存在,要自己创建  pwcheck_method: authdaemond  log_level: 3  mech_list: PLAIN LOGIN  authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket  [[email protected] ~]# vim /etc/postfix/main.cf  ##postfix支持SMTP##  smtpd_sasl_auth_enable = yes  smtpd_sasl_local_domain = ''  smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination  broken_sasl_auth_clients=yes  smtpd_client_restrictions = permit_sasl_authenticated  smtpd_sasl_security_options = noanonymous  ##postfix支持虚拟用户##  virtual_mailbox_base = /var/mailbox  virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf   //这里的配置文件需在后面extman  里复制过来  virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf  virtual_alias_domains =  virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf  virtual_uid_maps = static:2525  virtual_gid_maps = static:2525  virtual_transport = virtual  

5. 安装extmail

下载extmail和extman:

[[email protected] ~]# cd /usr/local/src/  [[email protected] /usr/local/src]# wget http://7xivyw.com1.z0.glb.clouddn.com/extmail-1.2.tar.gz  [[email protected] /usr/local/src]# wget http://7xivyw.com1.z0.glb.clouddn.com/extman-1.1.tar.gz  

创建站点目录并解压、重命名extmail包:

[[email protected] /usr/local/src]# mkdir -p /var/www/extsuite  [[email protected] /usr/local/src]# tar -zxvf extmail-1.2.tar.gz -C /var/www/extsuite/  [[email protected] /usr/local/src]# mv /var/www/extsuite/extmail-1.2/ /var/www/extsuite/extmail  

更改extmail的配置文件:

[[email protected] ~]# cd /var/www/extsuite/extmail  [[email protected] extmail]# cp webmail.cf.default webmail.cf  [[email protected] extmail]# vim webmail.cf  SYS_SESS_DIR = /tmp/extmail  SYS_UPLOAD_TMPDIR = /tmp/extmail/upload  SYS_USER_LANG = zh_CN  SYS_MIN_PASS_LEN = 8  SYS_MAILDIR_BASE = /var/mailbox  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_MYSQL_TABLE = mailbox  SYS_MYSQL_ATTR_USERNAME = username  SYS_MYSQL_ATTR_DOMAIN = domain  SYS_MYSQL_ATTR_PASSWD = password  SYS_AUTHLIB_SOCKET = /usr/local/courier-authlib/var/spool/authdaemon/socket  

建立临时文件目录与session目录,并更改权限:

[[email protected] extmail]# mkdir -p /tmp/extmail/upload  [r[email protected] extmail]# chown -R postfix.postfix /tmp/extmail/  
6. 安装extman

回到extman的下载目录下,解压extman包:

[[email protected] ~]# cd /usr/local/src/  [[email protected] /usr/local/src]# tar -zxvf extman-1.1.tar.gz -C /var/www/extsuite/  [[email protected] /usr/local/src]# cd /var/www/extsuite/  [[email protected] /var/www/extsuite]# mv extman-1.1/ extman  

拷贝extman的配置文件:

[[email protected] /var/www/extsuite]# cd extman/  [[email protected] /var/www/extsuite/extman]# cp webman.cf.default webman.cf  

更改cgi目录的属主属组:

[[email protected] /var/www/extsuite/extman]# chown -R postfix.postfix /var/www/extsuite/extman/cgi/  [[email protected] /var/www/extsuite/extman]# chown -R postfix.postfix /var/www/extsuite/extmail/cgi/  

导入数据库:

由于数据库不能识别TYPE=MyISAM,所以这里直接导入会出错,需要先编辑extmail.sql数据库文件,将文件中的TYPE=MyISAM更改为ENGINE=MyISAM,共有五处修改:

[[email protected] /var/www/extsuite/extman]# vim docs/extmail.sql  :% s/TYPE/ENGINE/g  

我这里导入数据的时候发生了一个错误,提示找不到mysql.sock文件:

[[email protected] /var/www/extsuite/extman]# mysql -uroot < docs/extmail.sql  ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)  [[email protected] /var/www/extsuite/extman]# ls /var/lib/mysql/mysql.sock  ls: 无法访问/var/lib/mysql/mysql.sock: 没有那个文件或目录  

解决:然后我去查看了一下/etc/my.cnf文件,发现没问题,socket参数指向的也是 /var/lib/mysql/mysql.sock 这个路径,于是我就重启了mysql服务,然后再尝试就没有报找不到mysql.sock文件的错误了,但是报了另一个错误:

[[email protected] /var/www/extsuite/extman]# mysql -uroot < docs/extmail.sql  ERROR 1364 (HY000) at line 31: Field 'ssl_cipher' doesn't have a default value  [[email protected] /var/www/extsuite/extman]#  

这错误的意思是:字段 ‘ssl密码’ 没有默认值

于是又得去查看一下/etc/my.cnf文件,然后把sql_mode参数给注释掉:

接着重启mysql服务后,继续导入数据,这次就没问题了:

[[email protected] /var/www/extsuite/extman]# !service  service mysqld restart  Redirecting to /bin/systemctl restart  mysqld.service  [[email protected] /var/www/extsuite/extman]# mysql -uroot < docs/extmail.sql  [[email protected] /var/www/extsuite/extman]# mysql -uroot < docs/init.sql  

导入数据成功后再次修改/etc/my.cnf文件,把刚刚注释的那行给去掉注释,不去掉的话,mysql服务可能会出现不能启动的问题:

数据导入成功后,登录mysql,创建一个mysql数据库用户extmail并授予权限:

[[email protected] /var/www/extsuite/extman]# mysql -uroot  mysql> GRANT ALL ON extmail.* to extmail@'%' identified by 'extmail';      //我这里是直接授予全部权限在任意的IP地址上了,实际情况根据需求而定  Query OK, 0 rows affected (0.00 sec)    mysql> FLUSH PRIVILEGES;  Query OK, 0 rows affected (0.00 sec)    mysql>  

复制之前提到的配置文件:

[[email protected] ~]# cd /var/www/extsuite/extman/docs/  [[email protected] /var/www/extsuite/extman/docs]# cp mysql_virtual_* /etc/postfix/  

为extman创建临时目录:

[[email protected] /var/www/extsuite/extman/docs]# mkdir /tmp/extman  [[email protected] /var/www/extsuite/extman/docs]# chown -R postfix.postfix /tmp/extman/  

启动postfix、dovecot、saslauthd服务,并查看进程是否正常:

[[email protected] /var/www/extsuite/extman]# service postfix start  Starting postfix (via systemctl):                          [  确定  ]  [[email protected] /var/www/extsuite/extman]# ps aux |grep postfix  root      63586  0.0  0.1  95392  2160 ?        Ss   01:29   0:00 /usr/libexec/postfix/master -w  postfix   63587  0.0  0.2  95448  3808 ?        S    01:29   0:00 pickup -l -t unix -u  postfix   63588  0.0  0.2  95496  3816 ?        S    01:29   0:00 qmgr -l -t unix -u  root      63592  0.0  0.0 112680   976 pts/0    S+   01:33   0:00 grep --color=auto postfix  [[email protected] /var/www/extsuite/extman]#  ss -tnluo | grep :25  tcp    LISTEN     0      100       *:25                    *:*  [[email protected] /var/www/extsuite/extman]# service dovecot start  Redirecting to /bin/systemctl start  dovecot.service  [[email protected] /var/www/extsuite/extman]# ps aux |grep dovecot  root      63834  0.3  0.0  15652  1484 ?        Ss   02:15   0:00 /usr/sbin/dovecot -F  dovecot   63837  0.0  0.0   9320  1012 ?        S    02:15   0:00 dovecot/anvil  root      63838  0.0  0.0   9448  1164 ?        S    02:15   0:00 dovecot/log  root      63840  0.0  0.1  12464  2196 ?        S    02:15   0:00 dovecot/config  root      63842  0.0  0.0 112680   972 pts/0    S+   02:15   0:00 grep --color=auto dovecot  [[email protected] /var/www/extsuite/extman]# systemctl start saslauthd  [[email protected] /var/www/extsuite/extman]# ps aux |grep saslauthd  root      63131  0.0  0.0  69648   916 ?        Ss   01:19   0:00 /usr/sbin/saslauthd -m /run/saslauthd -a pam  root      63132  0.0  0.0  69648   676 ?        S    01:19   0:00 /usr/sbin/saslauthd -m /run/saslauthd -a pam  root      63133  0.0  0.0  69648   676 ?        S    01:19   0:00 /usr/sbin/saslauthd -m /run/saslauthd -a pam  root      63134  0.0  0.0  69648   676 ?        S    01:19   0:00 /usr/sbin/saslauthd -m /run/saslauthd -a pam  root      63135  0.0  0.0  69648   676 ?        S    01:19   0:00 /usr/sbin/saslauthd -m /run/saslauthd -a pam  root      63144  0.0  0.0 112680   972 pts/0    S+   01:20   0:00 grep --color=auto saslauthd  [[email protected] /var/www/extsuite/extman]# ps aux |grep courier-authlib  root      61661  0.0  0.0   4316   444 ?        S    00:07   0:00 /usr/local/courier-authlib/sbin/courierlogger -p7. 测试">7. 测试  

测试虚拟用户:

[[email protected] courier-authlib-0.66.2]# /usr/local/courier-authlib/sbin/authtest -s login [email protected] extmail  Authentication succeeded.                //显示这个表示成功,测试时使用的是[email protected],因为我们导入的数据库init.sql里面自带了这个。  Authenticated: [email protected]  (uid 2525, gid 2525)  Home Directory: /var/mailbox/extmail.org/postmaster  //这里需要注意/var/mailbox这个目录现在我们还没有创建,后面web访问的时候如果没有会报错,所以提前创建。                      Maildir: /var/mailbox/extmail.org/postmaster/Maildir/                      Quota: (none)              Encrypted Password: $1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0                  Cleartext Password: extmail                      Options: (none)  [[email protected] courier-authlib-0.66.2]# mkdir /var/mailbox  [[email protected] courier-authlib-0.66.2]# chown -R postfix.postfix /var/mailbox/  

测试smtp发信:

[[email protected] ~]# printf   "[email protected]" | openssl base64  cG9zdG1hc3RlckBleHRtYWlsLm9yZw==  [[email protected] ~]#  printf   "extmail" | openssl base64  ZXh0bWFpbA==  [[email protected] ~]# telnet localhost 25  Trying ::1...  telnet: connect to address ::1: Connection refused  Trying 127.0.0.1...  Connected to localhost.  Escape character is '^]'.  220 mail.daen.com ESMTP Postfix  auth login  334 VXNlcm5hbWU6  cG9zdG1hc3RlckBleHRtYWlsLm9yZw==  334 UGFzc3dvcmQ6  ZXh0bWFpbA==  235 2.7.0 Authentication successful     //成功  quit  221 2.0.0 Bye  Connection closed by foreign host.  
8. 启动nginx实现web访问

nginx本身并不能解析cgi,extmail自带了解析cgi的程序,但是有些地方需要修改下:

[[email protected] ~]# vim /var/www/extsuite/extmail/dispatch-init  SU_Ugrep nginx  root      72338  0.0  0.1 122892  2296 ?        Ss   03:22   0:00 nginx: master process /usr/sbin/nginx  nginx     72339  0.0  0.1 123336  3192 ?        S    03:22   0:00 nginx: worker process  nginx     72340  0.0  0.1 123336  3192 ?        S    03:22   0:00 nginx: worker process  nginx     72341  0.0  0.1 123336  3192 ?        S    03:22   0:00 nginx: worker process  nginx     72342  0.0  0.1 123336  3192 ?        S    03:22   0:00 nginx: worker process  root      72344  0.0  0.0 112680   976 pts/0    S+   03:22   0:00 grep --color=auto nginx  [[email protected] ~]# netstat -lntp  Active Internet connections (only servers)  Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name  tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN      63834/dovecot  tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN      63834/dovecot  tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      72338/nginx: master  tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      72338/nginx: master  tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1482/sshd  tcp        0      0 127.0.0.1:8888          0.0.0.0:*               LISTEN      64100/dispatch.fcgi  tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      64328/master  tcp6       0      0 :::3306                 :::*                    LISTEN      62442/mysqld  tcp6       0      0 :::80                   :::*                    LISTEN      72338/nginx: master  tcp6       0      0 :::22                   :::*                    LISTEN      1482/sshd  [[email protected] ~]#  

然后到windows上访问你服务器IP的8080端口:

extman的登录账户为[email protected]密码为extmail123,首次使用需要先添加域,添加之后再修改域,改为可自由注册,再注册用户就可以登录发邮件了:

原文出处:51cto -> http://blog.51cto.com/zero01/2064693

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。