Linux部署msmtp+mutt发送邮件功能

2025-05-25 0 59

一、前言

首先,得明白发送一封邮件的流程,下面一段理论摘抄自廖雪峰的官网网站https://www.liaoxuefeng.com/article/00137387674890099a71c0400504765b89a5fac65728976000

\”\”\”

我们通常使用email都很容易,但是internet的邮件系统是通过几个复杂的部分连接而成的,对于最终用户而言,我们熟悉的outlook,foxmail等都是用来收信和发信的,称之为mua:mail user agent,邮件用户代理。

mua并非直接将邮件发送至收件人手中,而是通过mta:mail transfer agent,邮件传输代理代为传递,sendmail和postfix就是扮演mta的角色。

一封邮件从mua发出后,可能通过一个或多个mta传递,最终到达mda:mail delivery agent,邮件投递代理,邮件到达mda后,就存放在某个文件或特殊的数据库里,我们将这个长期保存邮件的地方称之为邮箱。

一旦邮件到达邮箱,就原地不动了,等用户再通过mua将其取走,就是用outlook,foxmail等软件收信的过程。

所以一封邮件的流程是:

发件人:mua –发送–> mta -> 若干个mta… -> mta -> mda <–收取– mua:收件人

mua到mta,以及mta到mta之间使用的协议就是smtp协议,而收邮件时,mua到mda之间使用的协议最常用的是pop3或imap。

需要注意的是,专业邮件服务商都有大量的机器来为用户服务,所以通常mta和mda并不是同一台服务器,因此,在outlook等软件里,我们需要分别填写smtp发送服务器的地址和pop3接收服务器的地址。

\”\”\”

同样对发邮件流程介绍的很清楚的还有这篇博文:https://www.cnblogs.com/dlhe/p/8457393.html

由上面可知,通常我们所熟悉的outlook、foxmail等是邮件客户端,提供了mua的功能;而一些email服务提供商,如网易、qq等,则提供了mta的功能。

必须弄清楚的一点是,本次部署的msmtp+mutt其实是类似于foxmail那样的mua邮件客户端,只不过它是在linux上运行的。而如果在linux上部署的是sendmail或者postfix,那才是邮件服务器,起到的是mta的功能。

接下来是实施步骤。

实测成功的部署环境:rhel6.5和centos6.5,当然了,机器得能联网。

二、安装msmtp

msmtp是一个smtp客户端,可将邮件发送至smtp服务端,官网地址为 http://msmtp.sourceforge.net/index.html   。

1.下载msmtp文件

cd /usr/local/src

wget http://sourceforge.net/projects/msmtp/files/msmtp/1.4.32/msmtp-1.4.32.tar.bz2/download

2.解压文件

tar jxvf msmtp-1.4.32.tar.bz2

3.进入到解压的文件内,然后就是典型的源码安装的3个步骤./configure,make和make install

3.1执行./configure,生成 makefile,为下一步的编译做准备,–prefix=后面接的是想要将msmtp安装到的路径,跟当前mstmp源码所在目录无关

?
1
2
cd msmtp-1.4.32
./configure --prefix=/usr/local/msmtp

Linux部署msmtp+mutt发送邮件功能

Linux部署msmtp+mutt发送邮件功能

3.2 make && make install,编译并安装,这两步也可以分开执行

Linux部署msmtp+mutt发送邮件功能

Linux部署msmtp+mutt发送邮件功能

4. 在安装目录/usr/local/msmtp/下新建etc目录,并在etc目录下创建msmtp文件,该文件用于配置邮件发送的一些基本信息。

?
1
2
3
4
5
6
7
8
9
10
11
12
mkdir –p /usr/local/msmtp/etc
vim /usr/local/msmtp/etc/msmtprc
#添加如下内容:
account default
host smtp.163.com  
port 25
from xxx@163.com //按照实际情况填写真实的163邮箱
auth login
tls off
user xxx  //邮箱用户名,是xxx而不是xxx@163.com 
password xxx //需要注意的是这里的密码有可能是授权码,比如163邮箱的话这里就必须填授权码,如下图 
logfile /var/log/mmlog

Linux部署msmtp+mutt发送邮件功能

注:正如前面所说的,msmtp+mutt的组合跟foxmail一样,是邮件客户端。我们知道,windows下利用foxmail发送邮件的话,当然首先需要用你的某个账号登录上foxmail了,然后才能在该客户端下新建邮件发送。那么这一步该文件配置的作用,我的理解就是在linux下用你的某个账号登录msmtp客户端。这里我用的是163网易邮箱,若是想用qq邮箱,则需要另行修改。

测试时的配置如下:

Linux部署msmtp+mutt发送邮件功能

(注:截图当中的目录有点混乱,是实际生产环境中部署的安装目录,不是上面执行./configure命令时–prefix参数指定的/usr/local/msmtp,不过没关系,只要记住,该文件实际是在prefix参数指定的安装目录下的!)

5. 给日志文件赋权限:

?
1
chmod 777 /var/log/mmlog

6.给配置文件msmtprc文件赋权限,因为该文件中有邮箱的明文密码,所以要设置成非可读的。

?
1
chmod 600 msmtprc

7.此时可以 /usr/bin/目录做一个关于/usr/local/msmtp/bin/msmtp的软连接,这样在服务器上任意位置都可以直接敲msmtp命令来执行msmtp

?
1
ln -s /usr/local/msmtp/bin/msmtp /usr/bin/msmtp

8.测试msmtp(同样的,邮箱地址视实际情况而定,不过必须得跟上面的/usr/local/msmtp/etc/msmtprc配置文件中的邮箱相同)

(1)若没做第7步的软连接,则是:

?
1
/usr/local/msmtp/bin/msmtp xxx@163.com hello,test ctrl d

(2)若做了软连接,那么测试的命令可以为:

?
1
2
3
msmtp xxx@163.com hello,test ctrl d
# 查看日志有无成功 cat /usr/local/msmtp/msmtp.log
# 查看163邮箱,看看信收到没有。

如下图,这时候能收到邮件,但是邮件是没有内容的,这是没有问题的。

至此,msmtp安装已经完成了。

Linux部署msmtp+mutt发送邮件功能

三、安装mutt

mutt是一个email客户端,它不能直接发送邮件,更多的是承担对email的管理功能,与msmtp可搭配使用。官网地址为http://www.mutt.org/

若想了解更多Muttmsmtp的搭配使用,可查看如下地址:http://msmtp.sourceforge.net/doc/msmtp.html#Using-msmtp-with-Mutt

1.mutt安装方法一:yum方式安装配置mutt(实测成功)

1.1yum install -y mutt

1.2编辑/etc/muttrc文件 (注,/etc目录下应该已经存在muttrc文件,只是在文件末尾追加下面内容)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
vim /etc/muttrc
#输入如下内容:
set sendmail=\'/usr/bin/msmtp\' #注:之所以能这么写是因为在配置msmtp时做了软连接 #ln -s /usr/local/msmtp/bin/msmtp /usr/bin/msmtp
set use_from=yes
set realname=\'yourname\'  #realname可以任意设置,这样当你发邮件给别人的时候,收件人看到发件人的title就是你这里设置的,具体可以看下面的设置和最后图片展示的结果
set from=user@163.comset
envelope_from=yes
auto_view text/html
set charset=\'utf-8\'
set send_charset=\'utf-8\'
set locale =\'zh_cn.utf-8\'
set content_type = \'text/html\\;charset=utf-8\'
set rfc2047_parameters=yes

实测时的配置如下:

Linux部署msmtp+mutt发送邮件功能

但是做发送邮件测试时粗错了,确实能发邮件,但是执行完发送命令之后报错:source: errors in /etc/muttrc,因此改成下面

?
1
2
3
4
5
set sendmail=\"/usr/bin/msmtp\"
set use_from=yes
set realname=\"zabbix server\"
set editor=\"vim\"
set from=182xxxx7782@163.com

Linux部署msmtp+mutt发送邮件功能

1.3 配置完毕,测试:

(1)简单测试(发给自己):echo  \”test测试test\”|mutt -s \”dt_zabbix_server_test\”  182xxxx7782@163.com

Linux部署msmtp+mutt发送邮件功能

(2)添加附件测试(发给自己):echo  \”内容:test测试test\”|mutt -s \”主题:dt_zabbix_server_test\” -a /data/suxy_remark.txt

发送错误,报错:Can\’t stat 182xxxx7782@163.com: No such file or directory

如下图所示,这是因为182xxxx7782@163.com在-a命令后面,所以mutt把182xxxx7782@163.com也当成附件了,因此将-a命令调换个位置,放到末尾(事实上该命令的用法也确实要求-a参数放到命令的最末尾):

echo  \”内容:TEST测试test\”|mutt   -s \”主题:DT_ZABBIX_SERVER_TEST\”    182xxxx7782@163.com -a /data/suxy_remark.txt

发送成功!

事实上还可以使用如下命令,即mutt后面先写邮箱,将-s、-a等参数都放到后面去

echo  \”内容:TEST测试test\”|mutt 182xxxx7782@163.com -s \”主题:DT_ZABBIX_SERVER_TEST\” -a /data/readme.txt

Linux部署msmtp+mutt发送邮件功能

(3)当然也可以发送邮件给其他的类型的邮箱,比如qq邮箱,公司邮箱等:

echo  \”内容:test测试test\”|mutt -s \”主题:dt_zabbix_server_test\” 98xxxx3649@qq.com  -a /usr/local/suxy_remark.txt

Linux部署msmtp+mutt发送邮件功能

2.mutt安装方法二:源码方式安装mutt(测试时没有成功,不过应该是测试做法不对。。)

?
1
2
3
4
5
cd /usr/local/src
wget ftp://ftp.mutt.org/pub/mutt/mutt-1.5.24.tar.gz
tar xvf mutt-1.5.24.tar.gz
cd mutt-1.5.24
./configure --prefix=/usr/local/mutt

Linux部署msmtp+mutt发送邮件功能

Linux部署msmtp+mutt发送邮件功能

make && makeinstall

Linux部署msmtp+mutt发送邮件功能

配置mutt

?
1
2
3
4
5
6
7
vim /usr/local/mutt/etc/muttrc
#在最后添加如下几行:
set sendmail=\"/usr/local/msmtp/bin/msmtp\"
set use_from=yes
set realname=\"xxx\"
set from=xxx@163.com
set envelope_from=yes

测试mutt

echo \”hello,world\”|/usr/local/mutt/bin/mutt –s \”test mail\” xxx@163.com#上述语句将发送一封标题为\”test mail\”,内容为\”hello,world\”,收件人为xxx@163.com的邮件,可检查该邮箱能否收到邮件

实际测试时使用的命令:

?
1
echo \"test from zabbix server\"|/usr/local/mutt/bin/mutt –s \"zabbixtest\" 182xxxx7782@163.com

但是若是使用上面的命令发送的话则会给-s@zabbix.localhost和zabbixtest@zabbix.localhost和182xxxx7782@163.com都各发一封邮件,改为如下的命令则会只给182发送,但是没有主题

?
1
echo \"test from zabbix server\"|/usr/local/mutt/bin/mutt 182xxxx7782@163.com

总结

以上所述是小编给大家介绍的linux部署msmtp+mutt发送邮件功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Linux部署msmtp+mutt发送邮件功能 https://www.kuaiidc.com/51301.html

相关文章

发表评论
暂无评论