第20章、简易Mail Server架设――Sendmail设定
1. 我在使用Sendmail寄信时,却发生下面这个问题,请问可能的原因为何?
可能的原因有两个:
•
你的
Client
端计算机的
IP
或网域地址被
/etc/mail/access
挡住,或
/etc/mail/access
没有打开你的
RELAY
权力;
•
你进行了
SMTP
邮件认证的设定,但是忘记在
MUA
中设定账号与密码项!
如果不是这两个原因,那么可能的问题就多了,请详细检查你的网络配置。
2. 请列出4个Mail Server的相关组件及其功能为何?
•
Mail Client
:邮件客户端,其实就是使用邮件的那位用户所在的计算机;
•
Mail User Agent
:为一个应用软件,主要的功能就是收受邮件主机的电子邮件,以及提供用户浏览与编写邮件的功能;
•
Mail Transfer Agent
:为在计算机与本地端
Mail server
或
Internet
上的
Mail server
传送信息与邮件的主机;
•
Mail Dilivery Agent
:主要的功能就是将
MTA
收受的本机信件放置到本机账户下的收件箱中(
Mailbox
)。
3. POP3与SMTP的功能为何?
•
SMTP
为用于
MUA
或
MTA
与
MTA
之间的传输协议,通常使用端口
25
,只要主机支持
SMTP
,并且其他
relay
的条件能配合,就可以进行邮件传递!
•
POP3
可以支持用户经由
MUA
到
MTA
下载邮件,同时可将邮件从主机上删除!
4. 请简单说明DNS里MX标志与Mail的关系?
MX recode
可以让邮件服务器经由
MX
及
A
(
address
)这个记录进行
mail gateway
与
mail route
的功能,能够完成的功能相当多。
5. 今天我突然兴起,想修改我的sendmail,请问,sendmail的配置文件在哪里?而我要以什么程序修改sendmail?
Sendmail
的配置文件为
sendmail.cf
,这个文件通常放置在
/etc/sendmail.cf
或
/etc/mail/sendmail.cf
中。你可以手动编辑这个文件,不过不建议这样做,可以使用
m4
这个程序进行
macro
动作,进一步完成
sendmail.cf
的修改。使用
m4
时,需要先建立
m4
脚本,再以
m4
转换才能形成
sendmail.cf
。
6. 什么是mailling list?在sendmail下有什么方法可以不藉由其他软件实现mailling list的功能?
Mailling list
就是在用户向一个账号寄邮件时,该账号会主动将该邮件传送到所有的用户!有点类似目前的电子报。在
sendmail
下,我们可以通过
aliases
(需配合
newaliases
)以及
~/.forward
来实现。
7. 如何查看邮件队列的内容,以及邮件队列内容放置在何方?
使用
mailq
即可知道当前邮件队列的内容,而邮件队列虽然可以通过
sendmail.cf
来修改,不过,默认情况下,都是以
/var/spool/mqueue
为邮件队列目录。
8. 若我的sendmail主机有很多名称,我想让这些名称都可以接收邮件,应该修改什么文件?
可以修改
/etc/mail/local-host-names
。
9. 什么是Open Relay?
所谓的
Open Relay
就是,不论发信端来自何处,你的
Open Relay
主机均可以帮发信端将信件发送出去,这个称为
Open Relay
。如果你的
mail server
具有
open relay
功能,那么很容易遭到垃圾邮件的填充,不但造成网络频宽耗损,也容易让你的主机列入黑名单!
第21章、简易Mail Server架设――Postfix 设定
1. 请问Cyrus SASL 在1.5.xx及2.xx 版本中,用来作为SMTP的认证机制有何不同?并请说明不同的版本与Postfix的搭配情况。
一般而言,
SASL 1.5
适用于
postfix 1.xx
版本,至于
SASL 2.x
版则适用于
postfix 2.xx
版。由于
SASL 2.x
主要使用
saslauthd
这个
daemon
做为身份认证方式,而
SASL 1.5
则使用的是
pam
与
pwcheck
这两个机制,两个版本的认证机制并不相同。所以使用
Postfix
来设定
SMTP
的身份认证时,请务必记得版本的差异!
2. 如果要让Postfix可以收发来自非本机的外部信件,你可以修改main.cf里面的什么参数?
需要在
main.cf
里修改的变量主要有:
1.
当
Client
来自信任网域,也就是
IP
符合
$mynetworks
的设定值时;
2.
当
Client
来自信任的机器,也就是主机名称符合
$relay_domains
的设定项时;
3.
当
Client
来自不信任的网域,但是目的主机端符合
$relay_domains
的设定时。
3. 如何查看你的当前Postfix 服务器的所有设定参数?使用什么指令?
利用
postconf -n
可以查看当前
main.cf
里设定的参数,而如果要看所有的参数,则直接使用
postconf
。
4. 在Postfix中,由于已经具有邮件过滤机制,所以不需要使用procmail。请问,我该如何启用信件的Header 过滤机制?同时,如何设定规则,使得192.168.100.100这个主机的来信及只要邮件的标头为Your account的信件就予以丢弃?
要启用信件的
Header
过滤机制,可以在
main.cf
里启用这个设定值:
header_checks = regexp:/
完整路径
/
文件名
body_checks = regexp:/
完整路径
/
文件名
至于文件内容,可以这样做(注:因为要查阅的是标头,所以需要
header_checks
后所接的文件名):
/^Subject.*your\ account/ REJECT
第22章、简易FTP Server 架设――Wu FTP 设定
1. FTP在建立联机及数据传输时,会建立哪些联机?
需建立两种联机,分别是
command
与
data transfer
的联机,就是命令信道与数据传输信道。一般来说,就是端口
21
(
ftp
)与端口
20
(
ftp-data
)。
2. FTP主动式与被动式联机有何不同?
主动式联机时,
command
联机是由
Client
端主动连接到主机端,但是
ftp-data
则是由主机端主动联机到
Client
端。至于被动式联机,则不论
command
还是
ftp-data
的联机,主机端都是监听客户端的请求。
3. 有哪些动作可以让你的FTP主机更安全?
有很多方法,在设定上有这些方法:
•
让
guest
与
anonymous
的根目录限制在固定目录中(
chroot
或
restricted
);
•
使用
TCP_Wrappers
启动
FTP
,并以它来控制可联机的
IP
;
•
拒绝
guest
与
anonymous
使用
change
、
delete
、
rename
等指令;
•
拒绝
root
登入或其他系统账号登入;
•
拒绝大部分的上传行为。
4. 我们知道ftp 会启用两个端口,请问这两个端口在哪里规范?而且,一般正规的端口是几号?
是在
/etc/services
里规范,此外,正规的端口在
command
是
21
而
data
是
20
。
5. Wu FTP的主要配置文件在哪里?
/etc/ftpaccess
6. 在Wu FTP的配置文件中,log transfer是做什么用的?
在用户进行数据传输时,
log transfer
可以将传输的文件大小、内容等记录到
/var/log/xferlog
里。
7. 在Wu FTP的配置文件中,被动端口是做什么用的?
我们知道
FTP
有主动联机与被动联机两种方式,如果
FTP
主机允许被动联机,那么
Client
端联机时,主机端将会随机取大于
1024
的端口进行
data transfer
,为了避免随机取端口的问题,被动端口可以指定固定的几个小范围的端口,这样比较安全。
8. 哪个文件可以用来抵挡类似root这种系统账号的登入FTP?
/etc/ftpusers
!(其实是利用
pam
模块来实现)
9. 在FTP的Server与Client端进行数据传输时,有哪两种模式?为何这两种模式影响数据的传输?
数据的传输有
ASCII
与
Binary
两种方式,在进行
ASCII
传送方式时,被传送的文件将会以文字模式进行传送行为,因此,文件的属性会被修改,可能造成执行文件最后却无法执行等问题!一般来说,
ASCII
通常仅用在文本文件与一些源代码文件的传送。
第23章、简易FTP Server 架设――Pro FTPD
1. 如何建立一个用户,它可以使用FTP功能,但是无法以telnet或SSH登入系统?请使用proftpd的设定项来设定。
因为无法使用
telnet/SSH
,这表示它可能不具有正常的
shell
,因此你可以将该用户在
/etc/passwd
里最后一个
shell
参数改成
/bin/false
,然后在
proftpd.conf
里设定
RequireValidShell off
即可。
2. 我明明在台湾,我的主机时区(/etc/sysconfig/clock)明明在台湾,为何登入proftpd之后,显示的系统时间就是慢了8小时?请问为什么?如何解决?
这是由于
proftpd
默认使用
GMT
时间,因此,你必须重新设定
proftpd
,使得时间使用本地时间!修改
proftpd.conf
里的参数为
TimesGMT off
。
3. 如果出现无法登入,或与proftpd的FTP 功能相关的错误时,要如何排错?
•
最先应该查询是否被防火墙挡住了(同时观察
Server/Client
端);
•
克服防火墙问题后,再查询
FTP
端口是否启动;
•
再检阅
/var/log/messages
里的错误信息;
•
最后据以修订
proftpd.conf
的设定参数。
第25章、简易Proxy Server 架设
1. 请说明为何Proxy 可以提升网络的WWW 浏览速度?
这不但由于
Proxy
可以通过上层
Proxy
达到分流功能,使得网络传输更具效率,还由于
Proxy
会将数据快速缓存在自己的硬盘内,以方便下次的查询,因此对于局域网的浏览速度是有帮助的!
2. 万一squid 发生了问题,请问我该如何找出问题所在?
最主要还是在于找出问题,所以需要由
suqid
的登录文件查起,当然,硬盘的优劣以及
squid
所取得
PID
的
owner
与
group
都是需要注意的!
3. 请说明Proxy 服务器的功能为何?
Proxy
服务器的功能在于代理来自
Client
的上网请求,并向目的端主机送出
Client
端的请求,以协助
Client
端取得所需的浏览网页。此外,并可将网页数据进行缓存功能。
4. 试说明为何Proxy 服务器可以提升网域内的网络安全性?
由于
Proxy
服务器架设之后,会让网域仅有一个
Proxy
主机的出口,即单点对外的服务器,这可以强化网络的管理。
第26章、简易NIS Server 架设
1. 请简单说明NIS Server的功能与工作流程。
当你有多台具有相同账号的
Linux
主机时,即可利用
NIS
提供的服务,利用一台
NIS
主机掌控所有的
Linux
主机登入时所需查阅的账号与密码验证。流程如下:
•
NIS Server
将自己系统内的
/etc/passwd
、
/etc/group
、
/etc/hosts
等制作为
DBM
的数据库格式文件。
•
NIS Client
若有用户的登入请求时,会前往
NIS Server
搜寻数据库里的数据做为验证之用。
•
每次更动
NIS Server
上的用户数据时,则
NIS Server
需要重新制作
DBM
数据库文件。
2. 请简单说明NIS Server/Client的架构。
NIS master/client
的特色为:
•
NIS Server
的
master
先将自己的账号、密码相关文件制作为数据库文件;
•
NIS Server
的
master
将自己的数据库文件传送到
slave
上;
•
NIS Server
的
slave
接收来自信任
NIS Server master
主机的数据后,更新自己的数据库,使自己的数据库与
master
主机的数据同步;
•
网域中的所有
NIS Client
查询
NIS Server
时,会找寻最先响应的那台
NIS
主机的数据库内容。
也就是说,架设
slave NIS server
可以分担区域内
NIS
的工作!
3. NIS启动之前需要先启动哪个服务,否则就无法启动成功?
因为
NIS
是
RPC Server
的一种,所以必须启动
portmap
这个
daemon
。
4. 我的NIS网域名称为bird,另外,我主机的IP与主机名称为192.168.5.1/ bird.nis.org,请问这些信息需要设定在NIS Server的哪些文件之内?
网域名称可以直接手动输入
nisdomainname bird
,也可以写入
/etc/sysconfig/ network
里“
NISDOMAIN=bird
”;
IP
与主机名称需要写入
/etc/hosts
里。
5. /etc/nsswitch.conf的功能为何?如果我想先查询本地的密码文件,再查询NIS,需要如何设定?
该文件的功能很多,在
DNS
方面,可以用来决定正、反解的顺序,至于密码则可以用来判断何者为先!如果需要先查本机再查
NIS
的密码,需要的参数:
passwd: files nis nisplus
shadow: files nis nisplus
6. NIS Server 将密码等文件做成数据库以供NIS client查询,那么请问使用什么动作后,可以将密码文件转成NIS的数据库格式文件?
/usr/lib/yp/ypinit -m
7. 如果我想增加网域中一个新的账号newaccount,并且这个newaccount可以让NIS Client查询到它的账号与密码,需要进行哪些步骤?
1.
先登入
NIS Server
以
useradd newaccount
及
passwd newaccount
新增账号;
2.
制作密码数据库:
/usr/lib/yp/ypinit �Cm
;
3.
重新启动:
/etc/rc.d/init.d/ypserv restart ; /etc/rc.d/init.d/yppasswdd restart
。
8. 实例题: 下面是我的网域参数特征。利用以下参数来设定NIS架构,请一步一步写下你的设定。
network/netmask:192.168.1.0/255.255.255.0
NIS server : 192.168.1.100
(
hostname: server.nis.test
)
NIS cient: 192.168.1.200
(
hostname: client1.nis.test
)
NIS
domain name: nis.test
请自行参考本章内容设定。
9. 承上题:如果我的网域太大,所以有一台NIS slave主机,这台主机的IP为192.168.1.50,请问该如何设定这台主机?
请参考
http://www.linux-nis.org/nis-howto/HOWTO/index.html
第27章、简易NTP 服务器设定
1. 什么是GMT(格林威治)时间与UTC时间?
由于地球是圆的,所以在同一时间点上,地球共可分为
24
个时区,其中,我们以欧洲的格林威治时间为一个对照依据,这个即是
GMT
时间。台湾时间比
GMT
时间快了
8
小时。至于
UTC
时间则是由原子钟计算的时间,这个时间相当准确,主要仍以格林威治时间为时区。
2. Linux系统的所有时区文件放置哪一个目录下?
所有的时区文件放置于
/usr/share/zoneinfo
下,至于系统时区的设定文件则在
/etc/sysconfig/clock
与
/etc/localtime
。
3. 我的Linux主机本来放置在日本东京,现在想将它拿到台湾,不过因为日本与台湾有一个小时的时差,所以我的时间需要经过调整。不过,因为我的BIOS Time主要是依据UTC时间来设定的,所以似乎只要更动时区参数即可。请问我该如何设定时区,好让我的Linux主机能够显示正确的时间?
将
/usr/share/zoneinfo/Asia/Taipei
这个文件复制为
/etc/localtime
。
4. 当前Linux系统上的时间服务器主要是以NTP为主,请问这个daemon的主要配置文件放在哪里,而在该配置文件中,针对上层time server的设定参数为何?而那个driftfile 参数是做什么用的?
在
/etc/ntp.conf
这
个文件中,上层
time server
的
设定参数为
server
。
那个
driftfile
则是用来作为时间差额的计算,该参数后接的是一个完整路径的文件名,该文件里的数值单位为百万分之一(
ppm
)。
5. 请问ntptrace的功能为何?
可以用来追踪上层
time server
的联机时间与当前时间!
6. 我以date 更新了我Linux上的时间后,该如何将时间数据写入BIOS内?
必须利用
hwclock
程序来写入,利用
hwclock -w
写入
BIOS
。
7. 在Linux上如何进行网络校时?
最简单的方法即是使用
ntpdate time.servers.ip; hwclock �Cw
。