mutt虽然名气比较大,但是在终端里使用,一些配置确实挺让人头疼的,一般使用也不太推荐。但是有群发邮箱的需求的可以考虑折腾一下,命令行脚本用起来有时候也是比较方便的。
自己现在用的方案是:proxychains设置代理;fetchmail收件[只有收件功能];procmail过滤邮件;msmtp发送邮件;mutt管理;w3m查看邮件。一整套下来,坑也是挺多的,也是够折腾的了。
1、国内的邮箱比如qq之类的除了安全问题,对第三方也客户端也不是太友好。国外的邮箱比如gmail,或者outlook,国内使用设置代理可能会比较麻烦一点。
终端使用,一般设置代理export一个代理就行了,但是对于fetchmail不生效。可以使用proxychains设置代理使用,arch/manjaro源里有直接安装即可,其他的可能需要自己编译了:https://bbs.zsxwz.com/thread-3250.htm
2、fetchmail收件,gmail和outlook配置基本上类似:
# 编辑配置文件 vim ~/.fetchmailrc # 添加以下内容,根据自己邮箱修改: poll "imap.gmail.com" protocol IMAP username 'xxx@gmail.com' password '你的账号密码' ssl #验证ssl证书 keep #不删除原来邮箱内容 mda "/usr/bin/procmail" #设置邮件过滤程序 # 配置多账号 poll "outlook.office365.com" protocol IMAP username "xxxx@outlook.com" password " xxxx ssl keep mda "/usr/bin/procmail -d %T" # 结束 # 设置600权限,否则出错。 chmod 600 ~/.fetchmailrc
测试是否正常接收邮件:
fetchmail -v # 无法连接,就需要先设置代理: proxychains fetchmail -v
如果设置代理之后,返回错误status 3,登录帐户错误。因为谷歌的安全原因,拒絶了登录。登录谷歌账号:https://myaccount.google.com/security
安全性,启用安全性较低的应用的访问权限。
自动接收邮件,可以使用crontab:
*/30 * * * * proxychains fetchmail -k
每30分钟更新一次,如果觉得这个更新频率不合适,可以自己根据情况修改:https://bbs.zsxwz.com/thread-2416.htm
gmail后台可以设置开启或者关闭pop收件服务,收什么时候的邮件:
3、procmail过滤邮件,邮件分类,垃圾箱,需要用到一些正则表达式,就可以按照发件人,邮件内容进行过滤。
# 添加收件文件夹 mkdir -p ~/mail/index # 编辑配置文件: vim ~/.procmailrc # 添加以下内容,根据自己需求修改: MAILDIR=$HOME/mail DEFAULT=$MAILDIR/inbox VERBOSE=off LOGFILE=/tmp/procmaillog :0 * ^From.*no-reply@mail.instagram.com /dev/null :0: inbox/ # 结束。* ^From.*no-reply@mail.instagram.com一个简单的正则全部来自no-reply@mail.instagram.com这个邮箱的邮件全部放到/dev/null垃圾箱里。 # 设置600权限,否则出错。 chmod 600 ~/.procmailrc
4、msmtp发送邮件,发送邮件同样需要使用代理。如果是outlook账号第一次使用第三方客户端,会收到验证邮件,验证手机之后,才能正常发送邮件。
# 编辑配置文件: vim ~/.msmtprc # 添加以下内容: account default protocol smtp host smtp.gmail.com port 587 auth on from xxxx@gmail.com user xxxx@gmail.com password 登录密码 tls on tls_starttls on account outlook host smtp.office365.com port 587 tls on tls_starttls on auth on user xxxx@outlook.com password xxxxx from xxxxxx@outlook.com tls_certcheck on # 结束 # 设置600权限。 chmod 600 ~/.msmtprc
5、mutt管理,这个搞起来有一点麻烦。
# 编辑配置文件: vim ~/.muttrc # 设置600权限。 chmod 600 ~/.muttrc # 配置文件内容: # 常规配置: set use_from=yes #使用自定义发件人姓名 set envelope_from=yes #使用自定义发件人邮箱 set move=yes #是否将已读文件移动到文件夹,也可以选择no set include #回信时是否包含原文 set pager_stop #<space>翻页到最后不会跳转到下一封邮件 set edit_headers=no #编辑查看邮件头部信息,也可以选择yes,设置多账号的时候不容易出错。 set pager_index_lines=4 set sort=reverse-date-received #按接收文件时间顺叙排序。或者按o选择排序。 # 设置编码,解决乱码问题 set charset="utf-8" set send_charset = "utf-8" charset-hook !utf-8 gb2312 set assumed_charset="utf-8:gb2312:gb18030:gbk" set rfc2047_parameters=yes # 设置帐户 set realname="xx" set from="xxxxx@gmail.com" macro generic "<esc>o" ":set from=xxx@outlook.com" #如果设置了多帐户,就可以绑定快捷键比如esc+o,选择发件帐户 # 设置文件夹 set mbox_type = Maildir set folder = "$HOME/mail" set spoolfile = "$HOME/mail/inbox" set mbox="$HOME/mail/seen" set record="$HOME/mail/sent" set postponed="$HOME/mail/draft" set editor="vim" # 设置编辑器 set sendmail="proxychains /usr/bin/msmtp" # 设置发送程序 # 自动浏览邮件中 text/html auto_view text/html alternative_order text/plain text/enriched text/html # 按shift+ i,使用proxychains fetchmail -vk更新邮件 macro index,pager I '<shell-escape> proxychains fetchmail -vk<enter>' # 以下是颜色显示。 color normal white black color error red black color tilde white black color message cyan black color markers red black color attachment brightred black color search brightmagenta black color status brightwhite black color indicator white blue color tree magenta black color index red black "~A" color index brightred black "~E" color index brightcyan black "~N" color index brightcyan black "~O" color index white black "~R" color index brightblue black "~U" color index brightblue black "~U~$" color index brightblue black "~v" color index brightblue black "~P" color index cyan black "~p!~F" color index brightgreen black "~N~p!~F" color index brightgreen black "~U~p!~F" color index green black "~R~p!~F" color index red black "~F" color index red black "~F~p" color index red black "~N~F" color index red black "~N~F~p" color index red black "~U~F~p" color index white brightmagenta "~D" color index white black "~v~(!~N!~O)" color index magenta black "~v~(~N|~O)" color index magenta black "~N~v~(~N)" color index red white "~v~(~F)!~N" color index yellow white "~v~(~F~N)" color index green white "~N~v~(~F~N)" color index green white "~N~v~(~F)" color index yellow red "~v~(~D)" color hdrdefault brightblue black color header brightgreen black "^(From)" color header brightyellow black "^(Subject)"
6、使用终端浏览器阅读文件,mutt默认使用chrome浏览器打开邮件文件,也不太方便。几个终端浏览器也都不错如w3m, elinks,lynx https://zsxwz.com/2019/11/10/
这里自己用w3m,自己先安装一下。
# 编辑配置文件: vim ~/.mailcap # 设置600权限。 chmod 600 ~/.mailcap # 添加以下内容: text/html; w3m -dump -I $(echo %{charset} | sed s/gb2312/gbk/I) %s; nametemplate=%s.html; copiousoutput
7、其他说明,一些附件如txt,sh等等文本内容,终端里预览应该问题不大。但是对于图片,视频等等格式的附件就可能比较麻烦。
可以使用fim预览图片附件,没有就自己安装一下。视频可以使用mplayer播放视频,doc文件可以用wv。pdf可以使用wps打开。一些特殊的可以v显示附件,选中需要保存的,s保存到本地查看也是一个不错的方法。
在.mailcap添加内容:
image/*; fim %s; /dev/null audio/*; mplayer %s > /dev/null video/*; mplayer %s > /dev/null application/msword; wvHtml --charset=utf-8 %s - | w3m -dump -T text/html ; copiousoutput application/pdf; wpspdf %s > /dev/null
已读邮件会自动移动到到其他文件夹,可以只读模式打开邮件:mutt -R
查看已读,发送和归档文件夹可以按c,然后?,即可查看文件夹。
选择发件人mutt界面输入:
:set from=xxx@outlook.com
更多参数参看mutt官方wiki即可:https://gitlab.com/muttmua/mutt/-/wikis/home
使用shell发送邮件,之后就可以利用cron定时发送,或者写一个脚本,给某个人群发一堆邮件或者群发给很多人。
echo "邮件内容" | mutt -s "邮件主题" a@gmail.com,b@xxx.com,c@xxxx.com
mutt选项参数:
-A <别名> 扩展给出的别名 -a <文件> 给邮件添加附件 -b <地址> 指定一个密送(BCC)地址 -c <地址> 指定一个抄送(CC)地址 -D 打印所有变量的值到标准输出 -d <级别> 将调试输出记录到 ~/.muttdebug0 -E 编辑草稿 (-H) 或者包含文件 (-i) -e <命令> 指定初始化后要被执行的命令 -f <文件> 指定要读取的邮箱 -F <文件> 指定替代的 muttrc 文件 -H <文件> 指定草稿文件以读取邮件头和正文 -i <文件> 指定 Mutt 需要包含在正文中的文件 -m <类型> 指定默认的邮箱类型 -n 使 Mutt 不去读取系统的 Muttrc -p 取回一个延迟寄送的邮件 -Q <变量> 查询一个配置变量 -R 以只读模式打开邮箱 -s <主题> 指定一个主题 (如果有空格的话必须使用引号引起来) -v 显示版本和编译时定义 -x 模拟 mailx 寄送模式 -y 选择一个在您“mailboxes”列表中的邮箱 -z 如果在邮箱中没有邮件的话,立即退出 -Z 打开第一个有新邮件的文件夹,如果一个也没有的话立即退出 -h 帮助消息
最后:由于谷歌国内无法正常访问,国内使用,设置代理就需要需要proxychains,只有在收发邮件的时候需要用到代理。
参考:
https://wiki.archlinux.org/index.php/Mutt_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)