<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>瞎摆摆</title>
	<atom:link href="http://xiabaibai.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://xiabaibai.net</link>
	<description>乱弹-互联网、游戏、程序、设计</description>
	<lastBuildDate>Wed, 21 Dec 2011 08:32:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>csdn悲剧了。。600w用户资料泄漏，包括明文密码</title>
		<link>http://xiabaibai.net/2011/12/csdn-hack-0day/</link>
		<comments>http://xiabaibai.net/2011/12/csdn-hack-0day/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 08:05:55 +0000</pubDate>
		<dc:creator>威廉</dc:creator>
				<category><![CDATA[互联网]]></category>
		<category><![CDATA[开发]]></category>
		<category><![CDATA[csdn]]></category>
		<category><![CDATA[密码]]></category>
		<category><![CDATA[泄漏]]></category>
		<category><![CDATA[黑客]]></category>

		<guid isPermaLink="false">http://xiabaibai.net/?p=214</guid>
		<description><![CDATA[最新0day： CSDN社区网站被入侵，近600w用户账号密码被泄露，黑客将连接公布到互联网，导致任何人可以获得该数据， 经严重数据真实有效。该事件可能对各大互联网公司包括新浪微博，企业安全等造成严重威胁，严重建议用户修改账号密码，禁止企业用户使用内部办公邮箱在外部 注册以及各处使用同一密码。 注：上面驱动之家的新闻链接 http://news.mydrivers.com/1/212/212703.htm 下午16点15分，这篇稿子已经被删了，csdn动作还是很快。就看360厚道不厚道了。 csdn居然存明文密码，太2了。有哥们已经拿到库了，拜托他帮忙搜了一下，没我的帐号。公司里找了4个人，有一个不幸在里面。 360安全卫士的新浪微博： &#160; 估计600w只是一部分，赶紧改密码吧！]]></description>
			<content:encoded><![CDATA[<p>最新0day：</p>
<p class="detail">CSDN社区网站被入侵，近600w用户账号密码被泄露，黑客将连接公布到互联网，导致任何人可以获得该数据， 经严重数据真实有效。该事件可能对各大互联网公司包括新浪微博，企业安全等造成严重威胁，严重建议用户修改账号密码，禁止企业用户使用内部办公邮箱在外部 注册以及各处使用同一密码。</p>
<p><a href="http://xiabaibai.net/wp-content/uploads/2011/12/20111221155953.jpg"><img alt="" class="alignnone size-full wp-image-215" height="118" src="http://xiabaibai.net/wp-content/uploads/2011/12/20111221155953.jpg" title="20111221155953" width="561" /></a></p>
<p>注：上面驱动之家的新闻链接 <a href="http://news.mydrivers.com/1/212/212703.htm" target="_blank">http://news.mydrivers.com/1/212/212703.htm</a> 下午16点15分，这篇稿子已经被删了，csdn动作还是很快。就看360厚道不厚道了。</p>
<p>csdn居然存明文密码，太2了。有哥们已经拿到库了，拜托他帮忙搜了一下，没我的帐号。公司里找了4个人，有一个不幸在里面。</p>
<p>360安全卫士的新浪微博：</p>
<p><a href="http://xiabaibai.net/wp-content/uploads/2011/12/20111221162214.jpg"><img alt="" class="alignnone size-full wp-image-221" height="142" src="http://xiabaibai.net/wp-content/uploads/2011/12/20111221162214.jpg" title="20111221162214" width="588" /></a></p>
<p>&nbsp;</p>
<p>估计600w只是一部分，赶紧改密码吧！</p>
]]></content:encoded>
			<wfw:commentRss>http://xiabaibai.net/2011/12/csdn-hack-0day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>KindEditor：在线Html编辑器的另一选择</title>
		<link>http://xiabaibai.net/2011/10/kindeditor/</link>
		<comments>http://xiabaibai.net/2011/10/kindeditor/#comments</comments>
		<pubDate>Wed, 05 Oct 2011 13:55:13 +0000</pubDate>
		<dc:creator>威廉</dc:creator>
				<category><![CDATA[开发]]></category>
		<category><![CDATA[ckeditor]]></category>
		<category><![CDATA[fckeditor]]></category>
		<category><![CDATA[kindeditor]]></category>

		<guid isPermaLink="false">http://xiabaibai.net/?p=211</guid>
		<description><![CDATA[今天发现了一个不错的Html编辑器 KindEditor，替换了一个项目原先使用的FCKEditor. 目前主流的在线编辑器是FCKEditor/CKEditor/TinyMCE，FCKEditor比较陈旧，界面丑陋，图片上传也不好用，CKEditor是FCKEditor的升级版，比较庞大，加载时间长，并且不带图片上传，图片上传需要集成另外一个CKFinder TinyMCE不熟（虽然现在写这篇blog正在用的就是TinyMCE） KindEditor 目前版本4.0，可以免费下载使用 官网：http://www.kindsoft.net 在线演示：http://www.kindsoft.net/demo.php]]></description>
			<content:encoded><![CDATA[<p>今天发现了一个不错的Html编辑器 KindEditor，替换了一个项目原先使用的FCKEditor.</p>
<p>	目前主流的在线编辑器是FCKEditor/CKEditor/TinyMCE，FCKEditor比较陈旧，界面丑陋，图片上传也不好用，CKEditor是FCKEditor的升级版，比较庞大，加载时间长，并且不带图片上传，图片上传需要集成另外一个CKFinder<br />
	TinyMCE不熟（虽然现在写这篇blog正在用的就是TinyMCE）</p>
<p>	KindEditor 目前版本4.0，可以免费下载使用<br />
	官网：<a href="http://www.kindsoft.net" target="_blank">http://www.kindsoft.net</a><br />
	在线演示：<a href="http://www.kindsoft.net/demo.php" target="_blank">http://www.kindsoft.net/demo.php</a></p>
]]></content:encoded>
			<wfw:commentRss>http://xiabaibai.net/2011/10/kindeditor/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>基于nginx的pop3/imap/smtp的反向代理解决方案</title>
		<link>http://xiabaibai.net/2011/08/nginx-pop3-imap-smtp-reverse-proxy/</link>
		<comments>http://xiabaibai.net/2011/08/nginx-pop3-imap-smtp-reverse-proxy/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 05:05:49 +0000</pubDate>
		<dc:creator>威廉</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://xiabaibai.net/?p=197</guid>
		<description><![CDATA[本文介绍基于nginx的邮局反向代理配置方案。nginx对来源于客户端的pop3/smtp/imap请求予以转发到后端postfix，后端邮件服务器采用postfix 2.8.0，已配置并正常运行。 本方案参考 Using a php script on apache server as the auth backend ，并基于此方案进行改进，并增加了对smtp的代理。 环境配置：centos 5.5 + nginx 1.0.4 软件安装： yum groupinstall &#39;Development Tools&#39; -y rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm yum install libxml2-devel libxslt-devel pcre-devel libtool-ltdl libtool-ltdl-devel cd /usr/src wget http://nginx.org/download/nginx-1.0.4.tar.gz tar -zxf nginx-1.0.4.tar.gz cd nginx-1.0.4 ./configure &#8211;prefix=/usr/local/nginx &#8211;with-mail &#8211;without-http make &#38;&#38; make install 配置nginx.conf： #user&#160; [...]]]></description>
			<content:encoded><![CDATA[<p><strong>本文介绍基于nginx的邮局反向代理配置方案。nginx对来源于客户端的pop3/smtp/imap请求予以转发到后端postfix，后端邮件服务器采用postfix 2.8.0，已配置并正常运行。</strong></p>
<p>	本方案参考 <a href="http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript" target="_blank">Using a php script on apache server as the auth backend </a>，并基于此方案进行改进，并增加了对smtp的代理。</p>
<p>	<strong>环境配置</strong>：centos 5.5 + nginx 1.0.4</p>
<p><strong>软件安装</strong>：</p>
<blockquote>
<p>yum groupinstall &#39;Development Tools&#39; -y<br />
		rpm -Uhv <a href="http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm">http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm</a><br />
		yum install libxml2-devel libxslt-devel pcre-devel libtool-ltdl libtool-ltdl-devel</p>
<p>		cd /usr/src<br />
		wget http://nginx.org/download/nginx-1.0.4.tar.gz<br />
		tar -zxf nginx-1.0.4.tar.gz<br />
		cd nginx-1.0.4<br />
		./configure &#8211;prefix=/usr/local/nginx &#8211;with-mail &#8211;without-http<br />
		make &amp;&amp; make install</p>
</blockquote>
<p>
	<strong>配置nginx.conf</strong>：</p>
<blockquote>
<p>#user&nbsp; nobody;<br />
		worker_processes&nbsp; 1;<br />
		error_log&nbsp; logs/error.log&nbsp; info;<br />
		events {<br />
		&nbsp;&nbsp;&nbsp; worker_connections&nbsp; 1024;<br />
		}<br />
		mail {<br />
		&nbsp;&nbsp;&nbsp; auth_http&nbsp; 指定IP:80/auth.php;<br />
		&nbsp;&nbsp;&nbsp; pop3_capabilities&nbsp; &quot;TOP&quot;&nbsp; &quot;USER&quot;;<br />
		&nbsp;&nbsp;&nbsp; imap_capabilities&nbsp; &quot;IMAP4rev1&quot;&nbsp; &quot;UIDPLUS&quot;;<br />
		&nbsp;&nbsp;&nbsp; <br />
		&nbsp;&nbsp;&nbsp; server {<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listen&nbsp;&nbsp;&nbsp;&nbsp; 110;<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protocol&nbsp;&nbsp; pop3;<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; on;<br />
		&nbsp;&nbsp;&nbsp; }<br />
		&nbsp;&nbsp;&nbsp; server {<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listen&nbsp;&nbsp;&nbsp;&nbsp; 143;<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protocol&nbsp;&nbsp; imap;<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; on;<br />
		&nbsp;&nbsp;&nbsp; }<br />
		&nbsp;&nbsp;&nbsp; server {<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; listen&nbsp;&nbsp;&nbsp; 25;<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; protocol&nbsp;&nbsp;&nbsp; smtp;<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; proxy&nbsp;&nbsp;&nbsp; on;<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; smtp_auth login plain;<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; xclient&nbsp;&nbsp;&nbsp; off;<br />
		&nbsp;&nbsp;&nbsp; }<br />
		}</p>
</blockquote>
<p><strong>说明：</strong><br />
	1.安装nginx时禁掉了http（&#8211;without-http），因为我们的目标只是转发pop3/smtp/imap请求，故nginx.conf也是相当简单，只有mail模块。如果还需要代理80端口（例如webmail），可以自行编译对http的支持。</p>
<p>	2.smtp的配置模块里必须加入xclient off，否则当nginx向后转发smtp请求时，postfix将报&ldquo;lost connection after XCLIENT&rdquo;，同时nginx报&ldquo;550 5.7.0 Error: insufficient authorization&rdquo;. nginx对smtp的代理，与pop3/imap是不同的，详细见后文。</p>
<p>	3.指定IP是用于认证的，需要放认证脚本auth.php. 认证脚本的作用就是验证用户和密码，一般自定义，可以放在任意的服务器上。本方案中选择放在后端邮件服务器上，便于管理。</p>
<p>	这里有一个问题，postfix本身已经集成了认证机制（本人采用的是cyrus sasl2+courier-authlib），为什么加了反向代理，认证过程就要移动到反向代理上呢？这样岂不是就变成非透明代理了吗？为什么不作纯碎的透明代理呢？<br />
	根据测试，如果这个认证脚本不设验证，直接透传所有pop3/imap请求到后端，在后端邮件服务器还会进行一次认证，但是对于smtp请求，将不再认证，而直接按照转发规则进行转发（因为反向代理的ip加到了postfix的mynetworks中，见后文）。这两种不同的差异应该是跟协议有关。<br />
	为了保持统一，在本文的方案中，auth.php集成了pop3/imap/smtp的三种认证。这样的功能架构类似于游戏服务器的，登录服务器和游戏服务器是分开的。</p>
<p>	4.在邮件服务器postfix/etc/main.cf中，修改mynetworks值，加入本反向代理的ip，并重载postfix：postfix -s reload</p>
<p>
	关于xclient：xclient的作用，是将前端的服务器模拟作为一个邮件客户端，而向后端的postfix进行认证和执行发送，但是postfix还需要一个打patch才能完美支持xclient。<br />
	关于此问题的讨论可以参见 <a href="http://forum.nginx.org/read.php?2,173197,173246#msg-173246" target="_blank">http://forum.nginx.org/read.php?2,173197,173246#msg-173246</a></p>
<p>	<strong>auth.php：</strong></p>
<blockquote>
<p>&lt;?php<br />
		/**<br />
		* @see xiabaibai.net<br />
		*/<br />
		if(!isset($_SERVER [&quot;HTTP_AUTH_USER&quot;] ) || ! isset($_SERVER [&quot;HTTP_AUTH_PASS&quot;] )) {<br />
		&nbsp;&nbsp;&nbsp; fail(0);<br />
		}<br />
		$username = $_SERVER [&quot;HTTP_AUTH_USER&quot;];<br />
		$userpass = $_SERVER [&quot;HTTP_AUTH_PASS&quot;];<br />
		$protocol = $_SERVER [&quot;HTTP_AUTH_PROTOCOL&quot;];</p>
<p>		$backend_port = 110;<br />
		if($protocol == &quot;imap&quot;) {<br />
		&nbsp;&nbsp;&nbsp; $backend_port = 143;<br />
		} elseif ($protocol == &quot;smtp&quot;) {<br />
		&nbsp;&nbsp;&nbsp; $backend_port = 25;<br />
		}</p>
<p>		list($uid, $domain) = explode(&quot;@&quot;, $username);</p>
<p>		$auth = authuser($username, $userpass);<br />
		if(!$auth) fail (-2);</p>
<p>		pass($_SERVER[&quot;SERVER_ADDR&quot;], $backend_port);</p>
<p>		//自定义认证，sql查询或者api<br />
		function authuser($user, $pass) {<br />
		&nbsp;&nbsp;&nbsp; return true;<br />
		}</p>
<p>		function fail($code) {<br />
		&nbsp;&nbsp;&nbsp; switch($code){<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case 0: header(&quot;Auth-Status: Parameter lost&quot;); break;<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case -1: header(&quot;Auth-Status: No Back-end Server&quot;); break;<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case -2: header(&quot;Auth-Status: Invalid login or password&quot; ); break;<br />
		&nbsp;&nbsp;&nbsp; }<br />
		&nbsp;&nbsp;&nbsp; exit();<br />
		}</p>
<p>		function pass($server, $port) {<br />
		&nbsp;&nbsp;&nbsp; header(&quot;Auth-Status: OK&quot; );<br />
		&nbsp;&nbsp;&nbsp; header(&quot;Auth-Server: $server&quot; );<br />
		&nbsp;&nbsp;&nbsp; header(&quot;Auth-Port: $port&quot; );<br />
		&nbsp;&nbsp;&nbsp; exit();<br />
		}<br />
		&nbsp;<br />
		?&gt;</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://xiabaibai.net/2011/08/nginx-pop3-imap-smtp-reverse-proxy/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>win7下安装ESET NOD32 Antivirus RC 5（精睿汉化） 后导致无法进入桌面</title>
		<link>http://xiabaibai.net/2011/08/nod32-cannot-logi/</link>
		<comments>http://xiabaibai.net/2011/08/nod32-cannot-logi/#comments</comments>
		<pubDate>Thu, 25 Aug 2011 04:39:02 +0000</pubDate>
		<dc:creator>威廉</dc:creator>
				<category><![CDATA[软件]]></category>
		<category><![CDATA[nod32]]></category>
		<category><![CDATA[无法登录]]></category>
		<category><![CDATA[注册码]]></category>
		<category><![CDATA[精睿]]></category>
		<category><![CDATA[黑屏]]></category>

		<guid isPermaLink="false">http://xiabaibai.net/?p=200</guid>
		<description><![CDATA[nod32这个版本跟系统有冲突： 版本：5.0.84.0 RC 语言：简体中文 类型：纯净版 授权：试用三个月 适合32位系统：XP/Vista//Win7/2003/2008 封装：麦田守望者 来源：精睿(vc52).网络安全 我的系统： 主板：技嘉GA-G41MT-ES2L 独显：nVIDIA GeForce 210 操作系统：win7 问题表现： 启动到账户登录界面，输入密码后，一直显示欢迎界面，卡死，或几十秒后直接黑屏，按Ctrl+Shift+Del能启动任务管理器，但执行任何操作均死掉。 解决方法： 一开始以为是显卡驱动问题，进安全模式卸载并重装了独显的驱动，无效。然后拔掉独显，并重装了主板的驱动、主板集成显卡的驱动、网卡驱动，均无效。 怀疑不是驱动问题，是软件冲突，再次进到安全模式，通过XueTr查出没有数字签名的几个服务：Daemon Tools Lite, nod32, 还有一个迅雷的基础组建服务，全部禁用，终于可以进入桌面。然后逐一筛选，终于定位到nod32这个元凶，卸载，然后到官网下了一个4.2版本的，装好一切正常。 ESET NOD32 防病毒软件 4.2 官网下载地址 注： nod32是个可靠的杀毒软件。精睿软件园是很有名气的nod32发布地，之前一直从精睿下载集成了id获取器的nod32版本，在360闹事的那段时间还推荐给了朋友。 这个有问题的版本是5.0.84.0 RC. 如果从官方下载了nod32，而苦于寻找id的话，可以单独下载精睿的id获取器。当然，买正版是最好的。 ESET VC52 WebID （ESET ID获取工具） 1.2.0.0]]></description>
			<content:encoded><![CDATA[<p>nod32这个版本跟系统有冲突：</p>
<blockquote>
<p>版本：5.0.84.0 RC<br />
		语言：简体中文<br />
		类型：纯净版<br />
		授权：试用三个月<br />
		适合32位系统：XP/Vista//Win7/2003/2008<br />
		封装：麦田守望者<br />
		来源：精睿(vc52).网络安全</p>
<p>我的系统：<br />
		主板：技嘉GA-G41MT-ES2L<br />
		独显：nVIDIA GeForce 210<br />
		操作系统：win7</p>
</blockquote>
<p>
	问题表现：<br />
	启动到账户登录界面，输入密码后，一直显示欢迎界面，卡死，或几十秒后直接黑屏，按Ctrl+Shift+Del能启动任务管理器，但执行任何操作均死掉。</p>
<p>	解决方法：<br />
	一开始以为是显卡驱动问题，进安全模式卸载并重装了独显的驱动，无效。然后拔掉独显，并重装了主板的驱动、主板集成显卡的驱动、网卡驱动，均无效。<br />
	怀疑不是驱动问题，是软件冲突，再次进到安全模式，通过XueTr查出没有数字签名的几个服务：Daemon Tools Lite, nod32, 还有一个迅雷的基础组建服务，全部禁用，终于可以进入桌面。然后逐一筛选，终于定位到nod32这个元凶，卸载，然后到官网下了一个<span class="eav_title">4.2版本的，装好一切正常。</span></p>
<p>	<strong><span style="font-size:14px;"><a href="http://www.eset.com.cn/download/" target="_blank">ESET NOD32 防病毒软件 4.2 官网下载地址</a></span></strong></p>
<p>
	注：<br />
	nod32是个可靠的杀毒软件。精睿软件园是很有名气的nod32发布地，之前一直从精睿下载集成了id获取器的nod32版本，在360闹事的那段时间还推荐给了朋友。<br />
	这个有问题的版本是<a href="http://down.vc52.cn//download/view-software-153.html" target="_blank">5.0.84.0 RC</a>. 如果从官方下载了nod32，而苦于寻找id的话，可以单独下载精睿的id获取器。当然，买正版是最好的。<br />
	<strong><span style="font-size:14px;"><a href="http://down.vc52.cn//download/view-software-149.html" target="_blank"><br />
	ESET VC52 WebID （ESET ID获取工具） 1.2.0.0 </a></span></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://xiabaibai.net/2011/08/nod32-cannot-logi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>飞影的故事</title>
		<link>http://xiabaibai.net/2011/07/hiei-story/</link>
		<comments>http://xiabaibai.net/2011/07/hiei-story/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 13:35:11 +0000</pubDate>
		<dc:creator>威廉</dc:creator>
				<category><![CDATA[生活娱乐]]></category>
		<category><![CDATA[幽游白书]]></category>
		<category><![CDATA[雪莱]]></category>
		<category><![CDATA[飞影]]></category>

		<guid isPermaLink="false">http://xiabaibai.net/?p=191</guid>
		<description><![CDATA[重温幽游白书。富槛只用一页就讲述了飞影充满传奇色彩的故事。 忌子飞影，出生于冰河之国的凶恶孩童，养父母是盗贼。喜欢看见皮肉遭利刀划过后，尚未出血时的刀痕，而且喜欢听见受伤时哀嚎声，对于冰河的那群女子会抛弃他的心，是可以理解。 知道母亲所给的信物冰泪石是贵重的宝石，却向盗贼炫耀，而故意挂在脖子上，所以每天都过着刀口淌血的日子。 对于找寻冰河之国一事，已经渐渐不重要了，因为每天都太忙了。 冰河之国已经变成凝视冰泪石时，偶尔想起的故乡罢了。 就在大开杀戒之后，当地的盗贼都因畏惧面躲的远远的。所以，凝视冰泪石的时间相对增加了。于是渐渐&#8230;&#8230;发现自己在凝视冰泪石时，心灵就会平静下来。 唯有凝视着冰泪石时，表情才缓和。透过这颗拥有不可思议力量的石子，想起了那位创造这颗石子与自己的人。寻找冰河之国的目的也随之而改变了。 离开了地盘后，便会遇上新的敌手，其中不乏有厉害的家伙。一时的大意，母亲的冰泪石跌落悬崖深渊，使得寻找的目标又多了一个。需要能看到更远更透的眼睛。 为了装上邪眼，除了必须忍受极大的痛楚之外，还得失去多年修行得来的妖力。不过，当时的自己却不以为然&#8230;&#8230; 因为，对于一时大意而遗失冰泪石的自己，始终无法原谅。 用邪眼找到了冰河之国。 悄悄地回到故乡，见以冰女们终日生活在痛苦中，于是改变了心意，决定不杀她们。因此复仇的任务结束了。 城旁角落荒墓上的墓碑上发现了母亲的名字。并没有生气，因为知道这是母亲的意思。 此行所得的收获是得知了妹妹名字叫雪莱，而且失踪数年了，于是又找到了一个新的生活目标。你的一生仿佛是为了漂泊而生存着。 经过一番曲折，在人界有段不可思议的曹遇。然后又改变了！ 与某个奇特的人战斗，你遇见了妹妹，当然她不认识你，而你也不会她，你希望维持目前的关系就好。 再来只要找到自己的冰泪石就行了，而且在人界的战斗也差不多满足了你的胃口。 可是，&#8220;要是你遇见了我哥哥，请把这个交给他&#8221;，&#8220;这颗并不是我的冰泪石&#8221;当你心中这么告诉自己时，感到生活目标被扼杀的虚无感。 你的生活只剩杀戮而已，所以你考虑到死亡的问题。你的意识是我所接触过心地最善良的家伙。 &#160;]]></description>
			<content:encoded><![CDATA[<p>重温幽游白书。富槛只用一页就讲述了飞影充满传奇色彩的故事。</p>
<p>	<a href="http://xiabaibai.net/wp-content/uploads/2011/07/b_large_u4FK_39a90002d7722d12.jpg"><img alt="" class="alignnone size-full wp-image-193" height="444" src="http://xiabaibai.net/wp-content/uploads/2011/07/b_large_u4FK_39a90002d7722d12.jpg" title="b_large_u4FK_39a90002d7722d12" width="580" /></a></p>
<p>	忌子飞影，出生于冰河之国的凶恶孩童，养父母是盗贼。喜欢看见皮肉遭利刀划过后，尚未出血时的刀痕，而且喜欢听见受伤时哀嚎声，对于冰河的那群女子会抛弃他的心，是可以理解。 </p>
<p>	知道母亲所给的信物冰泪石是贵重的宝石，却向盗贼炫耀，而故意挂在脖子上，所以每天都过着刀口淌血的日子。 </p>
<p>	对于找寻冰河之国一事，已经渐渐不重要了，因为每天都太忙了。 </p>
<p>	冰河之国已经变成凝视冰泪石时，偶尔想起的故乡罢了。 </p>
<p>
	就在大开杀戒之后，当地的盗贼都因畏惧面躲的远远的。所以，凝视冰泪石的时间相对增加了。于是渐渐&hellip;&hellip;发现自己在凝视冰泪石时，心灵就会平静下来。 </p>
<p>	唯有凝视着冰泪石时，表情才缓和。透过这颗拥有不可思议力量的石子，想起了那位创造这颗石子与自己的人。寻找冰河之国的目的也随之而改变了。 </p>
<p>	离开了地盘后，便会遇上新的敌手，其中不乏有厉害的家伙。一时的大意，母亲的冰泪石跌落悬崖深渊，使得寻找的目标又多了一个。需要能看到更远更透的眼睛。 </p>
<p>	<a href="http://xiabaibai.net/wp-content/uploads/2011/07/b_large_cUa9_0148000109122d11.jpg"><img alt="" class="alignnone size-full wp-image-192" height="441" src="http://xiabaibai.net/wp-content/uploads/2011/07/b_large_cUa9_0148000109122d11.jpg" title="b_large_cUa9_0148000109122d11" width="580" /></a></p>
<p>
	为了装上邪眼，除了必须忍受极大的痛楚之外，还得失去多年修行得来的妖力。不过，当时的自己却不以为然&hellip;&hellip; </p>
<p>	因为，对于一时大意而遗失冰泪石的自己，始终无法原谅。 </p>
<p>
	用邪眼找到了冰河之国。 悄悄地回到故乡，见以冰女们终日生活在痛苦中，于是改变了心意，决定不杀她们。因此复仇的任务结束了。 </p>
<p>	城旁角落荒墓上的墓碑上发现了母亲的名字。并没有生气，因为知道这是母亲的意思。 </p>
<p>	此行所得的收获是得知了妹妹名字叫雪莱，而且失踪数年了，于是又找到了一个新的生活目标。你的一生仿佛是为了漂泊而生存着。 </p>
<p>
	经过一番曲折，在人界有段不可思议的曹遇。然后又改变了！</p>
<p>	与某个奇特的人战斗，你遇见了妹妹，当然她不认识你，而你也不会她，你希望维持目前的关系就好。</p>
<p>	再来只要找到自己的冰泪石就行了，而且在人界的战斗也差不多满足了你的胃口。</p>
<p>	可是，&ldquo;要是你遇见了我哥哥，请把这个交给他&rdquo;，&ldquo;这颗并不是我的冰泪石&rdquo;当你心中这么告诉自己时，感到生活目标被扼杀的虚无感。</p>
<p>	你的生活只剩杀戮而已，所以你考虑到死亡的问题。你的意识是我所接触过心地最善良的家伙。</p>
<p>	&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://xiabaibai.net/2011/07/hiei-story/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>maildroprc 自动创建邮箱文件夹并订阅</title>
		<link>http://xiabaibai.net/2011/06/maildroprc-auto-create-and-auto-subscrib/</link>
		<comments>http://xiabaibai.net/2011/06/maildroprc-auto-create-and-auto-subscrib/#comments</comments>
		<pubDate>Mon, 20 Jun 2011 11:25:17 +0000</pubDate>
		<dc:creator>威廉</dc:creator>
				<category><![CDATA[开发]]></category>
		<category><![CDATA[maildrop]]></category>
		<category><![CDATA[maildroprc]]></category>
		<category><![CDATA[roundcube]]></category>

		<guid isPermaLink="false">http://xiabaibai.net/?p=188</guid>
		<description><![CDATA[roundcube有个bug，没有自动订阅邮箱的4个folder（Sent Trash Drafts Junk），于是写了一个插件，放在login_after回调里： public function login_after($data){ &#160;&#160;&#160; &#160;&#160;&#160; $rcmail = rcmail::get_instance(); &#160;&#160;&#160;&#160;&#160;&#160;&#160; $default_imap_folders = $rcmail-&#62;config-&#62;get(&#39;default_imap_folders&#39;); &#160;&#160;&#160;&#160;&#160;&#160;&#160; $rcmail-&#62;imap_connect(); &#160;&#160;&#160;&#160;&#160;&#160;&#160; if(is_object($rcmail-&#62;imap)){ &#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160; &#160; $a_mailboxes = $rcmail-&#62;imap-&#62;list_unsubscribed(); &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; $need_subscribed = array_intersect($default_imap_folders, $a_mailboxes); &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; $need_subscribed = $default_imap_folders; &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; if(count($need_subscribed)&#62;0){ &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; foreach($need_subscribed as $folder){ &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>roundcube有个bug，没有自动订阅邮箱的4个folder（Sent Trash Drafts Junk），于是写了一个插件，放在login_after回调里：</p>
<blockquote>
<p>public function login_after($data){<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $rcmail = rcmail::get_instance();<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $default_imap_folders = $rcmail-&gt;config-&gt;get(&#39;default_imap_folders&#39;);<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $rcmail-&gt;imap_connect();<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(is_object($rcmail-&gt;imap)){<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; $a_mailboxes = $rcmail-&gt;imap-&gt;list_unsubscribed();<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $need_subscribed = array_intersect($default_imap_folders, $a_mailboxes);<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $need_subscribed = $default_imap_folders;<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(count($need_subscribed)&gt;0){<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; foreach($need_subscribed as $folder){<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (!$rcmail-&gt;imap-&gt;mailbox_exists($folder))<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $rcmail-&gt;imap-&gt;create_mailbox($folder, true);<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; else $rcmail-&gt;imap-&gt;subscribe($folder);<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
		&nbsp;&nbsp;&nbsp; }</p>
</blockquote>
<p>这样每次登录都回去检查没订阅的邮箱，并且自动订阅，如果不存在则创建（兼容一部分转移过来的丢失folder的老用户）<br />
	今天细想，这个工作应该是在maildrop里完成，于是改进了一下maildroprc：</p>
<blockquote>
<p>`/usr/bin/test -d $HOME/Maildir/.Sent`<br />
		if( $RETURNCODE == 1 )<br />
		{<br />
		EXTENSION = &quot;Sent&quot;<br />
		log &quot;\&quot;$MAILDIRMAKE -f $EXTENSION $DEFAULT\&quot;&quot;<br />
		`$MAILDIRMAKE -f $EXTENSION &quot;$DEFAULT&quot;`<br />
		`if ! grep -q INBOX.$EXTENSION $DEFAULT/courierimapsubscribed; then echo INBOX.$EXTENSION &gt;&gt; $DEFAULT/courierimapsubscribed; fi`<br />
		}</p>
<p>		`/usr/bin/test -d $HOME/Maildir/.Trash`<br />
		if( $RETURNCODE == 1 )<br />
		{<br />
		EXTENSION = &quot;Trash&quot;<br />
		log &quot;\&quot;$MAILDIRMAKE -f $EXTENSION $DEFAULT\&quot;&quot;<br />
		`$MAILDIRMAKE -f $EXTENSION &quot;$DEFAULT&quot;`<br />
		`if ! grep -q INBOX.$EXTENSION $DEFAULT/courierimapsubscribed; then echo INBOX.$EXTENSION &gt;&gt; $DEFAULT/courierimapsubscribed; fi`<br />
		}</p>
<p>		`/usr/bin/test -d $HOME/Maildir/.Drafts`<br />
		if( $RETURNCODE == 1 )<br />
		{<br />
		EXTENSION = &quot;Drafts&quot;<br />
		log &quot;\&quot;$MAILDIRMAKE -f $EXTENSION $DEFAULT\&quot;&quot;<br />
		`$MAILDIRMAKE -f $EXTENSION &quot;$DEFAULT&quot;`<br />
		`if ! grep -q INBOX.$EXTENSION $DEFAULT/courierimapsubscribed; then echo INBOX.$EXTENSION &gt;&gt; $DEFAULT/courierimapsubscribed; fi`<br />
		}</p>
<p>		`/usr/bin/test -d $HOME/Maildir/.Junk`<br />
		if( $RETURNCODE == 1 )<br />
		{<br />
		EXTENSION = &quot;Junk&quot;<br />
		log &quot;\&quot;$MAILDIRMAKE -f $EXTENSION $DEFAULT\&quot;&quot;<br />
		`$MAILDIRMAKE -f $EXTENSION &quot;$DEFAULT&quot;`<br />
		`if ! grep -q INBOX.$EXTENSION $DEFAULT/courierimapsubscribed; then echo INBOX.$EXTENSION &gt;&gt; $DEFAULT/courierimapsubscribed; fi`<br />
		}</p>
<p>		if (/^X-Spam-Status: Yes/ )<br />
		{<br />
		&nbsp;EXTENSION = &quot;Junk&quot;<br />
		&nbsp;log &quot;\&quot;$MAILDIRMAKE -f $EXTENSION $DEFAULT\&quot;&quot;<br />
		&nbsp;`$MAILDIRMAKE -f $EXTENSION &quot;$DEFAULT&quot;`<br />
		&nbsp;`if ! grep -q INBOX.$EXTENSION $DEFAULT/courierimapsubscribed; then echo INBOX.$EXTENSION &gt;&gt; $DEFAULT/courierimapsubscribed; fi`<br />
		&nbsp; to $HOME/Maildir/.$EXTENSION/<br />
		}</p>
</blockquote>
<p>要是maildroprc的语言支持循环的话，就能更省一些。简单备注一下：<br />
	$RETURNCODE==1，表示为false（估计是沿用c++的）<br />
	$DEFAULT是预定义的变量，为邮件投递的全路径<br />
	courierimapsubscribed文件放于邮箱Maildir下，控制邮箱的订阅与否</p>
<p>	参考：<br />
	<a href="http://www.ajaxstu.com/Mailfuwuqi/257893.html" target="_blank">http://www.ajaxstu.com/Mailfuwuqi/257893.html</a><br />
	<a href="http://gogs.info/wiki/debian/maildrop" target="_blank">http://gogs.info/wiki/debian/maildrop</a></p>
]]></content:encoded>
			<wfw:commentRss>http://xiabaibai.net/2011/06/maildroprc-auto-create-and-auto-subscrib/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>postfix实践记录</title>
		<link>http://xiabaibai.net/2011/06/postfix-practise/</link>
		<comments>http://xiabaibai.net/2011/06/postfix-practise/#comments</comments>
		<pubDate>Thu, 09 Jun 2011 04:51:19 +0000</pubDate>
		<dc:creator>威廉</dc:creator>
				<category><![CDATA[开发]]></category>
		<category><![CDATA[postfix]]></category>

		<guid isPermaLink="false">http://xiabaibai.net/?p=182</guid>
		<description><![CDATA[最近在搞postfix. 邮局应该是互联网最早的一代应用，发展至今二三十年，软件和架构都非常成熟，搭建和配置也相当灵活，本文记录一下实践过程中的点滴。 配额管理 用户的配额都是放在数据库中，而邮件系统获取配额记录有两种方式。 方式1：通过postfix的virtual_mailbox_limit_maps指定 &#160;virtual_mailbox_limit_maps = mysql:/usr/local/etc/postfix/mysql/mysql-virtual-quota.cf&#160; 内容： hosts = IP&#160; user = DB_USER&#160; password = DB_PASS&#160; dbname = DB_NAME&#160; table = mail_users&#160; query = select quota from mail_users where email=&#39;%s&#39;&#160; 方式2：通过courier-authlib+courier-maildrop指定。其中authlib用于认证，maildrop用于投递，由postfix调用 编辑courier/authlib/etc/authlib/authmysqlrc： MYSQL_SERVER&#160;&#160;&#160; &#160;&#160;&#160; mysql.example.com MYSQL_USERNAME&#160;&#160;&#160; &#160;&#160;&#160; admin MYSQL_PASSWORD&#160;&#160;&#160; &#160;&#160;&#160; admin MYSQL_PORT&#160;&#160;&#160; &#160;&#160;&#160; 0 MYSQL_OPT&#160;&#160;&#160; &#160;&#160;&#160; 0 MYSQL_DATABASE&#160;&#160;&#160; &#160;&#160;&#160; mysql MYSQL_USER_TABLE&#160;&#160;&#160; passwd MYSQL_CRYPT_PWFIELD&#160;&#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>最近在搞postfix. 邮局应该是互联网最早的一代应用，发展至今二三十年，软件和架构都非常成熟，搭建和配置也相当灵活，本文记录一下实践过程中的点滴。</p>
<p><strong>配额管理<br />
	</strong></p>
<p>用户的配额都是放在数据库中，而邮件系统获取配额记录有两种方式。</p>
<p><span style="color: rgb(178, 34, 34);">方式1：通过postfix的virtual_mailbox_limit_maps指定</span></p>
<blockquote>
<p>&nbsp;virtual_mailbox_limit_maps = mysql:/usr/local/etc/postfix/mysql/mysql-virtual-quota.cf&nbsp;</p>
</blockquote>
<p>内容：</p>
<blockquote>
<p><span style="color: rgb(0, 0, 0);">hosts = IP&nbsp; <br />
		user = DB_USER&nbsp; <br />
		password = DB_PASS&nbsp; <br />
		dbname = DB_NAME&nbsp; <br />
		table = mail_users&nbsp; <br />
		query = select quota from mail_users where email=&#39;%s&#39;&nbsp; </p>
<p>		</span></p>
</blockquote>
<p><span style="color: rgb(178, 34, 34);">方式2：通过courier-authlib+courier-maildrop指定。</span>其中authlib用于认证，maildrop用于投递，由postfix调用</p>
<p>编辑courier/authlib/etc/authlib/authmysqlrc：</p>
<blockquote>
<p>MYSQL_SERVER&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; mysql.example.com<br />
		MYSQL_USERNAME&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; admin<br />
		MYSQL_PASSWORD&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; admin<br />
		MYSQL_PORT&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 0<br />
		MYSQL_OPT&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 0<br />
		MYSQL_DATABASE&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; mysql<br />
		MYSQL_USER_TABLE&nbsp;&nbsp;&nbsp; passwd<br />
		MYSQL_CRYPT_PWFIELD&nbsp;&nbsp;&nbsp; crypt<br />
		<strong>MYSQL_QUOTA_FIELD&nbsp;&nbsp;&nbsp; quota</strong><br />
		MYSQL_UID_FIELD&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; uid<br />
		MYSQL_GID_FIELD&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; gid<br />
		MYSQL_LOGIN_FIELD&nbsp;&nbsp;&nbsp; id<br />
		MYSQL_HOME_FIELD&nbsp;&nbsp;&nbsp; home<br />
		MYSQL_NAME_FIELD&nbsp;&nbsp;&nbsp; name</p>
</blockquote>
<p>各个字段分别与数据库中的相应项对应，认证程序即通过这些字段构造sql向db查询。<br />
	在每个邮箱Maildir目录下面，会有一个maildirsize文件，用于存放配额。实际测试证明，当配额调整后，maildirsize不会立刻被重写，只有当用户收发邮件时，触发maildrop程序，才会更新maildirsize.</p>
<p><span style="color: rgb(0, 0, 205);">两种方式有何优劣，待研究。<br />
	</span></p>
<p>&nbsp;</p>
<p><strong>限速<br />
	</strong></p>
<p>即限制用户单位时间内的邮件发送量，也是两种方式，均采用第三方软件。</p>
<p><span style="color: rgb(178, 34, 34);">方式1：policyd. 强大的反垃圾邮件过滤器。<br />
	</span></p>
<p>安装policyd（本人用的v1.9），在配置文档中设定端口（设定的是10032），导入sql建好数据库表，并指定在postfix的main.cf中挂接policyd插件：</p>
<blockquote>
<p>smtpd_end_of_data_restrictions = check_policy_service inet:127.0.0.1:10032 permit</p>
</blockquote>
<p>也可以加到smtpd_recipient_restrictions中，区别是smtpd_end_of_data_restrictions是在收到客户端END-OF-DATA命令后调用过滤器（也就是从客户端收完待发的邮件数据后），而smtpd_recipient_restrictions是在收到RCPT TO命令后调用，SMTP交互的过程中，RCPT TO在END-OF-DATA之前，放在END-OF-DATA会消耗更多的带宽和处理时间。这里放在smtpd_end_of_data_restrictions后，我想应该是考虑通过获取更多的邮件头以备调用policyd更复杂的过滤规则。</p>
<p>在policyd的配置中，关于收发限制是以下参数（部分）：</p>
<blockquote>
<p># &#8212;- SENDER THROTTLE &#8212;-<br />
		SENDERTHROTTLE=1 是否开启发送限制<br />
		SENDERMSGLIMIT=150 单位时间内，用户能发送的邮件数量上限<br />
		SENDERQUOTALIMIT=250000000 单位时间内，用户发送发送邮件的总大小上限<br />
		SENDERRCPTLIMIT=86400 单位时间内，用户发送邮件的接受者的数量上限<br />
		SENDERMSGSIZE=1024000000 能发送的最大邮件字节数<br />
		SENDERTIMELIMIT=24h 单位时间</p>
<p>		# &#8212;- RECIPIENT THROTTLE &#8212;-<br />
		RECIPIENTTHROTTLE=0 是否开启接受限制<br />
		RECIPIENTMSGLIMIT=100 单位时间内，用户能接收的邮件数量上限<br />
		RECIPIENTTIMELIMIT=24h 单位时间</p>
</blockquote>
<p>这些参数基本上是初始设置，也即在创建邮箱账户的时候所insert到db中的值。我们可以通过编程式的手段来直接操作db，对不同邮箱账户或域进行动态调整，非常灵活。</p>
<p><span style="color: rgb(178, 34, 34);">方式2：milter-limit<br />
	</span></p>
<p>安装milter-limit，在postfix的main.cf中挂接：</p>
<blockquote>
<p>smtpd_milters = unix:/var/run/milter/milter-limit.socket</p>
</blockquote>
<p>配置是通过makemap生成：</p>
<blockquote>
<p>makemap hash /etc/mail/access.db &lt; /etc/mail/acces</p>
</blockquote>
<p>对于管理系统来说，由于发送限制的配额是存放于db中，这种就需要一个定时程序，先从db查询并生成/etc/mail/acces，然后通过makemap生成hash，再重启milter-limit：</p>
<blockquote>
<p>/usr/local/etc/rc.d/milter-limit.sh start restart</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://xiabaibai.net/2011/06/postfix-practise/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php cli模式执行脚本，报Extension &#8216;**.php&#8217; not present.的问题解决办法</title>
		<link>http://xiabaibai.net/2011/06/php-cli-extension-php-not-present/</link>
		<comments>http://xiabaibai.net/2011/06/php-cli-extension-php-not-present/#comments</comments>
		<pubDate>Thu, 02 Jun 2011 08:52:36 +0000</pubDate>
		<dc:creator>威廉</dc:creator>
				<category><![CDATA[开发]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://xiabaibai.net/?p=169</guid>
		<description><![CDATA[以php cli模式执行脚本a.php，通常需要在脚本a.php首行加入以下代码： #!/usr/local/php/bin/php 这样指定了php路径，即可直接将php脚本当成可执行文件调用： chmod +x /usr/local/script/a.php /usr/local/script/a.php 等效于/usr/local/php/bin/php /usr/local/script/a.php 今天发现有些脚本无法运行，报错&#8220;Extension &#39;**.php&#39; not present.&#8221;： 检查php所有配置均正常，首行的路径也指定。 google这个问题，发现也有人遇到，不过是在放到crontab中的时候执行不了。 在这个帖子中，http://ubuntuforums.org/showthread.php?t=861410，有人提到可能是win换行符导致： 打开我的代码一看，确实多了^M，这个win下的&#34;\r&#34;字符： 去掉首行的这个&#34;\r&#34;，保存后即可正常执行。]]></description>
			<content:encoded><![CDATA[<p>以php cli模式执行脚本a.php，通常需要在脚本a.php首行加入以下代码：</p>
<blockquote>
<p>#!/usr/local/php/bin/php</p>
</blockquote>
<p>这样指定了php路径，即可直接将php脚本当成可执行文件调用：</p>
<blockquote>
<p>chmod +x /usr/local/script/a.php<br />
		/usr/local/script/a.php</p>
</blockquote>
<p>等效于/usr/local/php/bin/php /usr/local/script/a.php</p>
<p>今天发现有些脚本无法运行，报错&ldquo;Extension &#39;**.php&#39; not present.&rdquo;：</p>
<p><a href="http://xiabaibai.net/wp-content/uploads/2011/06/20110602_1.png"><img alt="" class="alignnone size-full wp-image-170" height="17" src="http://xiabaibai.net/wp-content/uploads/2011/06/20110602_1.png" title="20110602_1" width="462" /></a></p>
<p>检查php所有配置均正常，首行的路径也指定。</p>
<p>google这个问题，发现也有人遇到，不过是在放到crontab中的时候执行不了。</p>
<p>在这个帖子中，<a href="http://ubuntuforums.org/showthread.php?t=861410" target="_blank">http://ubuntuforums.org/showthread.php?t=861410</a>，有人提到可能是win换行符导致：</p>
<p><a href="http://xiabaibai.net/wp-content/uploads/2011/06/20110602_3.png"><img alt="" class="alignnone size-full wp-image-172" height="149" src="http://xiabaibai.net/wp-content/uploads/2011/06/20110602_3.png" title="20110602_3" width="613" /></a></p>
<p>打开我的代码一看，确实多了^M，这个win下的&quot;\r&quot;字符：</p>
<p><a href="http://xiabaibai.net/wp-content/uploads/2011/06/20110602_2.png"><img alt="" class="alignnone size-full wp-image-171" height="183" src="http://xiabaibai.net/wp-content/uploads/2011/06/20110602_2.png" title="20110602_2" width="534" /></a></p>
<p>去掉首行的这个&quot;\r&quot;，保存后即可正常执行。</p>
]]></content:encoded>
			<wfw:commentRss>http://xiabaibai.net/2011/06/php-cli-extension-php-not-present/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>24完结</title>
		<link>http://xiabaibai.net/2010/05/24-season8-en/</link>
		<comments>http://xiabaibai.net/2010/05/24-season8-en/#comments</comments>
		<pubDate>Tue, 25 May 2010 15:11:00 +0000</pubDate>
		<dc:creator>威廉</dc:creator>
				<category><![CDATA[未分类]]></category>
		<category><![CDATA[24]]></category>
		<category><![CDATA[杰克鲍尔]]></category>
		<category><![CDATA[美剧]]></category>
		<category><![CDATA[鲍尔]]></category>

		<guid isPermaLink="false">http://xiabaibai.net/?p=162</guid>
		<description><![CDATA[《24》终于完结了。虽然第八季的最后两集刚下完还没看，但是还是想提前感叹一下。8年，8季，一部最好看的电视剧在今天成为历史。它是我最早开始接触的美剧（貌似很多人最早看的是friends吧），陪我度过了5个年头，192个小时。英勇无比的鲍小强简直就是神话，他经历的险境给我们这些热血青年灌注了无比强大的个人英雄主义。即使现在好看的美剧那么多，还经常下载以后来不及看，但24仍然是每周第一时间收割的。水木美剧版上，已经有许多剧友发表感慨，缅怀一路看过的24。其实很多季的剧情已经记不得了，很多人物也都已模糊，但是那种让人绷紧神经的感觉仿佛已经深入脑中，滴答滴答的4声计时亦然余音绕梁。萨瑟兰饰演的鲍尔还是那么年轻、有气势（以前一直纳闷导演居然找了这么矮的一个演员演这么牛逼的特工），感觉他以后要是拍其他电影恐怕都难。24足以载入史册，与friends、越狱、lost等一并为广大美剧爱好者所称道。留此一文，谨以纪念。]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: small;">《24》终于完结了。虽然第八季的最后两集刚下完还没看，但是还是想提前感叹一下。8年，8季，一部最好看的电视剧在今天成为历史。它是我最早开始接触的美剧（貌似很多人最早看的是friends吧），陪我度过了5个年头，192个小时。英勇无比的鲍小强简直就是神话，他经历的险境给我们这些热血青年灌注了无比强大的个人英雄主义。即使现在好看的美剧那么多，还经常下载以后来不及看，但24仍然是每周第一时间收割的。水木美剧版上，已经有许多剧友发表感慨，缅怀一路看过的24。其实很多季的剧情已经记不得了，很多人物也都已模糊，但是那种让人绷紧神经的感觉仿佛已经深入脑中，滴答滴答的4声计时亦然余音绕梁。萨瑟兰饰演的鲍尔还是那么年轻、有气势（以前一直纳闷导演居然找了这么矮的一个演员演这么牛逼的特工），感觉他以后要是拍其他电影恐怕都难。24足以载入史册，与friends、越狱、lost等一并为广大美剧爱好者所称道。留此一文，谨以纪念。</span></p>
<p><a href="http://xiabaibai.net/wp-content/uploads/2010/05/24.jpg"><img class="alignnone size-full wp-image-161" title="24" src="http://xiabaibai.net/wp-content/uploads/2010/05/24.jpg" alt="" width="293" height="391" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://xiabaibai.net/2010/05/24-season8-en/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>BMW之悦广告欣赏：缔造乐趣 分享感动</title>
		<link>http://xiabaibai.net/2010/04/bmw-advertise/</link>
		<comments>http://xiabaibai.net/2010/04/bmw-advertise/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 13:06:17 +0000</pubDate>
		<dc:creator>威廉</dc:creator>
				<category><![CDATA[未分类]]></category>
		<category><![CDATA[BMW之悦]]></category>
		<category><![CDATA[广告]]></category>
		<category><![CDATA[缔造乐趣 分享感动]]></category>

		<guid isPermaLink="false">http://xiabaibai.net/?p=135</guid>
		<description><![CDATA[我们制造汽车 更创造无限激情 让灵感天马行空 让梦想化作现实 我们以创新定义未来 赋予科技情感 让每一次的体验 都带来心灵的感动 BMW之悦 缔造乐趣 分享感动 BMW的新广告创意，每一句的用词都那么完美，聆听即是享受。]]></description>
			<content:encoded><![CDATA[<p>我们制造汽车<br />
更创造无限激情<br />
让灵感天马行空<br />
让梦想化作现实<br />
我们以创新定义未来<br />
赋予科技情感<br />
让每一次的体验<br />
都带来心灵的感动<br />
BMW之悦<br />
缔造乐趣 分享感动</p>
<p>BMW的新广告创意，每一句的用词都那么完美，聆听即是享受。</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="400" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="align" value="middle" /><param name="src" value="http://player.youku.com/player.php/sid/XMTYzNTY0NzQ0/v.swf" /><param name="quality" value="high" /><embed type="application/x-shockwave-flash" width="480" height="400" src="http://player.youku.com/player.php/sid/XMTYzNTY0NzQ0/v.swf" quality="high" align="middle"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://xiabaibai.net/2010/04/bmw-advertise/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

