22.4 MUA 软件:客户端的收发信软件

设定 Mail server 不是拿来好看的,当然是要好好的应用他啰!应用 mail server 有两种主要的方式,你可以直接登入 Linux 主机来操作 MTA ,当然也可以透过客户端的 MUA 软件来收发信件,底下我们分别介绍这两种方式啰!


22.4.1 Linux mail

在 Unix like 的操作系统当中都会存有一支可以进行收发信件的软件,那就是『 mail 』这个指令。这个指令是由 mailx 这个软件所提供的,所以您得要先安装这个软件才行。另外,由于 mail 是 Linux 系统的功能,所以即使你的 port 25 (smtp) 没有启动,他还是可以使用的,只是该封邮件就只会被放到队列,而无法寄出去啰!^_^!底下我们来谈一谈最简单的 mail 用法吧

  • 用 mail 直接编辑文字邮件与寄信
    mail 的用法很简单,就是利用『 mail [email address] 』的方式来将信件寄出去, 那个 [email address] 可以是对外的邮件地址,也可以是本机的账号。如果是本机账号的话,可以直接加账号名称即可。 例如:『 mail root 』或『 mail somebody@his.host.name 』。如果是对外寄信的时候, 信件预设的『 Mail from 』就会填写 main.cf 内那个 myorigin 变数的主机名啰! 先来试看看吧!寄给 dmtsai@www.centos.vbird 先:
  1. [root@www ~]# mail dmtsai@www.centos.vbird
  2. Subject: Just test <==这里填写信件标题
  3. This is a test email. <==底下为信件的内容!
  4. bye bye !
  5. . <==注意,这一行只有小数点!代表结束输入之意!

这样就可以将信件寄出去了!另外,早期的 mail server 是可以接受 IP 寄信的,举例来说: mail dmtsai@[192.168.100.254] ,记得 IP 要用中括号包起来。不过由于受到垃圾邮件的影响, 现在这种方式几乎都无法成功的将信件寄出了。

  • 利用已经处理完毕的『纯文本档』寄出信件
    这可不是『附件夹带』的方式!因为在 mail 这个程序里面编辑信件是个很痛苦的差事, 你不能够按上下左右键来回到刚刚编辑有错误的地方,很伤脑筋。此时我们可以透过标准输入来处理! 如果你忘记『 < 』代表的意义,请回到基础篇的第十一章 bash shell中的数据流重导向瞧瞧先!举例来说你要将家目录的 .bashrc 寄给别人,可以这样做:
  1. [root@www ~]# mail -s 'My bashrc' dmtsai &lt; ~/.bashrc
  • 开始查阅接收的信件
    寄信还比较简单,那么收信呢?同样的收信还是使用 mail。直接在提示字符之后输入 mail 时,会主动的捉取使用者在 /var/spool/mail 底下的邮件信箱 (mailbox),例如我 dmtsai 这个账号在输入 mail 后,就会将 /var/spool/mail/dmtsai 这个档案的内容读出来并显示到屏幕上,结果如下:
  1. # 注意喔!底下的身份使用的是 dmtsai 这个用户来操作 mail 这个指令的呦!
  2. [dmtsai@www ~]$ mail
  3. Heirloom Mail version 12.4 7/29/08\. Type ? for help.
  4. "/var/spool/mail/dmtsai": 10 messages 10 new &lt;==信箱来源与新信件数
  5. &gt;N 1 dmtsai@www.centos.vb Mon Aug 8 18:53 18/579 "from vbird"
  6. ....(中间省略)....
  7. N 9 root Tue Aug 9 15:04 19/618 "Just test"
  8. N 10 root Tue Aug 9 15:04 29/745 "My bashrc"
  9. & &lt;==这个是 mail 软件的提示字符,可以输入 ? 来察看可用指令

在上面的画面中,显示 dmtsai 有一封信,且会附上该信件的发信者与标题及收信时间等。你可以用的指令有这些:

  • 读信: (直接按 Enter 或输入数字后 enter)有看到『 > 』那个符号吧!那表示目前 mail 所在的邮件位置,你可以直接输入 Enter 即可看到该封信件的内容! 另外,你也可以在『&』之后的光标位置输入号码,就可以看该封信件的内容了!(注:如果持续按 Enter,则会自『 > 』符号所在的邮件逐次向后读取每封信件内容!)

  • 显示标题: (直接数入 h 或输入 h 数字)例如有 100 封信,要看 90 封左右的信件标题,就输入『 h90 』即可。

  • 回复邮件: (直接输入 R )如果要回复目前『 > 』符号所在的邮件,直接按下『 R 』即可进入刚刚前面介绍过的 mail 文字编辑画面啰!你可以编辑信件后传回去啰!

  • 删除邮件: (输入 d 数字)按下『 d## 』即可删除邮件!例如我要删除掉第 2 封邮件,可以输入『 d2 』如果是要删除第 10-50 封邮件,可以输入『 d10-50 』来删除喔!请记得,如果有删除邮件的话,离开 mail box 时,要使用『 q 』才行!

  • 储存邮件到档案: (输入 s 数字 文件名)如果要将邮件资料存下来,可以输入『 s ## filename 』,例如我要将上面第 10 封邮件存下来,可以输入『 s 10 text.txt 』即可将第一封邮件内容存成 text.txt 这个档案!

  • 离开 mail: (输入 q 或 x )要离开 mail 可以输入 q 或者是 x,请注意『输入 x 可以在不更动 mail box 的情况下离开 mail 程序,不管你刚刚有没有使用 d 删除数据;使用 q 才会将删除的数据移除。』也就是说,如果你不想更动 mail box 那就使用 x 或 exit 离开,如果想要使刚刚移除的动作生效,就要使用 q 啦!

  • 请求协助:关于 mail 更详细的用法可以输入 help 就可以显现目前的 mail 所有功能!

上面是简易的 mail 收信功能!不过,我们曾经将信件转存下来的话,那该如何读取该信件呢?例如读取刚刚记录的 text.txt 邮件信箱。其实可以简单的使用这个方式来读取:

  1. [dmtsai@www ~]$ mail -f ~/text.txt
  • 以『附件夹带』的方式寄信
    前面提到的都是信件的内容,那么有没有可能以『附件』的方式来传递档案?是可以的,不过你需要 uuencode 这个指令的帮忙,在 CentOS 当中这个指令属于 sharutils ,请先利用 yum 来安装他吧!接下来你可以这样使用:
  1. [root@www ~]# [利用 uuencode 编码 ] &#124; [利用 mail 寄出去]
  2. [root@www ~]# uuencode [实际档案] [信件中的檔名] &#124; mail -s '标题' email
  3. # 1\. 将 /etc/hosts 以附件夹带的方式寄给 dmtsai
  4. [root@www ~]# uuencode /etc/hosts myhosts &#124; mail -s 'test encode' dmtsai

这样就能寄出去了,不过,如果收下这封信件呢?同样的我们得要透过译码器来解碼啊! 你得先将该档案存下来,然后这样做:

  1. # 底下的身份可是 dmtsai 这个用户喔!
  2. [dmtsai@www ~]$ mail
  3. Heirloom Mail version 12.4 7/29/08\. Type ? for help.
  4. "/var/spool/mail/dmtsai": 11 messages 1 new 8 unread
  5. 1 dmtsai@www.centos.vb Mon Aug 8 18:53 19/590 "from vbird"
  6. ....(中间省略)....
  7. U 10 root Tue Aug 9 15:04 30/755 "My bashrc"
  8. &gt;N 11 root Tue Aug 9 15:12 29/1121 "test encode"
  9. & s 11 test_encode
  10. "test_encode" [New file] 31/1141
  11. & exit
  12. [dmtsai@www ~]$ uudecode test_encode -o decode
  13. 加密檔 输出档
  14. [dmtsai@www ~]$ ll *code*
  15. -rw-r--r--. 1 dmtsai dmtsai 380 Aug 9 15:15 decode &lt;==译码后的正确数据
  16. -rw-rw-r--. 1 dmtsai dmtsai 1121 Aug 9 15:13 test_encode &lt;==内文会有乱码

虽然 mail 这个指令不是挺好用的,不过至少他可以提供我们在 Linux 纯文本模式下的一个简单的收发信件功能! 不过,目前有个更棒的替代方案,那就是 mutt 这玩意儿啰!


22.4.2 Linux mutt

mutt 除了可以仿真 mail 这个指令之外,他还能够透过 pop3/imap 之类的协议去读取外部的信件喔!所以这家伙真的很不赖! 让我们来玩玩 mutt 这个好物吧!在开始底下的动作前,请使用 yum install mutt 安装好它吧!

  • 直接以 mutt 进行寄送信件的动作:含快速附件夹带文件
    mutt 的功能也很多,我们先来看看 mutt 的基本语法好了,再来开始进行练习吧!
  1. [root@www ~]# mutt [-a 附加檔] [-i 内文档] [-b 秘密副本] [-c 一般副本] \
  2. &gt; [-s 信件标题] email地址
  3. 选项与参数:
  4. -a 附加檔:后面就是你想要传送给朋友的档案,是附加档案,不是信件内容喔!
  5. -i 内文档:就是信件的内文部分,先编写成为档案而已;
  6. -b 秘密副本:原收件者不知道这封信还会寄给后面的那个秘密副本收件者;
  7. -c 一般副本:原收件者会看到这封信还有传给哪位收件者;
  8. -s 信件标题:这还需要解释吗?这封信的标头!
  9. email地址:就是原收件者的 email 啰!
  10. # 1\. 直接在线编写信件,然后寄给 dmtsai@www.centos.vbird 这个用户
  11. [root@www ~]# mutt -s '一封测试信' dmtsai@www.centos.vbird
  12. /root/Mail 不存在。建立吗? ([yes]/no): y &lt;==第一次用才会出现这个讯息
  13. To: dmtsai@www.centos.vbird
  14. Subject: 一封测试信
  15. 随便写写!随便看看~! &lt;==会进入 vi 画面编辑!很棒!
  16. y:寄出 q:中断 t:To c:CC s:Subj a:附加档案 d:叙述 ?:求助 &lt;==按下 y 寄出
  17. From: root &lt;root@www.centos.vbird&gt;
  18. To: dmtsai@www.centos.vbird
  19. Cc:
  20. Bcc:
  21. Subject: 一封测试信
  22. Reply-To:
  23. Fcc: ~/sent
  24. Security: 清除
  25. -- 附件
  26. - I 1 /tmp/mutt-www-2784-0 [text/plain, 8bit, utf-8, 0.1K]
  27. # 2\. 将 /etc/hosts 当成信件内容寄给 dmtsai@www.centos.vbird 这个用户
  28. [root@www ~]# mutt -s 'hosts' -i /etc/hosts dmtsai@www.centos.vbird
  29. # 记得最终在 vim 底下要按下 :wq 来储存寄出喔!

与 mail 在线编写文字不一样,mutt 竟然会呼叫 vi 让你去编辑你的信件!如此一来,当然不需要预先编写信件内文了! 这真是让人感到非常的开心啊!而且整个画面非常的直觉化!相当容易处理呢!那么如果需要附件夹带呢?尤其是夹带 binary program 时,可以这样做:

  1. # 1\. 将 /usr/bin/passwd 当成附件夹带,寄给 dmtsai@www.centos.vbird 用户
  2. [root@www ~]# mutt -s '附件' -a /usr/bin/passwd -- dmtsai@www.centos.vbird
  3. To: dmtsai@www.centos.vbird
  4. Subject: 附件
  5. 不过是个附件测试!
  6. y:寄出 q:中断 t:To c:CC s:Subj a:附加档案 d:叙述 ?:求助 &lt;==按 y 送出
  7. From: root &lt;root@www.centos.vbird&gt;
  8. To: dmtsai@www.centos.vbird
  9. Cc:
  10. Bcc:
  11. Subject: 附件
  12. Reply-To:
  13. Fcc: ~/sent
  14. Security: 清除
  15. -- 附件
  16. - I 1 /tmp/mutt-www-2839-0 [text/plain, 8bit, utf-8, 0.1K] &lt;==内文档
  17. A 2 /usr/bin/passwd [applica/octet-stre, base64, 31K] &lt;==附加檔

看到上表中的附件底下那两行吗?I 代表的是直接附在信件内的内文,A 才是附加档案!这样看懂了吗? 不过你想要使用 mutt 来附加档案时,必须要有底下的注意事项才行:

  • 『 -a filename 』这个选项必须是在指令的最后面,如果上述的指令改写成:『 mutt -a /usr/bin/passwd -s "附件" … 』就不行!会失败的!
  • 在文件名与 email 地址之间需要加上两个连续减号『 — 』才行!如同上面测试的指令模样!

  • 以 mutt 来读不同通讯协议的信箱

与 mail 比较之下,mutt 可以直接透过网络的 pop3, imap 等通讯协议来读信,是相当优秀的一个功能呦! 至少鸟哥觉得真好用!底下同样的,先来瞧瞧可以使用的语法,然后再来看看一些练习。

  1. [root@www ~]# mutt [-f 信箱位置]
  2. 选项与参数:
  3. -f 信箱位置:如果是 imaps 的信箱,可以这样:『 -f imaps://服务器的IP 』
  4. # 1\. 直接用 dmtsai 的身份读取本机的信箱内容:
  5. [dmtsai@www ~]$ mutt
  6. q:离开 d:删除 u:反删除 s:储存 m:信件 r:回复 g:群组 ?:求助
  7. ....(中间省略)....
  8. 11 O + Aug 09 root ( 12) test encode
  9. 12 O + Aug 09 root ( 1) 一封测试信
  10. 13 O + Aug 09 root ( 8) hosts
  11. 14 O + Aug 09 root ( 604) 附件
  12. ---Mutt: /var/spool/mail/dmtsai [Msgs:14 Old:11 74K]---(date/date)-------(all)--
  13. # 2\. 在上面的信件 14 号内容反白后,直接按下 Enter 会出现如下画面!:
  14. i:离开 -:上一页 &lt;Space&gt;:下一页 v:显示附件。 d:删除 r:回复 j:下一个 ?:求助
  15. Date: Tue, 9 Aug 2011 15:24:34 +0800
  16. From: root &lt;root@www.centos.vbird&gt;
  17. To: dmtsai@www.centos.vbird
  18. Subject: 附件
  19. User-Agent: Mutt/1.5.20 (2009-12-10)
  20. [-- 附件 #1 --]
  21. [-- 种类:textplain,编码:8bit,大小:0.1K --]
  22. 不过是个附件测试! &lt;==信件的内文部分
  23. [-- 附件 #2: passwd --] &lt;==说明信件的附件夹带部分
  24. [-- 种类:applicationoctet-stream,编码:base64,大小:41K --]
  25. [-- application/octet-stream 尚未支持 (按 'v' 来显示这部份) --]
  26. -O +- 14/14: root 附件 -- (all)
  27. # 3\. 在上面画面按下 v 后,会出现相关的附件数据:
  28. q:离开 s:储存 &#124;:管线 p:显示 ?:求助
  29. I 1 &lt;no description&gt; [text/plain, 8bit, utf-8, 0.1K]
  30. A 2 passwd [applica/octet-stre, base64, 41K]
  31. # 反白处按下 s 就能够储存附加档案啰!

最后离开时,一直按下 q ,然后参考出现的信息来处理即可这就是本机信件的收信方式!非常简单! 附加档案的储存方面也很容易,真是非常开心啊!那如果是外部信箱呢?举例来说,我用 root 的身份去收 dmtsai 的 imaps 信件,会是怎样的情况呢?

  1. # 1\. 在服务器端必须要让 mail 这个群组能够使用 dmtsai 的家目录,所以要这样:
  2. [dmtsai@www ~]$ chmod a+x ~
  3. # 2\. 开始在客户端登入 imaps 服务器取得 dmtsai 的新邮件与邮件文件夹
  4. [root@www ~]# mutt -f imaps://www.centos.vbird
  5. q:离开 ?:求助
  6. 这个验证属于:
  7. www.centos.vbird dmtsai@www.centos.vbird
  8. KSU
  9. DIC
  10. Tainan Taiwan TW
  11. 这个验证的派发者:
  12. www.centos.vbird dmtsai@www.centos.vbird
  13. KSU
  14. DIC
  15. Tainan Taiwan TW
  16. 这个验证有效
  17. Tue, 9 Aug 2011 06:45:32 UTC
  18. Wed, 8 Aug 2012 06:45:32 UTC
  19. SHA1 Fingerprint: E86B 5364 2371 CD28 735C 9018 533F 4BC0 9166 FD03
  20. MD5 Fingerprint: 54F5 CA4E 86E1 63CD 25A9 707E B76F 5B52
  21. -- Mutt: SSL Certificate check (certificate 1 of 1 in chain)
  22. (1)不接受,(2)只是这次接受,(3)永远接受 &lt;==这里要填写 2 3 才行!
  23. www.centos.vbird 的使用者名称:dmtsai
  24. dmtsai@www.centos.vbird 的密码:

最终在密码设定正确后,你就会看到刚刚我们所看到的信件了!不过要注意的是,如果你的用户家目录在非正规目录, 那么可能会出现 SELinux 的错误,这时就得要重新修订一下你的 SELinux 安全本文的类型啰! 如此一来,我们就直接以文本模式来取得网络邮件信箱!这实在是非常方便的一件事!只是没有图文并茂而已! ^_^


22.4.3 Thunderbird 好用的跨平台 (Windows/Linux X) 软件

自由软件最大的好处之一就是该软件大多可以进行移植,也就是在任何操作系统上面几乎都能够执行该软件的意思。 因此学习自由软件的好处就是,你不必因为转换操作系统而学习不同的操作环境!MUA 也有自由软件!那就是 Mozilla 基金会推出的 ThunderBird (雷鸟) 这个好用的咚咚,你可以在底下的网址上面找到繁体中文的软件:

  • http://moztw.org/thunderbird/
    有鉴于目前客户端还是以 Windows 操作系统为大宗,所以底下的说明主要是在 Windows 7 上头的安装与设定为主。目前 (2011/08) 最新的 Thunderbird 已经出到 5.x 了,所以鸟哥以繁体中文的 5.x 为范例来介绍啰。下载完毕的安装过程鸟哥省略了,因为一直下一步而已。鸟哥直接跳到第一次启动 Thunderbird 的介绍,希望对大家有帮助呦!鸟哥是以 dmtsai@www.centos.vbird 这个账号为范例来说明的呦!初次启动会出现下图:

27.4. 22.4 MUA 软件:客户端的收发信软件  - 图1图 22.4-1、第一次启动 Thunderbird 的示意图

由于是第一次启动,所以 thunderbird 里面没有任何识别数据。此时你可以填写你要在 email 上面让人家看到的资料, 以及包括你登入远程信箱的账号密码等信息。上图鸟哥的昵称为『鸟哥哥』,而 Email 是要给收件者看到的,密码当然就是自己的不外流~填完之后按下『继续』吧!

27.4. 22.4 MUA 软件:客户端的收发信软件  - 图2图 22.4-2、Thunderbird 主动的以用户信息尝试登入服务器

由于刚刚图 22.4-1 有输入账号与密码信息,因此,在这一个步骤中,Thunderbird 会主动的尝试登入远程信箱! 不过,好像会抓取错误的信息的样子。如果真的抓错了,请修改箭头 1 指的服务器主机名,以及通讯协议的相关设定值, 按下『重新侦测』,确定捉到的数据是正确了,再按下『建立账号』或『进阶设定』(箭头4指的地方)即可! 如果你很好奇进阶设定里面有啥,点选箭头 4 指的地方,会出现如下的详细资料:

27.4. 22.4 MUA 软件:客户端的收发信软件  - 图3图 22.4-3、手动修改账号的相关参数

如上图所示,点选服务器设定项目,然后去查阅一下收信的服务器设定是否正确?若正确的话,就按下确定吧! 然后会出现如下的图示,要你确定是否使用 Thunderbird 作为默认的电子邮件收发软件就是了!直接点确定进入下个步骤吧!

27.4. 22.4 MUA 软件:客户端的收发信软件  - 图4图 22.4-4、建立默认的 MUA 软件示意图

由于 Thunderbird 会尝试使用你输入的账号密码去登入远程服务器的 imaps 服务,所以就会出现如下图一般的凭证取得示意, 这时要按啥?当然是确认永久储存该凭证嘛!很简单的啊!

27.4. 22.4 MUA 软件:客户端的收发信软件  - 图5图 22.4-5、取得凭证的示意图

确定凭证 OK、账号密码也 OK 的话,就可以开始使用 Thunderbird 啦!正常使用的图示有点像这样:

27.4. 22.4 MUA 软件:客户端的收发信软件  - 图6图 22.4-6、Thunderbird 正常操作示意图

如果一切成功顺利,那么你应该会看到如上的画面了!回到刚刚我们查询到的标题名为『附件』的邮件,查阅一下内容, 嘿嘿!你会看到内文与附件都是 OK 正常的啦!而且更开心的是,由于是 imaps 的通讯协议,因此 Thunderbird 的内容会与服务器上面的 /var/spool/mail/dmtsai 这个信箱内容同步喔!不像 POP3 抓下来就删除服务器的信件! 真是好好用的软件啊! ^_^

Tips: 老实说,由于 gmail 等免费邮件的盛行,目前连 Openwebmail 自由软件都很少人安装了!鸟哥上课时看到的同学, 几乎全部使用 gmail, yahoo mail, hotmail 等的 web 接口的 MUA,根本没人在用本机端的 MUA 了~但是, 某些时刻某些过时的信件还是得要从 web mail 上面捉下来,这时,Thunderbird 就派上用场啰! ^_^

27.4. 22.4 MUA 软件:客户端的收发信软件  - 图7


原文: https://wizardforcel.gitbooks.io/vbird-linux-server-3e/content/168.html