Centos 7.5 采用Mutt及msmtp配置进行邮件发送
在mysql集群中,通过Keepalived做负载均衡,当keepalived或者是Mysql集群有问题通过邮件通知,但是Keepalived本身发送邮件不是很好用,采用mutt方式。其中一种即采用mutt和msmtp的解决方案,它类似于foxmail及outlook的客户端,可以通过命令行的方式来进行邮件的自动发送。
一、msmtp的安装与配置
Linux下可以直接用mail命令发送邮件,但是发件人是user@servername,如果机器没有外网的dns,其他人就无法回复。此时,有一个可以使用网络免费邮箱服务的邮件发送程序就比较重要了。msmtp就是这样的一个程序。
#1、下载源码包
wget http://sourceforge.net/projects/msmtp/files/msmtp/1.4.31/msmtp-1.4.31.tar.bz2
#2、解压
tar -jxvf msmtp-1.4.31.tar.bz2 && cd msmtp-1.4.31
#编译安装
./configure --prefix=/usr/local/msmtp && make && make install
#做软链接
ln -s /usr/local/msmtp/bin/msmtp /usr/bin/msmtp
#3、新建msmtp的配置文件
mkdir /usr/local/msmtp/etc && vim /usr/local/msmtp/etc/msmtprc
#4、输入如下内容
# Set default values for all following accounts.
defaults
logfile /var/log/msmtp/msmtp.log
# The SMTP server of the provider.
account 163
# SMTP邮件服务器地址
host smtp.163.com
# 发送的邮件Email
from user@163.com
auth login
# 邮件服务器登录账号
user user@163.com
# 邮件服务器登陆密码
password password
# Set a default account
account default : 163
#############################################
#5、测试msmtp是否配置正确
msmtp test@163.com
test
[ctrl+d]
echo "测试test"|mutt -s "test" receiver@163.com
二、 mutt的安装与配置
1、安装配置mutt
yum install -y mutt
2、mutt一般情况下是默认已经安装在linux系统中,可以通过which mutt来查看对应的安装路径。只需要做一些配置即可,具体的配置可以有两种方式。可以修改/etc/Muttrc或新增.muttrc,在/etc/Muttrc相应的配置文件。具体的配置文件如下:
vi /etc/Muttrc,在最后增加如下内容 set sendmail="/usr/bin/msmtp" |
在配置完mutt后,可以采用如下的命令进行邮件发送功能的验证,具体如下:
$ echo “helloworld” | mutt –s “test subject” ***@163.com |
正常情情况下,邮件能够成功发送。
若出现了异常,可以采用如下的方式进行问题排查:
$ echo “helloworld” | mutt –s “test subject”***@163.com
Error sending message, child exited 78 ().
Segmentation fault
当遇到如上的问题时,一般情况是由于某些配置文件错误导致的,但通过上述简短的信息无法排查出到底是哪里出现了问题。可以采用如下的方式进行检验:
$ mutt –s “test subject” ***@163.com
上述命令会要求你输入正文,然后再输入邮件正文,此时会出现较为详细的错误,如下所示:
msmtp: account default not found: noconfiguration file available
此时可以确定是由于msmtp出现了问题,而且是由于无法加载默认的default用户而导致的。解决方案即是在配置sendmail时将其配置文件加上。如下所示:
set sendmail=”/usr/local/msmtp/bin/msmtp –C.msmtprc”
3、mutt的常用命令
mutt [-hnpRvxz][-a<文件>][-b<地址>][-c<地址>][-f<邮件文件>][-F<配置文件>][-H<邮件草稿>][-i<文件>][-m<类型>][-s<主题>][邮件地址]
Linux命令参数:
-a<文件> 在邮件中加上附加文件。
-b<地址> 指定密件副本的收信人地址。
-c<地址> 指定副本的收信人地址。
-f<邮件文件> 指定要载入的邮件文件。
-F<配置文件> 指定mutt程序的设置文件,而不读取预设的.muttrc文件。
-h 显示帮助。
-i<文件> 将指定文件插入邮件内文中
-m<类型> 指定预设的邮件信箱类型。
-n 不要去读取程序培植文件(/etc/Muttrc)
-p 在mutt中编辑完邮件后,而不想将邮件立即送出,可将该邮件暂缓寄出。
-R 以只读的方式开启邮件文件
-s<主题> 指定邮件的主题。
-v 显示mutt的版本信息以及当初编译此文件时所给予的参数。
-x 模拟mailx的编辑方式。
-z 与-f参数一并使用时,若邮件文件中没有邮件即不启动mutt。
带附件的邮件发送命令:
$ mutt -s "subject" -a /home/admin/backup.tar.gz xxx@163.com < /tmp/x.txt |
-s: 邮件标题,用""括上
-a: 邮件附件。如上命令就是将/backup目录下 backup.tar.gz文件作为附件发送。
< /tmp/x.txt:/tmp目录下x.txt文件里的内容作为邮件内容发送。
给多人发送邮件,只要在邮箱地址后加空格接着输入邮箱地址即可,如:
$ mutt -s "subject" -a /home/admin/backup.tar.gz xxx1@163.com xxx2@163.com xxx3@163.com< /tmp/x.txt |
详细的mutt的文档请参见: http://book.selboo.com.cn/book/Mutt.html