Saya menginstal sendmail
paket di Fedora 23. Jadi sekarang saya punya /usr/sbin/sendmail
itu benar-benar berfungsi. Kecuali sekarang saya tidak mendapatkan pemberitahuan email di bash shell. Mengapa tidak?
EDIT:Saya pikir pemberitahuan bash rusak (dan berfungsi dengan esmtp, seperti yang dijelaskan di bawah). Namun pemberitahuan saat masuk lebih mudah untuk diuji, jadi saya khawatir saya mengacaukan masalahnya.
Notifikasi saat login tidak berfungsi, tapi menurut saya itu sebenarnya tanggung jawab pam_mail, bukan bash. Saya pikir notifikasi saat login berfungsi dengan esmtp, tetapi saya perhatikan grep -r pam_mail /etc/pam.d
tidak menunjukkan hasil apa pun. Sayangnya mengaktifkan pam_mail sesuai dokumentasi tampaknya tidak melakukan apa pun , meskipun seharusnya selalu dicetak, mis. “Tidak ada surat”. Ia juga memiliki debug
opsi, tetapi itu tidak menampilkan apa pun kepada pengguna atau syslog (alias jurnal).
mail alan; sleep 60
memang buat notifikasi.
Namun jika saya mail alan; logout
maka saya tidak mendapatkan pemberitahuan apa pun ketika saya masuk lagi. Bahkan setelah sleep 60
. Jelas ini tidak diinginkan.
Sepertinya bash mengasumsikan pam_mail
sedang bekerja. Jadi jika email tersedia saat login, maka bash memastikan tidak untuk memberi tahu kedua kalinya untuk email yang sama.
Jadi masalah sebenarnya adalah pam_mail tidak berfungsi.
Kesadaran ini membutuhkan tes yang mendalam karena saya bodoh.
Uji lengkap
Jika saya mail alan
, lalu buka login kedua dan jalankan sleep 60
, saya mendapatkan notifikasi dalam satu kali login (hanya). Ini jelas bukan masalah dengan skrip logout, karena mail alan; sleep 60
berfungsi bahkan jika saya membuka login kedua dan langsung logout.
Pengujian dengan mengirim email dari pengguna kedua, menunjukkan bahwa notifikasi tidak berfungsi jika Anda tidak masuk saat email dikirim.
Setelah bash menampilkan pemberitahuan, itu tidak menampilkannya lagi, mis. setelah satu detik sleep 60
.
Saya pikir ini mungkin membandingkan waktu akses file dengan waktu modifikasi, tetapi tampaknya tidak demikian.
$stat $MAIL
File:'/var/spool/mail/alan'
Ukuran:859 Blok:16 IO Blok:4096 file biasa
Perangkat:fd00h/64768d Inode:655929 Tautan:1
Akses:(0660/-rw-rw—-) Uid:( 1000/ alan) Gid:( 12/ mail)
Konteks:unconfined_u:object_r:mail_spool_t:s0
Akses:05-12-2016 22:17:28.907175410 +0100
Ubah:05-12-2016 22:18:03.177899774 +0100
Ubah:05-12-2016 22:18:03.177899774 +0100
Lahir:–
Variabel lingkungan
Contoh di bawah. Ini setelah saya mengirim email percobaan ke diri saya sendiri. Jadi ketika saya masuk, saya mengharapkan pemberitahuan. Jika saya terus menjalankan mail
, ini menunjukkan kepada saya email percobaan seperti yang diharapkan.
[[email protected] ~]$ ssh alan-nuc
Last login: Thu May 12 20:50:54 2016 from 172.16.9.242
[[email protected] ~]$ echo $MAIL
/var/spool/mail/alan
[[email protected] ~]$ ls -l $MAIL
-rw-rw----. 1 alan mail 850 May 12 20:56 /var/spool/mail/alan
[[email protected] ~]$ echo $MAILCHECK
60
[[email protected] ~]$ echo $MAILPATH
[[email protected] ~]$
Menginstal sendmail
Fedora Workstation dikirimkan dengan /bin/sendmail
yang tidak berfungsi (paket esmtp).
Itu dapat diatur dengan menginstal maildrop dan mengatur mda="maildrop -d %T" in /etc/esmtprc
. Ini memungkinkan email dari pengguna ke dirinya sendiri, dan dari root ke siapa saja. Dengan esmtp dan maildrop, bash menampilkan pemberitahuan email seperti yang diharapkan .
Namun esmtp tidak berfungsi untuk email dari cron
daemon. esmtp mencatat "izin ditolak" ketika mencoba membaca pesan yang akan dikirim. https://bugzilla.redhat.com/show_bug.cgi?id=1303305 Khususnya, ketika mencoba membuka kembali /dev/stdin
, yang umumnya diharapkan berhasil (setara dengan dup()
). Jadi mungkin SELinux, tetapi tidak ada log penolakan SELinux (AVC), mungkin dontaudit
.
Menginstal paket sendmail lama menggantikan perintah sendmail yang disediakan oleh esmtp. Saya pikir itu akan menjadi cara sederhana untuk melewati bug baru, tetapi sekarang saya memiliki bug lain :(.
Jawaban yang Diterima:
Konfigurasi untuk melaporkan status email saat login ditangani oleh pam_mail
. Periksa file yang sesuai (mis. /etc/pam.d/ssh
) dan pastikan Anda memiliki garis yang terlihat seperti ini:
session optional pam_mail.so standard noenv
Mungkin berbeda tergantung pada distribusi Anda. Periksa dokumentasi distro Anda untuk melihat cara menyetelnya.