SMTP server to forward messages to shoutrrr endpoints
- Go 91.6%
- Makefile 5.2%
- Dockerfile 3.2%
Switch CI pipelines to GitHub/Forgejo Actions using ci-base container image, simplify Makefile by removing tools/bin versioned-symlink pattern, update Containerfile with multi-stage build for CA certs and non-root user, and clean up GoReleaser config with ldflags and explicit release target. Reviewed-on: #6 Co-authored-by: Felipe M. <me@fmartingr.com> Co-committed-by: Felipe M. <me@fmartingr.com> |
||
|---|---|---|
| .github/workflows | ||
| cmd | ||
| .gitignore | ||
| .goreleaser.yml | ||
| backend.go | ||
| backend_test.go | ||
| config.go | ||
| Containerfile | ||
| email.go | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
| server.go | ||
smtp2Shoutrrr
A simple SMTP server that forwards incoming emails to a Shoutrrr supported service.
Installing
First generate a new configuration file following this example:
# config.toml
# Port the SMTP server will listen on
Port = 11025
# Credentials for the SMTP server (default to username/password if not set/empty)
Username = "user"
Password = "nometokens"
# Configure recipients to forward emails to
# Multiple Targets (Recommended)
# Use the Targets array to send notifications to multiple services
[[Recipients]]
# Email addresses to forward emails from
Addresses = ["user@example.com"]
# Shoutrrr services to forward emails to
# See shoutrrr documentation: https://containrrr.dev/shoutrrr/
Targets = [
"ntfy://ntfy.sh/my-ntfy-topic?tags=email",
"discord://token@id",
"slack://token@channel"
]
# Single Target (Deprecated)
# The Target field is still supported for backward compatibility
[[Recipients]]
Addresses = ["legacy@example.com"]
Target = "ntfy://ntfy.sh/legacy-topic?tags=thing" # Will show deprecation warning
# Note: Repeat [[Recipients]] as needed
# Optional: Configure a catch-all recipient for unmatched email addresses
[CatchAll]
# Shoutrrr services to forward unmatched emails to
Targets = ["ntfy://ntfy.sh/catch-all-topic?tags=unmatched"]
From releases
- Grab the latest release from the releases page
- Put the configuration file in the same directory as the binary
- Run the binary for your appropriate platform
From source (development)
- Clone this repository
- Put the configuration file in the repository folder
- Run
make quick-run
Using docker
- Create a
config.tomlfile as described above - Run the docker image mounting the
Config.tomlfile as/config.tomland exposing the configured port:
docker run -v /path/to/config.toml:/config.toml \
-p 11025:11025 \
git.nakama.town/fmartingr/smtp2shoutrrr:latest
Development
Run the server with:
make quick-run
Send a test email with:
This will read the
config.tomlin the current directory to set the appropriate SMTP client configuration.
go run ./cmd/sendmail/.