注意:本文件仅适用于 Red Hat 6.2 以下版本.
1. 认识邮件运送的过程
2. 简易的设定 sendmail
3. Windows 设定
4. 设定邮件别名转寄
5. 使用 linux 系统寄信
认识邮件运送的过程
基本上,当你使用 E-Mail 讯息时,信件是如何运送的呢?通常是如下图这样运送的:
你的信件将经过 smtp 协议传送至 邮件服务器 ,然后邮件服务器将视有无设定转信主机(Mail eXchanger, MX),若有转信主机,则信件先经过转信主机后再传到目的邮件服务器,若无转信主机,则信件将直接由你的邮件服务器送至目的邮件服务器,最后,由你的收件者以 pop-3 协议,将信件由对方的邮件服务器中捉下来!举个例子来说,如果你要从 kimo 寄信给鸟哥的话(tsai.adsldns.org),那信件是如何传送的呢?
1. 你在 Windows 系统中写完了信,以 smtp 协议将你的信传送至 kimo.com.tw 这个邮件服务器;
2. kimo.com.tw 这个邮件服务器将你的信转送至鸟哥的 tsai.adsldns.org 这个邮件服务器;
3. 鸟哥在 Windows 系统中,以 pop-3 协议将这封信由 tsai.adsldns.org 捉下来计算机中!
大致的流程就是这样而已。底下来说说一些邮件的术语:
· MUA(Mail User Agent ):照字面的意义来说,就是所谓的『邮件代理人』,MUA 从字面上看似乎好容易给它吓死﹐但说穿了您可能会笑耶﹕我们平时用的 Outlook ExPRess、Netscape Mail,或是 Linux 上面的 pine ﹐它们都是 MUA 。简单说﹐MUA 是用来给使用者流览邮件和书写邮件的程序;
· MTA(Mail Transfer Agent ):照字面的意义来说,就是『邮件传送代理人』,我们管它叫邮件服务器好了﹐它负责 MUA 的请求﹐也负责将邮件从一个 MTA 传到另一个 MTA 。通常一个 MTA 都可以支持好几种邮件协议﹐例如﹕ UUCP、SMTP、POP 等。 UUCP (Unix to Unix Communication Protocol) 现在已经比较少用了﹐取而代之的是 SMTP (Simple Mail Transfer Protocol) 和 POP (Post Office Protocol) 这两个协议。 SMTP 负责的将邮件从 MUA 上传给 MTA﹐也是 MTA 和 MTA 之间的邮件传递协议﹔而在没有 POP 之前﹐email 的使用者一般都要用 telnet 或其它远程控制程序连上 MTA 那里﹐然后在那里阅读邮件﹐而有了 POP 之后﹐ MTA 可以将使用者的邮件存在一个档案里﹐然后使用者通过 MUA 连到 MTA ﹐再将信件下载回本地机器阅读。另外﹐ MUA 和 MTA 都无需是同一个厂家的软件﹐只要双方都支持 POP 协议就可以了﹐其灵活性是不言而喻的了。有些程序﹐如 sendmail ﹐表面来说﹐就同时具备 MUA 和 MTA 功能了。
· 我们用 MUA 撰写邮件之后﹐是通过 SMTP 协议上传给 MTA 的﹔而阅读邮件则是通过 POP 从 MTA 那里下载回来。
Mail 与 DNS 的相关性:
与 mail 最具相关的大概就是 DNS 的设定了,例如你要寄信给我的话,就要寄到 vbird@tsai.adsldns.org 这个信箱,因此,如果你要架设邮件服务器的话,请务必将你的 DNS 设定正确!否则一定信件是寄不到你的信箱的喔!而由于我们是使用 ADSL拨接系统 来上网的,所以只好申请动态 ip 啰!
返回页首
-----------------------------------------------------------------------------------------------
简易的设定 sendmail
开始设定前的准备工作:
在开始设定你的邮件服务器之前,请先让你的主机具有 DNS 可以追查到的功能啰!申请 DNS 主要有两种方法:
· 若你在学术系统中,你可以直接向您的上一层 DNS Server 的管理员申请,由于你具有固定 IP ,所以架设上会很方便;
· 再来,如果你与我相同是使用 ADSL拨接系统 的话,由于没有办法具有固定 IP,所以只好申请动态 IP 的 DNS 系统了,详细的申请步骤请至『动态 DNS 申请』中察看。
请千万注意,由于 DNS 设定错误将使你的信件无法收取(不过发信可能没有问题!)因此这一部分请仔细的设定喔!
设定 sendmail :
如果你是使用这个网页介绍的 Redhat 6.1 来安装你的 Linux 的话,那在你安装好了 Linux 时,你的邮件服务器已经架设好了!不相信吗?假设你的 ID 是 test,则你可以进入 Linux 之后,输入这样的字眼:
然后你只要输入 mail 即可收信喔!
简易的设定 sendmail
虽然你的 Linux 已经具有收发信件的能力,但是你也可以看到,上面的例子中,所显示的邮件主机是 localhost.localdomain ,这是不对的!寄给别人的信也是使用这一个名称的话,当然人家一定寄不到你这里来啦!所以要设定一下你的 sendmail 啦!
· netconf 设定邮件服务器:
基本上,设定邮件服务器只要两个步骤:
1. 一个是使用 netconf 简易的设定好主机的名称与其它与主机相关的事项;
2. 然后再修改 /etc/inetd.conf 这个档案,开启 pop-3、smtp 及 imap 的服务即可!
这个 IMAP 是目前新的邮件协议﹐通过 IMAP﹐ 使用者在 MUA 那端就无需分别指定 SMTP 和 POP 作为上传和下载协议了﹐而只一个 IMAP 协议就可以﹐而且 IMAP 还可以让不同的使用者共享一个 MUA﹐非常方便哦。
netconf:好了,现在来设定一下主机吧:
1. 以 root 的身份执行 『netconf』,会出现一个窗口;
2. 向下移动光标到 『Mail delivery system (sendmail)』 这一项,并按下 enter 键;
3. 在出现的框框中选择 『basic information』 这一项;
4. 在 『Present your system as』 及 『Mail server』 这两个地方,都输入你在 动态 DNS 系统中申请到的名称(以我为例,在这两个地方都输入 tsai.adsldns.org 即可);另外,在这勾选两行中间的 『[X] Accept email for adsldns.org』 这一个咚咚,这样就设定好了!
5. 以 Tab 键将光标移动到 Accept 这一项,按下 enter,回到刚刚的画面;
6. 按一次 Quit 出来主选单,选择『Basic host information』这一项,按 Enter 进入;
7. 在 『Host name』的地方输入你的主机名称,另外,在 『Primary name + domain』 的地方也要输入一次刚刚输入的名称喔!(就是 hostname.adsldns.org这一个!);
8. 按下 Accept 退出来之后,回到刚刚的画面;
9. 由于 Redhat 6.1 中的 sendmail 『不许直接修改 /etc/sendmail.cf 』这个档案,所以请到『Generate /etc/sendmail.cf』这个选项按下 enter!重新再产生一个,以符合你刚刚设定的参数;
10. 然后选择 Quit 退出,这时系统会自动侦测一些设定,等到出现:
Activate the changes
Preview what has to be done
Don't quit
这三个选项时,请选择 Activate the changes 即可!
注意喔,这个时候系统会先将你的网络停止再重新开启,所以,如果你是在外部计算机作业的话,请先确认你的拨接系统可以自动拨接上网络喔!
11. 若有一些错误讯息的话,也没有关系,你可以看看,也可以直接按 enter 离开!
12. 设定完成!
很简单吧,这样就设定好你的邮件服务器了!不过,这时候还没有办法在 Windows 上面以 pop-3 及 smtp 协议收发信件,所以你接着要修改 /etc/inetd.conf 这个档案!
/etc/inetd.conf 档案设定:
1. 以 vi 编辑这个档案:
2. 退出之后再重新开机!
这样子,邮件服务器在你重新开机激活后,就可以正常运作了!
限制:
o 虽然设定上是很简单的,不过,这里有件事要说,就是,在 sendmail 当中,默认值是『无法让大写的ID收发信件的』,例如 VBird@hostname.adsldns.org 就没有办法使用 sendmail 来收发信件!如果要让你的 sendmail 可以支持大写的 ID ,则必须直接修改 /etc/sendmail.cf 这个档案,而,Redhat 是无法直接让你修改这个档案....所以,只好请您在设定 ID 的时候,以小写来设定吧!
o 在收发信件的时间上,如果一封信无法寄出,则会等待四小时、一天,这两个时段,分别发一封警告信给你,到第五天还无法将此信投递的时候,系统就会将原信退还给你啦!
返回页首
-----------------------------------------------------------------------------------------------
Windows 设定
好了,现在开始要来设定用户的收信方法了,在此我仍然以 Outlook 来作介绍, Netscape 的方法是差不多的!你只要知道你的邮件服务器的名称就好了(这里假设你的邮件名称是 hostname.adsldns.org):
1. 开启 OutLook,点选『工具』里面的『帐号』;
2. 点选『新增』选择『邮件』来设定;
3. 输入显示名称:这个名称是别人在收信的时候,可以看到的寄件人称谓;
4. 接着下来比较重要了,请使用你的 ID@hostname.adsldns.org 登入你的邮件服务器;
5. 然后,当然邮件服务器收发都是同一个,请使用你的 DNS 申请的名称;
6. 输入帐号与密码,也可以选择『记忆密码』,然后按下一步,就完成了。
基本上,Windows 这边只要设定如此即可!然后你就可以用你的 Linux 来当邮件服务器啰!!
返回页首
-----------------------------------------------------------------------------------------------
设定邮件别名转寄
你有没有发现,通常一个人在一个机器上只有一个 ID ,但是,如果你想要让你的很多别名都可以直接寄到你的帐号中的话,要如何是好?又,如果你想要让你的小组成员都可以收到同一个帐号的信,要如何设定呢?
1. 一个人拥有多个不同的虚拟信箱:
假如你的 ID 喜欢以 nice name 来取,例如 pig ,不过,当你进入工作中,总不好意思还用这一个 ID 吧,假如你的姓名是 王小明 (全中华民国最倒霉的名字!?)那你应该会想要使用 smwang@hostname.adsldns.org 来当你的信箱,那要不要在开一个帐号给你呢?其实不需要的,只要设定一个别名给 pig 这个帐号就可以了!也就是说,当外面的信件收件人写 smwang@hostname.adsldns.org 的时候, Linux 系统就会主动的将信传到 pig@hostname.adsldns.org 这个信箱中,也就是说,根本没有 smwang@hostname.adsldns.org 这个信箱,他只要用来将信件转到你 pig 帐号中的一个手续而已!
那要如何设定呢?很简单,直接以 userconf 来解决就可以了!
o 执行 /bin/userconf;
o 选择 User accounts ;
o 选择 pig 这个帐号;
o 在出现的框框中,将光标往下移动,直到出现如下图所示:
o 在上面 Email alias (帐号别名)的地方输入你想要的别名(可以多重设定喔!)
好了!设定完成之后,只要选择 Accept ,不用进行任何其它的步骤, smwang 这个虚拟的信箱就启用了!方便吧!另外,你一个帐号可以多重设定很多的虚拟信箱喔!
2. 多人共享一个帐号:
相反的,假如你们一票同学都希望拥有同一个信箱,如此一来,当 Linux 系统收到一封信时,大家都可以收到了!这时,如果只有一个实体信箱的时候,因为信被 Outlook 收走时,服务器信箱里的信也就被删掉了!后面的人不就收不到了?要如何作呢?其实也是很简单,如果你有四个人 bird1, bird2, bird3, bird4 希望收到同一个信箱的信,例如 birdhome@hostname.adsldns.org ,那也很简单,只要在四个人的 Email alias 都设定一个别名为 birdhome ,那四个人就都可以收到 birdhome 这个信箱的信了!
Linux 的运作过程是这样的,Linux 当收到 birdhome 这个信箱的信时,会去查每一个实体帐号的 email alias 设定,有设定这个 alias (别名)的人就寄一份资料给他,因此, Linux 总共会寄出四份资料,分别传送到 bird1, bird2, bird3, bird4 这四个人的信箱中,所以这四个人只要开启自己的信箱就可以收到同一封信了!
其实,上面两个方法仅要改变一个档案即可做到,就是修改 /etc/aliases 这个档案,这个档案有点像这样:
有没有看到最后一行,smwang: pig ,在虚拟帐号后面接实体帐号,而每个帐号名称中间以『,』符号分隔!因此,当你需要设定邮件别名的时候,除了 userconf 之外,也可以使用这个档案来修改!
但是请注意,修改完成之后,还必须执行 newaliases 来加载这个档案的设定进入 sendmail 中才行!也就是说你必须:
· 修改 aliases 档案;
· 执行 newaliases 来激活。
返回页首
-----------------------------------------------------------------------------------------------
使用 Linux 系统寄信
用 Linux 来寄信,最常使用的就是 mail 这个指令了,基本的使用情况是这样的:
· 寄出一般文字信件:
可以输入 mail id@person.domain.name 来寄出信件。
· 寄出档案:
你也可以直接以 vi 先编辑好一个档案之后,再传送出去!例如你写好了一个档案,名称为 mail_raw 则寄出去可以写成这样:
· 看信件:
直接以 mail 进入后,输入每一封信件的号码来看信的内容!
当然还有很多的功能可以使用的,就要让你自己来摸索啰!