This is the main dovel repository, it has the Go code to run dovel SMTP server.
Author: blmayer (bleemayer@gmail.com)
Date: Mon Sep 11 18:59:25 2023 -0300
Parent: f936e47
Added link check
commit 885ff35d8429864cf5a1d0587868fce13c187bd4
Author: blmayer <bleemayer@gmail.com>
Date: Mon Sep 11 18:59:25 2023 -0300
Added link check
diff --git a/cmd/dovel/backend.go b/cmd/dovel/backend.go
index bef872b..b18e60d 100644
--- a/cmd/dovel/backend.go
+++ b/cmd/dovel/backend.go
@@ -76,9 +76,17 @@ func (s *Session) Data(raw io.Reader) error {
return err
}
domain := strings.Split(from.Address, "@")[1]
+
h := path.Join(configPath, "hooks", "send-"+domain)
- if _, err := os.Stat(h); err == nil {
- err := s.Send(s.from, s.tos, strings.NewReader(string(cont)))
+ if f, err := os.Lstat(h); err == nil {
+ if !f.Mode().IsRegular() {
+ h, err = os.Readlink(h)
+ if err != nil {
+ println(domain, "read link", err.Error())
+ }
+ }
+
+ err = s.Send(s.from, s.tos, strings.NewReader(string(cont)))
if err != nil {
println("send", err.Error())
return err
@@ -102,9 +110,14 @@ func (s *Session) Data(raw io.Reader) error {
domain := strings.Split(toAddr.Address, "@")[1]
h := path.Join(configPath, "hooks", "receive-"+domain)
- if _, err := os.Stat(h); err != nil {
+ if f, err := os.Lstat(h); err != nil {
println(domain, "receive error:", err.Error())
continue
+ } else if !f.Mode().IsRegular() {
+ h, err = os.Readlink(h)
+ if err != nil {
+ println(domain, "read link", err.Error())
+ }
}
c := exec.Command(h)