浏览代码

Implement logfile and print on stdout and the logfile per default

Bernhard Froehlich 6 年之前
父节点
当前提交
88d85458dc
共有 2 个文件被更改,包括 16 次插入0 次删除
  1. 13 0
      main.go
  2. 3 0
      smtp-proxy.ini

+ 13 - 0
main.go

@@ -3,9 +3,11 @@ package main
 import (
 	"crypto/tls"
 	"flag"
+	"io"
 	"log"
 	"net"
 	"net/smtp"
+	"os"
 	"strings"
 	"time"
 
@@ -14,6 +16,7 @@ import (
 )
 
 var (
+	logFile    = flag.String("logfile", "/var/log/smtpd-proxy.log", "Path to logfile")
 	hostName   = flag.String("hostname", "localhost.localdomain", "Server hostname")
 	welcomeMsg = flag.String("welcome_msg", "", "Welcome message for SMTP session")
 	listen     = flag.String("listen", "127.0.0.1:25 [::1]:25", "Address and port to listen for incoming SMTP")
@@ -49,6 +52,16 @@ func main() {
 
 	iniflags.Parse()
 
+	if *logFile != "" {
+		f, err := os.OpenFile(*logFile, os.O_RDWR | os.O_CREATE | os.O_APPEND, 0600)
+		if err != nil {
+			log.Fatalf("Error opening logfile: %v", err)
+		}
+		defer f.Close()
+		wrt := io.MultiWriter(os.Stdout, f)
+		log.SetOutput(wrt)
+	}
+
 	listeners := strings.Split(*listen, " ")
 
 	for i := range(listeners) {

+ 3 - 0
smtp-proxy.ini

@@ -1,5 +1,8 @@
 ; smtp-proxy configuration
 
+; Logfile
+;logfile = /var/log/smtpd-proxy.log
+
 ; Hostname for this SMTP server
 ;hostname = "localhost.localdomain"