Linux系统使用第三方邮件客户端发送邮件

文章目录

    • 安装第三方邮件客户端(s-nail)
      • S-nail的简单介绍
      • 重要的特性差异
  • 配置邮件服务
    • 配置文件 (以QQ邮箱为例)
    • 获取QQ邮箱授权码
    • 获取QQ服务器证书
      • 使用 OpenSSL 获取 QQ 邮箱服务器的证书
      • 安装OpenSSL
      • 连接到 QQ 邮箱的 SMTP 服务器并下载证书
      • 保存证书
      • 验证证书
    • 配置s-nail使用获取到的证书
    • 测试发送
    • 自动化获取证书命令
  • certutil 证书管理工具的简单介绍

在 Linux 环境中,邮件的使用场景非常广泛,涉及到系统管理、监控报警、批量邮件、用户通知、错误报告等多种场景。通过灵活配置邮件传输代理(如 Postfix)、邮件客户端(如 S-nail)以及脚本工具,管理员和开发者可以实现高效的邮件通信和通知功能,确保系统的可靠运行和用户的实时沟通。

本篇主要介绍如何配置邮件客户端(以s-nail为例)

安装第三方邮件客户端(s-nail)

dnf install s-nail -y

S-nail的简单介绍

  • s-nailmailx 的增强版本之一。它在传统 mailx 的基础上加入了更多现代化的功能,使其更加适合复杂的电子邮件需求。
  • s-nail 的主要目的是增强 mailx 的功能,以支持现代电子邮件技术,如 IMAP、SMTP 身份验证、SSL/TLS 加密等。

重要的特性差异

  • IMAP 支持:传统的 mailx 主要处理本地邮件,而 s-nail 提供了对 IMAP 协议的支持,可以远程管理邮件。
  • SMTP 身份验证s-nail 支持直接通过 SMTP 服务器发送邮件,而不依赖本地 MTA。这对于需要通过外部邮件服务器(如 Gmail、Outlook)发送邮件的场景非常有用。
  • 加密支持s-nail 支持 SSL/TLS 连接,确保与邮件服务器之间的通信是加密的,传统的 mailx 在这方面支持有限。

配置邮件服务

配置文件 (以QQ邮箱为例)

vim /etc/s-nail.rc
#在该文件的末尾添加以下内容set from=xxxxxxxx@qq.com #指定邮件的发件人地址set smtp=smtps://smtp.qq.com:465 #设置 SMTP 服务器的地址和端口,根据情况选择正确的端口set smtp-auth-user=xxxxxxxx@qq.com #用于通过 QQ 邮箱的 SMTP 服务器发送邮件时进行身份验证set smtp-auth-password=XXXXXXXXXXXX #SMTP 认证的密码,注意这是QQ邮箱的授权码,而不是登陆密码,下文介绍如何获取QQ授权码set smtp-auth=login #指定 SMTP 的认证方式#以下内容时情况使用,部分邮箱(如163)不需要使用证书认证set ssl-verify=ignore #忽略 SSL/TLS 证书验证(不推荐长时间使用)set nss-config-dir=/root/.certs #指定 NSS(Network Security Services)证书数据库的路径

获取QQ邮箱授权码

在qq客户端程序(如浏览器中进入邮箱登录QQ邮箱->设置->账户)中通过设置开启imap/smtp服务,提供第三方程序账号的授权码

在这里插入图片描述

获取QQ服务器证书

使用 OpenSSL 获取 QQ 邮箱服务器的证书

安装OpenSSL

dnf install openssl

连接到 QQ 邮箱的 SMTP 服务器并下载证书

openssl s_client -connect smtp.qq.com:465 (可选-showcerts)#通常操作系统已经内置了根证书的信任库

保存证书

运行上述命令后,你会看到一段证书内容输出,类似于以下内容:

-----BEGIN CERTIFICATE-----
MII...
...
-----END CERTIFICATE-----

将从 -----BEGIN CERTIFICATE----------END CERTIFICATE----- 之间的部分复制并保存到一个文件中,(带上-showcerts后会返回完整的证书链,涉及到 SSL/TLS 通信的安全性依赖于分层的信任模型,本篇不做解释)通常操作系统已经内置了根证书的信任库,因此大多数情况只要保存第一段即可,或者不添加-showcerts

mkdir -p /root/.certs/
vim ~/.certs/qq_mail_cert.crt #将上述证书主体保存至文件中,如遇无法写入,请先确保所写路径的目录存在

验证证书

openssl x509 -in qq_mail_cert.crt -text -noout#如果保存正常,将会输出类似如下信息:Certificate:    Data:        Version: 3 (0x2)        Serial Number:08:73:88:0b:a8:11:ee:72:45:26:ab:43:91:16:f8:d3        Signature Algorithm: sha256WithRSAEncryptionIssuer: C = US, O = DigiCert Inc, CN = DigiCert Secure Site CN CA G3Validity            Not Before: Jul  2 00:00:00 2024 GMTNot After : Jul  2 23:59:59 2025 GMTSubject: C = CN, ST = Guangdong Province, L = Shenzhen, O = Shenzhen Tencent Computer Systems Company Limited, CN = *.mail.qq.comSubject Public Key Info:Public Key Algorithm: rsaEncryptionPublic-Key: (2048 bit)                Modulus:··· ···

配置s-nail使用获取到的证书

#创建一个专门的目录来存放证书,如 /root/.certs (根据系统的实际情况调整路径)mkdir -p /root/.certs
#将存放证书的文件移动到 /root/.certs 目录中mv qq_mail_cert.crt /root/.certs/

让我们回到配置文件的步骤,更新NSS路径

set nss-config-dir=/root/.certs #指定 NSS(Network Security Services)证书数据库的路径

测试发送

echo '邮件内容' | mail -s '邮件主题' xxxxxxxx@qq.com(收件人地址)

自动化获取证书命令

mkdir -p /root/.certs/
echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq_mail_cert.crt #获取证书并自动保存至~/.certs/qq_mail_cert.crt

certutil 证书管理工具的简单介绍

上文我们只讲了如何获取证书并保存为 .crt 文件,之后直接让 s-nail 或其他客户端使用这些证书路径,未涉及证书的进一步管理。

接下来我将简单介绍 certutil 工具:用于管理 NSS 证书库(处理 SSL/TLS 证书和加密操作),使用certutil将证书导入 NSS 证书库,应用程序(如 s-nail 或其他基于 NSS 的程序)可以在调用 NSS 库时自动使用这些证书进行加密通信,而不必直接指定 crt 文件的路径。从而够简化多个应用程序对这些证书的使用,增强管理灵活性。

#导入证书到 NSS 证书库:
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq_mail_cert.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq_mail_cert.crt
#这两条命令将 GeoTrust SSL CA 和 GeoTrust Global CA 证书导入 NSS 证书库中,并为其设置信任级别("C,," 表示用于 SSL 客户端认证)。-d 选项指定证书库的路径,-i 选项指定导入的证书文件。#查看 NSS 证书库中的证书:
certutil -L -d /root/.certs #列出 /root/.certs 目录下 NSS 证书库中的所有证书。#进一步导入特定的证书:
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq_mail_cert.crt
#这行命令将 GeoTrust SSL CA - G3 证书导入 NSS 证书库,并设置信任级别为 Pu,Pu,Pu(表示对 SSL 客户端和服务器均完全信任)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/2943.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

家常菜点餐|基于java和小程序的家庭大厨家常菜点餐系统设计与实现(源码+数据库+文档)

家常菜点餐系统 目录 基于java和小程序的家庭大厨家常菜系统设计与实现 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师&am…

利士策分享,青年暴富难守,因何在?

利士策分享,青年暴富难守,因何在? 在人生的长河中,有些人似乎被命运特别眷顾,在年轻之时便轻易地获得了财富。 然而,令人遗憾的是,这些早年得志、财富易得的人,往往难以长久地守住这份来之不…

Echarts环形图引线设置

直接上图吧 直接上代码吧 let labelArr [直接访问, 邮件营销, 联盟广告, 视频广告, 搜索引擎]; let valueArr [{ value: 335, name: 直接访问 },{ value: 310, name: 邮件营销 },{ value: 234, name: 联盟广告 },{ value: 135, name: 视频广告 },{ value: 154, name: 搜索引…

Java8->Java19的初步探索

导读 最近网上开始了大量的关于Java19的讨论,我也想着用了Java8这么久该接受一点新的东西了,于是便开始研究了起来 Java 19 Java19是一个免费版本。下面是JDK19的支持图 image.png (来源: https://www.bilibili.com/video/BV1V84…

软件设计师-上午题-15 计算机网络(5分)

计算机网络题号一般为66-70题,分值一般为5分。 目录 1 网络设备 1.1 真题 2 协议簇 2.1 真题 3 TCP和UDP 3.1 真题 4 SMTP和POP3 4.1 真题 5 ARP 5.1 真题 6 DHCP 6.1 真题 7 URL 7.1 真题 8 浏览器 8.1 真题 9 IP地址和子网掩码 9.1 真题 10 I…

nodejs批量修改word文档目录样式

工作中遇到一个需求:写个nodejs脚本,对word文档(1000+个)的目录页面进行美化。实现过程遇到不少麻烦,在此分享下。 整体思路 众所周知,Docx格式的Word文档其实是个以xml文件为主的zip压缩包,所以,页面美化整体思路是:先将文档后缀名改为zip并解压到本地,然后将关键的…

MathType在Word中的安装与配置记录

一、记录过程 1.MathType安装包下载 可直接下载本人已经安装过的安装包,亲测可以使用,下载链接如下: 链接:https://pan.baidu.com/s/1g-iOgKIqzSNz0E5rEUryug 提取码:1kb3 2.安装后配置 word中会出现mathtype的选项…

无人机之中继通信技术篇

一、定义与原理 无人机中继通信技术是指通过无人机搭载中继设备,将信号从一个地点传输到另一个地点,从而延长通信距离并保持较好的通信质量。其原理类似于传统的中继通信,即在两个终端站之间设置若干中继站,中继站将前站送来的信号…

轴流风机和后倾式风机的安装要求

后向离心风机风压大,风量足,安装方便。因为不需要蜗壳,所以风道往往需要自行设计,而风道的合理与否,大大影响了后向离心风机的效率。那么后向离心风机的安装技巧有哪些?怎样达到风机的最佳使用效果呢&#…

植物神经紊乱不用怕,这些维生素来帮你!

你是否经常感到身体疲惫、情绪波动大、心悸、胸闷?这可能是植物神经紊乱在作祟。别担心,通过合理的维生素补充,可以有效缓解症状,提升生活质量。今天,我们就来聊聊植物神经紊乱患者应该补充哪些维生素。 &#x1f50d…

使用C语言进行信号处理:从理论到实践的全面指南

1. 引言 在现代操作系统中,信号是一种进程间通信机制,它允许操作系统或其他进程向一个进程发送消息。信号可以用来通知进程发生了一些重要事件,如用户请求终止进程、硬件异常、定时器超时等。掌握信号处理技术对于开发健壮、高效的系统程序至…

LabVIEW配电产品精度测试系统

开发了一种基于LabVIEW平台的配电产品精度测试系统,通过自动化测试流程实现更高的测试准确性与效率。系统采用串口和TCP通信技术,与多功能交流采样变送器和配电设备无缝数据交互,提升了测试工作的可靠性和一致性。 一、项目背景 在配电产品…

基于JAVA SpringBoot和Vue社区网格化管理服务平台设计

摘要 本文旨在设计并实现一个基于Java SpringBoot和Vue技术的社区网格化管理服务平台。该平台主要包括用户功能和管理员功能两大部分,用户功能涵盖单位管理、问卷调查、论坛讨论、公告查看等;管理员功能则包括单位管理、基础数据维护、帖子和公告类型管…

鸢尾博客项目开源

1.博客介绍 鸢尾博客是一个基于Spring BootVue3 TypeScript ViteJavaFx的客户端和服务器端的博客系统。项目采用前端与后端分离,支持移动端自适应,配有完备的前台和后台管理功能。后端使用Sa-Token进行权限管理,支持动态菜单权限,服务健康…

IBinder源码分析

基础概念 binder 是 Android 中主要的跨进程通信方式,binder 驱动和 service manager 分别相当于网络协议中的路由器和 DNS,并基于 mmap 实现了 IPC 传输数据时只需一次拷贝。binder 包括 BinderProxy、BpBinder 等各种 Binder 实体,以及对 …

PDF Reader Pro for mac激活版 PDF编辑阅读器

PDF Reader Pro阅读器是一款用户必备的集管理、编辑、转换、阅读功能于一体的专业的全能PDF阅读专家。快速、易用、强大,让您出色完成 PDF 工作,深受全球9000万用户的喜爱。用户可轻松使用PDF Reader Pro进行文档阅读、编辑、注释、填写Form表单、转换、…

图像分割从基础到进阶:阈值化、K-means和Mean-Shift算法的应用

图像分割是计算机视觉中的一项关键技术,用来将图像划分为若干个 有意义 的区域,以便后续的图像处理和分析工作。根据任务的不同,图像分割可以进一步细分为语义分割、实例分割和全景分割: 语义分割 (Semantic Segmentation) 对图像…

生产消费者模型

线程同步 互斥锁(互斥量)条件变量生产/消费者模型 一、互斥锁 C11提供了四种互斥锁: mutex:互斥锁。timed_mutex:带超时机制的互斥锁。recursive_mutex:递归互斥锁。recursive_timed_mutex:带超时机制的递归互斥锁…

国标GB28181视频平台EasyCVR私有化视频平台工地防盗视频监控系统方案

一、方案背景 在当代建筑施工领域,安全监管和防盗监控是保障工程顺利进行和资产安全的关键措施。随着科技进步,传统的监控系统已不足以应对现代工地的安全挑战。因此,基于国标GB28181视频平台EasyCVR的工地防盗视频监控系统应运而生&#xf…

WindowsDocker安装到D盘,C盘太占用空间了。

Windows安装 Docker Desktop的时候,默认位置是安装在C盘,使用Docker下载的镜像文件也是保存在C盘,如果对Docker使用评率比较高的小伙伴,可能C盘空间,会被耗尽,有没有一种办法可以将Docker安装到其它磁盘,同时Docker的数据文件也保存在其他磁盘呢? 答案是有的,我们可以…