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