Table of Contents

基础

首先得了解MUA,MTA的概念 (可参考鸟哥私房菜服务器篇)

mail process

(图片引用自How a mail server works)

更详细的基本概念:

POP3 / IMAP / SMTP:

POP3和IMAP的区别是前者本地的操作如删除不会同步到服务器. IMAP则是同步的.

msmtp

负责smtp的功能

主页

msmtp is an SMTP client. In the default mode, it transmits a mail to an SMTP server which takes care of further delivery. To use this program with your mail user agent (MUA), create a configuration file with your mail account(s), and tell your MUA to call msmtp instead of /usr/sbin/sendmail.

在用户home目录新建一个.msmtprc配置文件

account default
host smtp.163.com   #邮件服务器,我用的是163
from xxx@163.com
auth login
user xxx@163.com    #账号
password *******    #密码
logfile /var/log/msmtp.log

因为这里涉及到了密码,所以建议把配置文件的权限改为600

测试:

$ msmtp xxx@xx.com(收件人邮箱)

然后随便输入一些字符,按Ctrl+D退出,查看收件人邮箱是否有邮件

参考:

mutt

主页

Mutt is a small but very powerful text-based mail client for Unix operating systems.

在用户home目录新建一个.muttrc配置文件

set sendmail="/usr/bin/msmtp"   #这里设置调用的MTA
set use_from=yes
set realname="XXX"              #发件人名称
set editor="vim"                #调用的编辑器

测试:

$ echo 'Hello World' | mutt -s 'Hi, Just a test!' xxx@xx.com

w 可以更改邮件的状态, 有:

关于 tmux下mutt没有重绘窗口的问题, 见我之前的博客

关于邮件中的搜索, 有两种: search (按/) 和 limit (按l, 字母), 网上说后者比前者更强大, 不过暂时没感觉出来.

对于包含body content中的搜索, 模式是: /~b xxx 或者 l~b xxx, 前者是定位到第一个匹配的, 按n到第二个匹配; 而 limit搜索相当于filter, 只显示匹配的邮件, 如果想回到所有列表, 则lall (注意这里的/或者l都是上面提到的进入search/limit模式)

模式见文档 mutt regex

另外在search时, 按\可以toggle关键词高亮.

删除指定日期的所有邮件:

# 删除2015年12月1号的邮件
l~d 01/12/2015
^D

# 删除2015/12/01 - 2015/12/06内的所有邮件
l~d 01/12/2015+5d
^D

另外,还可以只指定某个日期之前或之后:

The forms “<[MAX]”, “>[MIN]”, “[MIN]-” and “-[MAX]” are allowed, too.

即:

# 删除2015年5月8号之前的邮件
l~d "-08/05/2016"

:注意要加上双引号

另外, 还可以配合逻辑操作:

具体可以看文档Nesting and Boolean Operators一节

参考:

Exim

常用命令:

# 输出邮件队列(queue)中的邮件数
exim -bpc

# 输出邮件队列中的邮件信息(time queued, size, message-id, sender, recipient)
exim -bp

# 输出邮件队列的摘要(count, volume, oldest, newest, domain, and totals)
exim -bp | exiqsumm

# exim当前状态
exiwhat

# 输出exim配置信息
exim -bP

# 删除邮件队列中指定的邮件
exim -Mrm <message-id>

# 删除邮件队列中所有的邮件(几种方法都行, 暂未全部尝试 XXX)
exim -bp | exiqgrep -i | xargs exim -Mrm
exiqgrep -i|xargs exim -Mrm
exim -bp | awk '/^ *[0-9]+[mhd]/{print "exim -Mrm " $3}' | bash

# 查看message header
exim -Mvh <message-id>

# 查看message body
exim -Mvb <message-id>

参考: