linux配置邮箱服务器,及各种邮件报错问题!含脚本空间预警,并发送邮件

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

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

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

1. 安装mailx

yum  install mailx

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

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

3. 生成证书

后期使用中,用哪个账号发送邮件,就生成到谁的目录下!!

我用root 证书目录为/root/.certs

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

注:执行sudo bash -c 'certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d /root/.certs -i /root/.certs/qq.crt'
会跳出“Notice: Trust flag u is set automatically if the private key is present.”
在这里插入图片描述

4. 配置mail

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

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

在这里插入图片描述

5. 邮箱测试

echo " 邮件正文内容 " | mail -s " 邮件主题 " 目的地邮箱地址@xx.com
#echo "看看会不会成功" |mail -s "这是条测试邮件" 111111@qq.com

等待~叮 邮箱就收到消息啦
证书,配置严格按格式、步骤来一般就不会报错

6. 报错大合集

报错1: smtp-server: 535 Login Fail,Please enter your authorization code to login....

报错: $ smtp-server: 535 Login Fail. Please enter your authorization code to login. More information in http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
"/home/yy/dead.letter" 11/294
. . . message not sent.
解决:更新mail.rc配置文件里的授权码。原因第三方授权码过期或邮箱POP3/SMTP的服务没有开启

报错2:只有Error in certificate: Peer's certificate issuer is not recognized.

解决:会报错,但邮件能发出去解决。原因是证书有问题,重新生成(步骤在上面)

如果重新生成后执行还是报错Error in certificate: Peer's certificate issuer is not recognized再执行一遍以下命令:
sudo bash -c 'certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d /root/.certs -i /root/.certs/qq.crt'

报错3:Error initializing NSS: Unknown error -8015

$ Error initializing NSS: Unknown error -8015.
"/home/yyy/dead.letter" 11/323
. . . message not sent.
解决:执行发送邮件的用户不对,确认mail.rc配置里 set nss-config-dir= ???/.certs

写的是root,就用root账号执行邮件发送命令!!

有次测试,确认/etc/mail.rc跟执行命令的用户保持一致且已生成证书,执行命令仍报错。 将mail.rc跟执行用户都换成root又好了…没找到原因,仅做记录

报错4:Could not resolve host: //smtp.qq.com

在这里插入图片描述

解决:编辑配置文件:

set smtp= smtps:// smtp.xxx.com:465 # 这里填入smtp地址
465端口,需要加上smtps://协议; 如果是587端口,不需要加smtps://或者写smtp://
端口465用于smtps,SSL加密在任何SMTP级别通信之前自动启动。
端口587用于msa,它几乎像标准SMTP端口。

报错5:Unexpected EOF on SMTP connection

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

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

解决:检查**/etc/mail.rc配置文档**中邮件地址的填写,填邮箱地址啊!

set fromset smtp-auth-user,一定要写邮箱地址啊!
设置成非邮箱地址,eg:用户名Bessssss,则会报错“smtp-server: 535 Login Fail

报错7:“Error in certificate: Peer’s certificate issuer has been marked as not trusted by the… message not sent.”

原因:执行发送邮件命令的用户权限问题。
解决:.cert/**.crt 是root还是普通用户的要注意区分!是否需要用sudo

7. 写监控脚本!

看一下我写的脚本,(新手写的脚本,比较的啰嗦)
cat /home/****/space.sh

# !/bin/sh 
email=" 1111111@qq.com "         收件邮箱
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条件成立的时候
做个定时任务就好啦,cron定时任务

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bessssss

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值