sendemail invalid SSL_version specified at /usr/share/perl5/vendor_perl/IO/Socket/SSL.pm line 640 错误

根据公司要求这边要做服务器监控脚本,尝试使用shell脚本编写发送邮件。

服务器发送邮件需要依赖第三方插件sendemail

#下载安装包

wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz

#创建目录

mkdir -p /usr/local/bin

#解压

tar zxf sendEmail-v1.56.tar.gz -C /usr/src/

#进入解压目录

cd /usr/src/sendEmail-v1.56/

#复制程序到指定目录

cp -a sendEmail /usr/local/bin/

#给执行权限

chmod +x /usr/local/bin/sendEmail

#安装组件

yum install perl-Net-SSLeay perl-IO-Socket-SSL -y

 

#!/bin/bash

#收件箱

EMAIL_RECIVER="li__yukun@163.com"

#发送者邮箱

EMAIL_SENDER=2504413761@qq.com

#邮箱用户名

EMAIL_USERNAME=2504413761

#邮箱密码 #使用qq邮箱进行发送需要注意:首先需要开启:POP3/SMTP服务,其次发送邮件的密码需要使用在开启POP3/SMTP服务时候腾讯提供的第三方客户端登陆码。

EMAIL_PASSWORD=vxddqmqvrxhqebdb

#附件路径 FILE1_PATH="/root/anaconda-ks.cfg"

#smtp服务器地址

EMAIL_SMTPHOST=smtp.qq.com EMAIL_TITLE="测试"

EMAIL_CONTENT="谢谢!"

sendEmail -f ${EMAIL_SENDER} -t ${EMAIL_RECIVER} -s ${EMAIL_SMTPHOST} -u ${EMAIL_TITLE} -xu ${EMAIL_USERNAME} -xp ${EMAIL_PASSWORD} -m ${EMAIL_CONTENT} -a ${FILE1_PATH} -o message-charset=utf-8

[root@localhost bin]# ./test.sh

May 25 23:34:50 localhost sendEmail[32460]: Email was sent successfully!

因为我的linux版本是8.x以上,默认perl版本是5.26.3。

执行test.sh时提示 :

invalid SSL_version specified at /usr/share/perl5/vendor_perl/IO/Socket/SSL.pm line 640

sendemail所依赖的版本是5.10.3,所以需要降版本,但是不推荐,如果你有多个虚拟机的话,就当我的话没说。已经踩过坑了,我的2个虚拟机的perl不能用了。

最后实在么有精力再去折腾了,所以多方查找后,找到替代方法

原本640行代码为:

${*$self}{'_SSL_ctx'} = IO::Socket::SSL::SSL_Context->new($arg_hash)

${*$self}{'_SSL_ctx'} = IO::Socket::SSL::SSL_Context->new($arg_hash) || return;

修改保存后执行文件正常发送邮件。

因为perl版本不一样这一行代码所在位置也不一样,7.x大概在415行也就是报错时提示

invalid SSL_version specified at /usr/share/perl5/vendor_perl/IO/Socket/SSL.pm line 415

 

 

查找资料参考链接:

https://blog.csdn.net/leshami/article/details/52689097

https://my.oschina.net/u/4005872/blog/3035997

posted @ 2021-05-25 16:18  正在加班中  阅读(455)  评论(0)    收藏  举报