开源项目在中小云计算平台的应用-1-开源项目在中小云计算平台的应用开源项目在中小云计算平台的应用开源项目在中小云计算平台的应用开源项目在中小云计算平台的应用2012.4汤文志赵杰摘要:本文着重整合探讨开放源代码项目在中小云计算平台方面的一些典型应用,包括Email邮件系统,Proxy反向代理加速,Cache基于内存数据库的缓存系统,LoadBalence应用负载均衡,CallCenter纯软交换呼叫中心,Mornitor主机和应用监控系统,把这些分散的独立的系统,构建组合在一起形成能够有效提高生产力的基础运营平台,为推动开源软件在中小企业配套应用提供一种探讨和尝试,本文探讨范围只限在应用开源项目,不包括二次商业开发范畴。关键词:开放源代码、中小企业、互联网应用、基础平台、定制开发EMAIL、WEBCACHE、LOADBALANCE、MONITOR、SIP、CALLCENTER名词解释:开源软件,即开放源代码软件(英语:Opensourcesoftware,英文缩写:OSS),就是在GNU通用公共许可证(GPL)下发布的软件,以保障软件用户自由使用及接触源代码的权利。这同时也保障了用户自行修改、复制以及再分发的权利。一些经过OpenSourceInitiative组织通过批准的开源协议许可证类型:BSDBSDBSDBSD:自由软件(开源软件的一个子集)中使用最广泛的许可协议之一。允许专有二次开发不开源。MITMITMITMIT:MIT是和BSD一样宽范的许可协议,作者只想保留版权,而无任何其他了限制。允许专有二次开发不开源。GPLGPLGPLGPL:GNUGeneralPublicLicense,简称GNUGPL或GPL,是一个广泛被使用的自由软件许可证条款,二次专有开发必须遵循GPL,不允许单独发行二进制产品。LGPLLGPLLGPLLGPL:GNU宽通用公共许可协议(英语:GNULesserGeneralPublicLicense,一般简称LGPL)是改自GPL的另一个版本,其目的是为了应用于一些软件函式库,二次专有开发必须遵循LGPL,二进制发布只能采用函数库打包。ApacheApacheApacheApacheLicenceLicenceLicenceLicence2.02.02.02.0:ApacheLicence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,允许专有二次开发不开源.综上所述企业采用开放源代码项目作为公司生产系统的运营平台,应该有选择的根据订制的需求和再次发布的要求来选择不同的开源项目进行搭建。比如如果搭建的应用平台软件属于二次销售的产品一部分则应尽量选择允许二次专有开发并可以进行二进制发布的协议授权的开源项目。开源项目在中小云计算平台的应用-2-前言:开放源代码项目为中小企业快速搭建运营平台已经成为普遍的选择,在降低TCO总拥有成本同时,提供了很高的可订制扩展性。互联网各种云服务目前很大一部分流量来自于LAMP(这是一组开源项目的缩写:Linux一种开源操作系统,Apache一种开源互联网服务器,Mysql一种开源数据库,Php一种开源跨平台开发语言)技术支持的应用。本文结合在作者所在公司远程心电监护云健康服务平台的搭建和运维过程所实施的各个开源平台项目经验为更多中小企业实施开源项目集成整合提供一定的指引。一、邮件系统1.1邮件系统应用情况介绍Mailbox(Maildir)SlockdAmavisd-newDspamSpamAssassinCourier-IMAP(Pop3)OtherMTA@ClamAVExtmail邮件系统各种病毒垃圾等内容过滤插件MUAWEBCourier-AuthlibCyrus-SASL2SMTPSHTTPSPOP3SLDAP基于SSL实现SMTPS/POP3S/HTTPS并集成windowsad认证的开源邮件解决方案FrankTony2012-4-20图2-1本方案使用Extmail开源邮件系统作为解决方案核心,在保障安全性方面采用基于SSL数字证书PKI公私密钥体系建立的安全传输协议SMTPS/POP3S/HTTPS,实现邮件客户端和服务器通讯加密,有效降低邮件泄密风险。在管理易用性方面通过authlib插件集成windowsactivedirectory用户登录认证,使用户邮件密码和操作系统密码统一,提高用户易用性和管理效率。在阻止垃圾邮件方面,在保障邮件到达率前提下充分利用各种过滤插件过滤垃圾邮件及病毒,同时自行开发邮件屏蔽监控插件,保障被屏蔽的正常邮件可以被及时发现解决。1.2开源项目介绍1.2.1项目介绍“ExtMail最初以WebMail软件为主,后逐步完善配套并形成了ExtMail邮件系统,提供完整的SMTP/POP/IMAP/Web和管理支持。”—摘自。为本方案提供HTTP服务。Postfix是一个著名的邮件传输代理(MTA)软件,出自IBMResearch,是一个功能类似Sendmail,内核完全不同的MTA,基于模开源项目在中小云计算平台的应用-3-块化,致力于快速、易管理、安全等特性开发。为本方案提供SMTP服务。Courier项目是一个集成多个组件的邮件解决方案,本方案以Courier-IMAP实现POP3服务,以Courier-Authlib实现用户身份查询验证服务。Courier-IMAP,IMAP邮件服务器软件,来自Courier开源邮件项目,提供IMAP邮件收取服务,同样可提供POP3服务,除Courier外这个组件也能应用于Postfix、Qmail、Exim等其他支持投递Maildir的邮件服务器。为本方案提供POP3服务。Courier-Authlib,Courier邮件系统的身份验证库,独立软件包,用于发送接收邮件时的用户身份验证。通过集成后端的windowsactivedirectory为SMTP/POP3/HTTP三项邮件功能提供身份查询验证服务,实现域账户统一认证。1.2.2横向对比邮件系统的核心是MTA(MessageTransferAgent),本邮件系统的MTA基于Postfix,Postfix相比Sendmail和Qmail等其他开源MTA来说性价比更高。其安装配置简单灵活,模块化设计,配置文件少,管理方便;扩展性好,源自sendmail,扩展配置丰富,提供外部对接API/protocol;低消耗高效率,单一队列,磁盘I/O开销小,发送效率高。新浪、yahoo使用qmail,网易、搜狐等使用Postfix支撑百万甚至千万用户级别的商业运营也说明Postfix的稳定性足够高。应用特性对比参考视图()--byDanShearer图2-2由此表格可以看出Postfix相比其他MTA在文档及社区支持、示例、安全性、可管理性上有明显优势,因此Extmail选择Postfix作为MTA,为邮件应用系统提供有力支撑。1.3本地化定制1.3.1安全配置本方案安全配置基于PKI公私密钥体系,使用OpenSSL工具包里的CA根证书认证机制,实现自主签发CA根证书和服务器端证书以及客户端证书,未来根据安全性的进一步需求可以升级为第三方可信CA签发数字证书提供SSL协议加密传输的SMTPS/POP3S/HTTPS服务。首先用OpenSSL工具生成所需CA根证书及密钥,pop3需要单独的证书,可用mkpop3dcert生成,然后配置courier-imap、postfix使其支持pop3s和smtps。Web页面访问的https需要先拷贝CA根证书到apache证书目录,并加载ssl模块,如果想只用https访问邮件web页面可通过Redirect跳转实现。配置完成之后重启pop3d-ssl、postfix、apache服务。如果客户端没有安装根证书会出现类似如下警告(web页面提示)(outlook邮件客户端提示)开源项目在中小云计算平台的应用-4-图2-31.3.2集成WindowsActiveDirectory用户登录认证Windows域增强了企业计算机网络管理的安全与高效,extmail邮件系统也可以集成域用户的认证机制,加强邮件系统安全与易用性。集成的关键是authlib插件,extmail采用authlib来进行用户认证,我们可以让authlib改为查询windowsAD域的账户完成认证。要做到这些需要在域上新建一个OU组存放所有邮件账户,配置authlib查询此账户组,并分别修改postfix、courier-imap、extmail的配置文件,具体配置请参考互联网相关项目的说明文档或联系笔者。这里对域控的安全性结合配置进行特别说明,结合本方案的实际使用情况,一旦主域发生故障需要在5分钟之内切换到备域登录,可通过一个ping脚本,取其5次ping结果,如果为零则自动修改authlib配置文件中的LDAP_URI值为备份登录域IP地址,将此脚本加入crond任务每5分钟执行一次,脚本里可再加一条判断语句,当主域恢复时再自动切换回去。i=0pingresult=`ping-c5masterdomainip|greptransmitted|awk'{print$4}'`checkhost=`cat/etc/authlib/authldaprc|grepslavedomainip|awk'{print$1}'`if[$pingresult-eq0]theni=$(expr$i+1)echo$i/root/ldapcheck.logsed-i's/masterdomainip/slavedomainip/g'/etc/authlib/authldaprcsleep2authdaemondrestartelseif[$checkhost=LDAP_URI]thensed-i's/slavedomainip/masterdomainip/g'/etc/authlib/authldaprcsleep2authdaemondrestartfifi1.3.3群发限制利用postfix配置规则限制特定用户(local_sender)发送邮件到特定本地邮件组(local_recipient)的权限smtpd_restriction_classes=local_onlylocal_only=check_sender_accesshash:/etc/postfix/local_sender,reject开源项目在中小云计算平台的应用-5-smtpd_recipient_restrictions=check_recipient_accesshash:/etc/postfix/local_recipient,smtpd_sender_restrictions=check_sender_accesshash:/etc/postfix/sender1.3.4垃圾邮件策略及拒收邮件监控Postfix支持很多扩展插件,包括slockd、amavisd-new、clamav、spamassassin、dspam等各种防垃圾、内容过滤、病毒查杀等插件,以slockd为例,slockd是基于SMTP行为识别为核心的反垃圾邮件软件,它通过加载执行不同的插件在SMTP会话阶段判断屏蔽垃圾邮件,效率较高,但误报率也高,通过关闭一些默认开启的插件可有效提高邮件通过率,比如针对国内邮件错误率较高的RBL、SPF等,对于那些必须保证通过的邮件,例如重要的合作伙伴等的邮件可通过开启白名单来控制误报。发送失败的邮件有退信可查看,但有些被错误拒绝的邮件没有邮件提醒,为及时了解被屏蔽邮件的情况,可通过脚本捕捉maillog日志中的reject语句,将这些信息存放于一个临时文件并定期将内容发送到管理员邮箱,为及时发现被“错误”阻止的邮件提供有效手段。MAIL_COMMA