在Linux服务器版AS3下安装Qmail步骤

发表于:2007-07-04来源:作者:点击数: 标签:
首先进行安装ucspi-tcp-0.88 AS3的glibc的版本问题,打完补丁才能正常编译 root: ~ tar zxvf ucspi-tcp-0.88.tar.gz root: ~ cd ucspi-tcp-0.88 root: ~ patch -p1 ucspi-tcp-0.88.a_record.patch \\ 补丁所在路径 root: ~ patch -p1 ucspi-tcp-0.88.errno.p

  首先进行安装ucspi-tcp-0.88
  AS3的glibc的版本问题,打完补丁才能正常编译
  
  root: ~ $ tar zxvf ucspi-tcp-0.88.tar.gz
  root: ~ $ cd ucspi-tcp-0.88
  root: ~ $ patch -p1 < ucspi-tcp-0.88.a_record.patch \\ 补丁所在路径
  root: ~ $ patch -p1 < ucspi-tcp-0.88.errno.patch \\ 补丁所在路径
  root: ~ $ patch -p1 < ucspi-tcp-0.88.nobase.patch \\ 补丁所在路径
  root: ~ $ make
  root: ~ $ make setup check
  
  ##################
  
  安装qmail-1.03
  
  root: ~ $ mkdir /var/qmail
  root: ~ $ mkdir /var/qmail/alias
  
  建立组及用户
  
  root: ~ $ groupadd nofiles
  root: ~ $ groupadd qmail
  root: ~ $ useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent
  root: ~ $ useradd qmaild -g nofiles -d /var/qmail -s /nonexistent
  root: ~ $ useradd qmaill -g nofiles -d /var/qmail -s /nonexistent
  root: ~ $ useradd qmailp -g nofiles -d /var/qmail -s /nonexistent
  root: ~ $ useradd qmailq -g qmail -d /var/qmail -s /nonexistent
  root: ~ $ useradd qmailr -g qmail -d /var/qmail -s /nonexistent
  root: ~ $ useradd qmails -g qmail -d /var/qmail -s /nonexistent
  
  打补丁及编绎安装qmail
  
  root: ~ $ tar zxvf qmail-1.03.tar.gz
  root: ~ $ tar zxvf qmail-smtpd-auth-0.31.tar.gz
  root: ~ $ cp qmail-smtpd-auth-0.31/base64.* qmail-1.03 \\ 打smtp-auth补丁,支持smtp认证
  root: ~ $ patch -d qmail-1.03 < qmail-smtpd-auth-0.31/auth.patch \\ 补丁路径
  root: ~ $ cd qmail-1.03
  root: ~ $ patch -p1 < qmail-103.patch \\ 补丁路径
  root: ~ $ patch -p1 < qmailqueue-patch \\ 补丁路径
  root: ~ $ patch -p1 < qmail-maildir++.patch \\ 补丁路径
  root: ~ $ patch -p1 < qmail-1.03.errno.patch \\ 补丁路径
  root: ~ $ patch -p1 < qmail-1.03.qmail_local.patch \\ 补丁路径
  root: ~ $ vi qmail-smtpd.c \\ 搜索函数straynewline中的451改为553
  
  // 当你的服务器收到无效格式的邮件时,会发送:"I am not going to aclearcase/" target="_blank" >ccept that message at the moment,you can try again later",对方服务器收到后,几秒钟后又会发送同样的邮件给你,造成多次的重复。
  // 改为553后,你的服务器将直接发送:"I am not going to accept that message,don't try sending it again.",告诉对方的服务器不要再发这封无效的信件。
  
  root: ~ $ make setup check
  root: ~ $ ./config-fast mail.snoopy.gov \\ 这里改为你的域名
  
  添加别名用户
  
  root: ~ $ touch /var/qmail/alias/.qmail-root
  root: ~ $ touch /var/qmail/alias/.qmail-postmaster
  root: ~ $ touch /var/qmail/alias/.qmail-mailer-daemon
  root: ~ $ chmod 644 /var/qmail/alias/.qmail*
  root: ~ $ echo postmaster > /var/qmail/control/bouncefrom \\ 退回邮件
  root: ~ $ echo mail.snoopy.gov > /var/qmail/control/helohost \\ 主机名(解决新浪拒收邮件问题)
  root: ~ $ echo 10485760 > /var/qmail/control/databytes \\ 接收邮件的最大容量 (0=无限制)??
  root: ~ $ echo 40 > /var/qmail/control/concurrencylocal \\ 本地同时投递邮件的数目
  root: ~ $ echo 40 > /var/qmail/control/concurrencyremote \\ 同时投递至远程主机的数目
  
  /var/qmail/control/locals \\ 确保文件中有缺省域名,否则投递失败的邮件将不知所踪
  
  如果存在postfix和sendmail,或其他邮件服务,停用现在的mail服务,或则删除它!
  
  root: ~ $ /etc/rc.d/init.d/sendmail stop
  root: ~ $ cp /var/qmail/bin/sendmail /usr/sbin/qmail.sendmail
  root: ~ $ rm -f /etc/alternatives/mta
  root: ~ $ ln -s /usr/sbin/qmail.sendmail /etc/alternatives/mta
  
  root: ~ $ ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
  root: ~ $ ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
  root: ~ $ chmod 777 /usr/sbin/sendmail \\ 这里特别要注意检查/usr/sbin/sendmail的属性.不然会导致装完后用igenus在web界面发信不成功
  
  ###################
  
  安装vpopmail
  
  root: ~ $ mkdir /home/vpopmail
  root: ~ $ mkdir /home/vpopmail/etc
  
  添加用户和组
  
  root: ~ $ groupadd vchkpw
  root: ~ $ useradd -g vchkpw vpopmail
  
  添加mysql的vpopmail用户,用于操作vpopmail数据库
  
  AS3默认安装后,mysql缺少mysql-server-3.23.58-4.i386.rpm,装上去!然后测试是否可以正常使用
  
  root: ~ $ cp /usr/lib/mysql/* /usr/lib/
  root: ~ $ cp /usr/include/mysql/* /usr/include/
  root: ~ $ service mysqld start
  root: ~ $ mysql -p
  
  mysql>create database vpopmail; \\ 进入mysql命令行
  
  mysql>grant all on vpopmail.* to vpopmail@localhost identified by "snoopyxp";
  
  编译安装vpopmail
  
  root: ~ $ tar zxvf vpopmail-5.2.1.tar.gz
  root: ~ $ cd vpopmail-5.2.1
  root: ~ $ vi vmysql.h
  
  #define MYSQL_UPDATE_SERVER "localhost" \\ mysql服务器名
  #define MYSQL_UPDATE_USER "vpopmail" \\ 用户名
  #define MYSQL_UPDATE_PASSWD "snoopyx" \\ 改成你设置的密码
  
  #define MYSQL_READ_SERVER "localhost" \\ mysql服务器名
  #define MYSQL_READ_USER "vpopmail" \\ 用户名
  #define MYSQL_READ_PASSWD "snoopyx" \\ 改成你设置的密码
  
  创建tcp.smtp文件(或者使用/etc/tcp.smtp)
  
  root: ~ $ vi /home/vpopmail/etc/tcp.smtp
  
  127.0.0.1:allow,RELAYCLIENT=""
  :allow
  
  root: ~ $ cd /home/vpopmail/etc
  root: ~ $ tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp
  
  进行编译
  
  root: ~ $ ./configure --prefix=/home/vpopmail \\ 指定安装路径
  --enable-mysql=y \\ 是否应用Mysql数据库
  --enable-incdir=/usr/include/mysql \\ Mysql数据库include文件所在目录
  --enable-libdir=/usr/lib/mysql \\ Mysql数据库lib文件所在目录
  --enable-default-domain=snoopy.gov \\ 定义虚拟域名
  --enable-passwd=n \\ 是否使用系统密码验证方式
  --enable-defaultquota=10485760 \\ 定义缺省邮箱大小,10485760为10MB,20971520为20MB,52428800为50MB
  --enable-tcprules-prog=/usr/local/bin/tcprules \\ 指定tcprules目录
  --enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp \\ 指定tcprules应用规则文件
  --enable-vpopuser=vpopmail \\ vpopmail的用户
  --enable-vpopgroup=vchkpw \\ vpopmail的组
  --enable-ip-alias-domains=n \\ 在虚拟域中允许通过反向IP地址查找虚拟域名
  --enable-sqwebmail-pass=y \\ sqwebmail密码验证支持
  --enable-hardquota=10000000 \\ 限制磁盘限额为10M就需要使用下面这个配置参数,若磁盘限额超出,将拒绝接受该用户的新邮件,并返回一封拒绝信息邮件,其中的信息可以定制
  root: ~ $ make
  root: ~ $ make install-strip
  
  创建虚拟域
  
  root: ~ $ cd /home/vpopmail/bin
  root: ~ $ ./vadddomain 域名 (密码)
  \\ 在mysql数据库vpopmail中自动生成vpopmail表单,生成的密码是postmaster@域名帐户的密码,以后登陆qmailadmin就是使用postmaster登陆的
  
  root: ~ $ ./vadduser 用户名 密码
  \\ 会自动往表vpopmail中添加用户数据,用户添加到默认的域里面。如果要添加到其他的虚拟域,用户名要带域名,如pink@snoopy.gov)
  如果不成功的话,则必须先删除创建的域,./vdeldomain 域名 不要使用手工操作mysql删除域和用户帐号(除非你特别熟悉),否则会引起系统帐户的紊乱
  
  ########################
  
  smtp-auth的设置
  
  root: ~ $ chmod 4755 vchkpw
  root: ~ $ chown root.root vchkpw
  
  \\ 如果使用带验证的smtp,smtp进程要调用密码验证程序,则必须要使用 setuid 和setgid。提高vchkpw的权限,才能完成setgid操作。
  
  接下来安装cmd5checkpw
  
  root: ~ $ tar zxvf cmd5checkpw-0.22.tar.gz
  root: ~ $ cd cmd5checkpw-0.22
  root: ~ $ make
  root: ~ $ mkdir /usr/man
  root: ~ $ mkdir /usr/man/man8
  root: ~ $ make install
  
  注意,因为使用vpopmail,所以checkpassword可以不用安装!
  
  生成qmail的启动脚本
  
  root: ~ $ cp /var/qmail/boot/home /var/qmail/rc
  root: ~ $ vi /var/qmail/rc \\ 对rc文件进行修改,以决定投送方式
  
  #!/bin/sh
  
  # Using splogger to send the log through syslog.
  # Using dot-forward to support sendmail-style ~/.forward files.
  # Using qmail-local to deliver messages to ~/Mailbox by default.
  
  exec env - PATH="/var/qmail/bin:$PATH" qmail-start ./Maildir/ splogger qmail &
  
  #vi /var/qmail/smtp //编辑smtp服务的启动脚本
  
  #!/bin/sh
  # -c 100 // 指同时并行连接数为100
  QMAILDUID=qmaild
  NOFILESGID=nofiles
  
  /usr/local/bin/tcpserver -H -R -c 100 -l 0 -t 1 -v -p -x /home/vpopmail/etc/tcp.smtp.cdb -u $QMAILDUID -g $NOFILESGID 0 smtp /var/qmail/bin/qmail-smtpd mail.snoopy.gov /home/vpopmail/bin/vchkpw /bin/true /bin/cmd5checkpw /bin/true 2>&1 | /var/qmail/bin/splogger smtpd 3 &
  
  root: ~ $ vi /var/qmail/pop3 \\ 编辑pop3服务的启动脚本
  
  #!/bin/sh
  
  /usr/local/bin/tcpserver -l mail.snoopy.gov -U -c 100 -H -R 0 pop3 /var/qmail/bin/qmail-popup mail.snoopy.gov /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir &
  
  root: ~ $ chmod 755 /var/qmail/rc
  root: ~ $ chmod 755 /var/qmail/smtp
  root: ~ $ chmod 755 /var/qmail/pop3
  
  运行qmail并测试
  
  root: ~ $ /var/qmail/rc
  root: ~ $ /var/qmail/smtp
  root: ~ $ /var/qmail/pop3
  root: ~ $ ps aux | grep "qmail" \\ 查看qmail的服务进程是否已完全正常启动
  
  如果qmail已正常启动,用outlook测试qmail的smtp和pop3是否正常,注意由于vpopmail支持虚拟域名,在outlook中设置邮件帐号时,用户名后要加上域名,像pink@snoopy.gov。smtp是带认证的,在outlook中也要作相应设置。建议先将qmail测试正常后再安装igenus。如果qmail出现问题,可查看mysql中的vpopmail数据库,/var/log下的mysqld和maillog日志记录
  
  注意: 如果你在X下用X的kmail客户端测试,smtp的验证要选择LOGIN,POP的验证选择纯文本(APOP是错的,虽然有时候mail客户端会自动检测条到APOP上面),如果有好几个验证方式给你选择的话。
  
  如果能发信,但收不到,这个时候看一下/var/log/maillog会找到答案的,一般是由于找不到libmysqlclient.so.12这个mysql库文件造成的,前面我之所以要copy到/usr/lib下就是因为这个问题
  
  ######################
  
  安装并运行igenus
  
  root: ~ $ tar zxvf igenus_2_20030516_snap.tgz -C /var/www/html
  建temp文件夹
  root: ~ $ cd /var/www/html/igenus
  root: ~ $ mkdir temp
  root: ~ $ chmod -R 0755 temp
  root: ~ $ chown -R vpopmail:vchkpw temp
  
  修改httpd.conf
  
  root: ~ $ vi /etc/httpd/conf/httpd.conf
  
  Group Apache
  User Apache
  修改为:
  Group vchkpw
  User vpopmail
  
  AddDefaultCharset ISO-8859-1
  修改为
  AddDefaultCharset GB2312 \\ 使默认页面为中文,2.x的apache需要修改
  
  root: ~ $ /etc/rc.d/init.d/httpd restart \\ 重启apache,使修改生效
  
  修改config_inc.php文件
  
  root: ~ $ cd /var/www/html/config
  root: ~ $ vi config_inc.php
  
  $CFG_BASEPATH = "/var/www/html/igenus";
  
  $CFG_MYSQL_HOST = 'localhost';
  $CFG_MYSQL_USER = 'vpopmail';
  $CFG_MYSQL_PASS = 'snoopy'; \\ 改成你的密码
  $CFG_MYSQL_DB = 'vpopmail';
  
  $CFG_TEMP = $CFG_BASEPATh."/temp";
  
  重新编制Mysql数据库表格
  
  root: ~ $ mysql -u root -p
  
  mysql>use vpopmail;
  mysql>alter table vpopmail drop primary key;
  mysql>alter table vpopmail add column pw_id int(5) NOT NULL primary key auto_increment;
  mysql>create table address (id int(11) unsigned NOT NULL auto_increment,pw_id int(5) unsigned NOT NULL default '0',name varchar(64) NOT NULL default ', email varchar(128) NOT NULL default ',UNIQUE KEY id (id),KEY pw_id (pw_id)) TYPE=MyISAM;
  mysql>CREATE TABLE stow (id int(11) unsigned NOT NULL auto_increment,pw_id int(5) NOT NULL default '0',name varchar(64) NOT NULL default ',http varchar(128) NOT NULL default ',memo varchar(255) NOT NULL default ',PRIMARY KEY (id)) TYPE=MyISAM PACK_KEYS=1;
  mysql>quit;
  
  编辑qmail自启动脚本
  
  root: ~ $ vi /etc/rc.d/init.d/qmail \\ 编辑自动运行脚本
  
  #! /bin/sh
  # chkconfig: 2345 90 90
  # description: qmail (include smtp and pop3) auto start/stop scripts.
  
  . /etc/rc.d/init.d/functions
  
  case "$1" in
  
  start)
  echo -n "start qmail:"
  /var/qmail/rc &
  echo "."
  
  echo -n "start smtp service:"
  /var/qmail/smtp
  echo "."
  
  echo -n "start pop3 service:"
  /var/qmail/pop3
  echo "."
  ;;
  
  stop)
  echo "stop qmail:"
  killproc qmail-send
  killproc qmail-clean
  killproc qmail-rspawn
  killproc qmail-lspawn
  killproc splogger
  killproc tcpserver
  ;;
  
  *)
  exit 1
  ;;
  esac
  
  exit 0
  
  root: ~ $ chmod 755 /etc/rc.d/init.d/qmail
  root: ~ $ chkconfig --add qmail
  \\ 现在只要你启动系统就会自动运行
  
  igenus在安装和使用过程中出现错误的解决方法
  
  1.登录时出现的错误。
  编辑/usr/loal/lib/php.ini,修改:
  register_globals = On
  
  2.发邮件时出现528错误,其实这是php在编译过程中找不到/usr/sbin/sendmail文件造成的,qmail使用/var/qmail/bin/sendmail发信
  解决方法:
  a.添加链接
  root: ~ $ ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
  b.停止apache运行
  c.重新编译php即可
  
  ########################
  
  安装ezmlm and ezmlm-idx使qmail支持邮件列表功能
  
  1.注意:为了启用maillist的MySQL支持,你必须首先建立mysql管理用户:(Ex:user:ezmlm,pass:ezmlm)
  
  root: ~ $ mysql -p
  >use mysql;
  >create database ezmlm;
  >grant all on ezmlm.* to ezmlm@localhost identified by "密码";
  >flush privileges;
  >exit;
  
  root: ~ $ mysqladmin -u root -psnoopyxp create ezmlm
  
  2.ezmlm-idx包含有对ezmlm的修正和补充,他们是一个整体。
  
  root: ~ $ cd /home/software
  root: ~ $ tar -zxvf ezmlm-0.53.tar.gz
  root: ~ $ tar -zxvf ezmlm-idx-0.40.tar.gz
  root: ~ $ mv -Rf ezmlm-idx-0.40/* ezmlm-0.53/ \\ 将ezmlm-idx-0.40下的文件覆盖到ezmlm-0.53下
  root: ~ $ cd ezmlm-0.53
  root: ~ $ patch < idx.patch
  root: ~ $ patch < ezmlm-idx-0.53.400.unified_41.patch
  root: ~ $ make mysql \\ MySQL 支持
  root: ~ $ make clean
  root: ~ $ make man
  root: ~ $ make ch_GB \\ 汉字GB2312支持
  
  修改conf-sqlcc文件
  内容为:-I/usr/include/mysql
  修改conf-sqlld
  内容为: -L/usr/lib/mysql -lmysqlclient -lnsl -lm -lz
  -lz是增加zip压缩支持
  
  修改conf-bin
  第一行:/var/qmail/bin/ezmlm
  
  修改conf-man
  第一行:/var/qmail/man
  
  修改conf-qmail
  第一行:/var/qmail
  
  root: ~ $ make setup
  
  修改/usr/local/qmail/bin/ezmlm/ezmlmrc将"To:##L@##H"修改为"To:<#L#>@<#H#>",主要是修改用邮件客户端收到信之后,收件人地址显示格式错误。
  
  邮件列表收到的信息乱码解决方法:
  
  在/home/vpopmail/domains/snoopy.gov/maillistname/下建立一个charset的文件
  root: ~ $ touch charset
  root: ~ $ chown vpopmail:vchkpw charset
  root: ~ $ chmod go-r charset
  root: ~ $ vi charset \\ 添加一行gb2312
  
  这样你发一份邮件到pink@snoopy.gov 你收到的信息将可以正确的显示中文了!
  
  在你建立一个基于MySQL的maillist之前,你必须保证ezmlm库中已存在一个对应的表(其实我发现没有表,ezmlm会自动建立,只是会提示错误):
  
  Ex:你想建一个基于MySQL的maillist:testlist
  
  root: ~ $ /var/qmail/bin/ezmlm/ezmlm-mktab -d testlist | mysql -uezmlm -pezmlm -f ezmlm
  
  这样就在ezmlm库中为testlist建立了一系列相关表格:
  
  +------------------------+
  | Tables |
  +------------------------+
  | testlist |
  | testlist_allow |
  | testlist_allow_slog |
  | testlist_cookie |
  | testlist_deny |
  | testlist_deny_slog |
  | testlist_digest |
  | testlist_digest_cookie |
  | testlist_digest_mlog |
  | testlist_digest_slog |
  | testlist_mlog |
  | testlist_mod |
  | testlist_mod_slog |
  | testlist_slog |
  +------------------------+
  你可以用一下命令察看,安装了qmailadmin后可以使用qmailadmin管理邮件列表了
  
  root: ~ $ mysqlshow -uezmlm -pezmlm ezmlm
  
  ######################
  
  安装autorespond
  
  root: ~ $ tar zxvf autorespond-2.0.2.tar.gz
  root: ~ $ cd autorespond-2.0.2
  
  修改Makefile文件
  将其中的INSTALL_DIR =修改为 /var/qmail/bin
  root: ~ $ make
  root: ~ $ make install
  root: ~ $ cp autorespond /usr/local/bin
  
  ######################
  
  安装qmailadmin
  安装之前先确认你是否已经安装了vpopmail,并使用vchkpw
  是否已经安装ezmlm。
  是否已经安装autorespond。
  确认以上的工作已完成,可以开始安装qmailadmin
  
  root: ~ $ cd /tmp/software
  root: ~ $ tar zxvf qmailadmin-1.0.6.tar.gz
  root: ~ $ cp en-us qmailadmin-1.0.6/html/en
  root: ~ $ cp en-us qmailadmin-1.0.6/html/en-us
  
  注:以上两步,为了汉化qmailadmin。en-us取自iceblood的qmail安装包
  
  root: ~ $ cd qmailadmin-1.0.6
  root: ~ $ cd qmailadmin-1.0.6
  root: ~ $./configure --enable-cgibindir=/var/www/cgi-bin --enable-htmldir=/var/www/html/igenus --enable-ezmlmdir=/var/qmail/bin/ezmlm (确保你的ezmlm程序文件在此目录下)
  root: ~ $ make
  root: ~ $ make install-strip
  root: ~ $ mkdir -p /var/www/html/images/qmailadmin
  root: ~ $ mv images/*.* /var/www/html/images/qmailadmin/ \\ 复制images下的图片到/var/www/html/images/qmailadmin下
  
  ######################
  安装sqwebmail
  
  root: ~ $ cd /tmp/sofeware
  root: ~ $ tar zxvf sqwebmail-3.5.0-cn.tar.gz
  root: ~ $ cd sqwebmail-3.5.0
  root: ~ $ ./configure --with-db=db \\ 如果你没有安装GDBM库,那么请加上这个,默认系统如果找到了GDBM库会使用GDBM库
  --enable-webpass=yes
  --without-authpam
  --without-authpwd
  --without-authshadow
  --without-authldap
  --without-authuserdb
  --without-authpwd
  --with-authvchkpw
  --with-authdaemon \\ 激活web页面修改密码功能模块
  --enable-cgibindir=/var/www/cgi-bin/sqwebmail
  --enable-imagedir=/var/www/html/sqwebmail
  --disable-utf7-folder-encoding \\ 去掉IMAP文件夹编码支持
  --with-cachedir=/tmp/sqwebmail \\ 缓存目录
  --with-cacheowner=bin \\ 缓存目录所有者default: bin
  --enable-mimetypes=/var/www/html/
  --enalbe-mimecharset=gb2312
  --enable-unicode=gb2312
  root: ~ $ make configure-check
  root: ~ $ make
  root: ~ $ make install-strip
  root: ~ $ make install-configure
  root: ~ $ /usr/local/share/sqwebmail/libexec/authlib/authdaemond start
  
  注意,以后必须启动这个进程进行身份验证,发现安装sqwebmail后,这个进程不启动那么我的邮件系统就没法登陆,总是说密码验证错误,qmailadmin倒可以登陆 su -c "/usr/local/share/sqwebmail/cleancache.pl" bin
  
  现在,重起你主机系统,设置你的outlook或者foxmail.接受邮件了,也可以通过webmail访问你的mail系统了
  http://localhost/cgi-bin/sqwebmail/sqwebmail
  
  通过webmail接受你的邮件信息,sqwebmail我只是装上测试一下,看看效果,它对中文支持比较差,也没有比较好的中文版本,大家还是觉得用igenus比较好http://localhost/cgi-bin/qmailadmin 通过web方式管理和添加用户了
  
  补充:在/home/vpopmail/domains/snoopy.gov下面建立一个.qmailadmin-limits文件,这个文件本身没有在里面写
  maxpopaccounts 100
  default_quota 10485760
  
  这样用qmailadmin添加账号的最大数目就是100,每个邮箱的配额就是10485760,10M

原文转自:http://www.ltesting.net