postfix 메일 서버를 구성하려고 합니다. 루트의 메일에 액세스할 수 있습니다. 하지만 루트가 아닌 사용자의 메일을 확인하는 동안 다음 오류가 발생합니다.
/var/spool/mail/root: 권한이 거부되었습니다.
해당 사용자에 대한 파일이 /var/spool/mail/$USER
존재하지만 여전히 mail 명령은 루트의 파일을 참조합니다.
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
우편
설정된 경우 사용자의 사서함으로 사용됩니다. 그렇지 않으면 시스템에 따른 기본값이 사용됩니다. 프로토콜:// 문자열일 수 있습니다(자세한 내용은 폴더 명령 참조).
댓글의 OP 상태그는 su myuser
쉘에서 사용자를 변경하기 위해 루트 사용자로부터 사용했습니다. 불행히도 이것은 어느 정도 영향을 미칩니다. $MAIL 변수는 여전히 /var/spool/mail/root
. 따라서 사서함 경로는 변경되지 않았지만 루트가 아닌 사용자에게 권한이 삭제되었습니다.
문제를 해결하려면 를 사용하여 su -l myuser
셸에서 사용자를 변경할 수 있습니다. .man su
-, -l, --로그인
쉘을 로그인 쉘로 만들기
가 없으면 -l
환경 변수가 자체적으로 변경되지 않습니다.
결론: 두 소프트웨어(postfix 및 bsd-mailx) 모두 올바르게 작동했습니다. 문제는 사용자를 변경하기 전에 환경 변수를 설정하지 못한 OP입니다.