• zabbix 3.2.7 在centos 7.4上使用gmail 发送邮件


    记录了 zabbix 3.2.7 在 centos 7.4使用 gmail作为stmp服务器发送邮件

    # find / -name sendEmail
    # tar xvzf sendEmail-v1.56.tar.gz
    sendEmail-v1.56/
    sendEmail-v1.56/CHANGELOG
    sendEmail-v1.56/README
    sendEmail-v1.56/README-BR.txt
    sendEmail-v1.56/TODO
    sendEmail-v1.56/sendEmail
    sendEmail-v1.56/sendEmail.pl
    # cp sendEmail-v1.56/sendEmail /usr/local/bin/
    # chmod +x /usr/local/bin/sendEmail

    使用 163发送

    # /usr/local/bin/sendEmail -f ***@163.com -t ***@163.com -s smtp.163.com -u "send by 123" -o message-content-type=html -o message-charset=utf8 -xu **** -xp **** -m "邮件发送成功,good"
    Jun 25 12:08:29 sendEmail[16984]: Email was sent successfully!

    使用 gmail 发送

     # /usr/local/bin/sendEmail -f ***@gmail.com -t ***@163.com -s smtp.gmail.com:587 -u "send by 123" -o message-content-type=html -o tls=yes -o message-charset=utf8 -xu **** -xp ***** -m "邮件发送成功,good" 

    Jun 25 22:07:50  sendEmail[46015]: NOTICE => Authentication not supported by the remote SMTP server!
    Jun 25 22:07:50  sendEmail[46015]: ERROR => Received:     530 5.7.0 Must issue a STARTTLS command first. r134sm7400690pfc.68 - gsmtp

    在发送邮件前,登录 gmail邮箱,需要开启 “转发和POP/IMAP”,并生成授权码

    163邮箱也类似,需要登录163邮箱,开启PMP/SMTP服务才可以发送邮件

    # ping gmail.com
    # telnet smtp.gmail.com 587
    Trying **** ...
    Connected to smtp.gmail.com.
    Escape character is '^]'.
    220 smtp.gmail.com ESMTP u11sm8926238pjf.46 - gsmtp
    quit
    221 2.0.0 closing connection u11sm8926238pjf.46 - gsmtp
    Connection closed by foreign host.

    sendemail.sh

    #!/bin/bash
    SMTP_server='smtp.163.com'    # SMTP服务器
    username='t***@163.com'     # 用户名
    password='***'              # 密码
    from_email_address='****' # 发件人Email地址
    to_email_address="$1"               # 收件人Email地址,zabbix传入的第一个参数
    message_subject_utf8="$2"           # 邮件标题,zabbix传入的第二个参数
    message_body_utf8="$3"              # 邮件内容,zabbix传入的第三个参数
    
    # 转换邮件标题为GB2312,解决邮件标题含有中文,收到邮件显示乱码的问题。
    message_subject_gb2312=`iconv -t GB2312 -f UTF-8 << EOF
    $message_subject_utf8
    EOF`
    [ $? -eq 0 ] && message_subject="$message_subject_gb2312" || message_subject="$message_subject_utf8"
    
    # 转换邮件内容为GB2312
    message_body_gb2312=`iconv -t GB2312 -f UTF-8 << EOF
    $message_body_utf8
    EOF`
    [ $? -eq 0 ] && message_body="$message_body_gb2312" || message_body="$message_body_utf8"
    
    # 发送邮件
    sendEmail='/usr/local/bin/sendEmail'
    $sendEmail -s "$SMTP_server" -xu "$username" -xp "$password" -f "$from_email_address" -t "$to_email_address" -u "$message_subject" -m "$message_body" -o message-content-type=text -o message-charset=gb2312

    使用gmai 的smtp服务器

    #将smtp服务器替换
    smtp.gmail.com:587
    #还需要再 sendmail加上 -o tls=yes
    [root@zabbix alertscripts]# ./sendEmail.sh  *****@163.com  1111 hellotest
    Jun 25 23:44:41  sendEmail[69900]: ERROR => No TLS support!  SendEmail can't load required libraries. (try installing Net::SSLeay and IO::Socket::SSL)
    [root@zabbix alertscripts]# ./sendEmail.sh  ******@163.com  1111 hellotest
    Jun 25 23:49:29  sendEmail[70082]: NOTICE => Authentication not supported by the remote SMTP server!
    Jun 25 23:49:30  sendEmail[70082]: ERROR => Received:     530 5.7.0 Must issue a STARTTLS command first. a9sm12016545pjm.51 - gsmtp

    经过google发现,即使安装了 也还是报错

    yum install 'perl(Net::SSLeay)' 
    yum install 'perl(IO::Socket::SSL)'

    此系统为 Centos 7.4,使用 sendEmail-v1.56.tar.gz 发送邮件,的perl版本问题

    # ./sendEmail.sh  ******@163.com  1111 hellotest
    *******************************************************************
     Using the default of SSL_verify_mode of SSL_VERIFY_NONE for client
     is deprecated! Please set SSL_verify_mode to SSL_VERIFY_PEER
     possibly with SSL_ca_file|SSL_ca_path for verification.
     If you really don't want to verify the certificate and keep the
     connection open to Man-In-The-Middle attacks please set
     SSL_verify_mode explicitly to SSL_VERIFY_NONE in your application.
    *******************************************************************
      at /usr/local/bin/sendEmail line 1906.
    invalid SSL_version specified at /usr/share/perl5/vendor_perl/IO/Socket/SSL.pm line 444.
    wget http://www.cpan.org/src/5.0/perl-5.10.0.tar.gz ##降低perl版本(不建议)
         tar -zxf perl-5.10.0.tar.gz
         cd perl-5.10.0
         ./configure.gnu -des -Dprefix=/usr/local/perl
         echo $?
         make
         make test
         make install
    # mv /usr/bin/perl /usr/bin/perl.bak
    # ln -s /usr/local/perl/bin/perl /usr/bin/perl
    # perl -v
    
    This is perl, v5.10.0 built for x86_64-linux
    
    Copyright 1987-2007, Larry Wall
    
    Perl may be copied only under the terms of either the Artistic License or the
    GNU General Public License, which may be found in the Perl 5 source kit.
    
    Complete documentation for Perl, including FAQ lists, should be found on
    this system using "man perl" or "perldoc perl".  If you have access to the
    Internet, point your browser at http://www.perl.org/, the Perl Home Page.

    修改了,发送邮件还是报错,后面排查 问题应该是 (try installing Net::SSLeay and IO::Socket::SSL) 这个2个版本与perl的版本不兼容问题

    尝试用 ssmtp 发送邮件

    yum --enablerepo=extras install epel-release
    yum install ssmtp
    yum install mailx
    # ll /etc/ssmtp/ssmtp.conf 
    -rw-r----- 1 root mail 1483 Oct 29  2014 /etc/ssmtp/ssmtp.conf

    配置文件

    # cat /etc/ssmtp/ssmtp.conf |grep -v '^$'|grep -v '^#'
    root=***@gmail.com
    mailhub=smtp.gmail.com:587
    RewriteDomain=gmail.com
    Hostname=***
    FromLineOverride=YES
    UseTLS=YES
    TLS_CA_File=/etc/pki/tls/certs/ca-bundle.crt
    UseSTARTTLSCert=YES
    UseSTARTTLS=YES
    AuthUser=****gmail.com
    AuthPass=****
    AuthMethod=LOGIN
    # more /etc/ssmtp/revaliases
    # sSMTP aliases
    # 
    # Format:    local_account:outgoing_address:mailhub
    #
    # Example: root:your_login@your.domain:mailhub.your.domain[:port]
    # where [:port] is an optional port number that defaults to 25.
    root:****@gmail.com:smtp.gmail.com:587
    # chmod 640 /etc/ssmtp/ssmtp.conf
    # chown root:mail /etc/ssmtp/ssmtp.conf
    # echo "E-Mail zabbix test" | ssmtp -vvv ******@163.com
    [<-] 220 smtp.gmail.com ESMTP h8sm9629217pfn.0 - gsmtp
    [->] EHLO ***
    [<-] 250 SMTPUTF8
    [->] STARTTLS
    [<-] 220 2.0.0 Ready to start TLS
    [->] EHLO ***
    [<-] 250 SMTPUTF8
    [->] AUTH LOGIN
    [<-] 334 VXNlcm5hbWU6
    [->] Ym9sMTEwLm9ydXJvQGdtYWlsLmNvbQ==
    [<-] 334 UGFzc3dvcmQ6
    [<-] 235 2.7.0 Accepted
    [->] MAIL FROM:<****@gmail.com>
    [<-] 250 2.1.0 OK h8sm9629217pfn.0 - gsmtp
    [->] RCPT TO:<***@163.com>
    [<-] 250 2.1.5 OK h8sm9629217pfn.0 - gsmtp
    [->] DATA
    [<-] 354  Go ahead h8sm9629217pfn.0 - gsmtp
    [->] Received: by *** (sSMTP sendmail emulation); Sat, 26 Jun 2021 17:00:17 -0400
    [->] From: "root" <****@gmail.com>
    [->] Date: Sat, 26 Jun 2021 17:00:17 -0400
    [->] test
    [->] 
    [->] .
    [<-] 250 2.0.0 OK  1624741219 h8sm9629217pfn.0 - gsmtp
    [->] QUIT

    使用 ssmtp发送成功

    脚本

    # more ssmtpemail.sh 
    #!/bin/sh
    to=$1
    subject=$2
    body=$3
    echo "From:<****@gmail.com>
    To: y****@163.com,***@163.com
    
    Subject: From ***** Center: $subject
    
    Something has gone wrong at service $body,Please check soon!!!
    
    " | ssmtp  $to
    # ./ssmtpemail.sh ****@163.com,****@163.com "mysql is down" "mysql 3306 port is down"

    再此尝试用 gmail 发送邮件

    sendEmail[5716]: ERROR => No TLS support!  SendEmail can't load required libraries. (try installing Net::SSLeay and IO::Socket::SSL)
    Jun 25 23:31:28  yum[48987]: Installed: perl-Mozilla-CA-20130114-5.el7.noarch
    Jun 25 23:31:28  yum[48987]: Installed: perl-Net-LibIDN-0.12-15.el7.x86_64
    Jun 25 23:31:28  yum[48987]: Installed: perl-WWW-Curl-4.15-13.el7.x86_64
    Jun 25 23:31:28  yum[48987]: Installed: perl-Net-SSLeay-1.55-6.el7.x86_64
    Jun 25 23:31:28  yum[48987]: Installed: perl-IO-Socket-IP-0.21-5.el7.noarch
    Jun 25 23:31:28  yum[48987]: Installed: perl-IO-Socket-SSL-1.94-7.el7.noarch
    Jun 25 23:31:28  yum[48987]: Installed: 1:openssl-perl-1.0.2k-21.el7_9.x86_64

    仍是是此错误,但是包都已经安装。于是再 centos 6.10上使用脚本发送邮件。发现没有任何问题。

    此问题应该就是之前 反映的 perl的版本与 系统版本的问题

    即使降低 perl的版本 也不行,gmail 必须要求,tls=yes. gmal发送就是有点问题.如果要使用gmail,建议用 centos6发送邮件。

  • 相关阅读:
    Window安装Redis并设置为开机启动
    大佬为你揭秘微信支付的系统架构,你想知道的都在这里了
    想要设计自己的微服务?看这篇文章就对了
    破局人工智能:构建AI,与腾讯云一起探索语音应用场景
    巧用机器学习定位云服务器故障
    重磅发布 | 黑镜调查:深渊背后的真相之「DDoS 威胁与黑灰产业调查报告」
    5分钟内看懂机器学习和深度学习的区别
    如何防范和应对Redis勒索,腾讯云教你出招
    Redis勒索事件爆发,如何避免从删库到跑路?
    作为一个编程新手,我再也不怕Flink迷了我的眼!
  • 原文地址:https://www.cnblogs.com/yhq1314/p/14942785.html
Copyright © 2020-2023  润新知