发新话题
打印

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

在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
<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(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 &#39;<? phpinfo(); ?>&#39; >/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 "ostfix 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=&#39;-march=pentium4 -O2 -pipe -fomit-frame-pointer&#39; \
&#39;CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -I/usr/include/sasl -DUSE_TLS&#39; \
&#39;AUXLIBS=-L/usr/lib -lmysqlclient -lz -lm -L/usr/local/lib -lsasl2 -lssl -lcrypto&#39;
make
make install
  注:“make install”命令后的所有问题都直接敲回车键即可。
mv /etc/aliases /etc/aliases.old
ln -s /etc/postfix/aliases /etc/aliases
echo &#39;root: admin@example.com&#39;>>/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&#39;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&#39;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         &#39;502&#39;
MYSQL_GID_FIELD         &#39;502&#39;
MYSQL_LOGIN_FIELD       username
MYSQL_HOME_FIELD        concat(&#39;/home/mail/&#39;,homedir)
MYSQL_MAILDIR_FIELD     concat(&#39;/home/mail/&#39;,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=&#39;-I/usr/include/openssl -I/usr/local/courier-authlib/include&#39; \
LDFLAGS=&#39;-L/usr/local/courier-authlib/lib/courier-authlib -L/usr/lib&#39; \
COURIERAUTHCONFIG=&#39;/usr/local/courier-authlib/bin/courierauthconfig&#39; \
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/auth ... st-SHA1-2.10.tar.gz
wget http://search.cpan.org/CPAN/auth ... -Parser-3.48.tar.gz
wget http://search.cpan.org/CPAN/auth ... st-HMAC-1.01.tar.gz
wget http://search.cpan.org/CPAN/auth ... /Net-IP-1.24.tar.gz
wget http://search.cpan.org/CPAN/auth ... Net-DNS-0.54.tar.gz
wget http://search.cpan.org/CPAN/auth ... DR-Lite-0.18.tar.gz
wget http://search.cpan.org/CPAN/auth ... ame-Long-1.4.tar.gz
wget http://search.cpan.org/CPAN/auth ... -Query-1.997.tar.gz
wget http://search.cpan.org/CPAN/auth ... Country-2.20.tar.gz
wget http://search.cpan.org/CPAN/auth ... e-HiRes-1.83.tar.gz
wget http://voxel.dl.sourceforge.net/ ... agents-2.77.tar.bz2
wget http://search.cpan.org/CPAN/auth ... t-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/auth ... ss-Zlib-1.41.tar.gz
wget http://search.cpan.org/CPAN/auth ... w-perl-5.805.tar.gz
wget http://search.cpan.org/CPAN/auth ... IO-Zlib-1.04.tar.gz
wget http://search.cpan.org/CPAN/auth ... ive-Tar-1.26.tar.gz

wget http://search.cpan.org/CPAN/auth ... ive-Zip-1.16.tar.gz
wget http://search.cpan.org/CPAN/auth ... tringy-2.110.tar.gz
wget http://search.cpan.org/CPAN/auth ... ilTools-1.67.tar.gz
wget http://search.cpan.org/CPAN/auth ... -Base64-3.07.tar.gz
wget http://search.cpan.org/CPAN/auth ... -tools-5.418.tar.gz
wget http://search.cpan.org/CPAN/auth ... rt-TNEF-0.17.tar.gz
wget http://search.cpan.org/CPAN/auth ... t-UUlib-1.06.tar.gz
wget http://search.cpan.org/CPAN/auth ... -Server-0.90.tar.gz
wget http://search.cpan.org/CPAN/auth ... /libnet-1.19.tar.gz
wget http://search.cpan.org/CPAN/auth ... est-MD5-2.36.tar.gz
wget http://search.cpan.org/CPAN/auth ... keleyDB-0.27.tar.gz
wget http://search.cpan.org/CPAN/auth ... mysql-3.0002.tar.gz
wget http://search.cpan.org/CPAN/auth ... /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 =(&#39;DBI:mysql:database=postfix;host=localhost&#39;, &#39;postfix&#39;, &#39osSDt$iTYx&#39;);
# @local_domains_maps = (sql:&#39;SELECT description FROM domain&#39;);
$LOGFILE = "$MYHOME/amavis.log";
$mydomain = &#39;example.com&#39;;
$final_virus_destiny      = D_BOUNCE;
$final_banned_destiny     = D_BOUNCE;
$final_spam_destiny       = D_BOUNCE;
$final_bad_header_destiny = D_BOUNCE;
$QUARANTINEDIR = &#39;/var/virusmails&#39;;
$undecipherable_subject_tag = &#39;***UNCHECKED*** &#39;;
$sa_tag2_level_deflt = 5;
$sa_kill_level_deflt = 5;
$max_servers = 10 ;
$daemon_user = &#39;amavis&#39; ;
$daemon_group = &#39;amavis&#39;;
[&#39;Clam Antivirus-clamd&#39;,        #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/auth ... emplate-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>

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 <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%以上的问题都可以从日志中找到错误原因。

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

  注:192.168.8.22是你服务器网卡的IP地址。

附件

邮件系统安装日志0.2.10.txt (32 KB)

2006-2-17 17:10, 下载次数: 882

欢迎访问我的blog http://www.7sunshine.cn/

TOP

good stuff. But with using too much  tar.gz file. It might no easy for the administrator to manage the server. Most importantly for those administrator that are not really good in tar.gz, they will feel this guide extremely hard as mostly they will not able to compile and build on their system. Anyway, very good job....
文章 - Ethan
Redhat Certifed Technician , Paypal Certified Developer

TOP

引用:
下面是引用wangmingda于2005-10-30 16:16发表的在Linux平台上安装基于Postfix、Courier-imap、Extmail的邮件系统 V 0.1:
很久之前就计划写一个postfix在linux平台上面的安装文档,把自己安装postfix的过程总结一下,但是一直没有时间,趁着这次感冒在家养病的机会终于完成了这个任务,由于是第一个版本,所以肯定会有很多错误,希望大家多多指出,在此对hzqbbc对我的帮助致以最诚挚的谢意。

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

1、安装操作系统
.......
大致看了一遍,有几个小建议:

1)取消apache的默认语言设置,即取消:
引用:
AddDefaultCharset gb2312
设置默认字符集并不是一个好主意,尤其对于需要指定字符集的web应用,如extmail,phpmyadmin等是不利的。

取消后由浏览器自行识别,或根据页面的charset指定。

2)能将排版搞好一点则更好

现在的排版重点不够突出,例如一些关键的因素可以用红色高亮显示,一些操作可以用quote括起来等。不过这个可以等下一个版本的文档推出时再做也不迟。

3)main.cf的生成

建议用postconf -n 简化main.cf,如:
引用:
cd /etc/postfix
postconf -n > main2.cf
mv main.cf main.cf.old
mv main2.cf main.cf
然后再修改,这样的好处是main.cf 比较短小,不容易造成同一个配置出现2次的问题。

4)authmysqlrc

MYSQL_HOME_FIELD &#39;/home/mail&#39;  这个配置能不能达到预期效果?估计楼主是希望authlib将该值(/home/mail) prepend到maildir(相对路径)之前,例如maildir是foo.com/bar/Maildir/则楼主希望能获得/home/mail/foo.com/bar/Maildir/ 的结果吧?

但也许这样不一定能奏效,因为这个键不是类似MAIL_BASE之类的功能。所以请仔细测试一下( 利用authtest),确认该配置是否正确。

我建议使用MYSQL_SELECT_CLAUSE 参数。

5)似乎遗漏了VDA的安装

楼主的postfix配置里明明有一些是VDA的补丁里的配置参数,但却没提VDA的安装。因此希望检查一下,将相关内容补充补充。

不过总体而言,整个文档还是不错的,交代了一些关键点,一些关键操作也有具体的注释。只是对于一般系统管理员而言,要全部从source 下载,编译,安装,配置等全部过程中顺利走到成功之门,还是有点困难的。希望日后我们大家能想出一个好办法,简化安装的过程,将精力集中在具体应用上。

给楼主鼓掌!    
请引用或摘抄本站文章信息的朋友,保留本站链接及作者信息,保护版权,谢谢。

构建高性能大容量开源邮件系统- ExtMail

Postfix在中国官方网站

TOP

如果你可以把文档发到我的EMAIL里,我可以帮你处理一下,对于文档处理我还是不错的,老手。我的EMAIL:q12345555@126.com,qq:365411445,大家共同努力,干掉WINDOWS,

TOP

能給出.MySQL的开发包MySQL-devel-standard-4.1.14-0.rhel4.i386.rpm和MySQL-shared-standard-4.1.14-0.rhel4.i386.rpm的下在連接嗎?

TOP

引用:
下面是引用zebra888于2005-11-14 16:35发表的:
能給出.MySQL的开发包MySQL-devel-standard-4.1.14-0.rhel4.i386.rpm和MySQL-shared-standard-4.1.14-0.rhel4.i386.rpm的下在連接嗎?
google搜索一下就有。或者找到CentOS的下载Mirror,有在线http的下载的。
请引用或摘抄本站文章信息的朋友,保留本站链接及作者信息,保护版权,谢谢。

构建高性能大容量开源邮件系统- ExtMail

Postfix在中国官方网站

TOP

在安裝中碰到點問題。
按樓主的方法安装Zlib有點問題
後改成︰  ./configure --prefix=/usr --shared
          make
          make check
          make install

修改Apache的设置,增加对“/usr/local/httpd/htdocs/postfixadmin/admin”目录的访问控制:
vi /usr/local/httpd/conf/httpd.conf
<Directory /usr/local/httpd/htdocs/postfixadmin/admin>
AuthType Basic
AuthName "Welcome to Postfix Admin"
AuthUserFile /usr/local/httpd/conf/postfix
Require valid-user
</Directory>
/usr/local/httpd/bin/htpasswd -c /usr/local/httpd/conf/postfix admin

在httpd.conf 找不到相管資料。能給出詳細的注解。

TOP

引用:
下面是引用zebra888于2005-11-24 15:36发表的:
在安裝中碰到點問題。
按樓主的方法安装Zlib有點問題
後改成︰  ./configure --prefix=/usr --shared
            make
            make check
.......
找不到相关资料?找不到哪些相关资料呢?不解中。。
请引用或摘抄本站文章信息的朋友,保留本站链接及作者信息,保护版权,谢谢。

构建高性能大容量开源邮件系统- ExtMail

Postfix在中国官方网站

TOP

引用:
下面是引用zebra888于2005-11-24 15:36发表的:
在安裝中碰到點問題。
按樓主的方法安装Zlib有點問題
後改成︰  ./configure --prefix=/usr --shared
             make
             make check
.......
谢谢,关于zlib的安装问题我已经修改过来。关于apache的auth问题,你可以看一下官方网站的帮助文档:

http://httpd.apache.org/docs/2.0/howto/auth.html
欢迎访问我的blog http://www.7sunshine.cn/

TOP

正在看。謝謝﹗

TOP

mysql -u root <DATABASE_MYSQL.TXT   
ERROR 2002 (HY000): Can&#39;t connect to local MySQL server through socket &#39;/var/lib/mysql/mysql.sock&#39; (2)

我再配置的时候,出现这个错误,怎么回事,我看了一下,/var/lib/mysql/下就没有mysql.sock
这是怎么回事呢,前面都是按照楼主的做法做的

TOP

引用:
下面是引用bios于2005-12-01 10:40发表的:
mysql -u root <DATABASE_MYSQL.TXT    
ERROR 2002 (HY000): Can&#39;t connect to local MySQL server through socket &#39;/var/lib/mysql/mysql.sock&#39; (2)

我再配置的时候,出现这个错误,怎么回事,我看了一下,/var/lib/mysql/下就没有mysql.sock
这是怎么回事呢,前面都是按照楼主的做法做的
看启动了mysql没有。。如启动,看mysql.sock的路径是否指向那里?
请引用或摘抄本站文章信息的朋友,保留本站链接及作者信息,保护版权,谢谢。

构建高性能大容量开源邮件系统- ExtMail

Postfix在中国官方网站

TOP

引用:
下面是引用zebra888于2005-11-24 15:36发表的:
在安裝中碰到點問題。
按樓主的方法安装Zlib有點問題
後改成︰  ./configure --prefix=/usr --shared
            make
            make check
.......
那些资料当然你找不到了,都是自己手动加进去的

TOP

很慚愧。我安了几次還是有點問題。樓主能否把配置文件打包貼出來。供下載﹗
謝謝。。。

TOP

发新话题