惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Fortinet All Blogs
爱范儿
爱范儿
P
Proofpoint News Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Tailwind CSS Blog
J
Java Code Geeks
宝玉的分享
宝玉的分享
Jina AI
Jina AI
B
Blog
N
Netflix TechBlog - Medium
Recent Announcements
Recent Announcements
aimingoo的专栏
aimingoo的专栏
腾讯CDC
C
Check Point Blog
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
博客园 - Franky
罗磊的独立博客
B
Blog RSS Feed
WordPress大学
WordPress大学
小众软件
小众软件
博客园 - 叶小钗
M
MIT News - Artificial intelligence
GbyAI
GbyAI

博客园 - Morya

不当心升级到 redis 7.4 怎么回到 valkey8 使用 cert-manager 为 traefik 自动申请和续约 https 证书 traefik学习 k8s 1.28 安装配置 knative-serving v1.15.2 + cert-manager v1.16.1 ssh端口映射玩法 golang echo group 用法的微妙注意点 使用docker最小化部署Git CI环境 Influx cli cheetsheet 通过php docker快速验证简单代码 通过k8s service代理外部服务 run gitlab-runner in k8s K8S配置traefik ingressroutes支持TLS ucloud k8s部署traefik的forward-auth 使用nginx构建限频、限速、限并发的应用保护层 macos 更改罗技k810无线键盘的映射 - Morya - 博客园 C++11 thread condition_variable mutex 综合使用 goland scope pattern 设置 Go 1.11 Module 介绍 - Morya hustOJ 添加 golang 支持
使用mailpopbox构建个人独享EmailServer
Morya · 2021-07-28 · via 博客园 - Morya

使用mailpopbox构建个人独享EmailServer

mailpopbox简介

mailpopbox是一个很不错的小型email server。

使用场景:

  • 你拥有自己的domain
  • 在自己的域名中,可以化身千万
    • join@a.com
    • alice@a.com
  • 不希望收到太多垃圾邮件

收邮件

按照主页的介绍,它提供了一个catch all模型,如果,你拥有一个域名 example.com,那么,下面地址的邮件,都会被收取到一个位置。而你再使用任何第三方邮件工具,或者,从其它标准email服务(比如gmail),可以直接连入它收取所有邮件。

  • a@example.com
  • b@example.com
  • c@example.com
  • system@example.com

发邮件

同时,它也能以任何 xxxx@example.com的角色向外发送邮件。

比如,你通过foxmail,outloook,thunderbird,或者使用代码,都可以借助mailpopbox对外发邮件。而且,只要你的主题中包含 [sendas:addr@example.com],那么,这封邮件就会以这个地址作为发件人送出。

安装配置方式

https://github.com/rsesek/mailpopbox/blob/master/docs/install.md

本身它的介绍已经足够。

有2个我觉得还值得改进的小部分:

  • 如果,能够提供docker镜像的话,对体验尝鲜的同学,会更加方便
  • 2021-0728之前发布的那个版本,在smtp发送协议auth部分,有一个bug,会导致golang实现的客户端发送失败,已向原作者发送了PR,待合入

sending mail using golang

package main

import (
	"log"
	"net/smtp"

	"gopkg.in/jordan-wright/email.v2"
)

func main() {
	var e = email.NewEmail()
	e.Subject = "Demo email[sendas:demo1@example.com]"
	e.From = "mailbox@example.com"
	e.To = []string{"target@domain.com"}
	e.Text = []byte(`demo email content`)

	a := smtp.PlainAuth("", "mailbox@example.com", "aabbccdd", "smtp.example.com")

	if err := e.Send("smtp.example.com:587", a); err != nil {
		log.Panic(err)
	}
	log.Println("email sent")
}