GNU/Linux >> Belajar Linux >  >> Fedora

Fedora Linux:Saya Menginstal Sendmail Tapi Sekarang Saya Tidak Mendapatkan Pemberitahuan Email Saat Saya Masuk?

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 .

Terkait:Mengapa notifikasi Facebook masih mengeluarkan suara bahkan setelah saya mematikan "Putar suara saat setiap notifikasi baru diterima"?

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.


Fedora
  1. Cara Menginstal VLC di Fedora Linux

  2. Cara Menginstal Zoom di Fedora Linux 35

  3. Layanan OS Linux 'kirim'

  1. Unduh Fedora

  2. Bagaimana cara menginstal Oracle Virtual Box 5.0 di (Ubuntu) Linux

  3. Dapatkan log email yang dikirim dengan mail() dari PHP (sendmail?)

  1. Yang Baru di Stasiun Kerja Fedora 32

  2. Cara Menginstal PostgreSQL 14 di Fedora Linux

  3. Fedora 28 Akhirnya Dirilis, Download Sekarang!