smtp2shoutrrr/server.go
2025-02-21 09:59:12 +01:00

49 lines
1,014 B
Go

package smtp2shoutrrr
import (
"context"
"fmt"
"log/slog"
"time"
"git.nakama.town/fmartingr/gotoolkit/model"
"github.com/emersion/go-smtp"
)
var _ model.Server = (*smtpServer)(nil)
type smtpServer struct {
backend *smtp.Server
}
func (s *smtpServer) IsEnabled() bool {
return true
}
func (s *smtpServer) Start(_ context.Context) error {
slog.Info("Started SMTP server", slog.String("addr", s.backend.Addr))
return s.backend.ListenAndServe()
}
func (s *smtpServer) Stop(ctx context.Context) error {
slog.Info("Stopping SMTP server")
return s.backend.Shutdown(ctx)
}
func NewSMTPServer(config *Config) model.Server {
be := &Backend{
config: config,
}
smtpBackend := smtp.NewServer(be)
smtpBackend.Addr = fmt.Sprintf(":%d", config.Port)
smtpBackend.WriteTimeout = 10 * time.Second
smtpBackend.ReadTimeout = 10 * time.Second
smtpBackend.MaxMessageBytes = 1024 * 1024
smtpBackend.MaxRecipients = 50
smtpBackend.AllowInsecureAuth = true
return &smtpServer{
backend: smtpBackend,
}
}