文档章节

烂泥:ubuntu下配置msmtp+mutt发送邮件

烂泥行天下
 烂泥行天下
发布于 2015/10/20 07:25
字数 3067
阅读 159
收藏 6
点赞 0
评论 0

本文由ilanniweb提供友情赞助,首发于烂泥行天下

想要获得更多的文章,可以关注我的微信ilanniweb。

本文主要介绍如何在Linux下使用msmtp+mutt发送邮件,当然Linux下发送邮件的工具很多,比如sendmail+dovecot等。但是它们的配置一般都比较复杂,因此我们来使用配置比较简单的msmtp+mutt组合来发送邮件。

msmtp+mutt组合配置很简单,只需要几步就可以完成。下面我们来分步骤介绍如何配置。

PS:本篇文章在ubuntu server 14.04和centos6.6上已经全部测试通过,其相关命令和配置文件可以直接使用。

同时ubuntu系统的话,建议在root用户下进行操作。

一、什么是msmtp

msmtp是一款专门负责邮件发送的SMTP客户端软件,基于GPL发布。支持TLS/SSL、DNS模式、IPv6、服务器端认证、多用户等特性。

在默认情况下,msmtp把邮件送给负责发邮件的SMTP服务器(如:免费邮箱供应商)。

而在使用msmtp发送邮件之前,需要你手工建立一个包含邮件账号和密码等相关的信息msmtp配置文件,并且让MUA(邮件用户代理客户端,在此我们使用的是mutt这个邮件用户代理客户端)来启用msmtp程序,而不是/usr/sbin/sendmail,这样才能使邮件客户端软件与msmtp更好的协同工作。

msmtp支持的特性:

兼容sendmail的交互方式(命令行选项以及退出代码)。

多种验证方式。

TLS加密连接(包含了服务器证书验证,以及可能需要发送给客户端证书的验证)。

支持IDN(国际化域名)、支持DSN(投递状态通知)、支持RMQS(开启远程消息队列)(仅ETRN支持的关键词)、支持PIPELINING(流水线操作)以提高发送邮件的速度、支持IPv6、支持LMTP、支持多邮件账号。

msmtp也能在类UNIX、Windows以及DOS等系统上运行。

可选的特性支持(依赖于额外的库,看看INSTALL中的使用说明)。

msmtp的主页位于http://msmtp.sourceforge.net/

二、安装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

clip_image001

开始安装msmtp,如下:

yum -y install msmtp

clip_image002

clip_image003

msmtp安装完毕后,我们来查看下msmtp帮助信息,如下:

msmtp --help

clip_image004

通过上图,我们可以很明显的看出msmtp有很多的选项。

2.2 apt-get安装

在ubuntu下安装msmtp就很简单了,直接使用apt-get进行安装。如下:

sudo apt-get -y install msmtp

clip_image005

clip_image006

msmtp安装完毕后,我们选择来查看下起帮助,如下:

msmtp --help

clip_image007

通过上图,我们可以很明显的看出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

clip_image008

解压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/

clip_image009

在开始编译安装msmtp之前,我们还要安装相应的软件包。如下:

sudo apt-get -y install gcc libglib2.0-dev

clip_image010

注意:ubuntu下源码安装msmtp的话,上述的软件包libglib2.0-dev一定要安装否则无法进行编译。

如果是centos平台的话,需要安装如下的软件包:

yum -y install gcc gcc-c++ gnutls gnutls-devel gnutls-utils openssl openssl-devel libidn libidn-devel

clip_image011

下载开始编译安装msmtp,如下:

./configure --bindir=/usr/bin/

clip_image012

sudo make

clip_image013

sudo make install

clip_image014

安装完毕后,我们来查看下。如下:

which msmtp

msmtp --help

clip_image015

可以看到msmtp已经安装成功。

三、使用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

clip_image016

现在来解释下在上述命令的各个选项的含义。

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

clip_image017

clip_image018

clip_image019

参数Subject指定主题,\r\n\r\n后接的是邮件内容,-d指明打印debug信息,-C指明配置文件,-t指定收件人的邮件地址。

以上命令执行完毕后,我们可以查看 logfile 里面的发送日志记录。如下:

cat /var/log/msmtp.log

clip_image020

通过上图,我们可以很明显的看到邮件已经发送成功。

下面我们来登录邮件客户端查看下,是否收到刚刚发送的邮件,如下:

clip_image021

通过上图,我们可以很明显的看到刚刚发送的邮件,我们已经接收到了。

四、什么是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和协议。例如:POP3、IMAP等。它也支持MIME,PGP/GPG和S/MIME集成。

mutt设计为担当邮件用户代理(MUA),因此它不可以单独使用来发送邮件。如果要发送邮件的话,它需要结合邮件传输代理来实现。,例如:流行的sendmail、exim4、postfix等。同时它也依赖其他工具来撰写和过滤邮件。

mutt有成百的配置项和命令。它允许改变所有的键绑定和设定keyboard macros来完成复杂任务, 以及配置颜色和界面布局。通过所谓hooks的变量,许多配置可以基于条件改变,例如当前邮箱或者外发邮件接受者。有很多增强功能的补丁和扩展,例如NNTP。

mutt完全由键盘控制,支持mail threading。因此用户可轻松自如浏览冗长讨论。mutt的新邮件撰写由外部文本编辑器完成。这与其他邮件客户端工具内置编辑器截然不同。

五、安装mutt

mutt的安装我们可以分为yum、apt-get和源码安装。在此我们不使用源码安装了,直接使用yum和apt-get方式。

ubuntu下安装mutt,如下:

sudo apt-get install -y mutt

clip_image022

centos下安装mutt,如下:

yum -y install mutt

clip_image023

安装完毕后,我们来查看mutt都安装了什么文件,如下:

dpkg -L mutt |tac

clip_image024

通过上图,我们可以看到mutt的配置文件为Muttrc。现在来查看年下mutt的配置文件Muttrc,如下:

grep -vE '^#|^$' /etc/Muttrc

clip_image025

通过上图,我们可以看到mutt的配置文件Muttrc有很多选项。在此,我们只配置必须的选项。如下:

sudo vi /etc/Muttrc

set sendmail="/usr/bin/msmtp"

set use_from=yes

set realname="烂泥云监控平台"

set editor="vi"

以上配置选项中sendmail设置发送邮件的客户端程序,editor设置mutt调用的编器辑。

六、使用mutt

mutt安装及配置完毕后,我们就可以使用mutt来发送邮件了。现在使用如下命令进行测试:

echo "这里是正文" |mutt -s "ilanni-test" duanzhanling@126.com

cat /var/log/msmtp.log

上述命令的意思是发送一封内容是这里是正文的,主题是ilanni-test的邮件给duanzhanling@126.com这个用户。

clip_image026

通过上图,我们可以很明显的看到mutt已经成功的通过调用msmtp发送一封邮件给duanzhanling@126.com这个用户。

现在我们在登陆duanzhanling@126.com这个邮箱进行查看下这封邮件,如下:

clip_image027

通过上图,我们可以很明显的看出mutt确实已经成功的发送邮件了。

除了可以通过上述命令发送邮件外,我们还可以把邮件的内容保存到一个文件中,然后使用如下的形式进行发送。

cat testmutt|mutt -s "ilanni-test" duanzhanling@126.com

clip_image028

clip_image029

七、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

clip_image030

clip_image031

clip_image032

通过上图,我们可以看到mutt确实可以支持邮件群发。

7.2 发送附件

使用mutt同时向lanni654321@126.com和duanzhanling@126.com这两个邮箱发送邮件,并添加附件testilanni1,testilanni2。其中附件testilanni1和testilanni2内容均为this is a test。如下:

clip_image033

mutt命令如下:

echo "lanni --这里是测试附件" |mutt -s "ilanni-test" lanni654321@126.com duanzhanling@126.com -a testilanni1  testilanni2

mutt发送附件功能需要参数-a的配合。

clip_image034

clip_image035clip_image036

clip_image037

通过上图,我们可以很明显的看出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的配合。

clip_image038

clip_image039

通过上图,我们可以看到邮件已经成功抄送给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的配合。

clip_image040

clip_image041

clip_image042

通过上图,我们可以看到邮件在发给lanni654321@126.com的同时,也确实秘密发送给了duanzhanling@126.com这个用户。

© 著作权归作者所有

共有 人打赏支持
烂泥行天下
粉丝 27
博文 77
码字总数 151711
作品 0
杭州
运维
Zabbix使用外部邮箱服务器发送邮件报警

使用外部邮箱来发生邮件明显好处就是防止其他邮箱服务器当垃圾邮件处理,另一方面能降低收邮件延迟。 下面开始进行使用外部邮箱配置: zabbix服务端配置: 操作系统:CentOS7_x64 1、 安装一...

技术小阿哥 ⋅ 2017/11/12 ⋅ 0

ubuntu下smokeping安装配置

0.参考文件 http://wenku.baidu.com/view/950fbb0a79563c1ec5da71b1 http://aaaxiang000.blog.163.com/blog/static/20634912201188696910/ http://my.oschina.net/lxcong/blog/150617#OSCh12......

嗯哼9925 ⋅ 2017/12/22 ⋅ 0

zabbix使用msmtp&&mutt搭建邮件告警服务

zabbix使用msmtp&&mutt搭建邮件告警服务 zabbix可以通过脚本和邮件服务器搭建邮件告警服务,以下就是告警服务实现的流程图 关注点一: 脚本需要放在zabbix安装目录下../share/zabbix/alertsc...

热带冠头鱼 ⋅ 2017/09/01 ⋅ 0

postfix+dovecot+foxmail虚拟用户配置

本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 在前一篇文章《烂泥:Postfix邮件服务器搭建之软件安装与配置》中,我们介绍了psotfix邮件服...

焉哉乎也 ⋅ 2017/05/08 ⋅ 0

Postfix邮件服务器搭建之软件安装与配置

烂泥:Postfix邮件服务器搭建之软件安装与配置 本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb Postfix邮件服务器的搭建需要使用到几个软件...

焉哉乎也 ⋅ 2017/05/08 ⋅ 0

烂泥:Postfix邮件服务器搭建之虚拟用户配置

本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 在前一篇文章《烂泥:Postfix邮件服务器搭建之软件安装与配置》中,我们介绍了psotfix邮件服...

烂泥行天下 ⋅ 2016/03/19 ⋅ 0

烂泥:openvpn双网卡客户端与内网机器通信

本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb。 前段时间写了一篇有关openvpn搭建与内网机器通信的文章,那篇文章是基于服务器单网卡进行...

烂泥行天下 ⋅ 2015/10/10 ⋅ 0

如何在 Ubuntu 15.04 系统中安装 Logwatch

大家好,今天我们会讲述在 Ubuntu 15.04 操作系统上如何安装 Logwatch 软件,它也可以在各种 Linux 系统和类 Unix 系统上安装。Logwatch 是一款可定制的日志分析和日志监控报告生成系统,它可...

酱醋茶丶 ⋅ 2015/09/16 ⋅ 0

ubuntu报警邮件服务简单搭建

一、安装 ubuntu中sendmail函数可以很方便的发送邮件,ubuntu sendmail先要安装两个包。 必需安装的两个包: sudo apt-get install sendmail sudo apt-get install sendmail-cf 下面几个包是...

xiaoyuan234 ⋅ 2014/05/30 ⋅ 0

Ubuntu14.04安装GitLab指南

GitLab 是一个用于仓库管理系统的开源项目。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。 在GitLab的官方网站上面对Ubuntu的支持也是很好的,有比较详尽的安装指南。 在介绍p...

openthings ⋅ 2015/12/10 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Kubeflow实战系列:利用TFJob导出分布式TensorFlow模型

介绍 本系列将介绍如何在阿里云容器服务上运行Kubeflow, 本文介绍如何使用TfJob导出分布式模型训练模型。 第一篇:阿里云上使用JupyterHub 第二篇:阿里云上小试TFJob 第三篇:利用TFJob运行...

全部原谅 ⋅ 19分钟前 ⋅ 0

007. 深入JVM学习—老年代

老年代空间的主要目的是用于存储由Eden发送来的对象,一般在经历好几次“Minor GC”还会保存下来的对象,才会被复制到老年代,这样就可以存放更多的对象,同时在老年代中执行GC的次数也相对较...

影狼 ⋅ 20分钟前 ⋅ 0

常见的一些C#开源框架或者开源项目

原:https://blog.csdn.net/qq_27825451/article/details/70666044 Json.NET http://json.codeplex.com/ Json.Net 是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更......

whoisliang ⋅ 21分钟前 ⋅ 0

设计模式基本原理

刚开始接触编程这行的时候看过设计模式,当时感觉学这些模式没有太大的用处,当时也看不太懂。但是随着慢慢接触这一行,经过一段时间的编程以后,再回过头来看设计模式,发现设计模式的确是太...

王子城 ⋅ 24分钟前 ⋅ 0

阿里云全面支持IPv6!一文揽尽4位大咖精彩演讲

摘要: 自从去年11月以来,阿里巴巴高度重视数据中心的网络改造、云产品改造、应用及网络改造等多个维度,经过半年以来的建设,阿里云已经完成了域名解析等关键产品的分析,现在阿里云已经完...

传授知识的天使 ⋅ 35分钟前 ⋅ 0

windows Android sdk 配置

1、下载Android SDK,点击安装,直接默认路径即可! 下载地址:http://developer.android.com/sdk/index.html 2、默认路径安装后,安装完成,开始配置环境变量。 3、打开计算机属性——高级系...

阿豪boy ⋅ 38分钟前 ⋅ 0

bash shell script 简明教程

User <--> bash <--> kernel shell is not kernel or part of kernel various shells: tcsh, csh, bash, ksh find the using shell: echo $SHELL find all the shells: cat /etc/shells what......

mskk ⋅ 40分钟前 ⋅ 0

Service Mesh简史

William Morgan Service Mesh是一个相当新的概念,讲它的“历史”似乎有些勉强。就目前而言,Service Mesh已经在部分企业生产环境中运行了超过18个月,它的源头可以追溯到2010年前后互联网公...

好雨云帮 ⋅ 40分钟前 ⋅ 0

10个免费的服务器监控工具

监控你的WEB服务器或者WEB主机运行是否正常与健康是非常重要的。你要确保用户始终可以打开你的网站并且网速不慢。服务器监控工具允许你收集和分析有关你的Web服务器的数据。 有许多非常好的服...

李朝强 ⋅ 53分钟前 ⋅ 0

压缩工具之zip-tar

zip 支持目录压缩。使用yum安装zip包,使用yum安装unzip包 zip 1.txt.zip 1.txt #将1.txt文件压缩,新生成的压缩文件为1.txt.zip,原文件保留 zip -r 123.zip 123/ #-r对目录操作。将123/目录...

ZHENG-JY ⋅ 53分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部