首页 | 邮件资讯 | 技术教程 | 解决方案 | 产品评测 | 邮件人才 | 邮件博客 | 邮件系统论坛 | 软件下载 | 邮件周刊 | 热点专题 | 工具
网络技术 | 操作系统 | 邮件系统 | 客户端 | 电子邮箱 | 反垃圾邮件 | 邮件安全 | 邮件营销 | 移动电邮 | 邮件软件下载 | 电子书下载

邮件服务器

技术前沿 | Qmail | IMail | MDaemon | Exchange | Domino | 其它 | Foxmail | James | Kerio | JavaMail | WinMail | Sendmail | Postfix | Winwebmail | Merak | CMailServer | 邮件与开发 | 金笛 |
首页 > 邮件服务器 > Sendmail > 全方位电子邮件服务 > 正文

全方位电子邮件服务

出处:曾瑞源 作者:曾瑞源 时间:2006-1-2 10:14:00
电子信件已经作为客户联络、技术支持、 远程教育 (成人教育)、 亲友联系甚至交易工具等等, 已经相当普遍, 不过笔者总感觉仍有很多公司不得其门而入, 因此, 笔者想办法把肚子里浅陋的经验搬出来, 从全方位的角度看 Internet E-Mail 的架构规划及运作原理等等, 甚至实务层面的 Mail Server 安装设定细节, 这些笔者计划一一的提及, 希望这可以对仍在 Internet 门外的公司、企业有些帮助。


Linux Notes 曾瑞源
_____________________________

全方位电子邮件服务 Part 1of3
曾瑞源 yuan@UUserv.Net.tw An Independent Network Consultant



以下的文章中, 笔者计划分三期介绍, 本文主要是轮廓性的介绍关于
Internet 电子信件运作之原理以其它细节, 我也将提供具体的系统规划建
议。 之后的两期笔者将介绍 Sendmail 及 Smail, 这两部份则完全都是由
Unix 环境来讲。

□ 关于 Mail 系统
由于以下文章中, 我们将看到「Mail 系统」、「Mail 系统主机」、 及
「Mail Server」 等等 字眼, 这里有必要先做一些说明。

本文所提到的「Mail 系统」之定义, 是指一部能够接收、投递、 转接
(Relay 或 Gateway) 并提供使用者读取 Mail 的一部网络计算机主机系统。


□ Mail 软件

对Unix 环境而言, 构成一部 Mail 系统的主要软件, 是 Sendmail 及
Smail等等, 这些都可以由 Internet 免费取得。 Sendmail/Smail 所提供
的服务, 除了最基本的信件递送, 还有信件转递处理、 积存 (待送) 信件
处理、 不同传输工具判断及退信处理等等, 这些是 Mail Server系统最基
本的工作。 至于这里提到的传输工具, Smail及 Sendmail 都内建 SMTP 支
援, 同时也可以搭配外部 UUCP 作为替代传输工具。 另外, 目前最新版的
Smail 及 Sendmail 也都支持 BIND。

至于 Unix 环境的 Mail 使用者界面软件 (MUA), 如今也存在有像 ELM
及 Pine 等等非常具有亲和力的软件, 这两个软件的使用场合, 必须先进入
(log in) Unix 系统。 另外, 对 Unix 环境陌生的使用者来说, 系统规划
者可以设计不同的读信方式作为选择, 支持 POP 协议的信件处理软件就是
用在这场合。 POP Server软件在 Unix 机器执行, DOS、 Windows 或 Mac
端则安装支持 POP 的读信软件, 这样就可以成功把 Mail 应用整合在办公
室环境下。

当然也许也存在有非 Unix 的解决方案, 假如您找得到专家的话, 也不
妨一试, 但是请先留意, 毕竟 Internet 上的机器主要仍以 Unix 为主, 您
跟大部分人使用相同的环境的话, 出问题时, 要取得技术支持也比较容易。

以下我们从网络实体带进 Mail 的话题来, 希望这可以进一步帮助读者
朋友产生更具体的观念。


□ Mail Service 网络架构规划

前面介绍了软件, 这里我们则从网络硬件的角度来看 Mail规划。 以下
建议二种架构, Unix Host 定位在 Mail server, 使用者的工作站可以为
DOS、 Windows 或 Mac 机器。

(一) LAN 架构

(I) Ethernet To Internet
+---
|
+---------+---------+---------+------------|---+
| | | | ┌───┐ (RS-232C界面)
┌──┐ ┌──┐ ┌──┐ ┌──┐ │ UNIX =---------
│ │ │ │ │ │ │ │ │ Host │ SLIP/PPP
└──┘ └──┘ └──┘ └──┘ └───┘ To
Windows DOS Mac Windows Internet
PC PC PC PC (II)


架构 (一) 是典型办公室局域网络的情况, Unix 机器对外联机
Internet 的方式可以用 (II) 串行通讯 (比方PPP 或SLIP), 也可以用
(I) Ethernet 联机, 但这些不是本文的重点, 我们主要是想知道, 在
这样架构下 Server及 Client 端各自所需要的软件为何。

以下建议两种情况, A 直接在 Unix 环境应用, B 则是 DOS 或 Windows
环境。

A. Telnet 终端联机进入 Unix 主机, 利用 Unix 的Mail界面软件读信或寄信。

Unix Server 软件需求:
Telnet server (in.telnetd)
SMTP (sendmail)
MUA (mail、elm 或 pine)

Client 端软件需求:
DOS -- packet driver + NCSA Telnet
Win -- packaet driver + Winsock Stack + Winsock Telnet client


B. Client 端以独立的 Mail 软件读信, 该软件有独自的 MUA、 支持 POP收
信 及 SMTP 送信。

Unix Server 软件需求:
POP server (pop3d)
SMTP (sendmail)

Client 端软件需求:
DOS -- packet driver + 支持POP/SMTP的 Mail (Success 或 Pegasus)
Win -- packaet driver + Winsock Stack + Winsock mail client


(二) DIALUP 拨接架构


+--------------
| To Internet
┌─┴─┐
Unix │ │
Host │ │-------- 内部 Ethernet LAN
└───┘
| | |
| | | Modem
| | | 拨接连线
+---------+ | |
| +---+ +--+---------+
| | | |
┌──┐ ┌──┐ ┌──┐ ┌──┐
│ │ │ │ │ │ │ │
└──┘ └──┘ └──┘ └──┘
Windows DOS Mac Windows
PC PC PC PC


架构 (二) 情形下, 我建议三种解决方案。

A. Dialup 终端联机进入 Unix Host, 利用 Unix 的Mail软件 (pine、elm
及 mail等等) 读信。

Unix Server 软件需求:
Modem server (getty, 或者用硬件 Terminal Server)
SMTP (sendmail)
MUA (mail、elm 或 pine)

Client 端软件需求:
DOS -- 终端机仿真软件 (MS-Kermit)
Win -- 终端机仿真软件 (Terminal)

B. Client 以 PPP/SLIP dialup 联机, 之后 client 端 Telnet 进 Unix
Server端, 之后以 Server 端的Mail软件读信。

Unix Server 软件需求:
Modem server (getty)
PPP/SLIP server (pppd/dip)
Telnet server (in.telnetd)
SMTP (sendmail)
MUA (mail、elm 或 pine)

Client 端软件需求:
DOS -- PPP 或 SLIP driver + NCSA Telnet
Win -- PPP 或 SLIP driver + Winsock Stack + Winsock Telnet client


C. Client 以 PPP/SLIP dialup 联机, 之后 client 端以独立的 Mail 软
体读信, 该软件有独立的读信软件并支持 POP 收信 及 SMTP 送信。

Unix Server 软件需求:
Modem server (getty]
PPP/SLIP server (pppd、dip)
POP server (in.pop3d)
SMTP (sendmail)

Client 端软件需求:
DOS -- PPP 或 SLIP driver + NCSA Telnet
Win -- PPP 或 SLIP driver + Winsock Stack + Winsock Telnet client


以上介绍忽略了一个与 POP 非常类似的架构 IMAP, 此处读者在观念上
可以直接把 IMAP 想成 POP, 至于细节上, 笔者后面会专门提到 IMAP。


§ 以上提到的相关软件

Winsock Stack: WinKing、 WinSpan、 Trumpet Winsock 2.0B (都是商业
软件, Trumpet Winsock 2.0B 是 Shareware)
Winsock Mail: Euroda 144 (Freeware)、 Acacia Mail (Commercial)
Winsock Telnet: Ewan 104, Qqtw 3986 (Freeware)
Packat Driver: 网络卡驱动程序


§ 相关软件取得方法 (以 FTP取得)

Trumpet Winsock 2.0B tpts1.seed.net.tw /UPLOAD/WINKING/Winsock_AP/twsk20b.zip
EUDORA 144 tpts1.seed.net.tw /UPLOAD/WINKING/Winsock_AP/eudor144.exe
WinKing DEMO tpts1.seed.net.tw /UPLOAD/WINKING/wkdemo.exe
SUCCESS 2.0 ftp.iii.org.tw:/SEEDNET/success/all
NCSA Telnet moers2.edu.tw /chinese-pub/ncsa/nctu//nctutel.zip
PD: check out the discette that comes with your Ethernet card.
Linux (A version of Unix, free): NCTUCCCA.edu.tw:/UNIX/linux/Slackware

□ 关于 MUA -- Mail User Agent

前面我们已经大致知道 Mail 的应用软件主要有传输部份以及读取界面
部份, 以 Unix 环境来说, 传输部份 (指 SMTP) 内建在 Sendmail (或 Smail)
里面, 而 读取部份就是我们这节所要介绍的。

MUA -- 使用者界面软件, mail、 elm、 pine 软件属之, 这些是 Unix
MUA, 在 DOS环境而言, 可以在 Internet 免费取得的 MUA 有 Success 及 Pegasus,
Windows 则有 Euroda 及 Pegasus等等。


□ Unix 的 MUA

九十年代的 Unix 环境其实已经存在有极具亲和力的网络应用软件, 尤
其是那些存在于 Internet 的免费软件 (Freewares), 本文提到到 ELM 及
Pine 就是其中之二, 我建议系统管理者取得并安装这两个软件。

ELM souorce code:

ftp://NCTUCCCA.edu.tw/packages/mail/elm

Pine source code:
ftp://NCTUCCCA.edu.tw/packages/mail/pine3.91.tar.gz

Pine 甚至有中文版:
ftp://g834315.hung.ab.nthu.edu.tw (140.114.202.26)
/pub/cpine3.91/CPine-3.91.tar.gz
或者 (ftp://NCTUCCCA.edu.tw/UNIX/linux/collect/source/network)



□ MTA & SMTP

当使用者完成写信动作, MUA 把该信的内容交付给实际负责信件投递的
软件, 负责信件投递这层面的软件就是 MTA (Mail Transport Agent)。 以
上 MUA、MTA 这些 名词其实一点也不重要, 比较重要的是对 Mail 的运作
的理解。

SMTP (Simple Mail Transfer Protocol, RFC 821) 是规范 Internet
电子邮件递送的标准 (另外 RFC 822 规范信件格式)。 SMTP 的投递方式是
点对点 (End-to-end) 交谈式传送, 这传送是实时的, 中间可以不经过第三
者转递。 不过由于 Internet 上的 Mail 主机系统横跨相当多不同的网络,
因此存在所谓 Mail Gateway (或 Mail Relay)。

以下我们就用一个图表来呈现各层面 Mail软件的关系。 从下图中我们
可以看出, 最左边及最右边是档案系统下的操作, 最左边中使用者在档案系
统下读信或写信 (MUA), 当有信件要外送时, 这工作都经由第二个方块的
SMTP 程序负责执行。 这 SMTP 程序要收送信件时, 会直接 (透过网络) 与远
端另外一部 Mail 系统的 SMTP 程序打交道, 信件内容在这时被拷贝一份到
收信端这边, 除非对方 SMTP 通知其确实已经收到, 送信端端的 SMTP程序
不会把信件删除, 这可以确保信件不会因为任何缘故而漏失 (比方传送煞那
网络线路突然中断)。


[图 1.1]

+----------+ +----------+
+------+ | | | |
| User |--| | SMTP | |
+ + | Sender- |Commands/Replies| Receiver-|
+------+ | SMTP |--------------| SMTP | +------+
| File |--| | and Mail | |--| File |
|System| | | | | |System|
+------+ +----------+ +----------+ +------+


Sender-SMTP Receiver-SMTP

Model for SMTP Use

(本图取自 RFC 821 文件)



□ POP (Post Office Protocol), POP3 over TCP/IP
POP 可视为 off-line mail 处理协议, 不同于一般电话拨接终端机仿真
联机, POP 只适用在支持 TCP/IP 的网络。 由于系统管理人力的考量, 大部
份的公司或单位只规划一部 Mail系统主机, 其它的工作站并不需要有独立收
发信件的能力, 尤其是针对那些 DOS、Windows或 Mac的工作站来说, 这些工
作站的使用者可以透过 POP 协议来收取其个人在 Mail系统主机的信箱。 目前最
新版的 POP 协议是 POP v ersion 3, 我们一般就称为 POP3。

POP 跟其它 TCP/IP 网络软件一样, 同样是以 Client-Server 型态存在
。系统管理者可以在原本 Mail 主机系统上加装 POP server软件, POP 软件
对原本 Mail 系统的运作方式并没有影响, POP 单纯只提供信箱下载服务而已。
至于使用者机器上, 系统管理者可以帮忙装设支持 POP 的读信软件, 我们称
呼这部份为 POP client软件。 由于 POP 只是个收信协议, 通常这些读信软
体还必须有 MTA 模块 (很多 Mail应用软件已经把POP、MTA及 MUA都整合一
起, 所以一般使用者可以不需要知道这些细节)。 Internet 上有一些非常好
用且免费的软件像是资策会的 Success (For DOS)及 Eudora144 (For Windows)
都支持 POP 取信 SMTP送信, 另外商业版像是 Acacia Mail (For Windows)
也用在这样场合。

更具体的说, 对于想透过 POP 取信的使用者来说, 系统管理者必须在
Unix 主机上为他 (或她) 设立一个帐号, 比方说开一个 yuan 帐号, 以后
寄给 yuan 的信件就放在 Mail主机的 /usr/spool/mail/yuan 档案, 到此
为止都与 POP 无关。 yuan 一早上班时, 开机进入 Windows环境, 并且进
入 Eudora 软件, Eudora 这时透过其内建 POP client 与 Unix 主机的 POP
server程序打交道 (Server会检查 Client送过来的 login ID 及 password)
, 正常的话, 这时才把 Unix 端的 /usr/spool/mail/yuan 档案下载到
Windows端, Unix 端的 /usr/spool/mail/yuan 于是被归零, Eudora 这时
就可 以开始阅读刚刚取得的信件。


POP client 工作站的设定方式请自行参考各 Mail 软件本身, 假如读者
观念还是无法贯通, 请反复参考前面介绍的网络架构规划, 应该不会很难。
至于 POP server这一端的安装, 假设说把 POP server 程序安装在
/usr/local/etc/in.popd, 这时在 /etc/services 及 /etc/inetd.conf 两
个档案可以参考以下设定, 之后重新激活 inetd 程序即可。

## (in /etc/services)
pop-2 109/tcp # PostOffice V.2
pop-3 110/tcp # PostOffice V.3


## (in /etc/inetd.conf, 此设定指定 in.popd 由 inetd 激活)
pop-2 stream tcp nowait root /usr/local/etc/in.popd pop2d
pop-3 stream tcp nowait root /usr/local/etc/in.popd pop3d
## 把以上这两行加入 /etc/inetd.conf


§ POP server 取得方法

对于可以上 Internet 的读者来说, 可以依照以下方式取得 POP3 server
程序代码, 笔者提供两套, 有兴趣者选择其中之一即可, 不过先注明一点: 笔者
不保证这软件可以在所有版本的 Unix 成功编译。 针对 Linux 的用户 来说,
Slackware Linux 已经内 建有 /usr/sbin/in.pop3d server 程序, 所以无
须额外上网络拿。

ftp://NCTUCCCA.edu.tw/UNIX/linux/packages/Mail/qpopper2.1.3.tar.gz
ftp://NCTUCCCA.edu.tw/UNIX/linux/packages/Net-2/sources/popd/pop3d-1001.tar.z

对于 Linux 用户来说, Slackware Linux 系统已经内建有 POP server
程序 (/usr/sbin/in.pop3d 或 /usr/sbin/in.popd), 您只要确定 /etc/
services 及 /etc/inetd.conf 有打开, 就立刻可以使用。

最后对 POP 协议细节有兴趣者, 可以自行拿 RFC 文件来阅读, POP3 在
RFC 的编号是 RFC 1725。


□ IMAP (Internet Message Access Protocol), IMAP over TCP/IP

IMAP 是用在 TCP/IP 网络的一个信件撷取协议。 IMAP 与 POP 是非常
类似的东西, IMAP 同样是以 Client-Server 架构运作, IMAP 跟 POP 一样
都是取信协议, Mail 软件必须另外搭配 SMTP 执行信件投递。

笔者要介绍 IMAP的理由, 主要受中央研究院计算器中心吴杰先生 (jye
@ccvax.sinica.edu.tw) 的一个观点 「Pine 支持 IMAP, 而 Pine 到处都可
以用, 包括 DOS、 Windows、 Unix 及 VMS 等等」。 其实笔者平常读写信
件都是在 Unix 环境使用 Pine, 为此也特地在 DOS还应使用 Pine, 我发觉
DOS/Windows 环境的 PCPine 非常值得推荐, PCPine 可以免费由
ftp://ftp.cac.washington.edu 在 /pine/pcpine 目录下取得。

以下软件分析分为 Dialup PPP/SLIP 以及 LAN 两类。

I. Dialup PPP/SLIP

Unix Server 软件需求:
Modem server (getty]
PPP/SLIP server (pppd、dip)
IMAP server (in.imapd)
SMTP (sendmail)

Client 端软件需求:
DOS -- PPP 或 SLIP driver + PC Pine
Win -- PPP 或 SLIP driver + Winsock Stack + PC Pine


II. LAN

Unix Server 软件需求:
POP server (in.imapd)
SMTP (sendmail)

Client 端软件需求:
DOS -- packet driver + PC Pine
Win -- packaet driver + Winsock Stack + PC Pine


架设 IMAP 环境时, 系统管理者要先帮使用者在 Unix 环境设立一个帐
号, 之后, 使用者在自己的桌上就可以架设 IMAP cllient 软件。 这一点与
POP 也是完全一样。

IMAP server软件必须系统管理者自行架设, 取得管道是 ftp://ftp.cac.
washington.edu/pine/unix-bin, 此处可以取得以下的版本 (这些都已经是
可执行码, 无须再行编译)。

-rwxr-xr-x 1 172 0 1613123 Oct 11 20:53 imapd-bin.a32
-rwxr-xr-x 1 172 0 1134168 Oct 11 16:57 imapd-bin.hpux9
-rwxr-xr-x 1 172 0 1746119 Oct 11 17:27 imapd-bin.linux
-rwxr-xr-x 1 172 0 806431 Oct 11 17:48 imapd-bin.machten
-rwxr-xr-x 1 172 0 752350 Oct 11 17:13 imapd-bin.next
-rwxr-xr-x 1 172 0 1050540 Oct 11 18:06 imapd-bin.osf
-rwxr-xr-x 1 172 0 530322 Oct 11 17:47 imapd-bin.ptx
-rwxr-xr-x 1 172 0 548108 Oct 11 18:53 imapd-bin.solaris
-rwxr-xr-x 1 172 0 819200 Oct 11 17:11 imapd-bin.sun
-rwxr-xr-x 1 172 0 848380 Oct 11 17:15 imapd-bin.ultrix
-rwxr-xr-x 1 172 0 635229 Oct 11 20:52 pico-bin.a32
-rwxr-xr-x 1 172 0 504852 Oct 11 16:58 pico-bin.hpux9
-rwxr-xr-x 1 172 0 411068 Oct 11 17:28 pico-bin.linux
-rwxr-xr-x 1 172 0 431482 Oct 11 18:00 pico-bin.machten
-rwxr-xr-x 1 172 0 415370 Oct 11 17:15 pico-bin.next
-rwxr-xr-x 1 172 0 433290 Oct 11 18:05 pico-bin.osf
-rwxr-xr-x 1 172 0 491154 Oct 11 17:45 pico-bin.ptx
-rwxr-xr-x 1 172 0 176536 Oct 11 17:19 pico-bin.solaris
-rwxr-xr-x 1 172 0 360448 Oct 11 17:13 pico-bin.sun
-rwxr-xr-x 1 172 0 444408 Oct 11 17:16 pico-bin.ultrix
-rwxr-xr-x 1 172 0 4808719 Oct 11 20:51 pine-bin.a32
-rwxr-xr-x 1 172 0 3551052 Oct 11 16:58 pine-bin.hpux9
-rwxr-xr-x 1 172 0 1913542 Oct 11 17:31 pine-bin.linux
-rwxr-xr-x 1 172 0 2915495 Oct 11 18:50 pine-bin.machten
-rwxr-xr-x 1 172 0 2596823 Oct 11 17:22 pine-bin.next
-rwxr-xr-x 1 172 0 3219065 Oct 11 18:01 pine-bin.osf
-rwxr-xr-x 1 172 0 2844046 Oct 11 17:46 pine-bin.ptx
-rwxr-xr-x 1 172 0 1908388 Oct 11 17:30 pine-bin.solaris
-rwxr-xr-x 1 172 0 2637824 Oct 11 17:22 pine-bin.sun
-rwxr-xr-x 1 172 0 2365596 Oct 11 17:22 pine-bin.ultrix

安装方法也很简单, 读者根据您的 Unix版本取得您要的 imapd 执行档,
之后可以摆在 /usr/local/etc/in.imapd, 之后在 /etc/services 及 /etc/
inetd.conf 各自增加一行定义:

/etc/services 档案:
imap 143/tcp # IMAP V.4

/etc/inetd.conf 档案:
imap stream tcp nowait root /usr/local/etc/in.imapd imapd

另外, 对于 Linux 用户来说, Slackware Linux 2.1.0 系统已经内建有
IMAP server 程序 (/usr/sbin/in.imapd), 您只要确定 /etc/services 及
/etc/inetd.conf 有打开, 就立刻可以使用。

最后对 IMAP 协议细节有兴趣者, 可以自行拿 RFC 文件来阅读, IMAP v4
在RFC 的编号是 RFC 1730。



□ Internet E-Mail Routing 观念简介

关于 Internet E-Mail 的 Routing 其实非常简单, 因为 SMTP 的传送
是点对点运作, 既然只是两个主机对传, 就谈不上 Routing。 (留意, 我们
这里的讨论, 已经忽略了 TCP/IP 更底层的部份)。 我们从前面图 1.1 中间
的两个方块中, 可以看出两份 SMTP 程序彼此互传。

不过以上说明也许不够具体, 以下我们就由计算机屏幕上实际观察一下过程。
倘若我们发一封信到 yuan@[139.175.249.15] 这样的地址, 这封信会立刻从
发信人所在主机, 送到 IP 地址为 139.175.249.15 这部主机, 这信的
routing 就这么简单。 以下我们就来看看。


$ mail -v yuan@[139.175.249.15]

tpts1#$ yuan@[139.175.249.15]... Connecting to [139.175.249.
15] via ether...

1 Trying 139.175.249.15... connected.
2 220 h{T
3 HELO tpts1.seed.net.tw
4 250 linux2.uuserv.net.tw Hello tpts1.seed.net.tw
5 MAIL From:
6 250 ... Sender Okay
7 RCPT To:
8 250 ... Recipient Okay
9 DATA
A 354 Enter mail, end with \".\" on a line by itself
B .
C 250 Mail accepted
D QUIT
D 221 linux2.uuserv.net.tw closing connection
F yuan@[139.175.249.15]... Sent

以上的讯息, 当使用者在 tpts1.seed.net.tw 这机器完成信件之后,
该机器的 SMTP 程序(以 client角色) 接手把该信件投递给 139.175.249.15
这部机器的 SMTP 程序(server角色), 上面的讯息也就是两个 SMTP 程序之
间的对话 (第一字段的数字不属于对话的一部份, 其只是标记, 方便阅读)。

以上行数 3、5、7、9、B 及 D 为发信人端 Mail 主机所发出的讯息,
其余的部份则是收信端 SMTP程序的响应, 笔者用口语翻译如下:

3(发): 打招呼, 并附上自己的地址
4(收): 回招呼
5(发): 说明寄信人地址
6(收): 知道了
7(发): 我要寄给贵系统下的 yuan 使用者
8(收): 察有此人, 请寄过来吧
9(发): 发信端发出 DATA 指令, 这是告诉收信端的 SMTP程序 「从以下起就
是信件的内容」
A(收): 我知道了, 请送过来吧, 记得递送完成时, 用 . (句号) 符号通知我
一下
B(发): . 符号表示数据传送完成, 这封信就万事拜托了 :)
C(收): 没问题, 您的信已经被成功接收, 您尽管放心。
D(发): 再见, 离线

额外一提, 对于电子邮件应用来说, 我们很少直接指定 IP 地址, 而是
使用 Domain Name居多, 以此例来说, 假如我们寄给 yuan@linux.uuserv.net.tw , 我们这端的 Mail系统会则会增加一道动作, 先查询 linux.uuserv.net.tw
的对应 IP 地址, 其它的细节则完全 一样。

Internet 上的信件传递的基本原理其实就是这么简单, 不过以上也是
笔者过度简单化的结果。 由于我们住的这个世界越来越复杂了, 底下我们
接着就来看看 Internet Mail运作其复杂的一面。


□ Mail Gateway (Mail Relay)
前面介绍我们知道了, Internet 上的信件传送是点对点传送, 中间可以
不经过第三者转接, 不过真实情况来说, 透过第三者 Mail Gateway 转递却
也很普遍。

所谓 Mail Gateway (有些朋友比较喜欢称为 Mail Relay, 都无妨), 就
是有一部 Mail 主机它同时接连 TCP/IP Internet 网络以及其它网络 (比方
BITNET、 UUCP或封闭性 TCP/IP 局域网络等等), 这样一部 Mail 主机就可
以提供跨越网络之信件提供转递 (Gateway)服务。 请留意, 原发信主机与
Mail Gateway主机之间仍然依 SMTP 标准递送。

我们之前提到, 在SMTP 点对点实时递送情况之下, 假如没有收到收信端
SMTP 响应说「信已经收到」, 送信端 SMTP 会一直保存该份信件, 并试图不
断的重新投递, 也就是说, 信件要嘛在送信人端的主机系统, 要嘛就是在对
方主机。 Mail Gateway 则直接冲击了这观念, 因为, 由于 Gateway存在,
信件送出时可能不是直接投递给收信人的 Mail系统, 而可能是 Mail Gateway
代为接收了, 假若 Mail Gateway还来不及转递出去时系统出个重大失误, 信
件丢失的机率就有可能增加。

Mail Gateway 的存在毕竟有其理由, 以下笔者想到三种情况。 第一,
是针对那些没有直接 Internet 联机的网络而言, 比方 BITNET 及 UUCP用
户, 其它利用间歇性 dialup 取得 Internet 信件者也都属于此类。 第二,
因为系统安全或其它理由, 不想让 Internet 用户直达单位内部网络, 这时
信件的递送可以透过另一部 Mail 系统来转递。 第三种情况, 则为顾虑到
信件接收备援、 或者是中央集中收信的行政考量, 而透过 Mail eXchanger
(MX, 也就是 Mail Gateway)来转递邮件。

其实以上第二及第三点理由都可以透过 MX 来解决, 接下来笔者就要深
入谈一下 MX。

额外一提, 常有朋友问说, 如何把信送到 BITNET 用户。 方法有两
个, 第一, 系统管理者可以设定将所有 .bitnet 信件自动转递给 cunyvm.
cuny.edu, 这样使用者可以正常寄信到 BITNET去, 就跟 Internet 信件没有
不同 (以关 Sendmail/Smail设定方法在往后文章中会有介绍)。 另外一个
方法适合给使用者自力救济, 使用者可以把原本给 nobody@testnode.bitnet
改寄到 nobody%testnode.bitnet@cunyvm.cuny.edu



□ MX and more mail routing

MX (Mail eXchange) 的运作是透过 DNS (Domain Name Server) 注册
MX 记录, 这项注册与一般 Domain Name注册类似, 不同的是, MX 记录所记
载的 Domain Name 不一定有对应 IP, 而是指定某一部 Mail主机 (的地址)
为其 Mail eXchanger。 由于没有 IP, 读者可以自然的推想, MX 的用途
只有在 Internet E-Mail应用。 以下片段资料摘录自 linux.uuserv.net.tw
的 DNS 数据库 , 提供做为参考。

uuserv.net.tw. IN MX 5 linux.uuserv.net.tw.
IN MX 10 tpts1.seed.net.tw.
IN MX 20 aladdin.iii.org.tw.

以上左边 uuserv.net.tw (也可以写作 UUserv.Net.tw, 大小写无关)
就是这样一笔注册, 由于没有 IP 地址, 除了 linux.uuserv.net.tw 这主
机之外, 没有其它 Internet主机知道这部机器究竟在那里, 只知道透过
BIND (而不是 gethostbyname) 可以得知提供这机器转递信件的主机为
linux.uuserv.net.tw。

照这样的注册, 一封信寄给 yuan@uuserv.net.tw的话, 该信就会被送
到 linux.uuserv.net.tw, 这之间仍是以 Internet SMTP标准来投递, 但对
于 linux.uuserv.net.tw 如何进一步把信件转递给 uuserv.net.tw, 我们则
无从得知, 这属于其 local 站内事务。 以上说法只是个概括情况, 详细情
形会因为其它因素而有不同, 我们虚拟一个应用题来说明。

以下应用题假设美国比尔克林顿先生 (president@whitehouse.gove) 发
一封E-Mail 给敝人 (yuan@UUserv.Net.tw), 我们来分析这封信递送时可能
的过程。 不过先提醒读者, 我们住的这个地球天灾人祸不断, 网络世界其实
也不例外, 网络因任何理由中断服务是常见的。 Internet 上 E-Mail 如何
在网络灾害发生时仍然可靠的把信件送达收信人呢? 以下笔者分别用三种情
况来说明。


* whitehouse.gov 成功的送信给 linux.uuserv.net.tw

首先, 当比尔先生完成信件写作并寄出时, 不论他老兄是在 Windows、
Mac 或 Unix 环境下读信, 这我们不管, 他这封信多半会透过 whitehouse.gov
这部主机的 Mail 系统负责投递。

whitehouse.gov 第一步就是询问 UUserv.Net.tw (大小写无关)的 IP
地址, 它跟谁问呢? 当然是跟距离最近的某一部 DNS 。 这查询所得到的回
应, 发现 UUserv.Net.tw 并没有一个对应的 IP, 它发现所有送往
UUserv.Net.tw 这个地址的信件, 都经过一部转递主机 (Mail eXchanger)
-- linux.uuserv.net.tw, 与此同时它也得到 linux.uuserv.net.tw
的对应 IP 为 139.175.249.15, 之后就把信件投递给这部机器。

这里我们中断下来, 来仿真看看由 DNS查到的数据究竟长得什么样子,
我们可以在 Unix环境下以 nslookup 指令仿真查询 MX 记录:

$ nslookup -type=mx uuserv.net.tw
Server: aladdin.iii.org.tw
Address: 140.92.1.50

Non-authoritative answer:
uuserv.net.tw preference = 5, mail exchanger = linux.uuserv.net.tw
uuserv.net.tw preference = 10, mail exchanger = tpts1.seed.net.tw
uuserv.net.tw preference = 20, mail exchanger = aladdin.iii.org.tw

Authoritative answers can be found from:
uuserv.net.tw nameserver = linux.uuserv.net.tw
linux.uuserv.net.tw internet address = 139.175.249.15
tpts1.seed.net.tw internet address = 139.175.1.10
aladdin.iii.org.tw internet address = 140.92.1.50

从上面资料我们可以得知提供 uuserv.net.tw 转递服务的其实不只一部
Internet 主机, 而是三部, 这三部 Mail 主机的 IP 地址也都同时找到。

回到正题。 假如 linux.uuserv.net.tw 成功收到信了, 他还必须进一
步把信投递给 UUserv.Net.tw, 至于如何投递, 则依照其网络联机方式而定,
可能是SMTP 也可能是 UUCP。

我们实际寄一封信来看看。 读者留意下面 3、4 两行, 可以发现信件送出
时先找到 uuserv.net.tw 的信件是由 linux.uuserv.net.tw 转递, 之后信
件就递送给linux.uuserv.net.tw (139.175.249.15)。


$ mail -v -s \"test MX service\" yuan@UUserv.Net.tw 1 yuan@UUserv.Net.tw... Connecting to
2 uuserv.net.tw via ddn...
3 mail exchanger is linux.uuserv.net.tw
4 Trying 139.175.249.15... connected.
5 220 h{T
6 HELO whitehouse.gov
7 250 linux2.uuserv.net.tw Hello tpts1.seed.net.tw
8 MAIL From:
9 250 ... Sender Okay
A RCPT To:
B 250 ... Recipient Okay
C DATA
D 354 Enter mail, end with \".\" on a line by itself
E .
F 250 Mail accepted
QUIT
221 linux2.uuserv.net.tw closing connection
yuan@UUserv.Net.tw... Sent

以上我们从编号 F 这一行可以看到, linux.uuserv.net.tw 已经成功把
whitehouse.gov 寄给 uuserv.net.tw 的信件代收下来了。


* linux.uuserv.net.tw Mail 服务中断

可是假如因为网络中断或其它原因, linux.uuserv.net.tw 的 Mail 系
统无法正常收信, 这时该怎么办? 简单, whitehouse.edu 会把给 yuan@UUserv.Net.tw的信投递给 tpts1.seed.net.tw 这部机器。 这就是怎
么说呢?

根据 DNS 的数据库记载, 提供 uuserv.net.tw 信件转递的一供有三部
Mail 主机, linux.uuserv.net.tw 是其中第一部, 它也拥有最优先服务的权
力, 它也有可能是唯一与 uuserv.net.tw 以直接联机的一部 Internet 主机
(我们前面提过, MX 可以用在封闭的网络, 也可以在 Internet)。
tpts1.seed.net.tw 排名次之, aladdin.iii.org.tw又次之。 关于这 一点,
我们可以从刚刚执行 nslookup 指令的结果得知, 其中 preference 分别有
5 10 20 就是代表优先级, 数字越小有越高的优先权。

uuserv.net.tw preference = 10, mail exchanger = tpts1.seed.net.tw
uuserv.net.tw preference = 20, mail exchanger = aladdin.iii.org.tw
uuserv.net.tw preference = 5, mail exchanger = linux.uuserv.net.tw


whitehouse.gov 把信送给 tpts1.seed.net.tw 这部机器之后,
whitehouse.gov 于是就当作信件已经成功投递了 (这也是前面提到Mail
Gateway会造成信件丢失的原因, 因为信件尚未投递给真正的收信人,
whitehouse.gov 就已经不管)。 tpts1.seed.net.tw 把信收下来后, 就变成
由它来负责投递这封信给 yuan@uuserv.net.tw。

由于 tpts1.seed.net.tw 也不认识 uuserv.net.tw, 它必须把信件投
递给 linux.uuserv.net.tw, 可是网络明明又不通, 这时该怎么办呢? 简单,
tpts1.seed.net.tw 会不断的尝试要把信投递给 linux.uuserv.net.tw, 也
许它会每隔 15 分钟或 30 分钟尝试执行投递一次, 不断尝试, 直到几天后
(究竟几天, 由系统自定, 内定可能三天) 若仍没有成功, 会把信退给
whitehouse.gov, whitehouse.gov 系统再退信给比尔本人, 比尔就知道信没
有送达。 至于以上提到的时间数据不同的系统会有不同的设定。 我在后面
分别会介绍 Sendmail 及 Smail 如何来设定。

可是假如故障发生一天之后 linux.uuserv.net.tw 对外线路恢复正常了,
tpts1.seed.net.tw 就会把一天前 whitehouse.gov 交代下来的信, 投递给
linux.uuserv.net.tw, linux.uuserv.net.tw 接着负责把信转给 UUserv.Net.tw。

不论哪一种情况, 比尔 (president@whitehouse.gov) 应该都会知道他寄
出去的信如何了, 信件不会石沈大海。 比方说, 假如 UUserv.Net.tw 收到
了, 却察无 yuan 此人, 则会把信退回 president@whitehouse.gov, 并附上
错误讯息。 假如 tpts1.seed.net.tw 一定时间内仍联络不到 linux.uuserv.net.tw
,信件也会退给比尔。 假如UUserv.Net.tw 根本不存在, 则 whitehouse.gov
一开始就会立刻把信丢还给比尔, 命附上 unknown host 的错误讯息 (假如
whitehouse.gov 的 Mail 系统不支持 BIND, 这时明明 uuserv.net.tw存在,
unknown host 错误也会发生)。

反过来从 yuan@UUserv.Net.tw的角度来看, 由于 DNS 指定 MX 转接服务,
所以即使 UUserv.Net.tw 的 Mail系统当掉一整天无法收信, 通常别人寄来的
信件是不会丢掉的, 因为, linux.uuserv.net.tw 、 tpts1.seed.net.tw 或
aladdin.iii.org.tw 会帮忙暂时把信收起来。


* whitehouse.gov 对外线路中断

假如 whitehouse.gov 对外的线路因任何原因中断了, 这时信件不可
能投递的出去, 比尔的这封信该如何被处理呢?

假如 whitehouse.gov 的 Mail server设定正确的话, 这封信会被积存
(queue) 在 whitehouse.gov 自己系统里面, 之后, 每隔几分钟尝试把信送
给 linux.uuserv.net.tw 这部机器一次, 正常的话, 假如三天或五天后
whitehouse.gov 对外联机仍然未通, whitehouse.gov 的 Mail 系统就会把
信件退还给比尔。 同样的, 以上所提到的数据会依照系统设定之不同而有
异。


同样的, 假如 whitehouse.gov 对外线路通了, 这时 whitehouse.gov
会依序尝试投递给 linux.uuserv.net.tw、 tpts1.seed.net.tw 或 aladdin.
iii.org.tw 之其中之一。

□ 相关标准文件介绍及其取得方式
以下文件若未经额外注明, 都可以用 FTP 在 ftp.edu.tw 的 /documents
/Internet/rfc 目录下取得, 至于档名, 比方文件编号为 RFC 1725, 则档名
为 rfc-1725.txt.gz。 另外 1994 年十月份的 HopeNet光盘月刊所附 CD片,
也附有 Internet RFC 文件, 但没有FTP 档案库上的资料齐全。

RFC 1730 PS M. Crispin, \"INTERNET MESSAGE ACCESS PROTOCOL - VERSION
4\", 12/20/1994. (Pages=77) (Format=.txt)

RFC 1725 DS J. Myers, M. Rose, \"Post Office Protocol - Version 3\",
11/23/1994. (Pages=18) (Format=.txt) (Obsoletes RFC1460)

RFC 0821 S J. Postel, \"Simple Mail Transfer Protocol\", 08/01/1982.
(Pages=58) (Format=.txt) (Obsoletes RFC0788) (STD 10)

RFC 0822 S D. Crocker, \"Standard for the format of ARPA Internet text
messages\", 08/13/1982. (Pages=47) (Format=.txt) (Obsoletes
RFC0733) (STD 11) (Updated by RFC1327, RFC0987)

RFC 0974 S C. Partridge, \"Mail routing and the domain system\", 01/01/1986.
(Pages=7) (Format=.txt) (STD 14)

RFC 1522 DS K. Moore, \"MIME (Multipurpose Internet Mail Extensions) Part Two:
Message Header Extensions for Non-ASCII Text\", 09/23/1993.
(Pages=10) (Format=.txt) (Obsoletes RFC1342)

RFC 1521 DS N. Borenstein, N. Freed, \"MIME (Multipurpose Internet Mail
Extensions) Part One: Mechanisms for Specifying and Describing the
Format of Internet Message Bodies\", 09/23/1993. (Pages=81)
(Format=.txt, .ps) (Obsoletes RFC1341) (Updated by RFC1590)


RFC 1590 I J. Postel, \"Media Type Registration Procedure\", 03/02/1994.
(Pages=7) (Format=.txt) (Updates RFC1521)

RFC 1591 I J. Postel, \"Domain Name System Structure and Delegation\",
03/03/1994.

□ 结论
本期单纯只介绍 Internet E-Mail的原理及观念, 由于篇幅考虑, 笔者
暂时停在此处, 在往后两期, 笔者将介绍 Unix 还境 Mail Server的架设,
我将分别深入介绍 Sendmail 及 Smail 的取得、 安装以及系统设定。

最后, 笔者必须说明, 笔者不真正拥有「全方位」 Internet E-Mail
之经验! 我没有吹牛 :-) 因此, 笔者竭诚欢迎其它网络先进来函指导,
也欢迎所有读者朋友来信指教, 您可以用 E-Mail 连过我 yuan@UUserv.Net.tw。
相关文章 热门文章
  • 新型电子邮件服务Shortmail获75万美元种子资金
  • “发妻”揭院士候选人“包N奶”电子邮件露“奸情”
  • 韩媒称韩国学生电子邮件收发能力全球排第一
  • 社交网站和电子邮件正威胁英国家庭生活
  • 电子邮件编年史1971~2011(配图,附中文翻译)
  • 十大提高电子邮件阅读效率的应用
  • IMF系统遭黑客攻击 部分电子邮件和文档丢失
  • 专家答疑:云计算与电子邮件外包问题
  • 电子邮件从个人电脑转向手机
  • 警惕更改电子邮件内容实施诈骗活动
  • 美国男子偷看妻子电子邮件或将入狱
  • office outlook 2010 如何修改IMAP电子邮件的数据文件位置
  • Sendmail8.12.9+RedHat 8.0建构邮件服务器
  • sendmail大全
  • Sendmail邮件服务器快速指南
  • SendMail上手指南
  • 用Sendmail配置你的第一台e-mail服务器
  • RedHatLinux AS3中SendMail的配置
  • 企业Sendmail邮件服务器的创建
  • Sendmail环境下对抗垃圾邮件的处理方法
  • Sendmail的邮件用户与系统用户分离
  • 我的qmail安装历程
  • 带SMTP认证功能的sendmail配置
  • Sendmail的relay用法汇总
  • 自由广告区
     
    最新软件下载
  • SharePoint Server 2010 部署文档
  • Exchange 2010 RTM升级至SP1 教程
  • Exchange 2010 OWA下RBAC实现的组功能...
  • Lync Server 2010 Standard Edition 标..
  • Lync Server 2010 Enterprise Edition...
  • Forefront Endpoint Protection 2010 ...
  • Lync Server 2010 Edge 服务器部署文档
  • 《Exchange 2003专家指南》
  • Mastering Hyper-V Deployment
  • Windows Server 2008 R2 Hyper-V
  • Microsoft Lync Server 2010 Unleashed
  • Windows Server 2008 R2 Unleashed
  • 今日邮件技术文章
  • 腾讯,在创新中演绎互联网“进化论”
  • 华科人 张小龙 (中国第二代程序员 QQ...
  • 微软推出新功能 提高Hotmail密码安全性
  • 快压技巧分享:秒传邮件超大附件
  • 不容忽视的邮件营销数据分析过程中的算..
  • 国内手机邮箱的现状与未来发展——访尚..
  • 易观数据:2011Q2中国手机邮箱市场收入..
  • 穿越时空的爱恋 QQ邮箱音视频及贺卡邮件
  • Hotmail新功能:“我的朋友可能被黑了”
  • 入侵邻居网络发骚扰邮件 美国男子被重..
  • 网易邮箱莫子睿:《非你莫属》招聘多过..
  • 中国电信推广189邮箱绿色账单
  • 最新专题
  • 鸟哥的Linux私房菜之Mail服务器
  • Exchange Server 2010技术专题
  • Windows 7 技术专题
  • Sendmail 邮件系统配置
  • 组建Exchange 2003邮件系统
  • Windows Server 2008 专题
  • ORF 反垃圾邮件系统
  • Exchange Server 2007 专题
  • ISA Server 2006 教程专题
  • Windows Vista 技术专题
  • “黑莓”(BlackBerry)专题
  • Apache James 专题
  • 分类导航
    邮件新闻资讯:
    IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮
    电子邮箱 | 反垃圾邮件|邮件客户端|网络安全
    行业数据 | 邮件人物 | 网站公告 | 行业法规
    网络技术:
    邮件原理 | 网络协议 | 网络管理 | 传输介质
    线路接入 | 路由接口 | 邮件存储 | 华为3Com
    CISCO技术 | 网络与服务器硬件
    操作系统:
    Windows 9X | Linux&Uinx | Windows NT
    Windows Vista | FreeBSD | 其它操作系统
    邮件服务器:
    程序与开发 | Exchange | Qmail | Postfix
    Sendmail | MDaemon | Domino | Foxmail
    KerioMail | JavaMail | Winwebmail |James
    Merak&VisNetic | CMailServer | WinMail
    金笛邮件系统 | 其它 |
    反垃圾邮件:
    综述| 客户端反垃圾邮件|服务器端反垃圾邮件
    邮件客户端软件:
    Outlook | Foxmail | DreamMail| KooMail
    The bat | 雷鸟 | Eudora |Becky! |Pegasus
    IncrediMail |其它
    电子邮箱: 个人邮箱 | 企业邮箱 |Gmail
    移动电子邮件:服务器 | 客户端 | 技术前沿
    邮件网络安全:
    软件漏洞 | 安全知识 | 病毒公告 |防火墙
    攻防技术 | 病毒查杀| ISA | 数字签名
    邮件营销:
    Email营销 | 网络营销 | 营销技巧 |营销案例
    邮件人才:招聘 | 职场 | 培训 | 指南 | 职场
    解决方案:
    邮件系统|反垃圾邮件 |安全 |移动电邮 |招标
    产品评测:
    邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端
    广告联系 | 合作联系 | 关于我们 | 联系我们 | 繁體中文
    版权所有:邮件技术资讯网©2003-2010 www.5dmail.net, All Rights Reserved
    www.5Dmail.net Web Team   粤ICP备05009143号