mirror of
https://github.com/decke/smtprelay.git
synced 2025-12-25 07:43:06 -07:00
make possible #91.
- add strict_sender bool configuration value - if strict_sender set as true use for outgoing mail only SMTPs with sender matches to from address
This commit is contained in:
18
main.go
18
main.go
@@ -163,9 +163,21 @@ func mailHandler(peer smtpd.Peer, env smtpd.Envelope) error {
|
||||
"uuid": generateUUID(),
|
||||
})
|
||||
|
||||
if *remotesStr == "" && *command == "" {
|
||||
var envRemotes []*Remote
|
||||
|
||||
if *strictSender {
|
||||
for _, remote := range remotes {
|
||||
if remote.Sender == env.Sender {
|
||||
envRemotes = append(envRemotes, remote)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
envRemotes = remotes
|
||||
}
|
||||
|
||||
if len(envRemotes) == 0 && *command == "" {
|
||||
logger.Warning("no remote_host or command set; discarding mail")
|
||||
return nil
|
||||
return smtpd.Error{Code: 554, Message: "There are no appropriate remote_host or command"}
|
||||
}
|
||||
|
||||
env.AddReceivedLine(peer)
|
||||
@@ -190,7 +202,7 @@ func mailHandler(peer smtpd.Peer, env smtpd.Envelope) error {
|
||||
cmdLogger.Info("pipe command successful: " + stdout.String())
|
||||
}
|
||||
|
||||
for _, remote := range remotes {
|
||||
for _, remote := range envRemotes {
|
||||
logger = logger.WithField("host", remote.Addr)
|
||||
logger.Info("delivering mail from peer using smarthost")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user