﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-linus2k-随笔分类-纪念记忆力衰退</title><link>http://www.cnitblog.com/linus2k/category/7021.html</link><description>君子常当当的博客</description><language>zh-cn</language><lastBuildDate>Thu, 01 Mar 2012 10:37:26 GMT</lastBuildDate><pubDate>Thu, 01 Mar 2012 10:37:26 GMT</pubDate><ttl>60</ttl><item><title>纪念记忆力衰退之make: *** [sapi/cli/php] Error 1 解决办法</title><link>http://www.cnitblog.com/linus2k/archive/2012/03/01/77877.html</link><dc:creator>君子常当当</dc:creator><author>君子常当当</author><pubDate>Thu, 01 Mar 2012 03:22:00 GMT</pubDate><guid>http://www.cnitblog.com/linus2k/archive/2012/03/01/77877.html</guid><wfw:comment>http://www.cnitblog.com/linus2k/comments/77877.html</wfw:comment><comments>http://www.cnitblog.com/linus2k/archive/2012/03/01/77877.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/linus2k/comments/commentRss/77877.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/linus2k/services/trackbacks/77877.html</trackback:ping><description><![CDATA[重新编译PHP时出现的<br /><div>/home/king/php-5.2.13/ext/iconv/iconv.c:2491: undefined reference to `libiconv_open'<br /> collect2: ld returned 1 exit status<br /> make: *** [sapi/cli/php] Error 1</div>错误，网上搜了一下<br />使用:<br /><div>make ZEND_EXTRA_LIBS='-liconv'</div>解决问题<br /><br />还有一种方法<br /><div>编辑Makefile 我的php5.2.5在88行的地方: <p> 	EXTRA_LIBS = -lcrypt -lcrypt -lrt -l<a href="http://www.2cto.com/database/mysql/" target="_blank">mysql</a>client_r -lgd -lfreetype -lpng -lz -ljpeg -lz -lresolv -lm -ldl -lnsl -lxml2 -lz -lm -lxml2</p> <p> 	-lz -lm -lmysqlclient_r -lz -lcrypt -lnsl -lm -lxml2 -lz -lm -lxml2 -lz  -lm -lcrypt -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -l</p> <p> 	crypt</p> <p> 	在最后加上-liconv，</p> <p> 	EXTRA_LIBS = -lcrypt -lcrypt -lrt -lmysqlclient_r -lgd -lfreetype -lpng  -lz -ljpeg -lz -lresolv -lm -ldl -lnsl -lxml2 -lz -lm -lxml2</p> <p> 	-lz -lm -lmysqlclient_r -lz -lcrypt -lnsl -lm -lxml2 -lz -lm -lxml2 -lz  -lm -lcrypt -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -l</p> <p> 	crypt -liconv</p> <p> 	然后重新再次make 即可。</p></div>没试过<br />记录一下，免得忘了<img src ="http://www.cnitblog.com/linus2k/aggbug/77877.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/linus2k/" target="_blank">君子常当当</a> 2012-03-01 11:22 <a href="http://www.cnitblog.com/linus2k/archive/2012/03/01/77877.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>纪念记忆力衰退之IE与PureFTPD兼容问题</title><link>http://www.cnitblog.com/linus2k/archive/2012/02/29/77861.html</link><dc:creator>君子常当当</dc:creator><author>君子常当当</author><pubDate>Wed, 29 Feb 2012 06:22:00 GMT</pubDate><guid>http://www.cnitblog.com/linus2k/archive/2012/02/29/77861.html</guid><wfw:comment>http://www.cnitblog.com/linus2k/comments/77861.html</wfw:comment><comments>http://www.cnitblog.com/linus2k/archive/2012/02/29/77861.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/linus2k/comments/commentRss/77861.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/linus2k/services/trackbacks/77861.html</trackback:ping><description><![CDATA[<div>假设我们在192.168.1.1上安装配置了pure-ftpd,并且设置了用户test密码test<br /><br />要使IE能够访问，首先要在配置文件(/etc/pure-ftpd/pure-ftpd.conf)中打开这个选项：<br /><br /># 兼容ie等比较非正规化的ftp客户端 这样，你在关闭了pure-ftpd的匿名访问后IE就会自动出现登录窗口<br />BrokenClientsCompatibility yes<br /><br />其次设置被动模式的端口号和IP地址，如果不设置的话会提示连接被重置<br /><br /># Port range for passive connections replies. - for firewalling.<br /><br />PassivePortRange&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30000 50000<br /><br /># Force an IP address in PASV/EPSV/SPSV replies. - for NAT.<br /># Symbolic host names are also accepted for gateways with dynamic IP<br /># addresses.<br /><br /><br /># 如果本机在公网之中，将此IP地址设置为本机的IP地址。如果不是，请设置为NAT网关地址或域名。<br /><br />ForcePassiveIP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.1<br /><br />最后在防火墙中打开30000:50000（即30000到50000之间）的端口 保存设置后重启防火墙服务和Pure-ftpd服务就OK。<br /><br />在IE中输入 ftp://test:test@193.168.1.1 试试</div><img src ="http://www.cnitblog.com/linus2k/aggbug/77861.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/linus2k/" target="_blank">君子常当当</a> 2012-02-29 14:22 <a href="http://www.cnitblog.com/linus2k/archive/2012/02/29/77861.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>纪念记忆力衰退之PHP fgetcsv 读入档案无「“」时，第一字符被删掉乱码</title><link>http://www.cnitblog.com/linus2k/archive/2011/07/22/74801.html</link><dc:creator>君子常当当</dc:creator><author>君子常当当</author><pubDate>Fri, 22 Jul 2011 02:05:00 GMT</pubDate><guid>http://www.cnitblog.com/linus2k/archive/2011/07/22/74801.html</guid><wfw:comment>http://www.cnitblog.com/linus2k/comments/74801.html</wfw:comment><comments>http://www.cnitblog.com/linus2k/archive/2011/07/22/74801.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/linus2k/comments/commentRss/74801.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/linus2k/services/trackbacks/74801.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在使用 fgetcsv 读取 CSV 档案时，如该 CSV 档案的中文字有「“」时文字是可以正常的，<br>但在一般情况无「"」，则会出现第一个字符被吃掉的情况，以致出现乱码。<br>在网络上的数据多半是建议使用 setlocale 来解决问题<br>但实际情况，并不会解决问题，<br>目前较好的方式是使用另外写的 function 来处理这问题&nbsp;&nbsp;<a href='http://www.cnitblog.com/linus2k/archive/2011/07/22/74801.html'>阅读全文</a><img src ="http://www.cnitblog.com/linus2k/aggbug/74801.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/linus2k/" target="_blank">君子常当当</a> 2011-07-22 10:05 <a href="http://www.cnitblog.com/linus2k/archive/2011/07/22/74801.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>纪念记忆力衰退之Linux下用tar一次解压多个*.tar文件</title><link>http://www.cnitblog.com/linus2k/archive/2011/02/15/72803.html</link><dc:creator>君子常当当</dc:creator><author>君子常当当</author><pubDate>Tue, 15 Feb 2011 02:38:00 GMT</pubDate><guid>http://www.cnitblog.com/linus2k/archive/2011/02/15/72803.html</guid><wfw:comment>http://www.cnitblog.com/linus2k/comments/72803.html</wfw:comment><comments>http://www.cnitblog.com/linus2k/archive/2011/02/15/72803.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/linus2k/comments/commentRss/72803.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/linus2k/services/trackbacks/72803.html</trackback:ping><description><![CDATA[for f in *.tar; do tar xvf $f; done<br><br><img src ="http://www.cnitblog.com/linus2k/aggbug/72803.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/linus2k/" target="_blank">君子常当当</a> 2011-02-15 10:38 <a href="http://www.cnitblog.com/linus2k/archive/2011/02/15/72803.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>纪念记忆力衰退之Postfix的header_checks/body_checks功能补充说明(if-endif)</title><link>http://www.cnitblog.com/linus2k/archive/2010/12/17/72361.html</link><dc:creator>君子常当当</dc:creator><author>君子常当当</author><pubDate>Fri, 17 Dec 2010 01:39:00 GMT</pubDate><guid>http://www.cnitblog.com/linus2k/archive/2010/12/17/72361.html</guid><wfw:comment>http://www.cnitblog.com/linus2k/comments/72361.html</wfw:comment><comments>http://www.cnitblog.com/linus2k/archive/2010/12/17/72361.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/linus2k/comments/commentRss/72361.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/linus2k/services/trackbacks/72361.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: "These rules operate on one logical message header or one body line at a time, and a decision made for one line is not carried over to the next line"<br><br>这些规则一次只检视一条表头(header_checks规则)或一行内文(body_checks规则)，你不能把某一行的检查结果带到另一行去。&nbsp;&nbsp;<a href='http://www.cnitblog.com/linus2k/archive/2010/12/17/72361.html'>阅读全文</a><img src ="http://www.cnitblog.com/linus2k/aggbug/72361.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/linus2k/" target="_blank">君子常当当</a> 2010-12-17 09:39 <a href="http://www.cnitblog.com/linus2k/archive/2010/12/17/72361.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>纪念记忆力衰退之Javascript替换变量</title><link>http://www.cnitblog.com/linus2k/archive/2010/11/19/71484.html</link><dc:creator>君子常当当</dc:creator><author>君子常当当</author><pubDate>Fri, 19 Nov 2010 03:46:00 GMT</pubDate><guid>http://www.cnitblog.com/linus2k/archive/2010/11/19/71484.html</guid><wfw:comment>http://www.cnitblog.com/linus2k/comments/71484.html</wfw:comment><comments>http://www.cnitblog.com/linus2k/archive/2010/11/19/71484.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/linus2k/comments/commentRss/71484.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/linus2k/services/trackbacks/71484.html</trackback:ping><description><![CDATA[str.replace(/s/g,"world") 可以将字符 "s" 替换成 "world" <br><br>如果要替换一个变量呢?<br>var s= "abc";<br>str.replace(new RegExp(s,"g"),"world"); <img src ="http://www.cnitblog.com/linus2k/aggbug/71484.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/linus2k/" target="_blank">君子常当当</a> 2010-11-19 11:46 <a href="http://www.cnitblog.com/linus2k/archive/2010/11/19/71484.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>纪念记忆力衰退之Postfix header_checks正则表达式规则</title><link>http://www.cnitblog.com/linus2k/archive/2010/01/28/64034.html</link><dc:creator>君子常当当</dc:creator><author>君子常当当</author><pubDate>Thu, 28 Jan 2010 10:26:00 GMT</pubDate><guid>http://www.cnitblog.com/linus2k/archive/2010/01/28/64034.html</guid><wfw:comment>http://www.cnitblog.com/linus2k/comments/64034.html</wfw:comment><comments>http://www.cnitblog.com/linus2k/archive/2010/01/28/64034.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/linus2k/comments/commentRss/64034.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/linus2k/services/trackbacks/64034.html</trackback:ping><description><![CDATA[<meta http-equiv="Content-Type" content="text/html; charset="utf-8"">
<meta name="ProgId" content="Word.Document">
<meta name="Generator" content="Microsoft Word 11">
<meta name="Originator" content="Microsoft Word 11">
<link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CWEILIU%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"><!--[if gte mso 9]><xml>
<w:worddocument>
<w:view>Normal</w:view>
<w:zoom>0</w:zoom>
<w:punctuationkerning/>
<w:drawinggridverticalspacing>7.8 磅</w:drawinggridverticalspacing>
<w:displayhorizontaldrawinggridevery>0</w:displayhorizontaldrawinggridevery>
<w:displayverticaldrawinggridevery>2</w:displayverticaldrawinggridevery>
<w:validateagainstschemas/>
<w:saveifxmlinvalid>false</w:saveifxmlinvalid>
<w:ignoremixedcontent>false</w:ignoremixedcontent>
<w:alwaysshowplaceholdertext>false</w:alwaysshowplaceholdertext>
<w:compatibility>
<w:spaceforul/>
<w:balancesinglebytedoublebytewidth/>
<w:donotleavebackslashalone/>
<w:ultrailspace/>
<w:donotexpandshiftreturn/>
<w:adjustlineheightintable/>
<w:breakwrappedtables/>
<w:snaptogridincell/>
<w:wraptextwithpunct/>
<w:useasianbreakrules/>
<w:dontgrowautofit/>
<w:usefelayout/>
</w:compatibility>
<w:browserlevel>MicrosoftInternetExplorer4</w:browserlevel>
</w:worddocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:latentstyles deflockedstate="false" latentstylecount="156">
</w:latentstyles>
</xml><![endif]--><style>
<!--
/* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:12.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:宋体;
mso-font-kerning:1.0pt;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page Section1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:36.0pt;
mso-footer-margin:36.0pt;
mso-paper-source:0;}
div.Section1
{page:Section1;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}
</style>
<![endif]-->
<p class="MsoNormal" style="text-align: left;" align="left"><strong><span style="font-size: 24pt; font-family: 宋体;" lang="EN-US">Postfix header_checks</span></strong><strong><span style="font-size: 24pt; font-family: 宋体;">正则表达式规则<span lang="EN-US"><o:p></o:p></span></span></strong></p>
<table class="MsoNormalTable" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td style="padding: 0cm;">
            <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;">在规则詏定文件里面<span lang="EN-US"> ( </span>就是<span lang="EN-US"> header_checks </span>与<span lang="EN-US"> body_checks ) </span>只要是<span lang="EN-US"> # </span>代表该行为批注，系统或直接略过；<span lang="EN-US"><br>
            </span>所谓的过瀡规则即是<span lang="EN-US"> header </span>与<span lang="EN-US"> body </span>里面的『阷锁字』，例如我不想让<span lang="EN-US"> 192.168.100.5 </span>这个<span lang="EN-US"> ip </span>寄件到我的 <span lang="EN-US">mail server </span>，那黱这个<span lang="EN-US"> from:.* 192.168.100.5 </span>就是一条规则了！那个<span lang="EN-US"> .* </span>代表什黱意思呢？他代表『没有或多个任意字符』的意思～更详细的说明请参考各个正规表示法的标准说明了！常见的正规表示法特殊字符与意义为：<span lang="EN-US"><br>
            </span>『<span lang="EN-US">.</span>』：代表任意字符<span lang="EN-US"><br>
            </span>『』：代表跳脱字符，可以让后面接的一个字符变成一般字符；<span lang="EN-US"><br>
            </span>『<span lang="EN-US">*</span>』：代表重复零个或多个前一个<span lang="EN-US"> re </span>的字符，例如『<span lang="EN-US">.*</span>』则代表任意零个或多个字符的意思；<span lang="EN-US"><br>
            </span>『<span lang="EN-US">^</span>』：代表『这一行的第一个字符需要符合规则』的意思；<span lang="EN-US"><br>
            </span>『<span lang="EN-US">$</span>』：代表这一行的最后一个字符必须要符合这个字符的意思，<span lang="EN-US"><br>
            </span>单一规则的詏定方法为：<span lang="EN-US"><br>
            /</span>规则<span lang="EN-US">/&nbsp;&nbsp;</span>动作<span lang="EN-US">&nbsp;&nbsp;</span>显示在登录文件里面的讯息<span lang="EN-US"><br>
            </span>请注意，要使用两个『<span lang="EN-US"> / </span>』将规则包起来喔！举个例子来说明：例如我想要<span lang="EN-US"> (1)</span>抵挡掉标题为<span lang="EN-US"> a funny game </span>的信件，<span lang="EN-US">(2)</span>乲且在登录文件里面显示<span lang="EN-US"> drop header deny</span>，我可以这样写：<span lang="EN-US"><br>
            /^subject:.*a funny game/&nbsp;&nbsp;discard drop header deny<br>
            <br>
            </span>在颊詏的规则当中，大小写是视为相同的；<span lang="EN-US"><br>
            </span>如果有两条以上的规则，那黱就必须要使用<span lang="EN-US"> if </span>了，例如底下的案例：<span lang="EN-US"><br>
            if /^content-type:.*audio.*x-midi/<br>
            /^.*name=.*.scr/&nbsp;&nbsp;discard&nbsp; &nbsp;drop the header inavalid<br>
            endif<br>
            </span>上面的意思是，当一封邮件里面同时包含『<span lang="EN-US"> content-type: audio.x-midi </span>』与『<span lang="EN-US">name=*.scr</span>』时，该封信件就会被乬弃了！那黱如果有三条以上的规则时呢？呵呵！就是使用多个<span lang="EN-US"> if </span>来适行啦！<span lang="EN-US"><br>
            if /rule1/<br>
            if /rule2/<br>
            /rule3/&nbsp;&nbsp;</span>动作<span lang="EN-US">&nbsp; &nbsp;</span>显示字眼<span lang="EN-US"><br>
            endif<br>
            endif<br>
            </span>不过请特别留意，这个<span lang="EN-US"> if .... endif </span>的詏定我僪在<span lang="EN-US"> 2.x </span>版本上面试过，是没有问题的，不过，已经有很多的朋友提出说，在<span lang="EN-US"> 1.xx </span>版本上面执行时会有问题发生，所以如果您的
            <span lang="EN-US">postfix </span>不是<span lang="EN-US"> 2.xx </span>版本，那黱底下鴅哥列出的两个范例就参考看看即可，不可直接套用喔！<span lang="EN-US"><br>
            </span>阷于动作有底下几个动作：<span lang="EN-US"><br>
            reject </span>：将该封信件退回给原发信者；<span lang="EN-US"><br>
            warn&nbsp; &nbsp;</span>：将信件收下来，但是将该封信的基本赕料记录在登录文件内；<span lang="EN-US"><br>
            discard</span>：将该封信件乬弃，乲不给予原发信者回应！<span lang="EN-US"><br>
            </span>一般来说我是比较喜欢以<span lang="EN-US"> discard </span>将信件直接乬弃的啦！<span lang="EN-US"> ^_^<br>
            </span>此外，请特别留意，在各主要<span lang="EN-US"> linux distribution </span>释出的<span lang="EN-US"> 1.xx </span>版本中，乲无法使用<span lang="EN-US"> discard </span>的规则喔！所以您只能使用<span lang="EN-US"> reject </span>了！<span lang="EN-US"><o:p></o:p></span></span></p>
            </td>
        </tr>
    </tbody>
</table><img src ="http://www.cnitblog.com/linus2k/aggbug/64034.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/linus2k/" target="_blank">君子常当当</a> 2010-01-28 18:26 <a href="http://www.cnitblog.com/linus2k/archive/2010/01/28/64034.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>纪念记忆力衰退之Postfix+Maildrop实现虚拟邮件域</title><link>http://www.cnitblog.com/linus2k/archive/2009/09/07/61289.html</link><dc:creator>君子常当当</dc:creator><author>君子常当当</author><pubDate>Mon, 07 Sep 2009 08:28:00 GMT</pubDate><guid>http://www.cnitblog.com/linus2k/archive/2009/09/07/61289.html</guid><wfw:comment>http://www.cnitblog.com/linus2k/comments/61289.html</wfw:comment><comments>http://www.cnitblog.com/linus2k/archive/2009/09/07/61289.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/linus2k/comments/commentRss/61289.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/linus2k/services/trackbacks/61289.html</trackback:ping><description><![CDATA[<a  href="http://www.cnitblog.com/linus2k/archive/2009/07/09/59956.html" id="viewpost1_TitleUrl">1.courier-authlib中的authmysqlrc配置</a><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">##NAME:&nbsp;MYSQL_LOGIN_FIELD:</span><span style="color: #000000;">0</span><span style="color: #000000;"><br>#<br>#&nbsp;The&nbsp;login&nbsp;id,&nbsp;</span><span style="color: #0000ff;">default</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">is</span><span style="color: #000000;">&nbsp;id.&nbsp;&nbsp;Basically&nbsp;the&nbsp;query&nbsp;</span><span style="color: #0000ff;">is</span><span style="color: #000000;">:<br>#<br>#&nbsp;&nbsp;SELECT&nbsp;MYSQL_UID_FIELD,&nbsp;MYSQL_GID_FIELD,&nbsp;<img src="http://www.cnitblog.com/Images/dot.gif">&nbsp;WHERE&nbsp;id</span><span style="color: #000000;">=</span><span style="color: #000000;">'</span><span style="color: #000000;">loginid</span><span style="color: #000000;">'</span><span style="color: #000000;"><br>#<br><br>MYSQL_LOGIN_FIELD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;concat(user_name,&nbsp;concat(</span><span style="color: #000000;">"</span><span style="color: #000000;">@</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;user_email_domain))<br><br>##NAME:&nbsp;MYSQL_NAME_FIELD:</span><span style="color: #000000;">0</span><span style="color: #000000;"><br>#<br>#&nbsp;The&nbsp;user</span><span style="color: #000000;">'</span><span style="color: #000000;">s&nbsp;name&nbsp;(optional)</span><span style="color: #000000;"><br></span><span style="color: #000000;"><br>MYSQL_NAME_FIELD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;concat(user_name,&nbsp;concat(</span><span style="color: #000000;">"</span><span style="color: #000000;">@</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;user_email_domain))</span></div>
2.postfix中master.cf中的配置<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">maildrop&nbsp;&nbsp;unix&nbsp;&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pipe<br>&nbsp;&nbsp;flags</span><span style="color: #000000;">=</span><span style="color: #000000;">DRhu&nbsp;user</span><span style="color: #000000;">=</span><span style="color: #000000;">vmail:vmail&nbsp;argv</span><span style="color: #000000;">=</span><span style="color: #000000;">maildrop&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">w&nbsp;</span><span style="color: #000000;">90</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">V&nbsp;</span><span style="color: #000000;">10</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">d&nbsp;${user}@${nexthop}&nbsp;${extension}&nbsp;${recipient}&nbsp;${user}&nbsp;${nexthop}</span></div>
3.postfix中main.cf中的配置<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">virtual_transport&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;maildrop<br>maildrop_destination_recipient_limit&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;"><br>maildrop_destination_concurrency_limit&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;"><br>receive_override_options&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;no_address_mappings</span></div>
4.maildrop中maildroprc的配置<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">logfile&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">/var/log/maildrop.log</span><span style="color: #000000;">"</span><span style="color: #000000;"><br>VHOST</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">$HOME/$1/$2</span><span style="color: #000000;">"</span><span style="color: #000000;"><br>MAILDIR</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">$VHOME/Maildir</span><span style="color: #000000;">"</span><span style="color: #000000;"><br>CUSTOM_FILTER</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">$VHOME/.mailfilter</span><span style="color: #000000;">"</span></div>
我与网络上其他配置不同的地方是我的user_name字段值记录用户名，而不记录用户的电子邮件，所以按照网络上的配置方法，无法实现虚拟邮件域，所以需要修改这些，赶紧记录一下，免的忘了，其他的有时间再整理出<br><img src ="http://www.cnitblog.com/linus2k/aggbug/61289.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/linus2k/" target="_blank">君子常当当</a> 2009-09-07 16:28 <a href="http://www.cnitblog.com/linus2k/archive/2009/09/07/61289.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>纪念记忆力衰退之区别不同浏览器，CSS hack写法</title><link>http://www.cnitblog.com/linus2k/archive/2009/07/09/59956.html</link><dc:creator>君子常当当</dc:creator><author>君子常当当</author><pubDate>Thu, 09 Jul 2009 03:17:00 GMT</pubDate><guid>http://www.cnitblog.com/linus2k/archive/2009/07/09/59956.html</guid><wfw:comment>http://www.cnitblog.com/linus2k/comments/59956.html</wfw:comment><comments>http://www.cnitblog.com/linus2k/archive/2009/07/09/59956.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/linus2k/comments/commentRss/59956.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/linus2k/services/trackbacks/59956.html</trackback:ping><description><![CDATA[区别不同浏览器，CSS hack写法：<br><br>区别IE6与FF：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; background:orange;*background:blue;<br><br>区别IE6与IE7：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; background:green !important;background:blue;<br><br>区别IE7与FF：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; background:orange; *background:green;<br><br>区别FF，IE7，IE6：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; background:orange;*background:green !important;*background:blue;<br><br>注：IE都能识别*;标准浏览器(如FF)不能识别*；<br>IE6能识别*，但不能识别 !important,<br>IE7能识别*，也能识别!important;<br>FF不能识别*，但能识别!important;<br><br><img src ="http://www.cnitblog.com/linus2k/aggbug/59956.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/linus2k/" target="_blank">君子常当当</a> 2009-07-09 11:17 <a href="http://www.cnitblog.com/linus2k/archive/2009/07/09/59956.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转贴]限制部分Postfix用户只能内部收发的例子（完整版）</title><link>http://www.cnitblog.com/linus2k/archive/2009/06/25/59629.html</link><dc:creator>君子常当当</dc:creator><author>君子常当当</author><pubDate>Thu, 25 Jun 2009 07:12:00 GMT</pubDate><guid>http://www.cnitblog.com/linus2k/archive/2009/06/25/59629.html</guid><wfw:comment>http://www.cnitblog.com/linus2k/comments/59629.html</wfw:comment><comments>http://www.cnitblog.com/linus2k/archive/2009/06/25/59629.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/linus2k/comments/commentRss/59629.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/linus2k/services/trackbacks/59629.html</trackback:ping><description><![CDATA[<br>原来的帖子：http://www.extmail.org/forum/viewthread.php?tid=524 这里实现的功能有些缺陷，对于限制的用户，其实只能对其外发（或者说rcpt to）做限制，而对于任意来信人给其发来的email则没有限制能力，真正的内部收发邮件用户，应该是只允许它和指定的内部域名（用户）联系，对于发向任何外部邮件域，或任意外部邮件域发来的邮件，都是禁止的。<br><br>这里给出一个配置，仅供大家参考。<br><br>配置方法：<br><br>1）在main.cf里定义如下的smtpd_restriction_classes：<br>引用:<br><br>&nbsp;&nbsp;&nbsp; # restrictions<br>&nbsp;&nbsp;&nbsp; smtpd_restriction_classes = local_out_only local_in_only<br>&nbsp;&nbsp;&nbsp; local_out_only = check_recipient_access hash:/etc/postfix/local_domains, reject<br>&nbsp;&nbsp;&nbsp; local_in_only = check_sender_access hash:/etc/postfix/local_domains, reject<br><br>2）将main.cf里的smtpd_recipient_restrctions定义为：<br>引用:<br><br>&nbsp;&nbsp;&nbsp; smtpd_recipient_restrictions =<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; check_sender_access hash:/etc/postfix/local_out_senders<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; check_recipient_access hash:/etc/postfix/local_in_senders<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; permit_mynetworks,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; permit_sasl_authenticated,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reject_non_fqdn_hostname,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reject_non_fqdn_sender,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reject_non_fqdn_recipient,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reject_unauth_destination,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reject_unauth_pipelining,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reject_invalid_hostname,<br><br>3）编辑/etc/postfix/local_in_senders：<br>引用:<br><br>&nbsp;&nbsp;&nbsp; foo@extmail.org local_in_only<br>&nbsp;&nbsp;&nbsp; bar@extmail.org local_in_only<br><br>4）编辑/etc/postifx/local_out_senders：<br>引用:<br><br>&nbsp;&nbsp;&nbsp; foo@extmail.org local_out_only<br>&nbsp;&nbsp;&nbsp; bar@extmail.org local_out_only<br><br>5）编辑/etc/postfix/local_domains：<br>引用:<br><br>&nbsp;&nbsp;&nbsp; internal.foo.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OK<br>&nbsp;&nbsp;&nbsp; internal.bar.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OK<br><br>6）为3，4，5建立对应的hash文件：<br>引用:<br><br>&nbsp;&nbsp;&nbsp; # postmap hash:/etc/postfix/local_in_senders<br>&nbsp;&nbsp;&nbsp; # postmap hash:/etc/postfix/local_out_senders<br>&nbsp;&nbsp;&nbsp; # postmap hash:/etc/postfix/local_domains<br><br>这样就定义了extmail.org域名里两个用户foo和bar，只允许和internal.foo.com和internel.bar.com 两个内部域的用户来往邮件，对于外部的邮件则没有收或发的能力。如果外部邮件企图给这2个用户发送，则遇到如下错误：<br>引用:<br><br>&nbsp;&nbsp;&nbsp; 554 5.7.1 &lt;foo@extmail.org&gt;: Recipient address rejected: Access denied<br><br>如果这2个内部用户要给外部用户发email，将遇到如下错误：<br>引用:<br><br>&nbsp;&nbsp;&nbsp; 554 5.7.1 &lt;bar@extmail.org&gt;: Sender address rejected: Access denied<br><br>目前这样的配置就可以比较完整的实现内部用户的功能需求了。其实这种配置的方法和之前的帖子道理一样，关键得分清楚什么阶段，调用什么restrictions即可。<br><img src ="http://www.cnitblog.com/linus2k/aggbug/59629.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/linus2k/" target="_blank">君子常当当</a> 2009-06-25 15:12 <a href="http://www.cnitblog.com/linus2k/archive/2009/06/25/59629.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>纪念记忆力衰退之构建MTA层邮件防火墙</title><link>http://www.cnitblog.com/linus2k/archive/2009/06/25/59628.html</link><dc:creator>君子常当当</dc:creator><author>君子常当当</author><pubDate>Thu, 25 Jun 2009 07:07:00 GMT</pubDate><guid>http://www.cnitblog.com/linus2k/archive/2009/06/25/59628.html</guid><wfw:comment>http://www.cnitblog.com/linus2k/comments/59628.html</wfw:comment><comments>http://www.cnitblog.com/linus2k/archive/2009/06/25/59628.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/linus2k/comments/commentRss/59628.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/linus2k/services/trackbacks/59628.html</trackback:ping><description><![CDATA[构建MTA层<span href="http://www.extmail.org/forum/tag.php?name=%E9%82%AE%E4%BB%B6" onclick="tagshow(event)" class="t_tag">邮件</span>防火墙<br>
<br>
不请自来的邮件,我们叫<span href="http://www.extmail.org/forum/tag.php?name=%E5%9E%83%E5%9C%BE%E9%82%AE%E4%BB%B6" onclick="tagshow(event)" class="t_tag">垃圾邮件</span>,垃圾邮件的危害:<br>
占用<span href="http://www.extmail.org/forum/tag.php?name=%E7%B3%BB%E7%BB%9F" onclick="tagshow(event)" class="t_tag">系统</span>资源,包括硬盘空间和带宽<br>
干扰合法邮件的递送<br>
以第三方名义转发的垃圾邮件,会使宿主收到大量的退信和进入<span href="http://www.extmail.org/forum/tag.php?name=%E9%BB%91%E5%90%8D%E5%8D%95" onclick="tagshow(event)" class="t_tag">黑名单</span><br>
<br>
MTA层邮件防火墙的特点<br>
在垃圾邮件进入队列前,进行阻挡,把对系统的影响减少到最低限度<br>
技术手段简单,效率高<br>
只能阻挡特征比较明显的垃圾邮件<br>
缺少容错性,要结合MDA层信件过滤技术,如:proc<span href="http://www.extmail.org/forum/tag.php?name=mail" onclick="tagshow(event)" class="t_tag">mail</span>,maildrop等<br>
<br>
MTA层邮件防火墙机制<br>
MTA层邮件防火墙基于UBE检查,通过对SMTP对话不同层面的逐一控制,从而起到阻挡垃圾邮件的目的,而阻挡作用是双向性的,如果你想发垃圾邮件的话,要赶快拆除防火墙,以下是防火墙不同层面的描述:<br>
SMTP&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;UBE&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;功能<br>
SERVER and CLIENT&nbsp;&nbsp;smtpd_client_restrictions&nbsp; &nbsp;&nbsp; &nbsp;连接的客户端主机名/地址控制<br>
HELO&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;smtpd_helo_restrictions&nbsp; &nbsp;&nbsp; &nbsp;接洽控制<br>
MAIL FROM&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;smtpd_sender_restrictions&nbsp; &nbsp; 发件人地址控制<br>
RCPT TO&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;smtpd_recipient_restrictions&nbsp;&nbsp;<span href="http://www.extmail.org/forum/tag.php?name=%E6%94%B6%E4%BB%B6%E4%BA%BA" onclick="tagshow(event)" class="t_tag">收件人</span>地址控制<br>
DATA&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;smtpd_data_restrictions&nbsp; &nbsp;&nbsp; &nbsp;DATA控制<br>
SUBJECT&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;header_checks&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 信头过滤<br>
正文&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;body_checks&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;正文内容检查<br>
<br>
如何构建防火墙<br>
方法一:在main.cf文件中编写规则<br>
方法二:编制对照表<br>
方法三:实时黑名单(RBL)<br>
<br>
测试方法<br>
postfix提供了一个参数,让你用来测试新限制条件:<br>
&nbsp;&nbsp;soft_bounce = yes<br>
设定yes时,原本应该退信的动作,会改为将邮件放回队列,等待下次递送.在一段等待时间(1000s),让你有充足的时间来调整参数,然后重新发送.<br>
再有就是打开日志功能,观测日志变化.<br>
<br>
注意:<br>
在测试时,如果服务器运行在本机上,不要使用telnet方式测试,telnet是以登陆本服务器上操作的方式,测试client是不起作用的.要运行客户端邮件程序来测试.<br>
单独测试每一项规则,才知道因果关系.<br>
<br>
编写main.cf文件<br>
编写规则时,不一定要将规则分别设定给不同的参数下,可以集中在同一个参数下,任何限制条件都可以用于任何过滤规则,让你更加灵活地安排限制条件.<br>
<br>
规则语法<br>
规则是由permit_或reject_开头,不需要额外的自变量.permit是允许之意,reject是拒绝之意.而内容检查需要在对照表里使用正则表达式.<br>
<br>
允许规则<br>
permit_naked_ip_address<br>
RFC要求客户端的HELO命令包含的ip地址放在方括号内，可以用此参数取消该限制。<br>
<br>
permit_mynetworks<br>
如果客户端的ip地址符合\$mynetworks参数定义的范围则接受该客户端的连接请求，并转发该邮件。<br>
<br>
permit_auth_destination<br>
permit_sasl_authenticated<br>
仅仅中继通过SMTP认证的客户端邮件，以及接收本postfix为最后一站的邮件.SASL认证使用的选项.<br>
<br>
<span href="http://www.extmail.org/forum/tag.php?name=DNS" onclick="tagshow(event)" class="t_tag">DNS</span>限制规则<br>
DNS限制条件确认客户端所在的网络以及信封上的邮件地址,是否有可查验的DNS信息.<br>
reject_unknown_client<br>
当客户端接入后,即可获取其ip地址,postfix通过DNS查找客户端IP地址的PTR记录,不成功,立即拒绝服务.如果成功查出PTR记录,得出主机名称,再用此主机名称向DNS查相对应的IP地址,与先前所得的ip地址比较,相符后返回ok.<br>
拒绝返回码:450.<br>
<br>
reject_unknown_hostname<br>
如果HELO命令提供的主机名称,没有A记录,也没有MX记录的,拒绝服务.拒绝返回码:450.<br>
<br>
reject_unknown_recipient_domain<br>
如果RCPT TO命令提供的收件人地址,其网域部分查不出有效的A或MX记录,拒绝服务.拒绝返回码:450.<br>
<br>
reject_unknown_sender_domain<br>
如果MAIL FROM命令提供的寄件人地址,其网域部分查不出有效的A或MX记录,拒绝服务.拒绝,返回错误代码为450.<br>
MAIL FROM地址是退信通知的收件地址,捏造MAIL FROM地址是垃圾邮件发送者常用的伎俩.<br>
<br>
常用的限制规则<br>
reject_non_fqdn_hostname<br>
reject_non_fqdn_recipient<br>
reject_non_fqdn_sender<br>
客户端提供的邮件地址不是完整形式(FQDN),拒绝服务.拒绝返回码:504.<br>
<br>
reject_invalid_hostname<br>
如果HELO命令所带的主机名参数不符合语法规范则,拒绝客户机的连接请求。拒绝返回码:501。<br>
<br>
reject_unauth_pipelining<br>
拒绝不经批准的流水线操作,pipeling是一种加速处理大宗邮件的技术.<br>
<br>
reject_unauth_destination<br>
如果收件地址不位于辖域,如<img src="http://www.extmail.org/forum/images/smilies/default/shy.gif" smilieid="8" alt="" border="0">relay_domains及其子域,$inet_interfaces、$mydestination<br>
或$virtual_maps、$virtual_alias_maps等等,拒绝返回码:554.<br>
<br>
编制访问表(access map)<br>
涉及运用<span href="http://www.extmail.org/forum/tag.php?name=%E8%B5%84%E6%96%99" onclick="tagshow(event)" class="t_tag">资料</span>核对方式来<span href="http://www.extmail.org/forum/tag.php?name=%E9%AA%8C%E8%AF%81" onclick="tagshow(event)" class="t_tag">验证</span>的,使用对照表是一个好办法.access文件是进出postfix辖域的通行证,里面可以是ip地址,邮件地址,主机名,<span href="http://www.extmail.org/forum/tag.php?name=%E5%9F%9F%E5%90%8D" onclick="tagshow(event)" class="t_tag">域名</span>,等等,对应值是处理动作OK或REJECT等.access文件的范例:<br>
<br>
#access list<br>
sina.com&nbsp; &nbsp;&nbsp; &nbsp;reject<br>
tom.com&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; ok<br>
192.168.0.2&nbsp; &nbsp;&nbsp; &nbsp;reject<br>
alange&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; reject<br>
<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#97;&#98;&#99;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;">abc@example.com</a>&nbsp; &nbsp;&nbsp; &nbsp;reject<br>
def@&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; reject<br>
<br>
.......<br>
<br>
记得每一次改动后,都要运行postmap来建数据库:<br>
#postmap /etc/postfix/access<br>
<br>
响应动作解释:<br>
响应动作码为:OK,通过当前过滤规则的检查,继续检查下一组过滤规则.<br>
响应动作码为<img src="http://www.extmail.org/forum/images/smilies/default/biggrin.gif" smilieid="3" alt="" border="0">UNNO,没有明确结果,所有规则结果都是DUNNO,默认收下邮件.<br>
响应动作码为:REJECT,立即拒绝.<br>
响应动作码为<img src="http://www.extmail.org/forum/images/smilies/default/biggrin.gif" smilieid="3" alt="" border="0">EFER,婉拒请求,客户端被告知稍后再试 <br>
响应动作码为:FILTER,将邮件转交给指定的内容过滤器.<br>
响应动作码为:HOLD,将邮件放在保留队列,直到删除或释放给MDA处理.<br>
响应动作码为<img src="http://www.extmail.org/forum/images/smilies/default/biggrin.gif" smilieid="3" alt="" border="0">ISCARD,收下邮件后立刻丢弃,慎重使用,暗自丢掉邮件是不道德的行为.<br>
<br>
使用访问表<br>
编辑main.cf文件,添加:<br>
smtpd_client_restrictions = check_client_access&nbsp; &nbsp; hash:/etc/postfix/access<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;check_helo_access&nbsp; &nbsp;&nbsp;&nbsp;hash:/etc/postfix/access<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;check_recipient_access&nbsp;&nbsp;hash:/etc/postfix/access<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;check_sender_access&nbsp; &nbsp; hash:/etc/postfix/access<br>
<br>
把所有匹配项:client_access ,helo_access, recipient_access, sender_access集中在一个access文件里,容易管理和操作,这样的限制是全方位的.<br>
匹配规则:<br>
设定了网址的,其所有子网都包含进去;<br>
设定用户名为条件的,用户名匹配,即使域名不相同也是匹配;<br>
完整邮件地址的要全匹配.<br>
<br>
内容检查<br>
内容检查是通过对邮件内容,包括标题和正文进行<strong><font color="#ff0000">审核</font></strong>,是阻隔垃圾邮件最直接的手段,<span href="http://www.extmail.org/forum/tag.php?name=Postfix" onclick="tagshow(event)" class="t_tag">Postfix</span>提供了四个检查邮件内容的参数:<br>
<br>
参数&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;功能<br>
header_checks&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;检查标题<br>
mime_header_checks&nbsp; &nbsp;&nbsp; &nbsp; 检查标题的MIME相关字段<br>
nested_header_checks&nbsp; &nbsp;&nbsp; &nbsp;检查夹带附件的标题<br>
body_checks&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 检查邮件的正文<br>
<br>
如何进行内容检查<br>
内容检查的主要手段是使用正则表达式来寻找敏感字符(不区分大小写),检索特征放置在/.../之间,然后是要进行的动作.首先:<br>
设定使用的正则表达式类型<br>
regexp: Postfix的标准正则表达式语法<br>
pcre: Perl兼容的语法<br>
<br>
使用下列命令来查出可用的类型:<br>
#<span href="http://www.extmail.org/forum/tag.php?name=postconf" onclick="tagshow(event)" class="t_tag">postconf</span> -m<br>
<br>
修改文件main.cf,使得postfix支持内容检查,添加:<br>
<br>
header_checks = regexp:/etc/postfix/checks<br>
body_checks&nbsp;&nbsp;= pcre:/etc/postfix/checks<br>
body_checks_size_limit = 51200<br>
#限制检查长度,是减轻系统负担的好策略,默认检查50k.<br>
<br>
内容检查的响应动作<br>
响应动作为:REJECT ,如果模式匹配成功,立即拒收邮件,并且将message-text内容传给客户端<br>
响应动作为:WARN ,模拟拒收动作,不会真的拒收,只将message-text内容记录在<span href="http://www.extmail.org/forum/tag.php?name=%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6" onclick="tagshow(event)" class="t_tag">日志文件</span>中,并停止对比后续模式,方便测试之用.<br>
响应动作为:IGNORE,删除符合模式的标题字段或整行文字.常用来删除包含内部网络信息,小心使用.<br>
响应动作为:FILTER transport:nexthop,先将邮件排入队列,然后转交给指定的外部过滤程序.<br>
响应动作为:HOLD,将邮件放在保留队列,直到删除或释放给MDA处理.<br>
响应动作为:DISCARD,收下邮件后立刻丢弃,慎重使用,暗自丢掉邮件是不道德的行为.但另一方面,对付顽固不化的分子,退信,反而加大系统的负荷,干脆丢掉.<br>
<br>
编写内容检查表<br>
只要发现字段符合某正则表达式,整个对比过程就立刻结束,并执行对应的动作.如下是建立checks文件,这里的checks表同时使用在检查标题和正文的,既然是过滤关键字,就不论出现在那里了,维护管理起来会方便许多,范例:<br>
<br>
#checks list<br>
/abc/&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;reject<br>
/中文测试/&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;reject<br>
/^Subject: make money fast/&nbsp; &nbsp;&nbsp;&nbsp;REJECT<br>
/^To: friend@public\.com/&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;REJECT<br>
<br>
.......<br>
<br>
内容检查表不需用postmap命令来生成数据库,直接使用即可,但可以用postmap来测试规则,如下:<br>
#postmap -fq "abc" regexp:/etc/postfix/checks<br>
reject<br>
<br>
整个文件来测试:<br>
#postmap -fq - pcre:/etc/postfix/checks &lt; inputfile<br>
<br>
除了使用正则表达式以外,还能使用简单的条件判断,如:取反,多条件判断等,个人认为,不宜使用条件判断,编辑复杂的规则,还不如直接了当的找出关键字.详细信息参考手册: man regexp_table或 man pcre_table.<br>
<br>
实时黑名单(RBL)<br>
实时黑名单(Real-Time Blacklist ,RBL)是一种专为抵制垃圾邮件而设计的网络服务.让SMTP服务器通过DNS系统实时查询客户端是否为垃圾源.具体使用要联系服务提供商.选项有下:<br>
reject_rbl_client rblprovider.domain<br>
reject_rhsbl_client rblprovider.domain<br>
reject_rhsbl_sender rblprovider.domain<br>
<br>
实例:<br>
main.cf文件(节选)<br>
#SASL<br>
smtpd_sasl_auth_enable = yes<br>
smtpd_recipient_restrictions = permit_sasl_authenticated permit_auth_destination reject<br>
broken_sasl_auth_clients = yes<br>
smtpd_sasl_security_options = noanonymous <br>
<br>
smtpd_recipient_restrictions = <br>
#PERMIT:<br>
permit_naked_ip_address<br>
permit_mynetworks <br>
#DNS:<br>
#reject_unknown_client<br>
#reject_unknown_hostname<br>
#reject_unknown_recipient_domain <br>
#reject_unknown_sender_domain <br>
#REJECT:<br>
#reject_non_fqdn_hostname <br>
reject_non_fqdn_recipient<br>
reject_non_fqdn_sender <br>
reject_invalid_hostname<br>
reject_unauth_pipelining<br>
reject_unauth_destination <br>
#ACCESS:<br>
check_client_access&nbsp; &nbsp; hash:/etc/postfix/access<br>
check_helo_access&nbsp; &nbsp;&nbsp;&nbsp;hash:/etc/postfix/access<br>
check_recipient_access&nbsp;&nbsp;hash:/etc/postfix/access<br>
check_sender_access&nbsp; &nbsp; hash:/etc/postfix/access<br>
<br>
#CHECKS:<br>
header_checks = regexp:/etc/postfix/checks<br>
body_checks&nbsp;&nbsp;= regexp:/etc/postfix/checks<br>
body_checks_size_limit = 51200<br>
<br>
此文件要注意格式,属于smtpd\_recipient\_restrictions参数项,前面要有空格.checks不属于这参数项,而是main.cf的参数,所以前面不能有空格.<br>
<br>
刚刚研究邮件系统,参考了&lt;&lt;postfix 权威指南&gt;&gt;一书,并稍稍做了一些实验,写下这篇的心得,欢迎指教 <img src ="http://www.cnitblog.com/linus2k/aggbug/59628.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/linus2k/" target="_blank">君子常当当</a> 2009-06-25 15:07 <a href="http://www.cnitblog.com/linus2k/archive/2009/06/25/59628.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>纪念记忆力衰退之抽烟的技巧（刚学的，没试过）</title><link>http://www.cnitblog.com/linus2k/archive/2009/06/25/59627.html</link><dc:creator>君子常当当</dc:creator><author>君子常当当</author><pubDate>Thu, 25 Jun 2009 07:05:00 GMT</pubDate><guid>http://www.cnitblog.com/linus2k/archive/2009/06/25/59627.html</guid><wfw:comment>http://www.cnitblog.com/linus2k/comments/59627.html</wfw:comment><comments>http://www.cnitblog.com/linus2k/archive/2009/06/25/59627.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/linus2k/comments/commentRss/59627.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/linus2k/services/trackbacks/59627.html</trackback:ping><description><![CDATA[1. 泡一杯茶<br>
2. 把过滤嘴放在茶里弄湿了<br>
3. 开始抽吧  <img src ="http://www.cnitblog.com/linus2k/aggbug/59627.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/linus2k/" target="_blank">君子常当当</a> 2009-06-25 15:05 <a href="http://www.cnitblog.com/linus2k/archive/2009/06/25/59627.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>纪念记忆力衰退之POSTFIX邮件退信日志分析</title><link>http://www.cnitblog.com/linus2k/archive/2008/04/03/41895.html</link><dc:creator>君子常当当</dc:creator><author>君子常当当</author><pubDate>Thu, 03 Apr 2008 05:15:00 GMT</pubDate><guid>http://www.cnitblog.com/linus2k/archive/2008/04/03/41895.html</guid><wfw:comment>http://www.cnitblog.com/linus2k/comments/41895.html</wfw:comment><comments>http://www.cnitblog.com/linus2k/archive/2008/04/03/41895.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/linus2k/comments/commentRss/41895.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/linus2k/services/trackbacks/41895.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 邮件为什么会被退回<br>      经常上网发送邮件的人可能会有邮件被退回的经历，收到被退回的邮件要具体分析，退回的信件一般都会有简短的说明，结合这些说明你可以进一步了解具体的退信原因并作出相应处理。&nbsp;&nbsp;<a href='http://www.cnitblog.com/linus2k/archive/2008/04/03/41895.html'>阅读全文</a><img src ="http://www.cnitblog.com/linus2k/aggbug/41895.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/linus2k/" target="_blank">君子常当当</a> 2008-04-03 13:15 <a href="http://www.cnitblog.com/linus2k/archive/2008/04/03/41895.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>纪念记忆力衰退之显示MySQL当前字符集</title><link>http://www.cnitblog.com/linus2k/archive/2008/03/31/41739.html</link><dc:creator>君子常当当</dc:creator><author>君子常当当</author><pubDate>Mon, 31 Mar 2008 09:44:00 GMT</pubDate><guid>http://www.cnitblog.com/linus2k/archive/2008/03/31/41739.html</guid><wfw:comment>http://www.cnitblog.com/linus2k/comments/41739.html</wfw:comment><comments>http://www.cnitblog.com/linus2k/archive/2008/03/31/41739.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/linus2k/comments/commentRss/41739.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/linus2k/services/trackbacks/41739.html</trackback:ping><description><![CDATA[MySQL又出现乱码了，烦。。。<br><br>通过这个命令得到当前MySQL的字符集<br>mysql&gt; show variables like 'character_set_%';<br>+--------------------------+-----------------------------------------+<br>| Variable_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>+--------------------------+-----------------------------------------+<br>| character_set_client&nbsp;&nbsp;&nbsp;&nbsp; | utf8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| character_set_connection | utf8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| character_set_database&nbsp;&nbsp; | utf8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| character_set_results&nbsp;&nbsp;&nbsp; | utf8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| character_set_server&nbsp;&nbsp;&nbsp;&nbsp; | utf8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| character_set_system&nbsp;&nbsp;&nbsp;&nbsp; | utf8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| character_sets_dir&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | /usr/local/mysql5/share/mysql/charsets/ |<br>+--------------------------+-----------------------------------------+<br>mysql&gt; show variables like '%collation%';<br>+----------------------+-----------------+<br>| Variable_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>+----------------------+-----------------+<br>| collation_connection | utf8_general_ci |<br>| collation_database&nbsp;&nbsp; | utf8_general_ci |<br>| collation_server&nbsp;&nbsp;&nbsp;&nbsp; | utf8_general_ci |<br>+----------------------+-----------------+<br><br>通过这个命令得到MySQL支持的字符集<br>mysql&gt; show charset;<br>+----------+-----------------------------+---------------------+--------+<br>| Charset&nbsp; | Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Default collation&nbsp;&nbsp; | Maxlen |<br>+----------+-----------------------------+---------------------+--------+<br>| big5&nbsp;&nbsp;&nbsp;&nbsp; | Big5 Traditional Chinese&nbsp;&nbsp;&nbsp; | big5_chinese_ci&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 |<br>| dec8&nbsp;&nbsp;&nbsp;&nbsp; | DEC West European&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | dec8_swedish_ci&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| cp850&nbsp;&nbsp;&nbsp; | DOS West European&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | cp850_general_ci&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| hp8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | HP West European&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | hp8_english_ci&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| koi8r&nbsp;&nbsp;&nbsp; | KOI8-R Relcom Russian&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | koi8r_general_ci&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| latin1&nbsp;&nbsp; | cp1252 West European&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | latin1_swedish_ci&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| latin2&nbsp;&nbsp; | ISO 8859-2 Central European | latin2_general_ci&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| swe7&nbsp;&nbsp;&nbsp;&nbsp; | 7bit Swedish&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | swe7_swedish_ci&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| ascii&nbsp;&nbsp;&nbsp; | US ASCII&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | ascii_general_ci&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| ujis&nbsp;&nbsp;&nbsp;&nbsp; | EUC-JP Japanese&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | ujis_japanese_ci&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 |<br>| sjis&nbsp;&nbsp;&nbsp;&nbsp; | Shift-JIS Japanese&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | sjis_japanese_ci&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 |<br>| hebrew&nbsp;&nbsp; | ISO 8859-8 Hebrew&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | hebrew_general_ci&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| tis620&nbsp;&nbsp; | TIS620 Thai&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | tis620_thai_ci&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| euckr&nbsp;&nbsp;&nbsp; | EUC-KR Korean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | euckr_korean_ci&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 |<br>| koi8u&nbsp;&nbsp;&nbsp; | KOI8-U Ukrainian&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | koi8u_general_ci&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| gb2312&nbsp;&nbsp; | GB2312 Simplified Chinese&nbsp;&nbsp; | gb2312_chinese_ci&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 |<br>| greek&nbsp;&nbsp;&nbsp; | ISO 8859-7 Greek&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | greek_general_ci&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| cp1250&nbsp;&nbsp; | Windows Central European&nbsp;&nbsp;&nbsp; | cp1250_general_ci&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| gbk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | GBK Simplified Chinese&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | gbk_chinese_ci&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 |<br>| latin5&nbsp;&nbsp; | ISO 8859-9 Turkish&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | latin5_turkish_ci&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| armscii8 | ARMSCII-8 Armenian&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | armscii8_general_ci |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| utf8&nbsp;&nbsp;&nbsp;&nbsp; | UTF-8 Unicode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | utf8_general_ci&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 |<br>| ucs2&nbsp;&nbsp;&nbsp;&nbsp; | UCS-2 Unicode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | ucs2_general_ci&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 |<br>| cp866&nbsp;&nbsp;&nbsp; | DOS Russian&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | cp866_general_ci&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| keybcs2&nbsp; | DOS Kamenicky Czech-Slovak&nbsp; | keybcs2_general_ci&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| macce&nbsp;&nbsp;&nbsp; | Mac Central European&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | macce_general_ci&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| macroman | Mac West European&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | macroman_general_ci |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| cp852&nbsp;&nbsp;&nbsp; | DOS Central European&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | cp852_general_ci&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| latin7&nbsp;&nbsp; | ISO 8859-13 Baltic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | latin7_general_ci&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| cp1251&nbsp;&nbsp; | Windows Cyrillic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | cp1251_general_ci&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| cp1256&nbsp;&nbsp; | Windows Arabic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | cp1256_general_ci&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| cp1257&nbsp;&nbsp; | Windows Baltic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | cp1257_general_ci&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| binary&nbsp;&nbsp; | Binary pseudo charset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | binary&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| geostd8&nbsp; | GEOSTD8 Georgian&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | geostd8_general_ci&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 |<br>| cp932&nbsp;&nbsp;&nbsp; | SJIS for Windows Japanese&nbsp;&nbsp; | cp932_japanese_ci&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 |<br>+----------+-----------------------------+---------------------+--------+<br>    <img src ="http://www.cnitblog.com/linus2k/aggbug/41739.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/linus2k/" target="_blank">君子常当当</a> 2008-03-31 17:44 <a href="http://www.cnitblog.com/linus2k/archive/2008/03/31/41739.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>纪念记忆力衰退之POP3命令简介</title><link>http://www.cnitblog.com/linus2k/archive/2008/03/26/41479.html</link><dc:creator>君子常当当</dc:creator><author>君子常当当</author><pubDate>Wed, 26 Mar 2008 02:03:00 GMT</pubDate><guid>http://www.cnitblog.com/linus2k/archive/2008/03/26/41479.html</guid><wfw:comment>http://www.cnitblog.com/linus2k/comments/41479.html</wfw:comment><comments>http://www.cnitblog.com/linus2k/archive/2008/03/26/41479.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/linus2k/comments/commentRss/41479.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/linus2k/services/trackbacks/41479.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: POP3 命令<br>POP3 命令包括：<br>USER username 认证用户名<br>PASS password 认证密码认证，认证通过则状态转换<br>APOP name,digest 认可一种安全传输口令的办法，执行成功导致状态转换，请参见 RFC 1321 。<br>STAT 处理请求 server 回送邮箱统计资料，如邮件数、 邮件总字节数<br>UIDL n 处理 server 返回用于该指定邮件的唯一标识， 如果没有指定，返回所有的。<br>LIST n 处理 server 返回指定邮件的大小等<br>RETR n 处理 server 返回邮件的全部文本<br>DELE n 处理 server 标记删除，QUIT 命令执行时才真正删除<br>RSET 处理撤消所有的 DELE 命令<br>TOP n,m 处理 返回 n 号邮件的前 m 行内容，m 必须是自然数<br>NOOP 处理 server 返回一个肯定的响应<br>QUIT 希望结束会话。&nbsp;&nbsp;<a href='http://www.cnitblog.com/linus2k/archive/2008/03/26/41479.html'>阅读全文</a><img src ="http://www.cnitblog.com/linus2k/aggbug/41479.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/linus2k/" target="_blank">君子常当当</a> 2008-03-26 10:03 <a href="http://www.cnitblog.com/linus2k/archive/2008/03/26/41479.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>纪念记忆力衰退之SMTP命令简介</title><link>http://www.cnitblog.com/linus2k/archive/2008/03/26/41478.html</link><dc:creator>君子常当当</dc:creator><author>君子常当当</author><pubDate>Wed, 26 Mar 2008 02:01:00 GMT</pubDate><guid>http://www.cnitblog.com/linus2k/archive/2008/03/26/41478.html</guid><wfw:comment>http://www.cnitblog.com/linus2k/comments/41478.html</wfw:comment><comments>http://www.cnitblog.com/linus2k/archive/2008/03/26/41478.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/linus2k/comments/commentRss/41478.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/linus2k/services/trackbacks/41478.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: SMTP 命令<br>SMTP 命令包括：<br>HELO 向服务器标识用户身份。发送者能欺骗，说谎，但一般情况下服务器都能检测到。<br>EHLO 向服务器标识用户身份。发送者能欺骗，说谎，但一般情况下服务器都能检测到。<br>MAIL FROM 命令中指定的地址是发件人地址<br>RCPT TO 标识单个的邮件接收人；可有多个 RCPT TO；常在 MAIL 命令后面。<br>DATA 在单个或多个 RCPT 命令后，表示所有的邮件接收人已标识，并初始化数据传输，以 CRLF.CRLF 结束<br>VRFY 用于验证指定的用户/邮箱是否存在；由于安全方面的原因，服务器常禁止此命令<br>EXPN 验证给定的邮箱列表是否存在，扩充邮箱列表，也常被禁用<br>HELP 查询服务器支持什么命令<br>NOOP 无操作，服务器应响应 OK<br>RSET 重置会话，当前传输被取消<br>QUIT 结束会话&nbsp;&nbsp;<a href='http://www.cnitblog.com/linus2k/archive/2008/03/26/41478.html'>阅读全文</a><img src ="http://www.cnitblog.com/linus2k/aggbug/41478.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/linus2k/" target="_blank">君子常当当</a> 2008-03-26 10:01 <a href="http://www.cnitblog.com/linus2k/archive/2008/03/26/41478.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>纪念记忆力衰退之Perl编码转换</title><link>http://www.cnitblog.com/linus2k/archive/2008/03/14/40934.html</link><dc:creator>君子常当当</dc:creator><author>君子常当当</author><pubDate>Fri, 14 Mar 2008 07:45:00 GMT</pubDate><guid>http://www.cnitblog.com/linus2k/archive/2008/03/14/40934.html</guid><wfw:comment>http://www.cnitblog.com/linus2k/comments/40934.html</wfw:comment><comments>http://www.cnitblog.com/linus2k/archive/2008/03/14/40934.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/linus2k/comments/commentRss/40934.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/linus2k/services/trackbacks/40934.html</trackback:ping><description><![CDATA[gb2312-&gt;utf-8<br>use Encode;<br>$rname = encode("utf-8", decode("gb2312", $r-&gt;{$realname}))<br>   <img src ="http://www.cnitblog.com/linus2k/aggbug/40934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/linus2k/" target="_blank">君子常当当</a> 2008-03-14 15:45 <a href="http://www.cnitblog.com/linus2k/archive/2008/03/14/40934.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>