![41d7b87a4a9b5dbb94d42922ec3db29d.png](https://i-blog.csdnimg.cn/blog_migrate/2b39c7a383e39e17f9a358be5c772ac2.jpeg)
用linux很久了,一直用mutt和thunderbird作为邮箱客户端,之前mutt的配置是fetchmail+procmail+mutt+msmtp,但是后来发现使用imap的时候offflineimap更好用,procmail对我其实基本无用,遂改成offlineimap+mutt+msmtp的配置,多说无益,直入主题。
今天主要还是存一下个人对offlineimap+mutt+msmtp的粗浅理解,并供大家一起参考,主要配置来源于archwiki、offlineimap配置文件、mutt官方手册。我对于邮箱客户端的需求主要是能满足多个账户、imap收件,别的没有太多需求。本文只适合和我一样的小白参考,大神绕道、杠精退散。
一、系统环境。
个人系统为archlinux+i3wm,要用offlineimap+msmtp+mutt,当然是需要把这3个软件都装上啦。
二、软件简介
我就不按照官网的官方定义了,简单点来说,offlineimap就是一个用imap模式接收邮件的邮件接收器,可以在本地存储邮件副本。mutt就是一个邮件客户端框架,不负责收邮件,也不负责发邮件,可以理解为一个专用于邮件的查看器和文本编辑器。可以用mutt查看offlineimap下载下来存储在maildir目录树的邮件。当然,mutt的arch仓库版本也集成了pop、imap的邮件接收功能。但是个人感觉不太好用。mstmp就是一个邮件发送软件。
offlineimap的官方配置样本存储在/usr/share/offlineimap文件夹内,有offlineimap.conf 和offlineimap.conf.minimal两个,我直接用的mininal,配置简单,能用,就达成我的目的了。ps:当然,可能不同的linux版本的官方配置文件在/usr/share、/usr/sharedoc、/usr/local/share、/etc/share 啥的,这个需要自己去找,实在没有就不要了,自己在家目录下新建一个。个人配置文件一般存放在家目录下,格式为.offlineimaprc (.为隐藏文件)
cp /usr/share/offlineimap/offlineimap.conf.minimal ~/.offlineimaprc
个人建议是第一步配置offlineimap,配置完成后配置mutt,最后配置msmtp,刚开始接触linux下命令行下使用imap收邮件的时候,第一步就开始配置mutt,一头雾水,根本都搞不明白mutt各个配置的含义。
先看一下官方minial的配置文件。格式基本不用改,只要了解大概含义,general是通用配置,accounts的设置就在这里,像我有好几个邮箱,163、qq、企业邮箱、outlook,就可以在accouts配置这输入accounts = Tencent,Company,Outlook,163maill,等,accounts的名称随意填写,只要能和下面的配置对的上即可,每个账号之间用英文逗号(,)分隔开。
# Sample minimal config file. Copy this to ~/.offlineimaprc and edit to
# get started fast.
[general]
accounts = Test
[Account Test]
localrepository = Local
remoterepository = Remote
[Repository Local]
type = Maildir
localfolders = ~/Test
[Repository Remote]
type = IMAP
remotehost = examplehost
remoteuser = jgoerzen
localrepository和remoterepository后面跟的配置源名称也可以随便写,我一般都命名为Local-tencent,Local-company,Remote-tencent,Remote-company这样。
Repository 本地的配置:type就是Maildir格式,不要改,localfolders可以改成你的邮件存储位置,如果是单用户,可以放在~/Mail下,我是多用户,所以我把qq邮件放在了~/Mail/Tencent,企业邮件放在了~/Mail/Exmail,163邮件放在了~/Mail/Netease下面,outlook邮件……,依次类推就可以了。
先创建Mail主文件夹。
mkdir ~/Mail
下面看一下我的配置文件。
# File postion: ~/.offlineimaprc.
# Author: Majormeng
# Date: 2020-10-22
[general]
accounts = Tencent,Exmail
[Account Tencent]
localrepository = Local-Tencent
remoterepository = Remote-Tencent
[Repository Local-Tencent]
type = Maildir
localfolders = ~/Mail/Tencent
[Repository Remote-Tencent]
type = IMAP
remotehost = imap.qq.com
remoteuser = #填你的用户名
remotepass = #填你的密码
ssl = yes
sslcacertfile = /etc/ssl/certs/ca-certificates.crt
[Account Exmail]
localrepository = Local-Exmail
remoterepository = Remote-Exmail
[Repository Local-Exmail]
type = Maildir
localfolders = ~/Mail/Exmail
[Repository Remote-Exmail]
type = IMAP
remotehost = imap.exmail.qq.com
remoteuser = #填你的用户名
remotepass = #填你的密码
ssl = yes
sslcacertfile = /etc/ssl/certs/ca-certificates.crt
我只放了两个邮箱配置上来,多个邮箱依次类推就可以了,有一些邮箱的支持不一样,比如163邮箱填写的密码可能是你在163邮箱上设置的授权码等等,这个需要个人配置就行。我用qq、outlook、gmail就上述配置没啥问题。
配置完成后,别忘了最重要的 ,这个文件里面你存了密码在里面,要把它设置成其他用户不可访问。(权限600,即--rw-------,关于linux权限的解释,可以看看很多大神写的书,推荐linuxprobe)
chmod 600 ~/.offlineimaprc
如果你是多用户登录,且root用户不是你,那就不要填入密码,每次运行offlineimap的时候自己键入密码吧,不然root用户是可以看到你的密码的。
面配置完成后,就可以运行offlineimap来收取你的邮件啦。你会在~/Mail下看到你的accounts和邮件database。
offlineimap
![1ed3849333a728a9e982230a583688a3.png](https://i-blog.csdnimg.cn/blog_migrate/4bd742feb43528218b250900b8de5bbd.png)
offlineimap配置完成后,可以配置mutt来查看邮件内容,mutt不配置的情况下不太好使,也不能默认去查看你的邮箱。mutt的官方配置文件在/usr/share/doc/mutt/samples/下,有好几个,可以挑一个sample.muttrc使用。
cp /usr/share/doc/mutt/samples/sample.muttrc ~/.muttrc
现在来修改自己的配置文件。根据自己的使用需要,下面是我的配置。
## .muttrc
## Purpose: $HOME/.muttrc for mutt
## Author: Majormeng
## Last Update: 2020-10-24
## Setting: chmod 600 .muttrc ,dont forget
## 一些必需的全局设置
set sendmail="/usr/bin/msmtp" # 用 msmtp 发邮件
set editor="vim +/^$" # 用 vim 作编辑器,我习惯的是vim,你们可以根据需要。
set record="~/Mail/Sent"
set use_from=yes # 让 msmtp 知道用哪个帐号
set from=username@mailserver.com # 缺省地从这个邮箱发邮件,eg:zhansan@qq.com
##如果不设置set from且后面不设置my hdr,则默认从你的系统user@xxxlinux发邮件。
set realname="yourname" # 你想展示的名字,eg:zhangshan
set envelope_from=yes # 让 mutt 使用 msmtp 的 -f 选项
set ispell="/usr/bin/aspell" # 英文拼写检查 aspell
## 在多个邮件帐号之间切换需要设置为发送邮箱的账户,有多个邮箱的可以继续添加。
## macro是指定按键,generic是个虚拟菜单,不用理解,意思就是按esc+1或esc+2就可以切换
## 到你想去的邮箱。你也可以设置别的按键。
macro generic "<esc>1" ":set from=username@xx.com"
macro generic "<esc>2" ":set from=username1@xxx.com"
##设置在mutt中按G直接收取邮件。只在index和pager中生效。
macro index,pager G '<shell-escape> offlineimap <enter>'
## 建立信箱
set mbox_type="Maildir" #选择邮箱目录树格式
set folder="~/Mail" # 在offlineimap处设置。
set spoolfile="~/Mail/Exmail/INBOX" # 主收件箱,在offlineimap处可查。
##set mbox="~/Mail/Tencent/INBOX" # 另一个缺省的邮箱,如果设置,可以同时
##在一个pager里面查看另一个邮箱的邮件。
#set postponed="~/Mail/Postponed" # 推迟发送
##别名系统,先要在主目录下创建一个.mutt.alias文件。在mutt下按a键可以添加别名。
source ~/.mutt.alias
set alias_file="~/.mutt.alias" # 设置别名
set fast_reply=no #默认是no,回复时不询问回复地址
##对于多账户不要选择不询问时间长了你会忘了回复的地址是否是你要的那个。单账户用户可以选择yes
## 邮件格式
#my_hdr From: xxxxxxx@xxxxxx.com # 缺省的发件地址,会覆盖set from,多账户不建议设置。
#my_hdr Reply-To: xxxxx@kxxxxxxx.com # 缺省的回复地址,多账户不建议设置。
set index_format="| %4C | %Z | %{%b %d} | %-15.15L | %s"
set folder_format="| %2C | %t %N | %8s | %d | %f"
set include=yes # 回信时包含原文
set indent_str="> " # 回信的引文之前插入符号 >
## 对收到的邮件进行打分和排序 ###此为copy自王垠的mutt配置。
score "~N" +4 # 新信件 +4 分
score "~s 通知" +2 # 主题包含“通知”的 +2
score "~s Circulation" +3 # 主题包含 “Circulation” +3
score "~D" -5 # 已经标记删除的 -5
score "~O" +1 # 上次没有读的 +1
#score "~s believe" -10 # 包含 believe 的 -10,垃圾广告!
set sort=reverse-date-received # 邮件按日期由近及远排列
set sort_aux=score # 按打分排序
## 编码以及中文设置
#set locale="zh_CN.UTF-8" # 使用中文
#set ascii_chars=yes # 用纯 ascii 表示树状列表
set charset="utf-8" # 编码以及发件编码
set send_charset="us-ascii:iso-8859-1:gb2312:utf-8"
set rfc2047_parameters=yes # 解决中文附件名是乱码的问题
charset-hook ^iso-8859-1$ gb2312 # 把 iso-8859-1 编码映射到 gb2312
charset-hook !utf-8 gb2312 # 把不是 utf-8 的编码都映射到 gb2312
charset-hook ^us-ascii$ gb2312 # 把 us-ascii 编码映射到 gb2312
## 颜色设置:前景色+背景色
color normal white default # 背景色选 default 实现透明
color attachment yellow default # 附件:黄色
color bold brightwhite default # 粗体:亮黄色
color underline default blue # 下划线:蓝色
color error brightwhite default # 错误:亮白色
color indicator white blue
color message brightblue default # 消息:亮蓝色
color status white default # 状态:白色
color header brightgreen default ^From:
color header brightcyan default ^To:
color header brightcyan default ^Reply-To:
color header brightcyan default ^Cc:
color header brightred default ^Subject:
color body brightwhite default [-.+_a-zA-Z0-9]+@[-.a-zA-Z0-9]+
color body brightblue default (https?|ftp)://[-.,/%~_:?&=#a-zA-Z0-9]+
color index brightyellow default ~N
## 个人使用习惯
set edit_headers=yes # 允许编辑邮件头
set header=yes # 回复时加入邮件头
set nomark_old # 未读新邮件别标注为旧邮件
set beep_new=yes # 来新邮件时,蜂鸣
set smart_wrap # 禁止从单词中间断行
set nomarkers # 禁止换行标记
set mime_forward # 转发的邮件 MIME 附件
set pager_index_lines=6 # 看信时,在 index 留出多少行显示邮件列表?
set pager_context=4 # Display 4 lines of context in pager
set nostrict_threads # Lets have some fuzzy threading
set wait_key=yes # 外部程序退出时,要求用户按键返回
set sendmail_wait=-1 # Don't wait around for sendmail
set fcc_clear # Keep fcc's clear of signatues and encryption
set nopipe_decode # Don't decode messages when piping
set tilde # 过滤带 ~ 的邮件
set read_inc=100 # Read counter ticks every 100 msgs
set write_inc=100 # Write counter ticks every 100 msgs
set noconfirmappend # Just append, don't hassle me
set pager_stop # Don't skip msgs on next page
set resolve=yes # 按 "t" 或 "D" 时,自动移动光标到下封信件
#set fast_reply # 按 "r" 回信时,直接进入编辑模式
set quit=ask-yes # 退出时,直接退出
set postpone=ask-no # 推迟发送
set move=no # 邮件保留在 $MAIL
set delete=ask-yes # 删除前询问
ignore x-mailer # 忽略 x-mailer 邮件头
##设置发新邮件所使用的格式,默认不设置是text/plain,如果对markdown和html不太熟悉;
##建议选择text/plain格式,所见即所得,text/html格式如果在vim中编写,需要配合html的
##格式比如<h>、</h>、<p>、</br>等。
set content_type="text/html"
##设置在mutt的pager中自动显示html格式,需要配合.mailcap使用。
##不建议在mutt中自动显示image和其他的格式,显示效果不好,且没什么意义。
##我对于办公邮件,一般都是看内容,需要看附件的,直接配合.mailcap进行附件打开文档设置。
##在正文中显示没有什么意义。
##w3m编译w3m-img可以后进行相应设置可以在mut中查看img,但是本人没有查证。
auto_view text/html
alternative_order text/enriched text/plain text
# 发件箱显示to subject date 邮件
folder-hook . "ignore *; unignore from subject X-mailer date"
folder-hook sent.* "ignore *; unignore to subject date"
# 邮件头显示顺序
hdr_order from to subject date
ignore *
unignore From: To: Reply-To: Newsgroups: Followup-to: Subject: Date: CC: BCC: X-Lable: Organization:
hdr_order Subject: From: Date: To: CC: BCC: Reply-To: Newsgroups: Followup-to: X-Lable: Organization:
.muttrc设置完成后,就可以在在终端输入mutt打开mutt邮箱了,这是你就可以查看到你的邮件了。(个人隐私就不放置我的mutt界面了)。
上面提到的alias(别名),需要在配置提到的位置新建一个.mutt.alias文件用以存储别名。另外如果邮件附件比较多,建议使用.mailcap设置进行查看。一般我设置的查看文件主要有word、execl、ppt、pdf、img全图片、video、audio。
我的.mailcap配置。注意,所有配合mutt的autoview均需在配置中加入copiousoutput 。
##配置w3m把html文件格式转码为text/plain文本在pager中自动显示(autoview)。
text/html; w3m -dump -I $(echo %{charset} | sed s/gb2312/gbk/I) %s; nametemplate=%s.html; copiousoutput
##把word、execl、ppt等附件设置程序打开。一般word、ppt、execl等文件后缀名主要是.doc、.docx、
##.xlsx、.xls、.ppt等格式。用户可以在/etc/mime.types里面查看后缀名所对应的
##文件application/xxx类型。以下是我查到的,application/msword的后缀名是doc,vnd.openxml
##formats-officedocument.wordprocessingml.document对应docx,vnd.ms-powerpoint对应ppt、
##dpt等等。我用wps for linux打开这些文件。
application/msword; wps %s > /dev/null;
application/vnd.openxmlformats-officedocument.wordprocessingml.document; wps %s > /dev/null
application/vnd.ms-powerpoint; wpp %s > /dev/null
application/vnd.ms-execl; et %s > /dev/null
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; et %s > /dev/null
##如果希望吧pdf转码成txt/html文件,并用w3m在pager中显示,可以如此设置。
#application/pdf; pdftohtml -q -stdout %s | w3m -T text/html; copiousoutput
##我是直接用软件查看pdf和image、audio、video文件。
application/pdf; zathura %s > /dev/null
image/*; feh %s > /dev/null
audio/*; mplayer %s > /dev/null
video/*; mplayer %s > /dev/null
配置完成后,一个基本可用的mutt客户端就完成了。现在,你可以在mutt实现收邮件、看邮件、储存邮件、看附件、保存附件等等功能了。
当然,有些邮件比如还有网络链接验证的连接或者其他的一些纯html格式文件,在mutt下使用感觉还是不太好的,这时候,你可能需要外部浏览器打开这个html格式邮件进行查看,这里就可以用到一个外部程序urlview。首先安装urlview。
sudo pacman -S urlview
然后配置urlview,urlview配置文件可以存储在.urlview。
REGEXP (((http|https|ftp|gopher)|mailto)[.:][^ >"t]*|www.[-a-z0-9.]+)[^ .,;t>">):]
COMMAND firefox %s
这项配置内容的意义就是当有http、https、ftp、gopher或者mailto开头的链接时,可以用firefox浏览器打开(当然你也可以是指陈chrome或者别的浏览器),不过你需要在mutt的配置文件中添加用于使用firefox打开的快捷键。
一般是ctrl+b。添加以下内容到.muttrc中。在index和pager中使用Ctrl+b按键都可以快速呼出urls列表,然后可以选择需要打开的连接,enter用firefox打开。
macro index cb |urlviewn
macro pager cb |urlviewn
自此位置,基本的mutt设置告一段落,你基本上可以在mutt上完成正常的邮件收取和读取了。写邮件我用的是vim,可以在muttrc中使用set editor设置你喜欢的编辑器。
如何在mutt中写邮件就不赘述了,操作比较傻瓜式,跟着交互命令走就可以了。
最后,设置msmtp用以发邮件。我的msmtp配置文件(在~/.msmtprc中)也比较简单。见配置。
# Example for a user configuration file ~/.msmtprc
#
# Set default values for all following accounts.
defaults
tls on #tls相关选项如果不是全局配置,可以放在每个邮箱下的配置中。
tls_certcheck off
tls_starttls off #如果发邮件时出现"the server sent an empty reply“,表示
##邮箱客户端不支持tls验证,需要关闭。qq邮箱都需要关闭。gmail和其他客户端有的需要打开。
# Set a list of trusted CAs for TLS. The default is to use system settings, but
# you can select your own file.
#tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile ~/.msmtp.log
# A Tencent Service
account Tencent-Personal
host smtp.qq.com
port 465 #根据各个邮箱客户端的port自设,gmail的为487,默认为25
auth plain #可选auto on、auto login等。
from xxxxxxxxxx@qq.com
user xxxxxxxxxx@qq.com
password xxxxxxxxxx
# A Company Service
account Tencent-Exmail
host smtp.exmail.qq.com
port 465
auth plain
from xxxxxxxx@xxxxxxx.com
user xxxxxxxx@xxxxxxx.com
password xxxxxxxx
# Set a default account
account default : Tencent-Exmail
配置完成后,需要注意这个文件同之前的.offlineimap一样都存储了邮箱密码,需要使用chmod 600权限。
chmod 600 ~/.msmtprc
msmtp配置好之后就可以发送邮件了,在mutt中发向其他人发一封测试邮件,看看是否能收到吧。
发出之后,你会不会感觉这封邮件少点什么?是不是没有署名?
你需要一个签名,mutt的signature可以满足你的需求。(signature是全局文件,在你所有的account中都会显示,是否选用根据个人需要。)
在家目录~/下新建一个.signature文件,并配置,如果你在mutt发送内容模式那选的是"text/html"格式,那把.signature配置成html格式文档的编写将会更好看一点。否则将有可能不显示断行(因为没有</br>命令),当然signature也可以设置为正常文本模式的。
示例:html格式
<hr>
Yours Sincerely </br>
xxxxx </br>
<b>Mobile-Phone:</b>xxxxxxxxxxxxxxx</br>
<b>Comapay-Email:</b><a href=//xxx@xxxx.com>xxxxxxxxxx@xxxxx.com</a></br>
<b>Personal-Email:</b><a href=//xxx@xxxx.com>xxxxxxxxx@qq.com</a><br>
示例:普通格式(如果mutt设置的set content type是txt/html,这么显示将会联行,正确做法是在每一行结尾加上</br>),如果set content 是txt/plain,则没问题。
_____________________________
Yours Sincerely
xxxx
Mobile:
Email:
Address:
大功搞成,回家恰饭。虎头保命。
![1dee2d6b8dc3a660ccac0531e4796b61.png](https://i-blog.csdnimg.cn/blog_migrate/5fc7888e9bb38ddadf2c594c6aec27e4.jpeg)