Fedora Linux:我安装了 sendmail,但现在登录时没有收到邮件通知

Fedora Linux:我安装了 sendmail,但现在登录时没有收到邮件通知

sendmail在 Fedora 23 上安装了该软件包。所以现在我已经可以/usr/sbin/sendmail正常工作了。但现在我在 bash shell 中没有收到邮件通知。为什么不?


编辑:我认为 bash 通知已损坏(并与 esmtp 一起使用,如下所述)。然而,登录时的通知更容易测试,所以我担心我混淆了这个问题。

登录时的通知不起作用,但我认为这实际上是 pam_mail 的责任,而不是 bash 的责任。我认为登录时的通知确实适用于 esmtp,但我注意到grep -r pam_mail /etc/pam.d没有显示任何结果。不幸的是,按照文档启用 pam_mail 似乎不起作用任何事物,即使它应该总是打印,例如“无邮件”。它还有一个debug选项,但没有向用户或系统日志(又称日志)显示任何内容。

mail alan; sleep 60 生成通知。

但是,如果我mail alan; logout再次登录时不会收到任何通知。即使sleep 60。显然这是不可取的。

看起来 bash 假设pam_mail正在工作。因此,如果登录时邮件可用,那么 bash 会确保不是对同一封邮件进行第二次通知。

所以真正的问题是 pam_mail 不起作用。

这种认识需要进行详尽的测试,因为我很笨。

详尽的测试

如果我mail alan,然后打开第二个登录并运行sleep 60,我会在一次登录中收到通知(仅)。这显然不是注销脚本的问题,因为mail alan; sleep 60即使我打开第二个登录并立即注销它也可以工作。

从第二个用户发送邮件进行的测试表明,如果您在发送邮件时未登录,则通知不起作用。

一旦 bash 显示了通知,它就不会再显示它,例如在一秒钟之后sleep 60

我认为它可能会将文件的访问时间与修改时间进行比较,但情况似乎并非如此。

$ stat $MAIL 文件:'/var/spool/mail/alan' 大小:859 块:16 IO 块:4096 常规文件设备:fd00h/64768d Inode:655929 链接:1 访问:(0660/-rw-rw-- --) Uid: ( 1000/ alan) Gid: ( 12/ mail) 上下文: unconfined_u:object_r:mail_spool_t:s0 访问: 2016-05-12 22:17:28.907175410 +0100 修改: 2016-05-12 22:18 :03.177899774 +0100 更改: 2016-05-12 22:18:03.177899774 +0100 出生: -

环境变量

下面的例子。这是我给自己发送了一封测试邮件之后的结果。因此,当我登录时,我希望收到通知。如果我继续运行mail,它会按预期显示测试邮件。

[alan@localhost ~]$ ssh alan-nuc
Last login: Thu May 12 20:50:54 2016 from 172.16.9.242

[alan@alan-nuc ~]$ echo $MAIL
/var/spool/mail/alan
[alan@alan-nuc ~]$ ls -l $MAIL
-rw-rw----. 1 alan mail 850 May 12 20:56 /var/spool/mail/alan
[alan@alan-nuc ~]$ echo $MAILCHECK
60
[alan@alan-nuc ~]$ echo $MAILPATH

[alan@alan-nuc ~]$ 

安装发送邮件

Fedora Workstation 附带一个非工作/bin/sendmail(esmtp 包)。

可以通过 install maildrop 和 setting 来设置mda="maildrop -d %T" in /etc/esmtprc。这允许用户向自己发送邮件,也可以从 root 向任何人发送邮件。 使用 esmtp 和 maildrop,bash 按预期显示邮件通知

但是 esmtp 不适用于来自cron守护进程的邮件。尝试读取要传递的消息时,esmtp 会记录“权限被拒绝”。 https://bugzilla.redhat.com/show_bug.cgi?id=1303305 具体来说,当尝试重新打开 时/dev/stdin,通常预计会成功(相当于dup())。所以它可能是 SELinux,但没有记录 SELinux (AVC) 拒绝,它可能是dontaudit.

安装旧的 sendmail 软件包将替换 esmtp 提供的 sendmail 命令。我认为这将是绕过新错误的简单方法,但现在我又遇到了另一个错误:(。

答案1

登录时报告邮件状态的配置由 处理pam_mail。检查相应的文件(例如/etc/pam.d/ssh)并确保有一行看起来像这样:

session    optional     pam_mail.so standard noenv

根据您的发行版的不同,可能会有所不同。检查您的发行版文档以了解应如何设置。

相关内容