接上一篇Extmail博文继续 https://www.aolens.cn/?p=1018

3.3 postfix开启基于cyrus-sasl的认证

查看sasl有关的安装包

[root@mail ~]# rpm -qa |grep sasl

cyrus-sasl-md5-2.1.23-15.el6_6.2.x86_64

cyrus-sasl-2.1.23-15.el6_6.2.x86_64

cyrus-sasl-plain-2.1.23-15.el6_6.2.x86_64

cyrus-sasl-lib-2.1.23-15.el6_6.2.x86_64

cyrus-sasl-gssapi-2.1.23-15.el6_6.2.x86_64

cyrus-sasl-devel-2.1.23-15.el6_6.2.x86_64

3.3.1

postfix和sasl结合,编辑postfix配置文件

[root@mail ~]# vim /etc/postfix/main.cf
 
#添加一下配置
 
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_banner = Welcome to our $myhostname SMTP
 
[root@mail ~]# service postfix restart
 
关闭 postfix:                                             [确定]
 
启动 postfix:                                             [确定]
 
[root@mail ~]# telnet 127.0.0.1 25
 
Trying 127.0.0.1...
 
Connected to 127.0.0.1.
 
Escape character is '^]'.
 
220 Welcome to our mail.aolens.cn ESMTP,Warning: Version not Available!
 
ehlo mail.aolens.cn
 
250-mail.aolens.cn
 
250-PIPELINING
 
250-SIZE 10240000
 
250-VRFY
 
250-ETRN
 
250-AUTH CRAM-MD5 DIGEST-MD5 PLAIN LOGIN GSSAPI
 
250-AUTH=CRAM-MD5 DIGEST-MD5 PLAIN LOGIN GSSAPI
 
250-ENHANCEDSTATUSCODES
 
250-8BITMIME
 
250 DSN

3.3.2 sasl配置

[root@mail ~]# service saslauthd restart
 
停止 saslauthd:                                           [确定]
 
正在启动 saslauthd:                                       [确定]
 
[root@mail ~]# chkconfig --add saslauthd
 
[root@mail ~]# chkconfig saslauthd on

3.4  安装Courier authentication library

下载地址:http://www.courier-mta.org/download.html#authlib

[root@mail ~]# tar jxf courier-authlib-0.66.4.tar.bz2 -C /usr/local/src/
 
[root@mail ~]# cd /usr/local/src/courier-authlib-0.66.4/
 
[root@mail /usr/local/src/courier-authlib-0.66.4]# ./configure \
 
--prefix=/usr/local/courier-authlib \
 
--sysconfdir=/etc \
 
--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

报错:

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

https://sourceforge.net/projects/courier/files/courier-unicode/1.2/courier-unicode-1.2.tar.bz2/download

[root@mail ~]# tar jxf courier-unicode-1.2.tar.bz2
 
[root@mail ~]# cd courier-unicode-1.2
 
[root@mail ~/courier-unicode-1.2]# ./configure
 
[root@mail ~/courier-unicode-1.2]# make && make install && echo 1

再次编译courier-authlib就好了

3.4.2 配置courier-authlib

[root@mail /usr/local/src/courier-authlib-0.66.4]# chmod -R 755 /usr/local/courier-authlib/var/spool/authdaemon
 
[root@mail /usr/local/src/courier-authlib-0.66.4]# cp /etc/authdaemonrc.dist /etc/authdaemonrc
 
[root@mail /usr/local/src/courier-authlib-0.66.4]# cp /etc/authmysqlrc.dist /etc/authmysqlrc
 
[root@mail /usr/local/src/courier-authlib-0.66.4]# vim /etc/authdaemonrc
 
#authmodulelist="authuserdb authpwd authshadow authmysql authcustom authpipe”
 
#authmodulelistorig="authuserdb authpwd authshadow authmysql authcustom authpipe"
 
authmodulelist="authmysql"
 
authmodulelistorig="authmysql"
 
MYSQL_SERVER        localhost
 
MYSQL_USERNAME      root
 
MYSQL_PASSWORD      aolens
 
MYSQL_SOCKET      /var/lib/mysql/mysql.sock
 
MYSQL_PORT      3306
 
MYSQL_DATABASE      extmail
 
MYSQL_USER_TABLE    mailbox
 
MYSQL_CRYPT_PWFIELD password
 
DEFAULT_DOMAIN        aolens.cn
 
MYSQL_UID_FIELD     '2525'
 
MYSQL_GID_FIELD     '2525'
 
MYSQL_LOGIN_FIELD   username
 
MYSQL_HOME_FIELD    concat('/var/mailbox/',homedir)
 
MYSQL_MAILDIR_FIELD   concat('/var/mailbox/',maildir)
 
 
 
[root@mail /usr/lib64/sasl2]# mkdir -pv /var/mailbox
 
mkdir: 已创建目录 "/var/mailbox"
 
[root@mail /usr/lib64/sasl2]# chown -R postfix.postfix /var/mailbox

为courier-authlib创建启动脚本

[root@mail /usr/local/src/courier-authlib-0.66.4]# cp courier-authlib.sysvinit /etc/init.d/courier-authlib
 
[root@mail /usr/local/src/courier-authlib-0.66.4]# chmod +x /etc/init.d/courier-authlib
 
[root@mail /usr/local/src/courier-authlib-0.66.4]# chkconfig --add courier-authlib
 
[root@mail /usr/local/src/courier-authlib-0.66.4]# chkconfig courier-authlib on
 
[root@mail /usr/local/src/courier-authlib-0.66.4]# echo "/usr/local/courier-authlib/lib/courier-authlib/" >> /etc/ld.so.conf.d/courier-authlib.conf
 
[root@mail /usr/local/src/courier-authlib-0.66.4]# ldconfig
 
[root@mail /usr/local/src/courier-authlib-0.66.4]# service courier-authlib startStarting Courier authentication services: authdaemond

3.4.3配置smtp以及虚拟用户的相关

创建smtpd.conf

pwcheck_method: authdaemond
 
log_level: 3
 
mech_list: PLAIN LOGIN
 
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket

编辑main.cf

##postfix支持SMTP##
 
broken_sasl_auth_clients = yes
 
smtpd_client_restrictions = permit_sasl_authenticated
 
smtpd_sasl_security_options = noanonymous
 
smtpd_sasl_auth_enable = yes
 
smtpd_sasl_local_domain = $myhostname
 
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
 
##postfix支持虚拟用户##
 
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

3.5 导入数据库

使用extman源码目录下docs中的extmail.sql和init.sql建立数据库:

下载extmail 和extman

http://7xivyw.com1.z0.glb.clouddn.com/extmail-1.2.tar.gz

http://7xivyw.com1.z0.glb.clouddn.com/extman-1.1.tar.gz

[root@mail ~/extman-1.1/docs]# cp mysql_virtual_* /etc/postfix/

创建数据库

[root@mail ~/extman-1.1/docs]# mysql -uroot -p < extmail.sql
 
[root@mail ~/extman-1.1/docs]# mysql -uroot -p < init.sql
 
[root@mail ~/extman-1.1/docs]# service postfix restart
 
关闭 postfix:                                             [确定]
 
启动 postfix:                                             [确定]

3.6 配置dovecot

[root@mail ~/extman-1.1/docs]# vim /etc/dovecot/conf.d/10-mail.conf
 
#添加
 
mail_location = maildir:/var/mailbox/%d/%n/Maildir
 
[root@mail ~/extman-1.1/docs]# vim /etc/postfix/main.cf
 
#添加
 
home_mailbox = Maildir/
 
[root@mail /etc/dovecot/conf.d]# cp  auth-sql.conf.ext auth-sql.conf
 
[root@mail /etc/dovecot/conf.d]# vim auth-sql.conf
 
#修改
 
passdb {
 
driver = sql
 
#args = /etc/dovecot/dovecot-sql.conf.ext
 
args = /etc/dovecot/dovecot-sql.conf
 
}
 
userdb {
 
driver = sql
 
#args = /etc/dovecot/dovecot-sql.conf.ext
 
args = /etc/dovecot/dovecot-sql.conf
 
}

创建dovecot-mysql.conf

[root@mail /etc/dovecot/conf.d]# vim /etc/dovecot/dovecot-mysql.conf
 
driver = mysql
 
connect = host=localhost dbname=extmail user=root password=aolens
 
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'
 
[root@mail /etc/dovecot]# service dovecot start
 
正在启动 Dovecot Imap:                                    [确定]
 
[root@mail /etc/dovecot]# chkconfig dovecot on

3.7 安装Extmail

[root@mail ~]# tar zxf extmail-1.2.tar.gz
 
[root@mail ~]# cp -a extmail-1.2 /var/www/extsuite/extmail
 
[root@mail ~]# cd /var/www/extsuite/extmail
 
[root@mail /var/www/extsuite/extmail]# cp webmail.cf.default webmail.cf

3.7.2 修改主配置文件

SYS_MESSAGE_SIZE_LIMIT = 5242880   #用户可以发送的最大邮件
 
SYS_USER_LANG = zh_CN   #语言选择
 
SYS_MAILDIR_BASE =  /var/mailbox #邮件存放位置
 
SYS_MYSQL_USER = root   #数据库配置
 
SYS_MYSQL_PASS = aolens
 
SYS_MYSQL_DB = extmail
 
SYS_MYSQL_HOST = localhost
 
SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
 
SYS_AUTHLIB_SOCKET = /usr/local/courier-authlib/var/spool/authdaemon/socket

3.8安装extman

[root@mail ~]# cp -a extman-1.1 /var/www/extsuite/extman
 
[root@mail /var/www/extsuite/extman]# cp webman.cf.default webman.cf
 
[root@mail /var/www/extsuite/extman]# chown -R postfix.postfix /var/www/extsuite/extman/cgi
 
[root@mail /var/www/extsuite/extman]# chown -R postfix.postfix /var/www/extsuite/extmail/cgi
 
为extman创建临时目录
 
[root@mail /var/www/extsuite/extman]# mkdir /tmp/extman &&chown -R postfix.postfix /tmp/extman
 
[root@mail /var/www/extsuite/extman]# vim webman.cf
 
SYS_CAPTCHA_ON = 0   #修改1为0 验证码功能
 
[root@mail /var/www/extsuite/extman]# service postfix restart
 
关闭 postfix:                                             [确定]
 
启动 postfix:                                             [确定]
 
[root@mail /var/www/extsuite/extman]# service dovecot restart
 
停止 Dovecot Imap:                                        [确定]
 
正在启动 Dovecot Imap:                                    [确定]
 
[root@mail /var/www/extsuite/extman]# service saslauthd restart
 
停止 saslauthd:                                           [确定]
 
正在启动 saslauthd:                                       [确定]

3.9测试虚拟用户

[root@mail ~]# /usr/local/courier-authlib/sbin/authtest -s login [email protected] extmail
 
Authentication succeeded.
 
Authenticated: [email protected]  (uid 2525, gid 2525)
 
Home Directory: /var/mailbox/extmail.org/postmaster
 
Maildir: /var/mailbox/extmail.org/postmaster/Maildir/
 
Quota: (none)
 
Encrypted Password: $1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0
 
Cleartext Password: extmail
Options: (none)

[email protected]时init.sql里自带的

4 安装perl依赖环境

extmail将会用到perl的Unix::syslogd功能,您可以去http://search.cpan.org搜索下载原码包进行安装。

[root@mail ~]# tar zxf Unix-Syslog-1.0.tar.gz -C /usr/local/src/
 
[root@mail ~]# cd /usr/local/src/Unix-Syslog-1.0/
 
[root@mail /usr/local/src/Unix-Syslog-1.0]# perl Makefile.PL
 
[root@mail /usr/local/src/Unix-Syslog-1.0]# make && make install

4.2 配置apache虚拟主机

[root@mail ~]# vim /etc/httpd/conf/httpd.conf
 
User postfix
 
Group postfix
 

 
ServerName mail.aolens.com
 
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
 

 
[root@mail ~]# service httpd restart

访问mail.aolens.cn

选择登陆邮箱管理:默认的账号密码是:[email protected]   extmail*123*

添加域,添加用户

使用普通用户登录

报错:

Can't chdir to /var/mailbox/aolens.cn/aolens/Maildir/, No such file or directory

[/shell][root@mail /var/www/extsuite]# vim /var/www/extsuite/extman/webman.cf

SYS_MAILDIR_BASE = /var/mailbox

SYS_MYSQL_USER = root

SYS_MYSQL_PASS = aolens

SYS_MYSQL_DB = extmail

SYS_MYSQL_HOST = localhost

SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock[/shell]

就是因为webman.cf没有设置导致创建用户后没有自动创建用户邮件存放路径。

不启动cmdserver 的话系统页面会出现Connection refused

[root@mail /var/www/extsuite/extman/daemon]# ./cmdserver -d

loaded ok

现在尝试发送邮件:

[email protected] —> [email protected]  邮件发送成功

[email protected] —> [email protected] 发送不成功

报错:

mail postfix/smtpd[6525]: NOQUEUE: reject: RCPT from localhost[127.0.0.1]: 550 5.1.1 : Recipient address rejected: User unknown in local recipient table; from= to= proto=ESMTP helo=

修改main.cf

mydestination = $myhostname

邮件发送成功!