【收信 pass+getmail6+neomutt】
建立邮箱:
先看muttrc:
# 收信配置,建立信箱,用=替代folder指定目录
set mbox_type=Maildir #新建立的邮箱采用Maildir格式
set folder="~/Mail"
set mbox="=163"
set spoolfile="=163" #默认打开邮箱
set trash="=trash" #垃圾邮箱
# 让mutt监视下面几个邮箱,并随时报告新邮件
named-mailboxes "163" "=163" "163-草稿箱" "=163-draft" \
"QQ" "=qq" "QQ-草稿箱" "=qq-draft" \
"系统" "/var/mail/你的用户名" "回收站" "=trash"
默认邮箱目录是~/Mail,=163的=代表了默认邮箱目录,=163就是~/Mail/163。named-mailboxes “163” “=163"表示显示名称是163,实际对应邮箱是”=163"。系统邮箱是系统自建的。我们需要建立"=163" “=163-draft” “=qq” “=qq-draft” “=trash"这几个邮箱。因为我们指定了邮箱格式是Maildir,所以每个邮箱都要有cur、new、tmp三个目录。用mkdir -p ~/Mail/163/{cur,new,tmp}创立”=163"邮箱,其它类似。
设置密码管理软件pass:
创建密码对:
gpg --full-generate-key
初始化密码存储:(这个和Mutt管理的邮箱无关,是pass需要一个邮箱)
pass init a@163.com
输入公共密码
插入新密码:
pass insert a@163.com
pass insert 1@qq.com
最后pass ls就显示密码项。pass 密码项 显示密码。
设置getmail6收取邮件到指定本地邮箱:
getmai6的一个配置文件对应一个邮箱账户,并提供了一个方便的方式收取多个账户邮件。就是把配置文件都放到~/.config/getmail/,文件名随便,然后用getmails -n收取所有账户信件。163和qq邮箱配置文件分别取名为163和qq,内容如下:
--------163--------
[retriever]
# 邮箱的账户信息,用于收取邮件.
type = SimplePOP3SSLRetriever
server = pop.163.com
username = a@163.com
port = 995
password_command = ("/usr/bin/pass", "a@163.com") #调用pass
#收取所有IMAP邮件
#mailboxes = ALL
[destination]
# 如何处理已经收取到的邮件
type = Maildir
path = ~/Mail/163/
[option]
# 默认为True, 每次执行getmail收取全部邮件, False表示只收取未收取过的邮件
read_all = False
# 本地删除服务器是否也删除邮件
delete = False
message_log = ~/.getmail/getmail.log
--------qq--------
[retriever]
# 邮箱的账户信息,用于收取邮件.
type = SimpleIMAPSSLRetriever
server = imap.qq.com
username = 1
port = 993
password_command = ("/usr/bin/pass", "1@qq.com") #调用pass
#收取所有IMAP邮件
#mailboxes = ALL
[destination]
# 如何处理已经收取到的邮件
type = Maildir
path = ~/Mail/qq/
[option]
# 默认为True, 每次执行getmail收取全部邮件, False表示只收取未收取过的邮件
read_all = False
# 本地删除服务器是否也删除邮件
delete = False
message_log = ~/.getmail/getmail.log
完毕后运行getmails -n收取邮件。打开neomutt就能看到收取的邮件。在.muttrc中,设置了按G收信:
macro index,pager G "!nohup getmails -n > /dev/null 2> /dev/null &\n" "用getmail收取信件"
nohup保证了getmails不会被neomutt退出打断。
为了实现自动收信,我写了两个小脚本,执行mutt.sh就可以每5分钟自动收信并打开neomutt,如果neomutt退出,则不再收信。
--------mutt.sh--------
#!/bin/sh
## 调用gmail.sh每隔一段时间收信,并打开neomutt
LOG=~/maillog.txt #记录文件名
#如果没有其它mutt.sh进程,则运行gmail.sh收信
if [ `ps --no-headers -C gmail.sh | wc -l` -eq 0 ]; then
echo "" >> $LOG ; date >> $LOG
nohup gmail.sh >> $LOG 2>> $LOG &
else
echo "gmail.sh已在运行"
fi
xfce4-terminal -T "邮箱 NeoMutt" --maximize --hide-menubar -x "neomutt"
--------gmail.sh--------
#!/bin/sh
#在neomutt运行期间定时收信
RUN=1
while [ $RUN -gt 0 ]
do
getmails -n #收信
sleep 300
#检测neomutt是否运行,不运行则等于0
RUN=`ps --no-headers -C neomutt | wc -l`
done