使用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")
}