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

1.安装mailx

1
yum  install  mailx -y

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

1
2
3
4
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配置文件中,在最后面输入以下内容:

1
2
3
4
5
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协议,那当然是要有证书的了,下面是获取证书的操作;

1
2
3
4
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<br><br>若需要qq的ssl  只需把第二条命令中的smtp.xxx.com:465  给替换了就行

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

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

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

1
2
3
4
5
6
7
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,说明发送没问题,至于具体会出现什么报错,可以根据报错的内容进行谷歌;
我这里在发送邮件的时候会提示一个证书不信任的问题,因为不影响正常发送邮件,所以选择忽略;

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

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

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

使用三种方式发送邮件

  • 命令行: 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邮箱

https://www.cnblogs.com/liutao97/p/8387244.html

centos7 利用mailx发送邮件的更多相关文章

  1. centos 利用mailx发送邮件

    这里就已163或者126邮箱为例!阿里云的25号端口好像发送不了,用465端口可以发送成功! 安装:yum install -y mailx 然后就是修改配置文件 set ssl-verify=ign ...

  2. java利用commons-email发送邮件并进行封装

    本例中利用commons-email发送邮件并进行封装,支持html内容和附件:Commons Email是Apache的Commons子项目下的一个邮件客户端组件,它是基于JavaMail的,大大简 ...

  3. linux利用sendmail发送邮件的方法

    Linux利用sendmail发送邮件, 方法1 安装sendmail即可使用, mail -s "test" user@sohu.com bin/mail会默认使用本地sendm ...

  4. CentOS7利用systemctl添加自定义系统服务【转】

    systemctl enable name.service 设置开机启 systemctl disable name.service 删除开机启动指令 systemctl list-units --t ...

  5. 利用JavaMail发送邮件:smtp.163.com

    一.利用JavaMail发送邮件案例: 1.maven项目结构: 2.先在pom.xml里边加入Javamail依赖,系统会根据坐标自动下载mail包(前提是配置好了maven): 3.配置email ...

  6. CentOS7利用docker安装MySQL5.7

    CentOS7利用docker安装MySQL5.7 前提条件 centos7 且内核版本高于3.10, 可通过以下命令查看内核版本 uname -r 利用yum 安装docker 安装一些必要的系统工 ...

  7. CentOS7利用yum缓存搭建本地源

    CentOS7利用yum缓存搭建本地源 环境说明 [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 ( ...

  8. ubuntu使用mailx利用SMTP发送邮件

    转载:http://www.blogjava.net/jasmine214--love/archive/2010/10/09/334102.htmlLinux下mail利用外部邮箱发送邮件的方法: 1 ...

  9. CentOS7配置mailx使用外部smtp服务器发送邮件

    转自huskiesir的博客: 发送邮件的两种方式: 1.连接现成的smtp服务器去发送(此方法比较简单,直接利用现有的smtp服务器比如qq.新浪.网易等邮箱,只需要直接配置mail.rc文件即可实 ...

随机推荐

  1. Vue 组件间的传值(通讯)

    组件之间的通讯分为三种 父给子传 子给父传 兄弟组件之间的通讯 1 父组件给子组件传值 子组件嵌套在父组件内部,父组件给子组件传递一个标识,在子组件内部用props接收,子组件在模板里可以通过{{}} ...

  2. 解决安装mysql-connector-odbc-5.3.2 错误1918……不能加载安装或转换器库……的BUG

    还是在虚拟机Windows Server 2003上安装mysql-connector-odbc-5.3.2,装着装着就报错了,大致是“错误1918……不能加载安装或转换器库……”,问我Retry,I ...

  3. 远程连接Linux相关操作

    1.远程连接的步骤 编译网卡配置文件,修改onboot参数 vi /etc/sysconfig/network-scripts/ifcfg-ens33进入命令之后将onboot改成onboot=yes ...

  4. ORM多表查询下

    一.多表查询 1.基于双下划线的跨表查询 Django 还提供了一种直观而高效的方式在查询(lookups)中表示关联关系,它能自动确认 SQL JOIN 联系.要做跨关系查询,就使用两个下划线来链接 ...

  5. AMROC可视化

    备注 通过修改Filetype来改变输出数据的类型. hdf2tab.sh转换全部数据文件 hdf2tab.sh -m多维数据 <!DOCTYPE html PUBLIC "-//W3 ...

  6. 【leetcode】912. Sort an Array

    题目如下: Given an array of integers nums, sort the array in ascending order. Example 1: Input: [5,2,3,1 ...

  7. Oracle RAC运维所遇问题记录二

    oracle12c RAC源端与Dataguard目标端实时同步,因业务需求需要在源端增加PDB 1. 源端添加PDB CREATE PLUGGABLE DATABASE kdlxpdb admin ...

  8. 108天南京银行完成不可能完成的新金融DevOps转型

    在2018云栖大会南京峰会企业研发云专场,由南京银行研发管理负责人吴攀带来了“云效助力新金融DevOps转型——南京银行实践之路”的主题分享.首先对南京银行的研发规模与成长做了介绍,对“鑫云+”的诞生 ...

  9. C#第一个程序Helloworld

  10. 未能加载文件或程序集 ICSharpCode.SharpZipLib

    Ui调用Webservice ,Webservice调用Bl BL中明明有那个dll文件 后来发现是webservice里面没有 在附加调试的时候,断点在bl层中