一、关于Linux
1、Linux干什么用?
首先,很少有人用Linux做桌面系统,因为Windows桌面系统已经足够好了。我们主要把Linux用作网络服务器的操作系统。如果你和你的应用符合下面的几条,那么你合适使用Linux:
*不愿意花钱在操作系统和网络应用上。
*用D版系统受良心谴责或害怕承担责任。
*想得到和花钱的系统差不多的性能。
*在用户面前显得水平较高。
*认识几个弄Linux的高手,或者知道在哪里能够找到问题答案。
2、每种Linux发行包差别很多吗?
如果你在上世纪80年代末到95年之前这段时间大量使用PC机的话,那对于Linux你应该很好理解:它就象一个有着32位抢先多任务核心的DOS,其区别在于外表看起来像是一种UNIX。Linux是好多人用智慧堆砌起来的,初学者经常问:“RedHat好还是Slackware好?”。这个人同时还面临上百种选择,这的确让人头痛。大部分Linux发行包实际上很简单,几乎所有的发行包都有相同的内核(也许是不同版本),外部命令和数据文件的差别也仅仅局限于在文件系统中的存放位置不同(这导致了某些兼容性问题,因为在某些地方找不到特定的文件嘛)。另外就是有些发行包为了显示自己的卓而不群,在发行包中增加了一些自己的实用程序。实际上动手修改内核的厂商不算太多,因为这样会内核官方版本的不断更新而手忙脚乱。当然有一些嵌入式系统开发商在Linux基础上做了自己的系统另说。
拥有众多的发行包是Linux的一个很讨厌的问题,在这一点上,我更喜欢FreeBSD,因为它只有一个官方发行版本,也运行得比较稳定。可给Linux做软件的程序员太多了,Linux上面的资料也更多。记住:当一个家伙跟你说用哪个发行版本无所谓的时候,那他就是专家。
3、Linux业余爱好者的东西吗?
这样的宣传给了很多人这样的印象。其实,Linux是一个严肃的操作系统,拥有一切操作系统共有的特性。它可以用在很多严肃的场合。
4、Linux性能比Windows更好吗?
这里的答案会让你失望,据我以往的实际测试,2.2版本的Linux核心的性能比windows2000要低。值得欣慰的是2.4版本的核心性能有大幅度提高基本上接近了Windows2000。但Windows2000复杂的图形界面占用了相当的系统资源。
5、Linux比Windows更复杂更专业吗?
从复杂度上说,Windows2000要比Linux复杂很多。在核心技术上,Windows也更先进。
6、Linux更可靠吗?
应该从两个角度评价系统的可靠性。(1)系统自身的可靠性,两者象差不多。人们普遍认为的Windwos不如Linux可靠的印象来源于Windows众多的良莠不齐的软件。当然,Linux比Windows结构简单,在一定程度上也可以提高可靠性。(2)从安全性角度来说,Linux远远高于Windows系统,道理很简单:树大招风嘛。另外,Linux的源代码开放机制使得漏洞发现和消灭得很快。而Windows相对就显得比较官僚了。这里补充一点,我用过的最可靠的系统是BSD类的OS,可靠性和安全性都可圈可点。
7、Linux真的不用花一分钱吗?
大部分的发行包需要花少量的钱购买。当然你也可以从网络上DOWN。其实这些发行包未必符合你的应用,一般都需要经过一些改动和定制才能运行好。当然,花的钱跟Windows没法比。
二、Linux安装注意事项
现在的大部分发行包都很容易安装,基本上都是图形向导式的,每个发行包都不太相同,也无法一一描述,如果你连安装都不明白,那就别用Linux了。这里仅仅说明几个注意的问题。
1、如果要和Windows混装,一定要先装Windows,后装Linux。
2、分区的时候,根据计划安装的软件灵活决定分区。一般分区有:/,/root,/usr,/var和swap分区,其中swap分区类型和其他不同需要专gate选择一下,它的空间一般是物理内存的两倍即可。/root分区是紧急情况root用的,有64兆就行了。
3、当然,为了方便,你可以安装发行包给你做好的软件。但我安装Linux的习惯做法是开始就安装一个最小系统,然后安装所有的编译工具。安装编译工具的方法一般都通过你用的发行包的包管理工具实现,这样最方便。比如在TurboLinux中,运行/usr/sbin/Turbopkg就可以了。在管理工具中选择所有关于Developoment相关的选项或gcc相关选项,一般就可以了。
4、lilo一定要装。否则一旦出现分区问题都不好办。
5、如果和Windows混装的时候,装完了系统起不来了。可以用98启动盘启动,然后用FDISK /MBR回复主引导分区来保住Windows分区。
在安装了最小系统和全套的编译器后,我们应该得到一个比较干净的系统。在这个系统上,可以下载和安装各种应用软件了。
三、基本使用
1、文件系统
无论有多少个分区,整个文件系统都是一棵完整的树结构。经常用到的目录有:
(1)/usr:存放各种应用程序文件用。其中的/usr/local用来存放后安装的软件
(2)/var:用来存放所有的数据文件
(3)/proc:里面的文件用来表示系统内核的各种配置和状态。这一块不是真正的文件系统,而是内存里面的各种数据。可以从这里得到一些常用的系统信息。比如CPU内存什么的。
(4)/etc:这里是放置所有的系统配置文件。一般情况下,后安装的软件的配置文件不会放到这里。除非你是用RPM安装的随发行包配的软件或者故意这样做。我不喜欢把不同软件的文件混在一起,因此通常让不同的软件的配置文件放在各自的目录中。
2、常用的命令
这里我列出一些经常用的命令,具体的用法可以参见相关手册页(希望你的英文不象我这么差)。
vi(一定要会用这个你非常讨厌的东西,如果你屈服了,可以选择另一个叫做pico的编辑器,它有点象DOS的edit)
head(用来看很长的文件用)
tail(同上)
netstat(看网络状态)
tar(解开.tar.gz的压缩包)
ps(察看进程)
kill(干掉进程)
top(看系统状况)
shutdown(关闭系统)
cat(看文件内容)
ping (看网络连通状况)
ftp(传输文件)
man(手册)
上面这些命令都是最最常用的,一定要把基本用法记牢。事实上,每人能记住全部命令或一个命令的全部参数,记住几个常用的就行了。其他的查书。
3、内核升级
如果你不愿意冒险,可以跳过这个部分。不过根据我实际使用的经验,2.4.x版本的内核性能比2.2.x的性能至少提高40%,还是很值得一试的。现在最新的发行包几乎都带有新的2.4内核,但是版本号想对保守。这里,我的建议是在决定升级任何部分的时候,一定要首先看一下所谓的“currect version release note”信息,里面告诉你本次版本升级都有些什么改动。如果改动的内容不涉及你当前的环境或需求,只是增加了一些邪gate设备的驱动,你大可不必急着升级。补充一句话:Linux的内核版本号的中间一位是奇数的是非稳定版本,比如2.3,是偶数的才是稳定版本。
升级内核的步骤如下:
(1)首先在网上找到你打算升级的内核文件,一般名字是:linux-2.x.xx.tar.gz,把这个文件复制到/usr/src。(不知道在哪里找?看看:
http://www.kernel.org ,最好找到.tar.gz格式的,比如这里:
http://www.kernel.org/pub/linux/kernel/v2.x/)。下面的升级举例是从2.2.18升级到2.5.7(这是最新的内核了,你使用其它的版本别忘了改变版本号)
(2)解压缩:tar zxvf linux-2.5.7.tar.gz后生成一个目录:linux-2.5.7。
(3)进入/usr/src,用ls –l 命令可以看到src里面有一个连接,类似于:linux -> linux-2.2.18/ (连接指向你当前用的内核版本)。首先删除这个连接(rm linux),用ln -s linux-2.5.7 linux 命令重建连接。我想你一定不会连这里的版本号都照抄吧?
(4)进入linux-2.5.7 目录,如果不是第一次编译这个内核,最好用命令:make mrproper 删掉上次编译产生的.o文件等,当然以前保存的配置也丢了。
(5)用命令:make menuconfig命令调整内核配置以适应你目前的环境,记住,不懂的配置不要乱动。首要任务是调整各种硬件的环境,比如SCSI卡:SCSI support/SCSI low-level drivers,不知道现在的SCSI卡型号?在/proc/scsi中可以找到。还有网卡,在Network Device Support 里面。不知道现在的网卡型号?在这个文件里面写着呢:/proc/net/PRO_LAN_Adapters/eth0.info或/proc/pci文件中也可以找到 。在menuconfig中用空格键改变选项状态,前面的<*>表示该功能编译在内核中,主要是运行速度快。< >表示不需要该功能。表示把该功能编译成模块,通常为了减小尺寸,和更换方便而把某些驱动编译成模块。
(6)下面的事情比较程序化,照着做:make dep (检查文件的完整性,过程很复杂)
(7)make bzImage 注意大小写(真正开始编译了耶!我觉着这个最过瘾了,屏幕“哗啦哗啦”的,这时候你会感觉到,多少不知名的程序员在这个复杂的系统中贡献了自己的一份力量)
(8)make modules (编译那些被标记为的功能模块或驱动程序)
(9)make modules_install(把编译好的模块复制到指定地点,一般是:/lib/modules/ 。注意:不同版本号的模块是完全分开在不同目录中的,因为modules跟内核是紧密相关的,混用容易导致系统崩溃)
(10)cd /usr/src/linux-2.5.7/arch/i386/boot ,用命令:cp /usr/src/linux2.5.7/arch/i386/boot/bzImage /boot/vmlinuz-2.5.7 把文件bzImage文件改名成vmlinuz-2.5.7复制到/boot/
(11)cp /usr/src/linux-2.5.7/System.map /boot/System.map-2.5.7
(12)进入/boot目录,rm System.map
(13)在/boot目录中运行ln System.map-2.5.7 System.map 10-13两个步骤每次重新编译都要做。
(14)我开始提醒过的,但愿你安装了lilo (否则你就高唱:“神啊,救救我吧!”),编辑文件:/etc/lilo.conf ,做下面的编辑:
boot=/dev/sda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
lba32
default=linux-2.5.7
image=/boot/vmlinuz
? ?? ??? label=linux
? ?? ??? initrd=/boot/initrd
? ?? ??? read-only
? ?? ??? root=/dev/sda5
image=/boot/vmlinuz-2.5.7
? ?? ??? label=linux-2.5.7
? ?? ??? initrd=/boot/initrd
? ?? ??? read-only
? ?? ??? root=/dev/sda5
黑体字部分是后加的和修改的。万一你没有安装lilo,你只能修改/boot下面的连接指向你新的System.map和vmlinuz , 而不用修改lilo了。这样也能启动,但是一旦出现问题,你的机器就启动不了了。
(15)执行命令:lilo (用来更新lilo数据),注意输出的结果:带星号的是缺省的。
(16)祈祷,然后reboot 系统重新启动后,用uname –a 可看到新的内核起作用了。如果出现任何问题不能引导了,你需要在lilo的引导界面选择原来的内核启动,进入系统后重新改变内核参数,调整硬件或其他配置。然后重复前面所有过程。
四、主要的软件安装
前面说过,我的习惯是,装系统的时候就安装一个内核和编译系统,得到了一个干净的系统后,再安装其他的软件就比较清晰。另一点,除非搞不到源代码版本,一般情况下我都会下载官方版本的源代码文件,来重新编译之。同样的,选择软件版本要根据该软件的Release Note来决定,并非越新越好。这就是为什么很多软件都是几个版本齐头并进的发展之原因。这些软件不同版本之间的安装方[屏蔽]有少许不同,安装前一定要仔细阅读目录中的README文件和INSTALL文件,否则这些少许不同会造成不少得麻烦。下面描述的安装过程都核版本号紧密相关。另外,所有的软件都把程序文件的包拷贝到/usr/local/src目录中再解压缩,这是习惯。因为在Linux中习惯于把后来的软件装在/usr/local中。
(1)安装DNS服务器
1、从
www.isc.org下载bind 域名服务器软件。我们这里用的是bind8.3.0,bind8分支和bind9分支是并行发展的。根据自己的实际情况选择合适的bind版本。
2、mkdir /usr/src/bind83
3、下载的文件叫bind-src.tar.gz,复制到/usr/local/src/bind83目录下。
4、cd /usr/local/src/bind83
5、tar zxvf bind-src.tar.gz
6、cd src
7、make stdlinks
8、make clean
9、make depend
10、make all
11、make install
12、编辑配置文件:/etc/named.conf内容如下,需要更改的部分用黑体标出:
/*
* This is a worthless, nonrunnable example of a named.conf file that has
* every conceivable syntax element in use.??We use it to test the parser.
* It could also be used as a conceptual template for users of new features.
*/
/*
* C-style comments are OK
*/
// So are C++-style comments
# So are shell-style comments
// watch out for ";" -- it's important!
options {
? ?? ? directory "/var/named";? ?? ?? ?? ?? ???
// use current directory
? ?? ? named-xfer "/usr/libexec/named-xfer";? ?
// _PATH_XFER
? ?? ? dump-file "named_dump.db";? ?? ?? ?? ?
// _PATH_DUMPFILE
? ?? ? pid-file "/var/run/named.pid";? ?? ?? ?
?? // _PATH_PIDFILE
? ?? ? statistics-file "named.stats";? ?? ?? ?
// _PATH_STATS
? ?? ? memstatistics-file "named.memstats";? ???
// _PATH_MEMSTATS
? ?? ? check-names master fail;
? ?? ? check-names slave warn;
? ?? ? check-names response ignore;
? ?? ? host-statistics no;
? ?? ? deallocate-on-exit no;? ?? ?? ?? ?? ?? ?
// Painstakingly deallocate all
// objects when exiting instead of
// letting the OS clean up for us.
// Useful a memory leak is suspected.
? ?? ?? ?? ? // Final statistics are written to the
? ?? ?? ?? ? // memstatistics-file.
? ?? ? datasize default;
? ?? ? stacksize default;
? ?? ? coresize default;
? ?? ? files unlimited;
? ?? ? recursion yes;
? ?? ? fetch-glue yes;
? ?? ? fake-iquery no;
? ?? ? notify yes;? ?
// send NOTIFY messages.??You can set
? ?? ?? ? // notify on a zone-by-zone
? ?? ?? ? // basis in the "zone" statement
? ?? ?? ? // see (below)
? ?? ? serial-queries 4;? ?? ?? ?? ?? ?
// number of parallel SOA queries
? ?? ?? ? // we can have outstanding for master
? ?? ?? ? // zone change testing purposes
? ?? ? auth-nxdomain yes;? ?? ?? ?? ?
? ?? ?? ? // always set AA on NXDOMAIN.
? ?? ?? ? // don't set this to 'no' unless
? ?? ?? ? // you know what you're doing -- older
? ?? ?? ? // servers won't like it.
? ?? ? multiple-cnames no;? ?? ?? ?? ?
? ??? // if yes, then a name my have more
? ?? ??? // than one CNAME RR.??This use
? ?? ??? // is non-standard and is not
? ?? ??? // recommended, but it is available
? ?? ??? // because previous releases supported
? ?? ??? // it and it was used by large sites
? ?? ??? // for load balancing.
? ??? allow-query { any; };
? ??? allow-transfer { any; };
? ?? ? transfers-in 10;? ?? ?? ?? ?? ?
// DEFAULT_XFERS_RUNNING, cannot be
? ? // set > than MAX_XFERS_RUNNING (20)
? ?? ? transfers-per-ns 2;? ?? ?? ?? ?
? ?? ?? ? // DEFAULT_XFERS_PER_NS
? ?? ? transfers-out 0;? ?? ?? ?? ?? ?
? ?? ??? // not implemented
? ?? ? max-transfer-time-in 120;? ???
? ?? ??? // MAX_XFER_TIME; the default number
? ?? ??? // of minutes an inbound zone transfer
? ?? ??? // may run.??May be set on a per-zone
? ?? ??? // basis.
? ??? transfer-format one-answer;
? ??? query-source address * port *;
/*
? ??? * The "forward" option is only meaningful if you've defined
? ??? * forwarders.??"first" gives the normal BIND
? ??? * forwarding behavior, i.e. ask the forwarders first, and if that
? ??? * doesn't work then do the full lookup.??You can also say
? ??? * "forward only;" which is what used to be specified with
? ??? * "slave" or "options forward-only".??"only" will never attempt
* a full lookup; only the forwarders will be used.
*/
? ? forward first;
? ? forwarders { };? ?? ?? ?? ?? ?
// default is no forwarders
? ?? ? topology { localhost; localnets; };? ???
// prefer local nameservers
? ?? ? listen-on port 53 { any; };? ???
// listen for queries on port 53 on
? ? // any interface on the system
? ? // (i.e. all interfaces).??The
? ? // "port 53" is optional; if you
? ? // don't specify a port, port 53
? ? // is assumed.
? ? /*
? ??? * Interval Timers
? ??? */
? ? cleaning-interval 60;? ?? ?? ?
// clean the cache of expired RRs
? ? // every 'cleaning-interval' minutes
? ? interface-interval 60;? ?? ?? ?
// scan for new or deleted interfaces
? ? // every 'interface-interval' minutes
? ? statistics-interval 60;? ?? ?? ?
// log statistics every
? ? // 'statistics-interval' minutes
? ? maintain-ixfr-base no;? ?
// If yes, keep transaction log file for IXFR
? ? max-ixfr-log-size 20;? ?? ???
// Not implemented, maximum size the
? ? // IXFR transaction log file to grow
};
/*
* Control listeners, for "ndc".??Every nameserver needs at least one.
*/
controls {
? ?? ??? inet * port 52 allow { any; };
? ?? ?? ?? ? // a bad idea
? ?? ??? unix "/var/run/ndc" perm 0600 owner 0 group 0;
// the default
};
zone "rd.xxx.com" in {
? ?? ??? type master;? ?? ?? ?? ?? ?? ???
// what used to be called "primary"
? ?? ??? file "rd.xxx.com.db";
? ?? ??? check-names fail;
? ?? ??? allow-update { none; };
? ?? ??? allow-transfer { any; };
? ?? ??? allow-query { any; };
? ?? ??? // notify yes;? ?? ?? ?? ?? ?? ?
// send NOTIFY messages for this
? ?? ?? ?? ? // zone???The global option is used
? ?? ?? ?? ? // if "notify" is not specified
? ?? ?? ?? ? // here.
? ?? ??? also-notify { };? ?? ?? ?? ?? ?
// don't notify any nameservers other
? ?? ?? ?? ? // than those on the NS list for this
? ?? ?? ?? ? // zone
};
zone "223.99.211.in-addr.arpa" in {
? ?? ??? type master;? ?? ?? ?
? ?? ?? ??? // what used to be called "secondary"
? ?? ??? file "21.9.22.db";
? ?? ??? };
zone "0.0.127.in-addr.arpa" in {
? ?? ??? type master;
? ?? ??? file "127.0.0.db";
};
zone "." in {
? ?? ??? type hint;? ?? ?? ?? ?? ?? ?? ?
// used to be specified w/ "cache"
? ?? ??? file "named.root";
};
logging {
? ?? ??? /*
? ?? ?? ? * All log output goes to one or more "channels"; you can make as
? ?? ?? ? * many of them as you want.
? ?? ?? ? */
? ??? channel syslog_errors {? ?? ?? ?
// this channel will send errors or
? ?? ??? syslog user;? ?? ?? ?? ?
// or worse to syslog (user facility)
? ?? ??? severity error;
? ??? };
? ? category parser {
? ?? ? syslog_errors;
? ?? ?? ? // you can log to as many channels
? ?? ? default_syslog;? ???
?? // as you want
? ? };
? ? category lame-servers { null; };? ?? ?
// don't log these at all
? ? channel moderate_debug {
? ?? ? severity debug 3;? ?? ?? ?? ???
// level 3 debugging to file
? ?? ? file "foo";? ?? ?? ?? ?? ?? ?? ?
// foo
? ?? ? print-time yes;? ?? ?? ?? ?? ???
// timestamp log entries
? ?? ? print-category yes;? ?? ?? ?? ?
// print category name
? ?? ? print-severity yes;? ?? ?? ?? ?
// print severity level
? ?? ?? ? /*
? ?? ?? ? * Note that debugging must have been turned on either
? ?? ?? ? * on the command line or with a signal to get debugging
? ?? ?? ? * output (non-debugging output will still be written to
? ?? ?? ? * this channel).
? ?? ?? ? */
? ?? ??? };
? ? /*
? ??? * If you don't want to see "zone XXXX loaded" messages but do
? ??? * want to see any problems, you could do the following.
? ??? */
? ? channel no_info_messages {
? ?? ?? ?? ? syslog;
? ?? ?? ?? ? severity notice;
? ? };
? ? category load { no_info_messages; };
? ? /*
? ??? * You can also define category "default"; it gets used when no
? ??? * "category" statement has been given for a category.
? ??? */
? ? category default {
? ?? ?? ? default_syslog;
? ?? ?? ? moderate_debug;
? ? };
};
13、在/var/named/中生成/etc/named.conf中标记的文件:rd.xxx.com.db,内容如下,需要修改和调整相应部分:
;Authoriative data for rd.xxx.com
;
$TTL 3600
@??IN??SOA??compaq.rd.xxx.com. tandongyu.rd.xxx.com. (
20020101? ?? ???;Serial
3600? ?? ?? ?? ?;Refresh 1 hour
900? ?? ?? ?? ? ;Retry 15 mins
604800? ?? ?? ? ;Expire 7 days
86400)? ?? ?? ? ;Mini 24 hours
;Name server NS records
@??IN? ? NS? ?? ?compaq.rd.xxx.com.
;Mail Exchange (MX) records
rd.xxx.com.? ?IN??MX? ?? ?0? ?? ? compaq
;Address (A) records.
localhost? ?? ? IN? ?? ?A? ?? ? 127.0.0.1
compaq? ?? ?? ? IN? ?? ?A? ?? ? 21.9.22.9
tls65? ?? ?? ???IN? ?? ?A? ?? ? 21.9.22.8
fbsd? ?? ?? ?? ?IN? ?? ?A? ?? ? 21.9.22.7
14、在/var/named/中生成/etc/named.conf中标记的文件:21.9.22.db,内容如下,你需要修改相应部分:
;
;
$TTL 3600
@??IN SOA??compaq.rd.xxx.com.? ?? ?? ?tandongyu.rd.xxx.com. (
20020101? ?? ???;Serial
3600? ?? ?? ?? ?;Refresh
900? ?? ?? ?? ? ;Retry 15 mins
604800? ?? ?? ? ;Expire 7 days
86400)? ?? ?? ? ;Mini 24 hours
;NameServer (NS) records
@? ?? ? IN? ?? ?NS? ?? ?compaq.rd.xxx.com.
;Address Point to Name (PTR) records
9? ?? ? IN? ?? ?PTR? ???compaq.rd.xxx.com.
8? ?? ? IN? ?? ?PTR? ???tls65.rd.xxx.com.
7? ?? ? IN? ?? ?PTR? ???fbsd.rd.xxx.com.
15、在/var/named/中生成/etc/named.conf中标记的文件:127.0.0.db,内容如下,你需要修改相应部分:
; 0.0.127.in-addr.arpa
$TTL 3600
@? ? IN? ?SOA? ???compaq.rd.xxx.com. tandongyu.rd.xxx.com. (
20020101;serial
? ?? ?? ? 3600? ? ;refresh
? ?? ?? ? 1800? ? ;retry
? ?? ?? ? 604800??;expiration
? ?? ?? ? 3600 )??;minimum
? ? IN? ???NS? ?? ?compaq.rd.xxx.com.
1? ?? ???IN? ???PTR? ???localhost.
16、在/var/named/中生成/etc/named.conf中标记的文件:named.root,内容大致如下。该文件标记了14个域名服务器。可以从ftp.rs.internic.net获得该文件的最新样本:named.hosts,然后改名成你需要的名字,比如:named.root
;? ?? ? This file holds the information on root name servers needed to
;? ?? ? initialize cache of Internet domain name servers
;? ?? ? (e.g. reference this file in the "cache??.??"
;? ?? ? configuration file of BIND domain name servers).
;
;? ? This file is made available by InterNIC registration services
;? ? under anonymous FTP as
;? ? file? ?? ?? ?? ?? ? /domain/named.root
;? ? on server? ?? ?? ???FTP.RS.INTERNIC.NET
;? ?? ? -OR- under Gopher at? ? RS.INTERNIC.NET
;? ?? ?? ???under menu? ?? ?? ? InterNIC Registration Services (NSI)
;? ?? ?? ?? ???submenu? ?? ?? ? InterNIC Registration Archives
;? ?? ?? ???file? ?? ?? ?? ?? ? named.root
;
;? ?? ? last update:? ? Aug 22, 1997
;? ?? ? related version of root zone:? ?1997082200
;
;
; formerly NS.INTERNIC.NET
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000??IN??NS? ? A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???198.41.0.4
;
; formerly NS1.ISI.EDU
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000? ?? ?NS? ? B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???128.9.0.107
;
; formerly C.PSI.NET
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000? ?? ?NS? ? C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???192.33.4.12
;
; formerly TERP.UMD.EDU
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000? ?? ?NS? ? D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???128.8.10.90
;
; formerly NS.NASA.GOV
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000? ?? ?NS? ? E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???192.203.230.10
;
; formerly NS.ISC.ORG
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000? ?? ?NS? ? F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???192.5.5.241
;
; formerly NS.NIC.DDN.MIL
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000? ?? ?NS? ? G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???192.112.36.4
;
; formerly AOS.ARL.ARMY.MIL
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000? ?? ?NS? ? H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???128.63.2.53
;
; formerly NIC.NORDU.NET
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000? ?? ?NS? ? I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???192.36.148.17
;
; temporarily housed at NSI (InterNIC)
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000? ?? ?NS? ? J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???198.41.0.10
;
; housed in LINX, operated by RIPE NCC
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000? ?? ?NS? ? K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???193.0.14.129
;
; temporarily housed at ISI (IANA)
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000? ?? ?NS? ? L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???198.32.64.12
;
; housed in Japan, operated by WIDE
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000? ?? ?NS? ? M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???202.12.27.33
; End of File
17、我们还需要配置/etc/resolv.conf、/etc/hosts、/etc/hosts.conf文件以适应新的状况。
18、一切都结束后,用/usr/sbin/ndc start命令启动bind,同样的可用stop、restart、reload等命令参数操作。
19、启动后用nslookup命令(有的系统推荐使用dig命令)检验是否正确。如果出现错误,该命令将不能启动。一般的错误都是数据库文件或配置文件笔误所至。比如少个“.”或者文件明不正确等等。
(2) 安装sendmail服务器
1、从
www.sendmail.org下载最新的版本(这个snedmail倒是有必要升级为最新的版本,因为它的升级主要是安全漏洞问题)。这里说明的是用的sendmail-8.12.2.tar.gz
2、cd /usr/local/src/
3、把文件下载到:/usr/local/src中
4、tar zxvf sendmail-8.12.2.tar.gz
5、cd /usr/local/src/sendmail-8.12.2
6、chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
7、chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
8、cd /usr/local/src/sendmail-8.12.2/sendmail
9、sh Build
10、cd /usr/local/src/sendmail-8.12.2/cf/cf
11、建立文件sendmail.mc内容如下,你可根据需要修改相应部分。
divert(-1)
dnl This is the macro config file used to generate the /etc/sendmail.cf
dnl file. If you modify thei file you will have to regenerate the
dnl /etc/sendmail.cf by running this macro config through the m4
dnl preprocessor:
dnl m4 /etc/sendmail.mc > /etc/sendmail.cf
dnl You will need to have the Sendmail-cf pacage installed for this to work.
include(`/usr/local/src/sendmail-8.12.2/cf')
? ? define(`confDEF_USER_ID',`8:12')
? ? OSTYPE(`linux')
? ? undefine(`UUCP_RELAY')
? ? undefine(`BITNET_RELAY')
? ? define(`confTO_CONNECT', `1m')
? ? define(`confTRY_NULL_MX_LIST',true)
? ? define(`confDONT_PROBE_INTERFACES',true)
? ? define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')
? ? define(`SMART_HOST',compaq.rd.xxx.com)
<---这条用于(非HUB)缺省使用HUB发送邮件
? ? MASQUERADE_AS(`rd.xxx.com')? ?? ???
? ?? ? <-------------------------
? ? FEATURE(`masquerade_entire_domain')? ???
? ? <---这三条用于邮件地址伪装
? ? FEATURE(`masquerade_envelope')? ?? ?? ?? ?
<-------------------------
? ? FEATURE(`smrsh',`/usr/sbin/smrsh')
? ? FEATURE(`mailertable',`hash -o /etc/mail/mailertable')
? ? FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable')
? ? FEATURE(redirect)
? ? FEATURE(always_add_domain)
? ? FEATURE(use_cw_file)
? ? FEATURE(local_procmail)
? ? FEATURE(`access_db')
? ? FEATURE(`blacklist_recipients')
? ? FEATURE(`accept_unresolvable_domains')
? ? MAILER(smtp)
? ? MAILER(procmail)
? ? dnl We strongly recommend to comment this one out if you want to protect
? ? dnl yourself from spam. However, the laptop and users on computers that do
? ? dnl not hav 24x7 DNS do need this.
? ? dnl FEATURE(`relay_based_on_MX')? ?
12、sh Build install-cf
13、groupadd smmsp
14、useradd smmsp
15、cd cd /usr/local/src/sendmail-8.12.2/sendmail
16、sh Build install
17、cd /usr/local/src/sendmail-8.12.2/makemap
18、sh Build clean
19、sh Build all
20、sh Build install
21、cd /usr/local/src/sendmail-8.12.2/
22、在本域DNS主数据库文件中增加MX纪录:
rd.xxx.com.? ?? ???IN? ?? ?MX? ?? ?0? ?? ? compaq
注意修改相应部分。那个0是有几个邮件集中器的时候用于标记先后顺序的。当有好几个MX的时候,建议顺序写为10、20、30…
23、在/etc/mail目录下创建access文件,内容类似如下:
? ? ? ? 127.0.0.1 RELAY
? ? ? ? 21.9.22 RELAY
? ? ? ? 211.99.221.238 RELA
然后:makemap hash access.db < access
24、创建文件/etc/mail/local-host-names,其内容为本机的拥有的域名信息。
rd.xxx.com
compaq.rd.xxx.com
25、创建文件/etc/mail/aliases,内容类似:
MAILER-DAEMON: postmaster
? ? ? ? postmaster: root
? ? ? ? bin: root
? ? ? ? daemon: root
? ? ? ? nobody: root
运行newaliases创建数据库。
创建别名文件的意义之一在于当邮件发往域中其他邮件服务器的用户而不是mail HUB用户的时候用。
比如增加一条:
atan: atan@fbsd
则导致邮件发往mail HUB的时候自动转发到
atan@fbsd.rd.xxx.com 26、启动sendmail: /usr/sbin/sendmail -bd -q30m
排错:如果有问题导致启动不了,大部分问题和DNS配置有关,可以使用nslookup检查DNS是否正常。挨个检查/etc/mail中的文件内容也是排错的好办法。另外,修改配置,不建议直接编辑sendmail.cf文件,建议使用m4宏编译工具,因为有些带有安全漏洞或过时的宏在编译的时候会有提示,这样以免造成相关安全问题。