内网邮件服务调研
一下是一些流行的,基于Java开源的邮件服务器项目
Apache James
Apache James(Javae Apache Mail Enterprise Server)是一个功能齐全的开源邮件服务器。它支持STMP、POP3和IMAP协议,可以高度定制和扩展。
GitHub仓库
官网地址
特点:
支持STMP,POP3,IMAP协议
强大的邮件处理和过滤规则
支持用户和域管理
模块化设计,易于扩展
支持通过JPA,JDBC,LDAP等多种用户存储方式
SubEthaSTMP
SubEthaSMTP是一个基于Java的高性能STMP服务器和客户端库。它可以用做邮件服务器的一部分,也可以用于测试邮件服务器。
GitHub仓库
特点:
轻量级,高性能
易于嵌入到其他应用中
灵活的STMP处理,可以定制邮件处理逻辑
GreenMail
GreenMail是基于Java的测试邮件服务器,它支持STMP,POP3,IMAP,STMPS协议。虽然它主要用于测试目的,但也可以用作轻量级的邮件服务器。
GitHub仓库
特点:
支持STMP,POP3,IMAP,STMPS协议
易于集成到测试框架中
支持邮件存储和检索
如何选择和使用
Apache James 是一个功能全面的邮件服务器,适合需要完整邮件服务器功能的项目。它适合大规模部署,并且有丰富的扩展和定制能力。
SubEthaSMTP 更加轻量级,适合需要定制 SMTP 处理的场景。如果你只需要 SMTP 功能且希望有高性能,可以选择它。
GreenMail 更适合测试和开发环境,如果你需要一个简易的邮件服务器来进行邮件功能的测试,它是一个很好的选择。
搭建Apache James服务
使用Docker部署项目;参考部署文档
1 2 3 4 5 6 7 8 9 10 11 wget https://repo1.maven.org/maven2/org/mariadb/jdbc/mariadb-java-client/2.7.2/mariadb-java-client-2.7.2.jar keytool -genkey -alias james -keyalg RSA -keystore keystore docker-compose up -d mariadb docker-compose up james
**DockerHub下载 **官网镜像
1 docker pull apache/james:jpa-3.8.1
下载和安装
使用docker-compose启动服务
配置James
启动James服务需要对服务进行配置;参考配置文档
docker-compse.yml配置详情1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 version: '3' services: james: depends_on: - mariadb image: apache/james:jpa-3.8.1 container_name: james ports: - "2525:25" - "110:110" - "143:143" - "587:587" - "993:993" - "465:465" - "4190:4190" - "8000:8000" volumes: - /mydata/james/james-project/server/apps/jpa-app/mariadb-java-client-2.7.2.jar:/root/libs/mariadb-java-client-2.7.2.jar - /mydata/james/james-project/server/apps/jpa-app/sample-configuration/james-database-mariadb.properties:/root/conf/james-database.properties - /mydata/james/james-project/server/apps/jpa-app/keystore:/root/conf/keystore - /mydata/james/james-project/server/apps/jpa-app/sample-configuration/dnsservice.xml:/root/conf/dnsservice.xml - /mydata/james/james-project/server/apps/jpa-app/sample-configuration/domainlist.xml:/root/conf/domainlist.xml - james-data:/mydata/james/data mariadb: image: mariadb:10.6 container_name: james-mariadb environment: - MARIADB_ROOT_PASSWORD=test - MARIADB_DATABASE=james - MARIADB_USER=test - MARIADB_PASSWORD=test ports: - "3307:3306" volumes: - mariadb-data:/mydata/maridb/data volumes: mariadb-data: james-data:
dnsservice.xml配置详情1 2 3 4 5 6 7 8 9 10 11 12 13 14 <dnsservice > <autodiscover > true</autodiscover > <authoritative > false</authoritative > <maxcachesize > 50000</maxcachesize > <servers > <server > 114.114.114.114</server > <server > 192.168.116.1</server > <server > 192.168.116.0</server > </servers > </dnsservice >
domainlist.xml配置详情1 2 3 4 5 6 <domainlist > <autodetect > false</autodetect > <autodetectIP > false</autodetectIP > <defaultDomain > igsshan.net.cn</defaultDomain > </domainlist >
james-database-mariadb.properties配置详情1 2 3 4 5 6 database.driverClassName =org.mariadb.jdbc.Driver database.url =jdbc:mariadb://james-mariadb/james database.username =test database.password =test
补充 james-database.properties 配置详情
1 2 3 4 5 6 7 8 9 10 database.driverClassName =org.apache.derby.jdbc.EmbeddedDriver database.url =jdbc:derby:../var/store/derby;create=true database.username =app database.password =app vendorAdapter.database =DERBY