containrrr / shoutrrr

Notification library for gophers and their furry friends.
https://containrrr.dev/shoutrrr/
MIT License
989 stars 60 forks source link

[feature req] SMTP receiver #224

Open geekscrapy opened 2 years ago

geekscrapy commented 2 years ago

I'm currently building up a good number of self hosted projects, Vaultwarden, nextcloud, Synology, Unifi, and various other services. Most of these services have the ability (and some require) to send email as part of their sign up process, notification or alerting processes.

I have ended up spinning up a SMTP relay so I dont have to 1. provide my Google creds to each of those services so they can send emails 2. Have to troubleshoot the various issues... The only job of this SMTP relay is to capture emails coming in and forward them to Google SMTP where they can be sent onwards.

As shoutrrr often located in that same notification flow my feature request is this: Allow shoutrrr to receive email from various services on my Lan and forward as part of the normal notification workflow.

geekscrapy commented 2 years ago

I did just remember that there isn't a routing component of shoutrrr, so the sending service would have to already know about the URL format I suppose... 😞

piksel commented 2 years ago

I'm not exactly sure what you mean by routing component, but adding a sub-command to the shoutrrr CLI where it acts as an SMTP server, redirecting all incoming mail to the specified services seems like a good idea (and pretty straight forward to implement). That way you can supply the service URL to the binary (and maybe even allow for multiple URLs, identified by the To: e-mail?)

geekscrapy commented 2 years ago

Full disclosure, I've only dabbled with and briefly read the docs but I was under the impression that it ran in a server mode receiving data and routing it to one of the notification services. But now I realise you have this binary on each place you want to send notifications from.

So when talking about routing component I thought there was a config that specified "if something comes in on this URL, route out this notification service". Hence SMTP being received and "routed".

So when I stand back, it appears like I'm suggesting quite a large feature request, and one that changes the overall scope of the project, so do with it what you will 🙃 But I'd love to spin this up as service on my LAN that could receive notification data via several methods (e.g. smtp, webhook, syslog etc.) and route it to certain notification services.