Instalé sendmail
paquete en Fedora 23. Así que ahora tengo /usr/sbin/sendmail
eso realmente funciona. Excepto que ahora no recibo notificaciones por correo en el shell bash. ¿Por qué no?
EDITAR:pensé que la notificación de bash estaba rota (y funcionaba con esmtp, como se describe a continuación). Sin embargo, la notificación al iniciar sesión fue más fácil de probar, por lo que me temo que confundí el problema.
La notificación al iniciar sesión no funcionó, pero creo que en realidad es responsabilidad de pam_mail, no de bash. Pensé que las notificaciones al iniciar sesión funcionaban con esmtp, pero observé grep -r pam_mail /etc/pam.d
no muestra ningún resultado. Desafortunadamente, habilitar pam_mail según la documentación no parece hacer nada , aunque se supone que debe imprimirse siempre, p. “Sin correo”. También tiene un debug
opción, pero eso no mostró nada al usuario ni syslog (también conocido como el diario).
mail alan; sleep 60
lo hace generar una notificación.
Sin embargo, si envío un mail alan; logout
entonces no recibo ninguna notificación cuando vuelvo a iniciar sesión. Incluso después de sleep 60
. Obviamente esto no es deseable.
Parece que bash asume pam_mail
está trabajando. Entonces, si el correo está disponible en el momento del inicio de sesión, entonces bash se asegura de que no para notificar una segunda vez por el mismo correo.
Entonces, el verdadero problema es que pam_mail no funciona.
Esta realización requirió pruebas exhaustivas porque soy tonto.
Pruebas exhaustivas
Si mail alan
, luego abra un segundo inicio de sesión y ejecute sleep 60
, recibo una notificación en un inicio de sesión (solo). Obviamente, no es un problema con un script de cierre de sesión, porque mail alan; sleep 60
funciona incluso si abro un segundo inicio de sesión y lo cierro inmediatamente.
La prueba con el envío de correo de un segundo usuario sugiere que las notificaciones no funcionan si no ha iniciado sesión cuando se envía el correo.
Una vez que bash ha mostrado una notificación, no la vuelve a mostrar, p. después de un segundo sleep 60
.
Pensé que podría estar comparando el tiempo de acceso del archivo con el tiempo de modificación, pero ese no parece ser el caso.
$ stat $MAIL
Archivo:'/var/spool/mail/alan'
Tamaño:859 Bloques:16 Bloque IO:4096 archivo normal
Dispositivo:fd00h/64768d Inodo:655929 Enlaces:1
Acceso:(0660/-rw-rw—-) Uid:( 1000/ alan) Gid:( 12/ mail)
Contexto:unconfined_u:object_r:mail_spool_t:s0
Acceso:2016-05-12 22:17:28.907175410 +0100
Modificar:2016-05-12 22:18:03.177899774 +0100
Cambiar:2016-05-12 22:18:03.177899774 +0100
Nacimiento:–
Variables de entorno
Ejemplo a continuación. Esto es después de que me envié un correo de prueba. Entonces, cuando inicio sesión, espero una notificación. Si continúo ejecutando mail
, me muestra el correo de prueba como se esperaba.
[[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] ~]$
Instalando sendmail
Fedora Workstation se envía con un /bin/sendmail
que no funciona (paquete esmtp).
Se puede configurar instalando maildrop y configurando mda="maildrop -d %T" in /etc/esmtprc
. Esto permite enviar correo de un usuario a sí mismo y de raíz a cualquier persona. Con esmtp y maildrop, bash muestra las notificaciones de correo como se esperaba .
Sin embargo, esmtp no funciona para correos del cron
demonio. esmtp registra "permiso denegado" cuando intenta leer el mensaje para entregar. https://bugzilla.redhat.com/show_bug.cgi?id=1303305 Específicamente, al intentar volver a abrir /dev/stdin
, que generalmente se espera que tenga éxito (equivalente a dup()
). Entonces, probablemente sea SELinux, pero no hay ninguna denegación de SELinux (AVC) registrada, probablemente sea dontaudit
.
La instalación del antiguo paquete sendmail reemplaza el comando sendmail proporcionado por esmtp. Pensé que sería una forma sencilla de evitar los nuevos errores, pero ahora tengo otro error :(.
Respuesta aceptada:
La configuración para informar sobre el estado del correo en el momento del inicio de sesión está a cargo de pam_mail
. Verifique el archivo correspondiente (por ejemplo, /etc/pam.d/ssh
) y asegúrese de tener una línea similar a esta:
session optional pam_mail.so standard noenv
Puede ser diferente dependiendo de su distribución. Consulte la documentación de su distribución para ver cómo debe configurarse.