forked from drew/smtprelay
Fix code formatting with gofmt -s
This commit is contained in:
27
config.go
27
config.go
@@ -7,8 +7,8 @@ import (
|
|||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/vharitonsky/iniflags"
|
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
|
"github.com/vharitonsky/iniflags"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -47,7 +47,6 @@ func localAuthRequired() bool {
|
|||||||
return *allowedUsers != ""
|
return *allowedUsers != ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func setupAllowedNetworks() {
|
func setupAllowedNetworks() {
|
||||||
for _, netstr := range splitstr(*allowedNetsStr, ' ') {
|
for _, netstr := range splitstr(*allowedNetsStr, ' ') {
|
||||||
baseIP, allowedNet, err := net.ParseCIDR(netstr)
|
baseIP, allowedNet, err := net.ParseCIDR(netstr)
|
||||||
@@ -61,7 +60,7 @@ func setupAllowedNetworks() {
|
|||||||
// meaning the address refers to a host and not a network.
|
// meaning the address refers to a host and not a network.
|
||||||
if !allowedNet.IP.Equal(baseIP) {
|
if !allowedNet.IP.Equal(baseIP) {
|
||||||
log.WithFields(logrus.Fields{
|
log.WithFields(logrus.Fields{
|
||||||
"given_net": netstr,
|
"given_net": netstr,
|
||||||
"proper_net": allowedNet,
|
"proper_net": allowedNet,
|
||||||
}).Fatal("Invalid network in allowed_nets (host bits set)")
|
}).Fatal("Invalid network in allowed_nets (host bits set)")
|
||||||
}
|
}
|
||||||
@@ -73,7 +72,7 @@ func setupAllowedNetworks() {
|
|||||||
func setupAllowedPatterns() {
|
func setupAllowedPatterns() {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
if (*allowedSenderStr != "") {
|
if *allowedSenderStr != "" {
|
||||||
allowedSender, err = regexp.Compile(*allowedSenderStr)
|
allowedSender, err = regexp.Compile(*allowedSenderStr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.WithField("allowed_sender", *allowedSenderStr).
|
log.WithField("allowed_sender", *allowedSenderStr).
|
||||||
@@ -82,7 +81,7 @@ func setupAllowedPatterns() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*allowedRecipStr != "") {
|
if *allowedRecipStr != "" {
|
||||||
allowedRecipients, err = regexp.Compile(*allowedRecipStr)
|
allowedRecipients, err = regexp.Compile(*allowedRecipStr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.WithField("allowed_recipients", *allowedRecipStr).
|
log.WithField("allowed_recipients", *allowedRecipStr).
|
||||||
@@ -92,7 +91,6 @@ func setupAllowedPatterns() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func setupRemoteAuth() {
|
func setupRemoteAuth() {
|
||||||
logger := log.WithField("remote_auth", *remoteAuthStr)
|
logger := log.WithField("remote_auth", *remoteAuthStr)
|
||||||
|
|
||||||
@@ -123,7 +121,7 @@ func setupRemoteAuth() {
|
|||||||
host, _, err := net.SplitHostPort(*remoteHost)
|
host, _, err := net.SplitHostPort(*remoteHost)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.WithField("remote_host", *remoteHost).
|
logger.WithField("remote_host", *remoteHost).
|
||||||
Fatal("Invalid remote_host")
|
Fatal("Invalid remote_host")
|
||||||
}
|
}
|
||||||
|
|
||||||
switch *remoteAuthStr {
|
switch *remoteAuthStr {
|
||||||
@@ -144,13 +142,13 @@ type protoAddr struct {
|
|||||||
func splitProto(s string) protoAddr {
|
func splitProto(s string) protoAddr {
|
||||||
idx := strings.Index(s, "://")
|
idx := strings.Index(s, "://")
|
||||||
if idx == -1 {
|
if idx == -1 {
|
||||||
return protoAddr {
|
return protoAddr{
|
||||||
address: s,
|
address: s,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return protoAddr {
|
return protoAddr{
|
||||||
protocol: s[0 : idx],
|
protocol: s[0:idx],
|
||||||
address: s[idx+3 : len(s)],
|
address: s[idx+3:],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -161,10 +159,9 @@ func setupListeners() {
|
|||||||
if localAuthRequired() && pa.protocol == "" {
|
if localAuthRequired() && pa.protocol == "" {
|
||||||
log.WithField("address", pa.address).
|
log.WithField("address", pa.address).
|
||||||
Fatal("Local authentication (via allowed_users file) " +
|
Fatal("Local authentication (via allowed_users file) " +
|
||||||
"not allowed with non-TLS listener")
|
"not allowed with non-TLS listener")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
listenAddrs = append(listenAddrs, pa)
|
listenAddrs = append(listenAddrs, pa)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -175,7 +172,7 @@ func ConfigLoad() {
|
|||||||
// Set up logging as soon as possible
|
// Set up logging as soon as possible
|
||||||
setupLogger()
|
setupLogger()
|
||||||
|
|
||||||
if (*remoteHost == "") {
|
if *remoteHost == "" {
|
||||||
log.Warn("remote_host not set; mail will not be forwarded!")
|
log.Warn("remote_host not set; mail will not be forwarded!")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,24 +6,24 @@ import (
|
|||||||
|
|
||||||
func TestSplitProto(t *testing.T) {
|
func TestSplitProto(t *testing.T) {
|
||||||
var tests = []struct {
|
var tests = []struct {
|
||||||
input string
|
input string
|
||||||
proto string
|
proto string
|
||||||
addr string
|
addr string
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
input: "localhost",
|
input: "localhost",
|
||||||
proto: "",
|
proto: "",
|
||||||
addr: "localhost",
|
addr: "localhost",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
input: "tls://my.local.domain",
|
input: "tls://my.local.domain",
|
||||||
proto: "tls",
|
proto: "tls",
|
||||||
addr: "my.local.domain",
|
addr: "my.local.domain",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
input: "starttls://my.local.domain",
|
input: "starttls://my.local.domain",
|
||||||
proto: "starttls",
|
proto: "starttls",
|
||||||
addr: "my.local.domain",
|
addr: "my.local.domain",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ func setupLogger() {
|
|||||||
log = logrus.New()
|
log = logrus.New()
|
||||||
|
|
||||||
// Handle logfile
|
// Handle logfile
|
||||||
if (*logFile == "") {
|
if *logFile == "" {
|
||||||
log.SetOutput(os.Stderr)
|
log.SetOutput(os.Stderr)
|
||||||
} else {
|
} else {
|
||||||
writer, err := os.OpenFile(*logFile, os.O_CREATE|os.O_RDWR|os.O_APPEND, 0600)
|
writer, err := os.OpenFile(*logFile, os.O_CREATE|os.O_RDWR|os.O_APPEND, 0600)
|
||||||
|
|||||||
20
main.go
20
main.go
@@ -86,7 +86,7 @@ func senderChecker(peer smtpd.Peer, addr string) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
// Shouldn't happen: authChecker already validated username+password
|
// Shouldn't happen: authChecker already validated username+password
|
||||||
log.WithFields(logrus.Fields{
|
log.WithFields(logrus.Fields{
|
||||||
"peer": peer.Addr,
|
"peer": peer.Addr,
|
||||||
"username": peer.Username,
|
"username": peer.Username,
|
||||||
}).WithError(err).Warn("could not fetch auth user")
|
}).WithError(err).Warn("could not fetch auth user")
|
||||||
return smtpd.Error{Code: 451, Message: "Bad sender address"}
|
return smtpd.Error{Code: 451, Message: "Bad sender address"}
|
||||||
@@ -94,8 +94,8 @@ func senderChecker(peer smtpd.Peer, addr string) error {
|
|||||||
|
|
||||||
if !addrAllowed(addr, user.allowedAddresses) {
|
if !addrAllowed(addr, user.allowedAddresses) {
|
||||||
log.WithFields(logrus.Fields{
|
log.WithFields(logrus.Fields{
|
||||||
"peer": peer.Addr,
|
"peer": peer.Addr,
|
||||||
"username": peer.Username,
|
"username": peer.Username,
|
||||||
"sender_address": addr,
|
"sender_address": addr,
|
||||||
}).Warn("sender address not allowed for authenticated user")
|
}).Warn("sender address not allowed for authenticated user")
|
||||||
return smtpd.Error{Code: 451, Message: "Bad sender address"}
|
return smtpd.Error{Code: 451, Message: "Bad sender address"}
|
||||||
@@ -114,7 +114,7 @@ func senderChecker(peer smtpd.Peer, addr string) error {
|
|||||||
|
|
||||||
log.WithFields(logrus.Fields{
|
log.WithFields(logrus.Fields{
|
||||||
"sender_address": addr,
|
"sender_address": addr,
|
||||||
"peer": peer.Addr,
|
"peer": peer.Addr,
|
||||||
}).Warn("sender address not allowed by allowed_sender pattern")
|
}).Warn("sender address not allowed by allowed_sender pattern")
|
||||||
return smtpd.Error{Code: 451, Message: "Bad sender address"}
|
return smtpd.Error{Code: 451, Message: "Bad sender address"}
|
||||||
}
|
}
|
||||||
@@ -131,7 +131,7 @@ func recipientChecker(peer smtpd.Peer, addr string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
log.WithFields(logrus.Fields{
|
log.WithFields(logrus.Fields{
|
||||||
"peer": peer.Addr,
|
"peer": peer.Addr,
|
||||||
"recipient_address": addr,
|
"recipient_address": addr,
|
||||||
}).Warn("recipient address not allowed by allowed_recipients pattern")
|
}).Warn("recipient address not allowed by allowed_recipients pattern")
|
||||||
return smtpd.Error{Code: 451, Message: "Bad recipient address"}
|
return smtpd.Error{Code: 451, Message: "Bad recipient address"}
|
||||||
@@ -141,7 +141,7 @@ func authChecker(peer smtpd.Peer, username string, password string) error {
|
|||||||
err := AuthCheckPassword(username, password)
|
err := AuthCheckPassword(username, password)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.WithFields(logrus.Fields{
|
log.WithFields(logrus.Fields{
|
||||||
"peer": peer.Addr,
|
"peer": peer.Addr,
|
||||||
"username": username,
|
"username": username,
|
||||||
}).WithError(err).Warn("auth error")
|
}).WithError(err).Warn("auth error")
|
||||||
return smtpd.Error{Code: 535, Message: "Authentication credentials invalid"}
|
return smtpd.Error{Code: 535, Message: "Authentication credentials invalid"}
|
||||||
@@ -157,13 +157,13 @@ func mailHandler(peer smtpd.Peer, env smtpd.Envelope) error {
|
|||||||
|
|
||||||
logger := log.WithFields(logrus.Fields{
|
logger := log.WithFields(logrus.Fields{
|
||||||
"from": env.Sender,
|
"from": env.Sender,
|
||||||
"to": env.Recipients,
|
"to": env.Recipients,
|
||||||
"peer": peerIP,
|
"peer": peerIP,
|
||||||
"host": *remoteHost,
|
"host": *remoteHost,
|
||||||
"uuid": generateUUID(),
|
"uuid": generateUUID(),
|
||||||
})
|
})
|
||||||
|
|
||||||
if (*remoteHost == "") {
|
if *remoteHost == "" {
|
||||||
logger.Warning("remote_host not set; discarding mail")
|
logger.Warning("remote_host not set; discarding mail")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -197,7 +197,7 @@ func mailHandler(peer smtpd.Peer, env smtpd.Envelope) error {
|
|||||||
|
|
||||||
logger.WithFields(logrus.Fields{
|
logger.WithFields(logrus.Fields{
|
||||||
"err_code": err.Code,
|
"err_code": err.Code,
|
||||||
"err_msg": err.Msg,
|
"err_msg": err.Msg,
|
||||||
}).Error("delivery failed")
|
}).Error("delivery failed")
|
||||||
default:
|
default:
|
||||||
smtpError = smtpd.Error{Code: 554, Message: "Forwarding failed"}
|
smtpError = smtpd.Error{Code: 554, Message: "Forwarding failed"}
|
||||||
@@ -246,7 +246,7 @@ func getTLSConfig() *tls.Config {
|
|||||||
if *localCert == "" || *localKey == "" {
|
if *localCert == "" || *localKey == "" {
|
||||||
log.WithFields(logrus.Fields{
|
log.WithFields(logrus.Fields{
|
||||||
"cert_file": *localCert,
|
"cert_file": *localCert,
|
||||||
"key_file": *localKey,
|
"key_file": *localKey,
|
||||||
}).Fatal("TLS certificate/key file not defined in config")
|
}).Fatal("TLS certificate/key file not defined in config")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user