1、安装 MySQL

1
2
3
4
5
6
7
8
9
10
11
12
13
tar -zxvf mysql-5.1.31.tar.gz
cd mysql-5.1.31
# 安装到 /home/mysql目录下,加入对 UTF-8 的支持,使用 mysql user,支持所有的字符和和插件
./configure --prefix=/home/mysql --with-charset=utf8 --with-extra-charsets=all --with-mysqld-user=mysql --with-plugins=all
make; make install
# 变更 /home/mysql 的属主
chown -R mysql.mysql /home/mysql
# 运行 MySQL 的初始化脚本
./scripts/mysql_install_db --user=mysql
ln -s /home/mysql/share/mysql/mysql.server /usr/sbin
ln -s /home/mysql/bin/mysql /usr/sbin/
echo "/home/mysql/lib/mysql" >> /etc/ld.so.conf
ldconfig

2、安装 Apache

1
2
tar -zxvf httpd-2.2.11.tar.gz
cd httpd-2.2.11

2.1、安装 APR

1
2
3
cd srclib/apr
./configure
make; make install

2.2、安装 APR-Util

1
2
3
cd ../apr-util/
./configure --with-apr=/usr/
make; make install

2.3、安装 Apache:

1
2
3
4
5
6
cd ../../
# 安装到 /home/httpd 目录下,支持动态链接路,支持 rewrite,支持 SSL,支持 DAV,支持代理
./configure --prefix=/home/httpd --enable-so --enable-auth-digest --enable-rewrite --enable-ssl --enable-dav --enable-dav-fs --enable-proxy --enable-proxy-ftp --enable-proxy-http --enable-proxy-balancer --with-apr=/usr/ --with-apr-util=/usr/
make; make install
ln -s /home/httpd/bin/apachectl /usr/sbin/
ln -s /home/httpd/bin/htpasswd /usr/sbin/

3、安装 Cyrus SASL

1
2
3
4
5
6
7
8
9
10
11
tar -zxvf cyrus-sasl-2.1.23.tar.gz
cd cyrus-sasl-2.1.23
# 安装到 /home/cyrus-sasl 目录下
./configure --prefix=/home/cyrus-sasl --enable-anon --enable-plain --enable-login --enable-sql --disable-krb4 --disable-otp --disable-cram --disable-digest --with-mysql=/home/mysql/ --without-pam --without-saslauthd --without-pwcheck --with-dblib=berkeley --with-bdb-libdir --with-bdb-incdir --with-openssl --with-plugindir=/home/cyrus-sasl/lib/sasl2
make; make install
# 创建符号链接,原因见 http://www.postfix.org/SASL_README.html#build_sasl
ln -s /home/cyrus-sasl/lib/sasl2/ /usr/lib/sasl2
echo  "/home/cyrus-sasl/lib" >> /etc/ld.so.conf
ldconfig
# 很多弱智软件都找不到路径或者能找到但是配置很麻烦,例如 courier-authlib 和 PHP,于是直接做个符号链接
ln -s /home/cyrus-sasl/lib/libsasl2.la /usr/lib/libsasl2.la

4、安装 Postfix

1
2
3
4
tar -zxvf postfix-2.6.2.tar.gz
cd postfix-2.6.2
make -f Makefile.init makefiles 'CCARGS=-DHAS_MYSQL -I/home/mysql/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/home/cyrus-sasl/include/sasl -DUSE_TLS' 'AUXLIBS=-L/home/mysql/lib/mysql -lmysqlclient -lz -lm -ldb -L/home/cyrus-sasl/lib -lsasl2 -lssl -lcrypto'
make install

make install 需要你指定路径,根据我的安装习惯,直接安装到 /home/postfix 下面,但是 etc 目录如果指定到 /home/postfix/etc,会出现很多错误,虽然能够解决,但是太麻烦了,所以 etc 例外,安装到默认的 /etc/postfix目录。

需要指定的目录如下,默认的直接回车。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
install_root: [/]
tempdir: [/root/old/pkg/postfix-2.6.2] /tmp
config_directory: [/etc/postfix]
command_directory: [/usr/sbin] /home/postfix/sbin
daemon_directory: [/usr/libexec/postfix] /home/postfix/libexec
data_directory: [/var/lib/postfix] /home/postfix/var
html_directory: [no] /home/postfix/html
mail_owner: [postfix]
mailq_path: [/usr/bin/mailq] /home/postfix/bin/mailq
manpage_directory: [/usr/local/man] /home/postfix/man
newaliases_path: [/usr/bin/newaliases] /home/postfix/bin/newaliases
queue_directory: [/var/spool/postfix] /home/postfix/spool
readme_directory: [no] /home/postfix/readme
sendmail_path: [/usr/sbin/sendmail] /home/postfix/sbin/sendmail
setgid_group: [postdrop]

修改权限:

1
chmod a+x+g+s /home/postfix/sbin/postqueue

5、安装 Courier Authlib

说明:Courier 系列软件包的习惯都是用非 root 身份的用户 configuremake,然后再用 root 用户 make install。上面创建的 courier 用户就是这里起作用的。

注意:因为我们是非标准目录安装,所以在这里特别要增加 --without-stdheaderdir 选项,否则后面的组件无法找到 courier-authlib。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 出于让非 root 用户访问的权限问题,所以解压缩到 /tmp 目录下
tar -jxvf courier-authlib-0.62.2.tar.bz2 -C /tmp/
cd /tmp/courier-authlib-0.62.2/
su courier
# 下面的 configure 和 make 都是以 courier 用户的身份执行
./configure --prefix=/home/courier/authlib --with-authmysql=yes --with-mailuser=vmail --with-mailgroup=vmail --with-mysql-libs=/home/mysql/lib/mysql --with-mysql-includes=/home/mysql/include/mysql/ --without-stdheaderdir
make
exit
# 切换到 root 用户 make install
make install
make install-configure
# 修改权限
chmod +x /home/courier/authlib/var/spool/authdaemon

6、安装 Courier IMAP server

注意:设置

1
COURIERAUTHCONFIG

环境变量,否则因为是非标准目录安装,找不到 courier-authlib 的路径,下面安装 Courier Maildrop 时也一样。

1
2
3
4
5
6
7
8
9
10
11
12
# 出于让非 root 用户访问的权限问题,所以解压缩到 /tmp 目录下
tar -jxvf courier-imap-4.5.0.tar.bz2 -C /tmp/
cd /tmp/courier-imap-4.5.0/
su courier
# 下面的 configure 和 make 都是以 courier 用户的身份执行
export COURIERAUTHCONFIG=/home/courier/authlib/bin/courierauthconfig
./configure --prefix=/home/courier/imap --with-authmysql=yes --with-mailuser=vmail --with-mailgroup=vmail --with-mysql-libs=/home/mysql/lib/mysql --with-mysql-includes=/home/mysql/include/mysql/  --enable-workarounds-for-imap-client-bugs --with-authchangepwdir --enable-unicode --with-trashquota
make
exit
# 切换到 root 用户 make install
make install-strip
make install-configure

7、安装 Courier Maildrop

注意:下面 configure 命令参数里面的 --enable-maildrop-uid=2002 --enable-maildrop-gid=202 中的 2002 和 202 分别对应我们最开始添加的 vmail:vmail 的 UID 和 GID。如果你自己用其它方式增加的用户,则从 /etc/passwd 中找到对应的 UID/GID 并且替换。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 出于让非 root 用户访问的权限问题,所以解压缩到 /tmp 目录下
tar -jxvf maildrop-2.1.0.tar.bz2 -C /tmp/
cd /tmp/maildrop-2.1.0/
su courier
# 下面的 configure 和 make 都是以 courier 用户的身份执行
export COURIERAUTHCONFIG='/home/courier/authlib/bin/courierauthconfig'
# 设置编译时用到的类库
export CPPFLAGS='-I/home/mysql/include/mysql/ -I/home/courier/authlib/include'
export LDFLAGS="-L/home/mysql/lib/mysql/ -L/home/courier/authlib/lib/courier-authlib/"
./configure --prefix=/home/courier/maildrop --enable-sendmail=/home/postfix/sbin/sendmail --enable-trusted-users='root vmail' --enable-syslog=1 --enable-maildirquota --enable-maildrop-uid=2002 --enable-maildrop-gid=202 --with-trashquota --with-dirsync
make
exit
# 切换到 root 用户 make install
make install

8、安装 Spamassassin

执行以下指令进入 Perl CPAN 环境:

1
perl -MCPAN -e shell

依次安装如下模块:

  1. YAML
  2. Digest::SHA1
  3. LWP
  4. Digest::BubbleBabble
  5. Net::DNS
  6. HTTP::Date
  7. IO::Zlib
  8. MIME::Base64
  9. DB_File
  10. Mail::SPF
  11. IP::Country::Fast
  12. Net::Ident
  13. IO::Socket::INET6
  14. IO::Socket::SSL
  15. Compress::Zlib
  16. Time::HiRes
  17. Mail::DKIM
  18. Mail::DomainKeys
  19. DBI
  20. DBD::mysql
  21. Encode::Detect
  22. Apache::Test
  23. Mail::SpamAssassin

说明:

  • 安装 Net::DNS 的时候,会询问是否进行测试,推荐选择 No。
  • CPAN 里安装 DBD::mysql 的时候,因为我们不是在标准路径下安装,所以会提示找不到 mysql_config 错误。解决方法:返回 Shell(BASH),执行如下命令:

    1
    2
    3
    4
    cd ~/.cpan/build/DBD-mysql-4.012-*
    perl Makefile.PL --mysql_config=/home/mysql/bin/mysql_config
    make
    make install
  • 安装 Apache::Test 的时候,会询问你 httpdapxs 的安装位置,对应输入 /home/httpd/bin/httpd/home/httpd/bin/apxs

9、安装 Amavisd-new

同上,进入 CPAN 界面,以此安装如下模块:

  1. Archive::Tar
  2. Archive::Zip
  3. Convert::UUlib
  4. Convert::BinHex
  5. Mail::Internet
  6. Net::Server
  7. Net::SMTP
  8. Digest::MD5
  9. IO::Stringy
  10. Unix::Syslog
  11. BerkeleyDB
  12. MIME::Tools
  13. Convert::TNEF

准备安装用到的环境,创建 Amavisd-new 所用到的目录并设置权限:

1
2
3
4
5
6
mkdir /home/amavis
chmod 750 /home/amavis
mkdir /home/amavis/tmp/
mkdir /home/amavis/db/
mkdir /home/amavis/sbin/
chown -R amavis:amavis /home/amavis

设置垃圾邮件存放的目录并且设置权限:

1
2
3
mkdir /home/mailbox/virusmails
chmod 750 /home/mailbox/virusmails/
chown amavis /home/mailbox/virusmails/

安装 Amavisd-new,拷贝文件到对应的目录:

1
2
3
4
5
6
7
8
tar -zvxf amavisd-new-2.6.4.tar.gz
cd amavisd-new-2.6.4
cp amavisd /home/amavis/sbin/
chown root /home/amavis/sbin/amavisd
chmod 755 /home/amavis/sbin/amavisd
cp amavisd.conf /etc
chown root /etc/amavisd.conf
chmod 644 /etc/amavisd.conf

10、安装 Clam AntiVirus

1
2
3
4
5
6
7
tar -zxvf clamav-0.95.2.tar.gz
cd clamav-0.95.2
./configure --prefix=/home/clamav
make
make install
mkdir /home/clamav/var
chown clamav:clamav /home/clamav/ -R