安装准备工作
下载 xampp-linux-1.7.3a.tar.gz,mysql-5.1.41.tar.gz,openssl-0.9.8l.tar.gz,postfix-2.4.5.tar.gz,cyrus-sasl-2.1.24rc1.tar.gz
卸载sendmail
# service sendmail stop
# -rpm -e --nodeps sendmail
编译gcc.
# rpm -ivh cpp-4.1.2-42.el5.i386.rpm
# rpm -ihv kernel-headers-2.6.18-92.el5.i386.rpm
# rpm -ivh glibc-headers-2.5-24.i386.rpm
# rpm -ivh glibc-devel-2.5-24.i386.rpm
# rpm -ivh libgomp-4.1.2-42.el5.i386.rpm
# rpm -ivh gcc-4.1.2-42.el5.i386.rpm
安装:g++
# rpm -ihv libstdc++-devel-4.1.2-42.el5.i386.rpm
# rpm -ihv gcc-c++-4.1.2-42.el5.i386.rpm
# rpm -ihv ncurses-devel-5.5-24.20060715.i386.rpm
安装 bind 先检查ip设置
# rpm -ivh bind-libs-9.3.4-6.P1.el5.i386.rpm
# rpm -ivh bind-libbind-devel-9.3.4-6.P1.el5.i386.rpm
# rpm -ivh bind-9.3.4-6.P1.el5.i386.rpm
# rpm -ivh bind-chroot-9.3.4-6.P1.el5.i386.rpm
# rpm -ivh bind-sdb-9.3.4-6.P1.el5.i386.rpm
# rpm -ivh bind-devel-9.3.4-6.P1.el5.i386.rpm
# rpm -ivh bind-utils-9.3.4-6.P1.el5.i386.rpm
# rpm -ivh caching-nameserver-9.3.4-6.P1.el5.i386.rpm
DNS配置
1)、首先编辑 named.conf 文件
# cd /var/named/chroot/etc/
# cp -p named.caching-nameserver.conf named.conf
注:使用cp -p 参数在复制的时候文件的属性不会改变。如果直接 cp 则要修改此文件的属主:
#chown :named named.conf
编辑 named.conf文件进行配置。
# vi named.conf
options {
listen-on port 53 { 127.0.0.1; }; //127.0.0.1 改为 any
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
query-source port 53;
query-source-v6 port 53;
allow-query { any; }; //localhost 改为 any
forwarders { 208.67.222.222; }; // 此行默认没有,如果内网使用此dns 服务器可以设置 dns 转发,这里一定是一个有效的 dns 服务器地址,则添加这两行 。
forward only;
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view localhost_resolver {
match-clients { any; }; //localhost 改为 any
match-destinations { any; }; //localhost 改为 any
recursion yes;
include "/etc/named.rfc1912.zones";
};
4)、然后编辑 /var/named/chroot/etc/named.rfc1912.zones
# vi named.rfc1912.zones //dns 服务器的区域主配置文件
在最后添加自己的 dns 区域 如果有多个则类似添加
zone "test.com" IN { // test.com 我实验用的区域,正向解析区域
type master;
file "test.zone"; // test.com.zone本区域的配置文件
allow-update { none; };
};
zone "0.168.192.in-addr.arpa" IN { //0.168.192 反向解析区域
type master;
file "test.local"; // 0.168.192 反向解析区域配置文件
allow-update { none; };
};
5)、这两个区域配置文件可以分别直接拷贝 /var/named/chroot/var/named/localdomain.zone 和
/var/named/chroot/var/named/named.local
# cd /var/named/chroot/var/named/
# cp -p localdomain.zone test.zone
# cp -p named.local test.local
注意:这两个配置文件名一定要跟named.rfc1912.zones 你定义的名称相同
下面主要是编辑这两个文件了。
# vi test.local
$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS test.com.
244 IN PTR test.com. //添加反向解析记录
245 IN PTR www.test.com. //添加反向解析记录
246 IN PTR mail.test.com. //添加反向解析记录
14 是指的 dns 服务器IP:192.168.0.244 的最后地址区域
6)、# vi test.zone
$TTL 86400
@ IN SOA localhost root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS test.com //添加域名服务器记录-NS记录(设置当前域的DNS服务器名称)
IN MX 5 mail //添加邮件交换记录-MX记录(设置mail.leisure.com主机作为邮件服务器)
test.com IN A 192.168.0.244 //添加正向解析
www IN A 192.168.0.245 //添加正向解析
mail IN A 192.168.0.246 //添加正向解析
7)、最后就是修改/etc/resolv.conf文件了. 也就是添加主dns 服务器
# vi /etc/resolv.conf
nameserver 192.168.0.244
8)、测试:
#named-checkzone test.com /var/named/chroot/var/named/test.zone //测试正向区域文件(文件没有语法错误则显示OK,有错误则显示错误内容)
同理测试反向解析文件
9)、启动 bind 服务
#service named start
ok
到此配置就结束了,如果开启了selinux 则要设置一下selinux,因为不配置这个的话就不会让别人访问你的DNS服务器。 防火墙开启 选择“Firewall Configuration”---按 “Tab”键切换到“Run Tool”—回车—“Security Level”选项要在“Enabled”前面按一下“Tab”键---“SelLinux”选项要选“Disabled”—按一下“Tab”键---选中“Customize”---弹出新对话框---在“Other Port”栏目里输入“53:tcp 53:udp”—“OK”—返回上一个对话框—“OK”—对话框自动关闭。配置完成。
# ntsysc
这只named 开启自动启动即可;
实验中可关闭Selinux,开启服务service named start.
10)、以上即是配置主域名服务器过程,如果是从域名服务器,这个配置过程也是一样的,只需要改动named.rfc191ns2.zones文件即可
zone "test.com" IN {
type slave;
file "slaves/leisure.com.zone"; //在/var/named/chroot/var/named/slaves
masters { 192.168.1.12; }; 添加区域配置文件leisure.com.zone既可
};
zone "0.168.192.in-addr.arpa" IN {
type slave;
file "slaves/0.168.192.zone"; //在/var/named/chroot/var/named/slaves
masters { 192.168.1.12; }; 添加区域配置文件 0.168.192.zone 即可
};
11)、域名解析测试系统自带的 nslookup 工具
# nslookup
> www.test.com
Server: 192.168.0.244
Address: 192.168.0.244#53
Name: www.test.com
Address: 192.168.0.244
>set type=mx
>test.com
Server: 192.168.0.244
Address: 192.168.0.244#53
leisure.com mail exchanger = 5 mail.test.com.
其它命令:
#rndc reload 一个非常有用的命令,能在不关闭服务的情况下,即时更新bind;另nslookup交互环境中,可以用命令server 192.168.1.102指定此DNS服务器为提供服务的DNS服务器
标准资源记录
-----------------------------------------------------------------------
资源记录文本名 意义 记录类型 功能
-----------------------------------------------------------------------
Start of Authority 授权开始 SOA 标记区数据的开始,定义影响整个区的参数
Name Server 名字服务器 NS 标明域的名字服务器
Address 地址 A 转换主机名到地址
Pointer 指针 PTR 转换地址到主机名
Mail Exchange 邮件交换 MX 标明发往给定域名的邮件应传送到的位置
Canonical Name 正规名 CNAME 定义主机名别名
HOST information 主机信息 HINFO 描绘主机硬件和操作系统的信息
Wellknown Service 着名服务 WKS 通告网络服务
DNS使用MX记录来实现邮件路由,它规定了域名的邮件服务器要么处理,要么向前转发有关该域名的邮件.处理邮件是指将其传送给其地址所关联的个人,向前转发邮件是指通过SMTP协议将其传送给其最终目的地.为了防止邮递路由,MX记录除了邮件交换器的域名外还有一个特殊参数:优先级值.优先级值是个从0到65535的无符号整数,它给出邮件交换器的优先级别.
优先级值自身并不重要,关键在于它同其它邮件交换器的优先级值的相对大小,优先级值相对越小,优先级越高.邮件总是首先试图传递给优先级值相对最小的邮件交换器.失败后才试图传递给优先级值稍大的邮件交换器.邮件总是试遍了同一优先级的邮件交换器,失败后才试图传递给优先级稍低的邮件交换器.
注意你列为邮件交换器的主机必须拥有地址记录.
例如:
mail A 172.16.0.3
MX 10 mail.test.com.
管理工具
#dig
named.ca文件的作用是告诉你的服务器在哪里可以找到根域的域服务器,这个文件 一定要保证正确无误,一般来说,这个文件几乎不会变动,但是不能保证不会变动,最好是 每一,两个月同步一下.
使用下面的命令获得新的named.ca文件
dig @.aroot-servers.net.ns >/var/named/named.ca
#rndc
rndc这个指令是由系统管理员用来管理域服务器的操作,在终端中输入ndc help可得到帮助.
rndc restart 用来重新启动named进程;
rndc reload 用来装入新的数据库.
#nslookup
nslookup是用来询域名信息的命令,它分交互模式和非交互模式两种方式.
非交互模式:nslookup www.zhuhai.gd.cn
交互模式:nslookup
注意,当用nslookup查询时出现"Non-authoritative answer:",表明这次并没有到 网络外去查询,而是在缓存区中查找并找到数据.
交互模式除了能查询单个的主机,还可以查询DNS记录的任何类型,并且传输 一个域的整个区域信息。 当不加参数地调用,nslookup将显示它所用的名字服务器, 并且进入交互模式。
前提:开始前请确保您已经配置好指向此邮件服务器MX记录及其它DNS设置。
一、安装XAMPP
# tar xvfz xampp-linux-1.7.3a.tar.gz -C /opt
将lampp加入服务队列
# cp -p /opt/lampp/lampp /etc/rc.d/init.d
# chkconfig --add lampp
# chkconfig --level 35 lampp on
配置环境变量
# export PATH=$PATH:/opt/lampp/bin
# service lampp start
将mysql的include目录拷贝到xampp的/opt/lampp/lib/mysql目录下,mysql-5.1.41可在官网下载,提取其中的include文件夹即可,一下依赖包同样操作。
include目录是mysql-5.1.41安装目录里面自带的.
配置mysql库文件搜索路径
# echo "/opt/lampp/lib/mysql" >> /etc/ld.so.conf
# ldconfig -v
将openssl的include拷贝到xampp的/opt/lampp/share/openssl目录下
include目录是openssl-0.9.8l安装目录里面自带的.
配置openssl
# mv /usr/bin/openssl /usr/bin/openssl.OFF
# mv /usr/include/openssl /usr/include/openssl.OFF
# rm /usr/lib/libssl.so
# ln -s /opt/lampp/bin/openssl /usr/bin/openssl
# ln -s /opt/lampp/share/openssl/includ/openssl /usr/include/openssl
# ln -s /opt/lampp/lib/libssl.so.0.9.8 /usr/lib/libssl.so
配置库文件搜索路径
# echo "/opt/lampp/lib" >> /etc/ld.so.conf
# ldconfig -v
检测安装结果
# openssl version
OpenSSL 0.9.8l 5 Nov 2009
二、安装cyrus-sasl-2.1.24rc1
# mkdir -p /usr/local/sasl2
# tar -zxvf cyrus-sasl-2.1.24rc1.tar.gz
# ./configure --prefix=/usr/local/sasl2 --disable-gssapi --disable-anon --disable-sample --disable-digest --enable-plain --enable-login --enable-sql --with-\mysql=/opt/lampp/lib/mysql --with-mysql-includes=/opt/lampp/lib/mysql/include/ --with-mysql-libs=/opt/lampp/lib/mysql --with-authdaemond=/usr/local/courier-\authlib/var/spool/authdaemon/socket --with-saslauthd=/var/run
# make
# make install
(//如遇到 des.h: No such file or directory 时
cp /XXX/cyrus-sasl-X.X.XX/mac/libdes/public/des.h /XXX/cyrus-sasl-X.X.XX/)
关闭原有的sasl:
# mv /usr/lib/sasl2 /usr/lib/sasl2.OFF
# ln -sv /usr/local/sasl2/lib/* /usr/lib
postfix 2.3以后的版本会分别在/usr/local/lib和/usr/local/include中搜索sasl库文件及头文件,故还须将其链接至此目录中:
# ln -sv /usr/local/sasl2/lib/* /usr/local/lib
# ln -sv /usr/local/sasl2/include/sasl/* /usr/local/include
创建运行时需要的目录并调试启动
# mkdir -pv /var/state/saslauthd
# /usr/local/sasl2/sbin/saslauthd -a shadow pam -d
启动并测试
# /usr/local/sasl2/sbin/saslauthd -a shadow pam
# /usr/local/sasl2/sbin/testsaslauthd -u root -p root用户密码
配置库文件搜索路径
# echo "/usr/local/sasl2/lib" >> /etc/ld.so.conf
# echo "/usr/local/sasl2/lib/sasl2" >> /etc/ld.so.conf
# ldconfig -v
三、安装db-4.8.26.tar.gz
# mkdir -p /usr/local/BerkeleyDB
# tar zxvf db-4.8.26.tar.gz
# cd db-4.8.26/build_unix
# ../dist/configure --prefix=/usr/local/BerkeleyDB
# make
# make install
修改相应的头文件指向
# ln -sv /usr/local/BerkeleyDB/include /usr/include/db4
# ln -sv /usr/local/BerkeleyDB/include/db.h /usr/include/db.h
# ln -sv /usr/local/BerkeleyDB/include/db_cxx.h /usr/include/db_cxx.h
配置库文件搜索路径
# echo "/usr/local/BerkeleyDB/lib" >> /etc/ld.so.conf
# ldconfig -v
四、安装Postfix-2.4.5
# mkdir -p /usr/local/postfix
# mkdir -p /etc/postfix
# groupadd -g 2525 postfix
# useradd -g postfix -u 2525 -s /sbin/nologin -M postfix
# groupadd -g 2526 postdrop
# useradd -g postdrop -u 2526 -s /bin/false -M postdrop
# tar zxvf postfix-2.4.5.tar.gz
# cd postfix-2.4.5
# make makefiles 'CCARGS=-DHAS_MYSQL -I/opt/lampp/lib/mysql/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/sasl2/include/sasl -I/usr/local/BerkeleyDB/include -DUSE_TLS -I/opt/lampp/share/openssl/include ' 'AUXLIBS=-L/opt/lampp/lib/mysql -lmysqlclient -lz -lm -L/usr/local/sasl2/lib -lsasl2 -L/usr/local/BerkeleyDB/lib -L/opt/lampp/lib -lssl -lcrypto'
# make
# make install
按照以下的提示输入相关的路径([]号中的是缺省值,”]”后的是输入值)
install_root: [/] /
tempdir: [/usr/local/src/ postfix-2.4.5] /tmp
config_directory: [/etc/postfix] /etc/postfix
daemon_directory: [/usr/libexec/postfix] /usr/local/postfix/libexec
command_directory: [/usr/sbin] /usr/local/postfix/sbin
queue_directory: [/var/spool/postfix]
sendmail_path: [/usr/sbin/sendmail]
newaliases_path: [/usr/bin/newaliases]
mailq_path: [/usr/bin/mailq]
mail_owner: [postfix]
setgid_group: [postdrop]
html_directory: [no] /var/www/postfix_html
manpages: [/usr/local/man] /usr/local/postfix/man
readme_directory: [no]
说明:这里的postfix将安装在独立的目录/usr/local/postfix中,目的是为了方便管理
生成别名二进制文件,这个步骤如果忽略,会造成postfix效率极低:
# newaliases
2.进行一些基本配置,测试启动postfix并进行发信
# vi /etc/postfix/main.cf
修改以下几项为您需要的配置
myhostname = mail.benet.org
myorigin = benet.org
mydomain = benet.org
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 192.168.1.0/24, 127.0.0.0/8
inet_interfaces = all
说明:
myorigin参数用来指明发件人所在的域名;
mydestination参数指定postfix接收邮件时收件人的域名,即您的postfix系统要接收到哪个域名的邮件;
myhostname 参数指定运行postfix邮件系统的主机的主机名,默认情况下,其值被设定为本地机器名;
mydomain参数指定您的域名,默认情况下,postfix将myhostname的第一部分删除而作为mydomain的值;
mynetworks 参数指定你所在的网络的网络地址,postfix系统根据其值来区别用户是远程的还是本地的,如果是本地网络用户则允许其访问;
inet_interfaces 参数指定postfix系统监听的网络接口;
注意:
1、在postfix的配置文件中,参数行和注释行是不能处在同一行中的;
2、任何一个参数的值都不需要加引号,否则,引号将会被当作参数值的一部分来使用;
3、每修改参数及其值后执行 postfix reload 即可令其生效;但若修改了inet_interfaces,则需重新启动postfix;
4、如果一个参数的值有多个,可以将它们放在不同的行中,只需要在其后的每个行前多置一个空格即可;postfix会把第一个字符为空格或tab的文本行视为上一行的延续;
启动postfix
/usr/local/postfix/sbin/postfix start
连接postfix,验正服务启动状况:
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 mail.benet.org ESMTP Postfix
ehlo mail.benet.org
250-mail.benet.org
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from:[email protected]
250 2.1.0 Ok
rcpt to:[email protected]
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
subject:Mail test!
Mail test!!!
.
250 2.0.0 Ok: queued as AB94A1A561
quit
221 2.0.0 Bye
Connection closed by foreign host.
切换到redhat用户进行收信:
# su - redhat
$ mail
Mail version 8.1 6/6/93. Type ? for help.
"/var/spool/mail/redhat": 1 message 1 new
>N 1 [email protected] Wed Sep 5 10:59 15/488 "Mail test!"
&
quit
NDS部分参考'熟悉的陌生人'的博客http://blog.chinaunix.net/u2/69106/showart_1797422.html,
其他部分请阅读'老张'的博客http://blog.chinaunix.net/u2/64992/article_81888.html,本文部分内容参考自该博客,xampp安装请参照http://www.apachefriends.org/zh_cn/xampp-linux.html。