Fedora Linux:我安裝了 sendmail 但現在登錄時沒有收到郵件通知
我在 Fedora 23 上安裝了這個
sendmail
包。所以現在我有了/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 顯示了一個通知,它就不會再次顯示它,例如在 second 之後
sleep 60
。我認為它可能會將文件的訪問時間與修改時間進行比較,但似乎並非如此。
$ stat $ 郵件文件:’/var/spool/mail/alan’ 大小:859 塊:16 IO 塊:4096 正常文件設備:fd00h/64768d 索引節點: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 出生:-
環境變數
下面的例子。這是在我給自己發送了一封測試郵件之後。因此,當我登錄時,我希望收到通知。如果我繼續執行
[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 包)。可以通過安裝 maildrop 和設置來設置
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 命令。我認為這是繞過新錯誤的一種簡單方法,但現在我又遇到了另一個錯誤:(。
登錄時報告郵件狀態的配置由
pam_mail
. 檢查相應的文件(例如/etc/pam.d/ssh
)並確保您有一行看起來像這樣:session optional pam_mail.so standard noenv
根據您的分佈,可能會有所不同。檢查您的發行版文件以了解它應該如何設置。