Я пытаюсь настроить почтовый сервер postfix. Почта для root доступна. Но при проверке почты для не-root пользователей я получаю следующую ошибку
/var/spool/mail/root: Отказано в доступе
Файл /var/spool/mail/$USER
присутствует для соответствующего пользователя, но команда mail по-прежнему ссылается на файл root.
Вывод 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
решение1
Так что проблема тут вообще не связана с postfix. Postfix на стороне сервера ведет себя правильно, а вот почтовый клиент ведет себя некорректно.
По умолчаниюmail
командаin будет использовать $MAIL
переменную окружения для определения местоположения почтового ящика (если вы не укажете это явно с помощью -f
параметра). В оболочке CentOS bash значение переменной $MAIL по умолчанию равно /var/spool/mail/$USER
. Фрагмент из man mail
.
ПОЧТА
Используется как почтовый ящик пользователя, если задано. В противном случае используется системно-зависимое значение по умолчанию. Может быть строкой protocol:// (см. команду folder для получения дополнительной информации).
ОП заявляет в комментариикоторый он использовал su myuser
от пользователя root для смены пользователя в оболочке. К сожалению, это имеет некоторый эффект. Переменная $MAIL по-прежнему указывает на /var/spool/mail/root
. Таким образом, путь к почтовому ящику не изменился, но приоритет был сброшен до пользователя non-root.
Чтобы решить эту проблему, вы можете использовать su -l myuser
для смены пользователя в оболочке. Фрагмент из man su
.
-, -l, --login
сделать оболочку оболочкой входа
Без этого -l
переменная окружения не изменится.
Вывод: оба ПО (postfix и bsd-mailx) ведут себя правильно. Проблема в OP, который не установил переменную окружения перед сменой пользователя.