max email size; connection timeout

This commit is contained in:
wiggin77
2020-06-08 00:28:59 -04:00
parent 066613c962
commit eaa5e32600
4 changed files with 36 additions and 4 deletions

24
main.go
View File

@ -12,6 +12,14 @@ import (
log "github.com/flashmob/go-guerrilla/log"
)
const (
DefaultSTMPPort = 465
DefaultMaxEmailSize = (10 << 23) // 83 MB
DefaultLocalListenIP = "0.0.0.0"
DefaultLocalListenPort = 2525
DefaultTimeoutSecs = 300 // 5 minutes
)
// Logger is the global logger
var Logger log.Logger
@ -23,9 +31,11 @@ type mailRelayConfig struct {
SMTPUsername string `json:"smtp_username"`
SMTPPassword string `json:"smtp_password"`
SkipCertVerify bool `json:"smtp_skip_cert_verify"`
MaxEmailSize int64 `json:"smtp_max_email_size"`
LocalListenIP string `json:"local_listen_ip"`
LocalListenPort int `json:"local_listen_port"`
AllowedHosts []string `json:"allowed_hosts"`
TimeoutSecs int `json:"timeout_secs"`
}
func main() {
@ -90,6 +100,8 @@ func run() error {
func loadConfig(path string) (*mailRelayConfig, error) {
var cfg mailRelayConfig
configDefaults(&cfg)
file, err := os.Open(path)
if err != nil {
return nil, err
@ -103,6 +115,18 @@ func loadConfig(path string) (*mailRelayConfig, error) {
return &cfg, nil
}
func configDefaults(config *mailRelayConfig) {
config.SMTPPort = DefaultSTMPPort
config.SMTPStartTLS = false
config.SMTPLoginAuthType = false
config.MaxEmailSize = DefaultMaxEmailSize
config.SkipCertVerify = false
config.LocalListenIP = DefaultLocalListenIP
config.LocalListenPort = DefaultLocalListenPort
config.AllowedHosts = []string{"*"}
config.TimeoutSecs = DefaultTimeoutSecs
}
// sendTest sends a test message to the SMTP server specified in mailrelay.json
func sendTest(sender string, rcpt string, port int) error {
conn, err := smtp.Dial(fmt.Sprintf("localhost:%d", port))