haydenwoodhead / burner.kiwi

No bullshit temporary mail service written in Go
https://burner.kiwi
MIT License
216 stars 26 forks source link

Remote SMTP #37

Closed krakazyabra closed 1 year ago

krakazyabra commented 2 years ago

Hi! Sorry for another my issue :) Now you're using only mailgun and local smtp. In case of using smtp only, you can run one process per node, because it uses 25th port. That doesn't allow you to scale horizontally or use different configurations per-container.

What about providing remote smtp + auth for that? Then you can have a lot of containers and processes per node + use a lot of different configurations.

haydenwoodhead commented 2 years ago

I’m not quite sure what you’re asking here. Your concern about one process per node is probably not an issue. Go has goroutines which are multiplexed onto OS threads. When a new smtp connection comes in the underlying smtp library spawns a new goroutine to handle this. We are not blocking a single thread handling incoming messages. You would probably find that burner.kiwi scales vertically very well, other than some OS socket setting tweaks possibly. There would be no benefit to running multiple burner.kiwi on a single machine (unless you’re resource constraining each one to which I’d say don’t do that).

Scaling horizontally across multiple machines would be quite straightforward, just share a database and put a load balancer in front of them. However, you probably don’t need to. One machine is likely fine.

As for remote smtp. I’m not exactly sure what you mean here either. If you wanted a remote server to receive email and burner.kiwi to collect it you could do that via pop or imap. Again, I welcome prs with new functionality but it is not something I’m looking to add myself. If you require it for some business venture we can happily discuss contracting rates.