GNU/Linux >> LINUX-Kenntnisse >  >> Fedora

Fedora Linux:Ich habe Sendmail installiert, aber jetzt erhalte ich keine E-Mail-Benachrichtigungen, wenn ich mich anmelde?

Ich habe sendmail installiert Paket auf Fedora 23. Jetzt habe ich also /usr/sbin/sendmail das geht eigentlich irgendwie. Nur bekomme ich jetzt keine E-Mail-Benachrichtigungen in der Bash-Shell. Warum nicht?

BEARBEITEN:Ich dachte, die Bash-Benachrichtigung sei defekt (und habe mit esmtp gearbeitet, wie unten beschrieben). Die Benachrichtigung bei der Anmeldung war jedoch einfacher zu testen, daher habe ich das Problem leider verwechselt.

Die Benachrichtigung beim Login hat nicht funktioniert, aber ich denke, das ist eigentlich die Verantwortung von pam_mail, nicht von bash. Ich dachte, Benachrichtigungen bei der Anmeldung funktionierten mit esmtp, aber ich bemerke grep -r pam_mail /etc/pam.d zeigt keine Ergebnisse. Leider scheint die Aktivierung von pam_mail gemäß der Dokumentation nichts zu bewirken , obwohl es eigentlich immer drucken soll, z.B. „Keine Post“. Es hat auch einen debug Option, aber das hat weder dem Benutzer noch Syslog (auch bekannt als das Journal) etwas angezeigt.

mail alan; sleep 60 macht Benachrichtigung generieren.

Wenn ich jedoch mail alan; logout dann bekomme ich keine Benachrichtigung, wenn ich mich wieder anmelde. Auch nach sleep 60 . Offensichtlich ist dies unerwünscht.

Es scheint, als würde bash pam_mail annehmen funktioniert. Wenn also Mail zur Anmeldezeit verfügbar ist, stellt bash sicher, dass nicht ein zweites Mal für dieselbe E-Mail zu benachrichtigen.

Das eigentliche Problem ist also, dass pam_mail nicht funktioniert.

Diese Erkenntnis erforderte ausgiebige Tests, weil ich dumm bin.

Umfassende Tests

Wenn ich alan mail alan , öffnen Sie dann eine zweite Anmeldung und führen Sie sleep 60 aus , erhalte ich (nur) bei einer Anmeldung eine Benachrichtigung. Es ist offensichtlich kein Problem mit einem Logout-Skript, weil mail alan; sleep 60 funktioniert auch, wenn ich ein zweites Login öffne und mich sofort abmelde.

Das Testen mit dem Senden von E-Mails von einem zweiten Benutzer deutet darauf hin, dass die Benachrichtigungen nicht funktionieren, wenn Sie beim Senden der E-Mail nicht angemeldet sind.

Sobald bash eine Benachrichtigung angezeigt hat, zeigt es sie nicht erneut an, z. nach einem zweiten sleep 60 .

Ich dachte, es würde die Zugriffszeit der Datei mit der Änderungszeit vergleichen, aber das scheint nicht der Fall zu sein.

$ stat $MAIL
Datei:'/var/spool/mail/alan'
Größe:859 Blöcke:16 IO-Block:4096 reguläre Datei
Gerät:fd00h/64768d Inode:655929 Links:1
Zugriff:(0660/-rw-rw—-) Uid:( 1000/ alan) Gid:( 12/ mail)
Kontext:unconfined_u:object_r:mail_spool_t:s0
Zugriff:2016-05-12 22:17:28.907175410 +0100
Geändert:2016-05-12 22:18:03.177899774 +0100
Änderung:2016-05-12 22:18:03.177899774 +0100
Geburt:–

Umgebungsvariablen

Beispiel unten. Dies ist, nachdem ich eine Testmail an mich selbst gesendet habe. Wenn ich mich also anmelde, erwarte ich eine Benachrichtigung. Wenn ich fortfahre, mail auszuführen , es zeigt mir die Testmail wie erwartet.

[[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 installieren

Fedora Workstation wird mit einem nicht funktionierenden /bin/sendmail ausgeliefert (esmtp-Paket).

Es kann eingerichtet werden, indem man maildrop installiert und mda="maildrop -d %T" in /etc/esmtprc einstellt . Dies ermöglicht E-Mails von einem Benutzer an sich selbst und von root an jeden. Bei esmtp und maildrop zeigt bash E-Mail-Benachrichtigungen wie erwartet .

Verwandte:Warum machen Facebook-Benachrichtigungen immer noch Töne, auch nachdem ich „Ton abspielen, wenn jede neue Benachrichtigung empfangen wird“ deaktiviert habe?

Allerdings funktioniert esmtp nicht für Mails aus dem cron Dämon. esmtp protokolliert „Berechtigung verweigert“, wenn versucht wird, die zuzustellende Nachricht zu lesen. https://bugzilla.redhat.com/show_bug.cgi?id=1303305 Insbesondere beim Versuch, /dev/stdin erneut zu öffnen , von der im Allgemeinen erwartet wird, dass sie erfolgreich ist (entspricht dup() ). Es ist also wahrscheinlich SELinux, aber es wird keine SELinux (AVC)-Verweigerung protokolliert, es ist wahrscheinlich dontaudit .

Die Installation des alten sendmail-Pakets ersetzt den von esmtp bereitgestellten sendmail-Befehl. Ich dachte, das wäre eine einfache Möglichkeit, die neuen Fehler zu umgehen, aber jetzt habe ich einen weiteren Fehler :(.

Akzeptierte Antwort:

Die Konfiguration für die Berichterstattung über den Status von E-Mails zum Zeitpunkt der Anmeldung wird von pam_mail gehandhabt . Überprüfen Sie die entsprechende Datei (z. B. /etc/pam.d/ssh ) und vergewissern Sie sich, dass Sie eine Zeile haben, die etwa so aussieht:

session    optional     pam_mail.so standard noenv

Kann je nach Distribution unterschiedlich sein. Überprüfen Sie Ihre Distributionsdokumentation, um zu sehen, wie sie eingestellt werden sollte.


Fedora
  1. Fedora-Download

  2. So installieren Sie VLC unter Fedora Linux

  3. So installieren Sie Zoom unter Fedora Linux 35

  4. Linux-Betriebssystemdienst „sendmail“

  5. Holen Sie sich das Protokoll der mit mail() von PHP gesendeten E-Mails (sendmail?)

Installieren/aktualisieren Sie PHP 8.1 auf Fedora Linux 35

So installieren Sie PHP 8.1 auf Fedora 36 Linux

Installieren Sie Apache Maven auf Fedora Linux 35

Installieren Sie CMake unter Fedora Linux 35

So installieren Sie Python 3.10 unter Fedora Linux

So installieren Sie Webmin unter Fedora Linux