diff --git a/server/server.go b/server/server.go
index 7026dfb9..1ffb85cb 100644
--- a/server/server.go
+++ b/server/server.go
@@ -174,7 +174,7 @@ func (s *Server) Run() error {
 		listenStr += fmt.Sprintf(" %s[https]", s.config.ListenHTTPS)
 	}
 	if s.config.ListenUnix != "" {
-		listenStr += fmt.Sprintf(" %s[unix]", s.config.ListenUnix)
+		listenStr += fmt.Sprintf(" %s[unix/%04o]", s.config.ListenUnix, s.config.ListenUnixMode)
 	}
 	if s.config.SMTPServerListen != "" {
 		listenStr += fmt.Sprintf(" %s[smtp]", s.config.SMTPServerListen)
@@ -207,6 +207,11 @@ func (s *Server) Run() error {
 				errChan <- err
 				return
 			}
+			if err := os.Chmod(s.config.ListenUnix, s.config.ListenUnixMode); err != nil {
+				s.unixListener.Close()
+				errChan <- err
+				return
+			}
 			s.mu.Unlock()
 			httpServer := &http.Server{Handler: mux}
 			errChan <- httpServer.Serve(s.unixListener)