做为一名运维DBA,要写一些监控脚本或分析脚本,并把结果每天定时发送到邮箱中,来提高工作效率。Linux系统下有许多的开源软件可以采用命令的方式来发送邮件,
我比较推荐用msmtp+mutt方式来发送邮件
一. msmtp和mutt简介:
msmtp是一个开源的SMTP客户端,它负责传输邮件到SMTP服务器。
mutt是一款功能强大的基于文字界面的E-Mail
Client程序,可以用它来读写、回复、保存邮件,当然也可以在邮件中添加附件,它需要和msmtp配合使用,官网地址
二. msmtp安装及配置
1.下载及安装
网上下载地址很多,这里提供一个
下载下来后解压:
$tar
xvf msmtp-1.4.30.tar.bz2
$cd
msmtp-1.4.30
$./configure
--prefix=/usr/local/msmtp
$make
$make
install
2 配置msmtp
msmtp配置文件有两种,一类是系统配置文件,一类是用户配置文件,配置一个即可
系统配置文件为/usr/local/msmtp/etc/msmtprc (etc目录和msmtprc文件要手工创建)
用户配置在用户家目录下~/.msmtprc (只对本用户生效,也要手工创建)
配置文件用于配置邮件发送的一些基本信息,这里对用户配置文件做个简单的配置:
$vi
~/.msmtprc
defaults //表示设置默认值
logfile
/usr/local/msmtp/msmtp.log //指定日志文件
account
zhao //设置账号
host
smtp.163.com //SMTP邮件服务器地址
auth
plain //指定认证方式
user
zhao //指定用户名
fromzhao@163.com//发送的邮件Email
password
123456 //指定密码
因为密码是名文的,所以用户配置文件的读定权限必须为600
chmod
600 ~/. msmtprc
三、mutt的安装与配置
1. mutt安装
一般Linux都会默认安装mutt,可用命令查下rpm -qa|grep mutt或whereis mutt看下相关路径
如果没有安装可以使用# yum install mutt安装下,或去官网()下载源码安装,这里不再多做介绍
2. mutt配置
mutt配置文件也有两类,一类是系统配置文件(/etc/Muttrc),一类是用户配置文件(~/.muttrc,要手工创建)
我这里配置用户配置文件 ,配置比较简单,不再详述,添加如下内容即可
vi
~/.muttrc
set
sendmail="/usr/local/msmtp/bin/msmtp"
set
use_from=yes
set
envelope_from=yes
set
realname="dba"
3.发送邮件
配置完成后,发封邮件测试下:
mutt -s
" testdba" -a /home/oracle/check.log zhaoxxx@163.com < /tmp/1.txt
-s 后面testdba
为邮件主题
-a 后面/home/oracle/check.log为附件
zhaoxxx@163.com为收件人邮箱
/tmp/1.txt 文件中的内容为邮件正文内容
去邮箱看下,应该收到了一封标题为testdba的邮件
可以把这条命令放在shell脚本中,加入crontab,每天定时将监控结果发送邮件到邮箱
4.报错处理
如果发送报错,一般是配置文件配置有误,可用下面的办法检测下
mutt
–s “testdba” zhaoxxx@163.com
然后会提示输入标题、正文,这时会出现详细的错误信息,可看到是什么问题导致的,
如:提示msmtp: account default not found:
noconfiguration file available
很明显是因为无法加载默认的default用户
解决办法:
在muttrc配置文件中,将sendmail配置改为
set sendmail=/usr/local/msmtp/bin/msmtp –C ~/.msmtprc”即可
附:mutt常用参数
-a
在邮件中加上附加文件。
-b
指定密件副本的收信人地址。
-c
指定副本的收信人地址。
-f
指定要载入的邮件文件。
-F
指定mutt程序的设置文件,而不读取预设的.muttrc文件。
-h
显示帮助。
-H
将指定的邮件草稿送出。
-i
将指定文件插入邮件内文中。
-m
指定预设的邮件信箱类型。
-n
不要去读取程序培植文件(/etc/Muttrc)。
-p
在mutt中编辑完邮件后,而不想将邮件立即送出,可将该邮件暂缓寄出。
-R
以只读的方式开启邮件文件。
-s
指定邮件的主题。
-v
显示mutt的版本信息以及当初编译此文件时所给予的参数。
-x
模拟mailx的编辑方式。
-z
与-f参数一并使用时,若邮件文件中没有邮件即不启动mutt
以上参数内容摘自网络