本文由ilanniweb提供友情赞助,首发于烂泥行天下linux
想要得到更多的文章,能够关注个人微信ilanniweb。c++
本文主要介绍如何在Linux下使用msmtp+mutt发送邮件,固然Linux下发送邮件的工具不少,好比sendmail+dovecot等。可是它们的配置通常都比较复杂,所以咱们来使用配置比较简单的msmtp+mutt组合来发送邮件。web
msmtp+mutt组合配置很简单,只须要几步就能够完成。下面咱们来分步骤介绍如何配置。ubuntu
PS:本篇文章在ubuntu server 14.04和centos6.6上已经所有测试经过,其相关命令和配置文件能够直接使用。vim
同时ubuntu系统的话,建议在root用户下进行操做。centos
1、什么是msmtp服务器
msmtp是一款专门负责邮件发送的SMTP客户端软件,基于GPL发布。支持TLS/SSL、DNS模式、IPv六、服务器端认证、多用户等特性。微信
在默认状况下,msmtp把邮件送给负责发邮件的SMTP服务器(如:免费邮箱供应商)。网络
而在使用msmtp发送邮件以前,须要你手工创建一个包含邮件帐号和密码等相关的信息msmtp配置文件,而且让MUA(邮件用户代理客户端,在此咱们使用的是mutt这个邮件用户代理客户端)来启用msmtp程序,而不是/usr/sbin/sendmail,这样才能使邮件客户端软件与msmtp更好的协同工做。编辑器
msmtp支持的特性:
兼容sendmail的交互方式(命令行选项以及退出代码)。
多种验证方式。
TLS加密链接(包含了服务器证书验证,以及可能须要发送给客户端证书的验证)。
支持IDN(国际化域名)、支持DSN(投递状态通知)、支持RMQS(开启远程消息队列)(仅ETRN支持的关键词)、支持PIPELINING(流水线操做)以提升发送邮件的速度、支持IPv六、支持LMTP、支持多邮件帐号。
msmtp也能在类UNIX、Windows以及DOS等系统上运行。
可选的特性支持(依赖于额外的库,看看INSTALL中的使用说明)。
msmtp的主页位于http://msmtp.sourceforge.net/
2、安装msmtp
上文介绍了msmtp的相关特性,如今咱们来介绍下如何安装msmtp。
msmtp的安装咱们根据平时使用的平台不一样分为centos和ubuntu平台的安装,以及根据安装方式的不一样分为yum、apt-get和源码安装,下面分别介绍下。
2.1 yum方式安装
yum方式安装的话,咱们须要安装额外的epel源。以下:
rpm -ivh http://mirrors.aliyun.com/epel/6/x86_64/epel-release-6-8.noarch.rpm
ll /etc/yum.repos.d
开始安装msmtp,以下:
yum -y install msmtp
msmtp安装完毕后,咱们来查看下msmtp帮助信息,以下:
msmtp --help
经过上图,咱们能够很明显的看出msmtp有不少的选项。
2.2 apt-get安装
在ubuntu下安装msmtp就很简单了,直接使用apt-get进行安装。以下:
sudo apt-get -y install msmtp
msmtp安装完毕后,咱们选择来查看下起帮助,以下:
msmtp --help
经过上图,咱们能够很明显的看出msmtp有不少的选项。
2.3 源码安装
不管是yum仍是apt-get方式安装的msmtp都不是最新版本,若是要使用最新版本的msmtp的话,咱们只能使用源码方式安装。
msmtp最新版本为1.6.2,在此是以ubuntu平台为例,下载源码以下:
wget http://nchc.dl.sourceforge.net/project/msmtp/msmtp/1.6.2/msmtp-1.6.2.tar.xz
解压msmtp-1.6.2.tar.xz,以下:
xz -d msmtp-1.6.2.tar.xz
tar -xf msmtp-1.6.2.tar
cd msmtp-1.6.2/
在开始编译安装msmtp以前,咱们还要安装相应的软件包。以下:
sudo apt-get -y install gcc libglib2.0-dev
注意:ubuntu下源码安装msmtp的话,上述的软件包libglib2.0-dev必定要安装不然没法进行编译。
若是是centos平台的话,须要安装以下的软件包:
yum -y install gcc gcc-c++ gnutls gnutls-devel gnutls-utils openssl openssl-devel libidn libidn-devel
下载开始编译安装msmtp,以下:
./configure --bindir=/usr/bin/
sudo make
sudo make install
安装完毕后,咱们来查看下。以下:
which msmtp
msmtp --help
能够看到msmtp已经安装成功。
3、使用msmtp
msmtp安装完毕后,咱们来测试下其发送邮件的功能。
3.1 建立msmtp配置文件
在测试msmtp以前,咱们先要配置msmtp发送邮件的配置文件。以下:
sudo vi /etc/msmtprc
defaults
tls on
logfile /var/log/msmtp.log
account ilanni
host smtp.126.com
port 25
from duanzhanling@126.com
auth login
tls off
user duanzhanling@126.com
passwordeval "gpg --no-use-agent --passphrase=ilanni -q --no-tty -d /root/pass.gpg"
account default : ilanni
如今来解释下在上述命令的各个选项的含义。
logfile表示记录日志。
account ilanni定义一个ilanni的发送邮件名称。
host smtp.126.com表示SMTP的服务器地址。
port 25表示SMTP服务器的端口。
from duanzhanling@126.com表示发送的邮件地址。
auth login使用login验证方式。
tls off表示不使用tls。
passwordeval表示duanzhanling@126.com这个邮箱的登陆密码。
若是定义多个邮箱账号的话,咱们可使用account default来指定默认的发送邮件名称。
有关gpg加密解密的能够参考这篇文章《烂泥:gpg加解密软件学习》。
3.2 测试msmtp发送邮件
在前面咱们介绍过了,msmtp也是一个SMTP客户端软件,也是能够用来发送邮件的,如今咱们来测试下。
测试msmtp,咱们可使用以下命令:
echo "Subject: test msmtp\r\n\r\nThis is a test for ilanni." |msmtp -d -C /etc/msmtprc -t duanzhanling@126.com
参数Subject指定主题,\r\n\r\n后接的是邮件内容,-d指明打印debug信息,-C指明配置文件,-t指定收件人的邮件地址。
以上命令执行完毕后,咱们能够查看 logfile 里面的发送日志记录。以下:
cat /var/log/msmtp.log
经过上图,咱们能够很明显的看到邮件已经发送成功。
下面咱们来登陆邮件客户端查看下,是否收到刚刚发送的邮件,以下:
经过上图,咱们能够很明显的看到刚刚发送的邮件,咱们已经接收到了。
4、什么是mutt
mutt是linux下的一个email程序,它跟通常的Windows邮件程序不一样,它不是一个一应俱全的大杂烩。你甚至会发现它根本不直接发出邮件,它历来不本身编辑邮件,它历来不本身对邮件进行加密和数字签名。mutt更像一个文件管理器,只不过它管理的是email。它的功能是借助各个最强大的程序来实现的,这符合UNIX的设计思想:
当mutt须要编辑邮件时,它有可能调用vi、vim、emacs等编辑器。
当mutt须要发信时,它把须要发出的信件放到sendmail的队列里,其余的就什么都无论了。
当须要数字签名时,mutt会把信件交给GnuPG之类的程序处理一下,而后再发出去。
怎么收邮件呢?mutt是不会本身到POP服务器去取邮件,你须要一个fetchmail程序,帮你把email从POP服务器取回来,而后转发到本身的sendmail的邮箱里。这样看起来就是你的主机成为了一个完整的UNIX网络工做站。
mutt支持绝大多数邮件格式,包括mbox、Maildir和协议。例如:POP三、IMAP等。它也支持MIME,PGP/GPG和S/MIME集成。
mutt设计为担当邮件用户代理(MUA),所以它不能够单独使用来发送邮件。若是要发送邮件的话,它须要结合邮件传输代理来实现。,例如:流行的sendmail、exim四、postfix等。同时它也依赖其余工具来撰写和过滤邮件。
mutt有成百的配置项和命令。它容许改变全部的键绑定和设定keyboard macros来完成复杂任务, 以及配置颜色和界面布局。经过所谓hooks的变量,许多配置能够基于条件改变,例如当前邮箱或者外发邮件接受者。有不少加强功能的补丁和扩展,例如NNTP。
mutt彻底由键盘控制,支持mail threading。所以用户可轻松自如浏览冗长讨论。mutt的新邮件撰写由外部文本编辑器完成。这与其余邮件客户端工具内置编辑器大相径庭。
5、安装mutt
mutt的安装咱们能够分为yum、apt-get和源码安装。在此咱们不使用源码安装了,直接使用yum和apt-get方式。
ubuntu下安装mutt,以下:
sudo apt-get install -y mutt
centos下安装mutt,以下:
yum -y install mutt
安装完毕后,咱们来查看mutt都安装了什么文件,以下:
dpkg -L mutt |tac
经过上图,咱们能够看到mutt的配置文件为Muttrc。如今来查看年下mutt的配置文件Muttrc,以下:
grep -vE '^#|^$' /etc/Muttrc
经过上图,咱们能够看到mutt的配置文件Muttrc有不少选项。在此,咱们只配置必须的选项。以下:
sudo vi /etc/Muttrc
set sendmail="/usr/bin/msmtp"
set use_from=yes
set realname="烂泥云监控平台"
set editor="vi"
以上配置选项中sendmail设置发送邮件的客户端程序,editor设置mutt调用的编器辑。
6、使用mutt
mutt安装及配置完毕后,咱们就可使用mutt来发送邮件了。如今使用以下命令进行测试:
echo "这里是正文" |mutt -s "ilanni-test" duanzhanling@126.com
cat /var/log/msmtp.log
上述命令的意思是发送一封内容是这里是正文的,主题是ilanni-test的邮件给duanzhanling@126.com这个用户。
经过上图,咱们能够很明显的看到mutt已经成功的经过调用msmtp发送一封邮件给duanzhanling@126.com这个用户。
如今咱们在登录duanzhanling@126.com这个邮箱进行查看下这封邮件,以下:
经过上图,咱们能够很明显的看出mutt确实已经成功的发送邮件了。
除了能够经过上述命令发送邮件外,咱们还能够把邮件的内容保存到一个文件中,而后使用以下的形式进行发送。
cat testmutt|mutt -s "ilanni-test" duanzhanling@126.com
7、mutt的其余用法
在第六章节中,咱们能够看到mutt确实经过调用msmtp发送邮件。如今咱们再来看看mutt的其余使用方法。
7.1 邮件群发
mutt能够群发邮件,在此咱们已两个邮件为例进行测试。
使用mutt同时向lanni654321@126.com和duanzhanling@126.com这两个邮箱发送邮件,命令以下:
echo "lanni --这里是正文" |mutt -s "ilanni-test" lanni654321@126.com duanzhanling@126.com
经过上图,咱们能够看到mutt确实能够支持邮件群发。
7.2 发送附件
使用mutt同时向lanni654321@126.com和duanzhanling@126.com这两个邮箱发送邮件,并添加附件testilanni1,testilanni2。其中附件testilanni1和testilanni2内容均为this is a test。以下:
mutt命令以下:
echo "lanni --这里是测试附件" |mutt -s "ilanni-test" lanni654321@126.com duanzhanling@126.com -a testilanni1 testilanni2
mutt发送附件功能须要参数-a的配合。
经过上图,咱们能够很明显的看出mutt已经成功的发送附件。
7.3 抄送邮件
使用mutt向duanzhanling@126.com这个邮箱发送邮件,同时抄送把邮件抄送给lanni654321@126.com,并添加附件testilanni1,testilanni2。命令以下:
echo "lanni --这里是测试抄送功能" |mutt -s "ilanni-test" duanzhanling@126.com -c lanni654321@126.com -a testilanni1 testilanni2
mutt抄送功能须要参数-c的配合。
经过上图,咱们能够看到邮件已经成功抄送给lanni654321@126.com这个用户。
7.4 密送邮件
使用mutt向lanni654321@126.com这个邮箱发送邮件,同时密送给duanzhanling@126.com,并添加附件testilanni1,testilanni2。命令以下:
echo "lanni --这里是测试密送功能" |mutt -s "ilanni-test" lanni654321@126.com -b duanzhanling@126.com -a testilanni1 testilanni2
mutt密送功能须要参数-b的配合。
经过上图,咱们能够看到邮件在发给lanni654321@126.com的同时,也确实秘密发送给了duanzhanling@126.com这个用户。