星期二, 六月 01, 2010

Codeman的 Google 边栏评注

可有可无的操作系统。唉!!无语了。

主旨: CSDN.NET - 中国领先的IT技术社区,为IT专业技术人员提供最全面的信息传播和服务平台 (查看 Google 边栏评注

星期一, 九月 17, 2007

Javascript的IE和Firefox兼容性汇编

以下以 IE 代替 Internet Explorer,以 MF 代替 Mozzila Firefox

1. document.form.item 问题
(1)现有问题:
现有代码中存在许多 document.formName.item("itemName") 这样的语句,不能在 MF 下运行
(2)解决方法:
改用 document.formName.elements["elementName"]
(3)其它
参见 2

2. 集合类对象问题
(1)现有问题:
现有代码中许多集合类对象取用时使用 (),IE 能接受,MF 不能。
(2)解决方法:
改用 [] 作为下标运算。如:document.forms("formName") 改为 document.forms["formName"]。
又如:document.getElementsByName("inputName")(1) 改为
document.getElementsByName("inputName")[1]
(3)其它

3. window.event
(1)现有问题:
使用 window.event 无法在 MF 上运行
(2)解决方法:
MF 的 event 只能在事件发生的现场使用,此问题暂无法解决。可以这样变通:
原代码(可在IE中运行):

...


新代码(可在IE和MF中运行):
onclick="javascript:gotoSubmit(event)"/>
...

此外,如果新代码中第一行不改,与老代码一样的话(即 gotoSubmit 调用没有给参数),则仍然只能在IE中
运行,但不会出错。所以,这种方案 tpl 部分仍与老代码兼容。

4. HTML 对象的 id 作为对象名的问题
(1)现有问题
在 IE 中,HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用。在 MF 中不能。
(2)解决方法
用 getElementById("idName") 代替 idName 作为对象变量使用。

5. 用idName字符串取得对象的问题
(1)现有问题
在IE中,利用 eval(idName) 可以取得 id 为 idName 的 HTML 对象,在MF 中不能。
(2)解决方法
用 getElementById(idName) 代替 eval(idName)。

6. 变量名与某 HTML 对象 id 相同的问题
(1)现有问题
在 MF 中,因为对象 id 不作为 HTML 对象的名称,所以可以使用与 HTML 对象 id 相同的变量名,IE中不
能。
(2)解决方法
在声明变量时,一律加上 var ,以避免歧义,这样在 IE 中亦可正常运行。
此外,最好不要取与 HTML 对象 id 相同的变量名,以减少错误。
(3)其它
参见 问题4

7. event.x 与 event.y 问题
(1)现有问题
在IE 中,event 对象有 x, y 属性,MF中没有。
(2)解决方法
在MF中,与event.x 等效的是 event.pageX。但event.pageX IE中没有。
故采用 event.clientX 代替 event.x。在IE 中也有这个变量。
event.clientX 与 event.pageX 有微妙的差别(当整个页面有滚动条的时候),不过大多数时候是等效的。

如果要完全一样,可以稍麻烦些:
mX = event.x ? event.x : event.pageX;
然后用 mX 代替 event.x
(3)其它
event.layerX 在 IE 与 MF 中都有,具体意义有无差别尚未试验。


8. 关于frame
(1)现有问题
在 IE中 可以用window.testFrame取得该frame,mf中不行
(2)解决方法
在frame的使用方面mf和ie的最主要的区别是:
如果在frame标签中书写了以下属性:

那么ie可以通过id或者name访问这个frame对应的window对象
而mf只可以通过name来访问这个frame对应的window对象
例如如果上述frame标签写在最上层的window里面的htm里面,那么可以这样访问
ie: window.top.frameId或者window.top.frameName来访问这个window对象
mf: 只能这样window.top.frameName来访问这个window对象

另外,在mf和ie中都可以使用window.top.document.getElementById("frameId")来访问frame标签
并且可以通过window.top.document.getElementById("testFrame").src = 'xx.htm'来切换frame的内容
也都可以通过window.top.frameName.location = 'xx.htm'来切换frame的内容
关于frame和window的描述可以参见bbs的‘window与frame’文章
以及/test/js/test_frame/目录下面的测试
----adun 2004.12.09修改

9. 在mf中,自己定义的属性必须getAttribute()取得
10.在mf中没有 parentElement parement.children 而用
parentNode parentNode.childNodes
childNodes的下标的含义在IE和MF中不同,MF使用DOM规范,childNodes中会插入空白文本节点。
一般可以通过node.getElementsByTagName()来回避这个问题。
当html中节点缺失时,IE和MF对parentNode的解释不同,例如





MF中input.parentNode的值为form, 而IE中input.parentNode的值为空节点

MF中节点没有removeNode方法,必须使用如下方法 node.parentNode.removeChild(node)

11.const 问题
(1)现有问题:
在 IE 中不能使用 const 关键字。如 const constVar = 32; 在IE中这是语法错误。
(2)解决方法:
不使用 const ,以 var 代替。

12. body 对象
MF的body在body标签没有被浏览器完全读入之前就存在,而IE则必须在body完全被读入之后才存在

13. url encoding
在js中如果书写url就直接写&不要写&例如var url = 'xx.jsp?objectName=xx&objectEvent=xxx';
frm.action = url那么很有可能url不会被正常显示以至于参数没有正确的传到服务器
一般会服务器报错参数没有找到
当然如果是在tpl中例外,因为tpl中符合xml规范,要求&书写为&
一般MF无法识别js中的&

14. nodeName 和 tagName 问题
(1)现有问题:
在MF中,所有节点均有 nodeName 值,但 textNode 没有 tagName 值。在 IE 中,nodeName 的使用好象
有问题(具体情况没有测试,但我的IE已经死了好几次)。
(2)解决方法:
使用 tagName,但应检测其是否为空。

15. 元素属性
IE下 input.type属性为只读,但是MF下可以修改

16. document.getElementsByName() 和 document.all[name] 的问题
(1)现有问题:
在 IE 中,getElementsByName()、document.all[name] 均不能用来取得 div 元素(是否还有其它不能取的元
素还不知道)。

标签:

星期四, 三月 01, 2007

新版blogger试用

这是我见到的最好的个人博客管理站点,由于我是google的忠实用户,所以google所推出 的各个产品是最好用的。就像现在所使用的博客一样,使我感到google的强大。
现在就新版blogger试用而言,整洁的界面控制,清晰的框架布局,简便易用的控制台。不错,看来我还是多努力将自己的博客做得更好。好了。就写到此,希望能在GNU/Linux下也能正常使用google的所有产品。
现写到这儿吧!!!!

OK, got it right now!!!!!!!!!!

标签:

星期日, 十一月 19, 2006

LDAP应用概述与qmail+LDAP安装配置

LDAP应用概述与qmail+LDAP安装配置
1 概述
计算机网络经过长期的发展,不同的操作系统和应用程序以不同的格式在网络上存储量的信息,一个网络管理员无
法在一个集中的信息库中,以方便的方法管理网络信息源.用户必须使用不同的应用程序获取不同的信息和资源,
这大大增加了用户的负担? 使许多信息难于共享,从而在一定程度上制约了网络的发展,因而需要一种新的技术够
以通用的格式和方式实现信息的存储和共享,实现网络的共享.

目录服务技术就是用于实现上述需求的.目录服务可以命名、描述和指定一个企业范围内的用户和资源,从而简化
通信与管理;它可以使用户通过简单的搜索查找资源及其他用户; 它可以帮助管理人员收集和控制散布与该机
构的信息,并可以使他们通观地审视信息.目前基于目录服务的各种网上应用越来越多.特别是随着Intranet的崛起
以及轻型目录服务LDAP(Lightweight Directory Access Protocol)的开发,人们对其价值的认识日趋明朗.

本文档详细描述了Unix中常用的邮件服务器qmail的安装和配置过程,以及qmail和LDAP的整合,重点在于qmail的基
本应用及其通过LDAPServer来进行Pop3认证的配置过程,对于其它诸如邮件网关、邮件虚拟域、邮件列表、SMTP认
d证等不做叙述.本文档假定对qmail邮件服务器和OpenLDAP的LDAPServer有基本的了解,在各种软件包安装之前,
请认真阅读软件包附带的相关安装说明文档.

邮件服务器基于LDAP的应用扩展,是目前基于LDAP管理Internet信息的应用之一,此类系统基于LDAP的WWW网关也
是使用LDAP的一个方向,下图给出了这两种应用的总体结构:




2 安装前的准备
操作系统
RedHat Linux 6.2

所需软件包
1. qmail-1.03.tar.gz (http://www.qmail.org)
2. ucspi-tcp-0_88_tar.gz (http://cr.yp.to/ucspi-tcp.html)
3. checkpassword-0_90_tar.gz (http://cr.yp.to/checkpwd.html)
4. qmail-ldap-1_03-20010301_patch.gz (http://www.nrg4u.com/)
5. openldap-2_0_7.tgz (http://www.openldap.org)

主机IP地址和域名配置,在本例中为:
IP:192.168.0.117
DomainName :gloomy.openet.com.cn
(LDAP Server的RootDN为:dc=gloomy dc=openet dc=com dc=cn)
3 安装与配置
1. 卸载SendMail邮件系统
由于大多数Linux发行版本中都预装了SendMail邮件系统,所以在安装qmail邮件服务器前最好卸载SendMail邮件服
务器,使用如下命令:
#netsysv (取消系统boot时启动SendMail)
#mv /usr/lib/sendmail /usr/lib/sendmail.bak
#mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
#mv /usr/bin/newaliases /usr/bin/newaliases.bak
#mv /usr/bin/mailq /usr/bin/mailq.bak

2. 安装qmail软件包
a)首先确定qmail的安装路径,若选默认安装的话,使用如下命令,否则需要修改qmail软件包中相应的conf*文件:
#mkdir /var/qmail
b) 增加qmail所需要的组和用户,使用如下命令:
#groupadd nofiles
#useradd -g nofiles -d /var/qmail/alias alias

#useradd -g nofiles -d /var/qmail qmaild
#useradd -g nofiles -d /var/qmail qmaill
#useradd -g nofiles -d /var/qmail qmailp
#groupadd qmail
#useradd -g qmail -d /var/qmail qmailq
#useradd -g qmail -d /var/qmail qmailr
#useradd -g qmail -d /var/qmail qmails
c) 编译qmail源代码并安装,使用如下命令:
#tar zxvf qmail-1.03.tar.gz
#cd qmail-1.03
#make setup check
d) 建立相应的配置文件,使用如下命令:
#config-fast gloomy.openet.com.cn

#cd /var/qmail/alias
#touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
#chmod 644 qmail*
e) 选择邮件的存储方式:
在qmail中,支持三种邮件存储方式,分别是典型的/var/spool/mail方式、传统的Unix /user/Mailbox方式和新的
/user/Maildir方式,其中前两种方式为大多数的邮件客户端所支持,但是它们均存在安全上的隐患,所以在这里
使用了第三种方式,下面分别叙述这种方式的建立方法:
/var/spool/mail 方式
#cp /var/qmail/boot/proc /var/qmail/rc
user/Mailbox 方式
#cp /var/qmail/boot/home /var/qmail/rc
user/Maildir 方式
1)#cp /var/qmail/boot/home /var/qmail/rc
2)建立相应的邮件用户,例如:#useradd test
#passwd test
3)使用qmail提供的工具建立Maildir,命令如下:
$ /var/qmail/bin/maildirmake Maildir
$ echo ./Maildir/ .qmail
(注意这里必须以用户权限建立邮箱)
4)修改 /var/qmail/rc 文件,把其中的/Mailbox 改为/Maildir/
5) 为了使root用户也能收发邮件,使用如下命令:
# su alias
$ cd
$ /var/qmail/bin/maildirmake Maildir
$ echo ./Maildir/ .qmail
f) 建立启动qmail的shell文件run_mail,其内容为:
#cat run_mail
csh -cf ‘/var/qmail/rc’ & 3. 测试qmail基本邮件系统
首先启动qmail邮件服务器,然后测试邮件的收发,使用如下命令:
#run_mail
#echo to : ReceiverName | /var/qmail/bin/qmail-inject
(其中 ReceiverName 为邮件接受者的ID,例如test)
在邮件发送后,可以查找是否收到邮件,分三种方式,依赖邮件的存储方式:
/var/spool/mail 方式
$cd /var/spool
$vi ReceiverName
或者用
$mail

user/Mailbox 方式
打开用户根目录下的Mailbox文件,看是否收到邮件
user/Maildir 方式
$cd Maildir
$ls new
(注意在以上测试时,如果发生错误,可以查看/var/log/maillog文件获得出错原因)

4. 添加Pop3和SMTP服务
可以使用inetd超级服务器或TcpServer来建立相应的Pop3和SMTP服务,为了支持大容量的邮件用户,建议使用
TcpServer来监听服务端口启动相应的服务,建立命令如下:
#tar zxvf ucspi-tcp-0_88_tar.gz
#cd ucspi-tcp-0.88
#make setup check
#tar zxvf checkpassword-0_90_tar.gz
#cd checkpassword-0.90
#make setup check
修改上面建立的run_mail文件,修改后的内容如下:
#cat run_mail
csh -cf '/var/qmail/rc' & tcpserver –u 502 –g 501 -c 100 0 smtp/var/qmail/bin/qmail-smtpd &
tcpserver -c100 0 pop3/var/qmail/bin/qmail-popup gloomy.openet.com.cn
/bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir &修改/var/qmail/control/rcpthosts文件,来增加
SMTP接收邮件的域
例如:
#cat /var/qmail/control/rcpthosts
gloomy.openet.com.cn
ldap,openet.com.cn
tbs.openet.com.cn
dopenet.com.cn

5. 测试Pop3和SMTP服务
首先启动qmail邮件服务器,然后测试,使用如下命令:
1) 本地测试
#run_mail
#netstat –na | grep 25
#netstat –na | grep 110
#telnet localhost 110
user test
pass test
list
retr 1
2) 远程测试
利用Windows下的图形邮件客户端(如outlook、foxmail等)来测试邮件的收发,客户端邮件帐号的建立请参考附
带的帮助文档.

6. 为qmail增加LDAP支持
qmail可以通过LDAP来代替传统的/etc/passwd方式的Pop3认证,以便提高认证效率和有效的支持大容量的邮件客户
,为了使qmail获得LDAP支持,需要在qmail的基础上增加具备LDAP认证的Patch包,具体操作使用如下命令:
#gunzip qmail-ldap-1_03-20010301_patch.gz
#cd qmail-1.03
#patch -p1 < /path to qmail-ldap patch/qmail-ldap patch name 在patch包打好之后,需要修改qmail的Makefile文件来配置相应的LDAP信息,具体如下(这里只说明必须修改的, 其余的可选项请参考QLDAPINSTALL.TXT文档): 1) -LDAPFLAGS = -DCLEARTEXTPASSWORD 配置是否在LDAP目录中使用明文密码 2) -LDAPLIBS = 配置使用的LDAP接口库,在本例中为: -LDAPLIBS = -L/root/LdapServer/lib -lldap –llber –lldap_r–lpthread -lresolv 3) -LDAPINCLUDES = 配置使用的LDAP头文件,在本例中为: -LDAPINCLUDES = -I/root/LdapServer/include 4)-SHADOWLIBS = -lcrypt –lshadow -SHADOWOPTS = -DPW_SHADOW 配置使用的密码认证方式 在Makefile设置修改完毕后,重新编译qmail源文件,然后覆盖安装qmail,使用如下命令: #make setup check 7. 安装OpenLDAP d本例中采用了OpenLDAP的开放源代码LDAP Server,详细的管理请参考(http://www.openldap.org)站点的文档以及 《LDAP配置手册》,下面概述其安装配置过程: #tar zxvf openldap-2_0_7.tgz #cd openldap-2.0.7 #./configure #make depend #make #make test #make install 修改OpenLDAP Server的配置文件,启动slapd服务器,具体如下: #cd path to LDAP Server/ #vi etc/openldap/slapd.conf 主要修改slapd.conf文件中的如下部分,在本例中为: ############################################# # ldbm database definitions ############################################# database ldbm suffix "dc=gloomy , dc=openet , dc=com , dc=cn" rootdn "dc=gloomy , dc=openet , dc=com , dc=cn" rootpw secret index objectclass,mail,uid index qmailUser 8. 配置qmail+LDAP 在LDAPServer安装测试完毕后,修改并建立相应的qmail配置文件,增加对LDAP LookUp的支持,分为如下几步: 1) 在/var/qmail/control/下建立相应的LDAP支持文件: #cat ldapserver 192.168.0.117 #cat ldapbasedn dc=gloomy , dc=openet , dc=com , dc=cn #cat ldapobjectclass qmailUser 2) 为LDAP添加相应的支持qmail邮件用户的schema: #cd qmail-1.03 #cp qmail.schema /root/LdapServer/etc/openldap/schema 修改slapd.conf文件,加入下面一行: include /root/LdapServer/etc/openldap/schema/qmai.schema 3) 修改前面建立的run_mail启动脚本,修改后的内容如下: #cat run_mail csh -cf '/var/qmail/rc' & tcpserver –u 502 –g 501 -c 100 0 smtp/var/qmail/bin/qmail-smtpd & tcpserver -c100 0 pop3/var/qmail/bin/qmail-popup gloomy.openet.com.cn /var/qmail/bin/auth_pop /var/qmail/bin/qmail-pop3d Maildir & 9.在LDAP DIT中增加qmail邮件用户目录首先 启动LDAP服务器,然后创建相应的*.ldif文件(有关LDIF文件的格式,请参考RFC2849的描述),插入LDAP数据库中的 相关记录中: #/root/LdapServer/libexec/slapd 在本例中建立的的交换文件为mailer.ldif,其具体内容如下: #cat mailer.ldif dn: cn=testUser , dc=gloomy , dc=openet , dc=com , dc=cn cn: testUser sn: testUser objectClass: top objectClass: person objectClass: inetOrgPerson objectClass: qmailUser mail: href="mailto:test@gloomy.openet.com.cn">test@gloomy.openet.com.cn
mailHost: gloomy.openet.com.cn
mailMessageStore: /home/test/Maildir/
mailQuota: 1000000S,100C
uid: test
userPassword: test
插入qmail用户目录到LDAP的目录信息树中,使用如下命令:
#/root/LdapServer/bin/ldapadd –x–D”dc=gloomy,dc=openet,dc=com,dc=cn”
–W –f mailer.ldif


10. 测试基于LDAP的Pop3认证
在上述步骤完成后,从新测试qmail邮件系统的运行状况,主要从以下三个方面测试,具体命令如下:
1) 本地测试
具体请参考上面小节3的方法
2) Pop3+SMTP测试
具体请参考上面小节5的方法
3) 测试工具
#/var/qmail/bin/qmail-ldaplookup –u test
#/var/qmail/bin/qmail-ladplookup –m href="mailto:test@gloomy.openet.com.cn">test@gloomy.openet.com.cn
4 参考资料
1) Life with qmail (http://www.lifewithqmail.org/lwq.html)
2) Life with qmail-LDAP (http://www.lifewithqmail.org/ldap/)
3) QLDAPINSTALL (http://www.nrg4u.com/)
4) Open LDAP 2.0 Administrator’s Guide
(http://www.openldap.org/doc/admin/)
5) 《LDAP配置手册》
5 总结
LDAP使得过去杂乱无序的网络资源和信息管理呈现出一种树状的有序体系,不但使Internet资源的管理和控制变得
易于进行,而且同时在另外一方面也提高了各种信息源的使用效率,LDAP用10%的代价实现了X.500 DAP90%的功能,
是目前Internet上越来越广泛的应用之一,本文通过对qmail邮件服务器和LDAP整合应用的安装和配置的描述,希
望能够对掌握LDAP这个下一代因特网服务与应用的基础提供一定的帮助.



//*************附qmail+vpopmail+sqwebmail的安装步骤******************************************/
一、安装环境
安装平台:RedHat Linux
安装的机器: mail.mydomain.com
软件包:
qmail-1.03 qmail基本系统
ucspi-tcp-0.88 tcpsever等服务程序
daemontools-0.70 监视工具
checkpassword-0.81 pop3验证用户的程序
ezmlm-0.53 邮件列表管理
vpopmail-4.9.6-1 虚拟域用户pop3支持
qmailadmin-0.35 虚拟域web管理
autorespond-1.0.0 自动回复程序
sqwebmail-1.2.0 webmail
vqsignup-0.4 web方式用户注册
软件来源:
http://www.qmail.org/
target="_blank">http://www.inter7.com/qmail
注意:每个包安装前务必先仔细阅读INSTALL和FAQ,很多问题在FAQ都有解决方法.

二、安装步骤
1、安装qmail
1)创建qmail安装目录
#mkdir /var/qmail
2)添加qmail必需的用户和组
#groupadd nofiles
#useradd -g nofiles -d /var/qmail/alias alias
#useradd -g nofiles -d /var/qmail qmaild
#useradd -g nofiles -d /var/qmail qmaill
#useradd -g nofiles -d /var/qmail qmailp
#groupadd qmail
#useradd -g qmail -d /var/qmail qmailq
#useradd -g qmail -d /var/qmail qmailr
#useradd -g qmail -d /var/qmail qmails
3)解压、解包和编译
(假设这些包都下载到/var/tmp目录下)
#cd /var/tmp
#tar xzvf qmail-1.03.tar.gz
#cd qmail-1.03
进入qmail目录后,仔细阅读一下README和INSTALL文件.然后开始编译qmail
#make setup check
4)配置
#./config
5)建立系统别名
#(cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root)
#chmod 644 ~alias/.qmail*
可以在这些别名文件中指定管理用户来接受这些系统邮件,如
#echo 'admin' > ~alias/.qmail*
6)建立启动文件和用户的maildir
#cp /var/qmail/boot/home /var/qmail/rc
  #chmod 755 /var/qmail/rc
编辑 /var/qmail/rc
  修改其中./Mailbox成为./Maildir以支持maildir的pop收信方式,如下:
   # !/bin/sh
   # Using splogger to send the log through syslog.
   # Using qmail-local to deliver messages to ~/Maildir by default.
   exec env - PATH="/var/qmail/bin:$PATH"   qmail-start ./Maildir splogger qmail
  其中splogger qmail指令是用来将日志文件记录在/中.
  建立maildir的方法:
   $/var/qmail/bin/maildirmake /etc/skel/Maildir
   $echo ./Maildir/ > ~/.qmail
  注意Maildir必须为该使用者所有,可以chown变更,并以chmod 700Maildir设定权限.

2、安装ucspi-tcp-0.88
  #tar zxvf ucspi-tcp-0.88.tar.gz
  #cd ucspi-tcp-0.88
  #make
  #make setup check
  执行文件将被安装在/usr/local/bin中.

3、安装checkpassword
  #tar zxvf checkpassword-0.81.tar.gz
  #cd checkpassword-0.81
  #make
  #make setup check
  #chmod og-rx /bin/checkpassword
  执行文件checkpassword将被安装在/bin中.
如果不对/etc/passwd中的用户开放mail,则不需要装checkpassword,而只要装vpopmail就行了.

4、安裝daemontools
  #tar zxvf daemontools-0.70.tar.gz
  #cd daemontools-0.70
  #make
  #make setup check
  执行文件将安装于/usr/local/bin中.
安装本工具后可以用
#mkdir /var/run/qmail
#supervise /var/run/qmail /var/qmail/rc
来启动qmail,还可以用svc来关闭或重启qmail,用svstat监视qmail运行情况.(参见qmail FAQ)

5、安装vpopmail
#groupadd vchkpw
#useradd -g vchkpw vpopmail
#mkdir ~vpopmail/etc
#echo ":allow" > ~vpopmail/etc/tcp.smtp
#tar zvfz vpopmail-4.9.6-1.tar.gz
#cd vpopmail-4.9.6-1
#./configure --enable-roaming-users=y--enable-default-domain=mydomain.com --enable-passwd=n
(注:--enable-roaming-users=y表示允许漫游的用户使用该邮件系统)
#make
#make install-strip
#crontab -e(编辑cron文件,如下)
40 * * * * /home/vpopmail/bin/clearopensmtp 2>&1 >/dev/null
#cd /home/vpopmail/bin
#./vadddomain mydomain.com mydomain
添加mydomain.com到/var/qmail/control/rcpthosts中.

6、停止sendmail 服务
  #killall -9 sendmail (Linux)
  接着以qmail的sendmail libraby取代原有 sendmail
  #mv /usr/lib/sendmail /usr/lib/sendmail.old
  #mv /usr/sbin/sendmail /usr/sbin/sendmail.old
  #ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
  #ln -s /var/qmail/sbin/sendmail /usr/sbin/sendmail
移除sendmail启动程序,以 Linux 为例:
  移除inetd.conf中的sendmail之设定,以及/etc/rc.d/init.d下的sendmail启动?br>募?Linux)

7、启动qmail SMTP ,POP3 daemon系统服务
  1)建立 SMTP 转信规则
   建立 /etc/tcp.smtp ,CH容为(B
   :allow
   此为接受任何Client端所发出子转送信件
   若要拒绝某些IP所发出的Relay则修改 /etc/tcp.smtp如下
    1.2.3.4:allow,RELAYCLIENT=""
    127.:allow, RELAYCLIENT=""
   如此,除1.2.3.4及127.*之外的所有地址,都将被拒绝转送信件.
  2)转换tcp.smtp成为cdb格式
   #/usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp   注意:若对tcp.smtp有任何变更,都必?过tcprules转换成为cdb文件才会生效.    另外,tcp.smtp若为空白,则表示拒绝所有的转送,因为预设的规则为deny.    至此,转送规则已建立,稍后将依此规则启动qmail-smtpd. 3)设定SMTP及POP3 daemon的启动    移除inetd.conf中有关smtp及pop3的设定(加上#号)    编辑/etc/services,改为以下设定:     smtp 25/tcp mail     # pop-3 110/tcp #pop version 3     # pop-3 110/udp     pop3 110/tcp     pop3 110/udp    启动 SMTP:     /usr/local/bin/tcpserver -v -x /etc/tcp.smtp.cdb \     -u UID -g GID 0 smtp /var/qmail/bin/qmail-smtpd 2>&1     | /var/qmail/bin/splogger smtpd 3 &
   其中UID和GID为前述新增 qmail系统账号qmaild的UserID,以及nofiles的group ID.
   /var/qmail/bin/splogger那一行会将log文件写在/var/log/maillog中.
   启动 POP3:
   编辑启动档加入以下设定:
    tcpserver -H -R 0 pop3 /var/qmail/bin/qmail-popup mail.mydomain.com /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir &
在/etc/rc.d/init.d下建立文件qmail,内容如下:
-------------------------------------------
#! /bin/sh

case "$1" in
start)
echo -n "start qmail:"

/var/qmail/rc &
echo "."

echo -n "start smtp service:"
  /usr/local/bin/tcpserver -v -x /etc/tcp.smtp.cdb      -u UID -g GID 0 smtp /var/qmail/bin/qmail-smtpd 2>&1     | /var/qmail/bin/splogger smtpd 3 &
echo "."

echo -n "start pop3 service:"
    tcpserver -H -R 0 pop3 /var/qmail/bin/qmail-popup mail.mydomain.com /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir&amp;amp;
echo "."
;;
stop)
echo -n "stop qmail:"
echo "."
;;
*)
exit 1
;;
esac

exit 0

-----------------------------------------------------
#cd ../rc3.d
#ln -s ../init.d/qmail S98qmail
(注:这里的启动文件没有写全)

8、qmailadmin——WEB方式管理qmail
1)ezmlm的安装
$make
$make man
#make setup
2)autorespond的安装
gcc -Wall -o autorespond autorespond.c
cp autorespond /usr/local/bin/autorespond
3)qmailAdmin的安装
在安装前首先要考虑满足以下几项要求:
a.是否拥有一个vpopmail用户vchkpw
b.cgi-bin目录的所在位置
c.ezmlm目录的所在位置
d.autorespond目录的所在位置
如果能够达到以上要求,可以继续安装
#./configure
#make
#make install-strip
检测安装是否正确:浏览器中打开路径http://mail.mydomain.com/cgi-bin/qmailadmin,
看根据前面设置的用户和密码是否能够成功登录进去.


9、SqWebmail——一种Webmail解决方案
1)安装SqWebmail
#tar xvfz sqwebmail-1.2.0.tar.gz
#cd sqwebmail-1.2.0
#./configure --without-authpam --without-authuserdb --enable-webpass=no/
--without-authpwd --without-authshadow
#make configure-check
#make (当我make的时候报错找不到db.h,cp /usr/include/db1/db.h/usr/include/db.h)
#make check
#make install-strip
#make install-configure
检测安装是否正确:浏览器中打开路径http://mail.mydomain.com/cgi-bin/sqwebmail
2)安装vqsignup
#tar xvfz vqsignup-0.4.tar.gz
#cd vqsignup-4.0
按照INSTALL安装(?)

安装这个软件包可能比较麻烦,需要一些耐心.
a. 修改Makefile文件:
FLAGS=-I/home/vpopmail/include
修改-I/home/vpopmail/include指到真实的vpopmail/include目录

修改下面的这行
$(CC) $(FLAGS) -o $(BIN) $(OBJS) -L/home/vpopmail/lib -lvpopmail-lcrypt
修改 -L/home/vpopmail/lib 为真实的vpopmail lib的目录

b. 编译
#make

c. 安装
拷贝signup.cgi和signup.conf文件到cgi-bin目录下
切换目录到cgi-bin目录下
#chown vpopmail signup.cgi
#chgrp vchkpw signup.cgi
#chmod ug+s signup.cgi
#chmod ugo+r signup.conf

拷贝vqsignup_html目录到cgi-bin目录下,确信对所有用户可读
拷贝vqsignup.html文件到DocumentRoot目录下,确信能够被访问.

编辑cgi-bin目录下的vqsignup.conf文件
修改"add_domain"的所有行,加上你的真实的域,把其他的行删除掉

更改vqsignup_text/*.html文件,使包含"result_*"的行的路径指到正确的全路经.

修改vqsignup_text目录下所有的文件,使它们只包含你想支持的域,你也可以定制这些页面,使它们更加好看些.

修改DocumentRoot目录下vqsignup.html文件,使它只包含你想支持的域,你也可以定制这个页面,使它更加好看
些.

d. 测试
用你的浏览器访问http://your web server/your sub dir/vqsignup.htm,试着注册新用户,如果成功的话,
那么就恭喜你了.如果有错误,请返回安装步骤仔细查看文件的权限和vqsignup.html里的值是否正确.

三、参考文献
Adam McKenna所编写qmail-HOWTO(http://www.flounder.net/qmail/qmail-howto.html)
qmail FQA (,CH含于(Bqmail 1.03 Source Code)
http://www.qmail.org/
http://www.linuxaid.com.cn/solution/
上有几篇比较好的安装文/
http://www.linuxforum.net/cgi-bin/perl/wwwthreads.pl上的qmail讨论也不错
http://www.linuxforum.net/cgi-bin/perl/wwwthreads.pl上的qmail讨论也不错

星期日, 十一月 05, 2006

观《神韵金陵》有感

昨天,我们全家受老舅舅的委托到长江路101号南京市文化艺术中心看了一场精彩的表演:
《神韵金陵》。十分精彩。不错,很好。这个表演主要体现了古都近千年的风采神韵。不错,可惜的是无法上传图片。因为在现场无法拍照。只能用文字来记录了。

星期六, 十月 21, 2006

如何才能写出一篇有影响力的blog

英文原文链接:http://performancing.com/node/169

中文翻译链接:http://totem.totematncu.net/post/1/1545

Chris Garrett依其经验写下十类可以吸引人气的文章, 大家也可以检视自己是否写过这类的文章. 以下的标题傅瑞
德所译.



信息流通的网络时代, 造就了以学习者为中心的做中学典范. 如就blog新手来说, 真的需要大量阅读教学文.以我自
己在七月学习架设blog系统的经验来说, 一开始从Google找到Mark Wu的pLog(改名为LifeType)中文论坛, 经由阅读
别人(如lss)的经验分享逐渐把blog给架设起来. 之后也开始写了一些简单的教学文章来回馈blog社群, 带着三位研
究生一路走来, 慢慢形成现下的小小教学社群. 在此过程, 我不见得跟这些同好(如Mark Wu, or lss)在网络或面对
面互动过, 却真实地引发了知识的扩散与交流.

十大列表 (Lists)

这跟网摘的流行是一样的道理, 信息过多, 需要有人来过滤与推荐. 读者只需要依照兴趣, 订阅某些推荐者的文章,
那就事半功倍了. 如最近智邦生活馆将以重金(营收的10%)来聘请各路部落客帮他们做网摘, 就可以看出来Lists有多
重要了. 不过智邦的消息真是吓我ㄧ跳, 因为在上星期的研究所课程里, 我就以此为题跟研究生们讨论, 过没几天就
看到这个消息. 一度以为计算机教室被装针孔了, 其实也料中另外一件事, 以后有机会再跟大家分享. 我建议本社群
的学生要是想打工, 可以去应征做网摘.

发起串联活动 (Campaign)

这点原作者想表达的是更广泛的社会运动, 不见得只是一般的Blog Tag (如五个怪癖大串连). 但就我的观察, 刚开始
流行写怪癖的时候, 大家觉得还蛮新鲜的, 到现在大家对这种串连活动避之唯恐不及. 而且在目前的多元价值观下,
大家对一个活动的看法相当多元, 常常你的热心邀请, 换来的是一顿闭门羹. 所以如何找到一个普世价值及一批很热
心的初期参与者, 藉由社交网络的扩散, 渐渐吸引晚期大多数的部落客主动参与. 例如我就蛮推荐最近新浪网绿光发
起的用知识创造希望.

访问名模 (Interview)

这部份原作者想表达的是, 透过访问一些特殊的人物来引起阅听人的兴趣. 那我会建议, 先好想你的观点, 列出想问
的题目, 但不要是Yes or No的无聊题目, 最好是能深化观点的题目. 好奇的你一定会问, 去哪找这些人物呢? 那得
先问你自己的blog主题为何? 例如艺文类, 去采访一些知名作家, 应该可以吸引为数不少的读者吧.

评鉴报告 (Review)

就是把你使用过某些产品或服务的感受写出来, 对于用过或即将使用的人, 会有兴趣想知道别人的使用经验. 例如我
们社群在这个学期, 一起累积了中华电信 e-Tutor 系统的使用经验, 至少我跟小新星是非常有兴趣地在阅读这些经
验. 当然还有很多其它的事物可以写啦.

案例研究 (Case study)

假如你身边有一些有趣的事件发生, 可以把这些事的前因后果写出来, 应该也蛮吸引人的. 如在这一波的英文学习热
潮下, 不断地有人出书写一些名人的英文学习经验. 或是最近将掀起的家庭教育改进热潮, 应该又会有一些如何教养
小孩的书或名人的教养经验谈大出吧.

研究结果 (Research results)

这不必然要像学术界做的艰深研究, 而是一些时事的意见调查或对特定事物做深入一点的资料分析与解读即可. 例如
介绍本文的傅瑞德就有写过一篇「台北101是世界最高的建筑吗?」, 足以为代表. 又或者前一阵子我曾写过的计算
blog身价的原理, 也有很高的点阅率, 还有来自各个搜寻引擎的读者喔!!

报导新趋势、新东西 (What's new, trends)

介绍熟悉领域里的最新消息或趋势, 如之前介绍的睡眠与学业成就之间的关系, 又或者是现在的明星脸比比看. 那你
的最新消息是? 不过就我自己的观察, 写所谓的最新消息与趋势, 不见得是好的做法, 因为大家看在线新闻不就可以
知道这些消息了吗? 那写这些信息又有何意义呢? 建议摘译原文资料, 帮助大家更快地了解世界动态, 若能引发别人
去读原文数据, 促进语言学习的兴趣, 则是更棒了.

找个目标来打 (Attack!)

这个部份太好举例了, 如最近选战的玮哥事件, 新闻说单日冲破30万人次, 就我看不止, 短短一个月不到就累积了一
百多万人次的流量, 真是恐怖. 但我真的不建议我们社群这样做, 一不小心会引火自焚. 建议还是以教育为本, 慢慢
耕耘, 对社会产生正面的影响会比高流量来得更重要.

问观众问题 (Ask the audience)

现在的新世代所喜欢的是表达自我, 那么在文章中若是能留下一些问号或是询问读者的句子, 藉以建立互动的机会,
这应该也是写文章的人所乐见的不是吗? 不过你得先建立基本的观众, 才有机会提问不是吗? 所以我觉得作者的这项
建议, 有硬挤出来的嫌疑, 你们觉得呢?

最后我觉得善用自己的才能, 才是最佳的blog写作秘诀, 如小新星的手绘能力很棒, 希望他能更有自信地画下去. 蕙
琪对于周遭人事物的描述很动人, 教学讯息的作业都是最棒的, 希望可以保持到作业三. 小猪的旅游日记是我的最爱
, 也是我心目中的第一名, 好期待可以持续地读到你的大作. 还有大家, 你们都有自己的特色, 希望能透过blog的写
作来发现自己.

星期一, 十月 16, 2006

计算机族必喝的健康饮料

★绿豆薏仁汤     

绿豆可以清热解毒, 利尿消肿, 薏仁则可以健脾止泻, 轻身益气, 对于经常需要熬夜工作者或是心烦气躁, 口干舌燥,
便秘, 长青春痘时, 除了多吃蔬菜水果与补充水份外, 把绿豆薏仁汤当点心食用, 对于消暑除烦非常有帮助.

★绿茶

绿茶是近几年来最为人所津津乐道的养生饮品, 因为其中含强效的抗氧化剂儿茶酚以及维他命C, 不但可以清除体内的自
由基, 还能使副肾皮质分泌出对抗紧张压力的荷尔蒙, 当然绿茶中所含的少量咖啡因也可以刺激中枢神经, 提振精神.
最好在白天饮用以免影响睡眠.

★枸杞茶

枸杞子含有丰富的β胡萝卜素, 维生素B1, 维生素C, 钙, 铁, 具有补肝, 益肾, 明目的作用, 因为本身就具有甜味,
不管是泡茶或是像葡萄干一样当零嘴来吃对计算机族的眼睛酸涩, 疲劳, 视力加深的问题都有很大的帮助.

★菊花茶

有明目清肝的作用, 有些人就干脆菊花加上枸杞一起泡来喝, 或是用蜂蜜菊花茶都于疏肝解郁都很有帮助.

★决名子茶

决名子有清热, 明目, 补脑髓, 镇肝气, 益筋骨的作用, 若有便秘的人还可以在晚餐饭后饮用, 对于治疗便秘很有效果.

★杜仲茶

杜仲具有补血与强壮筋骨的作用, 对于经常久坐, 腰虽背痛很有帮助, 男女都可以喝, 若是女性朋友还可以在生理期的
末期与四物汤一起服用.