• 使用阿里云服务器写shell脚本发送qq邮件的三个形式


    【准备工作】

    IPtables的使用如下命令:(执行以下以下命令把25和465端口打开)

    iptables -A INPUT -p tcp --dport 25 -j ACCEPT

    iptables -A OUTPUT -p tcp --sport 25 -j ACCEPT

    iptables -A INPUT -p tcp --dport 465 -j ACCEPT

    iptables -A OUTPUT -p tcp --sport 465 -j ACCEPT

    要先开启

     

     

     经过以上的三步我们就可以得到授权码啦

    【 启动postfix】

    #sendmial

    service sendmail stop

    chkconfig sendmail off

    【postfix】

    service postfix start

    chkconfig postfix on

    【如果postfix start失败】

    [root@rzdatahadoop002 ~]# postfix check

    postfix: error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory

    [root@rzdatahadoop002 ~]# rpm -qa|grep mysql

    [root@rzdatahadoop002 ~]# yum install mysql-libs

    【创建认证】

    mkdir -p /root/.certs/   ##先创建这个文件夹

    下边这一大段你直接全部复制然后按回车即可,任意目录,不必犹豫!!!

    echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt

    certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt

    certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt

    certutil -L -d /root/.certs

    cd /root/.certs

    certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.cr

    坑1】如果你用的是阿里云服务器,那么这里有大坑下边会有讲解

    【配置mail.rc】

    vi /etc/mail.rc

    set from=2643854124@qq.com   ##你发邮件的邮箱

    set smtp=smtp.qq.com  

    set smtp-auth-user=2643854124

    #授权码
    set smtp-auth-password=dqiqzlqpslvxdieb

    set smtp-auth=login

    set smtp-use-starttls

    set ssl-verify=ignore

    set nss-config-dir=/root/.certs

    【安装mailx】

    yum -y install mailx

    【 查看证书是否可读写】

     cd /root/.certs

    -rw-r--r-- 1 root root 65536 Apr 14 10:58 cert8.db
    -rw-r--r-- 1 root root 16384 Apr 14 10:58 key3.db
    -rw-r--r-- 1 root root 2529 Apr 11 22:06 qq.crt
    -rw-r--r-- 1 root root 16384 Apr 11 21:16 secmod.db

    [root@hadoop001 .certs]# certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qiye.aliyun.com.crt

    一定要在这个目录下执行要不然会报错,或者是权限不是644

    certutil:  unable to open "qiye.aliyun.com.crt" for reading (-5950, 2).

    但是,这时候你一定奇怪qiye.aliyun.com.crt是个什么鬼???!!是的这是阿里云的证书,所以我们还需要执行以下代码(啥都不要管直接复制执行就完事)

    echo -n | openssl s_client -connect smtp.qiye.aliyun.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qiye.aliyun.com.crt

    certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qiye.aliyun.com.crt

    certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qiye.aliyun.com.crt

    执行完以后再次查看发现qiye.aliyun.com.crt存在了

    [root@hadoop001 .certs]# ll
    total 84
    -rw-r--r-- 1 root root 65536 Apr 14 10:58 cert8.db
    -rw-r--r-- 1 root root 16384 Apr 14 10:58 key3.db
    -rw-r--r-- 1 root root 2281 Apr 11 22:22 qiye.aliyun.com.crt
    -rw-r--r-- 1 root root 2529 Apr 11 22:06 qq.crt
    -rw-r--r-- 1 root root 16384 Apr 11 21:16 secmod.db

    这个时候我们再次执行

    [root@hadoop001 .certs]# certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qiye.aliyun.com.crt

    Notice: Trust flag u is set automatically if the private key is present.  【这才是正确的结果】

    【终极坑】

    所有配置都正确了,为什么还是不行!提示:

    SSL/TLS handshake failed: SSL received a malformed Alert record.
    "/root/dead.letter" 11/306
    . . . message not sent.

    答:请在mail.rc 中,将第四步中的命令set smtp-use-starttls去掉

    【测试形式1】

    echo  "hello word" | mail -s "title"  2643854124@qq.com(收邮件的邮箱)

    这时候会报错

    【could not connect: Connection timed out
    "/root/dead.letter" 11/299
    . . . message not sent.
    could not connect: Connection timed out
    "/root/dead.letter" 11/299
    . . . message not sent.】

    这个时候你需要在

    vi /etc/mail.rc

    把【set smtp=smtp.qq.com 】

    改为

    【set smtp=smtps://smtp.qq.com】

    晚上也有说要改成

    【smtps://smtp.qiye.aliyun.com:465】的,但是本人亲测报错

    【Unexpected EOF on SMTP connection
    "/root/dead.letter" 11/299
    . . . message not sent.】

    修改完成以后再次测试:瞬间收到邮件

    echo  "hello word" | mail -s "title"  2643854124@qq.com

    【测试形式2--附件】

    先创建要发送的附件

    cat mail_attachment.sh

    #!/bin/bash

    FROM_EMAIL="2643854124@qq.com"

    TO_EMAIL="2643854124@qq.com"

    LOG=/root/shell/ruozedata.log

    echo -e "`date "+%Y-%m-%d %H:%M:%S"` : Please to check the fail sql attachement." | mailx

    -r "From: alertAdmin <${FROM_EMAIL}>"

    -a ${LOG}

    -s "Critical:DSHS fail sql." ${TO_EMAIL}

    【命令拓展】

    https://ywnz.com/linux/mailx/

    -A:执行帐户的命令的名称启动文件被读取之后。

    -a:给定的文件附加到邮件中。

    -B:使标准输入和标准输出线-缓冲。

    -b:发送密件副本列表。列表应该是一个逗号分隔的名称列表。

    -c:送炭复制到地址列表。

    -D:开始在断开模式; 看到断开的变量的描述选项。

    -d:启用调试消息和关闭消息的实际交付。 不像-v,此选项仅用于开发目的。

    -e:只是检查是否有邮件系统邮箱。 如果是,返回零,否则,一个非零值退出状态。

    -E:如果传出消息,不包含在它的第一个或唯一的消息部分的任何文字,不要把它丢弃,但它静静地,有效地设置在程序启动时的skipemptybody变量。这是一个从发送消息有用

    的脚本由启动cron的。

    -f:阅读在用户的邮箱中的内容(或文件时 ,如果指定)进行处理; 当mailx的是退出,将其写入未删除的邮件恢复该文件。 该字符串作为文件处理描述为文件夹命令如下。

    -F:保存要发送的消息中的第一个收件人的地址的本地部分命名的文件。

    -H:打印头汇总所有消息并退出。

    -h:调用的sendmail与指定的跃点数。此选项没有在使用SMTP发送邮件的效果。

    -i:TTY忽略中断信号。使用mailx的对噪音的电话线时,这是非常有用的。

    -I:显示了“ 新闻组:'或' 文章ID:'在标题汇总字段。只有在与-f结合使用时适用。

    -n:禁止阅读/etc/mail.rc启动时。这个选项应该适用于对多台计算机调用mailx的脚 本来启动,因为文件的内容,它们之间可能有所不同。

    -N:阅读邮件或编辑邮件文件夹时禁止消息头的初始显示。

    -q:启动与指定的文件的内容的消息。 可仅在发送模式给出。

    -r:设置发件人地址。忽略任何从指定的变量环境变量或启动文件。波浪号逃逸被禁用。该-r地址选项被传递到邮件传输代理,除非使用SMTP。此选项存在唯一的相容性;它建议

    而不是直接设置从变量。

    -R:如果打开文件夹的只读打开它们。

    -s:指定主题的命令行(仅后-s标志作为主题的第一个参数,要注意引用包含空格的科目)。

    -S:设置内部选项变量变量的可选值的价值 。

    -T:写“ 邮件ID:”和“ 文章ID:'读入文件名 ??的每个消息头字段。暗示我压缩文件的处理所描述的文件夹命令如下。

    -t:要发送的消息,预计将包含一个消息头“收件人:”,“抄送”或“密件抄送:”字段给收件人。 在命令行上指定的收件人将被忽略。

    -u:读取用户的用户的邮箱。

    -v:详细模式。 递送的详细信息显示在用户的终端上。

    -V:显示版本信息并退出。

    - ?:启用波浪逃逸 ,即使不是在交互模式。

    【测试形式三】

    用发送html格式的邮件。如果你是云主机,我找遍了晚上大大小小的解决方案,均行不通。如果你成功了,可以一起交流。

  • 相关阅读:
    Microsoft Dynamics CRM4.0 Data Auditing and Restore (数据审核和恢复)
    Microsoft Dynamics CRM4.0 在联系人contact列表上直接发送邮件
    安装Microsoft Dynamics CRM 2011时出现“Microsoft.Crm.Setup.Common.Analyzer+CollectAction 操作失败”的解决办法
    Microsoft Dynamics CRM4.0 控制是否显示 '设置Setting’ 区域
    Microsoft CRM "您查看的网页正在试图关闭窗口" 不能自动关闭的解决办法
    Dynamics CRM 2011 Ribbon 默认收起collapse和隐藏hide
    Microsoft Dynamics CRM4.0 在线用户检测(Online user detect)
    C语言I博客作业03
    C语言I博客作业06
    第一次作业
  • 原文地址:https://www.cnblogs.com/xuziyu/p/10708015.html
Copyright © 2020-2023  润新知