我正在尝试在我的 fedora 20 上设置邮件。每次我尝试发送测试邮件时,它都会告诉我权限被拒绝/usr/sbin/sendmail
。
我检查了权限,这是输出:
[root@localhost uone]# ls -ld /usr/sbin/sendmail
drwxr-sr-x. 2 uone uone 4096 Jun 14 17:42 /usr/sbin/sendmail
当我检查日志时/var/logs/mail
,我得到了这个
[root@localhost uone]# ls /var/log/maillog
/var/log/maillog
和
[root@localhost home]# cat /var/log/maillog
[root@localhost home]#
跑步ls -l
给了我这个
[root@localhost home]# ls -l /var/log/maillog
-rw-------. 1 root root 0 Jul 6 11:27 /var/log/maillog
ls -l
在 sendmail 目录上做一个给我这个
[root@localhost sbin]# ls -l | grep sendmail
drwxr-sr-x. 2 uone uone 4096 Jun 14 17:42 sendmail lrwxrwxrwx. 1 root root 15 Jul 12 19:04 sendmail.ssmtp -> /usr/sbin/ssmtp
我有两个问题:
我在设置“邮件”时遗漏了什么吗?在尝试发送邮件之前我还需要做什么吗?
如何获取日志以准确了解发生了什么情况?
答案1
您的权限问题不是文件权限问题,而是 SELinux 不允许 sendmail 可执行文件访问文件系统上特定位置的文件。处理这些问题最好的朋友是使用 SELinux 疑难解答 GUI。
$ sealert -b
然后,您需要按照建议将必要的上下文添加到您的文件系统中以安抚 SELinux。
笔记:在上面的示例中,我选择了第二个选项,并将运行命令semanage
并按restorecon
描述修复我的问题。您需要对您的sendmail
问题执行相同的操作。
费多拉的一部分?
是的,SELinux,因此用于排除故障的工具是所有 Red Hat 发行版的一部分。每当我无法找到给定可执行文件的包名称时,我都会使用命令repoquery
。
$ repoquery -qf */sealert
setroubleshoot-server-0:3.2.17-1.fc20.x86_64
setroubleshoot-server-0:3.2.14-2.fc20.x86_64
作为 GUI 运行的问题
如果您在作为 GUI 运行时遇到问题,sealert
您可以通过终端返回运行它,如下所示:
$ sudo sealert -a /var/log/audit/audit.log | less
然后,您必须查看特定问题的输出,并使用建议的命令来修复您的 SELinux 问题。您正在寻找表达以下内容的台词:
***** 插件 openvpn(47.5 置信度)建议 ****************************
具有较高“置信度”值的操作是您可能想要采取的操作。这些行后面是“修复”SELinux 问题的命令,例如:
$ sudo semanage fcontext -a -t home_cert_t /home/slm/somedom.com.ca.crt
$ sudo restorecon -R -v /home/slm/somedom.com.ca.crt