GNU/Linux >> Linux Esercitazione >  >> Fedora

Fedora Linux:ho installato Sendmail ma ora non ricevo notifiche di posta quando accedo?

Ho installato sendmail pacchetto su Fedora 23. Quindi ora ho /usr/sbin/sendmail quel tipo di lavoro funziona davvero. Tranne che ora non ricevo notifiche di posta nella shell bash. Perché no?

EDIT:pensavo che la notifica bash fosse interrotta (e funzionasse con esmtp, come descritto di seguito). Tuttavia, la notifica all'accesso è stata più facile da testare, quindi temo di aver confuso il problema.

La notifica all'accesso non ha funzionato, ma penso che in realtà sia responsabilità di pam_mail, non bash. Pensavo che le notifiche all'accesso funzionassero con esmtp, ma ho notato grep -r pam_mail /etc/pam.d non mostra alcun risultato. Sfortunatamente, l'abilitazione di pam_mail come da documentazione non sembra fare nulla , anche se dovrebbe sempre stampare, ad es. “Niente posta”. Ha anche un debug opzione, ma non mostrava nulla all'utente né al syslog (ovvero il journal).

mail alan; sleep 60 fa generare una notifica.

Tuttavia, se mail alan; logout quindi non ricevo alcuna notifica quando accedo di nuovo. Anche dopo sleep 60 . Ovviamente questo è indesiderabile.

Sembra che bash presuppone pam_mail sta lavorando. Quindi, se la posta è disponibile al momento dell'accesso, bash si assicura non per notificare una seconda volta per la stessa posta.

Quindi il vero problema è che pam_mail non funziona.

Questa realizzazione ha richiesto test esaurienti perché sono stupido.

Test esaustivi

Se mail alan , quindi apri un secondo accesso ed esegui sleep 60 , ricevo una notifica in un accesso (solo). Non è ovviamente un problema con uno script di logout, perché mail alan; sleep 60 funziona anche se apro un secondo accesso e lo disconnetto immediatamente.

Il test con l'invio di posta da un secondo utente suggerisce che le notifiche non funzionano se non hai effettuato l'accesso quando la posta viene inviata.

Una volta che bash ha mostrato una notifica, non la mostra più, ad es. dopo un secondo sleep 60 .

Ho pensato che potesse confrontare il tempo di accesso del file con il tempo di modifica, ma non sembra essere così.

$ stat $MAIL
File:'/var/spool/mail/alan'
Dimensioni:859 Blocchi:16 IO Blocco:4096 file normale
Dispositivo:fd00h/64768d Inode:655929 Collegamenti:1
Accesso:(0660/-rw-rw—-) Uid:( 1000/ alan) Gid:( 12/ mail)
Contesto:unconfined_u:object_r:mail_spool_t:s0
Accesso:2016-05-12 22:17:28.907175410 +0100
Modifica:2016-05-12 22:18:03.177899774 +0100
Modifica:2016-05-12 22:18:03.177899774 +0100
Nascita:–

Variabili d'ambiente

Esempio sotto. Questo è dopo che ho inviato una mail di prova a me stesso. Quindi, quando accedo, mi aspetto una notifica. Se continuo a eseguire mail , mi mostra la mail di prova come previsto.

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

Installazione di sendmail

Fedora Workstation viene fornita con un /bin/sendmail non funzionante (pacchetto esmtp).

Può essere configurato installando maildrop e impostando mda="maildrop -d %T" in /etc/esmtprc . Ciò consente la posta da un utente a se stesso e da root a chiunque. Con esmtp e maildrop, bash mostra le notifiche di posta come previsto .

Correlati:perché le notifiche di Facebook continuano a emettere suoni anche dopo aver disattivato "Riproduci un suono alla ricezione di ogni nuova notifica"?

Tuttavia esmtp non funziona per le e-mail da cron demone. esmtp registra "permesso negato" quando si tenta di leggere il messaggio da consegnare. https://bugzilla.redhat.com/show_bug.cgi?id=1303305 In particolare, quando si tenta di riaprire /dev/stdin , che generalmente dovrebbe avere successo (equivalente a dup() ). Quindi probabilmente è SELinux, ma non è stato registrato alcun rifiuto SELinux (AVC), probabilmente è dontaudit .

L'installazione del vecchio pacchetto sendmail sostituisce il comando sendmail fornito da esmtp. Ho pensato che sarebbe stato un modo semplice per aggirare i nuovi bug, ma ora ho un altro bug :(.

Risposta accettata:

La configurazione per la segnalazione dello stato della posta al momento dell'accesso è gestita da pam_mail . Controlla il file corrispondente (ad es. /etc/pam.d/ssh ) e assicurati di avere una linea simile a questa:

session    optional     pam_mail.so standard noenv

Potrebbe essere diverso a seconda della distribuzione. Controlla la documentazione della tua distribuzione per vedere come dovrebbe essere impostata.


Fedora
  1. Scarica Fedora

  2. Come installare VLC su Fedora Linux

  3. Come installare Zoom in Fedora Linux 35

  4. Servizio del sistema operativo Linux "invia posta"

  5. Ottieni il registro della posta inviata con mail() da PHP (sendmail?)

Installa/aggiorna PHP 8.1 su Fedora Linux 35

Come installare PHP 8.1 su Fedora 36 Linux

Installa Apache Maven su Fedora Linux 35

Installa CMake su Fedora Linux 35

Come installare Python 3.10 su Fedora Linux

Come installare Webmin su Fedora Linux