工作,学习,生活,这里将会有一些记录. 备用域名:http://meisw.51099.com 注册 | 登陆
浏览模式: 标准 | 列表2008年12月的文章

apache2+php5.2,启动cache

./configure --prefix=/www/httpd --with-mpm=worker --enable-so --enable-rewrite --enable-cache --enable-mem-cache --enable-disk-cache --enable-static-htcacheclean  --enable-speling

./configure --prefix=/www/php --with-apxs2=/www/httpd/bin/apxs --with-gd=/usr/local/gd --enable-gd-native-ttf --with-jpeg-dir=/usr/local/jpeg --with-png-dir=/usr --with-ttf --with-zlib --with-freetype-dir=/usr/local/freetype --with-mysql=/www/mysql4118 --with-iconv --enable-mbstring --enable-ftp --with-curl --enable-maintainer-zts


php-5.2.8
checking for MySQL UNIX socket location... no
configure: error: Cannot find libmysqlclient_r under /www/servers/mysql4118.
Note that the MySQL client library is not bundled anymore!
要求mysql也要加上 --enable-thread-safe-client.
解决方法一:重新编译安装MYSQL的时候加上 --enable-thread-safe-client.
原因:--enable-thread-safe-client    #Compile the client with threads. 如果没有这个参数,编译php的时候会报"Cannot find libmysqlclient_r under”之类的错误。
其实这跟PHP没有关系
那是因为我在编译APACHE的时候,使用--with-mpm模块,所以就必须在编译MYSQL的时候加上 --enable-thread-safe-client.
这是PHP5.2的一个改进,在PHP5.2.0之前的版本都不需要MYSQL启用安全线程

解决方法二:编译之前,先处理一下mysql的库,默认查找libmysqlclient_r.so,可是mysql默认为libmysqlclient.so,内容完全一样,做个链接即可
# cd /data/mysql/lib/mysql/
# ln -s libmysqlclient.so.15.0.0 libmysqlclient_r.so
照做。
再次重新编译安装PHP
顺利通过!

 

php-5.2.8
[Fri Dec 19 15:55:51 2008] [crit] Apache is running a threaded MPM, but your PHP Module is not compiled to be thre
adsafe.  You need to recompile PHP.
Pre-configuration failed

编译apache启用了worker的mpm,编译PHP时就提示上面的.网上资料说,要在编译PHP也要加上相应的参数  --enable-maintainer-zts,但问题仍就,最后把apache的worker给取消就正常了.暂时试用段时间看

反垃圾邮件XBL,SBL,PBL,ROKSO

spamhaus是目前世界上影响最大反垃圾邮件组织,只要被它列入黑名单,你的邮件服务器就算瘫痪了,因为据说全球80%以上的服务器会拒收从你的邮件服务器发去邮件.他们提供四种类型XBL,SBL,PBL,ROKSO.国内有很多IP被列为了spamhaus这几类RBL当中.今天我们来说说如何对列为PBL的IP进行申诉.

首先到http://www.spamhaus.org/pbl/index.lasso 的Look Up中对你邮件服务器使用的IP进行查询

www.spamhaus.org提供包括以下的几种:

XBL(Exploits Block List):它是针对因为安全问题被劫持(比如僵尸机)或是蠕虫/病毒,带有内置式垃圾邮件引擎和其他类型的木马来发垃圾邮机器的实时黑名单IP列表。它的数据主要来源于两个合作组织:cbl.abuseat.org及www.njabl.org.因为被列入XBL的服务器大多为被第三方劫持利用,所以有可能导致误判断。

SBL(The Spamhaus Block List):它是已经经过验证的垃圾邮件源及确有垃圾邮件发送行为的实时黑名单列表。它也是spamhaus最主要的项目之一,由分布在全世界9个国家的,每周7天,每天24小时进行列入新记录和删除记录的工作。所以,这个列表可信度高使用人数也多。如果你被列入算是严重事件,被列入后,需要你的ISP(电信或是网通)的IP管理人员去和Spamhaus联系才有可能移除。

PBL(The Policy Block List):它主要是包含动态IP及哪些允许未经验证即可发送邮件的SMTP服务器的IP地址段。这一个列表最明显的特点就是提供了一个IP地址移除的自助服务,IP它列入后,可以自己申请移除。所以就算是被PBL列入,影响并不大,请要使用移除功能移除即可,方法请看:spamhaus的PBL申诉图解 http://www.5dmail.net/bbs/viewth ... p%3Bfilter%3Ddigest

ZEN:这个简单,就是上面三个的合集,即包括上面XBL,SBL,PBL的数据。

ROKSO(The Register of Known Spam Operations):这个最严重了。字面上就可以理解了进了这个数据库的人物都是有确切的证据证明垃圾邮件行为。属于专业的发送垃圾邮件的组织或是个人。spamhaus认为全世界80%的垃圾邮件来自于这个数据库中的成员发出。根据spamhaus列出截止4/11/08的名单的数据显示,112条记录中我国有9笔,其中中国4笔,香港2笔,台湾3笔.而美国占大部分,所以难怪大家收到的都是英文的垃圾邮件了。

经上所述:

1)如果你考虑选哪一个RBL的话,我建议保守的是用SBL,然后选XBL+SBL.最后是ZEN;

2)如果你提心被哪一个列被最严重,按严重级别由重到轻分别为:ROKSO->SBL->XBL->PBL

XMLHTTP应用参考

一、使用步骤:
1、创建XMLHTTP对象 //需MSXML4.0支持
2、打开与服务端的连接,同时定义指令发送方式,服务网页(URL)和请求权限等。客户端通过Open命令打开与服务端的服务网页的连接。与普通HTTP指令传送一样,可以用"GET"方法或"POST"方法指向服务端的服务网页。
3、发送指令。
4、等待并接收服务端返回的处理结果。
5、释放XMLHTTP对象
 
二、XMLHTTP方法:
Open( bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword )
bstrMethod:  数据传送方式,即GET或POST。
bstrUrl:     服务网页的URL。
varAsync:   是否同步执行。缺省为True,即同步执行,但只能在DOM中实施同步执行。用中一般将其置为False,即异步执行。
bstrUser:    用户名,可省略。
bstrPassword:用户口令,可省略。
 
Send( varBody )
varBody:指令集。可以是XML格式数据,也可以是字符串,流,或者一个无符号整数数组。也可以省略,让指令通过Open方法的URL参数代入。
 
setRequestHeader( bstrHeader, bstrvalue )
bstrHeader:HTTP 头(header)
bstrvalue: HTTP 头(header)的值 

如果Open方法定义为POST,可以定义表单方式上传:
xmlhttp.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded")
 
三、XMLHTTP属性:
onreadystatechange:在同步执行方式下获得返回结果的事件句柄。只能在DOM中调用。
responseBody:    结果返回为无符号整数数组。
responseStream:   结果返回为IStream流。
responseText :    结果返回为字符串。
responseXML:    结果返回为XML格式数据。

四、示例:
< script language="JavaScript" >
function getDatal(url){
    var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP.4.0");//创建XMLHTTPRequest对象,需MSXML4.0支持 ["MSXML2.XMLHTTP.4.0","MSXML2.DOMDocument.4.0"]
    xmlhttp.open("POST",url,false,"","");   //使用HTTP GET初始化HTTP请求
    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded") ;
    xmlhttp.send("param=aa");                   //发送HTTP请求并获取HTTP响应
    return xmlhttp.responseText;         //获取返回结果字符串
}
< /script >

----------------------

XMLHTTP对象及其方法
------------------
MSXML中提供了Microsoft.XMLHTTP对象,能够完成从数据包到Request对象的转换以及发送任务。
创建XMLHTTP对象的语句如下:
Set objXML = CreateObject("Msxml2.XMLHTTP") 或
Set objXML = CreateObject(“Microsoft.XMLHTTP”)
' Or, for version 3.0 of XMLHTTP, use:
' Set xml = Server.CreateObject("MSXML2.ServerXMLHTTP")
对象创建后调用Open方法对Request对象进行初始化,语法格式为:
poster.open http-method, url, async, userID, password
Open方法中包含了5个参数,前三个是必要的,后两个是可选的(在服务器需要进行身份验证时提供)。参数的含义如下所示: 
http-method: HTTP的通信方式,比如GET或是 POST
url: 接收XML数据的服务器的URL地址。通常在URL中要指明 ASP或CGI程序
async: 一个布尔标识,说明请求是否为异步的。如果是异步通信方式(true),客户机就不等待服务器的响应;如果是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作
userID 用户ID,用于服务器身份验证
password 用户密码,用于服务器身份验证
XMLHTTP对象的Send方法
用Open方法对Request对象进行初始化后,调用Send方法发送XML数据:
poster.send XML-data
Send方法的参数类型是Variant,可以是字符串、DOM树或任意数据流。发送数据的方式分为同步和异步两种。在异步方式下,数据包一旦发送完毕,就结束Send进程,客户机执行其他的操作;而在同步方式下,客户机要等到服务器返回确认消息后才结束Send进程。
XMLHTTP对象中的readyState属性能够反映出服务器在处理请求时的进展状况。客户机的程序可以根据这个状态信息设置相应的事件处理方法。属性值及其含义如下表所示:
值 说明
0 Response对象已经创建,但XML文档上载过程尚未结束
1 XML文档已经装载完毕
2 XML文档已经装载完毕,正在处理中
3 部分XML文档已经解析
4 文档已经解析完毕,客户端可以接受返回消息
客户机处理响应信息
客户机接收到返回消息后,进行简单的处理,基本上就完成了C/S之间的一个交互周期。客户机接收响应是通过XMLHTTP对象的属性实现的:
● responseTxt:将返回消息作为文本字符串;
● responseXML:将返回消息视为XML文档,在服务器响应消息中含有XML数据时使用;
● responseStream:将返回消息视为Stream对象。
资料引用:http://www.knowsky.com/5190.html

一个比较全面的创建 XMLHttpRequest 的代码:


function getXmlHttpPrefix() {
if (getXmlHttpPrefix.prefix)
return getXmlHttpPrefix.prefix;

var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
var o;
for (var i = 0; i < prefixes.length; i++) {
try {
// try to create the objects
o = new ActiveXObject(prefixes[i] + ".XmlHttp");
return getXmlHttpPrefix.prefix = prefixes[i];
}
catch (ex) {};
}

throw new Error("Could not find an installed XML parser");
}

//////////////////////////
// Start the Real stuff //
//////////////////////////


// XmlHttp factory
function XmlHttp() {}

XmlHttp.create = function () {
try {
if (window.XMLHttpRequest) {
var req = new XMLHttpRequest();

// some versions of Moz do not support the readyState property
// and the onreadystate event so we patch it!
if (req.readyState == null) {
req.readyState = 1;
req.addEventListener("load", function () {
req.readyState = 4;
if (typeof req.onreadystatechange == "function")
req.onreadystatechange();
}, false);
}

return req;
}
if (window.ActiveXObject) {
return new ActiveXObject(getXmlHttpPrefix() + ".XmlHttp");
}
}
catch (ex) {}
// fell through
throw new Error("Your browser does not support XmlHttp objects");
}; 

-------------------------------

var xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
var xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
var xmlHttp=new ActiveXObject("MSXML.XMLHTTP");
var xmlHttp=new ActiveXObject("MSXML3.XMLHTTP");
这几个代码都有可能, 上面的代码就遍历这些对象选择一个创建成功的出来, 区别就是操作系统带的 MSXML 包的版本不一样, 这些包是 ActiveX 控件, IE 和很多 Windows 应用都可能用到它. 对于 Mozilla, Firefox, 直接用
var xmlHttp = new XMLHttpRequest();
就可以了.

eaccelerator

wget http://x.x.x.47/eaccelerator-0.9.5.3.tar.bz2

export PHP_PREFIX="/opt/php"
$PHP_PREFIX/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config
make
make install


[eAccelerator]

extension_dir = "/usr/local/lib/php/extensions"
extension="/no-debug-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="128"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
;eaccelerator.log_file = "/tmp/eaccelerator/eaccelerator_log
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"


mkdir /tmp/eaccelerator
chmod 0777 /tmp/eaccelerator

 

---------------------------------------------------


Libraries have been installed in:
   /home/eaccelerator-0.9.5.3/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

Build complete.
(It is safe to ignore warnings about tempnam and tmpnam).

qmail

rpm -ivh igenus-daemontools-0.76-5.0.i386.rpm

rpm -ivh igenus-ucspi-tcp-0.88-5.0.i386.rpm

rpm -ivh igenus-vpopmail-5.4.17-5.1.i386.rpm

[root@ctnt-mm i386]# rpm -ivh igenus-vpopmail-5.4.17-5.1.i386.rpm
error: Failed dependencies:
        libmysqlclient.so.14 is needed by igenus-vpopmail-5.4.17-5.1.i386
        mysql >= 3.23.54 is needed by igenus-vpopmail-5.4.17-5.1.i386
    Suggested resolutions:
        mysql-4.1.7-4.RHEL4.1.i386.rpm

其它机上查找
[root@centos ~]# find / -name "libmysqlclient.so.14"
/usr/lib/mysql/libmysqlclient.so.14
确定目录
本机查找,因本机为tar安装,且为5
http://mirror.centos.org/centos-4/4.7/os/i386/CentOS/RPMS/
下载 mysql-4.1.22-2.el4.i386.rpm
需要 安装 perl-DBI-1.40-9.i386.rpm
OK

rpm -ivh igenus-qmail-1.03-5.0.i386.rpm

rpm -ivh igenus-courier-authlib-4.1.3-5.0.i386.rpm
[root@ctnt-mm i386]# rpm -ivh igenus-courier-authlib-0.59.3-5.0.i386.rpm
error: Failed dependencies:
        /usr/bin/expect is needed by igenus-courier-authlib-0.59.3-5.0.i386
    Suggested resolutions:
        expect-5.42.1-1.i386.rpm

rpm -ivh expect-5.42.1-1.i386.rpm


rpm -ivh igenus-maildrop-2.0.4-5.0.i386.rpm

rpm -ivh igenus-courier-imap-4.1.3-5.0.i386.rpm

rpm -ivh igenus-clamav-0.94-5.0.i386.rpm

rpm -ivh igenus-spamassassin-3.1.8-5.0.i386.rpm
error: Failed dependencies:
        perl(Digest::SHA1) is needed by igenus-spamassassin-3.1.8-5.0.i386
    Suggested resolutions:
        perl-Digest-SHA1-2.07-5.i386.rpm
rpm -ivh perl-Digest-SHA1-2.07-5.i386.rpm


rpm -ivh igenus-ripmime-1.4.0.6-5.0.i386.rpm

rpm -ivh igenus-simscan-1.4.0-5.1.i386.rpm

rpm -ivh igenus-autorespond-2.0.5-5.0.i386.rpm

rpm -ivh igenus-ezmlm-idx-0.40-5.0.i386.rpm


rpm安装完毕


perl(HTTP::Date)
perl(LWP::UserAgent)
http://mirror.centos.org/centos-5/5.2/os/x86_64/CentOS/perl-libwww-perl-5.805-1.1.1.noarch.rpm

1、依赖关系的解决,安装Spamassassin需要很多perl模块的支持,以下是所需模块列表及安装方法,各软件包都可从CPAN取得;

必须的软件包:
Digest::SHA1
HTML::Parser >=3.43
Net::DNS >= 0.34
LWP (aka libwww-perl)
HTTP::Date
IO::Zlib >= 1.04
Archive::Tar  >=1.23

export LC_ALL=C


config
vpopmail
vchkpw

grant select,insert,update,delete,create,alter,drop on vpopmail.* to vpopmail@localhost identified by '';
create database vpopmail

/home/vpopmail/bin/vadddomain domain

 

Privilege separation user sshd does not exist

启动sshd提示:

Privilege separation user sshd does not exist

google了一下,找到了解决方法。

方法一(推荐):
修改/etc/passwd文件,在其中加入
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
或者
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
我加入的是:
sshd:x:109:65534::/var/run/sshd:/usr/sbin/nologin
参考
http://www.unixguide.net/comments/sun/ssh_installation.shtml/37.shtml
http://www.gipsky.com/modules/newbb/viewtopic.php?topic_id=966

方法二(不推荐):
修改/etc/ssh/sshd_config文件
将其中
UsePrivilegeSeparation yes
修改为
UsePrivilegeSeparation no
虽然能解决问题,但是降低了ssh的安全级别。

解开RPM包

rpm2cpio a.rpm | cpio --extract --make-directories

 

2009.07.03

rpm -ivh kchmviewer-3.1-1.el5.5.x86_64.rpm --prefix=/home/chc/rpms/tmp

因为rpm实际上使用cpio格式打包的,因此可以先转成cpio然后解压,如下所示:
rpm2cpio kchmviewer-3.1-1.el5.5.x86_64.rpm | cpio -div