linux脚本空间预警,并发送邮件,内含配置邮箱服务器,及报错“Could not resolve host: //smtp.qq.com”、“smtp-server: 502”

我的centos7.x是新装的系统,暂未开启任何邮箱服务
常说的mail、mailx和sendmail

  • mail用户代理(客户端),是mailx的别名, mail和mailx是同一个东西

  • sendmail是邮件传输代理(服务器),

1. 安装mailx

yum  install mailx

2. 获取邮箱第三方登录授权码

以qq邮箱为例,“设置”–>“账户”
在这里插入图片描述账号往下翻,找到POP3/IMAP…,开启pop3/SMTP、IMAP/SMTP,点击生成授权码,手机验证
请添加图片描述在这里插入图片描述复制授权码

3. 生成证书

mkdir -p  /root/.certs   创建证书目录
echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt     #获取邮件服务器证书
chmod +x /root/.certs/qq.crt     #qq.crt 添加执行权限
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt 	#添加SSL证书到数据库
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt		#添加global证书到数据库
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ~/.certs -i ~/.certs/qq.crt  #指定受信任证书,防报错
certutil -L -d /root/.certs  #列出安全数据库中的证书

4. 配置mail

mail命令的系统级配置文件是/etc/mail.rc

vi  /etc/mail.rc
# For Linux and BSD, this should be set.
set bsdcompat
set [email protected]    #设置邮件发送方
set smtp=smtps://smtp.qq.com:465  #邮件服务器,我这里是qq
set [email protected]	#smtp验证用户邮箱
set smtp-auth-password=cdesllrlz111111 #邮箱授权码
set smtp-auth=login 	#认证方式
set ssl-verify=ignore	#忽略SSL验证
set nss-config-dir=/root/.certs   #证书目录
#set smtp-use-starttls=yes          # STARTTLS时使用

在这里插入图片描述

5. 邮箱测试

echo " 邮件正文内容 " | mail -s " 邮件主题 " 目的地邮箱地址@xx.com
等待~叮 邮箱就收到消息啦
证书,配置严格按格式、步骤来一般就不会报错

6. 报错大合集

1.Could not resolve host: //smtp.qq.com

在这里插入图片描述
编辑配置文件:
set smtp= smtps:// smtp.xxx.com:465 # 这里填入smtp地址

465端口 465端口,需要加上smtps://协议;如果是587端口,不需要加smtps://或者写smtp://
端口465用于smtpsSSL加密在任何SMTP级别通信之前自动启动。端口587用于msa它几乎像标准SMTP端口。

出现Could not resolve host:时,一定要检查Could not resolve host:之后提示的内容,在/etc/mail.rc配置文档中,修改或注释(文档自己有的注释掉;自己添加的检查错误)

2.“Unexpected EOF on SMTP connection”

基本上是由于端口只支持SMTPS导致,将协议改成smtps://即可。

3.出现502报错“smtp-server: 502 Invalid input from 122.238.160.241 to newxmesmtplogicsvrsza_”

检查**/etc/mail.rc配置文档**中邮件地址的填写,填邮箱地址啊!
set from
set smtp-auth-user设置成非邮箱地址,eg:用户名Bessssss,
则会报错“smtp-server: 535 Login Fail”

$ cat /home/gaoxiaoxue/space.sh

7写监控脚本!

# !/bin/sh 
email=" [email protected] "         收件邮箱
df -Ph  /dev/mapper/centos-home  |awk '{print $4,$5}' |  while  read output;
 do 
  echo  $output 
  partition=$(echo  $output  | awk '{print  $1 }')
  used=$(echo $output |awk '{print  $2}' |sed s/%//g)
  if  [[ $used  -ge 85  ]] ; then                 界限值
  echo  "$(hostname) 上的分区:剩余 " $partition "  已使用 $used% , $(date) "  | mail -s  " 143磁盘空间警报: $(hostname) 已使用 $used%"  $email     
  fi
done

在这里插入图片描述

sh space.sh 手机就可以收到短信啦(当然是在你脚本if条件成立的时候
做个定时任务就好啦,可查看我别的文档 “完整小白版,crontab定时任务操作步骤”

猜你喜欢

转载自blog.csdn.net/ayychiguoguo/article/details/120849766
今日推荐