Apache James邮件服务器搭建(linux)

news2025/1/11 21:51:35

1、配置jdk,此处不再赘述,随便搜一下然后照着操作即可

注意:后续james的版本是3.5.0,需要与jdk8配套

2、下载apache james ,apacheJames 下载之后可以直接运行,无需安装

注意:此处选择3.5.0版本,因为更高版本与jdk8不配套

Index of /dist/james/server/3.5.0

2、下载foxmail,用于后续进行测试

Foxmail for Mac

3、安装foxmail

双击前一步下载的foxmail包,傻瓜式下一步安装即可

搭建ApacheJames邮件服务器

1、修改 mailetcontainer.xml,修改postmaster的值为postmaster@st.com

注意:下述@st.com为自定义的邮件域名,与@163.com类似

<context>

    <!-- When the domain part of the postmaster mailAddress is missing, the default domain is appended.

    You can configure it to (for example) <postmaster>postmaster@myDomain.com</postmaster> -->

    <postmaster>postmaster@st.com</postmaster>

</context>

2、修改 smtpserver.xml

将authRequired、verifyIdentity值配置为false

将helloName配置为st.com。注意与步骤1中保持一致

<authRequired>true</authRequired>

<verifyIdentity>true</verifyIdentity>

<helloName autodetect="true">st.com</helloName>

3、修改 domainlist.xml

将autodetect、autodetectIP的值配置为false

将defaultDomain配置为st.com。注意与步骤1中保持一致

<domainlist class="org.apache.james.domainlist.jpa.JPADomainList">

   <autodetect>false</autodetect>

   <autodetectIP>false</autodetectIP>

   <defaultDomain>st.com</defaultDomain>

</domainlist>

4、启动james

进入james-server-app-3.5.0/bin目录中,windows执行run.bat,linux执行sh run.sh

注意:windows中先打开dos窗口,然后再执行run.bat,直接在界面双击run.bat文件执行,会启动失败

5、创建域名

进入james-server-app-3.5.0/bin目录中

james-cli.bat -h localhost -p 9999 adddomain st.com

6、创建用户

进入james-server-app-3.5.0/bin目录中,执行如下命令,分别创建两个用户 steven@st.com(密码:123456)、russell@st.com(密码:123456)

james-cli.bat -h localhost -p 9999 adduser steven@st.com 123456

james-cli.bat -h localhost -p 9999 adduser russell@st.com 123456

7、 使用foxmail 连接james mail

此时james服务器已经启动并且可以使用了,打开foxmail,创建两个用户steven@st.com、russell@st.com,注意密码和前面创建用户的信息对应

 

 

8、发送邮件

9、接收邮件,注意:若是邮件接收不及时,可以手动点击左上角的收取按钮,即可接收到最新的邮件

 开启james的ssl

1、从jre/lib/ext中拷贝sunjce_provider.jar到james-server-app-3.5.0/lib

2、在james-server-app-3.5.0/conf下生成keystore,直接在james-server-app-3.5.0/conf下执行keytool命令,后续就不用重新将keystore文件移动了

keytool -genkey -alias james -keyalg RSA -keystore keystore

 注意:

  • 生成keystore的口令别忘了,后续配置会用到
  • 名字与姓氏时输入之前的域名st.com
  • 后续的步骤可以直接回车跳过

3、修改smtpserver.xml

修改25端口为465

<bind>0.0.0.0:465</bind>

修改tls标签的属性socketTLS=true,修改secret的值为创建证书时的口令密码

     <tls socketTLS="true" startTLS="false">

       <!-- To create a new keystore execute:

        keytool -genkey -alias james -keyalg RSA -keystore /path/to/james/conf/keystore

         -->

       <keystore>file://conf/keystore</keystore>

       <secret>123456</secret>

       <provider>org.bouncycastle.jce.provider.BouncyCastleProvider</provider>

       <!-- The algorithm is optional and only needs to be specified when using something other

        than the Sun JCE provider - You could use IbmX509 with IBM Java runtime. -->

       <algorithm>SunX509</algorithm>

     </tls>

4、重启james-mail

进入james-server-app-3.5.0/bin目录中,windows执行run.bat,linux执行sh run.sh

注意:windows中先打开dos窗口,然后再执行run.bat,直接在界面双击run.bat文件执行,会启动失败

5、修改foxmail中的配置,将账户的服务器配置为465,并且点击应用

  6、进行邮件发送和接收进行验证,此处不再赘述,与前面未开启ssl时的操作一致

使用curl命令发送邮件

1、按照如下格式,创建文件 /root/email.txt

From: 发件人名称 <发件人邮箱地址>

To: 收件人名称 <收件人邮箱地址>

Subject: 邮件标题

// 注意空一行

邮件内容.

样例如下:

From: steven <steven@st.com>

To: russell <russell@st.com>

Subject: an st.com example email

测试邮件内容,steven ==> russell.

2、执行curl命令

注意:

  • 协议为:smtps
  • 发送邮件内容为步骤1创建的文件
  • --user中指定的是发件人邮箱地址和密码,用冒号分隔

curl -ikv --url 'smtps://192.168.133.135:465' --mail-from 'steven@st.com' --mail-rcpt 'russell@st.com' --upload-file /root/email.txt --user 'steven@st.com:123456'

 

3、查看发送的邮件

 

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

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

相关文章

人工智能数据集处理——数据清理1

目录 一、概述 二、缺失值 1、检测缺失值 使用isna() 方法检测na_df中是否存在缺失值 使用natna() 方法 2、缺失值的处理 (1) 删除缺失值 使用删除dropna() 方法删除na_df 对象中缺失值所在的一行数据 删除全为缺失值的行 删除有缺失值的行 (2) 填充缺失值 使用fill…

win10 下搭建hadoop(成功截图)

背景&#xff1a; 搭建hadoop是大数据的启蒙第一步&#xff0c;对初学者有很好的信心建设&#xff0c;建议安装版本和作者一样。话不多说&#xff0c;开始正文。 1. 下载hadoop 本文版本为3.0.0 可以Apache.org官网下载&#xff0c;也可以本人csdn资源处下载https://download.…

数据结构之静态链表

定义 用两个数组实现链表&#xff0c;一个数组存储数据&#xff0c;另一个数组记录当前数据的后继的下标。 示例 数据&#xff1a;data[] {-1, 34, 28, 53, 16, 25, -1, -1, -1, -1} 后继&#xff1a;next[] { 1, 2, 3, 4, 5, -1, -1, -1, -1, -1} 说明 -1: 表示无效值 …

Linux2.基础指令(下)

1.uname -r :输出Linux内核版本信息。 2.linux2.6.*内核默认支持的文件系统有ext3,ext2,ext4,xfs&#xff0c;不支持ufs。 3.linux查看CPU占用的命令:top。 4.题目 5.题目 6.题目 7.重定向 echo "字符串1" :在屏幕上打印字符串1。 echo "字符串1" &g…

C语言督学营(初级阶段)

文章目录 初级阶段1.编程环境搭建、调试C的历史故事写代码快速提升的方法快捷键编程环境 Clion、断点调试(单步调试) 2.数据类型、标准输入输出数据分类printf整型进制转换内存视图ASCII码表计算器 scanf的原理 3.运算符与表达式C语言的13种运算符运算符优先级 4.选择、循环1.选…

【每日算法 数据结构(C++)】—— 01 | 平方值去重统计(解题思路STL法,双指针法、流程图、代码片段)

文章目录 01 | &#x1f451; 题目描述02 | &#x1f50b; 解题思路STL法双指针法 03 | &#x1f9e2; 代码片段STL法双指针法 “Success is not final, failure is not fatal: It is the courage to continue that counts.” - Winston Churchill &#xff08;成功并非终点&am…

Redis【Redis数据类型(String、List、Set、Hash 、Zset)】(二)-全面详解(学习总结---从入门到深化)

目录 Redis数据类型_String set get append strlen setex setnx getrange setrange incr decr incrby/decrby key step mset mget getset Redis数据类型_List lrange lpop/rpop lindex llen lrem linsert lset Redis数据类型_Set smembers sism…

如何在 JavaScript 中处理 HTML 事件?

&#x1f482; 个人网站:【海拥】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 目录 前言什么是HTML事件Jav…

基于多进程并发-进程通讯之共享内存(shared memmory)

一、什么是共享内存 操作系统对进程内存实现原理&#xff1a; 现代操作系统&#xff0c;对于内存管理&#xff0c;采⽤的是虚拟内存技术&#xff0c;也就是每个进程都有⾃⼰独⽴的虚拟内存空间&#xff0c;不同进程的虚拟内存映射到不同的物理内存中。所以&#xff0c;即使进程…

Python交互式模式的特点和用法

Python交互式&#xff08;Interactive Mode&#xff09;是一种Python语言的工作模式&#xff0c;与传统的编写、保存、运行的方式不同&#xff0c;它允许用户直接在控制台窗口中输入和执行Python代码。 Python交互式的特点包括&#xff1a; 实时性&#xff1a;每输入一条语句&a…

黑马程序员前端 Vue3 小兔鲜电商项目——(八)登录页面

文章目录 账号密码路由配置模版代码配置路由跳转 表单校验实现校验要求代码实现统一校验 登录基础业务实现统一错误信息提示Pinia 管理用户数据Pinia 用户数据持久化用户登录状态请求拦截器携带 token退出登录实现Token 失效拦截处理 登录页面的主要功能就是表单校验和登录登出…

【Redis 基础及在 Java 中的应用】

文章目录 Redis 基础及在 Java 中的应用1 Redis 入门1.1 Redis 简介1.2 Redis 下载与安装1.3 Redis服务启动与停止 2 数据类型2.1 介绍2.2 五种常用数据类型 3 常用命令3.1 字符串 string 操作命令3.2 哈希 hash 操作命令3.3 列表 list 操作命令3.4 集合 set 操作命令3.5 有序集…

软件SPI读写W25Q64硬件SPI读写W25Q64

目录 软件SPI读写W25Q64 MySPI W25Q64 主函数 硬件SPI读写W25Q64 软件SPI读写W25Q64 程序整体框架&#xff1a; SPI模块包含通信引脚封装&#xff0c;初始化&#xff0c;SPI三个基本时序单元&#xff08;起始&#xff0c;终止&#xff0c;交换一个字节&#xff09; W2…

matlab实现语音信号的频域分析及应用

1.语音信号本质上是非平稳信号。但我们可以假设语音信号在一个短时间内是平稳的&#xff0c;这样我们用稳态分析方法处理非平稳信号。应用在傅立叶分析就是短时傅立叶变换。 语音的频域分析&#xff1a;包括语音信号的频谱、功率谱、倒频谱、频谱包络等. 常用频域分析方法&am…

排序算法之堆排序_20230624

排序算法之堆排序 前言 堆排序是基于比较排序的一类算法&#xff0c;算法重复利用堆(Binary heap)的特性&#xff0c;最大&#xff08;最小&#xff09;元素一定位于堆顶的位置&#xff0c;那么就可以提取堆顶元素&#xff0c;放置在数组的尾部位置&#xff0c;后再把剩余的元…

设计模式之状态模式笔记

设计模式之状态模式笔记 说明State(状态)目录状态模式示例类图抽象状态类环境角色类电梯开启状态类电梯关闭状态类电梯运行状态类电梯停止状态类测试类 说明 记录下学习设计模式-状态模式的写法。JDK使用版本为1.8版本。 State(状态) 意图:允许一个对象在其内部状态改变时改…

从零搭建一台基于ROS的自动驾驶车-----4.定位

系列文章目录 北科天绘 16线3维激光雷达开发教程 基于Rplidar二维雷达使用Hector_SLAM算法在ROS中建图 Nvidia Jetson Nano学习笔记–串口通信 Nvidia Jetson Nano学习笔记–使用C语言实现GPIO 输入输出 Autolabor ROS机器人教程 从零搭建一台基于ROS的自动驾驶车-----1.整体介…

【Leetcode60天带刷】day25回溯算法——216.组合总和III,17.电话号码的字母组合

​ 题目&#xff1a; 216. 组合总和 III 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次&#xff0c;组合可以以任何顺序返回。 示例 1…

读书笔记--数据治理之术

继延续上一篇文章&#xff0c;对数据治理之术进行学习思考&#xff0c;这部分内容是本书整体内容的核心细节&#xff0c;内容比较多比较杂&#xff0c;通读了好长时间才动手总结整理&#xff0c;因此更新的慢了一些。数据治理之术是操作层面的技术或方法&#xff0c;数据治理相…

linux系统如何添加硬盘设备

前言&#xff1a; 今天记录一下硬盘方面的知识&#xff0c;主要讲一下分区、挂载方面的知识&#xff0c;心情太郁闷了&#xff0c;假期的最后一天。 1、硬盘的命名规则 现在的硬盘设备一般都会以“/dev/sd”开头&#xff0c;而一台主机上可以有多块硬盘设备&#xff0c;因此系…