荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Lg (创造人生的传奇), 信区: Linux
标  题: Re: sendmail透过其他server送信(fwd)
发信站: BBS 荔园晨风站 (Thu Dec  9 20:55:57 1999), 站内信件

【 以下文字转载自 twFreeBSDQuestion 讨论区 】
【 原文由 "网中人" 所发表 】

fuzzy 撰写於文章 <82k8nq$oeb$1@hp1.timenet.net>...
>若我想让自己Server上往外送的信件都透过另一台mail server来做
>那我这台机器上的sendmail.cf该如何去设定?
>


(以下内容可以在 http://go.to/study-area 得到:)

设定sendmail

在 Redhat 6.0 里面,已经自带了一个 MTA,它就是闻名遐迩的 sendmail 系统了。如
果说要设定 sendmail ,看一看它的设定档 /etc/sendmail.cf 就像天书一样! 的确
不是件容易的事情,如果要想弄懂它,有一本 1021 页的 sendmail 的书可以看看。

我当然也没这能力教你设定好一个完全的 sendmail 系统,不过,如果您只想
sendmail 帮您寄信的话,无需设定任何档案。但条件是您的 DNS 要设好,而且对方也
能反查得到您的 domain ,也就是说,最好您的domain 是一个注册域名。因为当对方
的邮件伺服器接到您的邮件请求之後,会看看寄信人地址是否可以回邮,否则会告诉您
诸如“Sender domain must resolve”这样的信息。

换句话说,如果您的 DNS 没有经过注册,人们又怎样寄信给您呢?有一个简单的办法
是在 MAU 下面设定 repply address 到您的 ISP 或其它合法信箱。要完成一个顺利的
邮件传递,最好双方都可以知道如何回邮,使用 DNS 是最普遍的做法。当然,您也可
以使用 UUCP 或 static mapping 的方法啦,但别忘记设定是双向的。

好了,现在假设您已经成功的注册好 DNS 了,寄信应该没问题了吧?但您有否发现,
从您的 Linux 主机几出去的邮件,其回邮地址格式是这样的
:user@host.your.domain.name 呢?如果您按 Repply 回复到这个地址,应该没问题
的,但您有试过使用 user@your.domain.name 这样的格式麽?试试就知道了:如果您
没做任何设定,这样的地址是寄不到使用者信箱的。

有办法解决麽?当然有啦,而且很简单呢!您只要将 your.domain.name 放进
/etc/sendmail.cw这个档案就可以了,这是用来设定邮件伺服器别名的档案。如果您有
多个别名(或曰 domain )要这台主机接收,那麽将它们全部写进这个档案,一个名称占
一行。然後,您竟然无需重新启动 sendmail 或任何服务,设定就已经生效了!

呵呵~~~是否很开心呢?不过,您有没有意识到一个问题:您使用的 intertnet 连线是
固定的还是间断的呢?如果您使用 modem 拨接的话,当您下线後,如何进行邮件交换
呢?在预设情况下,如果 sendmail 收到邮件传递请求之後,会即时进行,如果因为其
它原因(包括离线)而不能即时传递的话,会将邮件存列於 /var/spool/mqueue 目录之
下,然後每隔 1 小时(视乎设定)尝试重递,如果 4 小时之後还未能送出,会发出一封
警告信给寄信者;如果5 天之後还在 queue 里面,那麽这封信就会退回寄信者了。

假如别人也是用 sendmail 来寄信给您的 domain 的话,如果您的伺服器下线了,对方
也会将信存在 queue 里面。由此可见,使用 ppp 连线并不是理想的邮件传递方式。如
果您不能建立一条固定的 internet 连线,那麽,将 DNS 和 Mail 都交由您的 ISP 保
管好了。如果是这样的话,您只要在 /etc/sendmail.cf 这个档案里面,找到这行(大
约在 97 行的位置),将之修改为:

DSmail_server.isp.net

(注意句子没有空白键)。这样的话,当您的伺服器在线的时候,那些不能即时传递的邮
件(如非本地邮件),就会第一时间传给 ISP 的邮件伺服器,让他们代理您的传递,而
您呢?Sit back & relax!

设定 fetchmail

哈哈,别高兴得太早啦~~~ 收信呢??是哦~~~ 怎麽收?您大可叫您的 ISP 为每一个
使用者建立信箱,然後让他们通过 POP 去取信。但这样的话,费用显然会比较高,而
且如果以後人员更换的话,还得劳烦上头帮您修改。为何不这样:只需在 ISP 建立一
个帐户,然後所有的使用者都可以收信呢?

可以造到麽?没问题!

不过,除了 sendmail 之外,您还得使用另一只程式,叫做 fetchmail 的东东。不
过,条件是 DNS 交由 ISP 管理,也就是说,他们会帮您代收所有传给您 domain 的邮
件;同时 ISP 还必须会将所有传给您 domain 的邮件□进那个单一信箱去。如果他们
不会做,只要他们也使用 sendmail ,您教他们修改一个档案
:/etc/mail/virtusertable ,加入:

@your.domain.name isp_accont@isp.net

跟著执行:
makemap -r hash /etc/mail/virtusertable.db < /etc/mail/virtusertable

这里假设他们在设定 sendmail 的时候已经定义出‘FEATURE(virtusertable)’这个功
能。而且,使用的资料库格式为‘hash’,如果他们使用 dbm 格式的话,将 hash 改
成 dmb 就可以了。

然後,您还要修改/etc/sendmail.cf 这个档案(大约在 91 和 1032 行):

Dj$w.your.domain.name
R$*                     $#error $@ 5.7.1 $: "550 Relaying denied"

(在修改 /etc/sendmail.cf 的时候务必注意:句子开头带空白键,或 Tab,或是没有
空白,效果都不一样。以上所举的设定都是没有空白的!)

修改好之後,重新启动 sendmail :
/etc/rc.d/init.d/sendmail restart


接著,我们在 root 的家目录 /etc/root 里面,建立这样一个档案:.fetchmailrc
(别少了前面的‘.’!) :

set postmaster "postmaster"
poll mail.isp.net with proto POP3
  localdomains your.domain.name
       user "isp_account" there with password "hBg7-rE10" is * here options
fetchall

如果您能进入 X Windows,可以执行 fetchmailconf 用 GUI 来设定这个档案。因为在
这个档案里面,包含了您的 ISP 帐户和密码,为避免其它使用者看到,请执行:
chmod 0600 .fetchmailrc

这样设定基本已经完成了,以 root 的身份执行fetchmail -d 300,这样每隔 5 分
钟,fetchmail 就会帮您从 mail.isp.net 的 isp_account 帐户下载邮件,同时还会
分发到各个使用者的本地邮箱中去。但您也可以使用定时器来设定 fetchmail 的执行
动作。例如,执行:
crontab -e

然後加入这行:
0,20,40 * * * * /usr/bin/fetchmail -v

这样系统每隔 20 分钟就会帮您执行 fetchmail 了,当然,您的连线也要设定好啦。
例如,您可以使用 Diald 来实现自动连线,不过,我这里略过这部份的讨论,因为我
还没实际设定过。如果您设定 diald 成功,可否将步骤寄来给我呢?或许有空我测试
出来再分大家分享吧。




--
※ 转载:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 210.39.3.71]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店