linux系统CentOS发送邮件

很多时候我们需要在服务器上发送邮件,如定时发送网站日志,或者服务器信息状态,通过服务器触发自动发送邮件来达到定时或者及时通知到开发者。今天来讲一下如何在centos系统中配置邮件发送功能,其它的系统版本同样的操作方法

  • 系统环境:系统为CentOS7,
  • 使用软件:mailx 和 sendmail
  • 邮箱:163邮箱

1、注册邮箱

centos发送邮件

这边以163邮箱为例,注册一个163邮箱,进入设置页面如上图所示。开启IMAP/SMTP服务,并创建一个授权码,授权码是一串字母,记录保存好,一旦创建页面关闭就无法在查看,只能重新创建。这里以163邮箱为例子,其它的邮箱服务商也是同样的操作操作方法。

2、安装 mailx和sendmail

plaintext
1
                    yum -y install sendmail mailx
               

3、配置邮箱证书

由于会使用邮箱的ssl端口发送邮件,所以就需要配置邮箱的证书,这边以163邮箱证书配置为例,如果需要使用其它邮箱的基本也差不多的操作。

plaintext
1
2
3
4
5
6
7
8
                    ## 以下命令,一行一行执行即可
mkdir -p /root/.certs/
echo -n | openssl s_client -connect smtp.163.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/163.crt
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt
certutil -L -d /root/.certs
cd /root/.certs/
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i 163.crt               

4、配置mailx

找到系统根目录下的文件

plaintext
1
2
3
4
5
6
7
                    set from=seoddcn@163.com    #可以随便填,为了不报错建议填写你刚才注册的163邮箱号,
set smtp=smtps://smtp.163.com:465    #此行请勿更改
set smtp-auth-user=xxx@163.com       #填写你刚才注册的163邮箱号,
set smtp-auth-password=xxx           #填写你刚才申请的授权码
set smtp-auth=login                  #此行请勿更改
set nss-config-dir=/root/.certs/     #此行请勿更改
set ssl-verify=ignore
  • from:对方收到邮件时显示的发件人
  • smtp:指定第三方发邮件的smtp服务器地址
  • set smtp-auth-user:第三方发邮件的用户名
  • set smtp-auth-password:用户名对应的密码,有些邮箱填的是授权码
  • smtp-auth:SMTP的认证方式,默认是login,也可以改成CRAM-MD5或PLAIN方式
    到了这一步服务器发送邮件的功能基本就已经实现了,然后就可以根据自己的需求来使用,这边已定时附送服务器日志文件为例子演示。实现方式以shell脚本控制邮件发送逻辑,搭配linux系统的crontab定时器来实现。

5、创建shell脚本

假设日志文件的路径是“/home/www/log/seodd_log.txt
在服务器“/home/www/sh”目录下创建脚本文件seodd.sh,并将一下代码添加到到此脚本文件

plaintext
1
2
3
4
5
6
7
8
                    #!/bin/sh
# 快速发送
echo "邮件的内容" | mail -s "邮件主题" 收件人@qq.com

# 将日志文件内容作为邮件的内容进行发送
cat /home/www/log/seodd_log.txt|mail -s '邮件主题' 收件人@qq.com
# 将日志文件内容作为附件发送,加参数(-a 附件地址)
echo "邮件正文内容" | mail -s "邮件主题" -a /home/www/log/seodd_log.txt  收件人@qq.com

上面是常用的三种邮件内容发送形式,假设我们使用附件的形式发送,那么前面的代码可以注释掉,或者删除,但是第一行勿动;然后邮件内容,文件地址路径及发件人邮箱修改成你需要的即可,如果需要实现更复杂功能就可以研究下shell脚本编程。

6、创建定时器

plaintext
1
2
3
4
5
6
                    # 切换到服务器根目录
cd /
# 打开crontab定时器
crontab -e
依次执行上述命令就进入到了crontab文件的编辑状态,相当于linux的vi编辑,输入内容前先敲击键盘i键
59 23 * * * /home/www/sh/seodd.sh               

添加上述这行代码,代表每日的凌晨执行seodd.sh这个邮件发送shell脚本,就可以实现定时邮件发送功能,在需要达到这个效果还有几步操作。
售前推出crontab文件的编辑模式,敲击键盘Ecs建,然后输入 :wq ,按下回车代表保存成功,参考vi编辑即可。

7、重启crontab服务

plaintext
1
                    service crond restart               

crontab服务重启成功之后,以上的定时发送服务器日志邮件的功能就可以实现了,大家可以灵活使用shell脚本和crontab定时器就可以实现满足各种需求了。

申明:本站内容仅代表个人观点,仅供学习参考;未经授权任何个人或组织单位不得复制、转载、摘编以及其它形式的应用!

本站文章可能使用到互联网上的资料,若对您造成困扰,请联系 kk19@foxmail.com除理

本文地址:https://www.chateach.com/it/huanjing/840

相关文章

  • vue 如何监听滚动至底部

    vue触底监听

    vue如何实现触底判断,实现无限加载等功能。当我们需要实现无限加载的时候,即实现瀑布流的功能的时候,核心就是监听页面的滚动事件,当滚动触底的时候去请求加载数据,既可以实现无限加载下拉。

    用于表示时间的图标 一个时钟的图标,用于向用户表达后面跟着的是一个时间
    用于表示阅读次数的图标 一个类似睁开眼睛的图标,用于向用户表达后面跟着的数字是一个阅读的次数 1682
    • vue触底监听
  • Spring Boot 如何解决跨域问题

    SpringBoot跨域

    SpringBoot 如何解决跨域问题方法,CORS全称Cross-Origin Resource Sharing,意为跨域资源共享。当一个资源去访问另一个不同域名或者同域名不同端口的资源时,就会发出跨域请求。如果此时另一个资源不允许其进行跨域资源访问,那么访问的那个资源就会遇到跨域问题。

    用于表示时间的图标 一个时钟的图标,用于向用户表达后面跟着的是一个时间
    用于表示阅读次数的图标 一个类似睁开眼睛的图标,用于向用户表达后面跟着的数字是一个阅读的次数 1079
    • SpringBoot跨域
  • 页面资源加载真实进度条的详细教程

    进度条,资源加载

    分享一个基于原生javascript语法不需要任何插件来实现进度条的真实加载,按照加载资源数量的控制进度条的变化,可以实现只要网站每加载完成一个资源进度条同步变化。给站点一个真实的进度条对于用户体验还是非常友好的,一个真实的进度条可以一定程度上可以增加用户继续等待的机率。

    用于表示时间的图标 一个时钟的图标,用于向用户表达后面跟着的是一个时间
    用于表示阅读次数的图标 一个类似睁开眼睛的图标,用于向用户表达后面跟着的数字是一个阅读的次数 2317
    • 进度条
    • 资源加载
  • Vue中基于$event实现click事件获取html元素和css样式

    click事件,$event

    Vue中实现单击click事件获取html元素和css样式的解决方法,$event是一个对象 $event是指当前触发的是什么事件(鼠标事件,键盘事件等) $event.target则指的是事件触发的目标,即哪一个元素触发了事件,这将直接获取该dom元素。

    用于表示时间的图标 一个时钟的图标,用于向用户表达后面跟着的是一个时间
    用于表示阅读次数的图标 一个类似睁开眼睛的图标,用于向用户表达后面跟着的数字是一个阅读的次数 1271
    • click事件
    • $event
  • js防抖原理及其实现

    js防抖

    js防抖原理及其实现,在前端中有一些事件会频繁的触发容易造成页面卡顿,例如:window 的 resize、scroll、mousedown、mousemove、keyup、keydown等事件。js抖动的原因:短的时间内多次连续触发事件,首先会十分影响性能,同时大量运行结果被集中输出,结果之间不规律的冲突变化导致页面抖动。

    用于表示时间的图标 一个时钟的图标,用于向用户表达后面跟着的是一个时间
    用于表示阅读次数的图标 一个类似睁开眼睛的图标,用于向用户表达后面跟着的数字是一个阅读的次数 1622
    • js防抖
  • php将多维数组根据某个键倒序/升序

    多维数组排序

    php将多维数组根据某个键倒序/升序,一维数组可以用一个简单的krsort() 函数进行升序排列,或者使用 arsort() 函数进行降序排列 。但是如何是多维数组那么情况就会复杂很多,没有可以直接实现多维数组按照某个键值进行排序的函数。

    用于表示时间的图标 一个时钟的图标,用于向用户表达后面跟着的是一个时间
    用于表示阅读次数的图标 一个类似睁开眼睛的图标,用于向用户表达后面跟着的数字是一个阅读的次数 2468
    • 多维数组排序
  • php时间增减操作

    时间删减

    php时间增减操作,如何获取当前时间加减几个小时、几个星期、几个月。如何时间快速简单的对时间的一个计算呢?

    用于表示时间的图标 一个时钟的图标,用于向用户表达后面跟着的是一个时间
    用于表示阅读次数的图标 一个类似睁开眼睛的图标,用于向用户表达后面跟着的数字是一个阅读的次数 1555
    • 时间删减
  • springboot网站搭建部署详细流程

    springboot

    linux环境如何搭建java框架springboot,为大家演示一种快速简单的搭建springboot的方法。由于springboot是java的众多框架之一,因此需要部署好java的运行环境,即服务器安装好jdk18以及tomcat3,注意版本的兼容性。

    用于表示时间的图标 一个时钟的图标,用于向用户表达后面跟着的是一个时间
    用于表示阅读次数的图标 一个类似睁开眼睛的图标,用于向用户表达后面跟着的数字是一个阅读的次数 1607
    • springboot
  • JS中的indexOf方法

    indexOf

    indexOf()是js中内置的方法之一,它的功能大家都很熟悉:简单来说就是得到数据的索引,对于正则不熟练的人,是个很不错的方法。string中indexOf() 会将数值参数转换为字符再查询索引;number类型没有IndexOf() 可以转换为字符再使用;array中indexOf() 是严格比较

    用于表示时间的图标 一个时钟的图标,用于向用户表达后面跟着的是一个时间
    用于表示阅读次数的图标 一个类似睁开眼睛的图标,用于向用户表达后面跟着的数字是一个阅读的次数 1019
    • indexOf
  • Laravel Module开发包安装方法

    Laravel Module

    linux环境下通过composer安装Laravel 模块化laravel-modules包,实现laravel 的模块管理器。

    用于表示时间的图标 一个时钟的图标,用于向用户表达后面跟着的是一个时间
    用于表示阅读次数的图标 一个类似睁开眼睛的图标,用于向用户表达后面跟着的数字是一个阅读的次数 1823
    • Laravel Module
  • php获取当前时间操作

    php获取时间

    在PHP语言中我们如何获取当前时间呢?只要通过date()和time()函数组合使用实现。

    用于表示时间的图标 一个时钟的图标,用于向用户表达后面跟着的是一个时间
    用于表示阅读次数的图标 一个类似睁开眼睛的图标,用于向用户表达后面跟着的数字是一个阅读的次数 1599
    • php获取时间
  • 什么是css语言

    什么是css

    CSS全称为Cascading Style Sheets(层叠样式表),中文翻译为“层叠样式表”,简称CSS样式表。它是一种用来表现HTML或 XML 等文件式样的计算机语言。

    用于表示时间的图标 一个时钟的图标,用于向用户表达后面跟着的是一个时间
    用于表示阅读次数的图标 一个类似睁开眼睛的图标,用于向用户表达后面跟着的数字是一个阅读的次数 1367
    • 什么是css
  • 如何解决Vue中mounted不能获取到data

    mounted获取data

    Vue中使用mounted时,无法获取到data的原因是,this无法指向data中的数据。在mounted生命周期中this指向的是window对象而不是Vue对象,所以真正找的是window对象下的data,但是window下没有data,所以就报错了。

    用于表示时间的图标 一个时钟的图标,用于向用户表达后面跟着的是一个时间
    用于表示阅读次数的图标 一个类似睁开眼睛的图标,用于向用户表达后面跟着的数字是一个阅读的次数 2053
    • mounted获取data
  • Laravel的简介及其安装方法

    Laravel安装方法

    linux下使用composer的方式安装laravel 9.x版本的方法,及laravel的简介,Laravel是一套简洁、优雅的PHP Web开发框架,它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。具有了一套高级的PHP ActiveRecord实现 -- Eloquent ORM。

    用于表示时间的图标 一个时钟的图标,用于向用户表达后面跟着的是一个时间
    用于表示阅读次数的图标 一个类似睁开眼睛的图标,用于向用户表达后面跟着的数字是一个阅读的次数 1399
    • Laravel安装方法
  • php简介

    什么是php

    PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习

    用于表示时间的图标 一个时钟的图标,用于向用户表达后面跟着的是一个时间
    用于表示阅读次数的图标 一个类似睁开眼睛的图标,用于向用户表达后面跟着的数字是一个阅读的次数 1607
    • 什么是php
  • JavaScript == 与 === 区别

    == 与 === 区别

    js中==和===的区别 ==和===的区别和一些比较规则: == 在比较类型不同的变量时,会进行数据类型转化,将二者转换成数据类型相同的变量,再进行比较。对于 string、number 等基础类型,== 和 === 是有区别的 a)不同类型间比较,== 之比较 "转化成同一类型后的值" 看 "值" 是否相等,=== 如果类型不同,其结果就是不等。

    用于表示时间的图标 一个时钟的图标,用于向用户表达后面跟着的是一个时间
    用于表示阅读次数的图标 一个类似睁开眼睛的图标,用于向用户表达后面跟着的数字是一个阅读的次数 1133
    • == 与 === 区别
  • lnmp环境简介

    lnmp环境简介

    LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python。

    用于表示时间的图标 一个时钟的图标,用于向用户表达后面跟着的是一个时间
    用于表示阅读次数的图标 一个类似睁开眼睛的图标,用于向用户表达后面跟着的数字是一个阅读的次数 1618
    • lnmp环境简介
  • Laravel邮件发送功能的实现例子

    Laravel邮件发送

    Laravel如何发送邮件呢?Laravel邮件发送功能的实现例子,从邮箱注册配置到,laravel邮件参数配置,提供纯文本邮件和富文本邮件发送两种邮件发送实例。

    用于表示时间的图标 一个时钟的图标,用于向用户表达后面跟着的是一个时间
    用于表示阅读次数的图标 一个类似睁开眼睛的图标,用于向用户表达后面跟着的数字是一个阅读的次数 1949
    • Laravel邮件发送