PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : permission denied in /var/run/ mit dovecot



hedie
29.05.16, 11:21
Hallo zusammen

Ich bin gerade dabei einen Linuxserver mit Debian 8.1 minimal auf einem VPS aufzusetzen.
Apache2 und MySQL läuft soweit

Derzeit versuche ich einen Mailserver sauber aufzusetzen.
Ich bin nach dieser Anleitung vorgegangen: https://www.linode.com/docs/email/postfix/email-with-postfix-dovecot-and-mysql

Diese erschien mir sehr vollständig und korrekt.
Ich versuche nun mich mit dem test-user beim server anzumelden. Leider bekomme ich in den logs die folgende meldung:


Error: user test@example.com: Initialization failed: Namespace '': mkdir(var/mail/server/example.com/test) in directory /run/dovecot failed: Permission denied (euid=5000(vmail) egid=5000(vmail) missing +w perm: /run/dovecot, dir owned by 0:0 mode=0755)

Ich habe schon sehr viel danach gegooglet doch leider half nichts.
Ich bin kein Linux superuser aber auch kein Anfänger mehr. Ich versuche mommentan den Server sauber aufzusetzen und wollte daher nicht mit ein paar chmod's einfach die berechtigungen unendlich öffnen bis es klappt.

Ich würde gerne verstehen, wie man dieses Problem korrekt löst.

Danke schonmal.



Ein Teil meiner dovecot.conf: der rest ist default


# Enable installed protocols
!include_try /usr/share/dovecot/protocols.d/*.protocol
protocols = imap lmtp
# Base directory where to store runtime data.
base_dir = /var/run/dovecot/



Ein Tiel meiner 10-master.conf


service auth {
# auth_socket_path points to this userdb socket by default. It's typically
# used by dovecot-lda, doveadm, possibly imap process, etc. Users that have
# full permissions to this socket are able to get a list of all usernames and
# get the results of everyone's userdb lookups.
#
# The default 0666 mode allows anyone to connect to the socket, but the
# userdb lookups will succeed only if the userdb returns an "uid" field that
# matches the caller process's UID. Also if caller's uid or gid matches the
# socket's uid or gid the lookup succeeds. Anything else causes a failure.
#
# To give the caller full permissions to lookup all users, set the mode to
# something else than 0666 and Dovecot lets the kernel enforce the
# permissions (e.g. 0777 allows everyone full permissions).
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}

unix_listener auth-userdb {
mode = 0600
user = vmail
#group =
}

unix_listener auth-master {
mode = 0660
user = vmail
group = vmail
}

# Postfix smtp-auth
#unix_listener /var/spool/postfix/private/auth {
# mode = 0666
#}

# Auth process is run as this user.
user = dovecot
}

service auth-worker {
# Auth worker process is run as root by default, so that it can access
# /etc/shadow. If this isn't necessary, the user should be changed to
# $default_internal_user.
user = vmail
}

service dict {
# If dict proxy is used, mail processes should have access to its socket.
# For example: mode=0660, group=vmail and global mail_access_groups=vmail
unix_listener dict {
mode = 0660
#user = vmail
#group = vmail
}
}

mbo
29.05.16, 12:14
Du hast in Deiner Konfig eingestellt, dass er die Postfächer unter var/mail/server/ in directory /run/dovecot erstellen soll, aber dem vmail fehlen die Schreibrechte.
Du könntest alternativ zB /vmail, also unter /, erstellen und den Benutzer vmail berechtigen und in der Konfig entsprechend anpassen.

hedie
29.05.16, 12:52
Du hast in Deiner Konfig eingestellt, dass er die Postfächer unter var/mail/server/ in directory /run/dovecot erstellen soll, aber dem vmail fehlen die Schreibrechte.
Du könntest alternativ zB /vmail, also unter /, erstellen und den Benutzer vmail berechtigen und in der Konfig entsprechend anpassen.

Danke für die antwort.
Da hab ich wohl "müll" gebaut.
Eigentlich würde es doch mehr sinn machen, wenn er die Postfächer unter var/mail/server/ unter der entsprechenden domain mit entsprechendem user erstellen würde.

Deshalb das hier:



mail_location = maildir:var/mail/server/%d/%n

%d steht für domain und %n für den teil vor dem @

Meinst du das base_dir?



base_dir = /var/run/dovecot/


Ich würde gerne alle Mails unter /var/mail/server/ haben (macht doch sinn oder übersehe ich da was?)
Soll ich demnach base_dir = /var/mail/server/ändern?
Dort hat vmail nämlich bereits schreibrechte, da es der owner von /var/mail/ ist.

/var/run/ scheint ein symlink auf /run/ zu sein.
und die benutzerrechte in /run/ werden nach einem neustart auf root:root zurückgesetzt.
Deshalb war chown -R vmail:vmail /var/run/dovecot nur eine temporäre lösung.

drcux
30.05.16, 07:41
Dir fehlt ein "/" vor "var/mail..."

hedie
30.05.16, 14:12
Dir fehlt ein "/" vor "var/mail..."

Perfekt! Das wars!
Übrigens kommen die Mails vom Linuxforum bei mir im spamordner an von gmail... so nebenbei
hat jetzt nichts mit meinem mailserver zu tun