• centos7 利用mailx发送邮件


    当需要服务器定时发送邮件到自己邮箱时,一个邮件服务就很重要了,以下主要是mailx的实现,主要是利用

    1.安装mailx

    yum  install  mailx -y
    

    2.使用到的配置文件只有一个,是/etc/mail.rc,通过修改配置文件/etc/mail.rc可以使用外部SMTP服务器,轻松实现linux发邮件功能。

    set from=xxxx@qq.com                                            qq邮箱或者其他邮箱
    set smtp=smtp.qq.com                                            smtp地址   
    set smtp-auth-user=xxx@qq.com                                   
    set smtp-auth-password=nibpgbkksmlbbabe                         注意:目前大部分的外部邮件服务使用第三方客户端时,都需要使用授权码,上面的smtp-auth-password使用的就是授权码,而不是邮件帐号的密码。具体操作在最后有附图    

    到目前为止,如果不是云主机的话,已经可以实现发送邮件了。若是云主机,则需要下面的操作

    一、配置mailx使用SMTP发送邮件:
    1、安装mailx;这里直接使用yum install mailx -y 进行安装即可;
    2、在/etc/mail.rc配置文件中,在最后面输入以下内容:

    set from="xxx@126.com"
    set smtp=smtp.126.com
    set smtp-auth-user=xxx
    set smtp-auth-password=邮箱密码
    set smtp-auth=login 

    配置都很简单,这里就不多说了,有两点需要注意的:
    1、邮箱需要开启SMTP功能,每个邮箱的开启方法都大同小异;
    2、现在大部分邮箱使用SMTP会让你启动一个授权码来代替邮箱密码
    具体各个邮箱开启授权码的方式可以直接百度;
    测试是否发送成功:
    mailx -s "邮箱测试" xxxx@qq.com < message_file 测试邮件一旦成功,收件箱会马上收到邮件,如果没有收到,则等一会可以看到shell界面的错误提示; 上面配置的是简单的使用25端口的SMTP发送邮件的功能,一般情况下我们使用这个就足够了,这个办法 在网上也很多配置说明,这里就不再浪费时间了,下面我们讲重点,使用TSL发送邮件; 前面说了,阿里云把25端口封了,去申请解封也比较麻烦,于是就想到了用TSL方式,绕过25端口发送邮件; TSL也就是使用SSL加密的方式,使用465或者其他端口来发送邮件,现在大部分邮箱都支持SSL,具体SSL的端口 地址,也可以查百度,这里是以126邮箱为准,126邮箱使用的是465或者994端口; 下面是详细的配置过程: 1、软件要求:openssl、mailx 12.0以上; 2、既然使用的是SSL协议,那当然是要有证书的了,下面是获取证书的操作;

    mkdir -p /root/.certs/
    echo -n | openssl s_client -connect smtp.126.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt
    certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
    certutil -L -d /root/.certs

    若需要qq的ssl 只需把第二条命令中的smtp.xxx.com:465 给替换了就行

    按照上面操作,只要不报错,就是正常的,我们会在/root/.certs下面看到几个证书文件,说明操作成功了;至于为什么

    要这么做,不要问我,我也是COPY大神的办法;有兴趣的可以参考最后大神的文章链接;

    3、证书配置好了,下面我们就要来配置mail.rc配置文件了,和最开始的不同,这里我们就需要配置和TSL相关的东西了

    set from=xxxooo@126.com
    set smtp=smtps://smtp.126.com:465
    set smtp-auth-user=xxxooo@126.com
    set smtp-auth-password=你的授权码
    set smtp-auth=login
    set ssl-verify=ignore
    set nss-config-dir=/root/.certs
    

    其实就多了几个配置stmp前面加了stmps://指定协议类型,后面加上端口号;

    启动ssl协议 ,下面指定ssl证书所在目录,就这样。
    配置OK了之后,测试发送邮件;
    测试能收到邮件就OK,说明发送没问题,至于具体会出现什么报错,可以根据报错的内容进行谷歌;
    我这里在发送邮件的时候会提示一个证书不信任的问题,因为不影响正常发送邮件,所以选择忽略;

    证书不信任的问题,需要进入存放证书的目录,执行

    cd  /root/.certs
    certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt
    最后显示
    Notice: Trust flag u is set automatically if the private key is present. 

     后面云主机实现方法      转载自笛声

    使用三种方式发送邮件

    • 命令行: mail -s "theme" addressee,回车后输入内容按Ctrl+D发送邮件.
    • 管道符: echo "mail main content" | mail -s "theme" addressee
    • 文件内容作为邮件内容: mail -s "theme" addressee < /tmp/t.txt

    thme是邮件标题,addressee收件人地址

    qq邮箱开启smtp

    163邮箱

     

  • 相关阅读:
    DDD:再谈:实体能否处于非法状态?
    EntityFramework:迁移工具入门
    技术人生:态度决定人生
    EntityFramework:EF Migrations Command Reference
    DDD:聊天笔记
    DCI:DCI学习总结
    DCI:The DCI Architecture: A New Vision of Object-Oriented Programming
    设计原则:消除Switch...Case的过程,可能有点过度设计了。
    .NET:动态代理的 “5 + 1” 模式
    Silverlight:《Pro Silverlight5》读书笔记 之 Dependency Properties And Routed Event
  • 原文地址:https://www.cnblogs.com/liutao97/p/8387244.html
Copyright © 2020-2023  润新知