Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1538677
  • 博文数量: 416
  • 博客积分: 10061
  • 博客等级: 上将
  • 技术积分: 3287
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-05 11:12
个人简介

技术在于专研

文章分类

全部博文(416)

文章存档

2021年(3)

2015年(34)

2013年(2)

2012年(1)

2011年(2)

2010年(5)

2007年(344)

2006年(25)

分类: LINUX

2007-08-16 14:12:23

很久之前就计划写一个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的版本:
,你可以使用“rpm -aq |grep kernel”命令查找已经安装的内核rpm包。
从下面的URL下载db 4.3.29的源代码:

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的源代码:

安装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的源代码:

卸载系统自带的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形式发布的二进制发行包:

增加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的源代码:

增加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的源代码:

安装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,在浏览器的地址栏中输入“

卸载系统自带的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的源代码:

从下面的URL下载Postfix 2.2.8的VDA补丁程序:
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:
'>>/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的日志进行分析,详细的情况见:

  你可能还对以下内容感兴趣:linux系统安装,linux操作系统安装,如何安装linux系统,linux系统安装方法,linux系统安装教程,linux安装系统下载,linux系统的安装,硬盘安装linux系统,linux系统安装指南,linux系统安装步骤,linux系统安装说明,linux postfix,linux 邮件系统,postfix 安装,postfix 发送邮件,操作系统安装不上,系统安装不上,xp系统安装不上,在u盘上安装系统,从硬盘上安装系统。
阅读(952) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~