Linux 版 (精华区)

发信人: tcpip (高级草包), 信区: Linux
标  题: 公报11-家庭网络中的邮件配置-1
发信站: 紫 丁 香 (Wed May  3 09:20:59 2000) WWW-POST

家庭网络中的邮件配置
作者:JC Pollman and Bill Mote  译者:Chris Yang、刘健、王郸


------------------------------------------------------------------------------
--

在家庭局域网中配置邮件听起来是一件很简单的事情,但实际上是很需要勇气。如果你没
有的相关的背景知识的话,那你也许得牺牲很多一周中与老婆孩子在一起的时间,但后面
你会发现这一切都是值得的。 

声明:这篇文章提供的信息是我们看了很多本书,HOWTO文档,Man Page,useset新闻组
并敲了无数个小时的键盘得来的,但并并意味着是对这个主题进行了彻底的研究,相反,
它只是帮助初学者变成中级水平的用户的垫脚石。所有的例子都直接取自我们自己的家庭
网,所以我们知道它们是对的。 

怎样使用这篇指南: 

被方括号括起来的单词表示击键盘或鼠标的某个键,例如[Enter]表示击回车键,
[Mouse1]表示击鼠标的左键。 
被花括号括起来的单词表示应该被真实的值替换,例如,{your name here}。 
用斜体写的文字表示要在命令行提示符下输入。 
系统需求:这篇指南假定你已经安装了: 

 BIND 
你必须有一个合法的域名。 
你必须使用IP伪装技术使你的机器从INTERNET上不可见。 
你可以平稳地和INTERNET连接。 
SendMail 
FetchMail 
IMAP(pop3d) 
ProcMail 

家庭邮件系统该做些什么?在我们进入这项工作之前,让我们想想我们需要邮件系统为我
们做什么: 

它应该可以从INTERNET上接收邮件并在本地处理它们。

它应该可以发送邮件到INTERNET。

它应该可以作为本地的邮件服务器(处理在我们自己的网络中发送的邮件)。举个例子,
母亲应该可以给父亲发送邮件,而邮件不必出家庭网。更重要的是多个服务器发送邮件给
多个root用户,而我们希望这些邮件被集中起来送到一个人那儿。比如:我有两台服务器
和我自己的计算机,我不想查看三个帐户而得到全部的邮件。 
家庭邮件系统听起来是一个简单的概念,特别是很多邮件程序,如Netscape,看上去处理
了所有必要的功能。但是,一个邮件程序和网络邮件系统是有很大差别的。你的邮件系统
至少需要5个程序正常地运行: 

邮件程序,让用户读写邮件 -- xfmail, netscape, outlook 等等。我们不打算在这里介
绍这些程序,但你应该对它们比较了解。当我们完成之后,我们会让这些邮件程序连接邮
件服务器,而不是ISP,并收发你的邮件。

从ISP接收邮件的程序,我们需要它接收家庭网络中所有帐户的邮件。这里我们将使用 ─
─ fetchmail.

在两台机器之间传送邮件的程序。这个程序从你邮件阅读器(如netscape)中取邮件,然
后送往INTERNET或保存在家庭网络的服务器上。这里我们将使用的是sendmail。这将会形
成我们的SMTP连接。

sendmail和fetchmail并不在硬盘上保存邮件,而是把邮件传给另一个程序,让它把用户
的的邮件送到想要送到的地方。这里我们将使用procmail。

邮件服务器程序。我们将会用邮件程序去连接它。这里我们使用的是ipop3d,这将会是我
们的pop3服务器。 
安装应用程序。在开始之前,你必须先检查所有必要的程序是否被安装了。最简单的办法
是使用whereis 命令。 

whereis sendmail [Enter] 

RedHat 用户: 

rpm -qa | grep sendmail [Enter] 

均可检查sendmail是否已安装。其他版本的LINUX应该有类似的方法去检查一个软件包是
否已经安装, 用同样的方法去检查sendmail-cf是否被安装。 

procmail:你所用的LINUX中所带的任何一个版本都可以。
ipop3d:你所用的LINUX中所带的任何一个版本都可以。注意:大多数LINUX版本都把
ipop3d放在imap包中。
fetchmail:fetchmail的版本升级非常快。我们推荐使用5.0或更高版本,你所用的LINUX
中所带的任何一个版本都是可以的。
sendmail:大多数LINUX都带了sendmail, sendmail-cf,sendmail-doc三个包。这里我们
将使用的是版本8.9.3。如果你使用的是低于8.9.2的版本,我们建议你升级。不光有安全
性上的原因而且我们在这里提供的信息将不适合旧的版本。
m4:你所用的LINUX中所带的任何一个版本都可以。 

让我们现在就开始!做十遍指发练习,换上莫扎特的音乐,点击下面的连接。注意:按顺
序来,因为它们相互依赖。 

Setting up dns for mail
Setting up procmail
Setting up sendmail
Setting up pop3
Setting up fetchmail
Some Final Thoughs 
DNS for mail
作者:JC Pollman and Bill Mote  译者:Chris Yang、刘健、王郸


------------------------------------------------------------------------------
--

在上月的文章中, 我们为网络建立了一个DNS作为名字服务器。Sendmail和大多数邮件传
输程序都用DNS来决定要将邮件送到何处,但是我们需要做一点修改。名字到IP的映射文
件中对每一台计算机都需要有一个MX行,实质上是说:用这一台计算机来存储邮件。 

上个月的文件是这样的。注意:“*”不是文件的一部分:
************************************************************** 
@ IN SOA master.kulai.org. jpollman.kulai.org. ( 
1; 
10800; 
3600; 
604800; 
86400 ); 

IN NS master.kulai.org. 
master IN A 192.168.124.10 


mail IN A 192.168.124.10 
www IN A 192.168.124.10 
news IN A 192.168.124.10 

localhost IN A 127.0.0.1 

fserver IN A 192.168.124.11 
jc IN A 192.168.124.1 
phillip IN A 192.168.124.20 
**************************************************************  

我们加入MX行。注意:黑体部分在后面做解释并且不是文件的一部分: 

************************************************************** 
@ IN SOA master.kulai.org. jpollman.kulai.org. ( 

10800 
3600 
604800 
86400 ) 

IN NS master 
IN MX 10 master 
master IN A 192.168.124.10 
master IN MX 10 master 

mail IN A 192.168.124.10 
www IN A 192.168.124.10 
news IN A 192.168.124.10 

localhost IN A 127.0.0.1 

fserver IN A 192.168.124.11 
fserver IN MX 10 master 

jc IN A 192.168.124.1 
jc IN MX 10 master 

phillip IN A 192.168.124.20 
phillip IN MX 10 master 
**************************************************************  

现在每一台机器(master, fserver, jc, phillip)的邮件服务器都是master.kulai.org
(实际上它应被称做“邮件交换器”,但因为我们只有一台计算机来处理邮件,所以还是
把它称为邮件服务器)。我们看到有一个没有名字的行指向master.kulai.org作为邮件服
务器 -- 这是对于整个域的。注意到每一行都有一个10。数字10实际上是一个相对值,且
只是在你有多个邮件服务器的时候用到 -- 这是一些我们没有在这讨论的问题。注意:如
果设置这个数字失败则会导致named的错误。现在重启named,检查/var/log/message是否
有错误的产生。 

对每一台机器都要加入一行:kulai.org自身并不自动起作用。 


------------------------------------------------------------------------------
--
家庭网络中的邮件配置
Procmail
作者:JC Pollman and Bill Mote  译者:Chris Yang、刘健、王郸


------------------------------------------------------------------------------
--

为达到这篇文章所述的目的,我们需要procmail做的是把邮件放入用户的
/var/spool/mail目录下。这将删去用户home目录下的.procmailrc和.forward文件。应该
有文章介绍Procmail我们就不在这儿讨论了。对于我们的目的,只要procmail装在你的服
务器上,系统就可以运转了。 

Procmail是一个功能很强大的程序。当你的家庭邮件系统设置完毕后,procmail将会为你
做如下一些工作: 

设置适当的变量。


创建邮件的备份缓冲区。这样,如果系统出错,你至少还可以有最近受到的100封邮件。



把mailinglist发来的信过滤到一个"Bulk Mail"目录中。


过滤恶意邮件 -- 要么删除,要么把它们放入单独的文件夹中。如果愿意可以标记可疑的
或可能是恶意的邮件,并把它们和其他邮件分开存放。


传送过滤后的私人邮件到你的INBOX里,你可以用Eudora或其他POP3的邮件程序读取,也
可以在shell下用elm或pine. 

------------------------------------------------------------------------------
--
家庭网络中的邮件配置
Sendmail
作者:JC Pollman and Bill Mote  译者:Chris Yang、刘健、王郸


------------------------------------------------------------------------------
--

Sendmail在过去因为安全问题而有着并不好的名声,而且,它的配置文件sendmail.cf是
一个非常可怕,难看,前疮百孔,很难理解和修改。举个例子,你能修改下面的东西吗?
 

# localize and dispose of route-based addresses 
R@ $+ : $+ $@ $>96 < @$1 > : $2 handle <route-addr>  

Sendmail是一个基于规则的程序:规则决定sendmail该如何响应。O'Reilly出版的一本关
于sendmail书"The Bat Book"有1021页!我们在这里不讨论规则,而只是启动并让它工作
。当你学会了sendmail的基本配置后,你会发现sendmail是一个可以挖到所有金子的矿。
让它工作你得修改一些文件。这里我们都会提到。 

需求:为了sendmail初始配置,你得创建与你ISP帐户同名的用户,例如,我的ISP帐户是
jpollman@deniz.com,所以我需要在我的邮件服务器上有一个用户:jpollman@deniz.com
。在sendmail可以使用这个配置工作后,你可以看看Sendmail-Address_Rewrite HOWTO。
 

/etc/mail/aliases:与你的系统版本有关,这个文件有可能是/etc/aliases。它有两个
目的:让管理员或守护进程发送报告给某人,和创建一个组的邮件列表。如果对组的邮件
列表感兴趣的话,请读sendmail的帮助。守护进程默认发送报告给root用户,但既然你不
会以root登录(如果你只有通常的基本知识,我知道你不会的),发送所有的root的邮件
跟你将会更好些。编辑文件,通常在底部有两行: 

# Person who should get root's mail 
root: jpollman@kulai.org 

一般会有一个“#”在第二行最前面,去掉“#”,并把你的邮件地址放在“:”的右边。
存盘,键入: 

newaliases [Enter] 

newaliases命令回把该文件转换成sendmail可以阅读的的格式,并存成:aliases.db。几
乎所有玩过sendmail的人都有这样的经历:修改aliases文件,重新启动sendmail,发现它
不工作。记住:一定要用newaliases命令。 

/etc/mail/relay-domains: 在说一次,这个文件可能是/etc/relay-domains。这个文件
告诉sendmail是否应该处理从文件中列举的计算机发来的邮件。如果文件为空,你不应该
在你的smtp主机上使用sendmail,因为它将不会从别的计算机上接受任何邮件。该文件应
该列举所有使用你的服务器的计算机。comp.mail.sendmail中可能会有更多的信息。摘自
sendmail FAQ: 

你需要在class R中加入客户机的主机的全名或IP地址,和一些允许relay的域名。8.9.X
就是/etc/mail/relay-domains。注意:如果你的DNS有问题,你需要把IP地址放在方括号
中(例如:[1.2.3.4]),才可以使宏${client_name}正常工作。但这一般不必要。 

我的relay_domains文件: 

jc.kulai.org 
phillip.kulai.org 
fserver.kulai.org 

/etc/sendmail.cw: 这个文件让sendmail知道服务器在哪里和服务器的别名。我的只包含
一行:kulai.org 

/etc/sendmail.cf:简直就是一个怪物!幸运的是,生活比以前容易多了。下面是我们要
做的事情的摘要:修改一般的sendmail.mc文件,通过m4运行它,拷到/etc/sendmail.cf
,重启sendmail。实际上已经很容易了。 

到/usr/lib/sendmail-cf/cf.目录下,那应该有一个带.mc扩展名的文件。有可能叫
redhat.mc。如果没有的话,可以拷贝thisfile到该目录下。从个人角度来讲,我们推荐
你用我们的文件,因为我们知道它能工作。现在把该文件改成别的名字,比如服务器的名
字:master.mc。你也许想保留原来的文件,这样在出错后能得以恢复。编辑你的mc文件
。应该有很多已经定义的规则,并且作为默认的行为。为了让它在服务器上可以工作,需
要把下面几行加到文件的末尾。注意:我的smtp服务器是:ix.deniz.comISP是deniz.com
,你的应该不同,所以不要不做修改地把这些行加进去。 

define(`SMART_HOST',`smtp:[ix.deniz.com]') 
MASQUERADE_AS(`deniz.com') 
FEATURE(`masquerade_envelope') 
define(RELAY_MAILER, TCP) 
FEATURE(`accept_unqualified_senders') 

SMART_HOST:这是你ISP的SMTP服务器。从这儿,sendmail可以发送邮件到非kulai.org域
,比如,ix.deniz.com。
MASQUERADE_AS('deniz.com'):它将会改写邮件中的“From:”行,所以看上去应该是
deniz.com,这是我在INTERNET上的邮件地址。注意:把deniz.com改成你的ISP -- 否则
deniz.com会以为别人(入侵者??)在使用它的服务。也就是说,deniz.com不接收从
jpollman@kulai.org发来的邮件,而可以接收从jpollman@deniz.com发来的邮件,这是由
relay-domains文件决定的。
masquerade_envelope: 它将改写邮件的某些头部信息,让邮件看上去像是从deniz.com发
来的。 
RELAY_MAILER, TCP: 并不是一定需要,但也没有坏处。
accept_unqualified_senders: 它的作用是如果邮件的"From:"行是jpollman@deniz.com
的话,sendmail也可以接受它。正常情况下只接受kulai.org来的邮件。 

注意到sendmail使用两个标记符号:’和`。 

现在把相对来说容易读的文件转换成sendmail方式的文件,输入: 

m4 master.mc > _master.cf [Enter] 

这里master.mc是你刚编辑的文件,_master.cf是你告诉m4去创建的文件。这个过程很快
:在我的pentiumII 266上用了2秒钟。_master.cf是完整的sendmail.cf文件 -- 我们可
以键入: 

m4 master.mc >/etc/sendmail.cf [Enter] 

但是保留一份sendmail.cf的副本更好。现在把_master.cf拷贝到:/etc/sendmail.cf 
-- 这将覆盖你原来的sendmail.cf:也许应该保留一份原来的sendmail。重启sendmail:
killall -HUP sendmail (在RedHat中:/etc/rc.d/init.d/sendmail restart)。
sendmail有很多启动参数。点击click here查看。总的是这样的: 

cp /etc/sendmail.cf /etc/sendmail.original 
m4 master.mc > _master.cf 
cp _master.cf /etc/sendmail.cf 
killall -HUP sendmail 

如果都工作的话,那就剩下测试了。发邮件给网络上的某人,给你在ISP上帐户发信。如
果都正常的话,你可以试着指定你的SMTP服务器为网络上其他机器提供邮件服务。 

如果一切不是像你喜欢的那样,那么有3个地方也许需要你手工地修改: 


--
"这一千多年没写诗了?"
"写了, 不过只写了两句."
"千年得两句, 一定是万古丽句了. 念来听听."
"好吧, 我现丑了" 太白星清了清嗓子, 浑厚的男中音在天庭响起:
大海啊, 都是水;
骏马啊, 四条腿;

※ 来源:·紫 丁 香 bbs.hit.edu.cn·[FROM: freesrc.hit.edu] 
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:207.984毫秒