【php精品源码栏目提醒】:以下是网学会员为您推荐的php精品源码-CyrusIMap的安装配置 - 基础科学,希望本篇文章对您学习有所帮助。
Cyrus IMAP 的安装 Cyrus IMAP 的官方安装文档在: 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/25 25/25 110/993 143/995 80/443 Incoming Outgoing POP3 IMAP WEB-MAIL / / / / / / / / / / ------------------------------------------------- Postfix IMP --------------- Cyrus-IMAP ------------------------------------------ Cyrus-SASL ------------------------------------------- saslauthd ------------------------------------------- PAM ------------------------------------------- pam_mysql -------------------------------------------------- MySQL --------------------------------------------------- 这个结构图是来自于下面链接: Postfix Cyrus-IMAP Cyrus-SASL MySQL IMP http://man.chinaunix.net/tech/Postfix_I.html 这个页面详细的介绍了整个 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 全称是:Pluggable Authentication Modules。
在当前的 CentOS 中都是用这个模块作各种认证通道。
具体可以 man 一下 pam。
PAM 的主要配置文件都集中在/etc/pam.d 目录里面,里面有多个文件,每个文件表示了一种服务的认证方法,例如:sshd,login。
管理员可以根据自己的需要定义出自己的服务的认证配置,详细的配置信息可以 manpam.d。
1.2. SASL 的简介 在对 PAM 做测试之前,需要一个 sasl 的工具集。
SASL 是一个用于认证处理的协议,全称是 Simple Authentication and Security Layer。
这个协议在 rfc4422 中定义,具体作用大概如下: SMTP LDAP XMPP Other protocols ... / / SASL abstraction layer / / EXTERNAL GSSAPI PLAIN Other mechanisms ... 从上面图可以看到,不同的应用通过 SASL 使用各种方法来进行用户认证。
SASL 的作用是为各种协议产生一个认证的抽象层,让用户登录的时候不用理会最终用户认证信息的出处。
一般情况下,当前的 centos 系统都会安装这套工具。
在我的系统中,对应的版本是:rootkernel pam_mysql-0.7RC1 rpm -ql cyrus-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 作为获取认证数据的机制。
rootkernel pam_mysql-0.7RC1 cat /etc/sysconfig/saslauthd Directory in which to place saslauthds listening socket pid file and so on. This directory must already exist.SOCKETDIR/var/run/saslauthd Mechanism to use when checking passwords. Run quotsaslauthd -vquot to get a list of which mechanism your installation was compiled with the ablity to use.MECHpam Additional flags to pass to saslauthd on the command line. See saslauthd8 for the list of accepted flags.FLAGS1.3. 使用 SASL 工具对 PAM 进行测试 我们可以用下面方法来对 sasl 和 pam 进行测试:rootkernel pam.d testsaslauthd -u root -p xxxx -s su0: OK quotSuccess.quotrootkernel pam.d testsaslauthd -u root -p xxxx -s sshd0: OK quotSuccess.quotrootkernel pam.d testsaslauthdtestsaslauthd: usage: testsaslauthd -u username -p password-r realm -s servicename-f socket path -R repeatnum 在上面例子中,xxxx 要修改为真正的密码。
1.4. 使用 MYSQL 作为 PAM 的数据源 我们还可以用 mysql 作为 PAM 存储用户数据的数据库。
如果使用这种方法,我们需要安装 pam_mysql。
可以在下面链接中获得: http://sourceforge.net/projects/pam-mysql/ 具体的安装方法可以看 INSTALL,具体的配置方法可以看里面的 README。
安装很简单,就是 configure 一下,然后执行 make,最后把生成的库拷贝到 pam 的库目录中: rootkernel pam_mysql-0.7RC1 cp .libs/pam_mysql.so /lib/security/ 下面是一个配置例子:rootkernel pam.d testsaslauthd -u cyrus -p test -s smtp0: OK quotSuccess.quotrootkernel pam.d cat smtpauth sufficient pam_mysql.so userroot passwdadmin hostlocalhost dbpostfix tableaccountuserusercolumnusername passwdcolumnpasswordauth sufficient pam_unix_auth.soaccount required pam_mysql.so userroot passwdadmin hostlocalhost dbpostfixtableaccountuser usercolumnusername passwdcolumnpasswordaccount sufficient pam_unix_acct.so smtp 中主要是定义了 mysql 的连接方式和对应的库表,字段。
具体可以看 READM 文件和 man pam.d。
根据上面的配置和测试,需要创建数据库 postfix,登录帐号密码是 root/admin,表是accountuser,列有:username,password。
创建用户信息: cyrus/test。
插入数据 SQL:INSERT INTO accountuserusername passwordVALUEcyrustest1.5. 相关的资料 http://cyrusimap.org/docs/cyrus-sasl/2.1.25/ http://sourceforge.net/projects/pam-mysql/files/sourcenavbar2. cyrus-imapd 的配置选项 在具体介绍如何安装 cyrus-imapd 之前,有必要分析一下 cyrus-imapd 的配置方法。
在这里并不想对 configure 中的通用参数做说明,只分析 cyrus-imapd 特定的一些配置选项。
在官方文档中也有对应的参数介绍,但是和最新版本似乎有不少不同: http://cyrusimap.org/docs/cyrus-imapd/2.2.13p1/install-compile.
php2.1. 可选特征 Optional Features2.1.1. --disable-option-checking ignore unrecognized --enable/--with options2.1.2. --disable-FEATURE do not include FEATURE same as --enable-FEATUREno2.1.3. --enable-FEATUREARG include FEATURE ARGyes2.1.4. --disable-sieve disable Sieve support sieve 是一个邮件过滤的语言,对应的 RFC 是 rfc5228: http://tools.ietf.org/html/rfc52282.1.5. --disable-pcre disable PCRE library2.1.6. --enable-afs Enable AFS with ptloader2.1.7. --enable-krb5afspts compile afskrb PTS module with krb5 support2.1.8. --disable-server disable compiling servers2.1.9. --enable-statickrb link Kerberos statically2.1.10. --enable-idled enable IMAP idled support2.1.11. --enable-nntp enable NNTP support2.1.12. --enable-murder enable IMAP Murder support2.1.13. --enable-replication enable replication support experimental2.1.14. --enable-cmulocal enable CMU-specific local support2.1.15. --enable-oldsievename enable the use of imap as the sieve service name2.1.16. --enable-netscapehack enable Netscape hack for the menu option in Communicator to Administrate Mail2.1.17. --enable-gssapiltDIRgt enable GSSAPI authentication yes2.2. 可选包 Optional Packages 在这里,我们主要关注的是用什么方法来获取认证信息。
2.2.1. --with-PACKAGEARG use PACKAGE ARGyes2.2.2. --without-PACKAGE do not use PACKAGE same as --with-PACKAGEno2.2.3. --with-extraidentSTRING use STRING as extra version information2.2.4. --with-cyrus-prefixDIR use DIR as cyrus server install directory 默认似乎是:/usr/cyrus,如果--with-service-path 设置,该参数被--with-service-path 取代。
2.2.5. --with-service-pathDIR use DIR as service install directory2.2.6. --with-cyrus-userUSERID use USERID cyrus userid2.2.7. --with-cyrus-groupGROUPID use GROUPID cyrus group2.2.8. --with-bdbDIR use Berkeley DB in DIR yes2.2.9. --with-bdb-libdirDIR Berkeley DB lib files are in DIR2.2.10. --with-bdb-incdirDIR Berkeley DB include files are in DIR2.2.11. --with-mysqlDIR use MySQL in DIR no2.2.12. --with-mysql-libdirDIR MySQL lib files are in DIR2.2.13. --with-mysql-incdirDIR MySQL include files are in DIR2.2.14. --with-pgsqlDIR use PostgreSQL in DIR no2.2.15. --with-pgsql-libdirDIR Pgsql lib files are in DIR2.2.16. --with-pgsql-incdirDIR Pgsql include files are in DIR2.2.17. --with-sqliteDIR use SQLite in DIR no2.2.18. --with-sqlite-libdirDIR SQLite lib files are in DIR2.2.19. --with-sqlite-incdirDIR SQLite include files are in DIR2.2.20. --with-lockMETHOD force use of METHOD for locking flock or fcntl2.2.21. --with-afs-libdirPATH use AFS libraries from PATH /usr/lib2.2.22. --with-afs-incdirPATH use AFS headers from PATH /usr/include2.2.23. --with-ldapDIR use LDAP in DIR experimental /usr/local2.2.24. --with-krbPATH use Kerberos from PATH Kerberos 验证的名字来自于古希腊神话中的守护地狱之王 Hades 的三头犬的名字,其实现过程恰恰用到了三台服务器进行,即验证服务器(AS)、票据凭证服务器(TGS)和数据服 称 。
务器(下文以 Bob 代 )2.2.25. --with-krbimplkthmit assume Kerberos 4 from KTH or MIT2.2.26. --with-krbdes use Kerberos DES implementation yes2.2.27. --with-opensslPATH use OpenSSL from PATH2.2.28. --with-egd-socketFILE Entropy Gathering Daemon socket pathname for systems without /dev/urandom2.2.29. --with-lib-subdirDIR Find libraries in DIR instead of lib2.2.30. --with-zlibPATH use zlib from PATH2.2.31. --with-zephyrPATH enable Zephyr notification installed on PATH2.2.32. --with-pidfilePATH pidfile in PATH /var/run/cyrus-master.pid2.2.33. --with-com_errPATH use com_err from path -- includes in PATH/include libs in PATH/lib and compile_et inPATH/bin2.2.34. --with-syslogfacilityFACILITY set the syslog facility to use default LOCAL62.2.35. --with-gss_implheimdalmitcybersafeseamauto choose specific GSSAPI implementation auto2.2.36. --with-saslDIR Compile with libsasl2 in ltDIRgt2.2.37. --with-staticsaslDIR Compile with staticly linked libsasl2 in ltDIRgt2.2.38. --with-perlPERL use PERL for perl2.2.39. --with-libwrapDIR use libwrap rooted in DIR yes2.2.40. --with-snmpDIR use ucdnet snmp rooted in DIR yes3. 安装 cyrus-sasl 由于在当前安装中选用 SASL,所以必须先安装这个包。
在安装之前,先检查当前系统中是否已经安装了该库,如果已经安装了就不用再安装:rootkernel cyrus-imapd-2.4.17 ldconfig -vgrep sasl libsasl2.so.3 -gt libsasl2.so.3.0.0 libsasl2.so.2 -gt libsasl2.so.2.0.22 libkdesasl.so.1 -gt libkdesasl.so.1.2.0 在我安装的 Linux 版本中已经安装了该库,所以我没安装最新版本的 cyrus-sasl。
我安装的库是:rootkernel cyrus-imapd-2.4.17 rpm -qf /usr/lib/sasl2/libsasldb.socyrus-sasl-2.1.22-5.el5_4.3 不过在这里,还是介绍一下 cyrus-sasl 的安装和使用方法。
下面是配置参数:rootkernel cyrus-sasl-2.1.26./configure --enable-anon --enable-plain --enable-login --disable-krb4 --disable-otp --disable-cram --disable-digest --with-saslauthd/var/run/saslauthd --with-pam/lib/security --with-dblibberkeley --with-bdb-libdir --with-bdb-incdir --with-openssl --with-plugindir/usr/local/lib/sasl2 安装方法:rootkernel cyrus-sasl-2.1.26makerootkernel cyrus-sasl-2.1.26 make installrootkernel cyrus-sasl-2.1.26 mkdir -p /var/run/saslauthdrootkernel cyrus-sasl-2.1.26 cd saslauthdrootkernel cyrus-sasl-2.1.26 make testsaslauthdrootkernel cyrus-sasl-2.1.26 cp testsaslauthd /usr/local/binrootkernel cyrus-sasl-2.1.26 echo /usr/local/lib/sasl2 gtgt /etc/ld.so.confrootkernel cyrus-sasl-2.1.26 ldconfig 建议在安装使用 SASL 之前, Cyrus-sasl 的
源码包中在 doc 目录下有详细的安装使用文档,过一遍目录中的文档。
在上面 configure 中,开启了各种认证的机制,其中在本文档中使用的认证方式是带有PAM 功能的 saslauthd 方式。
因此,下面两个选项是必须的:--with-saslauthd/var/run/saslauthd --with-pam/lib/security4. cyrus-imapd 的安装步骤 具体的安装步骤可以查阅下面的页面: http://cyrusimap.org/docs/cyrus-imapd/2.2.13p1/install-configure.
php4.1. 创建系统用户 Cyrus-imapd 的运行需要一个用户一个组:rootkernel useradd cyrusrootkernel groupadd mail 很多时候,系统默认会存在组 mail。
在创建 mail 组前请查看:rootkernel grep mail /etc/groupmail:x:12:mailmailnull:x:47: 当系统存在 mail 组的时候,会报下面错误:rootkernel groupadd mailgroupadd: group mail exists4.2. 编译配置rootkernel cyrus-imapd-2.4.17 ./configure --prefix/opt/cyrus --with-cyrus-usercyrus --with-cyrus-groupmail --with-openssl --with-sasl 如果 sasl 安装在/usr/local 目录中,请把—with-sasl 设置为:--with-sasl/usr/local。
由于我使用的 sasl 是系统已经安装的,所以不需要指定相应的路径。
4.3. 编译安装rootkernel cyrus-imapd-2.4.17 makerootkernel cyrus-imapd-2.4.17 make install 在安装完成后,/opt/cyrus/bin 目录中是一些测试和管理工具,服务器端的功能据保存在/usr/cyrus 目录中。
如果在 configure 中使用参数--with-cyrus-prefix 可以修改服务器端命令的目录位置。
如果使用--with-service-path 参数--with-cyrus-prefix 无效。
下面是安装后的文件: /opt/cyrus/bin/imtest /opt/cyrus/bin/cyradm /opt/cyrus/bin/mupdatetest /opt/cyrus/bin/sieveshell /opt/cyrus/bin/pop3test /opt/cyrus/bin/sivtest /opt/cyrus/bin/synctest /opt/cyrus/bin/nntptest /opt/cyrus/bin/smtptest /opt/cyrus/bin/lmtptest /opt/cyrus/bin/installsieve /usr/cyrus/bin/notifyd /usr/cyrus/bin/squatter /usr/cyrus/bin/proxyd /usr/cyrus/bin/cyr_sequence /usr/cyrus/bin/cyr_synclog /usr/cyrus/bin/smmapd /usr/cyrus/bin/pop3proxyd /usr/cyrus/bin/reconstruct /usr/cyrus/bin/mbexamine /usr/cyrus/bin/quota /usr/cyrus/bin/cyrdump /usr/cyrus/bin/sieved /usr/cyrus/bin/arbitron /usr/cyrus/bin/lmt.
上一篇:
软件的含义1.10
下一篇:
科研管理杂志简介