阿里云服务器mail发送邮件的坑!!!!

因为阿里云默认将目的端口为TCP25的出现流量屏蔽了,所以改用465 ssl端口发送邮件

下面步骤注意更改名字,密码,目录等,不需要增加安全组任何端口。大致步骤复制粘贴一定成功

一、安装mailx,通过此工具实现

[root@db ~]# yum install -y mailx
[root@db ~]# vim /etc/mail.rc
设置发件人信息

.....
set from=wushuting@kting.cn
set smtp=smtps://smtp.exmail.qq.com:465
set smtp-auth-user=***ting@kting.cn
set smtp-auth-password=***
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/root/.certs

set smtp=smtps:设置发送邮件的服务器端口,如果非企业邮箱去掉exmail
set smtp-auth-password:设置qq企业邮箱授权密码
set ssl-verify:忽略ssl检查
set nss-config-dir:指定证书所在的目录

二、申请证书

[root@db ~]# mkdir .certs

向qq企业邮箱申请证书
[root@db ~]# echo -n | openssl s_client -connect smtp.exmail.qq.com:465 | sed -ne ‘/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p’ > .certs/qq.crt
[root@db ~]# certutil -A -n “GeoTrust SSL CA” -t “C,,” -d ~/.certs -i ~/.certs/qq.crt
[root@db ~]# certutil -A -n “GeoTrust Global CA” -t “C,,” -d ~/.certs -i ~/.certs/qq.crt

列出目录下的证书
[root@db ~]# certutil -L -d ~/.certs/
[root@db ~]# cd .certs/

标记证书
[root@db .certs]# certutil -A -n “GeoTrust SSL CA – G3” -t “Pu,Pu,Pu” -d ./ -i qq.crt

三、发送邮件

[root@db ~]# echo “test” | mail -s ‘test’ ***ting@kting.com

我写了一个简单的mysql全备shell脚本,通过mailx调用通知

#!/bin/bash
PWD="***"
LOG_FILE=/root/crontab/backup.log
BAKDIR=/store/backup
MAIL_USER=***ting@kting.cn
DATE=`date '+%Y%m%d_%H-%M-%S'`

#清空输出日志
> $LOG_FILE

function bakstart {
#开始备份
local DATE
DATE=`date '+%Y%m%d_%H-%M-%S'`
echo "$DATE backup database start!" >> $LOG_FILE
/data/server/mysql/bin/mysqldump  -uroot -p${PWD} --opt --default-character-set=utf8 --all-databases > $BAKDIR/mysql_all_$DATE.sql
if [ $? == 0 ];then
echo "size:`du -sh $BAKDIR/mysql_all_$DATE.sql | awk '{print $1}'`" >> $LOG_FILE
#结束备份,压缩备份
cd $BAKDIR
gzip $BAKDIR/mysql_all_$DATE.sql
     if [ $? == 0 ];then
         return 0
     else
         return 1
     fi
else
     return 2
fi
}

#返回值输出信息
bakstart
case $? in
0)
echo "`date '+%Y%m%d_%H-%M-%S'` backup database stop!" >> $LOG_FILE ;;
1)
echo "gzip faile!" >> $LOG_FILE ;;
2)
echo "database backup faile! check $BAKDIR" >> $LOG_FILE ;;
esac

#拷贝日志,邮件发送日志
cp $LOG_FILE{,-$DATE}
mail -s 'database mail' $MAIL_USER < $LOG_FILE

转载于网络进行整理,望采纳

    原文作者:汀云社
    原文地址: https://segmentfault.com/a/1190000016834553
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞