<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
<title><![CDATA[秀脱]]></title>
        <image>
        <title>http://hi.baidu.com</title>
        <link>http://hi.baidu.com</link>
        <url>http://img.baidu.com/img/logo-hi.gif</url>
        </image>
<description><![CDATA[linux apache php mysql oracle vsftp sendmail ssh dns dhcp host]]></description>
<link>http://hi.baidu.com/xiutuo</link>
<language>zh-cn</language>
<generator>www.baidu.com</generator>
<ttl>5</ttl>


<item>
        <title><![CDATA[linux下通达oa2008版（含2007版）短信通知到手机功能解决方案]]></title>
        <link><![CDATA[http://hi.baidu.com/xiutuo/blog/item/baa4052cc0416ee68b139945.html]]></link>
        <description><![CDATA[
		
		<p>秀脱linux实战笔记之通达OA-2008adv移植实战片篇：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a target="_blank" href="http://sighttp.qq.com/cgi-bin/check?sigkey=d785b0952d6eb4e00ab101f4c4f5dbfcba571350e7a2ffa09141e5031776818e">需要完整解决方案的请qq联系&nbsp;&nbsp;&nbsp;<span><img class="blogimg" border="0" small="0" src="http://wpa.qq.com/pa?p=1:6541657:6"></span></a></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a target="_blank" href="http://item.taobao.com/auction/item_detail-0db1-76be6d41c4903cb3c59d54b4d77cb954.htm"><span><img class="blogimg" border="0" small="0" src="http://hiphotos.baidu.com/xiutuo/pic/item/5660d8820f3ff7b1f603a6bc.jpg"></span>购买整套方案</a></p>
<p>功能介绍：</p>
<p>1.包含报表模块</p>
<p>2.短信通知模块：所有oa系统级别的公告，通知，工作任务分派等，都可以通过手机短信通知到相应的用户,实现方法a：通过飞信fetion短信接口发送;b：通过139邮箱短信功能实现。</p>
<p>环境：<br>
td_oa_2008增强版（含通达2009报表模块）<br>
Apache-2.2.11<br>
php-5.25<br>
mysql5.0.82<br>
ZendOptimizer-3.3.9-linux-glibc23-i386<br>
curl-7.15.0<br>
freetype-2.1.10<br>
gd-2.0.33<br>
jpegsrc.v6b<br>
libpng-1.2.8<br>
libxml2-2.6.24<br>
libxslt-1.1.15<br>
zlib-1.2.3</p>
<p> </p>
<p><span>--------------------------------</span></p>
<p> </p>
<p><span>详情，可以通过本人提供的测试脚本，测试</span></p>
<p> </p>
<p> </p>
<span>
<div class="t_msgfont">linux下通达oa2007-2008短信通知到手机功能实战解决方案linux下通达oa2007-2008短信通知到手机功能实战解决方案：<br>
在windows下，有相应模块处理。<br>
本人写的这个方案解决了在linux下内部短信通知到手机功能，可以定制任意通知模块（当然是内部短信所包括的那些模块）<br>
实现方式：<br>
1.飞信免费短信接口。<br>
2. 139免费邮箱接口。<br>
<a target="_blank" href="http://sighttp.qq.com/cgi-bin/check?sigkey=d785b0952d6eb4e00ab101f4c4f5dbfcba571350e7a2ffa09141e5031776818e"><font color="#800080">有需要的朋友可以联系我<img border="0" src="http://wpa.qq.com/pa?p=1:6541657:6">。</font></a><br>
包括通达oa2007，2008版本的windows到linux下的移植，报表功能，短信通知功能<br>
短信手机通知模块详情，请参看<br>
<a target="_blank" href="http://hi.baidu.com/xiutuo/blog/item/baa4052cc0416ee68b139945.html"><font color="#800080">http://hi.baidu.com/xiutuo/blog/item/baa4052cc0416ee68b139945.html</font></a><br>
移植方案详情，请参看<br>
通达oa2008adv的linux移植：<br>
<a target="_blank" href="http://hi.baidu.com/xiutuo/blog/item/9a6c5cf47dce7268ddc474fd.html"><font color="#0000ff">http://hi.baidu.com/xiutuo/blog/item/9a6c5cf47dce7268ddc474fd.html</font></a><br>
<br>
通达oa2007的linux移植<br>
<a target="_blank" href="http://hi.baidu.com/xiutuo/blog/item/6043669b091fe0b6c9eaf4fb.html"><font color="#0000ff">http://hi.baidu.com/xiutuo/blog/item/6043669b091fe0b6c9eaf4fb.html</font></a><br>
<br>
该文章提供通过139邮箱发送手机短信测试解决方案，该脚本有效期2009-12-30<br>
<br>
<br>
-----<br>
附件为本文章的测试脚本使用该脚本进行短信通知：<br>
<br>
---------------<br>
操作步骤<br>
1 新增用户时，必须设置用户的手机号码，否则无法通知到手机。<br>
&nbsp;&nbsp;  新增用户：&lsquo;系统管理&rsquo;--&lsquo;组织机构设置&rsquo;--&lsquo;用户管理&rsquo;--选择&lsquo;在职人员&rsquo;--&lsquo;新建用户&rsquo;，在这个新建用户页面中<br>
&nbsp;&nbsp;  展开&lsquo;用户可自定义选项&rsquo;在&lsquo;手机号码&rsquo;里添上用户的手机号码即可。<br>
2.进入oa，&lsquo;系统管理&rsquo;--&lsquo;交流设置&rsquo;--&lsquo;短信提醒设置&rsquo;选择卡&lsquo;内部短信默认提醒&rsquo;选择你需要的模块。<br>
这样设置后，用户就可以收到短信通知了<br>
3.在linux的oa目录/webroot下新建一个cmd/test目录，改其属性为777（都可写），<br>
chmod 777 /webroot/cmd/test<br>
4.把automail----调用139邮箱发手机短信<br>
oash----主bash shell<br>
&nbsp;&nbsp;  上传到/webroot/cmd/test目录<br>
5.如果调用发短信oash<br>
&nbsp;&nbsp;  a:通过webphpshell调用 /webroot/cmd/test/oash /webroot/cmd/test/config &amp;<br>
&nbsp;&nbsp;  b:通过linux的作业调用<br>
crontab -e<br>
* * * * * /webroot/cmd/test/oash /webroot/cmd/test/config &amp;<br>
<br>
-----------------------<br>
相关程序名<br>
1.webphpshell: webshell.php<br>
2.bash shell主程序: oash<br>
3.139发邮件程序（自动通知到注册的手机号码）: automail<br>
<br>
日志文件<br>
1. sendflaglog：发送过程日志--用于判断是否发送成功<br>
2. smscontent：邮件内容文件，通过automail时候需要调用<br>
3. smslog：短信通知过程全程日志<br>
4. tmp: 其中一个用户通知时候用到一条记录内容含:手机号码 通知内容 通知时产生的时间 通知ID，中间临时数据.<br>
手机号码 通知内容 通知时产生的时间 通知ID&nbsp;&nbsp;  接受者ID<br>
mobile content send_time &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  sms_id&nbsp;&nbsp;  user_id</div>
<p><br style="clear: both">
<font style="font: 12px song,Verdana; color: #000000"><br>
<br>
</font></p>
<div>
<div>
<div class="right smalltxt">2009-11-24 16:55<br>
&nbsp;&nbsp;  下载次数: 0</div>
<img class="absmiddle" border="0" src="http://linux.chinaunix.net/bbs/images/attachicons/zip.gif"> <a class="bold" target="_blank" href="http://linux.chinaunix.net/bbs/attachment.php?aid=237312">oash.send.sms.tar.gz</a> <span class="smalltxt">(11.92 KB)</span></div>
</div>
</span> <a href="http://hi.baidu.com/xiutuo/blog/item/baa4052cc0416ee68b139945.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/xiutuo/blog/category/linux%2Dlamp">linux-lamp</a>&nbsp;<a href="http://hi.baidu.com/xiutuo/blog/item/baa4052cc0416ee68b139945.html#comment">查看评论</a>]]></description>
        <pubDate>2009-11-23  16:50</pubDate>
        <category><![CDATA[linux-lamp]]></category>
        <author><![CDATA[秀脱]]></author>
		<guid>http://hi.baidu.com/xiutuo/blog/item/baa4052cc0416ee68b139945.html</guid>
</item>

<item>
        <title><![CDATA[秀脱实战笔记之mysql5实战篇]]></title>
        <link><![CDATA[http://hi.baidu.com/xiutuo/blog/item/e5430b829e9c63a80cf4d2c9.html]]></link>
        <description><![CDATA[
		
		<p>+++++++++++++++++++++++++++++++++++++++++++<br>
秀脱实战笔记之mysql实战篇：</p>
<p><span><font color="#000000">&nbsp;&nbsp;  QQ:&nbsp;&nbsp;&nbsp;  <span><a target="_blank" href="http://sighttp.qq.com/cgi-bin/check?sigkey=d785b0952d6eb4e00ab101f4c4f5dbfcba571350e7a2ffa09141e5031776818e"><img class="blogimg" border="0" small="0" src="http://wpa.qq.com/pa?p=1:6541657:6"></a></span></font></span><span><font color="#000000"><br>
EMAIL: <a target="_blank" href="mailto:xiutuo@gmail.com">xiutuo@gmail.com</a></font></span></p>
<p>秀脱blog：<a href="http://hi.baidu.com/xiutuo/">http://hi.baidu.com/xiutuo/</a><br>
++++++++++++++++++++++++++++++++++++++++++<br>
一：mysql安装<br>
1.编译安装<br>
安装位置/var/mysql5<br>
指定tcp监听端口<br>
指定socket路径</p>
<p># cd /home/xiutuo/software<br>
# tar -zxvf mysql-5.0.27.tar.gz<br>
# cd mysql-5.0.27<br>
# mkdir -p /var/mysql5/etc/<br>
# useradd mysql -s /sbin/nologin<br>
# ./configure --prefix=/var/mysql5 <br>
--with-unix-socket-path=/var/mysql5/etc/mysql.sock \<br>
--with-tcp-port=3308 \<br>
--without-isam --without-debug --enable-assembler \<br>
--sysconfdir=/var/mysql5/etc \<br>
--with-mysqld-user=mysql \<br>
--with-extra-charsets=all \<br>
--with-client-ldflags=-all-static \<br>
--with-mysqld-ldflags=-all-static \<br>
--without-innodb \<br>
--with-pthread \<br>
--enable-thread-safe-client \<br>
--with-big-tables \<br>
如果需要更详细的编译参数，请./configure --h<br>
# make<br>
# make install<br>
初始化数据库<br>
# /var/mysql5/bin/mysql_install_db --user=mysql<br>
# chown -R mysql:mysql /var/mysql5<br>
编译之后，以下俩个脚本中的一些变量都会适合当前编译安装路径，直接拷贝到指定目录即可<br>
# cp /var/mysql5/support-files/my-medium.cnf /var/mysql5/etc/my.cnf<br>
# cp /var/mysql5/support-files/mysql.server /etc/init.d/mysql<br>
配置mysql开机启动<br>
# cd /etc/init.d/<br>
# chmod 711 mysql<br>
# chkconfig -add mysql <br>
# chkconfig --level 2345 mysql on<br>
# service mysql start | restart | stop</p>
<p>------------------------------------------------<br>
编译好的二进制mysql安装<br>
# cd /home/xiutuo/software/ <br>
# tar -zvxf mysql-max-5.0.28-pc-linux-gnu-i686.tar.gz<br>
# mkdir -p /usr/local/mysql （省略也可）<br>
# cp -r mysql-max-5.0.28-pc-linux-gnu-i686 /usr/local/mysql<br>
# cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf</p>
<p>添加mysql用户及用户组<br>
# groupadd mysql<br>
# useradd -g mysql mysql<br>
修改mysql目录权限<br>
# cd /usr/local/<br>
# chown -R mysql:mysql mysql<br>
# cd /usr/local/mysql<br>
一定要在该路径下，否则不能生成数据库文件并出错！<br>
用户属主和属组的改变非常重要，否则出错，请严格按照此步骤<br>
#<br>
生成mysql系统数据库<br>
# scripts/mysql_install_db --user=mysql<br>
# chown -R mysql:mysql data<br>
拷贝一个适合的配置文件<br>
# cp /var/mysql5/support-files/my-medium.cnf /var/mysql5/etc/my.cnf<br>
拷贝一个mysql开机脚本<br>
# cp /var/mysql5/support-files/mysql.server /etc/init.d/mysql<br>
配置mysql开机启动<br>
# cd /etc/init.d/<br>
# chmod 711 mysql<br>
# chkconfig -add mysql <br>
# chkconfig --level 2345 mysql on<br>
# service mysql start | restart | stop<br>
------------------------------------------------</p>
<p>2.启动停止数据库</p>
<p>a.启动(一行为一种方式)<br>
# service mysql start <br>
# /etc/init.d/mysql start<br>
# mysql安装目录/bin/mysqld_safe --user=mysql &amp;</p>
<p>b.停止(一行为一种方式)<br>
# service mysql stop<br>
# /etc/init.d/mysql stop<br>
# mysql安装目录/bin/mysql_admin -h localhost -uroot -p'root密码' shutdown</p>
<p><br>
二：修改数据库用户密码，赋权</p>
<p>1.通过mysqladmin修改<br>
交互式方式：<br>
# mysql安装目录/bin/mysqladmin -u用户名 -p password 你要的新密码<br>
如：<br>
# /var/mysql5/bin/mysqladmin -uroot -p password &quot;123456&quot;<br>
Enter password: mysql用户的旧密码(新装数据库root密码为空，直接回车即可)</p>
<p>非交互式：<br>
# mysql安装目录/bin/mysqladmin -u用户名 -p'旧密码' password 你要的新密码<br>
如：<br>
# /var/mysql5/bin/mysqladmin -uroot -p'' password '123456'<br>
(新装数据库root密码为空)</p>
<p>以上方式修改就直接生效</p>
<p>2.通过mysql命令行方式</p>
<p>a.通过修改（插入）数据库mysql中user表记录达到目的<br>
# /var/mysql5/bin/mysql -h localhost -uroot -p<br>
Enter password:不输入任何东西(新装数据库root密码为空，直接回车即可)<br>
mysql&gt; use mysql<br>
mysql&gt; update user set password=password('新密码') where USER='用户名' and HOST='主机名';<br>
根据你的需要修改sql语句的where条件，host 可以为%(任意主机),ip地址,localhost<br>
mysql&gt; flush privileges;</p>
<p>b.通过grant赋权命令<br>
# /var/mysql5/bin/mysql -h localhost -uroot -p<br>
Enter password:不输入任何东西(新装数据库root密码为空，直接回车即可)<br>
mysql&gt;grant 权限1,权限2,…权限n on 库.表 to 用户@主机名 identified by '用户密码';<br>
如：<br>
mysql&gt; grant all on *.* to <a href="mailto:root@ % ">root@'%'</a> identified by '123456'<br>
mysql&gt; grant all on *.* to <a href="mailto:root@localhost">root@localhost</a> identified by '123456'</p>
<p>--------------------------------------<br>
权限1,权限2,…权限n代表：<br>
select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。<br>
当权限1,权限2,…权限n被all privileges或者all代替，表示赋予用户全部权限。<br>
当数据库名称.表名称被*.*代替，表示赋予用户操作服务器上所有数据库所有表的权限。<br>
用户地址可以是localhost，也可以是ip地址、机器名字、域名。也可以用&rsquo;%'表示从任何地址连接。<br>
&lsquo;连接口令&rsquo;不能为空，否则创建失败。<br>
-------------------------------------<br>
mysql&gt;flush privileges;<br>
或<br>
mysqladmin -h localhost -uroot -ppassword reload<br>
刷新系统权限表,这个不能少，否则不生效。</p>
<p> </p>
<p>三：设置数据库编码（字符集）</p>
<p>1.设置整个数据库编码</p>
<p>a.启动mysql的时候，mysqld_safe命令行加入 <br>
--default-character-set=gbk <br>
gbk为字符集编码</p>
<p>b.修改my.cnf，在 [mysqld] 中加入<br>
default-character-set=gbk<br>
gbk为字符集编码</p>
<p>2.改变某个库的编码格式：在mysql提示符后输入命令 <br>
# mysql安装目录/bin/mysql -hlocalhost -uroot -p<br>
mysql&gt;alter database 数据库名 default character set gbk; <br>
gbk为字符集编码<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&gt;show variables like 'character_set%'<br>
+--------------------------+--------+<br>
| Variable_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Value |<br>
+--------------------------+--------+<br>
| character_set_client&nbsp;&nbsp;&nbsp;&nbsp;  | latin1 |<br>
| character_set_connection | latin1 |<br>
| character_set_database&nbsp;&nbsp;  | latin1 |<br>
| character_set_filesystem | binary |<br>
| character_set_results&nbsp;&nbsp;&nbsp;  | latin1 |<br>
| character_set_server&nbsp;&nbsp;&nbsp;&nbsp;  | latin1 |<br>
| character_set_system&nbsp;&nbsp;&nbsp;&nbsp;  | utf8&nbsp;&nbsp;  |<br>
………………………………………………<br>
+--------------------------+--------+<br>
设置字符集相关变量<br>
mysql&gt;SET character_set_client = gbk;<br>
mysql&gt;SET character_set_connection = gbk;<br>
mysql&gt;SET character_set_results = gbk;<br>
……</p>
<p>3.常用管理命令<br>
mysql&gt;shell下<br>
show databases;&nbsp;&nbsp;&nbsp;&nbsp;  显示所有数据库<br>
show tables;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  显示所有表<br>
show variables;&nbsp;&nbsp;&nbsp;&nbsp;  显示变量<br>
use databasename;&nbsp;&nbsp;  切换数据库<br>
desc tablename;&nbsp;&nbsp;&nbsp;&nbsp;  查看表结构<br>
show table status; 查看表状态<br>
show status;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  查看系统状态<br>
mysqladmin -h localhost -uroot -ppassword processlist 查看mysql进程列表</p>
<p> </p>
<p>学会使用tcpdump和strings工具。在大多数情况下，你可以使用下面的命令检查是否MySQL数据流未加密：<br>
shell&gt; tcpdump -l -i eth0 -w - src or dst port 3306 | strings</p>
<p><br>
四：数据库备份还原<br>
1.免费工具<br>
a.直接拷贝数据文件，需要停止数据库,不适应生成系统。<br>
b.对mysqlisam存储方式的,可以使用hotcopy，mysqldump<br>
c.对innodb存储方式的，使用mysqldump<br>
d.对同时使用innodb和mysqlisam的mysqldump<br>
e.主从复制</p>
<p>2.商业软件<br>
IBBackup</p>
<p>3.各种方式的利弊</p>
<p>a.直接拷贝数据文件.<br>
<br>
直接拷贝数据文件最为直接、快速、方便，但缺点是基本上不能实现增量备份。<br>
为了保证数据的一致性，需要在备份文件前，执行以下 SQL 语句：<br>
mysql&gt;FLUSH TABLES WITH READ LOCK; (或者停止数据库,不适应生产系统。)<br>
也就是把内存中的数据都刷新到磁盘中，同时锁定数据表，<br>
以保证拷贝过程中不会有新的数据写入。这种方法备份出来的数据恢复也很简单，<br>
直接拷贝回原来的数据库目录下即可。<br>
如：<br>
备份：<br>
# mysql安装目录/bin/mysql -h localhost -u用户 -p密码<br>
mysql&gt;FLUSH TABLES WITH READ LOCK;<br>
运行系统命令<br>
# cp -r mysql数据库的data目录 备份文件存放路径<br>
或者<br>
# tar -cvzf 备份文件名.tar.gz mysql数据库的data目录</p>
<p>还原：<br>
直接把文件覆盖到相应数据库data目录即可</p>
<p> </p>
<p>b.hotcopy<br>
MySQLHotCopy是一个perl脚本，执行时候锁定数据库表，然后使用系统命令cp或者scp做的一种备份。<br>
等备份完成的时候，才释放表锁定，并刷新日志，他是一种非常快捷的方式，<br>
但是数据备份只能在通一台机器上，只适合mysqlisam存储方式</p>
<p>备份：<br>
命令 <br>
# mysql安装目录/bin/mysqlhotcopy --user=用户 --password=密码 -q &quot;数据库名&quot; 备份文件存放目录</p>
<p>还原：<br>
直接把文件覆盖到相应数据库data目录即可</p>
<p>c.mysqldump<br>
适合mysqlisam和innodb存储方式，常用于数据备份，迁移。</p>
<p>备份mysqlisam存储方式的：</p>
<p>其中host为主机名（ip,localhost），user为备份用户，pass为备份用户的密码</p>
<p>dump参考选项</p>
<p>--opt --default-character-set=utf8 \<br>
--triggers -R --hex-blob --all-databases \<br>
--flush-logs --delete-master-logs \<br>
-x</p>
<p># cd mysql安装目录</p>
<p># mysqldump -h host -u user -p pass --opt 数据库名 &gt; 数据库备份名.sql<br>
将数据库&ldquo;数据库名&rdquo;中的所有表备份到&ldquo;数据库备份名.sql&rdquo;文件，<br>
&ldquo;数据库备份名.sql&rdquo;是一个文本文件，文件名任取。</p>
<p># mysqldump -h host -u user -p pass --opt 数据库名 表1 表2 表3……表n &gt; 数据库备份名.sql<br>
将数据库&ldquo;数据库名&rdquo;中的表1 表2 表3……表n 备份到&ldquo;数据库备份名.sql&rdquo;文件， <br>
&ldquo;数据库备份名.sql&rdquo;是一个文本文件，文件名任取。</p>
<p># mysqldump -h host -u user -p pass --opt --databases 数据库1 数据库1 &gt; 数据库备份名.sql<br>
将数据库&ldquo;数据库1&rdquo;和&ldquo;数据库2&rdquo;备份到&ldquo;数据库备份名.sql&rdquo;文件， <br>
&ldquo;数据库备份名.sql&rdquo;是一个文本文件，文件名任取。</p>
<p># mysqldump -hhostname -uusername -ppassword --opt -no-data --databases databasename1 databasename2 databasename3 &gt; multibackupfile.sql<br>
仅仅备份数据库结构</p>
<p># mysqldump -h host -u user -p pass --opt --all-databases &gt; all-databases.sql<br>
将所有数据库备份到all-databases.sql文件，all-databases.sql是一个文本文件，文件名任取。）</p>
<p>还原：</p>
<p># mysql -hhostname -uusername -ppassword databasename &lt; backupfile.sql<br>
# mysql --default-character-set=utf8 -u xxx [database] &lt; xxx.sql<br>
还原MySQL数据库</p>
<p># gunzip &lt; backupfile.sql.gz | mysql -uusername -ppassword databasename<br>
# gunzip &lt; backupfile.sql.gz | mysql --default-character-set=utf8 -u xxx [database] <br>
还原压缩的MySQL数据库</p>
<p><br>
# mysqldump -uusername -ppassword databasename | mysql &ndash;host=*.*.*.* -C databasename<br>
将数据库转移到新服务器</p>
<p>备份有innodb存储方式的<br>
dump参考选项：<br>
--opt --default-character-set=utf8 \<br>
--triggers -R --hex-blob --all-databases \<br>
--flush-logs \<br>
--single-transaction \<br>
--delete-master-logs \<br>
-x</p>
<p><br>
当增量备份时，通过bin-log恢复<br>
# mysqlbinlog gbichot2-bin.000007 gbichot2-bin.000008 | mysql</p>
<p>d.主从复制<br>
请参考主从复制文档</p>
<p><br>
五：数据库优化</p>
<p>六：出错处理</p>
<p>1. mysqldump -h localhost -uroot -ppwd --opt -databases database1 database2 database3 时出错如下</p>
<p>mysqldump: Got error: 145: Table 'TD_OA.USER' is marked as crashed and should be repaired when using LOCK TABLES</p>
<p>刚才上来发现进入'TD_OA.USER' 出错，提示：<br>
'TD_OA.USER' Database System Tips: MySQL Query Error</p>
<p>Time: 2007-7-20 3:47pm<br>
Script:</p>
<p>SQL: SELECT COUNT(*) FROM 'TD_OA.USER'</p>
<p>Error: Table 'TD_OA.USER' is marked as crashed and should be repaired<br>
Errno.: 145</p>
<p><br>
尝试mysqldump备份数据库提示：<br>
mysqldump: Got error: 145: Table 'TD_OA.USER' is marked as crashed and should be repaired when using LOCK TABLES</p>
<p><br>
最后找到MySQL对应表的MYI数据文件，执行myisamchk -c -r USER.MYI<br>
- recovering (with sort) MyISAM-table 'USER.MYI'<br>
Data records: 359<br>
- Fixing index 1<br>
- Fixing index 2<br>
- Fixing index 3<br>
- Fixing index 4</p>
<p>再次进入发现数据恢复。</p>
<p> </p> <a href="http://hi.baidu.com/xiutuo/blog/item/e5430b829e9c63a80cf4d2c9.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/xiutuo/blog/category/linux%2Dmysql">linux-mysql</a>&nbsp;<a href="http://hi.baidu.com/xiutuo/blog/item/e5430b829e9c63a80cf4d2c9.html#comment">查看评论</a>]]></description>
        <pubDate>2009-11-16  11:29</pubDate>
        <category><![CDATA[linux-mysql]]></category>
        <author><![CDATA[秀脱]]></author>
		<guid>http://hi.baidu.com/xiutuo/blog/item/e5430b829e9c63a80cf4d2c9.html</guid>
</item>

<item>
        <title><![CDATA[2009-秀脱实战笔记之postfix最新病毒过滤和反垃圾实战篇]]></title>
        <link><![CDATA[http://hi.baidu.com/xiutuo/blog/item/0ad08b336fb66249ad4b5fc1.html]]></link>
        <description><![CDATA[
		
		<p><span><font color="#000000">+++++++++++++++++++++++++++++++++++++++++++<br>
秀脱实战笔记之postfix病毒过滤和反垃圾实战篇：</font></span></p>
<p><span><font color="#000000">&nbsp;&nbsp;  QQ:<span><a target="_blank" href="http://sighttp.qq.com/cgi-bin/check?sigkey=d785b0952d6eb4e00ab101f4c4f5dbfcba571350e7a2ffa09141e5031776818e"><img class="blogimg" border="0" small="0" src="http://wpa.qq.com/pa?p=1:6541657:6"></a></span><br>
EMAIL:<a target="_blank" href="mail to:xiutuo@gmail.com">xiutuo@gmail.com</a></font></span></p>
<p><span><font color="#000000">秀脱blog：http://hi.baidu.com/xiutuo/<br>
-----------------------------</font></span></p>
<p><span><font color="#000000">centos5.1<br>
postfix-2.6.5<br>
dovecot-1.2.6<br>
clamav-0.95.3<br>
amavisd-new-2.6.4<br>
spamassassin 已perl模块的方式安装<br>
----------<br>
zlib系统自带<br>
zlib-1.2.3-3<br>
zlib-devel-1.2.3-3<br>
----------<br>
bind<br>
bind-libs-9.3.3-10.el5<br>
bind-utils-9.3.3-10.el5<br>
ypbind-1.19-8.el5<br>
bind-9.3.3-10.el5<br>
system-config-bind-4.0.3-2.el5.centos</font></span></p>
<p><span><font color="#000000">功能描述：<br>
1.病毒过滤<br>
2.反垃圾<br>
3.虚拟用户，虚拟用户映射的真是系统用户为postfix<br>
4.dovecot-sasl验证，只有是邮件系统的用户才能发送邮件<br>
（即禁止伪造本地帐号给本地其他用户-包括自己发邮件）<br>
（即禁止了telnet到25通过mail from,rcpt to,data,.,来发送邮件）<br>
5.web-mail<br>
6.增加用户情况：<br>
  dovecot软件使用dovecot用户<br>
  amavisd-new和clamav软件共用clamav用户<br>
  postfix邮件软件mailq用户（含邮件队列）</font></span></p>
<p><span><font color="#000000">++++++++++++++++++++++++++++++++++++++++++</font></span></p>
<span>
<p><br>
<font color="#000000">软件安装部分</font></p>
<p><font color="#000000">一：mysql5.0.82安装<br>
# useradd -M -s /sbin/login mysql</font></p>
<p><font color="#000000"># cd /home/xiutuo/software<br>
# tar -zxvf mysql-5.0.82.tar.gz<br>
# cd mysql-5.0.82<br>
# mkdir -p /var/mysql5/etc/<br>
# useradd mysql -s /sbin/nologin<br>
# ./configure --prefix=/usr/local/mysql <br>
--with-unix-socket-path=/tmp/mysql.sock \<br>
--with-tcp-port=3306 \<br>
--without-isam --without-debug --enable-assembler \<br>
--sysconfdir=/etc \<br>
--with-mysqld-user=mysql \<br>
--with-extra-charsets=all \<br>
--with-client-ldflags=-all-static \<br>
--with-mysqld-ldflags=-all-static \<br>
--without-innodb \<br>
--with-pthread \<br>
--enable-thread-safe-client \<br>
--with-big-tables \<br>
如果需要更详细的编译参数，请./configure --h<br>
# make<br>
# make install<br>
---------------------<br>
编译好的二进制mysql安装<br>
# cd /home/xiutuo/software/ <br>
# tar -zvxf mysql-5.0.82.tar.gz<br>
# mkdir -p /usr/local/mysql （省略也可）<br>
# cp -r mysql-5.0.82 /usr/local/mysql<br>
# cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf</font></p>
<p><font color="#000000">添加mysql用户及用户组<br>
# groupadd mysql<br>
# useradd -g mysql mysql<br>
修改mysql目录权限<br>
# cd /usr/local/<br>
# chown -R mysql:mysql mysql<br>
# cd /usr/local/mysql<br>
一定要在该路径下，否则不能生成数据库文件并出错！<br>
用户属主和属组的改变非常重要，否则出错，请严格按照此步骤<br>
#<br>
生成mysql系统数据库<br>
# scripts/mysql_install_db --user=mysql<br>
# chown -R mysql:mysql data<br>
拷贝一个适合的配置文件<br>
# cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf<br>
拷贝一个mysql开机脚本<br>
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql<br>
配置mysql开机启动<br>
# cd /etc/init.d/<br>
# chmod 711 mysql<br>
# chkconfig -add mysql <br>
# chkconfig --level 2345 mysql on<br>
# service mysql start | restart | stop<br>
---------------------</font></p>
<p><br>
<font color="#000000">二：clamd安装<br>
# useradd -M -s /sbin/login clamav<br>
# cd /home/xiutuo/software/ <br>
# tar -zxvf clamav-0.95.3.tar.gz<br>
# ./configure --sysconfdir=/etc --with-zlib --with-user=clamav --with-group=clamav  <br>
# make<br>
# make install</font></p>
<p><font color="#000000"># freshclam -d</font></p>
<p><font color="#000000">The other way is to use the cron daemon. You have to add the following line to the crontab of root or clamav user: <br>
N * * * * /usr/local/bin/freshclam --quiet</font></p>
<p> </p>
<p><font color="#000000">三：amavisd-new安装<br>
1.安装相应perl模块<br>
# perl -MCPAN -e shell<br>
cpan&gt; install PERL_MOD_NAME<br>
--------------------<br>
perl模块源码安装方法<br>
# tar -zxvf perl模块.tar.gz<br>
# cd perl模块目录<br>
# perl Makefile.PL<br>
# make<br>
# make install<br>
-------------------<br>
2.安装amavisd-new<br>
这里我们使用clamav用户来启动amavis，就不单独建立用户了。<br>
# mkdir /var/amavis<br>
# cd /var/amavis<br>
在/var/amavis目录下建立tmp var db home四个目录<br>
# mkdir tmp var db home<br>
# chown -R clamav:clamav /var/amavis<br>
# chmod -R 750 /var/amavis<br>
# cd /home/xiutuo/software<br>
# tar -zxvf amavisd-new.tar.gz<br>
# cd amavisd-new-2.6.4<br>
# 安装amavisd程序，并设置权限<br>
# cp amavisd /usr/local/sbin/<br>
# chown root /usr/local/sbin/amavisd<br>
# chmod 755  /usr/local/sbin/amavisd<br>
# 安装配置文件，并设置权限<br>
# cp amavisd.conf /etc/<br>
# chown root:clamav /etc/amavisd.conf<br>
# chmod 640 /etc/amavisd.conf<br>
建立病毒邮件隔离存放目录，请确保所在文件的属主为非特权用户！<br>
必要定时对该目录清空。<br>
# mkdir /var/virusmails<br>
# chown clamav:clamav /var/virusmails<br>
# chmod 750 /var/virusmails</font></p>
<p><font color="#000000">四：dovecot安装<br>
# useradd -M -s /sbin/login dovecot<br>
# cd /home/xiutuo/software/ <br>
# tar -zxvf  dovecot-1.2.6.tar.gz<br>
# ./configure  --sysconfdir=/etc --with-mysql<br>
# make<br>
# make install</font></p>
<p><br>
<font color="#000000">五：postfix<br>
# 用于邮件队列<br>
# useradd -M -s /sbin/login mailq<br>
# 用于虚拟用户<br>
# groupadd -g 1003<br>
# useradd -g 1003 -M -s /sbin/login postfix <br>
# cd /home/xiutuo/software/ <br>
# tar -zxvf postfix-2.6.5.tar.gz<br>
# make -f Makefile.init makefiles \<br>
'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include \<br>
-DUSE_SASL_AUTH -DDEF_SERVER_SASL_TYPE=\&quot;dovecot\&quot; ' \<br>
'AUXLIBS=-L/usr/local/mysql/lib -lmysqlclient -lz -lm'<br>
# make install</font></p>
<p><font color="#000000">软件配置<br>
一：配置文件列表<br>
/etc/my.cnf  --这里不讨论<br>
/etc/dovecot.conf  --有修改<br>
/etc/dovecot-sql.conf --手动增加<br>
/etc/clamd.conf --有修改<br>
/etc/amavisd.conf --有修改<br>
------------<br>
/etc/postfix目录下的postfix配置文件<br>
access  --系统默认<br>
aliases --系统默认<br>
bounce.cf.default --系统默认<br>
canonical --系统默认<br>
filter_recipient_domains --手动增加<br>
filter_recipient_domains.db 由postmap /etc/postfix/filter_recipient_domains生成<br>
generic --系统默认<br>
header_checks --系统默认<br>
LICENSE --系统默认<br>
main.cf  --有修改<br>
main.cf.default --系统默认<br>
makedefs.out --系统默认<br>
master.cf  --有修改<br>
mynetworks --手动增加<br>
mynetworks.deny --手动增加<br>
mysql_virtual_alias_maps.cf --手动增加<br>
mysql_virtual_domains_maps.cf --手动增加<br>
mysql_virtual_mailbox_maps.cf --手动增加<br>
relocated --系统默认<br>
reserved_ip.deny  --手动增加<br>
TLS_LICENSE  --系统默认<br>
transport --系统默认<br>
virtual  --系统默认</font></p>
<p><font color="#000000">测试：<br>
一：Testing amavisd's host and port<br>
# telnet localhost 10024<br>
Trying 127.0.0.1...<br>
Connected to localhost.localdomain (127.0.0.1).<br>
Escape character is '^]'.<br>
220 [127.0.0.1] ESMTP amavisd-new service ready<br>
ehlo localhost<br>
250-[127.0.0.1]<br>
250-VRFY<br>
250-PIPELINING<br>
250-SIZE<br>
250-ENHANCEDSTATUSCODES<br>
250-8BITMIME<br>
250-DSN<br>
250 XFORWARD NAME ADDR PORT PROTO HELO SOURCE<br>
quit<br>
221 2.0.0 [127.0.0.1] amavisd-new closing transmission channel<br>
Connection closed by foreign host.</font></p>
<p><font color="#000000"># telnet 127.0.0.1 10024<br>
Trying 127.0.0.1...<br>
Connected to localhost.localdomain (127.0.0.1).<br>
Escape character is '^]'.<br>
220 [127.0.0.1] ESMTP amavisd-new service ready<br>
ehlo localhost<br>
250-[127.0.0.1]<br>
250-VRFY<br>
250-PIPELINING<br>
250-SIZE<br>
250-ENHANCEDSTATUSCODES<br>
250-8BITMIME<br>
250-DSN<br>
250 XFORWARD NAME ADDR PORT PROTO HELO SOURCE<br>
quit<br>
221 2.0.0 [127.0.0.1] amavisd-new closing transmission channel<br>
Connection closed by foreign host.</font></p>
<p> </p>
<p><font color="#000000">二：Testing the dedicated Postfix smtpd-daemon</font></p>
<p><font color="#000000"># telnet 127.0.0.1 10025<br>
Trying 127.0.0.1...<br>
Connected to localhost.localdomain (127.0.0.1).<br>
Escape character is '^]'.<br>
220 mail.xiutuo.com ESMTP Postfix<br>
ehlo localhost<br>
250-mail.xiutuo.com<br>
250-PIPELINING<br>
250-SIZE 10240000<br>
250-ETRN<br>
250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5<br>
250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5<br>
250-ENHANCEDSTATUSCODES<br>
250-8BITMIME<br>
250 DSN<br>
quit<br>
221 2.0.0 Bye<br>
Connection closed by foreign host.</font></p>
<p><font color="#000000"># telnet localhost 10025<br>
Trying 127.0.0.1...<br>
Connected to localhost.localdomain (127.0.0.1).<br>
Escape character is '^]'.<br>
220 mail.xiutuo.com ESMTP Postfix<br>
ehlo localhost<br>
250-mail.xiutuo.com<br>
250-PIPELINING<br>
250-SIZE 10240000<br>
250-ETRN<br>
250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5<br>
250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5<br>
250-ENHANCEDSTATUSCODES<br>
250-8BITMIME<br>
250 DSN<br>
quit<br>
221 2.0.0 Bye<br>
Connection closed by foreign host.</font></p>
<p><font color="#000000">三：Testing the new transport chain<br>
# telnet localhost 10024<br>
Trying 127.0.0.1...<br>
Connected to localhost.localdomain (127.0.0.1).<br>
Escape character is '^]'.<br>
220 [127.0.0.1] ESMTP amavisd-new service ready<br>
ehlo localhost<br>
250-[127.0.0.1]<br>
250-VRFY<br>
250-PIPELINING<br>
250-SIZE<br>
250-ENHANCEDSTATUSCODES<br>
250-8BITMIME<br>
250-DSN<br>
250 XFORWARD NAME ADDR PORT PROTO HELO SOURCE<br>
mail from: &lt;&gt;<br>
250 2.1.0 Sender &lt;&gt; OK<br>
rcpt to: &lt;postmaster&gt;<br>
250 2.1.5 Recipient &lt;postmaster&gt; OK<br>
data<br>
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;<br>
From: virus-tester<br>
To: undisclosed-recipients:;<br>
Subject: amavisd test - simple - no spam test pattern</font></p>
<p><font color="#000000">This is a simple test message from the amavisd-new test-messages.<br>
.<br>
250 2.0.0 Ok, id=02453-02, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 35D86134E20&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  35D86134E20<br>
quit<br>
221 2.0.0 [127.0.0.1] amavisd-new closing transmission channel<br>
Connection closed by foreign host.</font></p>
<p><font color="#000000">日志看起来类似，含 BAD-HEADER 字样，就应该是正确的</font></p>
<p><font color="#000000">Nov 11 07:51:48 mail postfix/smtpd[2913]: connect from localhost.localdomain[127.0.0.1]<br>
Nov 11 07:51:48 mail postfix/smtpd[2913]: 3B54A134E22: client=localhost.localdomain[127.0.0.1]<br>
Nov 11 07:51:48 mail postfix/cleanup[2917]: 3B54A134E22: message-id=&lt;&gt;<br>
Nov 11 07:51:48 mail amavis[2453]: (02453-04) Passed BAD-HEADER, &lt;&gt; -&gt; &lt;postmaster&gt;, mail_id: P7DCbVXhtkcH, Hits: 1.582, size: 124, queued_as: 3B54A134E22, 14986 ms<br>
Nov 11 07:51:48 mail postfix/smtpd[2913]: disconnect from localhost.localdomain[127.0.0.1]<br>
Nov 11 07:51:48 mail postfix/qmgr[2919]: 3B54A134E22: from=&lt;&gt;, size=614, nrcpt=1 (queue active)<br>
Nov 11 07:51:48 mail postfix/local[2920]: 3B54A134E22: to=&lt;postmaster@mail.xiutuo.com&gt;, orig_to=&lt;postmaster&gt;, relay=local, delay=0.36, delays=0.29/0.06/0/0.02, dsn=2.0.0, status=sent (discarded)<br>
Nov 11 07:51:48 mail postfix/qmgr[2919]: 3B54A134E22: removed</font></p>
<p> </p>
<p><font color="#000000">五：测试病毒库过滤情况<br>
进入amavisd-new源码目录test-messages，解压病毒测试库<br>
# cd /home/xiutuo/software/amavisd-new-2.6.4/test-messages<br>
# perl -pe 's/./chr(ord($&amp;)^255)/sge' &lt;sample.tar.gz.compl | zcat | tar xvf -<br>
解压后可以看到以下文件<br>
# ll<br>
sample-42-mail-bomb.txt<br>
sample-badh.txt<br>
sample-executable.txt<br>
sample-nonspam.txt<br>
sample-spam-GTUBE-junk.txt<br>
sample-spam-GTUBE-nojunk.txt<br>
sample-spam.txt<br>
sample-virus-executable.txt<br>
sample-virus-nested.txt<br>
sample-virus-simple.txt<br>
开始测试<br>
1.<br>
# sendmail -i test@xiutuo.com &lt;sample-virus-simple.txt<br>
2.<br>
# sendmail -i test@xiutuo.com &lt;sample-virus-nested.txt<br>
3.<br>
# sendmail -i test@xiutuo.com &lt;sample-nonspam.txt<br>
4.<br>
# sendmail -i test@xiutuo.com &lt;sample-spam-GTUBE-junk.txt<br>
5.<br>
# sendmail -i test@xiutuo.com &lt;sample-spam-GTUBE-nojunk.txt<br>
6.<br>
# sendmail -i test@xiutuo.com &lt;sample-spam.txt&nbsp;&nbsp;  # old sample<br>
7.<br>
# sendmail -i test@xiutuo.com &lt;sample-42-mail-bomb.txt<br>
8.<br>
# sendmail -i test@xiutuo.com &lt;sample-badh.txt</font></p>
<p><font color="#000000">测试步骤1的结果看来类似：含Blocked INFECTED 字样<br>
同时邮件系统管理员xt@xiutuo.com收到标题VIRUS (Eicar-Test-Signature) in mail FROM &lt;root@mail.xiutuo.com&gt;的邮件</font></p>
<p><font color="#000000">Nov 11 08:05:38 mail postfix/pickup[2909]: F151D134E30: uid=0 from=&lt;root&gt;<br>
Nov 11 08:05:39 mail postfix/cleanup[2935]: F151D134E30: message-id=&lt;20091111000538.F151D134E30@mail.xiutuo.com&gt;<br>
Nov 11 08:05:39 mail postfix/qmgr[2919]: F151D134E30: from=&lt;root@mail.xiutuo.com&gt;, size=410, nrcpt=1 (queue active)<br>
Nov 11 08:05:39 mail postfix/smtpd[2941]: connect from localhost.localdomain[127.0.0.1]<br>
Nov 11 08:05:39 mail postfix/smtpd[2941]: 8A696134E35: client=localhost.localdomain[127.0.0.1]<br>
Nov 11 08:05:39 mail postfix/cleanup[2935]: 8A696134E35: message-id=&lt;VA6P07oldTc-al@mail.xiutuo.com&gt;<br>
Nov 11 08:05:39 mail postfix/qmgr[2919]: 8A696134E35: from=&lt;xt@xiutuo.com&gt;, size=2061, nrcpt=1 (queue active)<br>
Nov 11 08:05:39 mail postfix/smtpd[2941]: disconnect from localhost.localdomain[127.0.0.1]<br>
Nov 11 08:05:39 mail amavis[2454]: (02454-05) Blocked INFECTED (Eicar-Test-Signature), &lt;root@mail.xiutuo.com&gt; -&gt; &lt;test@xiutuo.com&gt;, quarantine: virus-6P07oldTc-al, Message-ID: &lt;20091111000538.F151D134E30@mail.xiutuo.com&gt;, mail_id: 6P07oldTc-al, Hits: -, size: 410, 610 ms<br>
Nov 11 08:05:39 mail postfix/smtp[2938]: F151D134E30: to=&lt;test@xiutuo.com&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=0.74, delays=0.09/0/0.03/0.61, dsn=2.7.0, status=sent (250 2.7.0 Ok, discarded, id=02454-05 - INFECTED: Eicar-Test-Signature)<br>
Nov 11 08:05:39 mail postfix/qmgr[2919]: F151D134E30: removed<br>
Nov 11 08:05:39 mail postfix/pipe[2944]: 8A696134E35: to=&lt;xt@xiutuo.com&gt;, relay=dovecot, delay=0.21, delays=0.05/0/0/0.16, dsn=2.0.0, status=sent (delivered via dovecot service)<br>
Nov 11 08:05:39 mail postfix/qmgr[2919]: 8A696134E35: removed</font></p>
<p><font color="#000000">测试步骤2的结果看来类似，并收到标题如下的邮件<br>
amavisd test - nested - virus scanner test pattern</font></p>
<p><font color="#000000">Nov 11 08:11:19 mail postfix/smtpd[3051]: connect from localhost.localdomain[127.0.0.1]<br>
Nov 11 08:11:19 mail postfix/smtpd[3051]: 6722A134E37: client=localhost.localdomain[127.0.0.1]<br>
Nov 11 08:11:19 mail postfix/cleanup[3045]: 6722A134E37: message-id=&lt;VAJWl1unvNGQX3@mail.xiutuo.com&gt;<br>
Nov 11 08:11:19 mail postfix/qmgr[2919]: 6722A134E37: from=&lt;xt@xiutuo.com&gt;, size=2061, nrcpt=1 (queue active)<br>
Nov 11 08:11:19 mail postfix/smtpd[3051]: disconnect from localhost.localdomain[127.0.0.1]<br>
Nov 11 08:11:19 mail amavis[2453]: (02453-07) Blocked INFECTED (Eicar-Test-Signature), &lt;root@mail.xiutuo.com&gt; -&gt; &lt;test@xiutuo.com&gt;, quarantine: virus-JWl1unvNGQX3, Message-ID: &lt;20091111001118.B293A134E35@mail.xiutuo.com&gt;, mail_id: JWl1unvNGQX3, Hits: -, size: 410, 740 ms<br>
Nov 11 08:11:19 mail postfix/smtp[3048]: B293A134E35: to=&lt;test@xiutuo.com&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=0.88, delays=0.1/0.01/0.04/0.74, dsn=2.7.0, status=sent (250 2.7.0 Ok, discarded, id=02453-07 - INFECTED: Eicar-Test-Signature)<br>
Nov 11 08:11:19 mail postfix/qmgr[2919]: B293A134E35: removed<br>
Nov 11 08:11:19 mail postfix/pipe[3055]: 6722A134E37: to=&lt;xt@xiutuo.com&gt;, relay=dovecot, delay=0.23, delays=0.05/0.01/0/0.16, dsn=2.0.0, status=sent (delivered via dovecot service)<br>
Nov 11 08:11:19 mail postfix/qmgr[2919]: 6722A134E37: removed</font></p>
<p><font color="#000000">测试步骤3的结果看来类似，并收到标题如下的邮件<br>
同时test@xiutuo.com用户收到TBTF ping for 2001-04-20: Reviving</font></p>
<p><br>
<font color="#000000">Nov 11 08:12:33 mail postfix/pickup[2909]: DE0D9134E36: uid=0 from=&lt;root&gt;<br>
Nov 11 08:12:33 mail postfix/cleanup[3045]: DE0D9134E36: message-id=&lt;v0421010eb70653b14e06@[208.192.102.193]&gt;<br>
Nov 11 08:12:34 mail postfix/qmgr[2919]: DE0D9134E36: from=&lt;root@mail.xiutuo.com&gt;, size=6707, nrcpt=1 (queue active)<br>
Nov 11 08:12:34 mail postfix/smtpd[3051]: connect from localhost.localdomain[127.0.0.1]<br>
Nov 11 08:12:34 mail postfix/smtpd[3051]: 787CB134E1E: client=localhost.localdomain[127.0.0.1]<br>
Nov 11 08:12:34 mail postfix/cleanup[3045]: 787CB134E1E: message-id=&lt;v0421010eb70653b14e06@[208.192.102.193]&gt;<br>
Nov 11 08:12:34 mail postfix/qmgr[2919]: 787CB134E1E: from=&lt;root@mail.xiutuo.com&gt;, size=7136, nrcpt=1 (queue active)<br>
Nov 11 08:12:34 mail postfix/smtpd[3051]: disconnect from localhost.localdomain[127.0.0.1]<br>
Nov 11 08:12:34 mail amavis[2454]: (02454-07) Passed CLEAN, [199.172.62.20] [208.192.102.199] &lt;root@mail.xiutuo.com&gt; -&gt; &lt;test@xiutuo.com&gt;, Message-ID: &lt;v0421010eb70653b14e06@[208.192.102.193]&gt;, mail_id: TUuc6BXjlWwX, Hits: 0, size: 6707, queued_as: 787CB134E1E, 664 ms<br>
Nov 11 08:12:34 mail postfix/smtp[3048]: DE0D9134E36: to=&lt;test@xiutuo.com&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=0.82, delays=0.11/0/0.03/0.67, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=02454-07, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 787CB134E1E)<br>
Nov 11 08:12:34 mail postfix/qmgr[2919]: DE0D9134E36: removed<br>
Nov 11 08:12:34 mail postfix/pipe[3055]: 787CB134E1E: to=&lt;test@xiutuo.com&gt;, relay=dovecot, delay=0.25, delays=0.04/0.04/0/0.17, dsn=2.0.0, status=sent (delivered via dovecot service)<br>
Nov 11 08:12:34 mail postfix/qmgr[2919]: 787CB134E1E: removed</font></p>
<p><font color="#000000">测试步骤4的结果看来类似，含Blocked SPAM字样 <br>
同时test@xiutuo.com用户收到TBTF ping for 2001-04-20: Reviving</font></p>
<p><font color="#000000">Nov 11 08:13:55 mail postfix/pickup[2909]: 4BE56134E36: uid=0 from=&lt;root&gt;<br>
Nov 11 08:13:55 mail postfix/cleanup[3045]: 4BE56134E36: message-id=&lt;GTUBE1.1010101@example.net&gt;<br>
Nov 11 08:13:55 mail postfix/qmgr[2919]: 4BE56134E36: from=&lt;root@mail.xiutuo.com&gt;, size=935, nrcpt=1 (queue active)<br>
Nov 11 08:13:55 mail clamd[1861]: SelfCheck: Database status OK.<br>
Nov 11 08:13:56 mail amavis[2453]: (02453-08) Blocked SPAM, &lt;root@mail.xiutuo.com&gt; -&gt; &lt;test@xiutuo.com&gt;, quarantine: spam-8c1gTr7De6GK.gz, Message-ID: &lt;GTUBE1.1010101@example.net&gt;, mail_id: 8c1gTr7De6GK, Hits: 1005.319, size: 935, 1241 ms<br>
Nov 11 08:13:56 mail postfix/smtp[3048]: 4BE56134E36: to=&lt;test@xiutuo.com&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=1.4, delays=0.1/0/0.04/1.2, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=02453-08, DISCARD(bounce.suppressed))<br>
Nov 11 08:13:56 mail postfix/qmgr[2919]: 4BE56134E36: removed</font></p>
<p><font color="#000000">测试步骤5的结果看来类似<br>
Nov 11 08:17:46 mail postfix/pickup[2909]: 57DA4134E2F: uid=0 from=&lt;root&gt;<br>
Nov 11 08:17:46 mail postfix/cleanup[3123]: 57DA4134E2F: message-id=&lt;GTUBE1.1010101@example.net&gt;<br>
Nov 11 08:17:46 mail postfix/qmgr[2919]: 57DA4134E2F: from=&lt;root@mail.xiutuo.com&gt;, size=917, nrcpt=1 (queue active)<br>
Nov 11 08:17:47 mail amavis[2454]: (02454-08) Blocked SPAM, &lt;root@mail.xiutuo.com&gt; -&gt; &lt;test@xiutuo.com&gt;, quarantine: spam-Gcic7s1elsbA.gz, Message-ID: &lt;GTUBE1.1010101@example.net&gt;, mail_id: Gcic7s1elsbA, Hits: 1005.319, size: 917, 648 ms<br>
Nov 11 08:17:47 mail postfix/smtp[3118]: 57DA4134E2F: to=&lt;test@xiutuo.com&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=0.86, delays=0.17/0/0.04/0.64, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=02454-08, DISCARD(bounce.suppressed))<br>
Nov 11 08:17:47 mail postfix/qmgr[2919]: 57DA4134E2F: removed</font></p>
<p><font color="#000000">测试步骤6的结果看来类似,test@xiutuo.com收到标题为Home Based Business for Grownups的邮件<br>
Nov 11 08:19:21 mail postfix/pickup[2909]: D26B6134E35: uid=0 from=&lt;root&gt;<br>
Nov 11 08:19:21 mail postfix/cleanup[3123]: D26B6134E35: message-id=&lt;N1msdrbJXNPfV4wg9&gt;<br>
Nov 11 08:19:21 mail postfix/qmgr[2919]: D26B6134E35: from=&lt;root@mail.xiutuo.com&gt;, size=4769, nrcpt=1 (queue active)<br>
Nov 11 08:19:27 mail postfix/smtpd[3181]: connect from localhost.localdomain[127.0.0.1]<br>
Nov 11 08:19:27 mail postfix/smtpd[3181]: 64FF3134E2F: client=localhost.localdomain[127.0.0.1]<br>
Nov 11 08:19:27 mail postfix/cleanup[3123]: 64FF3134E2F: message-id=&lt;N1msdrbJXNPfV4wg9&gt;<br>
Nov 11 08:19:27 mail postfix/qmgr[2919]: 64FF3134E2F: from=&lt;root@mail.xiutuo.com&gt;, size=5408, nrcpt=1 (queue active)<br>
Nov 11 08:19:27 mail postfix/smtpd[3181]: disconnect from localhost.localdomain[127.0.0.1]<br>
Nov 11 08:19:27 mail amavis[2453]: (02453-09) Passed CLEAN, [212.17.35.15] [63.10.249.142] &lt;root@mail.xiutuo.com&gt; -&gt; &lt;test@xiutuo.com&gt;, Message-ID: &lt;N1msdrbJXNPfV4wg9&gt;, mail_id: MmuoGXSHqgAF, Hits: 6.024, size: 4769, queued_as: 64FF3134E2F, 5653 ms<br>
Nov 11 08:19:27 mail postfix/smtp[3118]: D26B6134E35: to=&lt;test@xiutuo.com&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=5.8, delays=0.11/0/0.04/5.6, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=02453-09, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 64FF3134E2F)<br>
Nov 11 08:19:27 mail postfix/qmgr[2919]: D26B6134E35: removed<br>
Nov 11 08:19:27 mail postfix/pipe[3185]: 64FF3134E2F: to=&lt;test@xiutuo.com&gt;, relay=dovecot, delay=0.31, delays=0.05/0.06/0/0.2, dsn=2.0.0, status=sent (delivered via dovecot service)<br>
Nov 11 08:19:27 mail postfix/qmgr[2919]: 64FF3134E2F: removed</font></p>
<p><font color="#000000">测试步骤7的结果看来类似,test@xiutuo.com收到标题为<br>
Message has been disinfected : ***UNCHECKED*** amavisd test - 42.zip mail bomb的邮件<br>
日志看起来类似，含Exceeded storage quota 29402500 bytes by do_unzip字样：<br>
Nov 11 08:26:06 mail postfix/pickup[2909]: F295B134E22: uid=0 from=&lt;root&gt;<br>
Nov 11 08:26:07 mail postfix/cleanup[3230]: F295B134E22: message-id=&lt;77115.1055868666@example.com&gt;<br>
Nov 11 08:26:07 mail postfix/qmgr[2919]: F295B134E22: from=&lt;root@mail.xiutuo.com&gt;, size=58805, nrcpt=1 (queue active)<br>
Nov 11 08:26:11 mail amavis[2453]: (02453-11) (!)Exceeded storage quota 29402500 bytes by do_unzip; last chunk 32150 bytes<br>
Nov 11 08:26:12 mail amavis[2453]: (02453-11) NOTICE: Virus scanning skipped: Exceeded storage quota 29402500 bytes by do_unzip; last chunk 32150 bytes<br>
Nov 11 08:26:12 mail amavis[2453]: (02453-11) (!)NOTICE: HOLD reason: Exceeded storage quota 29402500 bytes by do_unzip; last chunk 32150 bytes<br>
Nov 11 08:26:12 mail amavis[2453]: (02453-11) (!)Inserting header field: X-Amavis-Hold: Exceeded storage quota 29402500 bytes by do_unzip; last chunk 32150 bytes<br>
Nov 11 08:26:12 mail postfix/smtpd[3237]: connect from localhost.localdomain[127.0.0.1]<br>
Nov 11 08:26:12 mail postfix/smtpd[3237]: D034B13527D: client=localhost.localdomain[127.0.0.1]<br>
Nov 11 08:26:12 mail postfix/cleanup[3230]: D034B13527D: message-id=&lt;77115.1055868666@example.com&gt;<br>
Nov 11 08:26:12 mail postfix/qmgr[2919]: D034B13527D: from=&lt;root@mail.xiutuo.com&gt;, size=59342, nrcpt=1 (queue active)<br>
Nov 11 08:26:12 mail postfix/smtpd[3237]: disconnect from localhost.localdomain[127.0.0.1]<br>
Nov 11 08:26:13 mail postfix/pipe[3241]: D034B13527D: to=&lt;test@xiutuo.com&gt;, relay=dovecot, delay=0.19, delays=0.1/0/0/0.08, dsn=2.0.0, status=sent (delivered via dovecot service)<br>
Nov 11 08:26:13 mail postfix/qmgr[2919]: D034B13527D: removed<br>
Nov 11 08:26:13 mail amavis[2453]: (02453-11) Passed UNCHECKED, &lt;root@mail.xiutuo.com&gt; -&gt; &lt;test@xiutuo.com&gt;, Message-ID: &lt;77115.1055868666@example.com&gt;, mail_id: MtG9YVtQuxui, Hits: 1.159, size: 58805, queued_as: D034B13527D, 5988 ms<br>
Nov 11 08:26:13 mail postfix/smtp[3233]: F295B134E22: to=&lt;test@xiutuo.com&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=6.2, delays=0.12/0/0.04/6, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=02453-11, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as D034B13527D)<br>
Nov 11 08:26:13 mail postfix/qmgr[2919]: F295B134E22: removed</font></p>
<p><font color="#000000">否则日志看起来，含Maximum number of files (1500) exceeded at<br>
Nov 11 08:34:10 mail postfix/smtpd[3328]: connect from unknown[192.168.8.121]<br>
Nov 11 08:34:10 mail postfix/smtpd[3328]: 9818C134E10: client=unknown[192.168.8.121], sasl_method=LOGIN, sasl_username=test@xiutuo.com<br>
Nov 11 08:34:10 mail postfix/cleanup[3335]: 9818C134E10: message-id=&lt;FF4FA86CF3EB4F2B91936CA9E8621E15@PC200911031417&gt;<br>
Nov 11 08:34:10 mail postfix/smtpd[3328]: lost connection after DATA (163767 bytes) from unknown[192.168.8.121]<br>
Nov 11 08:34:10 mail postfix/smtpd[3328]: disconnect from unknown[192.168.8.121]<br>
Nov 11 08:34:40 mail postfix/smtpd[3328]: connect from unknown[192.168.8.121]<br>
Nov 11 08:34:40 mail postfix/smtpd[3328]: 6228F134DD2: client=unknown[192.168.8.121], sasl_method=LOGIN, sasl_username=test@xiutuo.com<br>
Nov 11 08:34:40 mail postfix/cleanup[3335]: 6228F134DD2: message-id=&lt;7EA7C89063CC4297BD91C03C3BAE4A5C@PC200911031417&gt;<br>
Nov 11 08:34:40 mail postfix/qmgr[2919]: 6228F134DD2: from=&lt;test@xiutuo.com&gt;, size=164689, nrcpt=1 (queue active)<br>
Nov 11 08:34:40 mail postfix/smtpd[3328]: 98657134E08: client=unknown[192.168.8.121], sasl_method=LOGIN, sasl_username=test@xiutuo.com<br>
Nov 11 08:34:40 mail postfix/cleanup[3335]: 98657134E08: message-id=&lt;B2DC3295C71E4ACFB9019542576B9315@PC200911031417&gt;<br>
Nov 11 08:34:40 mail postfix/qmgr[2919]: 98657134E08: from=&lt;test@xiutuo.com&gt;, size=164631, nrcpt=1 (queue active)<br>
Nov 11 08:34:40 mail postfix/smtpd[3328]: disconnect from unknown[192.168.8.121]<br>
Nov 11 08:34:59 mail amavis[2453]: (02453-13) NOTICE: Virus scanning skipped: Maximum number of files (1500) exceeded at /usr/local/sbin/amavisd line 6807.<br>
Nov 11 08:35:00 mail amavis[2454]: (02454-12) NOTICE: Virus scanning skipped: Maximum number of files (1500) exceeded at /usr/local/sbin/amavisd line 6807.<br>
Nov 11 08:35:05 mail amavis[2454]: (02454-12) (!)NOTICE: HOLD reason: Maximum number of files (1500) exceeded at /usr/local/sbin/amavisd line 6807.<br>
Nov 11 08:35:05 mail amavis[2454]: (02454-12) (!)Inserting header field: X-Amavis-Hold: Maximum number of files (1500) exceeded at /usr/local/sbin/amavisd line 6807.<br>
Nov 11 08:35:05 mail amavis[2453]: (02453-13) (!)NOTICE: HOLD reason: Maximum number of files (1500) exceeded at /usr/local/sbin/amavisd line 6807.<br>
Nov 11 08:35:05 mail amavis[2453]: (02453-13) (!)Inserting header field: X-Amavis-Hold: Maximum number of files (1500) exceeded at /usr/local/sbin/amavisd line 6807.<br>
Nov 11 08:35:05 mail postfix/smtpd[3350]: connect from localhost.localdomain[127.0.0.1]<br>
Nov 11 08:35:06 mail postfix/smtpd[3349]: connect from localhost.localdomain[127.0.0.1]<br>
Nov 11 08:35:06 mail postfix/smtpd[3350]: 1192B135C15: client=localhost.localdomain[127.0.0.1]<br>
Nov 11 08:35:06 mail postfix/cleanup[3335]: 1192B135C15: message-id=&lt;B2DC3295C71E4ACFB9019542576B9315@PC200911031417&gt;<br>
Nov 11 08:35:06 mail amavis[2453]: (02453-13) Passed UNCHECKED, MYNETS LOCAL [192.168.8.121] [192.168.8.121] &lt;test@xiutuo.com&gt; -&gt; &lt;test@xiutuo.com&gt;, Message-ID: &lt;B2DC3295C71E4ACFB9019542576B9315@PC200911031417&gt;, mail_id: gz+5HBePjISB, Hits: 2.3, size: 164631, queued_as: 1192B135C15, 25362 ms<br>
Nov 11 08:35:06 mail postfix/smtpd[3350]: disconnect from localhost.localdomain[127.0.0.1]<br>
Nov 11 08:35:06 mail postfix/smtp[3340]: 98657134E08: to=&lt;test@xiutuo.com&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=26, delays=0.12/0.09/0.04/26, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=02453-13, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 1192B135C15)<br>
Nov 11 08:35:06 mail postfix/qmgr[2919]: 98657134E08: removed<br>
Nov 11 08:35:06 mail postfix/qmgr[2919]: 1192B135C15: from=&lt;test@xiutuo.com&gt;, size=165382, nrcpt=1 (queue active)<br>
Nov 11 08:35:06 mail postfix/smtpd[3349]: A0640134E08: client=localhost.localdomain[127.0.0.1]<br>
Nov 11 08:35:06 mail postfix/cleanup[3335]: A0640134E08: message-id=&lt;7EA7C89063CC4297BD91C03C3BAE4A5C@PC200911031417&gt;<br>
Nov 11 08:35:06 mail postfix/smtpd[3349]: disconnect from localhost.localdomain[127.0.0.1]<br>
Nov 11 08:35:06 mail postfix/qmgr[2919]: A0640134E08: from=&lt;test@xiutuo.com&gt;, size=165444, nrcpt=1 (queue active)<br>
Nov 11 08:35:06 mail postfix/pipe[3354]: 1192B135C15: to=&lt;test@xiutuo.com&gt;, relay=dovecot, delay=0.81, delays=0.47/0.05/0/0.28, dsn=2.0.0, status=sent (delivered via dovecot service)<br>
Nov 11 08:35:06 mail postfix/qmgr[2919]: 1192B135C15: removed<br>
Nov 11 08:35:07 mail amavis[2454]: (02454-12) Passed UNCHECKED, MYNETS LOCAL [192.168.8.121] [192.168.8.121] &lt;test@xiutuo.com&gt; -&gt; &lt;test@xiutuo.com&gt;, Message-ID: &lt;7EA7C89063CC4297BD91C03C3BAE4A5C@PC200911031417&gt;, mail_id: mNxaMfMJswdg, Hits: 2.306, size: 164689, queued_as: A0640134E08, 26279 ms<br>
Nov 11 08:35:07 mail postfix/pipe[3356]: A0640134E08: to=&lt;test@xiutuo.com&gt;, relay=dovecot, delay=0.37, delays=0.12/0.05/0/0.2, dsn=2.0.0, status=sent (delivered via dovecot service)<br>
Nov 11 08:35:07 mail postfix/qmgr[2919]: A0640134E08: removed<br>
Nov 11 08:35:07 mail postfix/smtp[3339]: 6228F134DD2: to=&lt;test@xiutuo.com&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=27, delays=0.17/0.12/0.08/26, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=02454-12, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as A0640134E08)<br>
Nov 11 08:35:07 mail postfix/qmgr[2919]: 6228F134DD2: removed</font></p>
<p><font color="#000000">测试步骤8的结果看来类似,含BAD-HEADER<br>
test@xiutuo.com收到标题为bad header test indeed邮件</font></p>
<p><font color="#000000">Nov 11 08:37:53 mail postfix/pickup[2909]: E3898134E08: uid=0 from=&lt;root&gt;<br>
Nov 11 08:37:53 mail postfix/cleanup[3335]: E3898134E08: message-id=&lt;N1msdrbJXNPfV4@example.com&gt;<br>
Nov 11 08:37:54 mail postfix/qmgr[2919]: E3898134E08: from=&lt;root@mail.xiutuo.com&gt;, size=1367, nrcpt=1 (queue active)<br>
Nov 11 08:37:55 mail postfix/smtpd[3350]: connect from localhost.localdomain[127.0.0.1]<br>
Nov 11 08:37:55 mail postfix/smtpd[3350]: 248C4134DD2: client=localhost.localdomain[127.0.0.1]<br>
Nov 11 08:37:55 mail amavis[2454]: (02454-13) INFO: unfolded 1 illegal all-whitespace continuation lines<br>
Nov 11 08:37:55 mail postfix/cleanup[3335]: 248C4134DD2: message-id=&lt;N1msdrbJXNPfV4@example.com&gt;<br>
Nov 11 08:37:55 mail postfix/qmgr[2919]: 248C4134DD2: from=&lt;root@mail.xiutuo.com&gt;, size=2131, nrcpt=1 (queue active)<br>
Nov 11 08:37:55 mail postfix/smtpd[3350]: disconnect from localhost.localdomain[127.0.0.1]<br>
Nov 11 08:37:55 mail amavis[2454]: (02454-13) Passed BAD-HEADER, &lt;root@mail.xiutuo.com&gt; -&gt; &lt;test@xiutuo.com&gt;, Message-ID: &lt;N1msdrbJXNPfV4@example.com&gt;, mail_id: RHaj4Tl1Mou7, Hits: 2.319, size: 1369, queued_as: 248C4134DD2, 1243 ms<br>
Nov 11 08:37:55 mail postfix/smtp[3340]: E3898134E08: to=&lt;test@xiutuo.com&gt;, relay=127.0.0.1[127.0.0.1]:10024, delay=1.4, delays=0.13/0/0.04/1.2, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=02454-13, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 248C4134DD2)<br>
Nov 11 08:37:55 mail postfix/qmgr[2919]: E3898134E08: removed<br>
Nov 11 08:37:55 mail postfix/pipe[3354]: 248C4134DD2: to=&lt;test@xiutuo.com&gt;, relay=dovecot, delay=0.33, delays=0.04/0.15/0/0.14, dsn=2.0.0, status=sent (delivered via dovecot service)<br>
Nov 11 08:37:55 mail postfix/qmgr[2919]: 248C4134DD2: removed</font></p>
<p><font color="#000000">六：其他功能<br>
禁止伪造本地帐号给本地其他用户-包括自己发邮件功能实现:<br>
在main.cf增加如下内容<br>
smtpd_sender_login_maps = mysql:$config_directory/mysql_virtual_mailbox_maps.cf<br>
smtpd_sender_restrictions = reject_sender_login_mismatch</font></p>
<p><font color="#000000">测试该功能：<br>
# telnet localhost 25<br>
Trying 127.0.0.1...<br>
Connected to localhost.localdomain (127.0.0.1).<br>
Escape character is '^]'.<br>
220 mail.xiutuo.com ESMTP Postfix<br>
ehlo localhost<br>
250-mail.xiutuo.com<br>
250-PIPELINING<br>
250-SIZE 10240000<br>
250-ETRN<br>
250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5<br>
250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5<br>
250-ENHANCEDSTATUSCODES<br>
250-8BITMIME<br>
250 DSN<br>
mail from : xt@xiutuo.com<br>
501 5.5.4 Syntax: MAIL FROM:&lt;address&gt;<br>
mail from:xt@xiutuo.com<br>
250 2.1.0 Ok<br>
rcpt to:test@xiutuo.com<br>
553 5.7.1 &lt;xt@xiutuo.com&gt;: Sender address rejected: not logged in  <br>
这里出现not login in提示就成功了，接下来输入认证信息继续测试<br>
auth login<br>
334 VXNlcm5hbWU6<br>
eGl1dHVv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  (这里是base64加密的用户xiutuo)<br>
334 UGFzc3dvcmQ6<br>
****&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  (这里是base64加密xiutuo用户的密码)<br>
235 2.7.0 Authentication successful 认证成功<br>
Connection closed by foreign host.</font></p>
<p> </p>
<p><font color="#000000">出错：<br>
1.自动启动shell脚本修改相关程序路径<br>
&nbsp;&nbsp;  尤其是clamd脚本，需要修改 ulimit -f 200000 的数字大一些，否则启动告警出错</font></p>
<p><font color="#000000">2.当amavisd扫描附件的时候，出现exceed ** byte 字样的时候，请修改<br>
/etc/amavisd.conf 配置文件的以下相关参数<br>
测试mail bombs时<br>
# Quota limits to avoid bombs (like 42.zip) <br>
$MAXLEVELS = 1; #扫描压缩包时，解压几层 <br>
$MAXFILES = 150; #最多扫描压缩包内1500个文件 <br>
$MIN_EXPANSION_QUOTA = 100*1024; # 单位bytes，最小邮件限额，包括附件 <br>
$MAX_EXPANSION_QUOTA = 200*1024*1024; # bytes ， 最大邮件大小，为200K <br>
$MIN_EXPANSION_FACTOR = 1; #可扫描邮件大小的最小倍数 <br>
$MAX_EXPANSION_FACTOR = 500; #可扫描邮件大小的最大倍数# <br>
#最大扫描压缩包大小为（$MAX_EXPANSION_QUOTA）×（$MAX_EXPANSION_FACTOR），<br>
#当解压缩后的文件达到此值时，系统会结束解压缩进程。 </font></p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p><span><br>
</span> </p>
<p><span><br>
</span><br>
 </p>
</span>  <a href="http://hi.baidu.com/xiutuo/blog/item/0ad08b336fb66249ad4b5fc1.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/xiutuo/blog/category/linux%2Dmail">linux-mail</a>&nbsp;<a href="http://hi.baidu.com/xiutuo/blog/item/0ad08b336fb66249ad4b5fc1.html#comment">查看评论</a>]]></description>
        <pubDate>2009-11-16  11:19</pubDate>
        <category><![CDATA[linux-mail]]></category>
        <author><![CDATA[秀脱]]></author>
		<guid>http://hi.baidu.com/xiutuo/blog/item/0ad08b336fb66249ad4b5fc1.html</guid>
</item>

<item>
        <title><![CDATA[磁盘容量检测并发送邮件通知脚本]]></title>
        <link><![CDATA[http://hi.baidu.com/xiutuo/blog/item/b86868299164abf498250a77.html]]></link>
        <description><![CDATA[
		
		<p>----------------------------------------------------</p>
<p>mon-disk脚本：检测磁盘使用情况并</p>
<p>sendmail_with_smtp_auth：无需配置邮件服务器直接发送待认证的邮件脚本</p>
<p>----------------------------------------------------</p>
<p>#!/bin/sh<br>
#脚本名:mon-disk<br>
#定义139邮箱，可以发送短信通知，免费的<br>
<a href="mailto:rpct_to= hong.lan@m-time.com ">rpct_to=</a>'MAIL_TO_ADDRESS'<br>
#定义发件箱<br>
<a href="mailto:mail_from= wuxian@ ">mail_from='MAIL_FROM_ADDRESS'</a><br>
#邮件标题<br>
mail_title='43磁盘检测报告'<br>
mail_demo=/opt/sbin/sendmail_with_smtp_auth<br>
#磁盘报告<br>
disk_free_report='/opt/sbin/disk_report'<br>
disk_status_now='/opt/sbin/disk_status_now'<br>
lines='----------------------------------------------'<br>
#磁盘报告标题<br>
title='磁盘监测,时间:'<br>
#服务器名<br>
servername='SERVERNAME'<br>
#服务器ip<br>
ip='IP_ADDRESS'<br>
context1='超过80%使用的磁盘情况，如下，请及时清理'<br>
context2='已用% 挂载点'<br>
cat /dev/null &gt; $disk_free_report<br>
ts=`(date +%Y-%m-%d-%H:%M:%S)`<br>
#当有磁盘容量使用超过70的，就把对应的挂载点取出，并发邮件通知<br>
df -P | awk -F'%' '{print $1,$2}' | awk 'NR&gt;1 &amp;&amp; $5&gt;80 {print $5,$6}' &gt; $disk_status_now<br>
#num=`cat $disk_status_now | wc -l`<br>
#if [ $num -gt 0 ];then</p>
<p>if [ -s $disk_status_now ];then<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  echo -e &quot;$title$ts\n$lines\n$servername\n$ip\n$context1\n$lines\n$context2\n&quot; &gt;&gt;$disk_free_report <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  cat $disk_status_now &gt;&gt;$disk_free_report<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  echo -e &quot;$lines\n&quot; &gt;&gt;$disk_free_report<br>
# 调用发送带认证的邮件脚本（免去了配置邮件服务器的麻烦）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  $mail_demo &quot;$mail_from&quot; &quot;$rpct_to&quot; &quot;$mail_title&quot; &quot;$disk_free_report&quot;<br>
else<br>
&nbsp;&nbsp;&nbsp;&nbsp;  echo &quot;fine&quot;<br>
fi</p>
<p> </p>
<p>=============================</p>
<p>#!/bin/sh<br>
# name of the shell:sendmail_with_smtp_auth<br>
# how to use the shell: <br>
#<br>
# PATH_OF_THE_SHELL/sendmail_with_smtp_auth <a href="mailto:sender@mailsever.com">sender@mailsever.com</a> <a href="mailto:recieve@domain.com">recieve@domain.com</a> subject mail_content_file<br>
#<br>
# linux shell:send mail with smtp auth<br>
# this shell had been test in contos5.1<br>
# test by xiutuo<br>
# my blog <a href="http://hi.baidu.com/xiutuo">url:http://hi.baidu.com/xiutuo</a><br>
# define mail sender,reciver,subjest,mail content , mail sever,smtp auth user and user's password</p>
<p># define mail sender<br>
sender=$1</p>
<p>#define mail reciver<br>
reciver=$2</p>
<p># define mail subject(title) <br>
subject=$3</p>
<p># define mail content <br>
email_content_txt=$4<br>
<br>
# define mail server<br>
mailserver='YOUR MAIL SERVER'</p>
<p>#<br>
# define smtp auth user:mail user(sender)<br>
# username with base64 encode,please translate with base64 tools,<br>
# or with command line: echo &quot;yourname_or_password&quot; | base64<br>
# but this command aways not work perfert.I still dont know why.<br>
# also you can use Perl:comand look like:<br>
# perl -MMIME::Base64 -e 'print encode_base64(&quot;xiutuo&quot;);'<br>
# replace xiutuo with you own words,it works<br>
# so i suggest you to access this website to translate them online.<br>
# <a href="http://cnac.vicp.cc/WebSites/PHP/base64.php">http://cnac.vicp.cc/WebSites/PHP/base64.php</a><br>
#<br>
smtp_auth_user=&quot;THE USERNAME OF YOUR MAIL WITH BASE64 ENCODING &quot;<br>
smtp_auth_pwd=&quot;THE PASSWORD OF YOUR MAIL WITH BASE64 ENCODING&quot;</p>
<p>#---------------------<br>
if [ &quot;$#&quot; != 4 ]; then<br>
echo<br>
echo &quot;Usage: $0 <a href="mailto:sender@mailsever.com">sender@mailsever.com</a> <a href="mailto:recieve@domain.com">recieve@domain.com</a> subject mail_content_file&quot;<br>
echo<br>
exit 3<br>
fi<br>
# create funcation for mail_content_file<br>
mail_content(){<br>
cat &lt;&lt; EOF<br>
From: &lt;$sender&gt;<br>
To: &lt;$reciver&gt;<br>
Subject: $subject<br>
Date: `date` +0800<br>
Mime-Version: 1.0<br>
Content-Type: text/plain; charset=&quot;gb2312&quot;; format=flowed<br>
X-Mailer: centos5 xiutuo mail shell with smtp auth<br>
X-MimeOLE: xiutuo's mta--Powered by xiutuo--author's blog: <a href="http://hi.baidu.com/xiutuo/">http://hi.baidu.com/xiutuo/</a></p>
<p>EOF<br>
test -r $email_content_txt &amp;&amp; cat $email_content_txt <br>
}<br>
send_mail(){<br>
(<br>
sleep 5<br>
for comm in &quot;ehlo $mailserver&quot; &quot;auth login&quot; &quot;$smtp_auth_user&quot; &quot;$smtp_auth_pwd&quot; &quot;mail from:$sender&quot; &quot;rcpt to:$reciver&quot; &quot;data&quot;<br>
do<br>
echo &quot;$comm&quot;;sleep 3<br>
done<br>
mail_content<br>
sleep 3;echo &quot;.&quot;<br>
)| telnet $mailserver 25<br>
}<br>
send_mail</p>
<p> </p> <a href="http://hi.baidu.com/xiutuo/blog/item/b86868299164abf498250a77.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/xiutuo/blog/category/linux%2Dshell">linux-shell</a>&nbsp;<a href="http://hi.baidu.com/xiutuo/blog/item/b86868299164abf498250a77.html#comment">查看评论</a>]]></description>
        <pubDate>2009-10-10  14:54</pubDate>
        <category><![CDATA[linux-shell]]></category>
        <author><![CDATA[秀脱]]></author>
		<guid>http://hi.baidu.com/xiutuo/blog/item/b86868299164abf498250a77.html</guid>
</item>

<item>
        <title><![CDATA[sqlldr导入到oracleshell脚本]]></title>
        <link><![CDATA[http://hi.baidu.com/xiutuo/blog/item/a3b3e5456022c92ccefca369.html]]></link>
        <description><![CDATA[
		
		<p>#! /bin/bash<br>
#以oracle用户安装ORACLE客户端<br>
#并在oracle主目录设置的.bash_profile设置ORACLE_HOME目录<br>
#同时把sqlldr的程序所在目录加入环境变量中<br>
. ~/.bash_profile<br>
export LANG=en_US</p>
<p>if [ $# = 0 ] ; then<br>
&nbsp;&nbsp;  DT=`(date +%Y-%m-%d --date='1 days ago')`<br>
elif [ $# = 1 ] ; then<br>
&nbsp;&nbsp;  DT=$1<br>
else <br>
&nbsp;&nbsp;  echo &quot;Usage: $0 {Date(format:2009-08-01)}&quot;<br>
&nbsp;&nbsp;  exit<br>
fi<br>
OperDir=/data/load_data/sohu<br>
FileList=${OperDir}/filelist.txt<br>
LogFile=${OperDir}/log/load.log</p>
<p>cd ${OperDir}/data</p>
<p>#从ftp中获取文本数据并通过sqlldr导入到oracle</p>
<p>ftp -t -i -n &lt;&lt;EOF<br>
open 172.16.33.239<br>
user ftpuser ftppassword<br>
binary<br>
mget sohu-sms-${DT}*.txt<br>
bye<br>
EOF</p>
<p>ls | grep sms &gt; ${FileList}<br>
cd $OperDir<br>
Num=`cat $FileList | wc -l`<br>
Files=`cat $FileList`<br>
if [ $Num -gt 0 ];then<br>
#&nbsp;&nbsp;  if [ ! -d data_backup/${DT} ] ; then<br>
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  mkdir data_backup/${DT}<br>
#&nbsp;&nbsp;  fi<br>
&nbsp;&nbsp;  for i in $Files<br>
&nbsp;&nbsp;  do <br>
# 每读取一个文件，生成crontor文件（sohu.ctl），并执行导入<br>
# infile后面的为导入文件，<br>
# badfile是导入失败后产生的文件（可以看作是导入是失败后的数据日志文件，即导入失败了infile文件中的记录）<br>
# discardfile是导入中断后产生的文件（可以看作是导入是中断后的数据日志文件，即导入中断了infile文件中的记录）<br>
&nbsp;&nbsp;&nbsp;&nbsp;  echo &quot;load data infile 'data/$i' badfile 'data/$i.bad' discardfile 'data/$i.dsc' append into table sms_hdwx.t_souhu_mt_records fields terminated by ',' (spcode,phone,serviceId,linkid,stat,mt_time)&quot; &gt; sohu.ctl<br>
# 通过sqlldr导入，并输出生成的日志文件sohu_${DT}.log<br>
&nbsp;&nbsp;&nbsp;  sqlldr username/password control=sohu.ctl log=${OperDir}/log/sohu_${DT}.log<br>
&nbsp;&nbsp;&nbsp;&nbsp;  mv data/$i data_backup/<br>
&nbsp;&nbsp;&nbsp;&nbsp;  if [ -s data/$i.bad ] ; then<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  mv data/$i.bad log/$i.bad<br>
&nbsp;&nbsp;&nbsp;&nbsp;  fi<br>
&nbsp;&nbsp;&nbsp;&nbsp;  if [ -s data/$i.dsc ] ; then<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  mv data/$i.dsc log/$i.dsc<br>
&nbsp;&nbsp;&nbsp;&nbsp;  fi<br>
&nbsp;&nbsp;  done<br>
&nbsp;&nbsp;  echo &quot;${DT}:Load data success&quot; &gt;&gt; $LogFile<br>
else <br>
&nbsp;&nbsp;  echo &quot;=======================================================================&quot; &gt;&gt;$LogFile<br>
&nbsp;&nbsp;  echo &quot; `date` no file download from this ftp server&quot; &gt;&gt;$LogFile<br>
fi<br>
exit<br>
# 删除日志（保留60天后删除）<br>
find ${OperDir}/log \( -name &quot;sohu*.log&quot; -o -name &quot;sohu-sms-*.dsc&quot; -o -name &quot;sohu-sms-*.bad&quot; \) -ctime +60 -exec rm {} \;<br>
# 删除备份的原始数据（保留30天）<br>
find ${OperDir}/data_backup -name &quot;sohu-sms-*.txt&quot; -ctime +30 -exec rm {} \;</p> <a href="http://hi.baidu.com/xiutuo/blog/item/a3b3e5456022c92ccefca369.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/xiutuo/blog/category/linux%2Dshell">linux-shell</a>&nbsp;<a href="http://hi.baidu.com/xiutuo/blog/item/a3b3e5456022c92ccefca369.html#comment">查看评论</a>]]></description>
        <pubDate>2009-10-10  14:44</pubDate>
        <category><![CDATA[linux-shell]]></category>
        <author><![CDATA[秀脱]]></author>
		<guid>http://hi.baidu.com/xiutuo/blog/item/a3b3e5456022c92ccefca369.html</guid>
</item>

<item>
        <title><![CDATA[linux下iptables实战]]></title>
        <link><![CDATA[http://hi.baidu.com/xiutuo/blog/item/a153ea994729d3016e068cce.html]]></link>
        <description><![CDATA[
		
		<p>++++++++++++++++++++++++++++++++++++++++++++<br>
秀脱之vpn服务器配置iptables实战笔记<br>
QQ:&nbsp;&nbsp;&nbsp;  6541657<br>
Email: <a href="mailto:xiutuo@gmail.com">xiutuo@gmail.com</a><br>
++++++++++++++++++++++++++++++++++++++++++++<br>
环境:<br>
centos5.1</p>
<p>------------------------------------------------------------------------------<br>
防火墙启动关闭重启<br>
# service iptables stop | start | restart<br>
 <br>
保存所以规则到/etc/sysconfig/iptables<br>
# service iptables save</p>
<p>相当于清空所以规则<br>
# service iptables panic</p>
<p>加载iptables的额外模块: ip_conntrack_netbios_n<br>
# service iptables condrestart</p>
<p>------------------------------------------------------------------------------</p>
<p>查看规则号码id，插入新规则的时候非常管用<br>
# iptables -t 表名（mangle,filter,nat） -L 链名（每个表下对应的链） --line-numbers<br>
插入一条规则<br>
# iptables -t 表名（mangle,filter,nat）-I 链名 rulenum(--line-number得到的id+1) ******** -j 动作<br>
删除一条规则<br>
# iptables -t 表名（mangle,filter,nat） -D 链名 rulenum(--line-numbers得到的id)</p>
<p>命令中：链名和操作命令（链名前的那个参数）以及动作都是大写，其他小写</p>
<p>大小逻辑关系：表table&gt;链chain&gt;规则rule</p>
<p>表名&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br>
filter(默认表)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  过滤&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  input,output,forword<br>
nat&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;  preroute,output,postroute<br>
mangle&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;  preroute,output</p>
<p>------------------------------------------------------------------------------</p>
<p>基本命令<br>
iptables [-t 要操作的表] &lt;操作命令&gt; [要操作的链] [规则号码] [匹配条件] [-j 匹配到以后的动作]</p>
<p>其中：操作命令 -A -I -D -R -P -F -X -Z <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  规则内容是指（在删除和替换规则内容的时候用到）：[要操作的链] [规则号码] [匹配条件] [-j 匹配到以后的动作]</p>
<p>-----------------------------------<br>
-A &lt;链名&gt;</p>
<p>APPEND，追加一条规则（放到最后）<br>
例如：<br>
iptables -t filter -A INPUT -j DROP<br>
在 filter 表的 INPUT 链里追加一条规则（作为最后一条规则）<br>
匹配所有访问本机 IP 的数据包，匹配到的丢弃</p>
<p>-----------------------------------<br>
-I &lt;链名&gt; [规则id]</p>
<p>INSERT，插入一条规则<br>
例如：<br>
iptables -t filter -I INPUT -j DROP<br>
在 filter 表的 INPUT 链里插入一条规则（插入成第 1 条）<br>
iptables -I INPUT 3 -j DROP<br>
在 filter 表的 INPUT 链里插入一条规则（插入成第 3 条） <br>
注意： <br>
1、-t filter 可不写，不写则自动默认是 filter 表<br>
2、-I 链名 [规则id]，如果不写规则号码，则默认是 1<br>
3、确保规则号码 ≤ （已有规则id + 1），否则报错 <br>
4.规则id通过<br>
# iptables -t 表名（mangle,filter,nat） -L 链名（每个表下对应的链） --line-numbers<br>
得到的规则id</p>
<p>-----------------------------------<br>
-D &lt;链名&gt; &lt;规则号码 | 具体规则内容&gt;</p>
<p>DELETE，删除一条规则<br>
例如：<br>
iptables -D INPUT 3（按号码匹配删除规则）<br>
删除 filter 表 INPUT 链中的第三条规则（不管它的内容是什么）<br>
注意：-t filter 可不写，不写则自动默认是 filter 表<br>
iptables -D INPUT -s 192.168.0.1 -j DROP（按内容匹配删除规则）</p>
<p>-----------------------------------<br>
-R &lt;链名&gt; &lt;规则号码&gt; &lt;具体规则内容&gt;</p>
<p>REPLACE，替换一条规则<br>
例如：<br>
iptables -R INPUT 3 -j ACCEPT<br>
注意：-t filter 可不写，不写则自动默认是 filter 表<br>
将原来编号为 3 的规则内容替换为 &quot;-j ACCEPT&quot;</p>
<p>-----------------------------------<br>
-P &lt;链名&gt; &lt;动作&gt;</p>
<p>POLICY，设置某个链的默认规则<br>
例如：<br>
iptables -P INPUT DROP<br>
设置 filter 表 INPUT 链的默认规则是 DROP</p>
<p>-----------------------------------<br>
-F [链名]</p>
<p>FLUSH，清空规则<br>
例如：<br>
iptables -F INPUT<br>
清空 filter 表 INPUT 链中的所有规则<br>
iptables -t nat -F PREROUTING<br>
清空 nat 表 PREROUTING 链中的所有规则</p>
<p>-X [链名]<br>
删除自定义链</p>
<p>-Z [链名]<br>
ZERO,链计数器清零</p>
<p><br>
如清空所有防火墙配置<br>
# iptables -F<br>
# iptables -X<br>
# iptables -Z</p>
<p>------------------------------------------------------------------------------</p>
<p>附录iptables样本，默认策略均为drop<br>
防火墙主机环境<br>
centos5.1 <br>
iptables-1.3.5-1.2.1<br>
防火墙主机配置samba ssh mysql apache 服务,<br>
（防火墙内部机器访问外网，本机，局域网内部的iptables设置；<br>
  一些ddos，arp flood等防护措施<br>
没有加入，有兴趣的朋友再扩展扩展）</p>
<p>vi /etc/sysconfig/iptables 内容如下</p>
<p># Firewall configuration written by system-config-securitylevel<br>
# Manual customization of this file is not recommended.<br>
*filter<br>
:INPUT DROP [0:0]<br>
:FORWARD DROP [0:0]<br>
:OUTPUT DROP [0:0]</p>
<p># iptable所在机器<br>
# 允许外面主机ping该防火墙<br>
-A INPUT -p icmp --icmp-type 8 -s 0/0 -j ACCEPT<br>
-A OUTPUT -p icmp --icmp-type 0 -s 0/0 -j ACCEPT</p>
<p># 允许ping外面主机<br>
-A INPUT -p icmp --icmp-type 0 -s 0/0 -j ACCEPT<br>
-A OUTPUT -p icmp --icmp-type 8 -s 0/0 -j ACCEPT</p>
<p># 允许ping自己<br>
-A INPUT -p icmp -i lo -j ACCEPT<br>
-A OUTPUT -p icmp -o lo -j ACCEPT</p>
<p>#允许ssh到该防火墙<br>
-A INPUT -p tcp --dport 22 -j ACCEPT<br>
-A OUTPUT -p tcp --sport 22 -j ACCEPT</p>
<p># 允许ssh到其他机器<br>
-A INPUT -p tcp --sport 22 -j ACCEPT<br>
-A OUTPUT -p tcp --dport 22 -j ACCEPT</p>
<p># 允许访问防火墙的smb<br>
# 允许访问防火墙的smb-139<br>
-A INPUT -p tcp --dport 139 -j ACCEPT<br>
-A OUTPUT -p tcp --sport 139 -j ACCEPT</p>
<p># 允许访问防火墙的smb-445<br>
-A INPUT -p tcp --dport 445 -j ACCEPT<br>
-A OUTPUT -p tcp --sport 445 -j ACCEPT</p>
<p><br>
# 允许访问防火墙的mysql数据库<br>
-A INPUT -p tcp --dport 3306 -j ACCEPT<br>
-A OUTPUT -p tcp --sport 3306 -j ACCEPT</p>
<p># 允许防火墙访问外面的mysql数据库<br>
-A INPUT -p tcp --sport 3306 -j ACCEPT<br>
-A OUTPUT -p tcp --dport 3306 -j ACCEPT</p>
<p><br>
#允许www到该防火墙<br>
-A INPUT -p tcp --dport 80 -j ACCEPT<br>
-A OUTPUT -p tcp --sport 80 -j ACCEPT</p>
<p>#允许该防火墙访问www （结合dns那句）<br>
-A INPUT -p tcp --sport 80 -j ACCEPT<br>
-A OUTPUT -p tcp --dport 80 -j ACCEPT</p>
<p># 允许访问防火墙上的dns服务<br>
#-A INPUT -p udp --dport 53 -j ACCEPT<br>
#-A OUTPUT -p udp  --sport 53 -j ACCEPT</p>
<p>#当dns采用udp协议时<br>
# 允许访问防火墙访问外面的dns，允许防火墙解析外面域名<br>
#（允许防火墙访问域名时能解析到域名的ip，）<br>
# 如访问<a href="http://www.baidu.com/">http://www.baidu.com</a> 能解析到ip，而不是host not found<br>
-A INPUT -p udp --sport 53 -j ACCEPT<br>
-A OUTPUT -p udp --dport 53 -j ACCEPT<br>
# 当dns采用tcp协议时<br>
-A INPUT -p tcp --sport 53 -j ACCEPT<br>
-A OUTPUT -p tcp --dport 53 -j ACCEPT<br>
# 允许防火墙内部通信（很重要的一句）<br>
-A OUTPUT -p all -s 127.0.0.1 -j ACCEPT</p>
<p>#检查到达外部网络接口的封包状态.属于已有TCP连接的封包都允许通过 <br>
# 从WAN到LAN的封包仅放行回应封包(eth0为外网网口)<br>
-A INPUT -i eth0 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT</p>
<p>COMMIT</p>
<p> </p>
<p>-----------<br>
错误<br>
# iptables -A INPUT -s 192.168.8.121 -p icmp -j reject<br>
iptables v1.3.5: Couldn't load target `reject':/lib/iptables/libipt_reject.so: cannot open shared object file: No such file or directory</p>
<p>把reject大写（drop和accept大写即可）<br>
# iptables -A INPUT -s 192.168.8.121 -p icmp -j reject</p>
<p> </p>
<p> </p> <a href="http://hi.baidu.com/xiutuo/blog/item/a153ea994729d3016e068cce.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/xiutuo/blog/category/linux%2Diptables">linux-iptables</a>&nbsp;<a href="http://hi.baidu.com/xiutuo/blog/item/a153ea994729d3016e068cce.html#comment">查看评论</a>]]></description>
        <pubDate>2009-08-07  20:12</pubDate>
        <category><![CDATA[linux-iptables]]></category>
        <author><![CDATA[秀脱]]></author>
		<guid>http://hi.baidu.com/xiutuo/blog/item/a153ea994729d3016e068cce.html</guid>
</item>

<item>
        <title><![CDATA[linux下文件字符集转化实战篇]]></title>
        <link><![CDATA[http://hi.baidu.com/xiutuo/blog/item/e36fc52b60e1a8f3e7cd4003.html]]></link>
        <description><![CDATA[
		
		<p>+++++++++++++++++++++++++++++++++++<br>
秀脱linux实战笔记之文件字符集转化篇：<br>
&nbsp;&nbsp;  QQ: 6541657 <br>
EMAIL: <a href="mailto:xiutuo@gmail.com">xiutuo@gmail.com</a>&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br>
+++++++++++++++++++++++++++++++++++ <br>
------------------------------------------<br>
为什么转换编码，起因：分析应用程序日志，文件编码格式gb2312（含中文字符），<br>
通过linux shell脚本从日志中提取出需要的字段并生成有固定符号隔离的文本文件导入到mysql数据库，<br>
mysql建立的库字符集是utf8（特殊原因没有改成gb2312）,由于原始的日志文件是gb2312格式，<br>
通过shell生成的最终文件编码格式也是gb2312编码，所以才需要用到编码转换，<br>
mysql库字符集编码必须与导入的文本文件编码格式一致，才能顺利导入。</p>
<p>脚本<br>
# vi x<br>
#!/bin/sh<br>
ts=`(date +%Y%m%d)`<br>
#targetdir=/root/siji/<br>
#cd $targetdir<br>
cat alertlog | grep $ts | grep -a '级' &gt; c34log<br>
# 逐一取需要的字段，并用;号隔开<br>
cat c34log | awk '{print $1}' |  sed 's/.*$/&amp;\;/g'&gt;s1<br>
cat c34log | awk '{print $2}' |  sed 's/.*$/&amp;\;/g'&gt;s2<br>
cat c34log | awk '{print $3}' |  sed 's/.*$/&amp;\;/g'&gt;s3<br>
cat c34log | awk '{print $4}' |  sed 's/.*$/&amp;\;/g'&gt;s4<br>
cat c34log | awk '{print $5}' |  sed 's/.*$/&amp;\;/g'&gt;s5<br>
cat c34log | awk -F'(' '{print $2}' | awk -F')' '{print $1}' | sed 's/%//g' |  sed 's/.*$/&amp;\;/g' &gt;s6<br>
# 合成各个字段，生成最终文本文件<br>
paste s1 s2 s3 s4 s5 s6 &gt; all<br>
# 把含中文的文本文件转换成的utf8编码格式<br>
enca -L zh_cn -x utf8 all<br>
# 导入数据库<br>
/usr/local/mysql/bin/mysql -h 127.0.0.1 -u root -pYOUR_PASSWORD &lt;sql</p>
<p>sql文件内容（sql语句）<br>
# vi sql<br>
# 使用alertlog数据库<br>
use alertlog;<br>
# 导入生成的all文本文件，其中用;隔离各个字段，回车隔离每行<br>
load data local infile 'all' into table c3log  fields terminated by ';' lines terminated by '\n';</p>
<p># chmod 711 x</p>
<p><br>
一：字符编码的转换工具</p>
<p>1.多平台方法：<br>
iconv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  提供标准的程序和API来进行编码转换；<br>
convert_encoding.py&nbsp;&nbsp;&nbsp;  基于Python的文本文件转换工具；<br>
decodeh.py&nbsp;&nbsp;&nbsp;  提供算法和模块来谈测字符的编码；</p>
<p>2.Linux:<br>
recode&nbsp;&nbsp;&nbsp;  转换文件编码；<br>
Utrac&nbsp;&nbsp;&nbsp;  转换文件编码；<br>
cstocs&nbsp;&nbsp;&nbsp;  转换文件编码；<br>
convmv&nbsp;&nbsp;&nbsp;  转换文件名编码；<br>
enca&nbsp;&nbsp;&nbsp;  分析给定文件的编码；</p>
<p>3.Windows:<br>
cscvt&nbsp;&nbsp;&nbsp;  字符集转换工具；</p>
<p>二：linux下查看文件编码</p>
<p>1. 在vi中查看文件编码<br>
:set fileencoding</p>
<p>2. 用enca强大的查看编码工具</p>
<p># 查看文件编码<br>
# enca -L 现在文件的语言 -d 需查看编码的文件名<br>
如 enca -L zh_cn -d test_zh_cn.file</p>
<p>------------<br>
# enca -l language  查看支持的语言</p>
<p>三. linux转换文件编码</p>
<p>1.enca转化编码(强烈推荐enca工具)<br>
# enca -L 现在文件的语言 -x 需要转换编码  需要转换编码的文件<br>
如 enca -L zh_cn -x utf8 test_zh_cn.file</p>
<p>2. iconv转换，这个工具不好使！经常转化不成功<br>
iconv -f 文件原来编码 -t 需要转换的编码 需要转换的编码的文件 -o 转换编码后的文件<br>
或者<br>
iconv -f 文件原来编码 -t 需要转换的编码 需要转换的编码的文件 &gt; 转换编码后的文件</p>
<p> </p> <a href="http://hi.baidu.com/xiutuo/blog/item/e36fc52b60e1a8f3e7cd4003.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/xiutuo/blog/category/linux%2D%CF%B5%CD%B3%B9%DC%C0%ED">linux-系统管理</a>&nbsp;<a href="http://hi.baidu.com/xiutuo/blog/item/e36fc52b60e1a8f3e7cd4003.html#comment">查看评论</a>]]></description>
        <pubDate>2009-08-07  13:31</pubDate>
        <category><![CDATA[linux-系统管理]]></category>
        <author><![CDATA[秀脱]]></author>
		<guid>http://hi.baidu.com/xiutuo/blog/item/e36fc52b60e1a8f3e7cd4003.html</guid>
</item>

<item>
        <title><![CDATA[ldconfig动态链接库管理实战篇]]></title>
        <link><![CDATA[http://hi.baidu.com/xiutuo/blog/item/cd42b7ddbbf30de677c63807.html]]></link>
        <description><![CDATA[
		
		<p>+++++++++++++++++++++++++++++++++++++++++++++++<br>
秀脱linux实战笔记之ldconfig动态链接库管理篇：<br>
&nbsp;&nbsp;  QQ: 6541657 <br>
EMAIL: <a href="mailto:xiutuo@gmail.com">xiutuo@gmail.com</a>&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br>
+++++++++++++++++++++++++++++++++++++++++++++++<br>
------------------------------------------<br>
环境：<br>
centos5.1<br>
------------------------------------------</p>
<p> </p>
<p>把新的动态库给系统调用</p>
<p># vi /etc/ld.so.conf<br>
include ld.so.conf.d/*.conf<br>
# 增加BerkeleyDB的lib目录到该文件如<br>
/usr/local/BerkeleyDB.4.7/lib/</p>
<p>保存生效<br>
# ldconfig</p>
<p>查看是否生效<br>
# ldconfig -v | grep Berk<br>
/usr/local/BerkeleyDB.4.7/lib:</p>
<p>在这两个目录以外放lib，但是又不想在/etc/ld.so.conf中加东西（或者是没有权限加东西），<br>
可以通过export一个全局变量LD_LIBRARY_PATH，这样运行程序会自动这个目录中找library。<br>
一般来讲这只是一种临时的解决方案，在没有权限或临时需要的时候使用。</p>
<p>附录：<br>
------------------<br>
ldconfig命令行用法如下:<br>
ldconfig [-v|--verbose] [-n] [-N] [-X] [-f CONF] [-C CACHE] [-r ROOT] [-l] [-p|--print-cache]<br>
 [-c FORMAT] [--format=FORMAT] [-V] [-?|--help|--usage] path...<br>
ldconfig可用的选项说明如下:<br>
(1) -v或--verbose : 用此选项时,ldconfig将显示正在扫描的目录及搜索到的动态链接库,还有它所创建的连接的名字.<br>
(2) -n : 用此选项时,ldconfig仅扫描命令行指定的目录,不扫描默认目录(/lib,/usr/lib),也不扫描配置文件/etc/ld.so.conf所列的目录.<br>
(3) -N : 此选项指示ldconfig不重建缓存文件(/etc/ld.so.cache).若未用-X选项,ldconfig照常更新文件的连接.<br>
(4) -X : 此选项指示ldconfig不更新文件的连接.若未用-N选项,则缓存文件正常更新.<br>
(5) -f CONF : 此选项指定动态链接库的配置文件为CONF,系统默认为/etc/ld.so.conf.<br>
(6) -C CACHE : 此选项指定生成的缓存文件为CACHE,系统默认的是/etc/ld.so.cache,此文件存放已排好序的可共享的动态链接库的列表.<br>
(7)  -r ROOT : 此选项改变应用程序的根目录为ROOT(是调用chroot函数实现的).选择此项时,系统默认的配置文件 /etc/ld.so.conf,实际对应的为 ROOT/etc/ld.so.conf.如用-r /usr/zzz时,打开配置文件 /etc/ld.so.conf时,实际打开的是/usr/zzz/etc/ld.so.conf文件.用此选项,可以大大增加动态链接库管理的灵活性.<br>
(8) -l : 通常情况下,ldconfig搜索动态链接库时将自动建立动态链接库的连接.选择此项时,将进入专家模式,需要手工设置连接.一般用户不用此项.<br>
(9) -p或--print-cache : 此选项指示ldconfig打印出当前缓存文件所保存的所有共享库的名字.<br>
(10) -c FORMAT 或 --format=FORMAT : 此选项用于指定缓存文件所使用的格式,共有三种: ld(老格式),new(新格式)和compat(兼容格式,此为默认格式).<br>
(11) -V : 此选项打印出ldconfig的版本信息,而后退出.<br>
(12) -? 或 --help 或 --usage : 这三个选项作用相同,都是让ldconfig打印出其帮助信息,而后退出.</p> <a href="http://hi.baidu.com/xiutuo/blog/item/cd42b7ddbbf30de677c63807.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/xiutuo/blog/category/linux%2D%CF%B5%CD%B3%B9%DC%C0%ED">linux-系统管理</a>&nbsp;<a href="http://hi.baidu.com/xiutuo/blog/item/cd42b7ddbbf30de677c63807.html#comment">查看评论</a>]]></description>
        <pubDate>2009-08-07  13:26</pubDate>
        <category><![CDATA[linux-系统管理]]></category>
        <author><![CDATA[秀脱]]></author>
		<guid>http://hi.baidu.com/xiutuo/blog/item/cd42b7ddbbf30de677c63807.html</guid>
</item>

<item>
        <title><![CDATA[mysql快速批量导入文本数据实战篇]]></title>
        <link><![CDATA[http://hi.baidu.com/xiutuo/blog/item/6759eb38ccb0d2cbd4622505.html]]></link>
        <description><![CDATA[
		
		<p>++++++++++++++++++++++++++++++++++++++++++++++++++++++<br>
秀脱linux实战笔记之mysql快速批量导入文本数据实战篇：<br>
&nbsp;&nbsp;  QQ: 6541657 <br>
EMAIL: <a href="mailto:xiutuo@gmail.com">xiutuo@gmail.com</a>&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br>
---------------------------------------------<br>
环境：<br>
centos5.1<br>
mysql5.0.82：安装在/usr/local/mysql目录下<br>
windows下有一文本文件testlog.txt，数据格式是以tab分割，行之间用换行符分割。数据量有数千万条数据，需要导入mysql数据库中，<br>
测试用的数据库xiutuotestdb,表xiutuolog,该库和该表字符集编码都是utf8编码,使用连接用户root，密码123456</p>
<p>难点：mysql库时采用utf8编码，表也是utf8编码，导入报错，有乱码，把该文本文件转化成utf8编码后，导入成功。<br>
++++++++++++++++++++++++++++++++++++++++++++++++++++++</p>
<p>一.文件字符集转化工具enca，千万别用iconv去转（百分比转不成功）<br>
1.下载enca，下载的是enca-1.9-1.el4.src.rpm放在/home/xiutuo/software<br>
2.安装enca<br>
# cd /home/xiutuo/software<br>
# rpm -i enca-1.9-1.el4.src.rpm<br>
# cd /usr/src/redhat/SPECS<br>
# rpmbuild -bb enca.spec<br>
# cd /usr/src/redhat/RPMS/i386<br>
# rpm -ivh enca-1.9-1.i386.rpm<br>
3.转化文本文件编码,先把该文件上传到linux系统中/home/xiutuo/software目录下（上传方法自选）<br>
# cd /home/xiutuo/software<br>
# 转化编码,转化后的文件名跟转化前是一样的。<br>
# enca -L zh_cn -x utf8 testlog.txt<br>
# 查看编码，出现utf8字样就说明转化成功了<br>
# enca -L zh_cn -d testlog.txt</p>
<p><br>
2.批量导入文本数据的mysql命令:<br>
# /usr/local/mysql/bin/mysql -h localhost -uroot -p123456<br>
mysql&gt; use xiutuotestdb;<br>
mysql&gt; load data local infile &quot;/home/xiutuo/software/testlog.txt&quot; into table xiutuolog fields terminated by '\t' lines terminated by '\r\n';</p>
<p>命令说明：<br>
# mysql安装目录/bin/mysql -h localhost -uUSER -pUSER_PASSWORD<br>
Your MySQL connection id is 669<br>
Server version: 5.0.82-log MySQL Community Server (GPL)<br>
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.<br>
mysql&gt; load data local infile &quot;要导入的文本文件&quot; into table 表名 fields terminated by '\t' lines terminated by '\r\n';<br>
其中fields terminated by 表示字段分隔符<br>
lines terminated by 表示行分隔符（就是行与行之间的分隔符）</p>
<p> </p> <a href="http://hi.baidu.com/xiutuo/blog/item/6759eb38ccb0d2cbd4622505.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/xiutuo/blog/category/linux%2Dlamp">linux-lamp</a>&nbsp;<a href="http://hi.baidu.com/xiutuo/blog/item/6759eb38ccb0d2cbd4622505.html#comment">查看评论</a>]]></description>
        <pubDate>2009-08-07  13:22</pubDate>
        <category><![CDATA[linux-lamp]]></category>
        <author><![CDATA[秀脱]]></author>
		<guid>http://hi.baidu.com/xiutuo/blog/item/6759eb38ccb0d2cbd4622505.html</guid>
</item>

<item>
        <title><![CDATA[vpn之openvpn实战笔记]]></title>
        <link><![CDATA[http://hi.baidu.com/xiutuo/blog/item/9f5d3259b1b8f9232934f072.html]]></link>
        <description><![CDATA[
		
		<p>++++++++++++++++++++++++++++++++++++++++++++<br>
秀脱之vpn之openvpn实战笔记<br>
QQ:&nbsp;&nbsp;&nbsp;  6541657<br>
Email: <a href="mailto:xiutuo@gmail.com">xiutuo@gmail.com</a><br>
---------------------------<br>
环境：<br>
centos5<br>
openvpn服务器：openvpn-2.0.9<br>
openvpn客户端:<br>
  windows--openvpn-2.0.9-gui-1.0.3-install.exe<br>
  linux----openvpn-2.0.9<br>
++++++++++++++++++++++++++++++++++++++++++++<br>
一.安装openvpn依赖的软件包<br>
openssl<br>
openssl-devel <br>
lzo<br>
lzo-devel <br>
pam <br>
pam-devel</p>
<p>a.检测以上软件包是否安装<br>
# rpm -qa | grep openssl<br>
openssl-devel-0.9.8b-8.3.el5_0.2<br>
openssl-0.9.8b-8.3.el5_0.2</p>
<p># rpm -qa | grep lzo</p>
<p># rpm -qa | grep pam<br>
pam-0.99.6.2-3.26.el5<br>
pam-devel-0.99.6.2-3.26.el5</p>
<p>二.安装lzo<br>
下载lzo-2.03.tar.gz到/home/xiutuo/software<br>
# cd /home/xiutuo/software<br>
# tar -zxvf lzo-2.03.tar.gz<br>
# cd  lzo-2.03<br>
# ./configure<br>
# make<br>
# make install</p>
<p><br>
三.安装openvpn<br>
下载openvpn-2.0.9.tar.gz到/home/xiutuo/software<br>
# cd /home/xiutuo/software<br>
# tar -zxvf openvpn-2.0.9.tar.gz<br>
# cd  openvpn-2.0.9<br>
# ./configure<br>
# make<br>
# make install</p>
<p>四.配置openvpn，官方推荐使用routed VPN方式。这里以配置routed vpn为列<br>
---------------------<br>
Determining whether to use a routed or bridged VPN<br>
See FAQ for an overview of Routing vs. Ethernet Bridging. <br>
See also the OpenVPN Ethernet Bridging page for more notes and details on bridging.</p>
<p>Overall, routing is probably a better choice for most people, <br>
as it is more efficient and easier to set up (as far as the OpenVPN configuration itself) <br>
than bridging. Routing also provides a greater ability <br>
to selectively control access rights on a client-specific basis.</p>
<p>I would recommend using routing unless you need a specific feature which requires bridging, <br>
such as:</p>
<p>the VPN needs to be able to handle non-IP protocols such as IPX, <br>
you are running applications over the VPN which rely on network broadcasts (such as LAN games),<br>
or you would like to allow browsing of Windows file shares across the VPN without <br>
setting up a Samba or WINS server. <br>
-------------------------</p>
<p>1.生成 pki (public key infrastructure)<br>
a.编辑/home/xiutuo/openvpn-2.0.9/easy-rsa/vars,设置这些参数<br>
KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, KEY_EMAIL 不能有空格 <br>
# cd /home/xiutuo/openvpn-2.0.9/easy-rsa/<br>
# vi vars 内容如下<br>
export D=`pwd`<br>
export KEY_CONFIG=$D/openssl.cnf<br>
export KEY_DIR=$D/keys<br>
echo NOTE: when you run ./clean-all, I will be doing a rm -rf on $KEY_DIR<br>
export KEY_SIZE=1024<br>
export KEY_COUNTRY=CN<br>
export KEY_PROVINCE=GD<br>
export KEY_CITY=GZ<br>
export KEY_ORG=&quot;OpenVPN-XT&quot;<br>
export KEY_EMAIL=&quot;<a href="mailto:xiutuo@gmail.com">xiutuo@gmail.com</a>&quot;<br>
# . ./vars<br>
# ./clean-all<br>
# ./build-ca</p>
<p>2.在服务端为openvpn服务器生成certificate &amp; key<br>
# cd /home/xiutuo/openvpn-2.0.9/easy-rsa/<br>
# ./build-key-server server</p>
<p>3.在服务端为openvpn客户端生成certificates &amp; keys（假设有n个客户端）<br>
# cd /home/xiutuo/openvpn-2.0.9/easy-rsa/<br>
# ./build-key client1<br>
# ./build-key client2<br>
# ./build-key client3<br>
  ……<br>
# ./build-key clientN</p>
<p>4.在服务端为openvpn服务器生成dh (Diffie Hellman),dh必须生成。<br>
Diffie Hellman parameters must be generated for the OpenVPN server. <br>
# cd /home/xiutuo/openvpn-2.0.9/easy-rsa/<br>
# ./build-dh</p>
<p>5. 为openvpn服务器生成配置文件<br>
a.建立配置文件目录，openvpn程序自动会在/etc/openvpn/搜索他的配置文件<br>
# mkdir -p /etc/openvpn/<br>
# 把以下文件复制到/etc/openvpn/目录下<br>
ca.crt<br>
ca.key<br>
dh1024.pem<br>
serial<br>
server.crt<br>
server.csr<br>
server.key<br>
把/home/xiutuo/openvpn-2.0.9/sample-config-files/server.conf复制到/etc/openvpn/目录下<br>
b.配置指定客户端<br>
建立客户端配置目录<br>
# mkdir -p /etc/openvpn/ccd (指定vpn客户端ip时候需要建立该目录)</p>
<p>五.配置openvpn开机自动运行<br>
# cp /home/xiutuo/openvpn-2.0.9/sample-scripts/openvpn.init /etc/init.d/openvpn<br>
# cd  /etc/init.d/<br>
# chmod 755 openvpn<br>
# chkconfig --add openvpn<br>
# chkconfig --level openvpn 2345 on</p>
<p>六.启动/停止openvpn<br>
# service openvpn start<br>
# service openvpn stop</p>
<p><br>
七.安装openvpn客户端<br>
1.linux下<br>
  a.安装：客户端安装跟openvpn服务器安装方式一样。<br>
  只是把vpnserver端的openvpn-2.0.9/easy-rsa/keys/客户端对应的crt、csr、key和vca.crt 拷贝到<br>
  /etc/openvpn/下<br>
  <br>
  把/home/xiutuo/openvpn-2.0.9/sample-config-files/client.conf<br>
  修改相关内容为：其中N代表1，2，3……n客户端的数值中的其中一个数，即其中一个openvpn的客户端啦<br>
  remote my-server-1 1194<br>
# my-server-1修改成vpn服务器的ip(公网)<br>
  cert clientN.crt<br>
  key clientN.key<br>
  b.启动 <br>
  # openvpn /etc/openvpn/client.conf<br>
2.windows下，<br>
  a.安装：下载openvpn-2.0.9-gui-1.0.3-install.exe，并安装。<br>
  只是要把vpnserver端的openvpn-2.0.9/easy-rsa/keys/客户端对应的crt、csr、key和vca.crt 拷贝到<br>
  windows_openvpn_setupdir/config/下<br>
其中N代表1，2，3……n客户端的数值中的其中一个数，即其中一个openvpn的客户端啦<br>
 ca.crt  <br>
 clientN.crt<br>
 clientN.csr<br>
 clientN.key<br>
其中服务器端的ca.crt必须要有<br>
cp windows_openvpn_setupdir/sample-config/client.ovpn windows_openvpn_setupdir/config/<br>
修改相关内容为：其中N代表1，2，3……n客户端的数值中的其中一个数，即其中一个openvpn的客户端啦<br>
  remote my-server-1 1194<br>
# my-server-1修改成vpn服务器的ip(公网)<br>
  cert clientN.crt<br>
  key clientN.key<br>
 b.启动，打开openvpn的客户端，点击connect。</p>
<p><br>
八：让客户端访问server服务端的局域网<br>
1. 打开ip转发<br>
开启ip转发<br>
在centos系统中设置：<br>
# echo 1 &gt; /proc/sys/net/ipv4/ip_forward  <br>
或者 <br>
-----------------------<br>
# vi /etc/sysctl ，<br>
把 net.ipv4.ip_forward = 0 改成net.ipv4.ip_forward = 1<br>
使设置生效<br>
# sysctl -p<br>
-----------------------</p>
<p>2.打开tun和tap转发<br>
# Allow TUN interface connections to OpenVPN server<br>
iptables -A INPUT -i tun+ -j ACCEPT <br>
# Allow TUN interface connections to be forwarded through other interfaces<br>
iptables -A FORWARD -i tun+ -j ACCEPT <br>
# Allow TAP interface connections to OpenVPN server<br>
iptables -A INPUT -i tap+ -j ACCEPT <br>
# Allow TAP interface connections to be forwarded through other interfaces<br>
iptables -A FORWARD -i tap+ -j ACCEPT<br>
# service iptables save<br>
# service iptables restart</p>
<p>3. vi /etc/openvpn/server.conf<br>
push &quot;route vpn服务器端局域网段ip 255.255.255.0&quot;</p>
<p>4.其他更详细的访问方式，参考<br>
<a href="http://openvpn.net/index.php/open-source/documentation/howto.html#examples">http://openvpn.net/index.php/open-source/documentation/howto.html#examples</a></p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>[root@xt openvpn-2.0.9]# ./configure -h<br>
`configure' configures OpenVPN 2.0.9 to adapt to many kinds of systems.</p>
<p>Usage: ./configure [OPTION]... [VAR=VALUE]...</p>
<p>To assign environment variables (e.g., CC, CFLAGS...), specify them as<br>
VAR=VALUE.  See below for descriptions of some of the useful variables.</p>
<p>Defaults for the options are specified in brackets.</p>
<p>Configuration:<br>
  -h, --help&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  display this help and exit<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  --help=short&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  display options specific to this package<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  --help=recursive&nbsp;&nbsp;&nbsp;  display the short help of all the included packages<br>
  -V, --version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  display version information and exit<br>
  -q, --quiet, --silent&nbsp;&nbsp;  do not print `checking...' messages<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  --cache-file=FILE&nbsp;&nbsp;  cache test results in FILE [disabled]<br>
  -C, --config-cache&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  alias for `--cache-file=config.cache'<br>
  -n, --no-create&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  do not create output files<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  --srcdir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  find the sources in DIR [configure dir or `..']</p>
<p>Installation directories:<br>
  --prefix=PREFIX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  install architecture-independent files in PREFIX<br>
&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;  [/usr/local]<br>
  --exec-prefix=EPREFIX&nbsp;&nbsp;  install architecture-dependent files in EPREFIX<br>
&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;  [PREFIX]</p>
<p>By default, `make install' will install all the files in<br>
`/usr/local/bin', `/usr/local/lib' etc.  You can specify<br>
an installation prefix other than `/usr/local' using `--prefix',<br>
for instance `--prefix=$HOME'.</p>
<p>For better control, use the options below.</p>
<p>Fine tuning of the installation directories:<br>
  --bindir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  user executables [EPREFIX/bin]<br>
  --sbindir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  system admin executables [EPREFIX/sbin]<br>
  --libexecdir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  program executables [EPREFIX/libexec]<br>
  --datadir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  read-only architecture-independent data [PREFIX/share]<br>
  --sysconfdir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  read-only single-machine data [PREFIX/etc]<br>
  --sharedstatedir=DIR&nbsp;&nbsp;  modifiable architecture-independent data [PREFIX/com]<br>
  --localstatedir=DIR&nbsp;&nbsp;&nbsp;  modifiable single-machine data [PREFIX/var]<br>
  --libdir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  object code libraries [EPREFIX/lib]<br>
  --includedir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  C header files [PREFIX/include]<br>
  --oldincludedir=DIR&nbsp;&nbsp;&nbsp;  C header files for non-gcc [/usr/include]<br>
  --infodir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  info documentation [PREFIX/info]<br>
  --mandir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  man documentation [PREFIX/man]</p>
<p>Program names:<br>
  --program-prefix=PREFIX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  prepend PREFIX to installed program names<br>
  --program-suffix=SUFFIX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  append SUFFIX to installed program names<br>
  --program-transform-name=PROGRAM&nbsp;&nbsp;  run sed PROGRAM on installed program names</p>
<p>System types:<br>
  --build=BUILD&nbsp;&nbsp;&nbsp;&nbsp;  configure for building on BUILD [guessed]<br>
  --host=HOST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  cross-compile to build programs to run on HOST [BUILD]<br>
  --target=TARGET&nbsp;&nbsp;  configure for building compilers for TARGET [HOST]</p>
<p>Optional Features:<br>
  --disable-FEATURE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  do not include FEATURE (same as --enable-FEATURE=no)<br>
  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]<br>
  --disable-lzo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Disable LZO compression support<br>
  --disable-crypto&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Disable OpenSSL crypto support<br>
  --disable-ssl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Disable OpenSSL SSL support for TLS-based key exchange<br>
  --disable-multi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Disable client/server support (--mode server + client mode)<br>
  --disable-server&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Disable server support only (but retain client support)<br>
  --disable-plugins&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Disable plug-in support<br>
  --disable-management&nbsp;&nbsp;&nbsp;  Disable management server support<br>
  --disable-socks&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Disable Socks support<br>
  --disable-http&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Disable HTTP proxy support<br>
  --disable-fragment&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Disable internal fragmentation support (--fragment)<br>
  --disable-debug&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Disable debugging support (disable gremlin and verb 7+ messages)<br>
  --enable-small&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Enable smaller executable size (disable OCC, usage message, and verb 4 parm list)<br>
  --enable-pthread&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Enable pthread support (Experimental for OpenVPN 2.0)<br>
  --enable-password-save  Allow --askpass and --auth-user-pass passwords to be read from a file<br>
  --enable-iproute2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Enable support for iproute2<br>
  --enable-strict&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Enable strict compiler warnings (debugging option)<br>
  --enable-pedantic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Enable pedantic compiler warnings, will not generate a working executable (debugging option)<br>
  --enable-profiling&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Enable profiling (debugging option)<br>
  --enable-strict-options Enable strict options check between peers (debugging option)<br>
  --disable-dependency-tracking  speeds up one-time build<br>
  --enable-dependency-tracking&nbsp;&nbsp;  do not reject slow dependency extractors</p>
<p>Optional Packages:<br>
  --with-PACKAGE[=ARG]&nbsp;&nbsp;&nbsp;  use PACKAGE [ARG=yes]<br>
  --without-PACKAGE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  do not use PACKAGE (same as --with-PACKAGE=no)<br>
  --with-ssl-headers=DIR  Crypto/SSL Include files location<br>
  --with-ssl-lib=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Crypto/SSL Library location<br>
  --with-lzo-headers=DIR  LZO Include files location<br>
  --with-lzo-lib=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  LZO Library location<br>
  --with-ifconfig-path=PATH&nbsp;&nbsp;  Path to ifconfig tool<br>
  --with-iproute-path=PATH&nbsp;&nbsp;&nbsp;  Path to iproute tool<br>
  --with-route-path=PATH  Path to route tool<br>
  --with-mem-check=TYPE  Build with debug memory checking, TYPE = dmalloc or valgrind</p>
<p>Some influential environment variables:<br>
  CC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  C compiler command<br>
  CFLAGS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  C compiler flags<br>
  LDFLAGS&nbsp;&nbsp;&nbsp;&nbsp;  linker flags, e.g. -L&lt;lib dir&gt; if you have libraries in a<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  nonstandard directory &lt;lib dir&gt;<br>
  CPPFLAGS&nbsp;&nbsp;&nbsp;  C/C++ preprocessor flags, e.g. -I&lt;include dir&gt; if you have<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  headers in a nonstandard directory &lt;include dir&gt;<br>
  CPP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  C preprocessor</p>
<p>Use these variables to override the choices made by `configure' or to help<br>
it to find libraries and programs with nonstandard names/locations.</p>
<p>Report bugs to &lt;<a href="mailto:openvpn-users@lists.sourceforge.net">openvpn-users@lists.sourceforge.net</a>&gt;.</p> <a href="http://hi.baidu.com/xiutuo/blog/item/9f5d3259b1b8f9232934f072.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/xiutuo/blog/category/linux%2Dvpn">linux-vpn</a>&nbsp;<a href="http://hi.baidu.com/xiutuo/blog/item/9f5d3259b1b8f9232934f072.html#comment">查看评论</a>]]></description>
        <pubDate>2009-06-30  09:39</pubDate>
        <category><![CDATA[linux-vpn]]></category>
        <author><![CDATA[秀脱]]></author>
		<guid>http://hi.baidu.com/xiutuo/blog/item/9f5d3259b1b8f9232934f072.html</guid>
</item>


</channel>
</rss>