内容简介:本指南将向您介绍如何初步使用命令行下强大的电子邮件工具:fetchmail、procmail、mutt 和 nbsmtp。

如果您不是具有精致图形界面的电子邮件客户端的爱好者,或者您想体验一下其它的邮件客户端以便决定哪个最适合您,那么以下便是开始使用这些强大命令行工具的一条捷径:

fetchmail->procmail->mutt->smtp

这些程序不仅仅功能强大并且高度可定制,而且体积小并且有效率。一旦您准备好并开始使用这套电子邮件系统时,您将会为您能利用它所做的事情而感到吃惊。

因为这是一个入门指南,我们略去了邮件传输代理(MTA),例如 sendmail、postfix 或 exim。这意味着没有复杂的 MTA 配置。本文同样略去了使用端口 25 的邮件服务。

我们可以这么做是因为 fetchmail 可以强制邮件直接由邮件投递代理(MDA)取回而不转发到 25 端口。并且我们不需要使用一个复杂的 MTA 来完成普通的外出邮件投递。

为使您的电子邮件工作,以下是您将会用到的程序。

代码 1.1

# emerge fetchmail procmail mutt nbsmtp

然后只需快捷的四步来配置一下文件,您就将准备妥当并开始运行一个全新的电子邮件系统了。

重要:每步完成后您可以测试一下以确认设置正确。这样当您完成时将会得到一个完全可用的电子邮件系统。

2. Fetchmail

Fetchmail 从远程服务器获取邮件并转送到您的本地投递系统。使用时您需要在您的主目录下创建 .fecthmailrc 文件,示例如下:

代码 2.1: 示例 .fetchmailrc

poll mail.myisp.net protocol pop3 user "myname" password "mypasswd"

当您创建 .fetchmailrc 文件后,您必须使用 chmod 命令改变该文件的访问权限。该文件必须只对文件所有者是可读的。可使用如下命令设置该权限:

代码 2.2

# chmod 710 .fetchmailrc

监视其行动可使用详细模式(-v)。获取全部邮件可使用 -a 参数。您必须使用 -m 参数才能让 fetchmail 将邮件传送到 procmail。

警告:测试时,建议使用保留(-k)远程服务器上的邮件,万一出错时您还需要重新收取。

现在就来运行 fetchmai 并观看它的表演吧!

代码 2.3: Fetchmail 测试 #1

# fetchmail -akv -m "/usr/bin/procmail -d %T"

当您已经拥有一个可用的邮件系统时,您可以将它设置成 cron 的任务或者将其放到类似 gkrellm 的监视器中。Fetchmail 也可以以后台模式运行,按照您指定的时间间隔(以秒为单位)收取邮件。

3. Procmail

Procmail 用于过滤由 fetchmail 转送来的邮件。它也作为 MDA 将邮件投递到您的邮箱中以便 mutt(您的邮件客户端)读取。

使用 procmail 时,您需要在您的主目录中创建 .procmailrc 文件。基于快速入门的目的,我们使用一个十分简单的 .procmailrc 文件,它将过滤来自三个 gentoo 邮件列表的邮件到以下邮箱:gentoo-dev、gentoo-user 和 gentoo-announce

注释:Procmail 过滤邮件的规则称为处方(recipe),我也加入了一些处方用于过滤掉一些垃圾邮件(spam)。

代码 3.1: 示例 .procmailrc

MAILDIR=$HOME/MuttMail        ##您最好确认该目录存在

LOGFILE=$HOME/.procmaillog

LOGABSTRACT=no

#VERBOSE=on...只在调试时使用

VERBOSE=off

FORMAIL=/usr/bin/formail

NL="

"

##处方行以 :0 开始

##不要在处方行加入注解

##使用否条件 ! 禁止一个处方

##条件行以 * 开始,regex 是您的朋友

##条件并列在一起,* 以后的部分都被送到 egrep

##紧接条件的是执行行,在这里是一个邮箱的名称

#使用 formail 捕获复本

:0 Whc: .msgid.lock

| $FORMAIL -D 16384 .msgid.cache

:0 a

$MAILDIR/duplicates

#我们总是允许邮件来自

:0

* ^From:.*(craig\@hotmail|renee\@local.com)

$MAILDIR/friends

#接着冲走一些垃圾

:0

* ^Subject:.*(credit|cash|money|debt|sex|sale|loan)

$MAILDIR/spam

#不要 html 消息

:0

* ^Content-Type:.*html

$MAILDIR/junk

#将我的邮件列表转到相应邮箱

:0

* ^List-Id:.*gentoo-user

gentoo-user

:0

* ^List-Id:.*gentoo-dev

gentoo-dev

:0

* ^List-Id:.*gentoo-announce

gentoo-announce

#捕获任何其它的 gentoo 邮件

:0

* ^From:.*gentoo.org

gentoo

:0

* ^From:.*@freshmeat\.net

freshmeat

################################

# 最后一条规则:将到达 #

# 这的邮件送到默认邮箱 #

################################

:0

* .*

default

# 文件结束

注释:只需要创建目录 MAILDIR $HOME/MuttMail。Procmail 会在此目录中根据执行行中所描述的名称创建需要的邮箱文件。若需要一些有用的链接,请访问 http://www.procmail.org/

现在您可以重新运行我们在第一步中已经测试过的 fecthmail 命令来测试 .procmailrc 。记住使用 -k 选项来保留远程服务器上的邮件以便我们再次运行时邮件仍在。

代码 3.2: Procmail 测试 #1

# fetchmail -akv -m "/usr/bin/procmail -d %T"

现在 fetchmail 和 procmail 都已经执行,可以到 $HOME/MuttMail 使用 less 或者您的文件管理器来读取您的消息。

4. Mutt 电子邮件客户端

Mutt 用于读取及撰写电子邮件。它不仅仅功能强大并且高度可定制,而且体积小并且有效率。

Mutt 支持读取及写入四种邮箱类型:mbox、MMDF、MH 和 Maildir。邮箱类型是自动检测的。这里我们使用 mbox 类型,将一个邮箱中所有的消息都储存到一个文件中。

Mutt 也可以工作于远程 IMAP 服务器上的文件夹。见 Mutt 使用手册 4.11 节和 Mutt 网站 http://www.mutt.org/ 中关于 IMAP 的支持。

当您在第一步中安装完 Mutt 时,它将创建配置文件 /etc/mutt/Muttrc。您还需要在您的主目录下创建文件 .muttrc。

代码 4.1: 示例 .muttrc

// 一定要读在 /usr/share/doc/mutt* 下的精致的 Mutt 使用手册// 这里的任何设置将覆盖 /etc/mutt/Muttrc 中的系统设置

# cp /etc/mutt/Muttrc ~/.muttrc

# nano -w .muttrc

set pager_context=1

set pager_index_lines=6         #在页中显示小型索引

set menu_scroll

set pgp_verify_sig=no          #在页中不显示 pgp

set status_on_top            #在顶部显示状态行

set sort=threads            #在索引中将消息按线程排列

set status_format=" %r %b %f %n   Del %d   Msgs %m %l %> (%P)"

set pager_format="%-10.10i %[!%a %b %d %R]"

set date_format="!%H:%M %a %d %b   "

set index_format="%4C %Z %[%b%d] %-15.15F %s"

set folder_format="%2C %t %8s %d %N %f"

#set sendmail="/usr/bin/nbsmtp -d isp.net -h smtp.isp.net -f [email protected]"

#set from="default-mailaddress"     #设置您的发送邮箱地址

#set realname="myname"

set record="$HOME/MuttMail/sent"    #发出的邮件储存在这

set delete=yes             #删除时不提示

set include=yes        #回复时引用原文

set fast_reply=yes      #回复时不询问回复地址

set beep=no        #无声

set markers=no        #自动换行时不显示 +

set confirmappend=no      #save to 时不提示,=keep

set to_chars=" +TCF"          #邮件列表无 L

set folder = $HOME/MuttMail

mailboxes =gentoo-user

mailboxes =gentoo-dev

mailboxes =gentoo-announce

mailboxes =gentoo

mailboxes =freshmeat

mailboxes =duplicates

mailboxes =default

mailboxes =sent

mailboxes =friends

mailboxes =junk

mailboxes =spam

mailboxes =keep

save-hook .* =keep           #默认保存(s)邮件的 mbox 为 =keep

subscribe gentoo-user gentoo-dev    #订购这些列表

bind pager h display-toggle-weed  #使用 h 键切换邮件头信息显示

# 模拟旧式网址菜单

macro index \cb |urlview\n 'call urlview to extract URLs out of a message'

macro pager \cb |urlview\n 'call urlview to extract URLs out of a message'

#使用 G 键运行 fetchmail

macro index G "!fetchmail -a -m 'procmail -d %T'\r"

macro pager G "!fetchmail -a -m 'procmail -d %T'\r"

#用于编辑 .muttrc 文件并载入...不必重新运行

macro generic ,sm ":source $HOME/.muttrc\r"

macro generic \cj "!rxvt -bg wheat -e joe $HOME/.muttrc\r"

# 显示邮件时,除去默认邮件头列表中的域

# 忽略所有域然后反选您想看到的

ignore *

unignore Date To From: Subject X-Mailer Organization User-Agent

hdr_order Date From To Subject X-Mailer User-Agent Organization

##您的 Mutt 一定需要一些颜色

##这里提供了四级的引用文本

##这些设置覆盖了/etc/mutt/Muttrc 中的系统设置

#color quoted green default

color quoted1 magenta blue

#color quoted2 yellow default

#color quoted3 red default

#color signature cyan cyan

#这个色彩设置拷贝自 /etc/mutt/Muttrc.color

#如果希望看到 /etc/mutt/Muttrc 中的默认色彩,可将它注释掉

# Je vois la vie en rose :-)

color  hdrdefault  brightcyan  blue

color  header    brightwhite  blue "^from:"

color  header     brightwhite    blue  "^subject:"

color  quoted     brightgreen   blue

color  signature    brightwhite  blue

color  indicator    blue      green

color  error      red       black

mono  error      bold

color  status     black cyan

mono  status    bold

color  tree      yellow    blue

color  tilde      brightmagenta  blue

color  body  brightwhite    blue  "[-a-z_0-9.]+@[-a-z_0-9.]+"

mono  body  bold          "[-a-z_0-9.]+@[-a-z_0-9.]+"

color  body      brightyellow  black  "^Good signature"

mono  body      bold          "^Good signature"

color  body      brightwhite   red   "^Bad signature from.*"

mono  body      bold          "^Bad signature from.*"

color  normal     white    blue

color  message    green  black

color  attachment  brightgreen  blue

# 文件结束…但它可以继续再继续……:)

对于本例,这只是一个示例的 .muttrc。您还可以设置更多的选项,例如 gpg 设置。到 http://mutt.netliberte.org/ 看一看更多的示例及帮助吧。

现在您可以测试您的 .muttrc 了。

代码 4.2: 测试 .muttrc

# mutt -y

这将开启 Mutt 并显示您在测试 2 中运行 fetchmail 命令时创建的 Mutt 邮箱菜单。

按 ? 键取得关于浏览 Mutt 邮箱的帮助。

5. SMTP

最后的一步是设置 nbsmtp,“No-Brainer SMTP” 用于将邮件发送到您的 SMTP 服务器。这步是所有设置中最简单的,它只需要在您的 .muttrc 文件中添加一条。

domain:您想让 nbsmtp 告知其所属的域名。它一般就是您电子邮件地址中的域名。

from@addr:您想让 nbsmtp 使用的发件人地址。注意这可以与您 MUA 中“From:”行的设置不同。

host:您使用的 smtp 服务器。

代码 5.1: 添加 smtp 支持

# nano -w .muttrc

set sendmail="/usr/bin/nbsmtp -d isp.net -h smtp.isp.net -f [email protected]"

现在您可以发送一封邮件了。在 Mutt 的页或索引中使用 m 键撰写一封测试邮件并发送到您的电子邮件地址。如果您在 .muttrc 中设置了 editor= Mutt 会使用指定的 EDITOR 或 VISUAL 做为邮件编辑器。当您写完时,使用 y 键发出您的邮件。如果没有错误,您将会先看到“sending mail”然后是“New mail in =sent”。

记住在 .muttrc 中我们曾使用 set record="$HOME/MuttMail/sent" 设置发出邮件的储存地址。

现在即将完成测试,再次运行 fecthmail 收取您所有的邮件并验证您已经收到您往自己电子邮件地址所发的邮件。当您找到您的测试邮件时,使用 h 键切换邮件头显示并查看完整的邮件传送路径。

注释:您可能还需要一个叫 urlview 的软件。它将邮件文本中的网址提取出并传递到您的浏览器中。

代码 5.2

# emerge urlview

然后创建文件 ~/.urlview ,您可以拷贝 /usr/share/doc/urlview*/ 中的配置文件再设置您的浏览器命令。

现在您已经拥有一个功能强大并且高度可定制的邮件系统。接下来要读一下所有的使用手册和文档,并在网上利用 “google” procmailrc 和 muttrc 查找更多的用户设置文件。

03-14 03:43