ISAPI_Rewrite正式版(非lite版)无效的原因

2010-12-11 19:35| 分类:tech web开发| 标签: | 9,795 次点击

天~已经两个月没写博客了,基本都去Buzz和新浪微博了,博客的更新频率只会越来越低,如有兴趣,可以follow我的新浪微博:http://t.sina.com.cn/tsenfine ,或者follow Buzz:https://www.google.com/profiles/yi.chenfang。我自己也有数月没打开Google Reader了。

因多个web项目需要用到rewrite,而lite版只支持全局的,所以升级了ISAPI为正式第三版,信用卡付款,现在还没没扣款,也还未发注册码。不过有45天试用,先下来用用。

先是备份lite版的httpd.conf文件,然后卸载了lite版的,然后重装。安装好后发现新版确实好用多了,不仅可对单个网站rewrite,而且可对单个文件夹下的文件rewrite,方法跟apache下的.htaccess差不多。但测试了下却发现原来的rewrite规则全都失效了。

于是找原因,首先在自己博客上找,没想到在2008年12月10日和2009年年11月12日都出现过类似的问题,真让我怀疑江恩说的“循环”的存在 : )

ISAPI Rewrite/IIS Rewrite无效的可能原因  2008-12-10

新版ISAPI Rewrite (Rewrite3_0067_Lite)无效的原因 2009-11-12

ISAPI_Rewrite正式版(非lite版)无效的原因 2010-12-10

首先是按以前两篇博客的内容检查了一遍,从IIS的“web服务扩展”到NTFS权限设置都检查过,又是重启IIS又是重启服务器的,但仍旧不行。后来看安装文档中的帮助文件:

一、首先应该检查ISAPI rewrite是否有在运行,方法有两种,一种是根据安装文档中的帮助来检查:

Put the following lines into httpd.conf file:

RewriteLogLevel 9
LogLevel debug

This will create error.log and rewrite.log files by default in the installation directory. If log files are created, this will indicate that ISAPI_Rewrite is running.

另外一种是随便写个规则看有没有在执行来检查。

二、我检查出来是有在运行的,那么打开Helicon Manager.exe,可以直接修改站点根目录下的.htaccess,但我却忘了清空全局的httpd.conf,导致后来调试问题一堆。正确的方法是应该清空全局的,然后把需要的规则写入站点目录下的.htaccess下。

当然我两个站点,一个是可以的,一个却不行,看了帮助文件夹下的:

If rules are working in httpd.conf file but not in other sections or .htaccess files, make sure to include RewriteEngine on directive in every section and .htaccess file. Also remember that rewriting base inside .htaccess files by default is different from httpd.conf. ISAPI_Rewrite automatically strips the local directory prefix from the path when in .htaccess or <Directory> section and applies rules only to the remainder. So if your rules start with a ‘/’ character, this should be removed in .htaccess file in the root folder of web site.

原来是规则不一样,比如像以下这种

RewriteEngine on  
RewriteRule /(\d{1,20}) /product.jsp?pid=$1

需要改成:

RewriteEngine on

RewriteBase /
RewriteRule (\d{1,20}) /product.jsp?pid=$1

这可以去参考帮助文件中的Example。

总结,像这种比较普遍的错误,看软件自带的帮助CHM还是非常有用的,比google出来的更方便更权威。

wordpress模板编码不一致导致排版混乱

2010-03-09 17:30| 分类:tech web开发| 标签: | 3,222 次点击

刚刚给博客加了个“发明灵感”的分类,见此:http://blog.linggan.com/faming。模板代码是一模一样的,只改了分类cat的ID号,排版却乱了。

那只可能是文件编码问题了,看了看原来模板文件pageforeye.php和pageforlife.php都是GB2312,而新建的这个是UTF-8的,改成UTF-8的就可以了。

像这种文章对读者是没用的,但我已不再更新自己的另外一个博客维护日志(现在更新的博客只有这个了,其他思想碎片都用微博记录),又想记录这些维护细节,没办法只能发在这个博客上,RSS里又没法限制输出,只好打扰订阅者了。

动网dvbbs最有效的防止恶意注册方法

1:30| 分类:web开发| 标签: | 17,759 次点击

之前我防止恶意注册的方法是把默认的注册页面reg.asp换成regnewuser.asp,而在reg.asp页面用response.redirect跳转到真实的注册页面regnewuser.asp,这个方法有效防止了论坛群发骚扰一段时间,但最近两三个月又出现了,隔几天就有上百条垃圾群发信息。

我居然忍了这么久都没想过去改,今天才想起来。网上搜了一下,基本都是通过改验证码或者加提示问题来实现防止恶意注册,感觉这些方法都是治标不治本——只是跟注册机再比智力,注册机稍微改改就又能群发了。

于是我考虑到注册机的机制,无非是不断的post数据来实现注册,那么利用cookies验证就可以有效防止。

修改方法很简单,但估计还没人这么做过。

1、在原来的reg.asp里设置一个cookies:

<%response.cookies("haveseetheregpage")="yes"  ‘防止恶意注册%>
<script type="text/javascript">
window.location="regnewuser.asp?action=apply"
</script>

2、在regnewuser.asp里头部引用的文件下面加上这句:

<%
If request.cookies("haveseetheregpage")="yes" Then  ‘防止恶意注册
Else
response.write("请勿恶意注册,如并非恶意注册,请联系QQ861121,或访问http://www.xingtan.com/bbs/reg.asp重新注册")
response.End
End if
%>

这样,除非发贴机也去访问一下reg.asp,否则,他就不能再注册了。

20100309开始启用,看看以后有没有垃圾贴。不过这个方法只是防止恶意注册,如果是手工注册然后用发贴机发帖,那就没辙了。

四款原型设计软件一眼评测

2010-01-20 2:02| 分类:Internet web开发| 2,849 次点击

灵感方舟的新项目选择原型设计软件,www.gomockingbird.com 一眼就喜欢上了,主要是图标2.0,界面非常漂亮。而www.mockflow.com 不考虑,一看就觉得不够现代,还要注册了才能用。Axure是桌面软件,下载了但不想装了,要55MB,而且看演示的视频也不够2.0,感觉按钮那些元素都不漂亮。

记录这些是因为网站的第一眼感觉太重要了!它可以直接决定我用哪家的产品。

www.gomockingbird.com的Try it now.为这家大大地加了一把分,而且还放了三个地方。非常喜欢他们的设计,色调明亮又简洁清新。

image

www.mockflow.com的Create Account相比之下大为逊色。直接就没尝试的心理了!

image 

以上几款都是从盗盗的分享网络那得知的,感谢盗盗。

黄海均还介绍了Balsamiq Mockups的原型设计软件,但这款的元素都是模仿手工的,我现在偏偏不需要模仿成手工的样子,如果要手工的我还是习惯用手直接画。

另外腾讯CDC团队好像自己在做一个叫做UIDesigner的原型设计软件,团队牛没错,但说实话这个产品看起来挺土的,跟国外的还是有差距啊。

IIS下实现wordpress每个页面都301重定向到新域名

2010-01-14 20:11| 分类:Internet web开发 博客维护| 标签: | 3,625 次点击

因为原来我用的是linux下的Apache,只需在.htaccess加入以下代码即可实现旧域名全部转向到新域名:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^blog.linggan.com$ [NC]
RewriteRule ^(.*)$
http://blog.linggan.com/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]
</IfModule>

# END WordPress

 

但后来我把博客从Lamp平台转移到Wimp平台 ,这个方法就不能用了,我就只让原来的域名进行跳转,而没对域名下的每个子链接跳转,所以导致很多图片出现XX,感觉博客没什么人看,所以就没去处理,但今天有人提到了这点,既然有需求了我就改一下。

修改方法,在WordPress根目录下的wp-blog-header.php文件头部的<?php后面加入:

if (strtolower($_SERVER[‘SERVER_NAME’])!=’blog.linggan.com’)
{   
    $URIRedirect=$_SERVER[‘REQUEST_URI’];   
    if(strtolower($URIRedirect)==’/index.php’)    {
       $URIRedirect=’/’; 
   }   
       header(‘HTTP/1.1 301 Moved Permanently’);   
       header(‘Location:
http://blog.linggan.com’.$URIRedirect);   
       exit(); 
}

 

即可。现在访问博客,里面的图片都是可以显示的。感谢提出问题的lyman朋友。

杀软文件隔离导致的程序问题

2010-01-01 1:14| 分类:web开发| 标签: | 1,985 次点击

今天下午访问网站首页出现了系统弹出登陆框输入用户和密码的提示。怀疑是ajax载入的那个页面的问题,查了下,果然是,删了调用这个页面的js就没事了。

但是这个页面(createhtml.asp)是什么问题呢?因为我刚刚删了guest这个系统账号,而这个文件的作用又正好是生成一个html,所以我以为是权限设置问题,但查了一下都没有问题,都有everyone权限。

直接访问该creathtml.asp会出现以下提示:

您未被授权查看该页 您不具备查看该目录或页面的权限,因为访问控制列表 (ACL) 对 Web 服务器上的该资源进行了配置。

后来慢慢的通过改代码调试发现,一旦其中一个asp引用一个叫做func.asp的文件就会出现那个登陆框,那么肯定就不是这个文件本身的问题,而是其中include的那个func.asp的问题,我马上联想到前面用360杀毒查到了一个提示是盗号木马的asp文件,正是这个func.asp,但其实这asp是自己写的,还是安全的,我当时并没有隔离或作处理,但谁知道360杀毒会怎么处理呢?

果然,这个文件是打不开的,提示“文件操作失败,禁止访问”。我后来好像把360杀毒的实时防护改为“严格防护”,可能就是这个原因吧。

解决办法,现在改360杀毒的实时防护设置已经没用了,只能先把这个文件当做病毒杀掉,再复制一份这个文件的拷贝到源文件夹,这样就可以正常访问了,网站也就正常了。

总结:

1、删guest账号不影响网站访问,反正都已经是everyone权限了。

2、杀软杀毒后如果查到有网站的程序文件,可能会对网站程序文件做一些访问限制,会导致程序不能正常使用。

Windows 2003 Server SMTP服务器失效的可能原因

2009-11-13 12:56| 分类:web开发 windows| 2,173 次点击

新的SMTP服务器邮件发不出去。最终是配置成功了,总结了下有以下原因:

1、中继限制那边要选择“仅以下列表除外”。(这点最重要,这么改后马上就可以发了)

image

以下均是默认的设置,可以不改。

2、访问控制选择匿名访问。(默认就是这样)

image

3、最好启用一下日志记录。

image

4、按默认的用户操作员即可,无需像《为SMTP服务器添加用户名和密码》那样添加新的操作员。

image

以上是用Jmail发送邮件的程序来测试的。

新版ISAPI Rewrite (Rewrite3_0067_Lite)无效的原因

2009-11-12 16:31| 分类:web开发| 标签: | 5,514 次点击

以前我用的是ISAPI_Rewrite3_0058_Lite.msi 版的,这次用了新的0067版。但安装完后发现并没有启动,安装完后在网站右键-属性那的状态处并无绿色的成功标识。按之前写的那篇《ISAPI Rewrite/IIS Rewrite无效的可能原因》,我就猜测是目录无everyone权限的原因,但改为everyone权限,并重启IIS服务,甚至重启电脑后都不行。后来看到了下图中的Web服务器扩展,把“所有未知ISAPI扩展设为允许”,就可以了。

image

但以前的服务器上并无允许这个“未知ISAPI扩展”,但却可以使用ISAPI,猜测是因为ISAPI Rewrite更新版本之后,就变成“未知”的了,所以需要这里做个允许。看来服务器软件还是不要一昧追求最新的,可用和稳定最重要。

如果想为某个网站启用这个ISAPI服务,可以在网站属性的ISAPI筛选器那边自己添加。如下图所示:

image

解决wordpress评论IP都是127.0.0.1的问题

2009-09-16 17:48| 分类:tech web开发 wordpress 博客维护| 标签: | 12,510 次点击

自从博客从dreamhost搬回到国内空间后,近一年的时间内,评论者的IP都是127.0.0.1,在我的博客上留言是不要求填写名称或邮箱的,所以有的时候有的访客留言没有留下任何其他信息,一条留言就真的只有一条留言,看的有些郁闷。今天准备解决一下这个127.0.0.1留言的问题。

搜了一下,可能是由于空间商的PHP版本问题,也可能是因为启用了某种缓存加速的方法而导致的,使得获取的都是本机IP。是空间商的原因,并非程序的问题,不过可以通过修改程序来重新获取IP。或者更简单的方法是通过Comment IP Fixer这个插件来实现获取真实IP(修改程序的话,每次升级wordpress程序还得再改一次,麻烦),我启用这个插件后,确实可以正常的取得评论者的IP了,感谢插件的作者jerryhong。

wordpress更换新域名不用插件实现301跳转

2009-09-13 20:26| 分类:web开发 博客维护| 标签: | 5,652 次点击

从上次正式更换本站域名,更新feed地址后,我一直是新旧两个域名并用。用Domain Theme这个插件可以很容易的实现多个域名访问,还可以为不同的域名设置不同的主题和title。比如我的设置是:

image 

不让旧域名跳转过来,是因为我希望Google既能多收录这个新域名,又能保留原来域名的权重(原来域名PR是2,曾经达到过4),但发现以下三个问题,我打算撤掉原来的域名(chenfangyi.com),让这个域名跳转到新域名:

1、对已经发布的文章,Google搜索结果中两个域名下都有结果,对这样的重复内容,Google即便是不惩罚,这种两个链接不一样内容却一样的页面也会分散权重,对新域名不利。

2、博客上新发表的文章,Google只收录新域名的而不收录旧域名的,比如关于创新工场的两篇文章,site一下发现Google并没有收录chenfangyi.com上的这两篇。应该是Google认为内容都一样,没必要再收录了,按第一次是谁ping的就收录谁的。照这样下去原来域名的权重会越来越低(原来考虑的不停用原域名就能保持住原域名的PR的想法是不正确的),既然这样,还不如自己废掉,这时候跳转还能提高新域名的权重。

3、chenfangyi.com毫无解封的迹象。没必要为这个域名留后路了。

于是我照这里说的,在站点根目录下的.htaccess里增加了

RewriteEngine on
RewriteCond %{HTTP_HOST} !^blog.linggan.com$ [NC]
RewriteRule ^(.*)$
http://blog.linggan.com/$1 [L,R=301]

变为:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^blog.linggan.com$ [NC]
RewriteRule ^(.*)$
http://blog.linggan.com/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]
</IfModule>

# END WordPress

接着site一下chenfangyi.com,访问几条试试,确实全部跳转到blog.linggan.com上了。

现在无论是访问chenfangyi.com、www.chenfangyi.com域名下的任何一个链接,都是跳转到blog.linggan.com,短期内blog.linggan.com的权重应该有所提升。

放弃旧域名,证明我已经屈服于伟大的GFW了。GFW,这次算我败给你了!

 

附1:现在的Google收录情况:site:chenfangy.com目前收录278条,site:blog.linggan.com目前收录213条。

附2:原来没添加301跳转前的访问www.chenfangyi.com的状况是:www.chenfangyi.com可以访问,www.chenfangyi.com/posterous.html 这样的链接也可以访问,但其中的每个连接都是指向到blog.linggan.com上的。现在是直接就跳转到新域名。

为SMTP服务器添加用户名和密码

2009-03-27 0:42| 分类:web开发 windows 服务器| 标签: | 5,831 次点击

在windows2003 IIS中安装SMTP服务器提到了为了防止垃圾邮件可以在允许列表中设置只允许127.0.0.1,这样就防止了垃圾邮件,而且不需要填写用户名和密码就可以发送邮件,但有的程序/代码没有用户名和密码是没法发送邮件的,而且不用密码确实也不安全。所以还是要设置一下SMTP服务器的用户名和密码。

IIS里的用户名和密码都必须是windows账户里的用户。所以就必须先建立一个windows账户名。在用户帐户中添加一个用户,并设置组为:IIS_WPG(为了防止权限过大不安全,IIS_WPG全线足够了)

image

然后在IIS的“默认SMTP虚拟服务器”点击右键,配置SMTP服务器。

1、在“安全”选项卡中添加刚刚创建的用户。

2、在“访问”选项卡中的“身份验证”中勾选上“基本身份验证”

image

然后用我的一个PHP程序测试,本来没有用户名和密码是无法发送邮件的,设置好后马上就可以发送了(可惜是在QQ邮箱的垃圾箱里)。

ASP返回错误页和http状态查询工具

2009-03-21 4:09| 分类:tech web开发| 23,078 次点击

IIS默认的错误页是很不友好的,很多人看到默认的错误页时都会说:网站打不开了!白白损失了这部分流量。而如果错误页直接跳转到首页又对搜索引擎很不友好,搞不好首页还会被封掉。所以根据情况,有两个方法解决这个问题:

如果是博客等内容型的网站,可以返回一个带有404错误的搜索框让访客搜索,若是电子商务型网站,则可以返回一个带有404错误的进度条进行跳转。这两种方法即照顾了访客又顾及到了SEO。

可以在Google webmaster tools中查看自己网站错误页有多少。

修改默认错误页的方法很简单:在IIS中右键单击要管理的网站,在自定义错误中设置404为相应的错误信息页。这里有两种方式:

1、如果“消息类型”你选择的是“文件”,则只能使用.html或htm结尾的文件,否则用户访问错误页时会出现代码。用这种方式设置的错误页,虽然.html文件中没有输出404状态,但IIS执行后会自动输出404状态。

2、如果你“消息类型”选择了“URL”,则必须用asp文件(因为只有在asp文件中才能设置404状态),否则访问错误页时会返回200状态码。还要在asp文件中加上:

<%Response.Status = "404 Not Found" %>

如果你希望定时跳转到首页,则也有两种方法:

1、利用meta标签的refresh进行跳转

<meta http-equiv="refresh" content="3;url=http://chenfangyi.com/?xxx">
据Google中文博客管理员介绍,Yahoo就使用的此方法进行跳转。

2、使用js进行跳转

<script style="text/javascript">

  setTimeout("testTime()",2500);

  function testTime() {

    location = "http://chenfangyi.com/";

  }

</script>

我感觉使用js的方法好一些,因为meta标签跳转担心搜索引擎会识别为“200”或“302”见这里的这段话:

常常看到许多网站的自定义404错误页面采取类似这样的形式:首先显示一段错误信息,然后,通过Meta Refresh将页面跳转到网站首页、网页地图或其他类似页。根据具体实现方式不同,这类404页面可能返回“200”状态码,也可能返回“302临时重定向”,但不论哪种,从SEO技术角度看,均不是一种合适的选择。
对“200”状态的情况我们上面已经谈过,那么,当404页面返回“302”时,搜索引擎会怎么对待呢?从理论上说,对“302”错误,搜索引擎认为该网页是存在的,只不过临时改变了地址,仍然会索引收录该页,这样,同样会出现类似于“200”状态码时的重复文本问题;其次,以google为代表的主流搜索引擎对302重定向的适用范围要求越来越严格,这类不当使用302重定向的情况存在很大的风险。

 

最后可以用Firebug或一些Server Header检查工具,如下面这个:

URL
输入待检查的网址

Firebug中的调试:

image

 

在网上看到的几个注意点:
1、切记不要将404错误转向到网站主页,否则可能会导致主页在搜索引擎中消失
2、切记不要使用绝对URL(例如:http://chenfangyi.com/nofound.php形式),如果使用绝对URL返回的状态码是“302”+“200”(已测试)
3、在“消息类型”中一定要选择“文件”或“默认值”,而不要选择“URL”,不然,将导致返回“200”状态码(这点与我自己测试的不一样,我选择了相对URL,最终用firebug测试的结果是404)

windows2003下安装MySQL

2008-12-19 3:46| 分类:web开发 服务器| 标签: | 5,091 次点击

前面提到我在Windows2003安装IIS+PHP,为了搭建wimp(windows+IIS+mysql+php)现在需要安装mysql,mysql如果全手动安装的话太复杂了,所以我选择了用win32 exe自动安装,mysql.com上下载太麻烦也慢,所以就上mysql.cn下载了:mysql-5.1.30-win32.zip,一步步安装下来。

 

image23

image26

image32

image35

image38

image41

image44

image47

 

image50

 

image

image

360会提示新增一个服务,允许便是。

image

 

如果想修改刚才的设置,可以在开始菜单的MySQL Server Instance Config Wizard里重新设置一遍,也可以用这种方式修改mysql数据库的密码。默认用户名是root。配置好后可以在开始菜单的MySQL Command Line Client输入密码执行mysql命令。

而我的目标只是把wordpress环境配置好,需要导入以前空间上的wordpress数据库,因为我对phpmyadmin比较熟悉,所以需安装一下phpmyadmin来操作数据库。下一篇文章会提到windows2003安装phpmyadmin中遇到的问题。

以下有几个教程不错:

MySQL安装图解[组图]
图解MySQL数据库的安装和操作:这里就是手动安装

在windows2003 IIS中安装SMTP服务器

2008-12-17 17:49| 分类:web开发 服务器| 标签: | 11,339 次点击

上一篇日志中我测试了几个免费企业邮箱的SMTP服务,最终结论是都不可行,只能自己搭建一个SMTP服务器。这里我以自己使用的windows2003为例,记录一下配置的过程。

一、组件设置:

win2003中默认是不安装SMTP服务的,所以得添加这个SMTP Service服务。如图:

image

把这里的SMTP Sevice打上勾

image

之后选择安装文件盘的位置(我是重新下载了一个系统,然后解压,直接定位到这个i386文件夹中),点击确定即可安装了,如果有再弹出则按同样的方法。安装完360会提示新增系统服务。

二、IIS设置:

安装完后无需重启,IIS中会多了些内容:

image

右击属性,可以看到以下选项,按照以下图示进行配置即可:

image 

 image image

在“连接”那里默认就是“仅以下列表除外”,而在“中继”那里默认是“仅以下列表”,所以必须修改一下(事实上只修改了这一个地方,其他地方默认的即可),否则会出现以下情况:

OE发送邮件到test@xingta.com,一直提示“正在验证身份”,然后又提示:

image

至于下面的“域”则可以不用添加,因为我们只是把这台服务器作为SMTP邮件发送服务器,而不需要收邮件。

image

按CSDN上有人说的:哪位朋友在IIS里面设置过SMTP虚拟服务器,并成功利用SMTP虚拟服务器发送过邮件

1,你先把SMTP组件安上,  
  这样,在服务和应用程序就可以看到默认SMTP虚拟服务器了。  
  右击,属性,这里主要要改三个地方,一个是访问里的,访问控制,选匿名访问,还有连接里面,选项成仅以下列表除外,然后在传递里的出站安全里,也选匿名访问,最后在安全里,加个可以使用这个SMTP的用户,服务器端就设好了。  
  2,客户端比如用OE来发,在SMTP服务器里选你刚才建立好的服务器,用户名和密码都输入好,就行了。这个速度发起来快,而且附件没有限制(当然要邮箱能放下哈),其他差不多没什么了。前一阵子刚好研究过。呵呵。。
  

而他所说的都是默认的设置,那都可以不用作任何设置即可,但我测试了确实不行,必须在中继设置那里选中“仅以下列表除外”,而命名下面都已经“忽略上表”了,不知道为何。

三、OE中设置

OE是用来测试SMTP服务器的。你也可以用ASP邮件发送程序如jmail或者一些CMS的后台(后台自带邮件程序)来测试。

 

image

最终配置后如下:

image image image image

image 默认就是这样的。

没有截图的地方保持默认即可。因为刚才在IIS中并没有设置登录的用户名和密码,所以此时你的服务器就是公用的无需权限的SMTP发送器,“我的服务器要求身份验证”这项打不打勾都可以。

然后即可用OE发信了,邮箱里都可以收到(这里显示的邮箱是为了防止spam,我用自己的Gmail收件):

image

测试成功。我同时也测试了用这台服务器上的一个CMS后台的jmail发送程序发送,无需填写密码,只需填写站长信箱和SMTP服务器地址即可发送邮件。

四、添加权限

这样子这台SMTP服务器显然不够安全,很容易被垃圾邮件利用(防止自用的IIS SMTP被垃圾邮件利用),所以需要添加一些权限设置。

为了让这些配置在以后的更换IP时不需要重新设置,尽量用127.0.0.1来代替实际IP地址,所以先把SMTP的IP地址设置为“全部未指定”

image

然后在连接里设置:

image
在OE里也把SMTP服务器改为127.0.0.1

image

这样子在OE中即可正常发送邮件。而在装在这台服务器上的ASP jmail程序上设置SMTP服务器为127.0.0.1,密码不用设即可发送邮件。而且垃圾邮件商无法连接到这台SMTP服务器。

 

注:配置过程中参考了 http://net.zdnet.com.cn/network_security_zone/2008/0605/908860.shtml,以下为引用:

“常规”选项卡主要设置IP地址,单击IP地址下拉项选择“127.0.0.1”,表示指向本地计算机IP地址,其他项使用默认即可。如果你是局域网接入,拥有固定IP地址,那么IP地址就应该选择相应的地址。

“访问”选项卡中设置访问权限。单击“身份验证”,选择“匿名访问”,表示任何用户都可以发送,其他两项不用选择;单击“连接控制”中的“连接”和“中段限制”中的“中断”,选中“仅以下列表除外”,表示可以许接入所有用户的访问。

“邮件”选项卡中设置邮件传输条件及限制,“限制邮件大小为”等四个选项可以使用默认值,无须更改;

“将未传递报告的副本发送到”可将发送不成功的邮件返回发件人,并且写明不成功的原因;“死信目录”设置没有发送成功的邮件被存放的位置。

“传输”选项中设置邮件传递时间,这里不用修改,使用默认值;“LDAP路由”选项用来指定服务器使用的目录服务器标识和属性,这里也不用启动它。

“安全”选项中设置使用发送服务器的有权用户,默认用户是“Administrators”,你可以单击“添加”添加使用用户。

打开Outlook Express,选择“工具→账号→邮件”,选中帐号点“属性”,在“服务器”标签下的“发送邮件(SMTP)”中输入“127.0.0.1”,即本机地址(如图3),“我的服务器需要身份验证”不选择。

测试SMTP服务器未必用OE,这里还有几篇测试SMTP的文章(我都没试):

Telnet到端口25以测试SMTP通信
在Windows Server 2003中手动测试 SMTP 服务(也是telnet)
如何設定 IIS SMTP Service 以支援發信功能(使用 DocuPack 中的 SMTP_Tester 來進行測試)
不用SMTP服务测试邮件代码[译](不知道说的是什么意思)

免费企业邮箱SMTP服务对比

15:49| 分类:web开发 服务器| 标签: | 11,139 次点击

一、QQ邮箱的SMTP服务。

虽然QQ邮箱并没有免费企业邮局的业务,但QQ邮箱可以免费用SMTP发信,理论上是可以用后台程序或者客户端程序(如OE)来发送邮件的。所以我这里也探讨一下用QQ邮箱做SMTP服务器的可能性。

首先,OE接收QQ邮箱的设置:(没显示的选项卡保持默认状态即可)

image  image  

 

注意,“使用安全密码验证登录”这个打钩不打勾都可以,但如果“我的服务器要求身份验证”没有打上勾则发送时会提示:503 Error: need EHLO and AUTH first,如图:

image

 

设置好了,在win2003下用OE,采用QQ的SMTP地址发送,可以正常发送邮件。

但如果把原来的邮箱地址换位我需要显示的邮箱地址,比如service@test.com,见下图:

image

发送时就会发生:"501 mail from address must be same as authorization user" 的错误

image 

 

因为QQ邮箱也有一个如同Gmail邮箱那样的功能,可以以多个帐号发信,所以我怀疑可能是因为没添加这个帐号的缘故,于是我在QQ邮箱中添加了这个service@test.com(这只是个例子,实际上我添加的是一个163的邮箱),但仍然是同样的错误。看来QQ邮箱虽然可以开通多邮件地址发送功能,但在客户端(或用代码)采用SMTP发送时却不允许用其他的邮箱地址。搜狗没有做这个限制,但也是有时可以有时不行的,以下会详细提到。

 

二、搜狗企业邮局的免费SMTP服务。

搜狗企业邮局我一直在用,星探论坛的注册确认邮件用的就是搜狗的SMTP服务器,虽然现在停止注册了,但搜狗并没有停掉老用户的服务。搜狗的SMTP发信服务参数我在Windows 2003安装并注册aspupload组件提过,这里说一下搜狗企业邮局的OE正确配置:(可以正常收发邮件)

image image

 

注意,如果又忘了勾上那个“我的服务器要求身份验证”了。用这个帐号发件时会提示:554 5.7.1 Relay access denied。

image

在win 2003中用OE,采用搜狗的SMTP发送,且邮箱地址为用户名,可以正常发送。

但如果发件地址不是搜狗原来的aaadmin@xingtan.com,而是service@test.com,发送到Gmail邮箱,有时可以正常发送,有时不行。

前两封可以,但连发两封之后,要发第三封时又出现:

image

看来还是不稳定的,就跟jmail组件发送一样,一会儿可以一会儿不行。过了一会儿,我重新发送这条在“发件箱”里的邮件,又可以了。然后发送第四条就又不行了:

这里的“服务器响应”所说的“发件人地址与拥有者不符”可能是搜狗自己的判断,也可能是Gmail的判断(即Gmail禁止了与实际拥有者不同的地址),为了搞清楚是搜狗SMTP服务器判断还是Gmail的收件服务器判断,我测试了一下发送给QQ邮箱的结果。

从“test第四条”开始测试QQ邮箱。总共发送了8条,期间test5和test8都出现了同样的报错情况。test5再次发送又成功了,而test8再次发送了两次才成功。错误提示与上面的一样。

看来提示“发件人地址与拥有者不符”并非Gmail或者QQ邮箱的返回消息,而是搜狗自己的,证明搜狗也做了这方面的判断,只不过有时判断失效,就可以正常发送了。这样子在实际中是肯定不能用的。(这里也解释了之前为何用jmail实现类似的功能时,测试了四封邮件,只收到一封而且延缓了几分钟,另外三封都没有收到)

三、Gmail企业邮箱服务

Windows 2003安装并注册jmail组件提到过Gmail的SMTP服务参数:

一、GMail存在smtp。其地址为:smtp.gmail.com
二、GMail的smtp要求SSL的安全链接
三、GMail的smtp端口号不是25是465

因为我用OE进行配置只是第一步测试,真正是第二步测试——把SMTP用于需要邮件发送功能的ASP后台程序,但后台程序不支持非25默认端口的smtp服务器(因为用的组件是Jmail),所以必然不能使用Gmail的SMTP服务,所以就没有在OE中测试Gmail。

四、微软免费企业邮局(windows live 免费企业邮箱)

这个不用说,pop3和SMTP都不支持,在OE上都不能用。

综上,没有哪一个免费的企业邮局可以提供不需要发件人地址认证的smtp服务,都会验证发件人地址和帐号(估计是为了防止垃圾邮件)。如果你需要显示你的公司邮箱地址的话,那么就必须在企业邮局提供商那注册(注册的过程其实就是一个认证域名和所有权的过程,这样可以一定程度上阻止你发送垃圾邮件)。如果搜狗的企业邮局还可以注册的话,那么搜狗的企业邮局用作网站后台的smtp服务是最好的选择,但搜狗企业邮局已经停止了注册,看来只能自己搭建一个SMTP服务器了。

关于免费的SMTP服务,CSDN上还有讨论:哪里可以提供免费的smtp服务

ISAPI Rewrite中正则表达式的应用——URL Rewrite规则

2008-12-11 17:15| 分类:web开发 服务器| 标签: | 5,982 次点击

前面提到我配置好了ISAPI Rewrite,其实就是为了实现一个效果,让:www.facepk.com/1 映射到 www.facepk.com/facepk.asp?id=1。因为坐久了腰有点酸,于是躺在床上用UCWEB粗略看了一遍正则表达式30分钟入门教程,写得非常不错,虽然后面都没看懂。不过现在简单的正则表达式应该能看懂并写几句的。

我是在ISAPI Rewrite自带的ReGexTest中测试正则表达式的。只需把rewrite规则写进去再写一段测试文本即可测试,如图:

 image

测试好了就可以写到httpd.conf里了。

总共试了几次:

1、RewriteRule /(\d+) /facepk\.asp\?id=$1 规则的目标太大,所有包含 /数字 的字符串都会被替换,很容易导致同一IIS下其他站点上也进行了正则转换,比如www.xingtan.com/99guiyi.htmlwww.facepk.com/face/20079159254176(8).jpg 都会进行正则转换。

2、RewriteRule /(\d{1,5}) /facepk\.asp\?id=$1 同样目标太大,想到刚开始时看的那个教程,于是加个$,变成:

3、RewriteRule /(\d{1,5})$ /facepk\.asp\?id=$1 就可以了,这个$的意思是必须在/1后马上跟个空字符才进行正则转换。

按理说这么写了之后,www.facepk.com/1www.xingtan.com/facepk/1 会被分别转换为www.facepk.com/facepk.asp?id=1和www.xingtan.com/facepk/facepk.asp?id=1,但实际上只进行了前者的转换。后者并没有,不清楚是什么原因,于是我又加了一条:

RewriteRule /facepk/(\d{1,5})$ /facepk/facepk\.asp\?id=$1

变成了:
RewriteRule /(\d{1,5})$ /facepk\.asp\?id=$1
RewriteRule /facepk/(\d{1,5})$ /facepk/facepk\.asp\?id=$1

但这样子www.facepk.com/1可以生效,而www.xingtan.com/facepk/1 仍无法生效。删了第一句后,www.xingtan.com/facepk/1 后者就可以了。换了一下顺序两个规则就都生效了。估计是两个规则冲突造成的,但不清楚是什么冲突,不去管了,最终可行的表达式:

RewriteRule /facepk/(\d{1,5})$ /facepk/facepk\.asp\?id=$1
RewriteRule /(\d{1,5})$ /facepk\.asp\?id=$1

IE安全级别过高导致无法使用serv-u新版

2008-12-09 20:33| 分类:web开发 服务器| 标签: | 2,755 次点击

刚才在服务器上装了serv-u 7.3.0.2版,发现变化好大啊,以前是标准的win界面。现在纯粹就是个多了许多ajax效果的web界面。刚开始感觉很不习惯,而且我点那些链接一个也点不开。大概猜到是自己服务器上对IE的安全设置过高导致。于是重置了安全级别为“中”的级别设置,马上就可以了。估计是由于之前设置了禁用javascript或者禁止下载等原因,现在懒得去查了。

之所以用Serv-u是因为看到网上说IIS自带的FTP需要使用系统自己的账户,且不能多帐户不能用虚拟目录,功能太少了,所以就没安装FTP组件,而用serv-u。

博客被GFW导致无法使用Google Friend Connect

2008-12-08 9:52| 分类:Internet web开发| 标签: | 6,565 次点击

前天Google Friend Connect开放注册了,在那之前注册还得填一份Google文档申请,我就没去填,现在正好开放了,于是想适用下。

使用非常简单,登录www.google.com/friendconnect 一步步往下即可,可是我在上传了两个文件:rpc_relay.html和canvas.html后,总是无法通过认证:

错误一:

111

即提示:

You need to put this file on your web site server for Friend Connect to work.

We were unable to locate required files at the home URL:

  • Confirm that http://www.chenfangyi.com/ is the correct "Home URL" of your site. If not, go back.
  • Confirm that rpc_relay.html is at your "Home URL":http://www.chenfangyi.com/rpc_relay.html
  • Confirm that canvas.html is at your "Home URL":http://www.chenfangyi.com/canvas.html

Please correct the above issues.

于是怀疑跟之前博客被GFW有关,于是直接访问这个地址:http://www.chenfangyi.com/canvas.html 会提示:

错误二:

image 

可以看到下面的链接里有.chenfangyi.com字样,而且前面的域名时gmodules.com,这显然是国外的IP,所以根据上次的经验,这个地址肯定被GFW了,所以出现第“错误二”在意料之中。但是按我之前的推论,这个带有.chenfangyi.com字符的地址只是在国内被GFW,国外访问都是正常的,所以google那边应该是可以访问这个地址的,只会出现“错误二”,而不会出现“错误一”。但按今天这样子看,同时出现了“错误一”和“错误二”,证明国外也是不能访问这个地址的。也就是,我的博客,实际上从上次被屏蔽后就一直都不能被国外IP访问!

联想到我同学曾说从来没有访问过我的博客,看来确实是被屏蔽了。为了证实这个推断,我用fg和在线代理访问www.chenfangyi.com,均无法连接:

image

image

或者就是:

image

并且用fg和在线代理用美国IP访问baidu.com、yisou.com、youdao.com,搜索.chenfangyi.com,都出现以上被重置的情况(google.com没问题,google.cn也可以,可能是google.cn在国外访问又变成了国外的IP吧)。可以证明域.chenfangyi.com已经彻底被封。

看来月光说的是对的:“如果无法解封的话,国外用户和Google搜索引擎将永远无法访问你的站点,除非换域名”,那么对我的这种封法就是封外不封内,禁止了国外用户访问域.chenfangyi.com,而不禁止国内用户访问。这样子前面所提到的《www.chenfangyi.com非典型性撞墙,请更改feed地址》中的“非典型”就完全可以解释了。

简单一句话就是:禁止包含.chenfangyi.com的URL被国外用户(包括个人电脑和spider)访问。所以:

1、国外不能访问这个域名。
2、国外不能访问带有这个关键字的URL。
3、但因为在国外用户看来,GFW只能管住baidu.com、youdao.com、google.cn等使用国内IP的搜索引擎,所以国外只有用baidu.com和youdao.com等国内搜索引擎才会出现链接被重置的情况(google.cn在这个例子中GFW没有管住,不知google用了什么技术)。
4、其他那些管不住的搜索引擎,只能封住他们的蜘蛛,不让他们的蜘蛛来,这样子搜索引擎上就没有博客的索引,也就间接禁止了国外用户搜集到博客上的资料。也就是月光所说的:google无法访问你的站点。
5、国内可以直接访问这个域名。
6、国内用户使用google.com、yahoo.com等国外搜索引擎或者GR时,google.com所在服务器虽然不需要访问被封博客,但因为搜索返回结果的URL有被封关键字,所以GFW也会下手,重置了页面。
7、国内用户可以正常使用baidu.com等国内SE或者鲜果等国内RSS Reader。

可以看到GFW是把我博客看成一个有泄密危险的博客,禁止国外访问和索引我的博客。关于第6、7两点,为何GFW不对baidu.com、youdao.com等国内搜索引擎下手,这里有三个可能:
第一个可能,GFW探测到是国外的URL上有这个违禁词,觉得危险就封了,而国内的不封;
第二个可能,GFW不管是不是国外的,他都想封掉,但对在国内IP的搜索引擎不起作用,无法控制重置,就像他无法控制国外用户使用google.com,只能控制google.cn一样;
第三种可能,GFW担心国内的搜索引擎老被重置影响不太好,所以只重置国外的。

其实以上的过程就是《Technorati再次无法访问》的翻版,月光提到:

这次Technorati遇到的是关键字屏蔽,国内用户可以使用国外搜索引擎如www.google.comwww.yahoo.com搜索一下“.technorati.com”,会出现“连接被重置”的现象,国外用户使用国内的www.google.cnwww.baidu.com搜索这个关键字也可以出现同样的提示。

我的博客情况与Technorati的遭遇如出一辙,只不过一个是对内屏蔽,一个是对外屏蔽。把“国内”和“国外”、“google.com”和“google.cn”兑换,就是:

这次博客遇到的是关键字屏蔽,国外用户可以使用国内搜索引擎如www.google.cnwww.baidu.com搜索一下“.chenfangyi.com”,会出现“连接被重置”的现象,国内用户使用国外的www.google.comwww.yahoo.com搜索这个关键字也可以出现同样的提示。

既然这样子,说明GFW并不考虑你是国外的还是国内的搜索引擎,只是管得到管不到的问题,所以三种可能中第二种可能性最大。

早在三年前,我的MSN Space就曾经无缘无故的不能访问,但后台可以正常访问,当时找了好久才知道原因,原来是一篇日志含有一个被GFW的链接。想不到过了三年,我的博客还是得忍受GFW的压迫。而且这次更为彻底。造成了访客无法用feed.chenfangyi.com订阅博客;http下访问GR查看这个种子时会导致GR出错;GR更新feed.chenfangyi.com缓慢,以前这些问题我都忍了,现在发现无法使用Google Friend Feed,并且国外访客居然一个都没有,我只想要一个正常一点的独立博客却这么难!

唉,只能听从月光意见,准备去申请解封

techweb博客又变为wordpress了

2008-11-10 10:27| 分类:Internet tech web开发 wordpress| 标签: | 2,426 次点击

前段时间看到《techweb博客升级了》,变成了wpmu搭建的wordpress平台,当时还把自己的数据导出了一下,想转移到自己博客上来,后来不知为何又变回oblog的,再过一段时间在google里就《techweb博客从昨天起就被google搜索结果认定为恶意软件》,而且不是一天两天了,感叹techweb这也算大站了,居然还总是被挂马,难道是机房别的机子的ARP病毒导致的?今天看到techweb程序员写的《TechWeb博客终于切换成功了。》才知道了原因。

这篇文章说到oblog的安全性:

“安全性。这是最致命的。oblog继承了asp程序的本性,安全性非常差。经常出现漏洞,博客三天两头的被挂马。”

果然,看来就是oblog的问题导致techweb博客被google认定为恶意网站,用ASP程序的无奈啊,基本可以理解。我还注意到了这次改版为wordpress跟上次一样,原有的链接都没有失效,比如http://tsenfine.blog.techweb.com.cn/archives/2007/200788141730.shtml,仍可以跳转到wordpress的日志下http://tsenfine.blog.techweb.com.cn/archives/3,应该用的是301重定向,techweb这点做的非常细致,转移过程中SEO也做的很到位。

文章还说到了关于oblog的SEO的问题:

“搜索引擎体验不好。页面很多东西都是js的。oblog是静态页面+js结合的方式。都什么年代了,还这么老土。除了性能我们也要友好的搜索引擎体验。”

这点我也非常认同,oblog我安装过但没使用过,我本来还以为在techweb上oblog肯定是经过优化的,shtml应该是伪静态,想不到是真的静态生成了页面!怪不得侧边栏取得最近文章列表都是用Ajax输出,显然这非常不利于SEO,而且最近一段时间techweb博客的侧边文章列表都显示不出来了。

屈伟还提到wordpress mu版给每个用户建了上十个数据表,这的确跟国内网站程序的开发模式很不一样,但我觉得wordpress mu迁移数据起来可能比lyceum更简单。

把oblog的sqlserver数据库都导入到mysql,这应该是项挺麻烦的事,期待屈伟的下文——wordpress mu的技术解决方案。

百度贴吧上神奇的图片的实现原理——图片hack

2008-11-08 17:15| 分类:web开发| 53,714 次点击

刚才在班级群里有人发了个百度贴吧的链接,有个很有意思的图,回复之后就会变换,而且变换的图片上还会有你留言的内容。具体可以看这个链接:
http://tieba.baidu.com/f?z=496706661&ct=335544320&lm=0&sc=0&rn=50&tn=baiduPostBrowser&pn=0

我看了这张图片的地址是:http://www.flashswf.com.cn/ws/tp.aspx?a=东门霸王祝大家天天快乐&b=.jpg  初步分析了下:

贴吧引用图片(URL形式)>图片所在服务器判断图片来源地址>而发表后百度贴吧的URL上会有这个字符串>图片所在服务器取得这个字符串>对服务器上的图片进行处理(给这张图片打上字符串的水印)>百度贴吧继续引用就会出现神奇的变换了。比如下面这三张,就会让人感觉很神奇,分别有人回复了“霞”、“秀珍”和“福州”:

image

image

image

这里的关键是百度贴吧是用get而不是post形式获取留言内容的,所以图片所在服务器才能取得留言的内容,所以每次有人回复时图片都会发生一次变换,实际上任何人进入到这个帖子里看到的图片上的水印就是最后一楼回复的内容。

不过有一点不甚明白,第一张好理解,图片所在服务器可以取得IP和所在贴吧名称,但第三章,如何取得百度用户名?

暂且我把这个行为称为“图片hack”。先记下,推广时或许会排上用场。

Pages: 1 2 3 Next