GNU/Linux >> Linux の 問題 >  >> Fedora

Fedora Linux:Sendmailをインストールしましたが、ログインしてもメール通知が届きませんか?

sendmailをインストールしました Fedora 23のパッケージです。これで、 / usr / sbin / sendmailができました。 それは実際に一種の作品です。今を除いて、bashシェルでメール通知を受け取りません。なぜですか?

編集:私はbash通知が壊れていると思いました(そして以下に説明するようにesmtpで動作しました)。ただし、ログイン時の通知の方がテストが簡単だったため、問題を混乱させたのではないかと思います。

ログイン時の通知は機能しませんでしたが、それは実際にはpam_mailの責任であり、bashの責任ではないと思います。ログイン時の通知はesmtpで機能すると思いましたが、 grep -r pam_mail/etc/pam.dに気づきました。 結果は表示されません。残念ながら、ドキュメントに従ってpam_mailを有効にしても、何もしないようです。 、常に印刷することになっている場合でも、たとえば「メールなし」。 debugもあります オプションですが、ユーザーにもsyslog(別名ジャーナル)にも何も表示されませんでした。

メールアラン;睡眠60 します 通知を生成します。

ただし、 alanにメールを送信すると、ログアウト その後、再度ログインしても通知は届きません。 sleep 60の後でも 。明らかにこれは望ましくありません。

bashはpam_mailを想定しているようです 仕事中。したがって、ログイン時にメールが利用できる場合、bashはしないようにします。 同じメールについてもう一度通知します。

したがって、本当の問題はpam_mailが機能していないことです。

私は愚かなので、この実現には徹底的なテストが必要でした。

徹底的なテスト

mail alanの場合 、次に2回目のログインを開き、 sleep 60を実行します 、1回のログインで通知が届きます(のみ)。 mail alan;であるため、ログアウトスクリプトでは明らかに問題にはなりません。睡眠60 2回目のログインを開いてすぐにログアウトしても、機能します。

2人目のユーザーからメールを送信してテストすると、メールの送信時にログインしていないと通知が機能しないことがわかります。

bashが通知を表示すると、それは再び表示されません。たとえば、 2回目のsleep60の後 。

ファイルのアクセス時間と変更時間を比較しているのではないかと思いましたが、そうではないようです。

$ stat $ MAIL
ファイル:'/ var / spool / mail / alan'
サイズ:859ブロック:16 IOブロック:4096通常のファイル
デバイス:fd00h / 64768d iノード: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を実行し続けると 、期待どおりにテストメールが表示されます。

[[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] ~]$ 

sendmailのインストール

Fedora Workstationには、機能しない / bin / sendmailが付属しています。 (esmtpパッケージ)。

maildropをインストールし、/ etc / esmtprcにmda="maildrop -d%T"を設定することで設定できます。 。これにより、ユーザーから自分自身へのメール、およびルートから誰へのメールも可能になります。 esmtpとmaildropを使用すると、bashは期待どおりにメール通知を表示します

関連:「新しい通知を受信するたびに音を鳴らす」をオフにしても、Facebookの通知が鳴るのはなぜですか?

ただし、esmtpは cronからのメールでは機能しません デーモン。 esmtpは、配信するメッセージを読み取ろうとすると、「permissiondenied」をログに記録します。 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

ディストリビューションによって異なる場合があります。ディストリビューションのドキュメントをチェックして、設定方法を確認してください。


Fedora
  1. FedoraLinuxにVLCをインストールする方法

  2. FedoraLinux35にZoomをインストールする方法

  3. Linux OS サービス「sendmail」

  1. Fedoraダウンロード

  2. Oracle Virtual Box 5.0を(Ubuntu)Linuxにインストールする方法

  3. PHP から mail() で送信されたメールのログを取得する (sendmail?)

  1. Fedora32ワークステーションの新機能

  2. FedoraLinuxにPostgreSQL14をインストールする方法

  3. Fedora 28がついにリリースされました。今すぐダウンロードしてください!