应用Mail Server有两种主要的方式,可以直接登录Linux主机来操作MTA,也可以通过客户端的MUA软件来收发信件,下面分别介绍这两种方式。

19.6.1  Linux Mail

在Unix like的操作系统中都会存在一个可以进行收发信件的指令,即Mail指令。这个指令是由Mail这个软件所提供的,所以需要先安装Mail软件。另外, 由于Mail是Linux系统的功能,所以即使端口25(SMTP)没有启动,它还是可以使用的,只不过该邮件只会被放到队列,而无法寄出去。下面来谈一 谈最简单的Mail用法。

1. 用Mail直接编辑文字邮件与寄信

Mail的用法很简单,即利用“Mail[E-mail address]”的方式来将信件寄出,“ E-mail address”可以是对外的邮件地址,也可以是本机的账号。如果是本机账号的话,直接加账号名称即可。例如:Mail root或Mail 。如果是对外寄信的话,信件默认的Mail from就会填写main.cf内的myorigin变量的主机名称。先来试试看,寄给:


                                   [root@linux ~]# Mail dmtsai@linux.vbird.tsai
Subject: Just test          <==这里填写信件标题
This is a test E-mail.     <==下面为信件的内容
bye bye !
.                              <==注意,这一行只有小数点,代表结束输入
Cc:                           <==密码副本                        

这样即可将信件寄出。另外,早期的Mail Server是可以接收IP寄信的,例如:Mail ],记得IP要用中括号包起来。不过由于受到垃圾邮件的影响,现在这种方式几乎都无法成功的将信件寄出了。

2. 利用已经处理完的纯文本文件寄信

这里说的不是以附件发送的方式,因为在Mail这个程序里编辑信件是个很痛苦的差事,不能够按上、下、左、右键回到刚刚编辑有错误的地方,很伤脑 筋。此时可以通过标准输入来处理。如果您忘记“< ”代表的意义,请参考《鸟哥的私房菜——基础学习篇》中的Bash shell章节。例如您要将默认目录的“.bashrc”寄给别人,可以这样做:


                                   [root@linux ~]# Mail -s 'My bashrc' dmtsai < ~/.bashrc                        

3. 开始接收信件

寄信比较简单,那么收信呢?收信还是使用Mail。直接在提示字符后输入Mail时,会主动的捉取用户在/var/spool/Mail下的邮件信 箱(Mailbox),例如dmtsai这个账号在输入Mail后,就会将/var/spool/Mail/dmtsai文件的内容读出来并显示到屏幕 上,结果如下:


                                   [root@linux ~]# Mail
Mail version 8.1 6/6/93.  Type ? for help.
"/var/spool/Mail/dmtsai": 1 message 1 unread
>U  1 root@linux.vbird.tsai  Fri Nov 24 11:34  32/764   "My bashrc"
&  <==这是Mail软件的提示字符,可以输入“?”来查看可用指令                        

上述代码显示dmtsai有一封信,且会附上该信件的发信者、标题及收信时间等。可以应用的指令如下。

(1)读信(直接按Enter或输入数字按Enter)

当看到“> ”符号时,表示目前Mail所在的邮件字段,您可以直接输入数字按Enter或在“&”后的光标位置输入号码,即可看到该封信件的内容。如果持续按Enter,则会自“>”符号所在的邮件逐次向后读取每封信件内容。

(2)显示标题(直接输入h)

如果要重新显示每封信的标题,则输入h即可。

(3)回复邮件(直接输入R)

如果要回复目前“>”符号所在的邮件,直接输入R即可进入刚刚前面介绍过的Mail文字编辑界面了。可以在编辑信件后回复邮件。

(4)删除邮件(输入d)

输入“d## ”即可删除邮件。例如要删除第2封邮件,可以输入“d 2”如果要删除第10~50封邮件,可以输入“d 10-50”。如果有删除邮件的话,离开Mail box时,要使用q。

(5)储存邮件到文件(输入s+文件名)

如果要将邮件资料存下来,可以输入“s##filename”,例如要将第2封邮件存下来,可以输入“s 1 uuencode”即可将第2封邮件内容另存为uuencode文件。

(6)离开Mail(输入q或x)

要离开Mail可以输入q或者是x,输入x可以在不更改Mail box的情况下离开Mail程序,不管刚刚有没有使用d删除数据;使用q会将删除的数据清除,并且会将所有已读过的信件内容转存到默认目录下的mbox文 件。也就是说,如果您不想更改Mail box,那就使用x或exit离开,如果想要使刚刚移除的操作生效,就要使用q。不过,使用q之后,只有未读的信件才会保留在/var/spool /Mail/accout里,其他已读的数据都会被存入“~/mbox”中。例如 /home/dmtsai/mbox为储存dmtsai已读过的信件。

(7)请求帮助

关于Mail更详细的用法可以输入help以显示目前Mail的所有功能。

上面是简易的Mail收信功能。不过,如果离开Mail时按下q,信件将转存到“~/mbox”这个邮件信箱,那么该如何读取这个文件内的信件数据呢?可简单的使用以下方式来读取:


                                   [root@linux ~]# Mail -f ~/mbox                        

4. 以“附件”的方式寄信

前面提到的都是信件的内容,那么能否以“附件”的方式来传递文件呢?当然是可以的,不过需要uuencode指令的帮助,在CentOS中这个指令属于shartuils,请先利用yum来安装它。接下来可以这样使用:


                                   [root@linux ~]# [利用uuencode编码 ] | [利用Mail寄出去]
[root@linux ~]# uuencode [实际文件] [信件中的文件名]|Mail-s '标题' E-mail

范例一:将“~/.bashrc”以附件的方式寄给dmtsai
[root@linux ~]# uuencode ~/.bashrc bashrc | Mail -s 'test encode' dmtsai                        

这样就能寄出去了,不过,如果收下这封信件呢?需要通过译码器来解码。首先需要将该文件存下来,然后进行如下操作:


                                   [root@linux ~]# Mail
Mail version 8.1 6/6/93.  Type ? for help.
"/var/spool/Mail/dmtsai": 2 messages 2 unread
>U  1 root@linux.vbird.tsai  Fri Nov 24 11:34  32/764   "My bashrc"
U  2 root@linux.vbird.tsai  Fri Nov 24 11:52  24/904   "test encode"
& s 2 test_encode
"test_encode" [New file]
& exit

[root@linux ~]# uudecode test_encode -o decode
                              加密文件          输出文件                        虽然Mail指令不是很好用,但至少它可以提供一种在Linux纯文本模式下的简单的收发信件功能。我们最好还是熟悉一下。