**************************************postfix+mysql+authlib+sasl+Nginx+maildrop********************************************
折腾了我几天的邮件系统终于搞完了
现将配置过程,与解决某些问题的方法记录下来,以供参考
提供网址
PS:http://rpmfind.net/ 查找动态包网址
http://rpm.pbone.net/ 查找rpm包
http://www.extmail.org/docs/extmail_solution_linux/#os extmail官方针对CentOS4.0的安装指南
http://www.sunnyu.com/?p=196 针对Redhat5.3的安装指南 非官方
************************************************************************************************************
系统准备
系统为:2.6内核,CentOS
[root@Mail ~]# lsb_release -a
LSB Version: :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: CentOS
Description: CentOS release 5.5 (Final)
Release: 5.5
Codename: Final
[root@Mail ~]# uname -a
Linux Mail 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:35 EDT 2010 i686 athlon i386 GNU/Linux
使用默认方式安装系统后,从RHEL安装盘上拷贝一些下面安装步骤需要的rpm包先安装上
可通过yum install
[root@Mail ~]# rpm -qa | grep postgresql
postgresql-libs-8.1.22-1.el5_5.1
postgresql-devel-8.1.22-1.el5_5.1
postgresql-8.1.22-1.el5_5.1
pexpect-2.3-3.el5
expect-5.43.0-5.1
rpm -ivh libtool-ltdl-devel-1.5.22-6.1.i386.rpm
rpm -ivh mysql-devel-5.0.45-7.el5.i386.rpm
rpm -ivh openldap-servers-2.3.43-3.el5.i386.rpm
rpm -ivh openldap-servers-sql-2.3.43-3.el5.i386.rpm
rpm -ivh pcre-6.6-2.el5_1.7.i386.rpm
rpm -ivh pcre-devel-6.6-2.el5_1.7.i386.rpm
###################################################################
关闭SEliux
修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启
如果不想重启系统,使用命令setenforce 0
注:
setenforce 1 设置SELinux 成为enforcing模式
setenforce 0 设置SELinux 成为permissive模式
在lilo或者grub的启动参数中增加:selinux=0,也可以关闭selinux
查看selinux状态:
[root@Mail postfix]# /usr/sbin/sestatus -v
SELinux status: disabled
或者
setsebool httpd_disable_trans=1
setsebool mysqld_disable_trans=1
最好全关闭Selinux 并且重启机器
++++++++++++++++++++++++++++++++++++++++++++++++
1.从 www.extmail.org 网站上下载最新的 extmail 相关包
extmail-1.1.1.tar.gz
extman-1.0.1.tar.gz
2.导入extman后台数据库数据
tar -xzvf extman-1.0.1.tar.gz
cd extman-1.0.1/docs
注:mysql版本问题的时候,请选择5.1版本 TYPE=MYISAM类型导入出错
mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON *.* TO 'extmail'@'%' IDENTIFIED BY 'extmail';
mysql> source extmail.sql
mysql> source init.sql
mysql> exit
3.准备rpm环境变量
按照参考文档,采用rpm方式安装,首先设置环境变量,方便后面操作的目录切换。
export rpms=/usr/src/redhat/RPMS
export source=/usr/src/redhat/SOURCES
export spec=/usr/src/redhat/SPECS
================================================================
安装authlib
a.下载源码包
tar -xjf courier-authlib-0.63.0.tar.bz2
cd courier-authlib-0.63.0
cp courier-authlib.spc $spec
cd ..
cp courier-authlib-0.63.0.tar.gz2 $source
cd $spec
rpmbuild -bb courier-authlib.spec --注意此处如果ltd.h文件找不到,在后面加上--nodeps强制安装
b.安装生成的rpm
cd $rpms/i386
rpm -ivh courier-authlib-0.63.0-1.i386.rpm
rpm -ivh courier-authlib-devel-0.63.0-1.i386.rpm
rpm -ivh courier-authlib-mysql-0.63.0-1.i386.rpm
c.配置authlibdaemon
cd /etc/authlib
mv authdaemonrc authdaemonrc.bak
vi authdaemonrc
输入以下内容
authmodulelist="authmysql"
authmodulelistorig="authmysql"
daemons=5
authdaemonvar=/var/spool/authdaemon
DEBUG_LOGIN=2
DEFAULTOPTIONS=""
LOGGEROPTS=""
d.配置authmysqlrc
mv authmysqlrc authmysqlrc.bak
vi authmysqlrc
输入以下内容
MYSQL_SERVER 127.0.0.1
MYSQL_USERNAME extmail
MYSQL_PASSWORD extmail
MYSQL_SOCKET /var/lib/mysql/mysql.sock
MYSQL_PORT 3306
MYSQL_OPT 0
MYSQL_DATABASE extmail
MYSQL_USER_TABLE mailbox
MYSQL_CRYPT_PWFIELD password
MYSQL_UID_FIELD uidnumber
MYSQL_GID_FIELD gidnumber
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD homedir
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD maildir
MYSQL_QUOTA_FIELD quota
MYSQL_SELECT_CLAUSE SELECT username,password,"",uidnumber,gidnumber,\
CONCAT('/home/domains/',homedir), \
CONCAT('/home/domains/',maildir), \
quota, \
name \
FROM mailbox \
WHERE username = '$(local_part)@$(domain)'
目录权限
[root@Mail i386]# ll /etc/authlib/
总计 128
-rwxr-xr-x 1 vuser vgroup 3573 03-18 15:34 authdaemonrc
-rwxr-xr-x 1 daemon daemon 3708 03-18 00:31 authdaemonrcbak
-rwxr-xr-x 1 daemon daemon 3708 03-18 00:27 authdaemonrc.dist
-rwxr-xr-x 1 daemon daemon 8229 03-18 00:31 authldaprc
-rwxr-xr-x 1 daemon daemon 8229 03-18 00:27 authldaprc.dist
-rwxr-xr-x 1 vuser vgroup 994 03-18 16:32 authmysqlrc
-rwxr-xr-x 1 daemon daemon 8812 03-18 00:31 authmysqlrcbak
-rwxr-xr-x 1 root root 666 03-18 12:56 authmysqlrcbak2
-rwxr-xr-x 1 daemon daemon 8812 03-18 00:27 authmysqlrc.dist
-rwxr-xr-x 1 daemon daemon 8117 03-18 00:31 authpgsqlrc
-rwxr-xr-x 1 daemon daemon 8117 03-18 00:27 authpgsqlrc.dist
[root@Mail i386]# ll /etc/ | grep authlib
drwxr-xr-x 2 daemon daemon 4096 03-18 16:32 authlib
e.启动authlib
service courier-authlib start
chmod 777 /var/spool/authdaemon/
[root@Mail i386]# ll /var/spool/authdaemon/
总计 8
-rw-r--r-- 1 root root 5 03-18 23:11 pid
-rwxrwxrwx 1 vuser vgroup 0 03-18 00:34 pid.lock
srwxrwxrwx 1 root root 0 03-18 23:11 socket
[root@Mail i386]# ll /var/spool/ | grep authdaemon
drwxrwxrwx 2 vuser vgroup 4096 03-18 23:11 authdaemon
-----------------------------------------------------------------------------------------------------------
5.安装courier-imap
不能使用root身份生成rpm,需要建立一个新的普通账号。
useradd kangta
软件包依赖需要openldap-server,我们在前面已经准备好(rpm创建好后可以删除)
建立需要的目录和设置环境变量
su - kangta
cd /home/kangta
mkdir -p rpm/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
vi ~/.rpmmacros
输入如下内容
%_topdir /home/kangta/rpm
获取源码包
courier-imap-4.8.1.tar.bz2
cp courier-imap-4.8.1.tar.bz2 rpm/SOURCES/
tar -xjf courier-imap-4.8.1.tar.bz2
cd courier-imap-4.8.1
cp courier-imap.spec ../rpm/SPECS/
cd ../rpm/SPECS/
编辑courier-imap.spec文件,将下面内容作修改
%if %suse_version
BuildPreReq: rpm >= 3.0.5 /usr/bin/sed openldap2 openldap2-devel %([ %{suse_version} -gt 819 ]
&& echo /usr/include/fam.h)
%else
BuildPreReq: rpm >= 4.0.2 sed /usr/include/fam.h openldap-devel openldap-servers
%endif
修改为
%if %suse_version
BuildPreReq: rpm >= 3.0.5 /usr/bin/sed openldap2 openldap2-devel
%else
BuildPreReq: rpm >= 4.0.2 sed openldap-devel openldap-servers
%endif
创建rpm,并使用exit退出当前用户
rpmbuild -bb courier-imap.spec
exit
安装生成好的rpm,并运行服务
rpm -ivh /home/kangta/rpm/RPMS/i386/courier-imap-4.4.1-1.i386.rpm
service courier-imap start
====================================================================================
安装cyrus-sasl
a.安装srpm
wget ftp://194.199.20.114/linux/fedora/updates/8/SRPMS/cyrus-sasl-2.1.22-8.fc8.src.rpm 注:此处不能下载时,可以rpm网站上找到对应的包
rpm -ivh cyrus-sasl-2.1.22-8.fc8.src.rpm
cd $spec
编辑cyrus-sasl.spec 将下面:
# bundling copy of berkeley db, for sasldb support.
topdir=`pwd`
pushd db-%{db_version}/build_unix
../dist/configure \r
--with-mutex=unix/fcntl --disable-shared --enable-static --with-pic \
--with-uniquename=_cyrus_sasl_sasldb_rh \
--prefix=${topdir}/db-instroot \
--includedir=${topdir}/db-instroot/include \
--libdir=${topdir}/db-instroot/lib
改为:
# bundling copy of berkeley db, for sasldb support.
topdir=`pwd`
pushd db-%{db_version}/build_unix
../dist/configure \r
--with-mutex=unix/fcntl --disable-shared --enable-static --with-pic \
--with-uniquename=_cyrus_sasl_sasldb_rh \
--prefix=${topdir}/db-instroot \
--includedir=${topdir}/db-instroot/include \
--libdir=${topdir}/db-instroot/lib \
--with-authdaemond=/var/spool/authdaemon
b、生成rpm并做安装
rpmbuild -bb cyrus-sasl.spec
cd $rpms/i386
rpm -e –nodeps cyrus-sasl-devel cyrus-sasl-plain cyrus-sasl cyrus-sasl-lib (如果这些包存在,先卸载)
rpm -ihv cyrus-sasl-lib-2.1.22-8.i386.rpm
rpm -ihv cyrus-sasl-2.1.22-8.i386.rpm
rpm -ihv cyrus-sasl-plain-2.1.22-8.i386.rpm
rpm -ihv cyrus-sasl-devel-2.1.22-8.i386.rpm
rpm -ihv cyrus-sasl-md5-2.1.22-8.i386.rpm
c、配置sasl2
创建/usr/lib/sasl2/smtpd.conf 文件,输入下面的内容:
文件权限
[root@Mail i386]# ll /usr/lib/sasl2/smtpd.conf
-rwxr-xr-x 1 root root 110 03-18 15:39 /usr/lib/sasl2/smtpd.conf
pwcheck_method: authdaemond
log_level: 3
mech_list: PLAIN LOGIN
authdaemond_path:/var/spool/authdaemon/socket
重启cyrus-sasl
[root@Mail postfix]# /etc/init.d/saslauthd start
********************************************************************************************************************
7.安装postfix
a、下载软件包
cd ~
wget http://ftp.wl0.org/official/2.5/SRPMS/postfix-2.5.4-2.src.rpm
rpm -ivh postfix-2.5.4-2.src.rpm
cd $spec
编辑postfix.spec 修改下面的选项
%define distribution rhel-5.0
%define with_mysql_redhat 1
%define with_sasl 2
%define with_vda 1
b、创建rpm并做安装
rpmbuild -bb postfix.spec
cd $rpms/i386
rpm -ivh postfix-2.5.4-2.rhel4.i386.rpm
c、切换mta
alternatives –config mta (选择2,postfix)
rpm -e sendmail
cd /usr/sbin/
mv sendmail sendmail.bak
newaliases
ln -s sendmail.postfix sendmail
d、配置postfix
cd /etc/postfix/
mv main.cf main.cf.bak
vi main.cf
alias_database = hash:/etc/postfix/aliases
alias_maps = hash:/etc/postfix/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
html_directory = /usr/share/doc/postfix-2.5.4-documentation/html
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.5.4-documentation/readme
sample_directory = /etc/postfix
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
# hostname
mynetworks = 127.0.0.1
myhostname = mail.extmail.org
mydestination = $mynetworks $myhostname
# banner
mail_name = Postfix - by extmail.org
smtpd_banner = $myhostname ESMTP $mail_name
# response immediately
smtpd_error_sleep_time = 0s
unknown_local_recipient_reject_code = 450
# extmail config here
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_transport = maildrop:
maildrop_destination_recipient_limit = 1
# smtpd related config
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unauth_destination,
reject_unauth_pipelining,
reject_invalid_hostname,
# SMTP AUTH config here
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
编辑mysql_virtual_alias_maps.cf
vi /etc/postfix/mysql_virtual_alias_maps.cf
内容如下:
user = extmail
password = extmail
hosts = 127.0.0.1
dbname = extmail
table = alias
select_field = goto
where_field = address
编辑mysql_virtual_domains_maps.cf
vi /etc/postfix/mysql_virtual_domains_maps.cf
内容如下:
user = extmail
password = extmail
hosts = 127.0.0.1
dbname = extmail
table = domain
select_field = description
where_field = domain
#additional_conditions = and backupmx ='0' and active ='1'
编辑mysql_virtual_mailbox_maps.cf
vi /etc/postfix/mysql_virtual_mailbox_maps.cf
内容如下:
user = extmail
password = extmail
hosts = 127.0.0.1
dbname = extmail
table = mailbox
select_field = maildir
where_field = username
#additional_conditions = and active = '1'
启动postfix
service postfix start
**********************************************************************************************
8.安装maildrop
a.下载生成rpm
cd ~
wget http://prdownloads.sourceforge.net/courier/maildrop-2.0.4.tar.bz2
cp maildrop-2.0.4.tar.bz2 $source
tar xjf maildrop-2.0.4.tar.bz2
cd maildrop-2.0.4
cp maildrop.spec $spec
cd $spec
编辑maildrop.spec 把下面:
BuildRequires: /usr/include/fam.h gdbm-devel pcre-devel
改为:
BuildRequires: gdbm-devel pcre-devel
把下面:
%configure --with-devel --enable-userdb --enable-maildirquota \
--enable-syslog=1 --enable-trusted-users='root mail daemon postmaster qmaild mmdf' \
--enable-restrict-trusted=0 \r
--enable-sendmail=/usr/sbin/sendmail
改为:
%configure --with-devel --enable-userdb --enable-maildirquota \
--enable-syslog=1 --enable-trusted-users='root mail daemon postmaster qmaild mmdf' \
--enable-restrict-trusted=0 --enable-sendmail=/usr/sbin/sendmail \
--enable-authlib
说明:如果tail -f /var/log/maillog 提示“maildrop: maildir over quota”,可以将
“–enable-maildirquota ”配置选项清除,既可以解决maildrp 误报“maildir over quota”错误.
b.创建maildrop rpm并安装
rpmbuild -bb maildrop.spec
cd $rpms/i386
rpm -ivh maildrop-2.0.4-1.i386.rpm
rpm -ivh maildrop-devel-2.0.4-1.i386.rpm
c.添加虚似用户及创建目录
cd ~
groupadd -g 1000 vgroup
useradd -g 1000 -u 1000 -s /sbin/nologin -d /dev/null vuser
编辑/etc/postfix/master.cf ,加入下面的内容:
maildrop unix - n n - - pipe
flags=DRhu user=vuser argv=/usr/bin/maildrop -w 90 -d ${user}@${nexthop} ${recipient} ${user} ${extension} {nexthop}
注意flags前面有空格
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
10.配置Apache
编辑httpd.conf:
vi /etc/httpd/conf/httpd.conf
在730行左右,屏蔽掉AddDefaultCharset:
#AddDefaultCharset UTF-8
使apache开机默认启动:
chkconfig httpd on
虚拟主机设置
编辑/etc/httpd/conf/httpd.conf文件,在最后一行加上:
NameVirtualHost *:80
Include conf/vhost_*.conf
编辑/etc/httpd/conf/vhost_extmail.conf,里面定义虚拟主机的相关内容,包括主目录,以及ExtMail和ExtMan的相关配置,Suexec的设置等。
# VirtualHost for ExtMail Solution
<VirtualHost *:80>
ServerName mail.extmail.org
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/
# Suexec config
SuexecUserGroup vuser vgroup
</VirtualHost>
重新启动apache:
service httpd restart
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
配置Extmail
建立/var/www/extsuite并复制源码到该目录,相关命令:
mkdir /var/www/extsuite
tar -zxvf src/extmail-1[1][1].0.4.tar.gz -C src
cp -r src/extmail-1.0.4 /var/www/extsuite/extmail
cd /var/www/extsuite/extmail
cp webmail.cf.default webmail.cf
cd $OLDPWD
注意:上面命令行中最后一个cd $OLDPWD是返回原始路径(即ExtMail Solution软件包根目录)
安装perl-Unix-Syslog包
rpm -ivh RPMS/perl-Unix-Syslog-1.0-1ext.i386.rpm
编辑webmail.cf
修改/var/www/extsuite/extmail/webmail.cf里的其他参数,主要变动的内容见下:
SYS_USER_LANG = zh_CN
SYS_USER_CHARSET = gb2312
SYS_MFILTER_ON = 1
SYS_NETDISK_ON = 1
SYS_SHOW_SIGNUP = 1
SYS_MYSQL_USER = extmail
SYS_MYSQL_PASS = extmail
SYS_MYSQL_DB = extmail
SYS_G_ABOOK_TYPE = file
SYS_G_ABOOK_FILE_CHARSET = gb2312
其中SYS_MFILTER_ON及SYS_NETDISK_ON 设置为1是为了打开网络磁盘和过滤器;SYS_SHOW_SIGNUP控制首页是否显示免费注册邮箱按钮;全局地址本默认为ldap格式,现在也改为文本格式,并将地址本的转换编码改为GB2312
更新cgi目录权限
由于SuEXEC的需要,必须将extmail的cgi目录修改成vuser:vgroup权限:
chown -R vuser:vgroup /var/www/extsuite/extmail/cgi/
安装ExtMan - web后台
在ExtMail-Solution软件包根目录下执行:
tar -zxvf src/extman-0[1][1].2.4.tar.gz -C src
cp -r src/extman-0.2.4 /var/www/extsuite/extman/
配置webman.cf
修改/var/www/extsuite/extman/webman.cf内SYS_CHARSET及SYS_LANG参数为:
SYS_CAPTCHA_ON = 1
# SYS_CAPTCHA_ON参数控制首页是否采用校验码登陆
SYS_CHARSET = gb2312
SYS_LANG = zh_CN
其他参数基本上可以使用默认值。
安装perl-GD包
rpm -ivh RPMS/perl-GD-2.35-2ext.i386.rpm
更新cgi目录权限
由于SuEXEC的需要,必须将extman的cgi目录修改成vuser:vgroup权限:
chown -R vuser:vgroup /var/www/extsuite/extman/cgi/
查看文件权限
[root@Mail postfix]# ll /var/www/extsuite/
总计 16
drwxr-xr-x 7 root root 4096 03-18 14:26 extmail
drwxr-xr-x 11 root root 4096 03-18 14:11 extman
[root@Mail postfix]# ll /var/www/extsuite/extmail/ | grep cgi
drwxr-xr-x 2 vuser vgroup 4096 2009-11-07 cgi
建立临时文件夹:
mkdir /tmp/extman
chown -R vuser:vgroup /tmp/extman
建立刚才导入mysql的[email protected]帐户的Maildir,请输入如下命令:
cd /var/www/extsuite/extman/tools
./maildirmake.pl /home/domains/extmail.org/postmaster/Maildir
chown -R vuser:vgroup /home/domains/extmail.org
cd $OLDPWD
[root@Mail postfix]# ll /home/domains/
总计 8
drwxr-xr-x 5 vuser vgroup 4096 03-18 15:43 extmail.org
[root@Mail postfix]# ll /home/domains/extmail.org/
总计 24
drwxr-xr-x 3 vuser vgroup 4096 03-18 14:16 kangta
drwxr-xr-x 3 vuser vgroup 4096 03-18 15:43 lian
drwxr-xr-x 3 vuser vgroup 4096 03-18 14:14 postmaster
[root@Mail postfix]# ll /home/domains/extmail.org/kangta/
总计 8
drwxr-xr-x 9 vuser vgroup 4096 03-18 15:10 Maildir
=================================================================
测试SMTP
通过以下命令获得[email protected]的用户名及密码的BASE64编码:
perl -e 'use MIME::Base64; print encode_base64("postmaster\@extmail.org")'
cG9zdG1hc3RlckBleHRtYWlsLm9yZw==
perl -e 'use MIME::Base64; print encode_base64("extmail")'
ZXh0bWFpbA==
[root@Mail mail]# telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to Mail (127.0.0.1).
Escape character is '^]'.
220 mail.extmail.org ESMTP Postfix - by extmail.org
ehlo demo.domain.tld
250-mail.extmail.org
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
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.
[root@Mail mail]#
===============================================================
测试POP
[root@Mail mail]# telnet 127.0.0.1 110
Trying 127.0.0.1...
Connected to Mail (127.0.0.1).
Escape character is '^]'.
+OK Hello there.
user [email protected]
+OK Password required.
pass extmail
+OK logged in.
list
+OK POP3 clients that break here, they violate STD53.
1 6
2 739
3 735
4 770
5 701
6 693
7 739
8 735
.
quit
+OK Bye-bye.
Connection closed by foreign host.
[root@Mail mail]#
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
测试maildrop
[root@Mail mail]# maildrop -v
maildrop 2.0.4 Copyright 1998-2005 Double Precision, Inc.
GDBM extensions enabled.
Courier Authentication Library extension enabled. 支持courier-auth
Maildir quota extension enabled.
This program is distributed under the terms of the GNU General Public
License. See COPYING for additional information.
[root@Mail extmail.org]# echo test| maildrop -V 10 -d [email protected]
maildrop: authlib: groupid=1000
maildrop: authlib: userid=1000
maildrop: authlib: [email protected], home=/home/domains/extmail.org/postmaster, mail=/home/domains/extmail.org/postmaster/Maildir/
maildrop: Changing to /home/domains/extmail.org/postmaster
Message start at 0 bytes, envelope [email protected]
maildrop: Attempting .mailfilter
maildrop: Delivery complete.
*********************************************************************************************************
测试courier-auth
[root@Mail postfix]# /usr/sbin/authtest -s login [email protected] extmail
Authentication succeeded.
Authenticated: [email protected] (uid 1000, gid 1000)
Home Directory: /home/domains/extmail.org/postmaster
Maildir: /home/domains/extmail.org/postmaster/Maildir/
Quota: 104857600S
Encrypted Password: $1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0
Cleartext Password: extmail
Options: (none)
**************************************************************************************************************
测试sasl
[root@Mail postfix]# /usr/sbin/saslauthd -a shadow pam -d
saslauthd[7159] :main : num_procs : 5
saslauthd[7159] :main : mech_option: NULL
saslauthd[7159] :main : run_path : /var/run/saslauthd
saslauthd[7159] :main : auth_mech : shadow
saslauthd[7159] :main : could not lock pid lock file: /var/run/saslauthd/saslauthd.pid.lock
saslauthd[7159] :main : fcntl: Resource temporarily unavailable
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
测试postfix
[root@Mail postfix]# postconf -m
btree
cidr
environ
hash
ldap
mysql 支持mysql
nis
proxy
regexp
static
unix
[root@Mail postfix]# postconf -a
cyrus 支持courer-auth
dovecot
========================================================================
Mar 18 15:38:08 Mail postfix/smtpd[31796]: warning: SASL authentication failure: cannot connect to Courier authdaemond: Permission denied
Mar 18 15:38:08 Mail postfix/smtpd[31796]: warning: Mail[127.0.0.1]: SASL login authentication failed: generic failure
此类问题最多的是几个问题
/usr/lib/sasl2/smtpd.conf 配置问题 文件的权限问题
/var/spool/authdaemon 文件的权限问题
/etc/authlib/authdaemon 配置问题
关于很多日志报拒绝情况下,检查权限的问题,多数情况 是SELinux搞的鬼,将SELinux关闭,重新启动机器再看一切运行正常
连不上数据的问题 最好将默认的localhost改为127.0.0.1
=============================================================================
extmail 与extman web界面打开提示DBI连接数据库的问题,是因为缺少perl-DBD-MySQL包
提示 连接不上数据库是因为webman里面的数据库设置问题
没有那个邮件地址目录的,拒绝是因为权限的设置无法写入 比如drwxr-xr-x 5 vuser vgroup 4096 03-18 15:43 extmail.org
----------------------------------------------------------------------------------------------------------------------------------
temporary failure. Command output: /usr/bin/maildrop: Invalid home directory permissions - world writable. )
[root@Mail ~]# echo "test" | maildrop -V 10 -d [email protected]
maildrop: authlib: groupid=1000
maildrop: authlib: userid=1000
maildrop: authlib: [email protected], home=/home/domains/extmail.org/lian, mail=/home/domains/extmail.org/lian/Maildir/
maildrop: Changing to /home/domains/extmail.org/lian
maildrop: Invalid home directory permissions - world writable.
出现这样的问题是/home /domails文件的权限不能设高777 755恢复
================================================================================
打开extman 发现验证码图片显示 不出来
方法1:vim /var/www/extsuite/extman/webman.cf
SYS_CAPTCHA_ON = 1 修改为0 禁止图片显示
或者按网上说法
缺少perl-GD包,安装后问题消失
跟perl包
1.wget http://packages.sw.be/perl-GD/perl-GD-2.43-1.el5.rf.i386.rpm
2.rpm -ivh perl-GD-2.43-1.el5.rf.i386.rpm
##################################################################################################
e.打开extmail邮件系统的web页面加载很慢
经过分析,发现是由于页面加载时调用了extmail.net的rpc服务。
修改 /var/www/extsuite/extmail/html/plugins/rpc_init.js 文件,去除其中rpc的使用.
1.rpc_url_list = [
2.// "http://rpc-srv01.extmail.net/phprpc/rpc.php",
3.// "http://rpc-srv02.extmail.net/phprpc/rpc.php",
4.// "http://rpc-srv03.extmail.net/phprpc/rpc.php",
5.];
6.
7.rpc_plg_list = [
8.// "coolweather",
9.// "etnews",
10.// "chkupdate",
11.];
修改 /var/www/extsuite/extman/html/plugins/rpc_init.js 文件,去除其中rpc的使用.
1.rpc_url_list = [
2.// "http://rpc-srv01.extmail.net/phprpc/rpc.php",
3.// "http://rpc-srv02.extmail.net/phprpc/rpc.php",
4.// "http://rpc-srv03.extmail.net/phprpc/rpc.php",
5.];
修改后,再次打开extmail的Web页面,没有任何停顿的感觉,说明是之前的访问速度慢是由于程序调用extmail的rpc服务造成的
##############################################################################################
c.全部配置完毕后登陆Extmail时出现”Unix::Syslog not found”错误
给perl安装Unix::Syslog包
1.perl -MCPAN -e 'install Unix::Syslog'
###############################extman后台管理系统控制没有信息输出的解决方法###################
[root@KangTa daemon]# pwd
/var/www/extsuite/extman/daemon
[root@KangTa daemon]# ./cmdserver --daemon
loaded ok
Found an server instance pid=15259 is running, abort..
[root@KangTa daemon]# ps -eaf | grep 15259
root 15259 1 0 21:31 ? 00:00:00 /usr/bin/perl -w ./cmdserver --daemon
root 15485 10403 0 21:36 pts/1 00:00:00 grep 15259
[root@KangTa daemon]# kill 15259
###########################################################################################
配置使用nginx的web-extmail
虚拟主机代码:
server
{
listen 80;
server_name mail.test.com;
index index.html index.htm index.php index.cgi;
root /var/www/extsuite/extmail/html/;
location /extmail/cgi/ {
fastcgi_pass 127.0.0.1:8888;
fastcgi_index index.cgi;
fastcgi_param SCRIPT_FILENAME /var/www/extsuite/extmail/cgi/$fastcgi_script_name;
include fcgi.conf;
}
location /extmail/ {
alias /var/www/extsuite/extmail/html/;
}
location /extman/cgi/ {
fastcgi_pass 127.0.0.1:8888;
fastcgi_index index.cgi;
fastcgi_param SCRIPT_FILENAME /var/www/extsuite/extman/cgi/$fastcgi_script_name;
include fcgi.conf;
}
location /extman/ {
alias /var/www/extsuite/extman/html/;
}
log_format extmaillog '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_log /data/logs/extmaillog.log extmaillog;
}
让extmail支持fcgi,先先运行/var/www/extsuite/extmail/dispatch-init start
启动:
/var/www/extsuite/extmail/dispatch-init start start
写入开机自运行:
echo "/var/www/extsuite/extmail/dispatch-init start" >> /etc/rc.local
注意的问题:
1、如果没装perl的FCGI模块,会提示
“Can’t locate Ext/FCGI.pm in @INC (@INC contains:,等等。”
解决:cpan install FCGI
2 Useless use of a constant in void context at /usr/local/apache2/htdocs/extsuite/extmail/dispatch.fcgi line 344.”
解决: 修改dispatch-init中的ext目录路径以及系统用户和组,同时记得要将cgi目录的所属权给这里的用户和组
重启nginx后,查看你的extmail是否建立成功!
修改一下文件
[root@KangTa libs]# vim /var/www/extsuite/extmail/dispatch-init
#!/bin/sh
# example init script for dispatch.fcgi server
#
# chkconfig: 2345 80 20
# description: dispatch.fcgi - a remote fastcgi server for
# extmail FCGI support
#
# processname: dispatch.fcgi
# pidfile: /var/run/dispatch.pid
# startup parameters
MAXFORK=10
MINFORK=2
MAXREQS=25
TIMEOUT=360
PORT=8888 注意端口别冲突
SU_UID=vuser 注意用户名与组
SU_GID=vgroup
PATH=/bin:/usr/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/sbin
BASE=/var/www/extsuite/extmail 此处地址
BIN=dispatch.fcgi
PID_FILE=/$BASE/$BIN.pid
export PATH=$PATH
case "$1" in
'start')
if [ ! -f $PID_FILE ]; then
touch $PID_FILE
chown $SU_UID:$SU_GID $PID_FILE
else
PID=`cat $PID_FILE`;
kill -0 $PID
if [ "$?" -eq 0 ];then
echo "Pid of $PID is running, abort..."
exit 255
fi
fi
echo "Starting extmail FCGI server...";
nice -19 $BASE/$BIN --port=$PORT --maxserver=$MAXFORK --minspare=$MINFORK --server \
--host=127.0.0.1 --uid=$SU_UID --gid=$SU_GID --pid=$PID_FILE \
--request=$MAXREQS --timeout=$TIMEOUT --debug --log=/tmp/dispatch.fcgi.log
;;
以上出现执行错误
需要先安装FCGI
[root@KangTa daemon]# cpan install FCGI