From 060f88dffe34eee6c51813093f5af05799f7aa4b Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sun, 22 Mar 2026 01:40:06 +0100 Subject: [PATCH] Fix mail queue and logs commands - Hardcode paths: /usr/sbin/postqueue, /usr/sbin/postsuper, /usr/bin/journalctl - Fix postqueue: remove -p flag (conflicts with -j) - Add stderr logging for queue errors --- backend/internal/api/handlers/queue.go | 4 +++- backend/internal/mail/logs.go | 2 +- backend/internal/mail/queue.go | 16 ++++++++++------ 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/backend/internal/api/handlers/queue.go b/backend/internal/api/handlers/queue.go index 0bd014b..1a41a16 100644 --- a/backend/internal/api/handlers/queue.go +++ b/backend/internal/api/handlers/queue.go @@ -1,6 +1,7 @@ package handlers import ( + "log" "net/http" "github.com/imc-vibe/backend/internal/mail" @@ -20,7 +21,8 @@ func (h *QueueHandler) List(w http.ResponseWriter, r *http.Request) { entries, err := mail.GetQueue() if err != nil { - Error(w, http.StatusServiceUnavailable, "mail queue tools not available") + log.Printf("Queue error: %v", err) + Error(w, http.StatusServiceUnavailable, "failed to get queue: "+err.Error()) return } diff --git a/backend/internal/mail/logs.go b/backend/internal/mail/logs.go index c666c4f..4cd8308 100644 --- a/backend/internal/mail/logs.go +++ b/backend/internal/mail/logs.go @@ -26,7 +26,7 @@ func GetLogs(hours int, filter string) ([]LogEntry, error) { "--no-pager", } - cmd := exec.CommandContext(ctx, "journalctl", args...) + cmd := exec.CommandContext(ctx, "/usr/bin/journalctl", args...) var out bytes.Buffer cmd.Stdout = &out diff --git a/backend/internal/mail/queue.go b/backend/internal/mail/queue.go index 744e061..cd9e96a 100644 --- a/backend/internal/mail/queue.go +++ b/backend/internal/mail/queue.go @@ -4,6 +4,7 @@ import ( "bufio" "bytes" "encoding/json" + "fmt" "os/exec" "regexp" "strconv" @@ -22,12 +23,15 @@ type QueueEntry struct { var queueLineRegex = regexp.MustCompile(`^([A-Fa-f0-9]+)\s+(\d+)\s+(\w+)\s+([A-Za-z]+\s+\d+\s+[\d:]+)\s+([^\s]+)\s+(.+)$`) func GetQueue() ([]QueueEntry, error) { - cmd := exec.Command("postqueue", "-p", "-j") + cmd := exec.Command("/usr/sbin/postqueue", "-j") var out bytes.Buffer + var stderr bytes.Buffer cmd.Stdout = &out + cmd.Stderr = &stderr - if err := cmd.Run(); err != nil { - return nil, err + err := cmd.Run() + if err != nil { + return nil, fmt.Errorf("/usr/sbin/postqueue -j: %v (stderr: %s)", err, stderr.String()) } var entries []QueueEntry @@ -77,7 +81,7 @@ func GetQueue() ([]QueueEntry, error) { } func RequeueMail(id string) error { - cmd := exec.Command("postqueue", "-f", "-v") + cmd := exec.Command("/usr/sbin/postqueue", "-f", "-v") var out bytes.Buffer cmd.Stdout = &out cmd.Stderr = &out @@ -89,12 +93,12 @@ func RequeueMail(id string) error { } func DeleteFromQueue(id string) error { - cmd := exec.Command("postsuper", "-d", id) + cmd := exec.Command("/usr/sbin/postsuper", "-d", id) return cmd.Run() } func GetQueueCount() (int, error) { - cmd := exec.Command("postqueue", "-p") + cmd := exec.Command("/usr/sbin/postqueue", "-j") var out bytes.Buffer cmd.Stdout = &out