资讯专栏INFORMATION COLUMN

Extmail介绍和安装

IT那活儿 / 4025人阅读
Extmail介绍和安装

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

Extmail是目前国内长期坚持自主研发并开源的邮件系统,并且是国内唯一活跃开发的中文开源邮件系统软件,定位于免费用户 ,适合注重成本的企业、开发者等群体使用,满足正常邮件收发、多域名和Web文件管理等基本需求。
最早诞生于 2004 年底,于 2005/9/18 正式发布。
从最初的 WebMail 逐步发展成完整的邮件系统,并最早发布集成 ExtMail 的定制版 linux 系统 EMOS,极大地简化了繁杂的安装设定,将用户从大量源码包和杂乱的文档中解放出来。
目前 ExtMail 重点面向国内中小企业,是 0 成本自建企业邮箱的最佳解决方案。由于 ExtMail 较符合国内用户的使用习惯,提供本土化的论坛 / QQ 群等技术支持,满足稳定收发和基本管理的需求,受到社区和商业用户的欢迎。


01

ExtMail 的优势与特点
  • 开源、免费,符合中国人习惯,使用不受限制;
  • 拥有自主著作权、产权,用户不必担心版权问题;
  • 安装简便,友善的全 Web 方式后台管理;
  • 丰富的增值模块,应对不同客户的需求;
  • 与 LisPush 手机电邮无缝对接,满足移动办公要求;
  • 提供 VPS 模板,利用 LisVP 云主机系统实现 1 分钟安装。


02

安装操作系统,初始化配置环境
1.1 配置正式环境
CentOS7+LAMP(YUM install)
(Postfix+cyrus-sasl+Dovecot+Extmail&Extman)
1.2 物理机
  • 主机名:mail.ebarafoodssh.cn
  • IP address:192.168.88.197
  • Internet IP:210.22.180.100


03

初始化环境
关闭IPTABLES/SELINUX:
yum -y groupinstall Development Libraries Development Tools

yum install -y httpd httpd-devel php php-mysql mysql mysql-server mysql-devel openssl-devel dovecot perl-DBD-MySQL tcl tcl-devel libart_lgpl libart_lgpl-devel libtool-ltdl libtool-ltdl-devel expect db4 db4-devel cyrus-sasl-* dovecot-mysql perl-CGI

rpm -ivh ftp://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/perl-Unix-Syslog-1.1-1.el6.rf.x86_64.rpm

wget ftp://rpmfind.net/linux/dag/redhat/el6/en/x86_64/extras/RPMS/perl-GD-2.45-1.el6.rfx.x86_64.rpm(perl-GD 下载好后使用 yum localinstall 安装)
3.1 安装postfix
#service sendmail stop
#chkconfig sendmail off
#yum remove postfix
#userdel postfix
#groupdel postfix
[root@mail ]# groupadd -g 2525 postfix
[root@mail ]# useradd -g postfix -u 2525 -s /sbin/nologin -M postfix
[root@mail ]# groupadd -g 2526 postdrop
[root@mail ]# useradd -g postdrop -u 2526 -s /bin/false -M postdrop

tar -zxvf postfix-2.6.5.tar.gz
cd postfix-2.6.5
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 -lm -L/usr/lib64/sasl2 -lsasl2 -lssl -lcrypto
(上面make根据系统来64和32lib地址不同,后面make可能会出错。)
make && make install
安装完成后,可以看到postfix提示生成别名二进制文件:
#newaliases
启动时一定注意文件权限,用户的UID和GID都是新建和指定的。
安装后目录初始配置install_root: [/]
tempdir: [/home/soft/postfix-2.6.5]
config_directory: [/etc/postfix]
command_directory: [/usr/sbin]
daemon_directory: [/usr/libexec/postfix]
data_directory: [/var/lib/postfix]
html_directory: [no]
mail_owner: [postfix]
mailq_path: [/usr/bin/mailq.postfix]
manpage_directory: [/usr/share/man]
newaliases_path: [/usr/bin/newaliases.postfix]
queue_directory: [/var/spool/postfix]
readme_directory: [/usr/share/doc/postfix-2.6.6/README_FILES]
sendmail_path: [/usr/sbin/sendmail.postfix]
setgid_group: [postdrop]
3.2 修改postfix配置
vim /etc/postfix/main.cf

mynetworks = 127.X.X.1
为postfix开户基于cryus-sasl的认证功能。
查看否支持cyrus风格的sasl认证:
# postconf -a
cyrus  <---- 出现此提示说明支持 sasl 认证
dovecot
添加以下内容:
#vim /etc/postfix/main.cf
############################CYRUS-SASL############################
broken_sasl_auth_clients = yes
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
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sasl_application_name = smtpd
smtpd_banner = Welcome to our $myhostname ESMTP,Warning: Version not Available!


vim /usr/lib/sasl2/smtpd.conf
添加如下内容:
pwcheck_method: authdaemond
log_level: 3
mech_list:PLAIN LOGIN
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket
3.3 新建 /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 $?
为脚本添加权限并开机启动:
[root@mail postfix]# chmod +x /etc/init.d/postfix
[root@mail postfix]# chkconfig --add postfix
[root@mail postfix]# chkconfig postfix on
[root@mail postfix]# chown postfix.postfix -R /var/lib/postfix/
[root@mail postfix]# chown postfix.postfix /var/spool/ -R
3.4 安装Courier authentication library(Postfix链接Mysql数据库存放用户信息。)
#wget http://jaist.dl.sourceforge.net/project/courier/authlib/0.70.0/courier-authlib-0.70.0.tar.bz2
# tar xf courier-authlib-0.70.0.tar.bz2
# cd courier-authlib-0.70.0
# ./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
# make && make install
# chmod 755 /usr/local/courier-authlib/var/spool/authdaemon
# cp /etc/authdaemonrc.dist /etc/authdaemonrc
# cp /etc/authmysqlrc.dist /etc/authmysqlrc
# vim /etc/authdaemonrc
authmodulelist="authmysql" # 会支持很多认证方式,只保留authmysql即可。
authmodulelistorig="authmysql"
daemons=10 # 开户认证的进程数,也可以不用改,根据自己的情况。
配置通过MySQL认证,修改/etc/authmysqlrc,其中2525,2525 为postfix 用户的UID和GID:
[root@mail ~]# vim /etc/authmysqlrc
[root@mail ~]# cat /etc/authmysqlrc|grep -v "^#"|grep -v "^$"
MYSQL_SERVER localhost
MYSQL_USERNAME postfix
MYSQL_PASSWORD postfix
MYSQL_PORT 3306
MYSQL_OPT 0
MYSQL_DATABASE postfix
MYSQL_USER_TABLE mailbox
MYSQL_CRYPT_PWFIELD password
DEFAULT_DOMAIN ebarafoodssh.cn
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/,homedir)

# cd /home/soft/courier-authlib-0.66.1/
# cp courier-authlib.sysvinit /etc/rc.d/init.d/courier-authlib
# chmod 755 /etc/init.d/courier-authlib
# chkconfig --add courier-authlib
# chkconfig --level 2345 courier-authlib on

# echo "/usr/local/courier-authlib/lib/courier-authlib" >> /etc/ld.so.conf.d/courier-authlib.conf
# ldconfig -v
# service courier-authlib start (启动服务)
# chkconfig courier-authlib on
新建虚拟用户邮箱所在的目录,并将其权限赋予postfix用户:
# mkdir –p /var/mailbox
# chown -R postfix /var/mailbox
配置SMTP 认证,编辑 /usr/lib64/sasl2/smtpd.conf:
# vi /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
配置虚拟域和虚拟用户并为postfix配置dovecot。
# vim /etc/postfix/main.cf
########################Virtual Mailbox Settings########################
virtual_mailbox_base = /var/mailbox
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
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
maildrop_destination_recipient_limit = 10
maildrop_destination_concurrency_limit = 10
##########################QUOTA Settings########################
message_size_limit = 14336000
virtual_mailbox_limit = 20971520
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the users maildir has overdrawn his diskspace quota, please Tidy your mailbox and try again later.
virtual_overquota_bounce = yes
配置dovecot:
# vim /etc/dovecot/dovecot.conf
protocols = imap pop3 lmtp
disable_plaintext_auth = no

# vim /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:/var/mailbox/%d/%n/Maildir

# cp /etc/dovecot/conf.d/auth-sql.conf.ext /etc/dovecot/conf.d/auth-sql.conf
# vim /etc/dovecot/conf.d/auth-sql.conf
passdb {
driver = sql
args = /etc/dovecot-mysql.conf
}
userdb {
driver = sql
args = /etc/dovecot-mysql.conf
}

# vim /etc/dovecot-mysql.conf
driver = mysql
connect = host=localhost dbname=postfix user=postfix password=postfix
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

# service dovecot start
# chkconfig dovecot on
3.5 安装Exmail
(Extmail用于用户的登陆注册,发送接收邮件等。Extman是Extmain的管理工具,主要用于管理员来管理Extmail的信息,比如添加虚拟用,添加用户等)。
下载地址:
http://www.extmail.org/cgi-bin/download.cgi
下载解压extmail:
# tar zxvf extmail-1.2.tar.gz
# mkdir -p /var/www/extsuite
# mv extmail-1.2 /var/www/extsuite/extmail
# cp /var/www/extsuite/extmail/webmail.cf.default /var/www/extsuite/extmail/webmail.cf
修改Extmail的主配置文件:
# vim /var/www/extsuite/extmail/webmail.cf

部分修改选项的说明:

  • SYS_MESSAGE_SIZE_LIMIT = 5242880  用户可以发送的最大邮件;
  • SYS_SESS_DIR = /tmp/extmail  用户的session保存的位置。

SYS_UPLOAD_TMPDIR = /tmp/extmail/upload

SYS_USER_LANG = en_US
语言选项,可改作:
SYS_USER_LANG = zh_CN

SYS_MIN_PASS_LEN = 7  最短密码长度

SYS_MAILDIR_BASE = /home/domains
此处即为您在前文所设置的用户邮件的存放目录,可改作:
SYS_MAILDIR_BASE = /var/mailbox
SYS_MYSQL_USER = db_user
SYS_MYSQL_PASS = db_pass
以上两句用来设置连接数据库服务器所使用用户名、密码和邮件服务器用到的数据库,这里修改为:
SYS_MYSQL_USER = postfix
SYS_MYSQL_PASS = postfix
SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock

SYS_MYSQL_HOST = localhost
指明数据库服务器主机名,这里默认即可。
SYS_MYSQL_TABLE = mailbox
SYS_MYSQL_ATTR_USERNAME = username
SYS_MYSQL_ATTR_DOMAIN = domain
SYS_MYSQL_ATTR_PASSWD = password
以上用来指定验正用户登录里所用到的表,以及用户名、域名和用户密码分别对应的表中列的名称;这里默认即可。
SYS_AUTHLIB_SOCKET = /var/spool/authdaemon/socket
此句用来指明authdaemo socket文件的位置,这里修改为:
SYS_AUTHLIB_SOCKET = /usr/local/courier-authlib/var/spool/authdaemon/socket
建立extmail的临时文件目录及session目录:
# mkdir -p /tmp/extmail/upload
# chown postfix.postfix -R /tmp/extmail/
由于extmail要进行本地邮件的投递操作,故必须将运行apache服务器用户的身份修改为您的邮件投递代理的用户;如果apache打开了SUEXEC,需要配置suexec。
# vim /etc/httpd/conf/httpd.conf
User postfix
Group postfix
#LoadModule suexec_module modules/mod_suexec.so # 注释掉,关闭suexec
#DocumentRoot "/var/www/html"   # 关闭中心主机,开户虚拟主机
建立Extmail虚拟主机配置文件:
# vim /etc/httpd/conf.d/extmail.conf
80
>
ServerName mail.ebarafoodssh.cn
DocumentRoot /var/www/extsuite/extmail/html/
ScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi
Alias /extmail /var/www/extsuite/extmail/html
ScriptAlias /extman/cgi /var/www/extsuite/extman/cgi
Alias /extman /var/www/extsuite/extman/html


# service httpd restart
# chkconfig httpd on
安装配置ExtMan:
# tar zxvf extman-1.1.tar.gz
# mv extman-1.1 /var/www/extsuite/extman
修改配置文件以符合本例的需要:
# cp /var/www/extsuite/extman/webman.cf.default /var/www/extsuite/extman/webman.cf
修改主配置文件:
# vim /var/www/extsuite/extman/webman.cf

SYS_MAILDIR_BASE = /home/domains
此处即为您在前文所设置的用户邮件的存放目录,可改作:
SYS_MAILDIR_BASE = /var/mailbox
SYS_DEFAULT_UID = 1000
SYS_DEFAULT_GID = 1000
此两处后面设定的ID号需更改为前而创建的postfix用户和postfix组的id号,本文使用的是2525,因此,上述两项需要修改为:
SYS_DEFAULT_UID = 2525
SYS_DEFAULT_GID = 2525
SYS_MYSQL_USER = webman
SYS_MYSQL_PASS = webman
修改为:
SYS_MYSQL_USER = postfix
SYS_MYSQL_PASS = postfix
SYS_MYSQL_DB = postfix

SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
修改CGI目录属主:
# chown -R postfix.postfix /var/www/extsuite/extman/cgi/
# chown -R postfix.postfix /var/www/extsuite/extmail/cgi/
创建导入ExtMan数据库:(数据库root密码root)
# cd /var/www/extsuite/extman/docs
# sed -i "s/extmail/postfix/" mysql_virtual_*
# service mysqld start
# p
PS:修改extmail.sql&init.sql 默认用户和数据库名称改为postfix。
# mysql -u root -p < extmail.sql
# mysql -u root -p < init.sql
# cp mysql_virtual_* /etc/postfix/
授予用户postfix访问postfix数据库的权限:
# mysql -u root -p
mysql> GRANT all privileges on postfix.* TO postfix@localhost IDENTIFIED BY postfix;
mysql> GRANT all privileges on postfix.* TO postfix@% I
DENTIFIED BY postfix;
为Extman创建临时目录并给予权限:
# mkdir /tmp/extman
# chown postfix.postfix -R /tmp/extman/
登录WEB端。
管理员用户名密码:
admin
extmail*123*
配置Extman后台显示图形日志:
# yum install cairo-devel libxml2-devel pango-devel pango 
libpng-devel freetype freetype-devel libart_lgpl-devel
rrdtool* perl-Time-HiRes.x86_64 perl-File-Tail(见下一步)
编译安装 perl File::Tail mode:
yum -y install perl-ExtUtils-MakeMaker
tar -zxvf File-Tail-1.2.tar.gz
cd File-Tail-1.2
perl Makefile.PL
make test
make install
启动服务加入开机项目:
# cp -r /var/www/extsuite/extman/addon/mailgraph_ext/ /usr/local/mailgraph_ext/
# /usr/local/mailgraph_ext/mailgraph-init start
# /var/www/extsuite/extman/daemon/cmdserver -daemon
# echo "/usr/local/mailgraph_ext/mailgraph-init start" >> /etc/rc.d/rc.local
# echo "/var/www/extsuite/extman/daemon/cmdserver -v -d" >> /
etc/rc.d/rc.local
配置日志回滚:
# vim /etc/logrotate.d/maillog
/var/log/maillog {
daily
missingok
compress
rotate 365
nocompress
copytruncate
notifempty
create 0600 root root
olddir /data/maillog/
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
测试SMTP连接。
此处输入用户名 :
perl -e use MIME::Base64; print encode_base64("test@ebarafood.com")
此处输入密码 :
perl -e use MIME::Base64; print encode_base64(" Abcd1234")
telnet mail.zzc.com 25
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is ^].
220 Welcome to our mail.zzc.com ESMTP,Warning: Version not Available!
ehlo mail.zzc.com
250-mail.zzc.com
250-PIPELINING
250-SIZE 14336000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
auth login
334 VXNlcm5hbWU6
emhvdXp1bmNoaUB6emMuY29t
334 UGFzc3dvcmQ6
MTIzcXdlIQ==
235 2.7.0 Authentication successful (提示成功)


04

安装maildrop-2.0.2
maildrop是一个使用C++编写的用来代替本地MDA的带有过滤功能邮件投递代理,是courier邮件系统组件之一。
它从标准输入接受信息并投递到用户邮箱;maildrop既可以将邮件投递到mailboxes格式邮箱,亦可以将其投递到maildirs格式邮箱。同时,maildrop可以从文件中读取入站邮件过滤指示,并由此决定是将邮件送入用户邮箱或者转发到其它地址等。
和procmail不同的是,maildrop使用结构化的过滤语言,因此,邮件系统管理员可以开发自己的过滤规则并应用其中。我们在此将使用maildrop来代替postfix自带的MDA,并以此为基础扩展后文的邮件杀毒和反垃圾邮件功能的调用;在此可能会修改前文中的许多设置,请确保您的设置也做了相应的修改。
4.1 安装
将courier-authlib的头文件及库文件链接至/usr目录(编译maildrop时会到此目录下找此些相关的文件):
# ln -sv /usr/local/courier-authlib/bin/courierauthconfig /usr/bin
# ln -sv /usr/local/co
urier-authlib/include/* /usr/include
maildrop需要pcre的支持,因此,接下来将首先安装pcre:
# tar jxvf pcre-7.3.tar.bz2
# cd pcre-7.3
# ./configure
# make
# make check
# make install

#
 tar jxvf maildrop-2.0.2.tar.bz2
# cd maildrop-2.0.2
# ./configure --enable-sendmail=/usr/sbin/sendmail --enable-trusted-users=root vuser --enable-syslog=1 --enable-maildirquota --enable-maildrop-uid=1000 --enable-maildrop-gid=1000 --with-trashquota --with-dirsync
# make
# make install
检查安装结果,请确保有"Courier Authentication Library extension enabled."一句出现:
# maildrop -v
maildrop 2.0.2 Copyright 1998-2005 Double Precision, Inc.
GDBM extensions enabled.
Courier Authentication Library extension enabled.
Maildir quota extension enabled.
This program is distributed under the terms of the GNU General Public
License. See COPYING for additional information.
4.2 新建其配置文件/etc/maildroprc文件,首先指定maildrop的日志记录位置:
# vi /etc/maildroprc
添加如下内容:
logfile "/var/log/maildrop.log"

#
 touch /var/log/maildrop.log
# chown vuser.vgroup /var/log/maildrop.log
4.3 配置Postfix
编辑master.cf:
# vi /etc/postfix/master.cf
启用如下两行:
maildrop unix - n n - - pipe
flags=DRhu user=vuser argv=/usr/local/bin/maildrop -d ${recipient}
注意:定义transport的时候,即如上两行中的第二行,其参数行必须以空格开头,否则会出错。
设置postfix开机启动:
# echo "/usr/sbin/postfix start">>/etc/rc.local
报错。
如果出现如下错误:
Undefined subroutine &Ext::Utils::sort2name called at 
/var/www/extsuite/extmail/libs/Ext/App/Folders.pm line 387.
解决办法:
[root@node1 Ext]# cd /var/www/extsuite/extmail/libs/Ext
[root@node1 Ext]# cp Utils.pm /var/www/extsuite/extman/libs/
[root@node1 Ext]# cd /var/www/extsuite/extman/libs/Ext
[root@node1 Ext]# mv Utils.pm ManUtils.pm
[root@node1 Ext]# /var/www/extsuite/extmail/dispatch-init stop
[root@node1 Ext]# /var/www/extsuite/extmail/dispatch-init start

END




本文作者:王小峰(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129437.html

相关文章

  • Java培训学习之Java打包工具的介绍

    摘要:打包工具是众多的开发工具之一,下面千锋重庆的小编来进行打包工具的介绍打包工具的介绍开源是一个安装程序制作工具,能够制作一些简单的安装程序。是全球领先的安装开发解决方案。通过上述介绍相信大家对打包工具已经有所了解 Java打包工具是众多的Java开发工具之一,下面千锋重庆Java的小编来进行Java打包工具的介绍:Java打...

    darkbaby123 评论0 收藏0
  • (转)Yarn的安装与使用详细介绍

    摘要:安装包老是失败,今天发现一个更好的包安装工具,可以用这个来管理我们的包。是最近发布的一款依赖包安装工具。在官方介绍里有这么一句话关键意思就是,快速安全可靠。如同声称,快速,可靠,安全。原文地址的安装与使用详细介绍 npm安装包老是失败,今天发现一个更好的包安装工具Yarn,可以用这个来管理我们的包。不知道大家有没有觉察到Facebook近年大招频出。Yarn是Facebook最近发布的...

    darry 评论0 收藏0
  • Python3网络爬虫实战---5、存储库的安装:PyMySQL、PyMongo、RedisPy、R

    摘要:相关链接官方文档安装推荐使用安装,命令如下运行完毕之后即可完成的安装。上一篇文章网络爬虫实战数据库的安装下一篇文章网络爬虫实战库的安装 上一篇文章:Python3网络爬虫实战---4、数据库的安装:MySQL、MongoDB、Redis下一篇文章:Python3网络爬虫实战---6、Web库的安装:Flask、Tornado 在前面一节我们介绍了几个数据库的安装方式,但这仅仅是用来存...

    AlanKeene 评论0 收藏0
  • gulpwebpack入门介绍

    摘要:介绍说明的包管理器,用于插件管理包括安装卸载管理依赖等使用安装插件命令提示符执行插件名称。总结安装新建文件全局和本地安装安装插件新建文件通过命令提示符运行任务。 showImg(https://segmentfault.com/img/remote/1460000010873466); 前言 众所周知目前比较火的工具就是gulp和webpack,但webpack和gulp却有所不同,本...

    hsluoyz 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<