LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 822|回复: 1

powerbsd 7月8日更新手记

[复制链接]
发表于 2003-7-8 01:40:06 | 显示全部楼层 |阅读模式
7月8日更新手记

在下载区更新了一份关于freebsd下mail架设整套解决方案
发表于 2003-7-8 17:19:47 | 显示全部楼层
这是我上个月做邮件服务的手记,但是一直没有整理好,有记录上的小错:)
不敢拿出来献丑~:p

小型密集型部门级服务器--FreeBSD实现
版本v0.1 2003年6月22日
作者:nico
E-mail: nico@njfu.edu.cn
作者主页:http://www.wo-com.com
-------------------------------------------------------------------------------

一  部署准备

环境描述
-------------------------------------------------------------------------------
一个小型机房14台机器,共在一个c类100M以太网络中,通过Nat方式与Internet连通,在该网络环境中有Windows、 Freebsd 、Linux (Redhat Debian) 、Solaris 等类型的主机。
Network         202.119.209.0
Net mask        255.255.255.0
Gateway        202.119.209.1
nameserver        202.119.209.70

将部署之Server硬件资源
-------------------------------------------------------------------------------
CPU         Celeron 400 MHZ
RAM         128 M
DISK         4GB

将部署之Server网络资源
-------------------------------------------------------------------------------
ip-addr:202.119.209.70
DomainName :        www.nsn.com
                Mail.nsn.com

计划提供之服务
-------------------------------------------------------------------------------
1.        www服务
作为本实验环境的一个Web server,实现Webmail;

2.        域名解析服务 ;
解析域名 nsn.com ,作为本实验环境的Primary Name server;

3.        邮件服务
为本实验环境中的所有客户端(Windows、Linux 、FreeBSD、Solaris)提供POP3以及SMTP邮件服务;

4.        FTP服务
为www管理员提供上传的途径、支持多用户FTP上传。

所需要之软件包
-------------------------------------------------------------------------------
操作系统:
        FreeBSD 4.8release

www服务:
        httpd-2.0.45.tar.gz
        php-4.3.0.tar.gz       
        mysql-3.23.53.tar.gz

域名解析服务:
        bind-9.2.0rc1.tar.gz
        named.root

邮件服务:
        qmail-1.03.tar.gz                               
        qmail-103.patch
        qmail-smtpd-auth-0.30.tar.gz
        ucspi-tcp-0.88.nobase.patch
        ucspi-tcp-0.88.tar.gz
        checkpassword-0.90.tar.gz       
        cmd5checkpw-0.22.tar.gz
        vpopmail-5.3.16.tar.gz
autorespond-2.0.0.tar.gz
        ezmlm-0.53.tar.gz
        ezmlm-idx-0.40.tar.gz
        igenus_2_20030516_snap.tgz
        qmailadmin-1.0.6.tar.gz

FTP 服务:
        pure-ftpd-1.0.15.tar.gz
pureftpd_php_manager.zip
管理工具:
        phpMyAdmin-2.5.0-php.zip
        phpSysInfo-2.1.tar.gz

二 操作系统部署

约定
-------------------------------------------------------------------------------
在本文档中:
以“#”开始的语句为在root shell情况下执行的代码;
以“mysql>”开始的代码为在mysql下执行的代码;
以“//”开始的语句为注释

操作系统的安装与定制
-------------------------------------------------------------------------------
忽略 kernel configuration,等系统安装完毕以后再重新编译内核
安装类型选择developer
分区情况:
/        300m                       
/boot         30m
/usr        1500m
/var        1300m
/tmp        700m                       
swap        256M       
分区的注意点:
1.        /tmp的大小很重要,当系统很繁忙的时候,就会频繁地访问/tmp,所以建议将/tmp单独作为一个分区;
2.        /var作为一个单独的分区的原因是qmail的默认安装点是/var/qmail,所以当服务器投入使用的时候/var的访问量也必然不低。
3.        swap为内存的1.5到2倍

安装freebsd的时候最好是跟着安装提示做,我个人认为freebsd的安装
程序不是很稳定,如果不按步就班地做,经常会出问题,尤其是fdisk
和disklabel那部分
安装时顺便将bash,lynx,unzip安装上

---------------------------------小参考--------------------------
bash
linux的标准shell,我觉得它比freebsd默认的tcsh友好,所以我比较喜欢使用
但是请不要将你的root的shell改成bash,因为这样可能导致root不能登陆,我只在
系统维护时使用它。
lynx
在没有图形界面时,是个不可缺少的浏览器,爱死它了
------------------------------------------------------------------

配置系统基本环境
------------------------------------------------------

添加用户
#pw useradd nico -g wheel
将用户加入wheel组是为了,能让用户使用su,成为root。freebsd默认的ssh策略是不让root登陆的,所以这个改动对远程管理非常有用。这样我就可以在我机器上对这个网络环境里面的服务器进行管理,不用到处跑了。

配置用户shell环境
vi ~/.cshrc
添加
alias ls        ls -G
alias la        ls -aG
alias lf        ls -FAG
alias ll        ls -lAG
alias rm        rm -i
alias cp        cp -i
alias mv        mv -i

对cp,rm,mv分别设置别名,添加参数-i,是为了防止误删除和覆盖文件,这对于root来说就更是重要,如果root不小心将“rm –rf .”写成了“rm –rf /” 那么情况就会十分严重了,用了-i后就可以有个后悔的机会J
对ls添加-G是为了让终端能以彩色显示文件与目录,这样能更系统更人性化。

定制内核
-----------------------------------------------------
去除SCSI、RAID等不使用的功能,一精简内核,不做太多和太极端的优化。

三 关键子系统部署
-------------------------------------------------------------------------------
建立/tmp/software
#mkdir /tmp/software
以存放下载的软件

部署域名解析服务
-------------------------------------------------------------------------------
#tar zxvf bind-9.2.0rc1.tar.gz
#cd bind-9.2.0rc1
#./configure \
--prefix=/usr/local/named \
#make
#make install
#make clean

配置named
#cd /usr/local/named
#mkdir etc
#cd etc
创建 named.conf
// named.conf内容参考附件
#/usr/local/named/sbin/rndc-confgen > /usr/local/named/etc/rndc.conf
将rndc.conf文件里的key拷贝到named.conf,实现rndc对named的管理
#tail -n10 rndc.conf | head -n9 | sed -e s/#\ //g >> named.conf
配置名称数据库
#mkdir /var/namedb/
将准备好的db.202.119.209 localhost.rev nsn.com.zone拷贝到/var/namedb
//文件内容参考附件

启动named
#./named -gc ../etc/named.conf &
#/usr/local/named/sbin/rndc status
number of zones: 5
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
server is up and running

ok!named已经成功启动并运行了

设置启动运行
#ehco "/usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf &" >> /etc/rc.local

部署www服务
-------------------------------------------------------------------------------
安装mysql
-----------------------------------------------------
#tar zxvf mysql-3.23.53.tar.gz
#cd mysql-3.23.53
#./configure --prefix=/usr/local
#make && make install
#make clean
#pw groupadd mysql
#pw useradd mysql -g mysql -d /usr/local/mysql -s /sbin/nologin
#cd /usr/local/mysql
#mkdir var
#chown -R root:mysql .
#chown -R mysql:mysql var
#./bin/mysql_install_db
#./bin/safe_mysqld -u mysql
#./bin/mysqladmin -u root password 'mypassword'
#ln -s /usr/local/mysql/bin/mysql /bin/mysql

安装apache+php
-----------------------------------------------------
#tar zxvf httpd-2.0.45.tar.gz
#tar zxvf php-4.3.0.tar.gz
#cd httpd-2.0.45

#./configure \
--prefix=/usr/local/apache \
--enable-so \
--enable-shared=max \

#make
#make install
#make clean

#cd /tmp/software/php-4.3.0

#./configure \
--with-mysql=/usr/local/mysql \
--with-apxs2=/usr/local/apache/bin/apxs \
--enable-track-vars \
--enable-force-cgi-redirect \
--enable-pic \
--enable-inline-optimitation \
--enable-memory-limit \
--enable-bcmath \
--enable-calendar \
--enable-dbx \
--enable-dio \
--enable-mcal \
--with-config-file-path=/usr/local/apache/conf
#make && make install
#cd /usr/local/apache/conf
#cp /tmp/software/php-4.3.0/php.ini-dist ./php.ini

配置基本的服务器设置
-----------------------------------------------------
#pw groupadd apache
#pw useradd apache -g apache -s /sbin/nologin
建立web服务的目录
#mkdir /var/wwwroot
#mkdir /var/wwwroot/html
#mkdir /var/wwwroot/cgi-bin
建立邮件系统的web目录
#mkdir /var/mailwebroot
#mkdir /var/mailwebroot/html
#mkdir /var/mailwebroot/cgi-bin
#vi  httpd.conf
设置主机信息,修改如下:
User apache
Group apache
ServerAdmin webmaster@nsn.com
ServerName www.nsn.com
DocumentRoot "/var/wwwroot/html"
设置虚拟主机,建立mail.nsn.com 和www.nsn.com的虚拟主机
详细见附件里面的配置文件
#apachectl start
#touch info.php
用phpinfo()测试一下,ok!

安装管理工具
-----------------------------------------------------
#mkdir /var/wwwroot/nsn_admin_page/
安装phpsys,phpmyadmin
#tar zxvf phpSysInfo-2.1.tar.gz
#unzip phpMyAdmin-2.5.0-php.zip
#mv phpSysInfo-2.1 /var/wwwroot/nsn_admin_page/phpsysinfo
#mv phpMyAdmin-2.5.0-php /var/wwwroot/nsn_admin_page/phpmyadmin

配置管理工具的安全
-----------------------------------------------------
设置/var/wwwroot/nsn_admin_page/管理的安全认证
<Directory "/var/wwwroot/html/nsn_admin_page">
        Options Indexes
        AllowOverride None
        Order Allow,Deny
        Allow from all
        AuthType Basic
        AuthName "nsn administration zone!"
        AuthUserFile /var/wwwroot/.htUsers
        AuthGroupFile /var/wwwroot/.htGroups
        Require group administrator
</Directory>
#cd /var/wwwroot/
#touch /var/wwwroot/.htUsers
#touch /var/wwwroot/.htGroups
#chmod 600 .ht*
#chown -R apache:apache .
#/usr/local/apache/bin/htpasswd -c touch .htUsers administrator
#echo "administrtor:administrator" > .htGroups
防止未经过认证的人访问目录下的文件,保护管理工具的安全

部署邮件服务器
--------------------------------------------------------------------------------
安装Qmail
-----------------------------------------------------
添加qmail系统帐户
#pw groupadd nofiles
#pw useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent
#pw useradd qmaild -g nofiles -d /var/qmail -s /nonexistent
#pw useradd qmaill -g nofiles -d /var/qmail -s /nonexistent
#pw useradd qmailp -g nofiles -d /var/qmail -s /nonexistent
#pw groupadd qmail
#pw useradd qmailq -g qmail -d /var/qmail -s /nonexistent
#pw useradd qmailr -g qmail -d /var/qmail -s /nonexistent
#pw useradd qmails -g qmail -d /var/qmail -s /nonexistent
开始安装qmail
#tar zxvf qmail-1.03.tar.gz
#patch -p0 < qmail-103.patch                //DNS补丁
#tar zxvf qmail-smtpd-auth-0.30.tar.gz
#cd qmail-smtpd-auth-0.30                //smtp验证补丁
#cp * ../qmail-1.03
#patch -d ../qmail-1.03 < auth.patch
#cd ../qmail-1.03
#make setup check

添加邮件别名
#cd /var/qmail/alias
#touch .qmail-postmaster .qmail-root .qmail-mailer-daemon
#chown alias:nofiles .qmail*
#chmod 600 .qmail*

设置Maildir
#/var/qmail/bin/maildirmake /etc/skel/
# echo ./Maildir/ > .qmail
#cd /var/qmail
#cp boot/home rc
#vi rc
将Mailbox改成Maildir,如下
------------------------------------------
exec env - PATH="/var/qmail/binPATH" \
qmail-start ./Maildir splogger qmail
-------------------------------------------
#chown qmaild:qmail rc
#chmod u+x rc
配置qmail与系统整合
#ln -s /var/qmail /usr/local/qmail
#cd /usr/sbin
#mv sendmail sendmail.bak
#ln -s /var/qmail/bin/sendmail .
#cd ../lib
#mv sendmail sendmail.bak
#ln -s /var/qmail/bin/sendmail .

安装
checkpassword-0.90.tar.gz       
cmd5checkpw-0.22.tar.gz
ucspi-tcp-0.88.tar.gz
-----------------------------------------------------
#tar zxvf checkpassword-0.90.tar.gz
#tar zxvf cmd5checkpw-0.22.tar.gz
#tar zxvf ucspi-tcp-0.88.tar.gz

#cd ucspi-tcp-0.88
#make
#make setup check

#cd ../checkpassword-0.90
#make
#make setup check

#cd ../cmd5checkpw-0.22
#make
#make install

安装vpopmail
-----------------------------------------------------
#pw groupadd vchkpw
#pw useradd vpopmail -g vchkpw -s /sbin/nologin
#mysql>create database vpopmail
#mysql>grant all on vpopmail.* to vpopmail@localhost identified by 'yourpassword'
#tar zxvf vpopmail-5.3.16.tar.gz
#vi vmysql.h
填写好user和password
#./configure \
--enable-roaming-users=y \
--enable-default-domain=nsn.com \
--enable-mysql=y \
--enable-file-sync=n \
--enable-auth-logging=y \
--enable-passwd=n \
--enable-sqwebmail-pass=y \
--enable-defaultquota=10000000 \
--enable-ip-alias-dmain=n \
--enable-incdir=/usr/local/mysql/include/mysql \
--enable-libdir=/usr/local/mysql/lib/mysql
#make install-strip

#cd /home/vpopmail
#chmod +s bin/vchkpw
#echo ":allow" >> etc/tcp.smtp

#mkdir /etc/qmail
#touch  smtp.sh pop.sh
#cp etc/tcp.smtp /etc/qmail
#cd /etc/qmail/
#tcprules tcp.smtp.cdb tcp.smtp <tcp.smtp

#home/vpopmail/bin/vadddomain mail.nsn.com
建立webmaster@nsn.com的帐户

启动qmail
#cp qmail /sbin
#qmail start

-----------------------------------------------------
#mkdir autorespond
#tar zxvf autorespond -C autorespond
#gcc -Wall -o autorespond autorespond.c
#cp autorespond /usr/local/sbin/

-----------------------------------------------------
mysql>create database ezmlm
mysql>grant all on ezmlm.* to ezmlm@localhost indentified by 'yourpassword'
#tar zxvf ezmlm-0.53.tar.gz
#tar zxvf ezmlm-idx-0.40.tar.gz
#cp -Rf ezmlm-idx-0.40 ezmlm-0.53
#patch -p0 < ezmlm-idx-0.53.400.unified_41.patch
#make mysql
修改conf-sqlld conf-sqlcc
#make clean
#mak name
#make ch_GB
#make setup

安装qmailadmin
-----------------------------------------------------
#tar zxvf qmailadmin-1.0.6.tar.gz
#cd qmailadmin-1.0.6
#./configure \
--enable-cgibindir=/var/mailwebroot/cgi-bin/ \
--enable-htmldir=/var/mailwebroot/html/ \
--enable-autoresponder-bin=/usr/local/sbin
#make
#make install-strip
#cp /tmp/software/qmail/en-us.txt /usr/local/share/qmailadmin/html/en

安装qmailadmin
-----------------------------------------------------
tar zxvf igenus_2_20030516_snap.tgz
mv /var/mailwebroot/igenus
mysql>use vpopmail;
mysql>create table address
(
id int(11) unsigned NOT NULL auto_increment,
pw_id int(5) unsigned NOT NULL default '0',
name varchar(64) NOT NULL default '' ,
email varchar(128) NOT NULL default '',
UNIQUE KEY id (id),
KEY pw_id (pw_id)
);

mysql>alter table vpopmail drop primary key;
mysql>alter table vpopmail add column pw_id int(5) NOT NULL primary key auto_increment;

将php.ini中的register_globals设置为on
修改httpd.conf
设置User和Group为下
User vpopmail
Group vchkpw
#vi config/config_inc.php
#mkdir /var/mailwebroot/temp
#cd /var/mailwebroot/
#chown vpopmail:vchkpw temp
#chmod 755 temp
#cd /var/mailwebroot/igenus
#cp add2addr.php add2card.php

部署FTP服务
-------------------------------------------------------------------------------
安装pureftpd
-----------------------------------------------------
#./configure \
--prefix=/usr/local/pureftpd \
--with-mysql=/usr/local/mysql \
--with-paranoidmsg \
--with-shadow \
--with-welcomemsg \
--with-uploadscript \
--with-quotas \
--with-cookie \
--with-pam \
--with-virtualhosts \
--with-virtualroot \
--with-diraliases \
--with-sysquotas \
--with-ratios \
--with-ftpwho \
--with-throttling

#make
#make check
#make install

#chmod u+x pure-config.pl
#cp pure-config.pl /usr/local/sbin/
#cp pure-ftpd.conf /usr/local/etc/

编辑pure-ftpd.conf

#unzip pureftpd_php_manager.zip
#cd pureftpd_php_manager
#mv pureftpd-mysql.conf.sample /usr/local/etc/pureftpd-mysql.conf
#cd ..
#cp -R pureftpd_php_manager /var/wwwroot/html/pureftpd_php_manager
#cd /var/wwwroot/html/pureftpd_php_manager
#vi pureftp.config.php
修改里面的设置
-------------------------------------------------------------------------------
######################
####### SETUP ########
######################

        // 设置pureftpd-mysql.conf的位置,这个要注意,不要写错哦
        $PUREFTP_CONFIG_FILE    = '/usr/local/etc/pureftpd-mysql.conf';

        // The location where all the Forms directed to. (Mayby no change needed)
        $SELF_URL                               = 'index.php';

        // The location of your pure-ftpdwho binary  (set this to chmod 4711)
        $FTP_WHO                                = "/usr/local/sbin/pure-ftpwho";

#######################
# DEFAULT NEW-USER PARAMS #
#######################

$DefaultUser = "ftpuser";                       # 默认用户
$DefaultPass = "passwd";                        # 默认初始用户密码
$DefaultUid = "2002";                           # 默认的uid(设置为ftpusers的uid)
$DefaultGid = "2002";                    # 默认的gid(设置为ftpusers的gid)
$DefaultDir = "/var/ftproot/ftpusershome";  # 默认的用户主目录
$DefaultUL = "0";                               # 默认用户上传速率限制(KB/S)
$DefaultDL = "0";                               # 默认用户下载速率限制(KB/S)
$Defaultip = "*";                        # 设置用户可以从哪些IP登陆
$DefaultQS = "50";                       # 用户默认的quota
$Defaultcmt = "";                        # 默认备注信息
$DefaultQF = "0";                               # 默认文件数目quota
$PWC = "55";                                    # Vorsatz fuerr Crypt Password
-------------------------------------------------------------------------------
删除多余的东西
rm -f history.txt pureftpd-mysql.conf.sample
好用apache进行身份验证

在mysql中添加FTP用户数据库
mysql>DROP TABLE IF EXISTS ftpd;
                CREATE TABLE ftpd (
                User varchar(16) NOT NULL default '',
                status enum('0','1') NOT NULL default '0',
                Password varchar(64) NOT NULL default '',
                Uid varchar(11) NOT NULL default '-1',
                Gid varchar(11) NOT NULL default '-1',
                Dir varchar(128) NOT NULL default '',
                ULBandwidth smallint(5) NOT NULL default '0',
                DLBandwidth smallint(5) NOT NULL default '0',
                comment tinytext NOT NULL,
                ipaccess varchar(15) NOT NULL default '*',
                QuotaSize smallint(5) NOT NULL default '0',
                QuotaFiles int(11) NOT NULL default 0,
                PRIMARY KEY (User),
                UNIQUE KEY User (User)
                ) TYPE=MyISAM;

mysql>grant all on ftpd.* to pureftpd@localhost identified by 'yourpassword'

编辑/usr/local/etc/pureftpd-mysql.conf
将刚才在mysql中新建的用户和密码加入其中,选项很简单,只要注意不要输错
#pw groupadd ftpusers
#pw useradd ftpusers -g ftpusers
启动
#/usr/local/sbin/pure-config.pl /usr/local/etc/pure-ftpd.conf

然后测试http://ip/pureftpd_php_manager/index.php
添加一个用户,然后用FTP客户端登陆,ok!
以后添加用户的时候就将用户的主目录设置为其Web主目录,即实现个人主页的自助上传。
实现口令的md5加密
编辑pureftpd-mysql.conf
将MYSQLCrypt的方法改成md5,如下
MYSQLCrypt      md5
然后将mysql里ftp用户的密码都用md5加密
例如如果你的密码是"mypassword",在命令行下就可以
#mail# md5 -s mypassword
  MD5 ("mypassword") = 34819d7beeabb9260a5c854bc85b3e44
那么mysql里ftp用户的密码植就应该是 34819d7beeabb9260a5c854bc85b3e44

部署总结
-------------------------------------------------------------------------------
完成了这次的部署以后,在实验网络内的客户就可以使用该主机提供的服务来实现Web 资源的访问,邮件的收发等事务。管理员也可以通过该主机提供的FTP服务更新Web站点;使用qmailadmin,以Web形式管理邮件系统;使用SSH远程管理服务器。提供网络服务的目的就是要使每个人的生活更方便和优质。




附录A  安装参数解析
-------------------------------------------------------------------------------
Apache
--prefix=/usr/local/apache \                        //定义安装路径
--enable-so \                                        //支持DSO功能
--enable-shared=max \                                //编译尽可能多的共享模块

PHP
#./configure \
--with-mysql=/usr/local/mysql \                        //支持MySQL接口
--with-apxs2=/usr/local/apache/bin/apxs \        //生成apxs模块
--enable-track-vars \                                //支持跟踪变量
--enable-force-cgi-redirect \                        //强制执行CGI
--enable-pic \
--enable-inline-optimitation \                        //支持内联函数优化
--enable-memory-limit \                                //支持设置内存限制
--enable-bcmath \                                //支持数学精度函数
--enable-calendar \                                //支持日期转换
--enable-dbx \                                        //支持DBX
--enable-dio \                                        //支持直接I/O操作
--enable-mcal \                                        //支持MACL
--with-config-file-path=/usr/local/apache/conf        //定义配置文件存放路径

Vpopmail
#./configure \
--enable-roaming-users=y \                        //允许漫游用户
--enable-default-domain=nsn.com \                //设置默认域
--enable-mysql=y \                                //支持MySQL接口
--enable-file-sync=n \                                //支持文件写入同步
--enable-auth-logging=y \                        //支持验证记录
--enable-passwd=n \                                //使用密码验证
--enable-sqwebmail-pass=y \                        //使用sqwebmail密码
--enable-defaultquota=10000000 \                //设置默认用户磁盘限额
--enable-ip-alias-dmain=n \                        //支持IP别名
--enable-incdir=/usr/local/mysql/include/mysql \        //指定MySQLl的include位置
--enable-libdir=/usr/local/mysql/lib/mysql        //指定MySQL的lib位置

Pure-ftpd
#./configure \
--prefix=/usr/local/pureftpd \                //定义安装路径
--with-mysql=/usr/local/mysql \                //开启MySQL接口
--with-paranoidmsg \                        //不显示管理信息
--with-shadow \                                //支持shadow口令验证       
--with-welcomemsg \                        //支持欢迎消息
--with-uploadscript \                        //支持上传后执行指定脚本
--with-quotas \                                //支持磁盘限额功能
--with-cookie \                                //支持cookie
--with-pam \                                //支持pam验证
--with-virtualhosts \                        //支持虚拟主机
--with-virtualroot \                        //支持虚拟目录
--with-diraliases \                        //支持目录别名
--with-sysquotas \                        //使用系统磁盘限额
--with-ratios \                                //支持上传下载比率
--with-ftpwho \                                //支持查看在线用户               
--with-throttling                         //支持限制带宽

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表