关于 六月, 2008 的文章

在Linux平台上安装基于Postfix、Courier-imap、Extmail的邮件系统 V 0.2.6

原文地址:http://www.chinaunix.net/jh/14/640481.html

在Linux平台上安装基于Postfix、Courier-imap、Extmail的邮件系统 V 0.2.6

很久之前就计划写一个Postfix在Linux平台上面的安装文档,把自己安装Postfix的过程总结一下,但由于工作的关系直到现在才动手。和个人的习惯有关,在安装过程中我使用了很多源代码,这对一个新手可能有些难度,但是我认为在Linux下面如何从源代码安装软件应当是每个系统管理都必须掌握的知识。我准备使用CHOST="i686-pc-linux-gnu" CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer" CXXFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer"作为gcc 3.4.4在i686 CPU上面的优化参数,你可以根据自己的实际情况进行修改。这个版本修正了上个版本中出现的一些错误,在此对hzqbbc对我的帮助致以最诚挚的谢意。

*************************************************************************************

1、安装操作系统

首先请准备好CentOS 4.2安装光盘的第一张和第二张,在“Installation Type"中选择“Custom”。

在“Disk Partitioning Setup”时选择“Manually partition with Disk Druid”,因为我们要将邮件保存在“/home/mail”目录中,所以请为其保留足够的硬盘空间。

在“Firewall Configuration”中选择“No firewall”,这样便于调试,你可以在邮件系统工作正常之后根据实际情况设置Firewall策略。

在“Package Group Selection”中选择“Text-based Internet”和“Development Tools”两项。

关于语言的选项你可以选择默认值,这样总的安装文件大小为1GB左右。

安装完成后可以设置Crontab,让邮件服务器每天1点和网络中的时间服务器自动对时:
crontab -e
0 1 * * * /usr/bin/rdate -s time-b.timefreq.bldrdoc.gov

更新系统内核、openssl和zlib。
从下面的URL下载系统内核的最新版本,并安装适合你所用CPU的版本:http://mirror.centos.org/centos/4/updates/i386/RPMS/,你可以使用“rpm -aq |grep kernel”命令查找已经安装的内核rpm包。
从下面的URL下载zlib 1.2.3的源代码:http://www.zlib.net

安装zlib,zlib将被安装在“/usr/local”目录下:
tar jvxf zlib-1.2.3.tar.bz2
cd zlib-1.2.3
CHOST="i686-pc-linux-gnu" CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer" CXXFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer" \
./configure --prefix=/usr --shared
make
make test
make install
ln -s /usr/lib/libz.so.1 /usr/lib/libz.so.0

从下面的URL下载openssl 0.9.7i的源代码:http://www.openssl.org
卸载系统自带的openssl 0.9.7a:
rpm -e --nodeps openssl-devel
rpm -e --nodeps openssl
安装openssl,openssl将被安装在“/usr”目录下:
tar zvxf openssl-0.9.7i.tar.gz
cd openssl-0.9.7i
./config --prefix=/usr --openssldir=/usr/share/ssl -fPIC threads shared
make
make test
make install
为了使系统自带的openssh、nslookup等依赖于openssl的程序能够正常工作,建立libcrypto.so.0.9.7和libssl.so.0.9.7到/lib目录的链接:
ln -s /usr/lib/libcrypto.so.0.9.7 /lib/libcrypto.so.4
ln -s /usr/lib/libssl.so.0.9.7 /lib/libssl.so.4

2、安装MySQL服务器
你可以根据服务器的CPU类型,下载适合你所用CPU和操作系统的MySQL发行包。
从下面的URL下载MySQL 4.1.16以tar.gz形式发布的二进制发行包:http://www.mysql.com

增加MySQL运行所需要的用户和组:
groupadd mysql
useradd mysql -g mysql -c "MySQL user" -d /nonexistent -s /sbin/nologin
安装MySQL软件,MySQL将被安装到“/usr/local/mysql”目录下:
tar zvxf mysql-max-4.1.16-pc-linux-gnu-i686-glibc23.tar.gz
mv mysql-max-4.1.16-pc-linux-gnu-i686-glibc23 /usr/local/mysql
cd /usr/local/mysql
scripts/mysql_install_db --user=mysql
chown -R root .
chown -R mysql data
chgrp -R mysql .
cp support-files/my-medium.cnf /etc/my.cnf
修改“/etc/my.cnf”文件,取消“skip-networking”前面的注释,这样的话MySQL将不监听TCP/IP端口,可以避免一些安全问题。修改client和mysqld部分的“socket = /tmp/mysql.sock”为“socket = /var/lib/mysql/mysql.sock”
注:以tar.gz形式发布的MySQL默认的socket位置在“/tmp/mysql.sock”,而以rpm形式发布的MySQL默认的socket位置在“/var/lib/mysql/mysql.sock”,你可以通过my.cnf文件设置MySQL服务器的socket位置。

配置MySQL服务开机自动运行:
cp support-files/mysql.server /etc/rc.d/init.d/mysql
chmod +x /etc/rc.d/init.d/mysql
chkconfig --add mysql

设置MySQL的默认字符集为GB2312,修改/etc/rc.d/init.d/mysql文件,将第199行
从“$bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file >/dev/null 2>&1 &”
修改为“$bindir/mysqld_safe --datadir=$datadir --default-character-set=gb2312 --pid-file=$pid_file >/dev/null 2>&1 &”
修改“/etc/profile”文件,将“/usr/local/mysql/bin”加到PATH变量中,退出重新登陆系统。
注:①为了安全请立即修改MySQL管理员的密码。
②以tar.gz形式发布的MySQL默认的socket位置在“/tmp/mysql.sock”,而以rpm形式发布的MySQL默认的socket位置在“/var/lib/mysql/mysql.sock”,你可以通过my.cnf文件设置MySQL服务器的socket位置。

使用rpm方式安装mysql的头文件和共享库:
rpm -ivh --nodeps MySQL-shared-standard-4.1.16-0.rhel4.i386.rpm
rpm -ivh MySQL-devel-standard-4.1.16-0.rhel4.i386.rpm

3、安装Web服务器
从下面的URL下载Apache 2.0.55的源代码:http://www.apache.org/dist/httpd/
增加Apache运行所需的用户和组:
groupadd httpd
useradd httpd -g httpd -c "Apache user" -d /nonexistent -s /sbin/nologin

安装Apache软件,Apache将被安装在“/usr/local/httpd”目录下:
tar jvxf httpd-2.0.55.tar.bz2
cd httpd-2.0.55
./configure --prefix=/usr/local/httpd --enable-so --enable-ssl --with-mpm=worker --enable-rewrite --enable-suexec --with-suexec-caller=httpd \
CHOST="i686-pc-linux-gnu" CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer" CXXFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer"
make
make install

修改apache的配置文件(/usr/local/httpd/conf/httpd.conf),配置apache的默认语言、运行用户等参数:
DefaultLanguage zh_CN
User httpd
Group httpd
<IfModule worker.c>
StartServers        10
MaxClients          1024
MinSpareThreads     100
MaxSpareThreads     800
ThreadsPerChild     64
MaxRequestsPerChild 0
</IfModule>
在“/etc/rc.local”文件中增加“/usr/local/httpd/bin/apachectl start”,设置Apache开机自动运行。

4、安装PHP
从下面的URL下载PHP 4.4.1的源代码:http://www.php.net/downloads.php
安装PHP,PHP将被安装在“/usr/local/php”目录下,PHP的配置文件(php.ini)放在“/usr/local/php/etc”目录中:
tar jvxf php-4.4.1.tar.bz2
cd php-4.4.1
CHOST="i686-pc-linux-gnu" CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer" CXXFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer" \
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/httpd/bin/apxs --enable-track-vars --with-config-file-path=/usr/local/php/etc \
--with-mysql=/usr --enable-force-cgi-redirect --enable-ftp --with-openssl --with-gettext --with-zlib
make
make install
cp php.ini-dist /usr/local/php/etc/php.ini
修改Apache的配置,增加对PHP的支持:
增加“AddType application/x-httpd-php .php .phtml”
修改“DirectoryIndex index.html index.html.var”为“DirectoryIndex index.html index.htm index.php index.cgi”
验证PHP是否安装成功:
echo '<? phpinfo(); ?>' >/usr/local/httpd/htdocs/info.php
重新启动Apache,在浏览器的地址栏中输入“http://hostname/info.php”,你应当可以看到关于PHP的详细信息,确认在MySQL章节中的“Client API version”版本是4.1.16。
注:如果你准备在这个服务器上面跑PHP的网站、论坛、blog等负载比较大的程序,你可以安装ZendOptimize、eaccelerator等PHP加速程序。

5、安装Postfix
从下面的URL下载Postfix 2.2.5的源代码:http://www.postfix.org
从下面的URL下载Postfix 2.2.5的VDA补丁程序:http://web.onda.com.br/nadal/
chkconfig --level 2345 sendmail off
增加Postfix运行所需要的用户和组,并建立“/home/mail”目录作为存储邮件的地方:
groupadd postfix
groupadd postdrop
useradd postfix -g postfix -c "Postfix user" -d /nonexistent -s /sbin/nologin
mkdir /home/mail
chown postfix:postfix /home/mail

安装Postfix:
gzip -d postfix-2.2.5-vda.patch.gz
tar zvxf postfix-2.2.5.tar.gz
cd postfix-2.2.5
patch -p1 < ../postfix-2.2.5-vda.patch
make -f Makefile.init makefiles \ OPT='-march=pentium4 -O2 -pipe -fomit-frame-pointer' \
'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -I/usr/include/sasl -DUSE_TLS' \
'AUXLIBS=-L/usr/lib -lmysqlclient -lz -lm -L/usr/local/lib -lsasl2 -lssl -lcrypto'
make
make install
注:“make install”命令后的所有问题都直接敲回车键即可。
mv /etc/aliases /etc/aliases.old
ln -s /etc/postfix/aliases /etc/aliases
echo 'root: admin@example.com'>>/etc/postfix/aliases
/usr/bin/newaliases
注:因为Postfix不允许直接发邮件给root用户,所以你需要为root用户建立一个别名。

建立smtpd用户认证的配置文件:
vi /usr/lib/sasl2/smtpd.conf
pwcheck_method: authdaemond
log_level: 3
mech_list: plain login
authdaemond_path:/var/spool/authdaemon/socket
使用postconf -n简化main.cf,这样的好处是main.cf比较短小,不容易造成同一个配置出现两次的问题:
cd /etc/postfix
postconf -n > main2.cf
mv main.cf main.cf.old
mv main2.cf main.cf
修改Postfix的配置文件,#号之后是说明文字:
vi /etc/postfix/main.cf
myhostname = mail.example.com            # mail.example.com是安装Postfix软件的主机名
mydomain = example.com                   # example.com是安装Postfix软件的主机名中的域名部分
myorigin = $mydomain
mydestination =
alias_maps = hash:/etc/aliases
home_mailbox = Maildir/                  # 使用Maildir作为邮件的存储格式
mailbox_transport = /usr/bin/procmail
fallback_transport = /usr/bin/procmail

# Add following line in file's finality
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_base = /home/mail
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 102400000
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 502
virtual_uid_maps = static:502
virtual_gid_maps = static:502
virtual_transport = virtual

# Additional for quota support
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.
virtual_overquota_bounce = yes
virtual_trash_count=yes
virtual_trash_name=.Trash

broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unauth_destination,
reject_unauth_pipelining,
reject_invalid_hostname,
reject_rbl_client opm.blitzed.org,
reject_rbl_client list.dsbl.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client sbl-xbl.spamhaus.org
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
注:①“virtual_gid_maps”和“virtual_uid_maps”是postfix用户的gid和uid,“virtual_minimum_uid”应当≤“virtual_uid_maps”,“virtual_mailbox_limit”是每个邮箱的大小。
②opm.blitzed.org、list.dsbl.org、bl.spamcop.net、sbl-xbl.spamhaus.org是经常使用的几个反垃圾邮件列表,如果你使用上面的设置可能无法收到sina、sohu、163等几个国内主要ISP的邮件。你也可以使用中国反垃圾邮件联盟的反垃圾邮件列表,这样你就能收到国你几个主要ISP的邮件,同时一些垃圾邮件也可能光临你的邮件服务器^_^。
③Postfix使用MySQL存储用户信息的配置文件已经包含在extman的发行包中,等安装extman的时候copy到/etc/postfix目录下即可。
设置Postfix开机自动运行,在/etc/rc.local中增加“/usr/sbin/postfix start&”。
注:①系统已经打开了Postfix的TLS支持,如果你需要这项功能可以参考Postfix发行包中的TLS_README文档进行配置。
②你可以使用一个叫pflogsumm.pl的perl脚本对postfix的日志进行分析,详细的情况见:http://jimsun.linxnet.com/postfix_contrib.html

6、安装Courier authentication library
从下面的URL下载Courier authlib 0.58的源代码:http://www.courier-mta.org/?download.php
安装Courier authentication library,Courier authentication library将被安装在“/usr/local/courier-authlib”目录:
tar jvxf courier-authlib-0.58.tar.bz2
cd courier-authlib-0.58
./configure --prefix=/usr/local/courier-authlib --without-authpam --without-authldap \
--without-authpwd --without-authshadow --without-authvchkpw --without-authpgsql --with-authdaemonvar=/var/spool/authdaemon \
--with-authmysql --with-mysql-libs=/usr/lib --with-mysql-includes=/usr/include/mysql --with-redhat \
--with-authmysqlrc=/usr/local/courier-authlib/etc/authmysqlrc --with-authdaemonrc=/usr/local/courier-authlib/etc/authdaemonrc \
CHOST="i686-pc-linux-gnu" CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer" CXXFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer"
make
make install
chmod 755 /var/spool/authdaemon
配置Courier authentication library:
cp /usr/local/courier-authlib/etc/authdaemonrc.dist /usr/local/courier-authlib/etc/authdaemonrc
vi /usr/local/courier-authlib/etc/authdaemonrc
authmodulelist="authmysql"
authmodulelistorig="authmysql"
daemons=10
vi /usr/local/courier-authlib/etc/authmysqlrc
MYSQL_SERVER            localhost
MYSQL_USERNAME          extmail
MYSQL_PASSWORD          extmail
MYSQL_SOCKET            /var/lib/mysql/mysql.sock
MYSQL_DATABASE          extmail
MYSQL_USER_TABLE        mailbox
MYSQL_CRYPT_PWFIELD     password
MYSQL_UID_FIELD         '502'
MYSQL_GID_FIELD         '502'
MYSQL_LOGIN_FIELD       username
MYSQL_HOME_FIELD        concat('/home/mail/',homedir)
MYSQL_MAILDIR_FIELD     concat('/home/mail/',maildir)
MYSQL_NAME_FIELD        name
注:①配置文件中的“MYSQL_USERNAME”和“MYSQL_PASSWORD”是Courier authentication library访问MySQL的用户名和密码,你可以使用与Postfix访问MySQL相同的用户。
②“MYSQL_UID_FIELD”和“MYSQL_GID_FIELD”是postfix用户的gid和uid。
设置Courier authentication library开机自动运行,在/etc/rc.local中增加“/usr/local/courier-authlib/sbin/authdaemond start”。
增加“/usr/local/courier-authlib/lib/courier-authlib”到你的“/etc/ld.so.conf”,并执行ldconfig命令。

7、安装Courier-IMAP
从下面的URL下载Courier-IMAP 4.0.6的源代码:http://www.courier-mta.org/?download.php
增加Courier-IMAP运行所需的用户和组:
groupadd vmail
useradd vmail -g vmail -c "Courier imap user" -d /nonexistent -s /sbin/nologin

安装Courier-IMAP,Courier-IMAP将被安装在“/usr/local/courier-imap”目录:
tar jvxf courier-imap-4.0.6.20051004.tar.bz2
cd courier-imap-4.0.6.20051004
./configure --prefix=/usr/local/courier-imap --with-trashquota --without-ipv6 --with-redhat \
--enable-unicode=utf-8,iso-8859-1,gb2312,big5 --disable-root-check \
CPPFLAGS='-I/usr/include/openssl -I/usr/local/courier-authlib/include' \
LDFLAGS='-L/usr/local/courier-authlib/lib/courier-authlib -L/usr/lib' \
COURIERAUTHCONFIG='/usr/local/courier-authlib/bin/courierauthconfig' \
CHOST="i686-pc-linux-gnu" CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer" CXXFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer"
make
make install
make install-configure

配置Courier-IMAP,为用户提供pop3服务:
vi /usr/local/courier-imap/etc/pop3d
POP3DSTART=yes

设置Courier-IMAP开机自动运行:
cp courier-imap.sysvinit /etc/rc.d/init.d/imap
chmod +x /etc/rc.d/init.d/imap
chkconfig --add imap
注:如果你想为用户提供IMAP服务,可以在“/usr/local/courier-imap/etc/imapd”文件中设置“IMAPDSTART=yes”。

8、安装Clam AntiVirus
从下面的URL下载clamav-0.87.1的源代码:http://www.clamav.net/stable.php
增加Clam AntiVirus运行所需的用户和组:
groupadd clamav
useradd clamav -g clamav -c "Clam AntiVirus" -d /dev/null

安装Clam AntiVirus:
tar zvxf clamav-0.87.1.tar.gz
cd clamav-0.87.1
./configure --prefix=/usr/local/clamav --with-dbdir=/usr/local/clamav/share \
CHOST="i686-pc-linux-gnu" CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer" CXXFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer"
make
make check
make install

配置Clam AntiVirus:
vi /usr/local/clamav/etc/clamd.conf
# Example
LogFile /var/log/clamd.log
DatabaseDirectory /usr/local/clamav/share
LocalSocket /var/run/clamav/clamd

vi /usr/local/clamav/etc/freshclam.conf
# Example
DatabaseDirectory /usr/local/clamav/share
UpdateLogFile /var/log/freshclam.log
注:你需要注释clamd.conf和freshclam.conf文件开头部分的“Example”。
建立clamd和freshclam的log文件,并让它们属于clamav用户:
touch /var/log/clamd.log /var/log/freshclam.log
chown clamav:clamav /var/log/clamd.log
chown clamav:clamav /var/log/freshclam.log
mkdir -p /var/run/clamav
配置crontab,让Clam AntiVirus每小时检测一次新的病毒库:
crontab -e
13 * * * * /usr/local/clamav/bin/freshclam
修改“/etc/profile”文件,将“/usr/local/clamav/bin”加到PATH变量中。
增加“/usr/local/clamav/lib”到你的“/etc/ld.so.conf”,并执行ldconfig命令。
设置Clam AntiVirus开机自动运行,在/etc/rc.local中增加“/usr/local/clamav/sbin/clamd&”
注:①你可以使用clamav发行包中contrib目录下面的clamdwatch.pl脚本监测clamd进程是否正常运行,详细情况参考clamdwatch的README文档。
②你也可以使用chkconf命令管理clamd的启动和停止,详细情况见clamav发行包中contrib\init\RedHat目录下面脚本文件。

9、安装Mail-SpamAssassin和amavisd-new所需要的基本类库和perl模块
从下面的URL下载compat-libstdc++-33-3.2.3-47.3.i386.rpm:http://mirror.centos.org/centos/4/os/i386/CentOS/RPMS/
rpm -ivh compat-libstdc++-33-3.2.3-47.3.i386.rpm

安装RAR for linux:
wget http://www.rarsoft.com/rar/rarlinux-3.5.1.tar.gz
tar zvxf rarlinux-3.5.1.tar.gz
cd rar
make install

使用wget命令下载下列perl模块并按照顺序安装他们,具体的安装方法看发行包中的README文档:
wget http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/Digest-SHA1-2.10.tar.gz
wget http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/HTML-Parser-3.48.tar.gz
wget http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/Digest-HMAC-1.01.tar.gz
wget http://search.cpan.org/CPAN/authors/id/M/MA/MANU/Net-IP-1.24.tar.gz
wget http://search.cpan.org/CPAN/authors/id/O/OL/OLAF/Net-DNS-0.54.tar.gz
wget http://search.cpan.org/CPAN/authors/id/D/DO/DOUGW/Net-CIDR-Lite-0.18.tar.gz
wget http://search.cpan.org/CPAN/authors/id/S/SC/SCOTT/Sys-Hostname-Long-1.4.tar.gz
wget http://search.cpan.org/CPAN/authors/id/F/FR/FREESIDE/Mail-SPF-Query-1.997.tar.gz
wget http://search.cpan.org/CPAN/authors/id/N/NW/NWETTERS/IP-Country-2.20.tar.gz
wget http://search.cpan.org/CPAN/authors/id/J/JH/JHI/Time-HiRes-1.83.tar.gz
wget http://voxel.dl.sourceforge.net/sourceforge/razor/razor-agents-2.77.tar.bz2
wget http://search.cpan.org/CPAN/authors/id/J/JP/JPC/Net-Ident-1.20.tar.gz
wget http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-1.49.tar.gz
wget http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/URI-1.35.tar.gz
wget http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/Compress-Zlib-1.41.tar.gz
wget http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/libwww-perl-5.805.tar.gz
wget http://search.cpan.org/CPAN/authors/id/T/TO/TOMHUGHES/IO-Zlib-1.04.tar.gz
wget http://search.cpan.org/CPAN/authors/id/K/KA/KANE/Archive-Tar-1.26.tar.gz

wget http://search.cpan.org/CPAN/authors/id/S/SM/SMPETERS/Archive-Zip-1.16.tar.gz
wget http://search.cpan.org/CPAN/authors/id/D/DS/DSKOLL/IO-stringy-2.110.tar.gz
wget http://search.cpan.org/CPAN/authors/id/M/MA/MARKOV/MailTools-1.67.tar.gz
wget http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/MIME-Base64-3.07.tar.gz
wget http://search.cpan.org/CPAN/authors/id/D/DS/DSKOLL/MIME-tools-5.418.tar.gz
wget http://search.cpan.org/CPAN/authors/id/D/DO/DOUGW/Convert-TNEF-0.17.tar.gz
wget http://search.cpan.org/CPAN/authors/id/M/ML/MLEHMANN/Convert-UUlib-1.06.tar.gz
wget http://search.cpan.org/CPAN/authors/id/R/RH/RHANDOM/Net-Server-0.90.tar.gz
wget http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/libnet-1.19.tar.gz
wget http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/Digest-MD5-2.36.tar.gz
wget http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/BerkeleyDB-0.27.tar.gz
wget http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-3.0002.tar.gz
wget http://search.cpan.org/CPAN/authors/id/M/MH/MHARNISCH/Syslog-0.97.tar.gz

10、安装Mail-SpamAssassin
从下面的URL下载Mail-SpamAssassin 3.1.0的源代码:http://spamassassin.apache.org
安装Mail-SpamAssassin,Mail-SpamAssassin的配置文件在“/etc”目录下:
tar jvxf Mail-SpamAssassin-3.1.0.tar.bz2
cd Mail-SpamAssassin-3.1.0
perl Makefile.PL
make
make test
make install
注:①perl Makefile.PL命令时,系统会报IO::Socket::INET6和IO::Socket::SSL找不到,因为我们不使用这个两个功能,所以不需要安装。
②关于spam的配置我也没有很多经验,如果大家有什么好的经验不妨分享一下^_^。你可以使用CCERT的中文垃圾邮件过滤规则集,详情见:http://www.ccert.edu.cn/spam/sa/Chinese_rules.htm

11、安装amavisd-new
从下面的URL下载amavisd-new-2.3.3的源代码:http://www.ijs.si/software/amavisd/

增加amavisd-new运行所需要的用户:
groupadd amavis
useradd amavis -g amavis -c "Amavisd-new" -d /var/amavis

安装amavisd-new:
tar zvxf amavisd-new-2.3.3.tar.gz
cd amavisd-new-2.3.3
mkdir /var/amavis/tmp /var/amavis/var /var/amavis/db /var/amavis/home
chown -R amavis:amavis /var/amavis
chmod -R 750 /var/amavis
cp amavisd /usr/local/sbin/
chown root /usr/local/sbin/amavisd
chmod 755 /usr/local/sbin/amavisd
cp amavisd.conf /etc/
chown root /etc/amavisd.conf
chmod 644 /etc/amavisd.conf
mkdir /var/virusmails
chown amavis:amavis /var/virusmails
chmod 750 /var/virusmails

配置amavisd-new,使用Clam AntiVirus作为病毒过滤程序,你需要去掉第288、289、290、291前面的注释,#号之后是注释文本:
vi /etc/amavisd.conf
# @lookup_sql_dsn =('DBI:mysql:database=postfix;host=localhost', 'postfix', 'PosSDt$iTYx');
# @local_domains_maps = (sql:'SELECT description FROM domain');
$LOGFILE = "$MYHOME/amavis.log";
$mydomain = 'example.com';
$final_virus_destiny      = D_BOUNCE;
$final_banned_destiny     = D_BOUNCE;
$final_spam_destiny       = D_BOUNCE;
$final_bad_header_destiny = D_BOUNCE;
$QUARANTINEDIR = '/var/virusmails';
$undecipherable_subject_tag = '***UNCHECKED*** ';
$sa_tag2_level_deflt = 5;
$sa_kill_level_deflt = 5;
$max_servers = 10 ;
$daemon_user = 'amavis' ;
$daemon_group = 'amavis';
['Clam Antivirus-clamd',        #288
\&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd"],
qr/\bOK$/, qr/\bFOUND$/,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],

修改Postfix的配置,让它使用amavisd-new作内容过滤:
在master.cf的最后增加下面的内容:
vi /etc/postfix/master.cf
smtp-amavis unix -      -       n     -       2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o max_use=20

127.0.0.1:10025 inet n -       n     -       - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks_style=host
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
在main.cf文件的最后增加下面的内容:
vi /etc/postfix/main.cf
content_filter=smtp-amavis:[127.0.0.1]:10024
设置amavisd-new开机自动运行,在/etc/rc.local中增加“/usr/local/sbin/amavisd -u amavis&”。
注:①你也可以使用chkconf命令管理amavis的启动和停止,详细情况见amavis发行包中的amavisd_init.sh文件。
②你可以自定义amavisd通知邮件的模板,具体参考amavis发行包中的amavisd.conf-sample文件。

12、安装Extmail
从下面的URL下载extmail-0.22的安装文件:http://www.extmail.org/cgi-bin/download.cgi
安装Extmail所需要的perl模块,安装的方法同上面的一样:
wget http://search.cpan.org/CPAN/authors/id/K/KA/KASPER/HTML-KTemplate-1.33.tar.gz

安装Extmail:
tar zxvf extmail-0.22.tar.gz
mv extmail-0.22 /usr/local/httpd/htdocs/extmail
cd /usr/local/httpd/htdocs/extmail
chown -R postfix.postfix cgi
配置Extmail,因为Extmail的Config.pm模块还不是很完善,在参数的后边一定不要有多余的空格:
cp webmail.cf.default webmail.cf
vi webmail.cf
SYS_CONFIG = /usr/local/httpd/htdocs/extmail/
SYS_LANGDIR = /usr/local/httpd/htdocs/extmail/lang
SYS_TEMPLDIR = /usr/local/httpd/htdocs/extmail/html
SYS_USER_LANG = zh_CN
SYS_USER_CHARSET = gb2312
SYS_MAILDIR_BASE = /home/mail
SYS_CRYPT_TYPE = crypt
SYS_MYSQL_USER = extmail
SYS_MYSQL_PASS = extmail
SYS_MYSQL_DB = extmail

配置Apache:
AddHandler cgi-script .cgi
NameVirtualHost *:80

<VirtualHost *:80>
ServerAdmin webmaster@example.com
DocumentRoot /usr/local/httpd/htdocs/extmail/html
Alias /extmail/cgi/ /usr/local/httpd/htdocs/extmail/cgi/
Alias /extmail/ /usr/local/httpd/htdocs/extmail/html/
Alias /extman/cgi/ /usr/local/httpd/htdocs/extman/cgi/
Alias /extman/ /usr/local/httpd/htdocs/extman/html/
ScriptAlias /extmail/cgi/ /usr/local/httpd/cgi-bin/extmail/cgi/
SuexecUserGroup postfix postfix
ServerName mail.example.com
ErrorLog logs/mail.example.com-error_log
CustomLog logs/mail.example.com-access_log common
</VirtualHost>

<Directory /usr/local/httpd/htdocs/extmail/cgi>
Options +ExecCGI
</Directory>

13、安装Extman
从下面的URL下载extman 0.12:http://www.extmail.org/cgi-bin/download.cgi

安装extman:
tar zvxf extman-0.12.tar.gz
mv extman-0.12 /usr/local/httpd/htdocs/extman
cd /usr/local/httpd/htdocs/extman/libs/Ext
./buildlink.sh build /usr/local/httpd/htdocs/extmail/libs/Ext/
chown -R postfix.postfix /usr/local/httpd/htdocs/extman/cgi
mkdir /tmp/extman
chown postfix:postfix /tmp/extman
使用extman源码目录下docs目录中的extmail.sql和init.sql建立数据库:
cd /usr/local/httpd/htdocs/extman/docs
mysql -u root -p <extmail.sql
mysql -u root -p <init.sql
cp mysql_virtual_* /etc/postfix/
注:将有四个文件被copy到/etc/postfix目录下面。

配置extman:
SYS_CONFIG = /usr/local/httpd/htdocs/extman/
SYS_LANGDIR = /usr/local/httpd/htdocs/extman/lang
SYS_TEMPLDIR = /usr/local/httpd/htdocs/extman/html
SYS_MAILDIR_BASE = /home/mail
SYS_QUOTA_TYPE = vda

配置apache,有两句关于extman的配置已经在配置extmail的时候增加了,不知道你看到没有?
<Directory /usr/local/httpd/htdocs/extman/cgi>
Options +ExecCGI
</Directory>

注:①extman默认的管理员:root@extmail.org,密码:extmail
②“mail.example.com”是你的域名。
③你可以从http://www.extmail.org上面看到Extmail和extman的演示。

重新启动服务器,检查是不是所有的服务都正常启动!如果有什么问题请首先查看系统的日志,因为90%以上的问题都可以从日志中找到错误原因。

,

No Comments

Windows 2000 Server 安全设置手册

转载出处:来自互联网,具体出处不详,敬请谅解! 
Windows 2000 Server是比较流行的服务器操作系统,如何安全地配置这个操作系统呢?本文试图从用户安全设置、密码安全设置、系统安全设置、服务安全设置四个方面进行初步的探讨。
 一、用户安全设置
1、禁用Guest账号
在计算机管理的用户里面把Guest账号禁用。为了保险起见,最好给Guest加一个复杂的密码。你可以打开记事本,在里面输入一串包含特殊字符、数字、字母的长字符串,然后把它作为Guest用户的密码拷进去。
2、限制不必要的用户
去掉所有的Duplicate User用户、测试用户、共享用户等等。用户组策略设置相应权限,并且经常检查系统的用户,删除已经不再使用的用户。这些用户很多时候都是黑客们入侵系统的突破口。
 3、创建两个管理员账号
创建一个一般权限用户用来收信以及处理一些日常事物,另一个拥有Administrators 权限的用户只在需要的时候使用。
 4、把系统Administrator账号改名
大家都知道,Windows 2000 的Administrator用户是不能被停用的,这意味着别人可以一遍又一遍地尝试这个用户的密码。尽量把它伪装成普通用户,比如改成Guesycludx。
 5、创建一个陷阱用户
什么是陷阱用户?即创建一个名为“Administrator”的本地用户,把它的权限设置成最低,什么事也干不了的那种,并且加上一个超过10位的超级复杂密码。这样可以让那些 Hacker们忙上一段时间,借此发现它们的入侵企图。
 6、把共享文件的权限从Everyone组改成授权用户
任何时候都不要把共享文件的用户设置成“Everyone”组,包括打印共享,默认的属性就是“Everyone”组的,一定不要忘了改。
 7、开启用户策略
使用用户策略,分别设置复位用户锁定计数器时间为20分钟,用户锁定时间为20分钟,用户锁定阈值为3次。
 8、不让系统显示上次登录的用户名
默认情况下,登录对话框中会显示上次登录的用户名。这使得别人可以很容易地得到系统的一些用户名,进而做密码猜测。修改注册表可以不让对话框里显示上次登录的用户名。方法为:打开注册表编辑器并找到注册表项
“HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Dont-DisplayLastUserName”,
把REG_SZ的键值改成1。
二、密码安全设置
1、使用安全密码
一些公司的管理员创建账号的时候往往用公司名、计算机名做用户名,然后又把这些用户的密码设置得太简单,比如“welcome”等等。因此,要注意密码的复杂性,还要记住经常改密码。
 2、设置屏幕保护密码
这是一个很简单也很有必要的操作。设置屏幕保护密码也是防止内部人员破坏服务器的一个屏障。
3、开启密码策略
注意应用密码策略,如启用密码复杂性要求,设置密码长度最小值为6位,设置强制密码历史为5次,时间为42天。
4、考虑使用智能卡来代替密码
对于密码,总是使安全管理员进退两难,密码设置简单容易受到黑客的攻击,密码设置复杂又容易忘记。如果条件允许,用智能卡来代替复杂的密码是一个很好的解决方法。
三、系统安全设置
 1. 使用NTFS格式分区
最好把服务器的所有分区都改成NTFS格式,NTFS文件系统要比FAT、FAT32的文件系统安全得多。
 2. 运行防毒软件
杀毒软件不仅能杀掉一些著名的病毒,还能查杀大量木马和后门程序,因此要注意经常运行程序并升级病毒库。
3. 下载最新的补丁程序
很多网络管理员没有访问安全站点的习惯,以至于一些漏洞都出现很久了,还放着服务器的漏洞不补给人家当靶子用。经常访问微软和一些安全站点,下载最新的Service Pack和漏洞补丁,是保障服务器长久安全的惟一方法。
4. 关闭默认共享
Windows 2000安装好以后,系统会创建一些隐藏的共享,你可以在Cmd下打“ Net Share” 查看他们。网上有很多关于IPC入侵的文章,都利用了默认共享连接。要禁止这些共享,打开“管理工具\计算机管理\共享文件夹\共享”在相应的共享文件夹上按右键,点[停止共享]即可。
 5. 锁住注册表
在Windows 2000中,只有Administrators和Backup Operators才有从网络上访问注册表的权限。如果你觉得还不够的话,可以进一步设定注册表访问权限。
详细信息请参考: http://support.microsoft.com/support/kb/articles/Q153/1/83.asp
6. 禁止用户从软盘和光驱启动系统
一些第三方的工具能通过引导系统来绕过原有的安全机制。如果你的服务器对安全要求非常高,可以考虑使用可移动软盘和光驱。当然,把机箱锁起来仍不失为一个好方法。
7. 利用Windows 2000的安全配置工具来配置安全策略
微软提供了一套基于MMC(管理控制台)安全配置和分析工具,利用它们你可以很方便地配置你的服务器以满足你的要求。
具体内容请参考微软主页:http://www.microsoft.com/windows2000/techinfo/howitworks/security/sctoolset.asp
四、服务安全设置
1. 关闭不必要的端口
关闭端口意味着减少功能,在安全和功能上面需要你做一点决策。如果服务器安装在防火墙的后面,冒险就会少些。但是,永远不要认为你可以高枕无忧了。
用端口扫描器扫描系统已开放的端口,确定系统开放的哪些服务可能引起黑客入侵。
在系统目录中的\system32\drivers\etc\services 文件中有知名端口和服务的对照表可供参考。
具体方法为:打开“网上邻居/属性/本地连接/属性/internet 协议(TCP/IP)/属性/高级/选项/TCP/IP筛选/属性” 打开“TCP/IP筛选”,添加需要的TCP、UDP协议即可。
2. 设置好安全记录的访问权限 安全记录在默认情况下是没有保护的,把它设置成只有Administrators和系统账户才有权访问。
3. 把敏感文件存放在另外的文件服务器中 虽然现在服务器的硬盘容量都很大,但是你还是应该考虑是否有必要把一些重要的用户数据(文件、数据表、项目文件等)存放在另外一个安全的服务器中,并且经常备份它们。 4. 禁止建立空连接 默认情况下,任何用户都可通过空连接连上服务器,进而枚举出账号,猜测密码。我们可以通过修改注册表来禁止建立空连接:
即把“ Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous” 的值改成“1”即可。
此外,安全和应用在很多时候是矛盾的。因此,你需要在其中找到平衡点,如果安全原则妨碍了系统应用,那么这个安全原则也不是一个好的原则。

No Comments

关掉Windows2000不必要的服务

转载出处:来自互联网,具体出处不详,敬请谅解!

局域网的启动时间比局域网、Me长得多了,特别是在只有64兆内存的情况下尤为明显,你会看到你的硬盘在启动时不停地读写,因为这时Windows 2000在加载很多服务组件,如果你只是在一台单机上用Windows 2000,并且没有连到任何局域网上,那么其实有很多服务组件是根本不需要的,额外的服务程序当然大大拖慢系统的速度了,经过我的试用,发现有很多服务组件都是不能必要的,完全可以禁用。
要查看Windows 2000的系统服务配置状况,单击"开始",指向"设置",然后单击"控制面板"。双击"管理工具",然后双击"服务" 打开后看到一大堆服务列表,有些已经启动,有些则没有。让我们先来看一下怎样关掉不必要的服务,右键单击要配置的服务,然后单击"属性"。在"常规"选项卡上,单击"自动"、"手动"或"已禁用",其中"自动"为每次启动时Windows 2000都自动启动该服务,选择"手动"时,Windows 2000不会自动启动该服务,而是由你选择是否启动,而选择"禁用"则是不允许启动该服务。在实际配置时,选择"手动"或者"禁用"都可以实现关闭该服务的目的。

由于一些服务是Windos 2000所必需的,并不能全部关闭,否则将会造成不能启动计算机。下面我们就先来看一看这些服务的说明,最后再看哪些服务可以关掉。
1.Alerter
说明:通知所选用户和计算机有关系统管理级警报。
2.ClipBook
说明:可以从远程剪贴簿查阅剪贴页面。
3.Distributed Link Tracking Client
说明:当文件在网络域的 NTFS 卷中移动时发送通知。
4.Distributed Transaction Coordinator
说明:并列事务,是分布于两个以上的数据库,消息队列,文件系统,或其它事务保护资源管理器。
5.Fax Service
说明:帮助您发送和接收传真。
6.局域网 Publishing Service
说明:通过 Internet 信息服务的管理单元提供 FTP 连接和管理,就是开启FTP服务功能啦。
7.IIS Admin Service
说明:允许通过 Internet 信息服务的管理单元管理 Web 和 FTP 服务。开启该服务,你可以通过"Internet 服务管理器"管理Web和FTP服务。
8.Indexing Service
说明:本地和远程计算机上文件的索引内容和属性;通过灵活查询语言提供文件快速访问。
9.Internet Connection Sharing
说明:为通过拨号网络连接的家庭网络中所有计算机提供网络地址转换、定址以及名称解析服务。该服务用于多台电脑共用一条线路上网。
10.IPSEC Policy Agent
说明:管理 IP 局域网策略以及启动 ISAKMP/Oakley (IKE) 和 IP 安全驱动程序。
11.Logical Disk Manager Administrative Service
说明:磁盘管理请求的系统管理服务。
12.Message Queuing
说明:为分布的、异步消息应用程序提供通讯基础结构。
13.Messenger
说明:发送和接收系统管理员或者"警报器"服务传递的消息。
14.Net Logon
说明:支持网络上计算机 pass-through 帐户登录身份验证事件。该服务开启后支持远程登录。
15.NetMeeting Remote Desktop Sharing
说明:允许有权限的用户使用 NetMeeting 远程访问 Windows 桌面。该服务可以用NetMeeting远程控制计算机,根据需要选择吧,不过如果你要使用远程管理的话,不妨用PcAnywhere,最好不要用微软这个蹩脚的东西。
16.Network DDE
说明:提供动态数据交换 (DDE) 的网络传输和安全特性。该服务用处不大却还有安全漏洞,可以让一个普通用户升成管理员,一定要关掉它。
17.Network DDE DSDM
说明:管理网络 DDE 的共享动态数据交换。该服务和Network DDE有一样的漏洞,一定要关掉它。
18.Performance Logs and Alerts
说明:配置性能日志和警报。
19.QoS RSVP
说明:为依赖质量服务(QoS)的程序和控制应用程序提供网络信号和本地通信控制安装功能。
20.Remote 局域网 Auto Connection Manager
说明:无论什么时候当某个程序引用一个远程 DNS 或 NetBIOS 名或者地址就创建一个到远程网络的连接。
21.Remote Procedure Call (RPC) Locator
说明:管理 RPC 名称服务数据库。
22.Routing and Remote Access
说明:在局域网以及广域网环境中为企业提供路由服务。
23.RunAs Service
说明:在不同凭据下启用启动过程。。
24.Simple Mail Transport Protocol (SMTP)
说明:跨网传送电子局域网,就是邮件发送服务器啦。
25.Smart Card
说明:对插入在计算机智能卡阅读器中的智能卡进行管理和访问控制。
26.Smart Card Helper
说明:提供对连接到计算机上旧式智能卡的支持。
27.SNMP Trap Service
说明:接收由本地或远程 SNMP 局域网程序产生的陷阱消息,然后将消息传递到运行在这台计算机上SNMP 管理程序。
28.TCP/IP NetBIOS Helper Service
说明:允许对"TCP/IP 上 NetBIOS (Net局域网)"服务以及 NetBIOS 名称解析的支持。
29.TCP/IP Print Server
说明:允许基于TCP/IP 的打印服务(使用 Line Printer 协议)。
30.Telnet
说明:允许远程用户登录到系统并且使用命令行运行控制台程序。就是远程进入Windows 2000的命令提示符的界面。
31.Uninterruptible Power Supply
说明:管理连接到计算机的不间断电源(UPS)。
32.Utility Manager
说明:从一个窗口中启动和配置辅助工具。
33.Windows Management Instrumentation
说明:提供系统管理信息。
34.World Wide Web Publishing Service
说明:通过 Internet 信息服务的管理单元提供 Web 连接和管理。

下面我将以上服务的适用情况列成一张表,通过下表你将具体知道你是否需要该服务并且决定是否关掉它。
服务名称如果符合下列条件,你可以将之关闭
1.Alerter 你未连上局域网并且不需要管理警报
2.ClipBook 你不需要查看远程剪贴簿的剪贴页面
3.Distributed Link Tracking Client 如果你不使用NTFS分区并且没有联入局域网
4.Distributed Transaction Coordinator 你不需要同时处理多个数据库任务或者文件系统
5.Fax Service 你不用Windows 2000发送或者接收传真的
6.FTP Publishing Service 你的计算机不做FTP服务器
7.IIS Admin Service 你的计算机不做WWW服务器
8.Indexing Service 你的计算机不提供远程文件索引和快速访问或者没有连上局域网
9.Internet Connection Sharing 你不准备用Windows 2000做路由服务器,让多人共享一条线路上网
10.IPSEC Policy Agent 你未连接到Windows 2000的域
11.Logical Disk Manager Administrative Service 你不准备使用磁盘配额
12.Message Queuing 你未连接到Windows 2000的域
13.Messenger 你未连接到Windows 2000的域并且不需要管理警报
14.Net Logon 你不想让局域网上的其他用户登录
15.NetMeeting Remote Desktop Sharing 你不想使用NetMeeting远程管理计算机
16.Network DDE 你不想被人入侵你的计算机
17.Network DDE DSDM 你不想被人入侵你的计算机
18.Performance Logs and Alerts 你不想知道你的计算机到的每一秒都干了什么
19.QoS RSVP 你没有使用依赖于QoS的程序
20.Remote Access Auto Connection Manager 你不想在程序企图读取网络信息时自动连接到网络
21.Remote Procedure Call (RPC) Locator 你不需要管理RPC名称服务数据库
22.Routing and Remote Access 你的计算机不做路由器
23.RunAs Service 你不需要在某一用户下以另外一个用户的身份执行一个程序
24.Simple Mail Transport Protocol (SMTP) 你的计算机不做邮件发送服务器
25.Smart Card 你没有智能卡阅读器和智能卡
26.Smart Card Helper 你没有旧式智能卡阅读器和智能卡
27.SNMP Trap Service 你没有连接到Windows 2000的域
28.TCP/IP NetBIOS Helper Service 你的计算机不准备让别人共享
29.TCP/IP Print Server 你不准备让你的计算机成为网络打印服务器
30.Telnet 你不想远程控制计算机执行控制台命令
31.Uninterruptible Power Supply 你没有使用UPS或者UPS不支持双向传输信号
32.Utility Manager 你不从一个窗口中启动和配置辅助工具
33.Windows Management Instrumentation 你不看你的系统管理信息
34.World Wide Web Publishing Service 你的计算机不做WWW服务器
对于普通用户来说,根本不必考虑什么,把以上服务完全关闭,你的Windows 2000速度将会有一个飞跃,如果你有特殊用途,可以参照以上说明自行配置Windows 2000的服务,以便达到最优状态。

No Comments

懑敦儿猫猫流浪记

前几天的下午,我们的懑敦儿猫猫离家出走了。
它从小是在屋里长大的咯,从来不敢跑出去,就算偶尔在门口溜达一下,看见门开的小了就又会匆忙冲回来。
可是这次,下午吃过饭后,它一去不回了,我们楼上楼下到处找都找不到,喊着它的名字,问楼下的人看到没有。
一时间真的很郁闷,它居然跑了,它从小是吃猫粮长大的,胆子又特别小,这出去了还不得饿死啊!
太笨了,太笨了,它居然离家出走了!离家出走有好处么?!
我们四处寻找着,楼下的阿姨说有看见下午一只黑白的猫,就在停车棚附近,于是我们搜寻,发现了,可居然是一只小猫,长的没有懑敦儿好看,估计也是只流浪猫。
哎,心里好失落,硬是没有找到,回家以后,感觉屋子里空了好多。它在的时候吧,不觉得,烦的时候,闲的时候就来逗一下它,虐待一下它。给它天天吃猫粮其实也是懒得做饭的原因。
想一想,真的对它不是很好,长大了后,怕它到处掉毛,就把它绑起来了。
哎,没办法,只有看它自己能不能回来了。于是,我们在门口放了些猫粮,想的是它肚子饿了会回来吃的。
可是,第二天,门口的猫粮一点没动,我们又到楼下找了一遍,还是不见。到这时候,我们真的绝望了。
然而,第三天早上,阿钊从帐篷里回家的时候,刚到楼下,就听见它一个劲儿得惨叫啊,喊它一声,它就叫一声。
它就躲在楼梯拐角外窗户旁的那个很窄的小平台上。
它终于回来啦,哎,不知吃了多少苦,身上全是尿的骚臭味道,味道大的一直从一楼到六楼。
给它洗过澡之后,好多了,也给它买了新的猫粮,它吃的啊,瘦了好多。哎,还好,它回来了,终于还是回来了。
回来的那天晚上,还发生了一件很有趣得事情,有一直胆子特别大的麻猫,把头伸近了我们家门,一声不吭的看着我们,把懑敦儿猫猫给吓到了,呵呵。后来,我们把那只猫给吓跑了。
---------------------------------------------------------------------------------------------
今天,好无聊啊,最近一直都是这样的无聊。
自从我被绑住以后,我的活动范围就仅仅只有这个阳台了。我真的没有想到主人他们会绑我,以前顶多是教训我一顿,要是我跑的快,他们还不一定能打到我,而且,只要客厅里得板凳在,我就会立刻跑上去躺着,板凳会保护我不被他们打到。
我能感觉到他们逐渐的讨厌我了,但我一直都这样啊,以前小的时候,他们都不会这样的。但是,现在呢,不让我进屋了,不让我进厨房了,随时还会拿脚来踹我,追着我打,稍不开心就大声的吼我。
但我知道,他们肯定是对我好的,因为,他们会给我准备很大一袋好吃的,我不会饿肚子。他们开心的时候还是会和我一起玩耍的。这样,我就不会无聊了。
但是,我被绑住了,被绑住之后,真的好无聊啊。每天,我只能睡觉,睡醒了就趴在阳台上看看楼下的小孩子,偶尔还会有一些母猫经过,我也会看看天上的鸟,看着它们从我头上飞过。
主人们很久没跟我玩过了,他们最近晚上都不会回来睡,不过,最近他们把绑我得绳子解开了。我可以到客厅里转一转了,卧室我不敢去,因为他们会因此把我打得很惨。
这几天,他们老是把门打开着,好像随时准备出去一样。他们在吃饭了,我没什么兴趣咯,因为闻起来没什么好吃得,就算有,我也吃不到。
太无聊了,我还是到门口转一转吧,嘿,门口的空气不错咯。外面的世界还是太恐怖了,以前主人们把我带出去过,外面那些人太可怕了,好多人手里都拿着口袋,我真怕他们把我给装进去。
不过,在门口这附近溜达一下,不下楼,应该没什么问题的。
嘿,楼下我是不敢去咯,楼上有啥呢?我打算上去看看,有什么问题我跑回来就是了。
不知不觉,我好像到顶上了,嘿,这里有一个门,但是不像主人的门是密封的,它是由很多管子拼起来得,我完全可以钻进去看看呢。
我钻进来啦,这里真好看,好多花咯,头上没有屋顶咯,感觉好宽阔咯,真舒服啊,比呆在屋里好多了,再说了,这里没其他人,也不危险呢,真是个好地方。
忽然,一个恐怖的叫声传过来,好大一声啊。咋了,咋了,我该跑到那里去,我该跑回去啦。可是,当我转过身来,我看到了一只很大的猫,它得眼神好吓人啊。它朝我扑了过来,我的天啦,我要快跑!我要快跑!
你放过我吧!对不起我不是故意跑出来的,我不是故意的!
“你跑到我的地盘上来啦,小子!”它说话了,它说话得声音好恐怖啊。
可是,我不敢回答它,我只想跑,但是它在那里,我肯定跑不了得,怎么办!怎么办!这时候,我发现墙角下面有一个洞,躲在那里应该没事儿的。“喵哇哇嗷!!”它扑上来了。啊,我的背被它爪子抓的好疼啊!我要快跑!
终于,我跑进了墙角,它追过来了,我不停得往里面钻,一直到了最里面。终于,它追不过来了,因为它太大了,但它还在那里不停的想抓我,不时的发出恐怖得叫声。天啦,太恐怖了,为什么会这样啊。
我就躲在这里啦,只有这里才是安全的,它离开了,但是每隔一会儿就会再来一次。我知道它一定没有走远,它就等在附近,当我一出来,它就会扑上来的!!
天快黑了,我回不了家了,我的肚子也饿了。这里没有吃的,周围好脏啊,但是这里是安全的。
主人们会找我么?他们一定找不到我的,因为我躲在这里,他们不会想到的。也许,他们也不会找我,我离开之后,他们也许会更加开心,他们好像早就不想要我了。
想到这里,真的好伤心啊。那只猫一定还在旁边躲着的,我一定不能出去。但是,我真的好饿啊,真的好渴啊。
隐隐约约里,我好像听到主人的声音了,他们是在叫我么?也许是我听错了,但是我多想他们真的在叫我啊。
天黑了,我在这里已经一动不动的呆了很久了,但这里是安全的,这里可以躲避那只恐怖的猫。
我又想尿尿了,刚刚被那只猫追进来的时候,我已经不知不觉的尿了很多。这里太狭小了,我憋不了了,只能再次尿在这里。我身上已经沾满了尿,好臭啊,好臭啊。
想一想屋里,我还有自己盆子可以撒尿啊,每次,我都会在撒尿之后在盆子周围把我的爪子擦的干干净净的。哎。
不知不觉,天又亮了,我在外面呆了很久了啊。原本,我只是想像以前一样,出来一会儿就回去的,但是,这一次我居然出来了这么久。主人们一定出去找过我的,他们现在一定以为我跑了,不回来了。他们会伤心吧,他们,他们应该会吧。我真的好希望他们不会把我忘了,不会因为我的离开而高兴啊。
我饿的快不行啦,我又撒了几次尿,身上已经臭的不行了。但是我不会出去的,因为,那只猫刚才不久的时候又在洞口一直盯了我好久。它一直都在周围呢。
天又黑啦,我好累啊,该怎么办啊,我好想回去啊。可是,我怎么样才能跑出去呢,我不会就这样饿死在这里吧。
我很想睡可是我睡不着,因为我太饿了,这样下去我真的会饿死的。
过了好久好久,天终于又亮了,我在这里待的太久了。主人们都已经把我给忘了吧。
我好想回去啊,好想吃我的猫粮啊。那只猫从昨天白天到现在都还没有出现过,它应该不会在旁边了吧。不会的,它就在那里等着我。但这样下去我会饿死的,我要出去看看啊,大不了,大不了被它抓几下,我再跑回来就是了。
我一点点,悄悄的出来了,我要小心,慢慢的看看洞口,它好像不在,周围都看不到它。我要出去!我要出去!
鼓起勇气,我终于跑出来啦,它不在,它不在,我要马上跑回去。
很快,我跑到了楼下,但是,这里好像不是主人的门,我继续跑,这里应该是了,因为这里有我的猫粮的味道。
我叫着,叫着主人们给我开门,但是他们没有给我开门,他们不要我了么?以前他们都会立刻来给我开门的。求求你们给我开门吧,不然那只恐怖的猫还会来找到我的。
他们最终还是没有开门,他们一定没在屋里,因为他们早上会出门的。对的,他们一定没有在屋里。
我要找个安全的地方躲起来,不然那只猫会找到我的。啊,那个窗户外面应该比较安全,那里很窄,那只猫很大,肯定过不去的,因为它太大了一不注意就会掉下去的。但是我不会的,而且,那里还可以看到我的主人们什么时候回来呢。
于是,我呆在了这里,等待着主人们的回来。又过了好久了,我忍不住不停的叫着,因为我真的好饿啊,忽然我听到主人在叫我了,啊,真的“懑敦儿,懑敦儿……”他就是在叫我,我叫着,这样他就可以听到我了。
终于,主人找到我了,他想拉我出去,但是这里好窄,我得慢慢出来,当我把头伸过去的时候,主人一下子把我拉了出去。
我终于回家了,一会儿,主人们都回来了,他们果然没有不要我,我又可以吃着我的猫粮了,我太饿了。吃过之后,他们给我洗澡了,确实,我太脏了,身上太臭了,以前我从来没有这样过的。洗过之后,感觉真的好好,我要好好的睡一觉了,屋里睡起来真的好舒服啊。主人们都出去了,我暂时到主人的衣柜里睡一会儿吧,他们回来之前我就会出来的。
睡的好香啊,糟了,主人找到我了,把我提了出来,我以为他们一定又会打我的。但这次,他们居然没有打我。
晚上,他们都坐在一起,我就这样躺在他们中间,真的好舒服啊。
忽然,门口又出现了那只恐怖的猫的头,它又一直盯着我,我要跑!!但是,主人拉住了我。是啊,我在屋里,有主人保护我的!我叫着,我还是害怕,但是我不会跑的,因为我就在屋里,主人们都在我的旁边。
终于,主人出去把那只猫赶走了,把门关上了,终于,我又可以过上安稳的日子了。
想一想,主人对我还是很好的,他们没有不要我,现在也都没有把我绑起来了,至少不会一直把我绑起来了。

No Comments