Linux上搭建邮件服务

news2024/12/28 18:28:44

欢迎来到我的博客,代码的世界里,每一行都是一个故事


在这里插入图片描述

🎏:你只管努力,剩下的交给时间

🏠 :小破站

Linux上搭建邮件服务

    • 前言
    • 电子邮件的工作原理和基本组成部分
      • 1. 电子邮件的工作原理
      • 2. 电子邮件的基本组成部分
      • Linux环境下邮件的传输路径和协议
        • 1. 邮件传输协议
        • 2. Linux环境下邮件的传输路径
        • 示例:从发送到接收的邮件路径
    • mailx简介
      • Mailx是什么?
      • Mailx的历史和发展
      • 为什么选择Mailx作为命令行邮件工具?
      • Mailx使用示例
        • 发送简单的邮件
        • 发送带附件的邮件
        • 从文件中读取邮件正文
        • 使用SMTP服务器发送邮件
    • 报错解决
    • 成功页面展示

前言

在当今数字化时代,电子邮件作为信息交流的重要方式,扮演着不可或缺的角色。而Linux作为一个开放源代码和高度可定制的操作系统,为我们提供了丰富的工具和选项来构建个性化的邮件服务。本文将带领读者进入Linux邮件服务的神秘世界,揭示其背后的技术原理和操作技巧,帮助您打造一个安全可靠的邮件传输平台。

电子邮件的工作原理和基本组成部分

1. 电子邮件的工作原理

电子邮件的发送和接收过程可以分为以下几个步骤:

  1. 邮件撰写和发送:

    • 用户在邮件客户端(如Outlook、Thunderbird、Webmail)中撰写邮件并点击发送。
    • 邮件客户端将邮件通过SMTP协议发送到邮件服务器(通常是发件人的邮件服务器)。
  2. 邮件传输:

    • 发件人的邮件服务器通过SMTP协议将邮件传递给收件人的邮件服务器。
    • 在这个过程中,邮件可能会经过多个中间服务器进行转发,直到到达收件人的邮件服务器。
  3. 邮件存储:

    • 收件人的邮件服务器接收到邮件后,将其存储在服务器上的用户邮箱中。
  4. 邮件接收和读取:

    • 收件人通过邮件客户端(或Webmail)使用IMAP或POP3协议从邮件服务器读取邮件。
    • IMAP协议允许邮件保存在服务器上,并在多个设备上同步。
    • POP3协议则通常将邮件下载到本地设备并从服务器上删除。

2. 电子邮件的基本组成部分

  1. 邮件头(Header):

    • From: 发件人的电子邮件地址。
    • To: 收件人的电子邮件地址。
    • Cc: 抄送的电子邮件地址。
    • Bcc: 密送的电子邮件地址。
    • Subject: 邮件主题。
    • Date: 发送日期和时间。
    • Message-ID: 唯一标识邮件的ID。
  2. 邮件正文(Body):

    • 纯文本部分(Plain Text): 邮件的文本内容。
    • HTML部分(可选): 使用HTML格式的邮件内容。
    • 附件(Attachments): 附加到邮件中的文件(如文档、图片等)。

Linux环境下邮件的传输路径和协议

1. 邮件传输协议
  1. SMTP(Simple Mail Transfer Protocol):

    • 用于在邮件客户端和邮件服务器之间、以及邮件服务器之间传输邮件。
    • 默认端口为25(非加密),465(SSL加密),和587(STARTTLS加密)。
    • 负责邮件的发送和转发。
  2. IMAP(Internet Message Access Protocol):

    • 用于邮件客户端从邮件服务器读取邮件,支持在多个设备间同步邮件。
    • 默认端口为143(非加密)和993(SSL加密)。
    • 允许邮件在服务器上保留,并在客户端上进行组织和管理。
  3. POP3(Post Office Protocol version 3):

    • 用于邮件客户端从邮件服务器下载邮件,默认下载后删除服务器上的邮件(但可以配置为保留)。
    • 默认端口为110(非加密)和995(SSL加密)。
    • 适用于不需要在多个设备间同步的场景。
2. Linux环境下邮件的传输路径
  1. 邮件客户端(MUA - Mail User Agent):

    • 用户使用的邮件客户端,例如Thunderbird、Evolution、mutt等。
    • 负责邮件的撰写、发送和接收。
  2. 邮件传输代理(MTA - Mail Transfer Agent):

    • 负责邮件的传输和中继,例如Postfix、Sendmail、Exim等。
    • 接收来自MUA的邮件,通过SMTP协议转发到目标邮件服务器。
  3. 邮件投递代理(MDA - Mail Delivery Agent):

    • 负责将邮件从MTA投递到本地用户的邮箱,例如Procmail、Dovecot等。
    • 将邮件存储在服务器上的用户邮箱中。
  4. 邮件访问代理(MAA - Mail Access Agent):

    • 负责处理IMAP或POP3协议的请求,例如Dovecot、Courier等。
    • 允许用户通过IMAP或POP3协议访问其邮件。
示例:从发送到接收的邮件路径
  1. 发送邮件:

    • 用户在邮件客户端中撰写邮件并点击发送。
    • 邮件客户端使用SMTP协议将邮件发送到本地邮件服务器(MTA,如Postfix)。
    • 本地邮件服务器通过SMTP协议将邮件发送到收件人的邮件服务器。
  2. 接收邮件:

    • 收件人的邮件服务器接收到邮件,并将其存储在用户邮箱中。
    • 收件人使用邮件客户端,通过IMAP或POP3协议从邮件服务器读取邮件。

通过上述过程和协议的协作,电子邮件系统能够高效地发送、转发和接收邮件,确保邮件在互联网上可靠传输。

mailx简介

Mailx是什么?

Mailx 是一个命令行邮件工具,主要用于在 Unix 和类 Unix 系统(如 Linux 和 BSD)上发送和接收电子邮件。它是传统 mail 命令的增强版,提供了更多的功能和更灵活的操作。

Mailx的历史和发展

  1. 起源:

    • mail: 最初的 mail 程序诞生于 1970 年代,用于 Unix 系统,提供了基本的电子邮件功能。最早的 mail 程序由 Ray Tomlinson 开发,是第一个用于发送电子邮件的程序。
  2. BSD mail:

    • mail 的基础上,BSD 系统开发了 BSD mail,增加了一些新功能和改进。
  3. Mailx:

    • MailxBSD mail 的增强版,由 Eric Allman 等人开发。Mailx 扩展了 mail 的功能,增加了对 MIME(多用途互联网邮件扩展)和更复杂邮件管理操作的支持。
    • 后来,POSIX 标准化了 mailx 的功能,使其在各种 Unix 系统上更加统一和一致。
  4. 现代版本:

    • Heirloom mailx:一个现代化的 mailx 实现,支持更多的协议(如 SMTP, IMAP, POP3)和特性(如 SSL/TLS 加密)。
    • s-nail:是 Heirloom mailx 的一个分支,继续增加功能和改进。

为什么选择Mailx作为命令行邮件工具?

  1. 轻量级和高效:

    • Mailx 是一个轻量级工具,适合在资源有限的环境中使用,特别是在服务器上执行自动化任务时。
  2. 脚本友好:

    • Mailx 非常适合在脚本中使用,能够方便地发送邮件通知、警报和报告。
  3. 丰富的功能:

    • 支持发送和接收邮件。
    • 支持 MIME 格式邮件,可以发送带附件的邮件。
    • 支持多种协议(SMTP, IMAP, POP3)。
    • 支持加密(SSL/TLS),确保邮件的安全传输。
  4. 广泛兼容性:

    • Mailx 遵循 POSIX 标准,在各种 Unix 和类 Unix 系统上都可以使用,提供一致的用户体验。
  5. 灵活的配置:

    • 允许用户通过配置文件(如 .mailrc)进行自定义设置,支持别名、邮件签名和自动化操作。
  6. 交互式和非交互式模式:

    • 既可以用于交互式操作,也可以在脚本和自动化任务中以非交互式模式运行。

Mailx使用示例

发送简单的邮件
echo "邮件正文内容" | mailx -s "邮件主题" recipient@example.com
发送带附件的邮件
echo "邮件正文内容" | mailx -s "邮件主题" -a /path/to/attachment recipient@example.com
从文件中读取邮件正文
mailx -s "邮件主题" recipient@example.com < /path/to/email_body.txt
使用SMTP服务器发送邮件

编辑配置文件 .mailrc,添加 SMTP 设置:

set smtp=smtp://smtp.example.com:587
set smtp-auth-user=your-email@example.com
set smtp-auth-password=your-password
set ssl-verify=ignore

然后发送邮件:

echo "邮件正文内容" | mailx -s "邮件主题" recipient@example.com

报错解决

smtp-server: 535 Login Fail. Please enter your authorization code to login

出现这个错误主要是你没有配置,或者配置错误。

1、登录QQ邮箱,进入到如下页面

未命名 10

2、点击上面的生成授权码,将生成的授权码写入到.mailrc配置文件中

smtp-server: 501 Mail from address must be same as authorization user.

这个错误提示表明在使用 QQ 邮箱的 SMTP 服务器发送邮件时,发件人地址(Mail from address)必须与 SMTP 认证的用户(authorization user)地址相同。这是 QQ 邮箱 SMTP 服务器的安全策略之一。

使用-r 你的邮箱指定发件邮箱

成功页面展示

image-20240624162232690

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

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

相关文章

imx6ull/linux应用编程学习(7)在LCD上显示文字

在linux中&#xff0c;确实可以像裸机一样自己取模、自己写函数打点显示&#xff0c;但是效率很低&#xff0c;不能满足多文字显示&#xff0c;在Linux 系统中&#xff0c; 字体文件通常会放在/usr/share/fonts 目录下&#xff0c;有了字体文件之后&#xff0c;我们就不需要再对…

手把手edusrc漏洞挖掘和github信息收集

0x1 前言 这里主要还是介绍下新手入门edusrc漏洞挖掘以及在漏洞挖掘的过程中信息收集的部分哈&#xff01;&#xff08;主要给小白看的&#xff0c;大佬就当看个热闹了&#xff09;下面的话我将以好几个不同的方式来给大家介绍下edusrc入门的漏洞挖掘手法以及利用github信息收…

【sqlite3】联系人管理系统

SQLite3实现简单的联系人管理系统 有关sqlite3的基础知识请点击&#xff1a;SQLite3的使用 效果展示&#xff1a; 创建一个名为contacts.db的数据库 首先&#xff0c;我们需要创建一个名为contacts.db的数据库&#xff0c;并建立一个名为"contact"的表&#xff0…

20.《C语言》——【移位操作符】

&#x1f339;开场语 亲爱的读者&#xff0c;大家好&#xff01;我是一名正在学习编程的高校生。在这个博客里&#xff0c;我将和大家一起探讨编程技巧、分享实用工具&#xff0c;并交流学习心得。希望通过我的博客&#xff0c;你能学到有用的知识&#xff0c;提高自己的技能&a…

八大催化剂,花旗为何高调看涨港股?

港股三大指数今日迎来快速拉升行情&#xff0c;恒生科技指数午间一度大幅上涨2.51%&#xff0c;恒指、国指分别上涨1.18%及1.22%&#xff0c;恒指一度收复万八关口。截止收盘&#xff0c;恒生仍然保持1.18%左右的涨幅。 7月2日&#xff0c;据恒生指数公司消息&#xff0c;恒生…

Docker加速器配置指南:提升镜像下载速度的秘诀 加速安装Mysql Redis ES

在安装 Docker 镜像时&#xff0c;由于官方镜像下载速度较慢&#xff0c;我们可以使用阿里云的镜像加速器来提升下载速度。 使用阿里云镜像加速器 首先&#xff0c;找到并配置阿里云的镜像加速器。安装教程如下&#xff1a; 登录阿里云&#xff0c;进入容器镜像服务。直达链…

VSCode里python代码不扩展/级联了的解决办法

如图 解决办法&#xff1a;重新下载新的扩展工具 步骤如下 1、在左边工具栏打开Extensions 2、搜索框输入python&#xff0c;选择别的扩展工具&#xff0c;点击Install - 3在扩展工具所在的目录下&#xff0c;新建一个文件&#xff0c;就可以用了

地理信息科学:生态保护的智慧经纬

在地球这颗蓝色星球上&#xff0c;每一片森林的呼吸、每一条河流的流淌&#xff0c;都是生命交响曲中不可或缺的音符。而地理信息科学&#xff08;GIS&#xff09;&#xff0c;正是我们手中解读自然密码、护航生态平衡的精密仪器。今天&#xff0c;让我们深入探讨GIS如何在生物…

蒙阴蜜桃节:北纬 35 度的甜蜜盛宴

蒙阴&#xff0c;这座位于北纬 35 度黄金水果带的魅力之城&#xff0c;凭借着沙壤土、长日照、大温差、好生态的天然禀赋&#xff0c;孕育出了令人陶醉的“蒙阴蜜桃——北纬 35 度的甜”。 7月2日—3日&#xff0c;主题为“蒙阴好丰景 桃香产业兴”的国家鲁中山区桃产业集群项目…

Atom CMS v2.0 SQL 注入漏洞(CVE-2022-25488)

前言 CVE-2022-25488 是一个发现于 Telesquare SDT-CW3B1 设备中的命令注入漏洞。这一漏洞可以被未经认证的远程攻击者利用&#xff0c;通过特殊构造的 HTTP 请求在设备上执行任意命令。以下是关于该漏洞的详细信息&#xff1a; 漏洞详细信息 漏洞编号: CVE-2022-25488影响范…

V-bind指令配合图片轮播案例

我们先写个图片&#xff0c;这个图片是静态的&#xff0c;不会轮播改变。但有时图片是动态的&#xff0c;要通过一些程序对它进行动态改变&#xff0c;这时就需要V-bind来进行绑定&#xff0c;先放个图片进去&#xff0c;代码如下&#xff1a; <template><view>&l…

智驾追平、销量复活,蔚来又有未来了?

文&#xff5c;刘俊宏 编&#xff5c;王一粟 六月&#xff0c;是智能汽车集体“狂欢”的月份。 根据最新的汽车销量显示&#xff0c;多家智能汽车厂商“开起了香槟”。理想汽车和鸿蒙智行分列“榜一榜二”&#xff0c;两者分别以47774辆和46141辆的成绩&#xff0c;“咬的难…

探索Linux:开源世界的无限可能

Linux是一款开源操作系统&#xff0c;它的起源可以追溯到上世纪90年代初。这个故事始于一个名叫Linus Torvalds的芬兰大学生&#xff0c;他在1983年开始编写一个用于个人电脑的操作系统内核。在他的努力下&#xff0c;Linux逐渐发展成为一个稳定而强大的操作系统。 然而&#…

预测未来 | Matlab实现HMM隐马尔科夫时间序列预测未来

预测未来 | Matlab实现HMM隐马尔科夫时间序列预测未来 目录 预测未来 | Matlab实现HMM隐马尔科夫时间序列预测未来效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.预测未来 | Matlab实现HMM隐马尔科夫时间序列预测未来 2.运行环境为Matlab2023b及以上&#xff1b; 3…

安卓手机软件自动运行插件的开发流程及代码科普!

随着智能手机的普及和移动互联网的快速发展&#xff0c;安卓手机软件的需求日益旺盛&#xff0c;为了提高软件的功能性和扩展性&#xff0c;许多开发者选择通过插件的方式为软件添加新功能。 一、安卓手机软件自动运行插件的开发流程 1、明确需求与目标 在开发安卓手机自动运…

炎黄数智人:万科集团——智能催收专员‘崔筱盼’,引领财务管理数字化转型

在数字化时代的浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;技术的飞速发展正深刻改变着商业世界的面貌。万科集团&#xff0c;作为中国房地产行业的翘楚&#xff0c;一直致力于探索和实践最前沿的科技创新。此次&#xff0c;万科集团推出的数字员工“崔筱盼”&#…

pytorch、pytorch_lightning、torchmetrics版本对应

目录 1.pytorch_lightning对应版本安装 2.PyTorch Lightning介绍 PyTorch Lightning 的作用&#xff1a; PyTorch Lightning 的基本用法&#xff1a; 报错&#xff1a;ModuleNotFoundError: No module named pytorch_lightning 这种报错一看就是缺了pytorch_lightning包&am…

idea使用maven打包报错GBK不可映射字符,错误: 编码GBK的不可映射字符

方法一&#xff1a;设置环境变量 打开“控制面板” > “系统和安全” > “系统”。点击“高级系统设置”。在“系统属性”窗口中&#xff0c;点击“环境变量”。在“系统变量”部分&#xff0c;点击“新建”&#xff0c;创建一个新的变量&#xff1a; 变量名&#xff1a;…

网工内推 | 高级信息安全工程师,上市公司,CISP认证优先

01 奔图电子 &#x1f537;招聘岗位&#xff1a;高级信息安全工程师 &#x1f537;岗位职责&#xff1a; 1、建立和完善研发信息安全管理体系、流程&#xff0c;监督和客观评价研发信息安全管理与风险内部控制情况 2、负责研发信息安全项目的实施和监督&#xff0c;包括安全检…