在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”
。
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
发行包中
contrib/init/RedHat
目录下面脚本文件。
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.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
。
10
、安装
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
文件。
11
、安装
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>
12
、安装
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%
以上的问题都可以从日志中找到错误原因。