naviemail的升级之路-孵化mailrouter

在naviemail部署上线经过实际应用后,发现了一些问题。

这些问题是早有预料的。

危机就是转机,问题就是前进的加油站!

为了学习的目的,保留naivemail简单的代码、明了的结构,以naivemail为基础,孵化出 mailrouter !

mail router

1、mailrouter 增加了状态控制,严格控制命令序列执行的状态顺序。不允许未经 HELO 或者 EHLO 发送其他命令。

2、实现了单端口从明文通讯到加密通讯的升级。通过(25端口)明文连接,在接到 starttls 命令后,开启TLS端口,升级到 TLS加密连接。

3、服务启动后,自动生成认证密钥,无需手动生成。

4、支持 Enhanced Status Code。

5、支持多附件。

6、增强安全机制。

  • 发送数据请求限时30秒,如果读取的数据非常长,可能会导致阻塞,设置超时机制,防止恶意阻塞。
  • 设置30秒的读取超时并限制读取长度,防止内存耗尽攻击。

7、体积非常小,仅有 7.2M 。

8、golang原生开发,不依赖其他开发库 。

9、支持docker安装 。

docker 运行

复制代码
docker run -p 25:25 -v /data/volumes/mail-router/emails:/emails -v /data/volumes/mail-router/cert:/cert -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro --label description="电子邮件路由" --label 启动日期="2025-12-28"  -d --name mailrouter  go-mail-router

Todo List

1、增加对 EHLO 或者 HELO 携带域名参数的检查;

2、对域名参数进行 SPF 验证,验证未通过的全部加入永久黑名单。

3、根据需要对认证签名文件实现动态匹配和加载。

源码地址

https://github.com/golangle/mailrouter

相关推荐
microrain5 小时前
读数是 1008,用电量是 8:SagooIoT 计算服务的增量口径与七种计算策略
物联网·golang·计算服务·sagooiot
看浪的路人7 小时前
第7讲:大模型后端服务化——Go 实现高并发 LLM Proxy / Router / Fallback
开发语言·后端·golang
灯澜忆梦9 小时前
【Go Zap 日志库】#1 |快速上手 + 配置详解
开发语言·后端·golang
不是万能的豆学长12 小时前
排查Go服务40天后的内存泄漏问题
开发语言·后端·golang·go
tachibana212 小时前
Go 语言 Map 的底层实现原理
开发语言·后端·golang·make
tachibana213 小时前
Go语言里slice是怎么扩容的?
后端·golang·go·切片
西瓜很甜哟14 小时前
golang实现大文件分片上传
后端·golang·html
tachibana21 天前
使用for range 的时候,它的地址会发生变化吗?
开发语言·后端·golang·go·语法
王中阳Go1 天前
Go 后端转 AI:非科班怎么补?一张 3 列路线表(可保存)
开发语言·人工智能·后端·python·golang·大语言模型
for_ever_love__1 天前
LangChain Agentic RAG:让 Agent 自己决定要不要检索、检索几次
人工智能·golang·langchain·rag·langgraph·agentic·自适应检索