A-A+

建立邮件系统

2008年12月05日 学习随笔 暂无评论 阅读 1 次

在Linux平台上安装基于Postfix、Courier-imap、Extmail的邮件系统 V 0.2.10
每日抽一个小时解答列表中初学者的问题,
每周至少抽四个小时来翻译自个儿喜欢的自由软件的文档,
每月至少抽八个小时编程,推进自个儿的项目,
每年至少参加一次自由软件的活动,传播自由软件思想,发展一名自由人…………
这些都不难吧?
但是只要我们各个人坚持下去!
10年!就可以改变中国软件的风貌!
.......................................................................
很久之前就计划写一个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
使用下面的命令增加一个普通用户“adduser wangmd”、“passwd wangmd”,在/etc/ssh/sshd_config文件中增加“DenyUsers root”禁止root用户从ssh登录,这是FreeBSD系统sshd的默认设置,也是一个系统管理员应当养成的好习惯。

更新系统内核、BerkeleyDB、openssl和zlib等软件。
从下面的URL下载系统内核的最新版本,并安装适合你所用CPU的版本:http://mirror.centos.org/centos/4/updates/i386/RPMS/,你可以使用“rpm -aq |grep kernel”命令查找已经安装的内核rpm包。
从下面的URL下载db 4.3.29的源代码:http://www.sleepycat.com
tar zvxf db-4.3.29.tar.gz
cd db-4.3.29
cd build_unix/
../dist/configure
CHOST="i686-pc-linux-gnu" CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer" CXXFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer"
make
make install
增加“/usr/local/BerkeleyDB.4.3/lib”到你的“/etc/ld.so.conf”,并执行ldconfig命令。

从下面的URL下载zlib 1.2.3的源代码:http://www.zlib.net
安装zlib,zlib将被安装在“/usr”目录下:
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 .
mkdir /var/lib/mysql
chown mysql:root /var/lib/mysql
chmod 755 /var/lib/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

StartServers 10
MaxClients 1024
MinSpareThreads 100
MaxSpareThreads 800
ThreadsPerChild 64
MaxRequestsPerChild 0

在“/etc/rc.local”文件中增加“/usr/local/httpd/bin/apachectl start”,设置Apache开机自动运行。

4、安装PHP(Extmail和Extman不需要PHP的支持,如果你没有需要使用php的程序可以跳过这步)
从下面的URL下载PHP 4.4.2的源代码:http://www.php.net/downloads.php
安装PHP,PHP将被安装在“/usr/local/php”目录下,PHP的配置文件(php.ini)放在“/usr/local/php/etc”目录中:
tar jvxf php-4.4.2.tar.bz2
cd php-4.4.2
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 '' >/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、安装cyrus-sasl
从下面的URL下载SASLv2 library的源代码:http://asg.web.cmu.edu/cyrus/download/
卸载系统自带的SASL:
rpm -e cyrus-sasl --nodeps
rpm -e cyrus-sasl-plain --nodeps
rpm -e cyrus-sasl-devel --nodeps
rpm -e cyrus-sasl-md5 --nodeps
安装SASLv2 library:
tar zvxf cyrus-sasl-2.1.21.tar.gz
cd cyrus-sasl-2.1.21
export LDFLAGS="-lpthread"
./configure --with-dblib=berkeley --with-bdb-libdir=/usr/local/BerkeleyDB.4.3/lib
--with-bdb-incdir=/usr/local/BerkeleyDB.4.3/include --with-openssl-dir
--enable-anon --enable-plain --enable-login --disable-krb4 --disable-otp --disable-cram
--disable-digest --disable-gssapi --with-pwcheck=no --with-pam --with-authdaemond
--with-plugindir=/usr/local/lib/sasl2 --with-saslauthd=/var/run/saslauthd
CHOST="i686-pc-linux-gnu" CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer" CXXFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer"
make
make install

rm -rf /usr/lib/sasl
rm -rf /usr/lib/sasl2
ln -s /usr/local/lib/sasl2 /usr/lib/

增加“/usr/local/lib”到你的“/etc/ld.so.conf”,并执行ldconfig命令。

6、安装Postfix
从下面的URL下载Postfix 2.2.8的源代码:http://www.postfix.org
从下面的URL下载Postfix 2.2.8的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.8-vda.patch.gz
tar zvxf postfix-2.2.8.tar.gz
cd postfix-2.2.8
patch -p1 < ../postfix-2.2.8-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作为邮件的存储格式

# 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。

7、安装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命令。
8、安装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”。

9、安装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发行包中contribinitRedHat目录下面脚本文件。

10、安装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.50.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
11、安装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。

12、安装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文件。

13、安装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


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


Options +ExecCGI

14、安装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
Options +ExecCGI

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

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

15、设置IPtable
作为一台线上的服务器,网络安全是一个不可忽视的问题,网上关于Linux平台网络安全的文章很多,关于这方面我不想写的太多,仅仅把我所用服务器的IPtable设置提供给大家参考一下:
[root@mail ~]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.2.11 on Mon Oct 3 18:58:14 2005
*filter
:INPUT DROP [410:39079]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [5565:765500]
-A INPUT -d 192.168.8.22 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -d 192.168.8.22 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -d 192.168.8.22 -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -d 192.168.8.22 -p tcp -m tcp --dport 110 -j ACCEPT
-A INPUT -s 127.0.0.1 -d 127.0.0.1 -i lo -j ACCEPT
-A INPUT -d 192.168.8.22 -p tcp -m tcp --sport 22 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -d 192.168.8.22 -p tcp -m tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -d 192.168.8.22 -p tcp -m tcp --sport 110 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -d 192.168.8.22 -p tcp -m tcp --sport 25 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -d 192.168.8.22 -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -d 192.168.8.22 -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -d 192.168.8.22 -i eth0 -p tcp -m tcp --sport 37 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -d 192.168.8.22 -i eth0 -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A OUTPUT -s 192.168.8.22 -o eth0 -p icmp -m icmp --icmp-type 8 -j ACCEPT
COMMIT
# Completed on Mon Oct 3 18:58:14 2005

给我留言

Copyright © 浩然东方 保留所有权利.   Theme  Ality 07032740

用户登录