Ich versuche, einen Postfix-Mailserver zu konfigurieren. Auf E-Mails für Root-Benutzer kann zugegriffen werden. Beim Überprüfen der E-Mails für Nicht-Root-Benutzer erhalte ich jedoch die folgende Fehlermeldung
/var/spool/mail/root: Berechtigung verweigert
Die Datei /var/spool/mail/$USER
ist für den jeweiligen Benutzer vorhanden, der Mail-Befehl verweist jedoch weiterhin auf die Datei des Root-Benutzers.
Ausgabe von postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
html_directory = no
inet_interfaces = all
inet_protocols = all
mail_owner = postfix
mail_spool_directory = /var/spool/mail
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
mydomain = domain.in
myhostname = server.domain.in
mynetworks = 166.64.32.22, 127.0.0.0/8
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
sample_directory = /usr/share/doc/postfix-2.6.6/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
unknown_local_recipient_reject_code = 550
Antwort1
Das Problem hier hat also überhaupt nichts mit Postfix zu tun. Postfix verhält sich serverseitig korrekt, aber der Mail-Client verhält sich fehlerhaft.
Standardmäßigmail
Befehl$MAIL
in wird die Umgebungsvariable verwendet , um den Speicherort des Postfachs zu bestimmen (es sei denn, Sie geben dies explizit mit -f
einem Parameter an). In der CentOS-Bash-Shell ist der Standardwert der Variable $MAIL /var/spool/mail/$USER
. Ausschnitt aus man mail
.
Wird als Postfach des Benutzers verwendet, sofern festgelegt. Andernfalls wird ein systemabhängiger Standard verwendet. Kann eine Zeichenfolge vom Typ „protocol://“ sein (weitere Informationen finden Sie im Ordnerbefehl).
OP gibt im Kommentar andass er su myuser
den Root-Benutzer verwendet hat, um den Benutzer in der Shell zu ändern. Leider hat dies einige Auswirkungen. Die Variable $MAIL zeigt immer noch auf /var/spool/mail/root
. Der Postfachpfad hat sich also nicht geändert, aber das Privileg wurde auf den Nicht-Root-Benutzer reduziert.
Um das Problem zu beheben, können Sie su -l myuser
den Benutzer in der Shell ändern. Ausschnitt aus man su
.
-, -l, --login
Machen Sie die Shell zu einer Login-Shell
Ohne -l
ändert sich die Umgebungsvariable nicht.
Fazit: Beide Softwareprogramme (Postfix und BSD-MailX) verhielten sich korrekt. Das Problem ist OP, der es versäumt, die Umgebungsvariable vor dem Benutzerwechsel festzulegen.