CyrusIMap的安装配置.docx
- 文档编号:30489455
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:30
- 大小:29.35KB
CyrusIMap的安装配置.docx
《CyrusIMap的安装配置.docx》由会员分享,可在线阅读,更多相关《CyrusIMap的安装配置.docx(30页珍藏版)》请在冰豆网上搜索。
CyrusIMap的安装配置
CyrusIMAP的安装
CyrusIMAP的官方安装文档在:
http:
//cyrusimap.org/docs/cyrus-imapd/2.2.13p1/install.php
但是经过测试,发现文档和真正的最新cyrus-imapd版本不能完全对得上号。
我们可以在这里下载最新的cyrus-imapd版本:
http:
//cyrusimap.org/index.php
本文档中,我们使用了下面两个包:
●cyrus-sasl-2.1.26.tar.gz
●cyrus-imapd-2.4.17.tar.gz
cyrus-imapd是一个可以使用SASL来获得认证帮助的IMAP,POP3服务器软件。
SASL是cyrus-imapd对用户认证的一种方法,但是并不是唯一的方法。
我们通过调用configure–help命令可以看到有多种认证方法。
详细的认证方法可以查看下面链接:
http:
//cyrusimap.org/docs/cyrus-imapd/2.2.13p1/install-auth.php
在这里我们使用SASL方法来为cyrus-imapd提供认证服务。
下图是我们打算安装的整个邮件系统的结构图:
+---------------------------------------------------+
||
|25/2525/25110/993143/99580/443|
|IncomingOutgoingPOP3IMAPWEB-MAIL|
|/\/\/\/\/\|
||||||||||||
|\/\/\/\/\/|
+-------------------+---------------+---------------+
|Postfix||IMP|
||+---------------+
||Cyrus-IMAP|
|+-----------+-------------------------------+
||Cyrus-SASL|
|+-------------------------------------------+
||saslauthd|
|+-------------------------------------------+
||PAM|
|+-------------------------------------------+
||pam_mysql|
+-------+-------------------------------------------+
|MySQL|
+---------------------------------------------------+
这个结构图是来自于下面链接:
Postfix+Cyrus-IMAP+Cyrus-SASL+MySQL+IMP
这个页面详细的介绍了整个webmail邮件系统的安装方法,但是编写的年代有些久远,但是有非常好的参考价值。
乍看下去,上面的图有些复杂,下面做一些简单的介绍:
1.本系统的主要功能是:
使用postfix实现smtp的功能;
使用cyrus-imapd实现pop3和imapd的功能;
使用IMP来实现Webmail的功能;
2.postfix,cyrus,IMP的认证方法都使用Cyrus-sasl来实现;SASL是一个不同通信协议的认证管理层,能把认证的接口和具体的实现分开;Cyrus-sasl是SASL的一个主要实现;
3.Cyrus-sasl有多种的认证实现机制saslauthd是其中的一种;
使用saslauthd的原因是因为cyrus-imapd是用cyrus用户来启动的,没权限访问系统的用户密码文件:
/etc/shadow。
因此需要使用saslauthd这个服务来获取相关的信息。
Saslauthd本身用root来启动,有访问/etc/shadow的权限,而且saslauthd提供了一个UNIX本地套接字的接口,可以让其他非root用户访问。
4.Linux的本地用户认证又可以使用PAM来做认证,所以saslauthd直接使用了PAM作为认证的手段,而PAM也有多种认证数据的存储方法,其中一种方法是pam_mysql;
5.既然使用到pam_mysql这个模块,最终认证数据自然保存在pam_mysql中。
1.PAM与SASL的简单介绍
1.1.PAM的简介
PAM全称是:
PluggableAuthenticationModules。
在当前的CentOS中都是用这个模块作各种认证通道。
具体可以man一下pam。
PAM的主要配置文件都集中在/etc/pam.d目录里面,里面有多个文件,每个文件表示了一种服务的认证方法,例如:
sshd,login。
管理员可以根据自己的需要定义出自己的服务的认证配置,详细的配置信息可以manpam.d。
1.2.SASL的简介
在对PAM做测试之前,需要一个sasl的工具集。
SASL是一个用于认证处理的协议,全称是SimpleAuthenticationandSecurityLayer。
这个协议在rfc4422中定义,具体作用大概如下:
SMTPLDAPXMPPOtherprotocols...
\||/
\||/
SASLabstractionlayer
/||\
/||\
EXTERNALGSSAPIPLAINOthermechanisms...
从上面图可以看到,不同的应用通过SASL使用各种方法来进行用户认证。
SASL的作用是为各种协议产生一个认证的抽象层,让用户登录的时候不用理会最终用户认证信息的出处。
一般情况下,当前的centos系统都会安装这套工具。
在我的系统中,对应的版本是:
[root@kernelpam_mysql-0.7RC1]#rpm-qlcyrus-sasl-2.1.22-5.el5_4.3
/etc/rc.d/init.d/saslauthd
/etc/sysconfig/saslauthd
/usr/lib/sasl2
/usr/lib/sasl2/libsasldb.la
/usr/lib/sasl2/libsasldb.so
/usr/lib/sasl2/libsasldb.so.2
/usr/lib/sasl2/libsasldb.so.2.0.22
/usr/sbin/dbconverter-2
/usr/sbin/pluginviewer
/usr/sbin/saslauthd
/usr/sbin/sasldblistusers2
/usr/sbin/saslpasswd2
/usr/sbin/testsaslauthd
/usr/share/doc/cyrus-sasl-2.1.22
/usr/share/doc/cyrus-sasl-2.1.22/LDAP_SASLAUTHD
/usr/share/man/man8/pluginviewer.8.gz
/usr/share/man/man8/saslauthd.8.gz
/usr/share/man/man8/sasldblistusers2.8.gz
/usr/share/man/man8/saslpasswd2.8.gz
/var/run/saslauthd
下面是SASL的配置文件,这个配置文件说明,SASL使用PAM作为获取认证数据的机制。
[root@kernelpam_mysql-0.7RC1]#cat/etc/sysconfig/saslauthd
#Directoryinwhichtoplacesaslauthd'slisteningsocket,pidfile,andso
#on.Thisdirectorymustalreadyexist.
SOCKETDIR=/var/run/saslauthd
#Mechanismtousewhencheckingpasswords.Run"saslauthd-v"togetalist
#ofwhichmechanismyourinstallationwascompiledwiththeablitytouse.
MECH=pam
#Additionalflagstopasstosaslauthdonthecommandline.Seesaslauthd(8)
#forthelistofacceptedflags.
FLAGS=
1.3.使用SASL工具对PAM进行测试
我们可以用下面方法来对sasl和pam进行测试:
[root@kernelpam.d]#testsaslauthd-uroot-pxxxx-ssu
0:
OK"Success."
[root@kernelpam.d]#testsaslauthd-uroot-pxxxx-ssshd
0:
OK"Success."
[root@kernelpam.d]#testsaslauthd
testsaslauthd:
usage:
testsaslauthd-uusername-ppassword
[-rrealm][-sservicename]
[-fsocketpath][-Rrepeatnum]
在上面例子中,xxxx要修改为真正的密码。
1.4.使用MYSQL作为PAM的数据源
我们还可以用mysql作为PAM存储用户数据的数据库。
如果使用这种方法,我们需要安装pam_mysql。
可以在下面链接中获得:
具体的安装方法可以看INSTALL,具体的配置方法可以看里面的README。
安装很简单,就是configure一下,然后执行make,最后把生成的库拷贝到pam的库目录中:
[root@kernelpam_mysql-0.7RC1]#cp.libs/pam_mysql.so/lib/security/
下面是一个配置例子:
[root@kernelpam.d]#testsaslauthd-ucyrus-ptest-ssmtp
0:
OK"Success."
[root@kernelpam.d]#catsmtp
authsufficientpam_mysql.souser=rootpasswd=adminhost=localhostdb=postfixtable=accountuserusercolumn=usernamepasswdcolumn=password
authsufficientpam_unix_auth.so
accountrequiredpam_mysql.souser=rootpasswd=adminhost=localhostdb=postfixtable=accountuserusercolumn=usernamepasswdcolumn=password
accountsufficientpam_unix_acct.so
smtp中主要是定义了mysql的连接方式和对应的库表,字段。
具体可以看READM文件和manpam.d。
根据上面的配置和测试,需要创建数据库postfix,登录帐号密码是root/admin,表是accountuser,列有:
username,password。
创建用户信息:
cyrus/test。
插入数据SQL:
INSERTINTOaccountuser(username,password)VALUE('cyrus','test')
1.5.相关的资料
●http:
//cyrusimap.org/docs/cyrus-sasl/2.1.25/
●
2.cyrus-imapd的配置选项
在具体介绍如何安装cyrus-imapd之前,有必要分析一下cyrus-imapd的配置方法。
在这里并不想对configure中的通用参数做说明,只分析cyrus-imapd特定的一些配置选项。
在官方文档中也有对应的参数介绍,但是和最新版本似乎有不少不同:
http:
//cyrusimap.org/docs/cyrus-imapd/2.2.13p1/install-compile.php
2.1.可选特征OptionalFeatures
2.1.1.--disable-option-checking
ignoreunrecognized--enable/--withoptions
2.1.2.--disable-FEATURE
donotincludeFEATURE(sameas--enable-FEATURE=no)
2.1.3.--enable-FEATURE[=ARG]
includeFEATURE[ARG=yes]
2.1.4.--disable-sieve
disableSievesupport
sieve是一个邮件过滤的语言,对应的RFC是rfc5228:
http:
//tools.ietf.org/html/rfc5228
2.1.5.--disable-pcre
disablePCRElibrary
2.1.6.--enable-afs
EnableAFSwithptloader
2.1.7.--enable-krb5afspts
compileafskrbPTSmodulewithkrb5support
2.1.8.--disable-server
disablecompilingservers
2.1.9.--enable-statickrb
linkKerberosstatically
2.1.10.--enable-idled
enableIMAPidledsupport
2.1.11.--enable-nntp
enableNNTPsupport
2.1.12.--enable-murder
enableIMAPMurdersupport
2.1.13.--enable-replication
enablereplicationsupport(experimental)
2.1.14.--enable-cmulocal
enableCMU-specificlocalsupport
2.1.15.--enable-oldsievename
enabletheuseof'imap'asthesieveservicename
2.1.16.--enable-netscapehack
enableNetscapehackforthemenuoptioninCommunicatortoAdministrateMail
2.1.17.--enable-gssapi=
enableGSSAPIauthentication[yes]
2.2.可选包OptionalPackages
在这里,我们主要关注的是用什么方法来获取认证信息。
2.2.1.--with-PACKAGE[=ARG]
usePACKAGE[ARG=yes]
2.2.2.--without-PACKAGE
donotusePACKAGE(sameas--with-PACKAGE=no)
2.2.3.--with-extraident=STRING
useSTRINGasextraversioninformation
2.2.4.--with-cyrus-prefix=DIR
useDIRascyrusserverinstalldirectory
默认似乎是:
/usr/cyrus,如果--with-service-path设置,该参数被--with-service-path取代。
2.2.5.--with-service-path=DIR
useDIRasserviceinstalldirectory
2.2.6.--with-cyrus-user=USERID
useUSERIDcyrususerid
2.2.7.--with-cyrus-group=GROUPID
useGROUPIDcyrusgroup
2.2.8.--with-bdb=DIR
useBerkeleyDB(inDIR)[yes]
2.2.9.--with-bdb-libdir=DIR
BerkeleyDBlibfilesareinDIR
2.2.10.--with-bdb-incdir=DIR
BerkeleyDBincludefilesareinDIR
2.2.11.--with-mysql=DIR
useMySQL(inDIR)[no]
2.2.12.--with-mysql-libdir=DIR
MySQLlibfilesareinDIR
2.2.13.--with-mysql-incdir=DIR
MySQLincludefilesareinDIR
2.2.14.--with-pgsql=DIR
usePostgreSQL(inDIR)[no]
2.2.15.--with-pgsql-libdir=DIR
PgsqllibfilesareinDIR
2.2.16.--with-pgsql-incdir=DIR
PgsqlincludefilesareinDIR
2.2.17.--with-sqlite=DIR
useSQLite(inDIR)[no]
2.2.18.--with-sqlite-libdir=DIR
SQLitelibfilesareinDIR
2.2.19.--with-sqlite-incdir=DIR
SQLiteincludefilesareinDIR
2.2.20.--with-lock=METHOD
forceuseofMETHODforlocking(flockorfcntl)
2.2.21.--with-afs-libdir=PATH
useAFSlibrariesfromPATH[/usr/lib]
2.2.22.--with-afs-incdir=PATH
useAFSheadersfromPATH[/usr/include]
2.2.23.--with-ldap=DIR
useLDAP(inDIR)(experimental)/usr/local
2.2.24.--with-krb=PATH
useKerberosfromPATH
Kerberos验证的名字来自于古希腊神话中的守护地狱之王Hades的三头犬的名字,其实现过程恰恰用到了三台服务器进行,即验证服务器(AS)、票据凭证服务器(TGS)和数据服务器(下文以Bob代称)。
2.2.25.--with-krbimpl=\kth|mit\
assumeKerberos4fromKTHorMIT
2.2.26.--with-krbdes
useKerberosDESimplementation[yes]
2.2.27.--with-openssl=PATH
useOpenSSLfromPATH
2.2.28.--with-egd-socket=FILE
EntropyGatheringDaemonsocketpathnameforsystemswithout/dev/urandom
2.2.29.--with-lib-subdir=DIR
FindlibrariesinDIRinsteadoflib
2.2.30.--with-zlib=PATH
usezlibfromPATH
2.2.31.--with-zephyr=PATH
enableZephyrnotification(installedonPATH)
2.2.32.--with-pidfile=PATH
pidfileinPATH(/var/run/cyrus-master.pid)
2.2.33.--with-com_err=PATH
usecom_errfrompath--includesinPATH/include,libsinPATH/lib,andcompile_etinPATH/bin
2.2.34.--with-syslogfacility=FACILITY
setthesyslogfacilitytouse(defaultLOCAL6)
2.2.35.--with-gss_impl={heimdal|mit|cybersafe|seam|auto}
choosespecificGSSAPIimplementation[[auto]]
2.2.36.--with-sasl=DIR
Compilewithlibsasl2in
2.2.37.--with-staticsasl=DIR
Compilewithstaticlylinkedlibsasl2in
2.2.38.--with-perl=PERL
usePERLforperl
2.2.39.--with-libwrap=DIR
uselibwrap(rootedinDIR)yes
2.2.40.--with-snmp=DIR
useucd|netsnmp(rootedinDIR)yes
3.安装cyrus-sasl
由于在当前安装中选用SASL,所以必须先安装这个包。
在安装之前,先检查当前系统中是否已经安装了该库,如果已经安装了就不用再安装:
[root@kernelcyrus-imapd-2.4.17]#ldconfig-v|grepsasl
libsasl2.so.3->libsasl2.so.3.0.0
libsasl2.so.2->libsasl2.so.2.0.22
libkdesasl.so.1->libkdesasl.so.1.2.0
在我安装的Linux版本中已经安装了该库,所以我没安装最新版本的cyru
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CyrusIMap 安装 配置