基于shell
现在已经有了 Mail.app, Thunderbird, Outlook 这些图形化工具能很方便的处理邮件,为啥还需要 mutt 这种命令行文本方式的邮件工具呢?mutt 的一个优势是占用资源小,可以很好的运行在低配置的虚拟机或古老的电脑上(应该不会有人想在 256MB 内存的虚拟机或 VPS 上用 X Window/Gnome/Thunderbird 这种组合吧)。那为什么要在虚拟机上收发邮件呢,不能在自己电脑上处理邮件吗?可能有多个电脑而且电脑经常换,电脑可能被盗,硬盘可能坏、数据可能丢,邮件放在本地电脑不太方便,有些电脑可能是共用的,在共用电脑上保留自己的邮件帐号不爽。那为啥不直接用 Gmail 收发 POP/IMAP 工作邮件呢?有时候可能需要在别人的电脑上打开工作邮件,比如核对一些事情、计划、会议记录之类的,在公共电脑或者别人电脑上开自己的私人邮箱是件很危险的事情,谁知道电脑上有没有病毒、木马或者键盘纪录程序?
建议经常使用 Gmail 的用户激活 2-step verification 增加安全性。
总之吧,现在的需求是:ssh 到一台服务器或虚拟机上,用 mutt 处理邮件。
在 Ubuntu 上
在 Ubuntu 上安装 mutt + fetchmail + maildrop + msmtp:
# apt-get install mutt fetchmail maildrop msmtp
在 FreeBSD 上
在 FreeBSD 上安装 mutt + fetchmail + maildrop + msmtp:
# pkg_add -r mutt # pkg_add -r fetchmail # pkg_add -r maildrop # pkg_add -r msmtp
配置 mutt
touch 一个文件用来存放邮件:
# mkdir /var/spool/mail # touch /var/spool/mail/vpsee
配置 fetchmail 通过 POP 收邮件:
$ vi .fetchmailrc poll "mail.vpsee.com" protocol pop3 username "vpsee" password "password" mimedecode # 自动处理 mime mda "/usr/bin/maildrop" # 告诉 fetchmail 使用哪个 MDA (for Ubuntu) #mda "/usr/local/bin/maildrop" # 告诉 fetchmail 使用哪个 MDA (for FreeBSD) $ chmod 0700 .fetchmailrc
配置 maildrop,告诉 maildrop 把邮件分发到哪里(其实是一个 /var/spool/mail/ 下的一个文件),注意这个时候要处理一下权限问题,否则用户登陆执行 fetchmail 后由 maildrop 分发到邮箱( /var/spool/mail/vpsee)的时候会出现权限错误(因为 maildrop 没有权限写那个文件):
# touch /var/spool/mail/vpsee # chown vpsee:vpsee /var/spool/mail/vpsee $ vi .mailfilter HOME=/home/vpsee # 指定 home 目录 DEFAULT=/var/spool/mail/vpsee # 想在哪里保持邮件 logfile "$HOME/.maillog" # 日志
配置 msmtp 用 SMTP 发邮件:
$ vi .msmtprc account default host mail.vpsee.com from vpsee@vpsee.com auth off
配置 mutt,在 mutt 配置文件里面指明 msmtp 路径,注意 Ubuntu 和 FreeBSD 的默认安装路径不同(/usr/bin vs /usr/local/bin)
$ vi .muttrc set realname = "vpsee" set from = "vpsee@vpsee.com" set use_from = yes set envelope_from = yes set spoolfile = /var/spool/mail/vpsee set sendmail="/usr/bin/msmtp" # for Ubuntu #set sendmail="/usr/local/bin/msmtp" # for FreeBSD
使用 mutt
执行 fetchmail 收邮件,然后就可以用 mutt 读、写、回复邮件了:
$ fetchmail -v $ mutt