Eu instalei o pacote sendmail
no Fedora 23. Então agora eu tenho /usr/sbin/sendmail
que realmente funciona. Exceto agora eu não recebo notificações de correio no bash shell. Porque não?
EDIT: Eu pensei que a notificação de bash foi quebrada (e trabalhou com esmtp, conforme descrito abaixo). No entanto, a notificação no login foi mais fácil de testar, por isso receio ter confundido o problema.
A notificação no login não funcionou, mas acho que é responsabilidade do pam_mail, não do bash. Achei que as notificações no login funcionavam com o esmtp, mas percebo que grep -r pam_mail /etc/pam.d
não mostra nenhum resultado. Infelizmente, ativar o pam_mail de acordo com a documentação não parece fazer qualquer coisa , embora deva sempre ser impresso, por exemplo, "Nenhum email". Ele também tem uma opção debug
, mas isso não mostra nada ao usuário nem ao syslog (também conhecido como periódico).
mail alan; sleep 60
faz gerar uma notificação.
No entanto, se eu mail alan; logout
, não receberei nenhuma notificação quando eu fizer login novamente. Mesmo depois de sleep 60
. Obviamente, isso é indesejável.
Parece que o bash assume que pam_mail
está funcionando. Portanto, se o e-mail estiver disponível no momento do login, o bash garante que não seja notificado pela segunda vez para o mesmo e-mail.
O problema real é que o pam_mail não está funcionando.
Essa realização exigiu testes exaustivos porque sou burro.
Exames exaustivos
Se eu mail alan
, em seguida, abrir um segundo login e executar sleep 60
, receberei uma notificação em um login (apenas). Não é obviamente um problema com um script de logout, porque mail alan; sleep 60
funciona mesmo se eu abrir um segundo login e efetuar o logout imediatamente.
O teste ao enviar e-mails de um segundo usuário sugere que as notificações não funcionem se você não estiver conectado quando o e-mail for enviado.
Uma vez que o bash exibiu uma notificação, ele não está sendo exibido novamente. depois de um segundo sleep 60
.
Eu pensei que poderia estar comparando o tempo de acesso do arquivo à hora da modificação, mas esse não parece ser o caso.
$ stat $ MAIL
Arquivo: "/ var / spool / mail / alan"
Tamanho: 859 Blocos: 16 Bloco IO: 4096 arquivo regular
Equipamento: fd00h / 64768d Inode: 655929 Links: 1
Acesso: (0660 / -rw-rw ----) Uid: (1000 / alan) Gid: (12 / mail)
Contexto: unconfined_u: object_r: mail_spool_t: s0
Acesso: 2016-05-12 22: 17: 28.907175410 +0100
Alterar: 2016-05-12 22: 18: 03.177899774 +0100
Alteração: 2016-05-12 22: 18: 03.177899774 +0100
Nascimento: -
Variáveis de ambiente
Exemplo abaixo. Isso foi depois que enviei uma mensagem de teste para mim mesmo. Então, quando eu fizer login, espero uma notificação. Se eu for executar mail
, ele mostrará o e-mail de teste conforme o esperado.
[alan@localhost ~]$ ssh alan-nuc
Last login: Thu May 12 20:50:54 2016 from 172.16.9.242
[alan@alan-nuc ~]$ echo $MAIL
/var/spool/mail/alan
[alan@alan-nuc ~]$ ls -l $MAIL
-rw-rw----. 1 alan mail 850 May 12 20:56 /var/spool/mail/alan
[alan@alan-nuc ~]$ echo $MAILCHECK
60
[alan@alan-nuc ~]$ echo $MAILPATH
[alan@alan-nuc ~]$
Instalando o sendmail
O Fedora Workstation vem com um /bin/sendmail
(pacote esmtp) que não funciona.
Ele pode ser configurado por maildrop e configuração mda="maildrop -d %T" in /etc/esmtprc
. Isso permite enviar mensagens de um usuário para você mesmo e da raiz para qualquer pessoa. Com o esmtp e o maildrop, o bash mostra notificações de correio conforme o esperado .
No entanto, o esmtp não funciona para e-mails do daemon cron
. O esmtp registra "permissão negada" ao tentar ler a mensagem para entregar. link Especificamente, ao tentar reabrir /dev/stdin
, que geralmente é esperado que seja bem-sucedido (equivalente a %código%). Portanto, é provavelmente o SELinux, mas não há nenhuma negação do SELinux (AVC) registrada, provavelmente é dup()
.
A instalação do antigo pacote sendmail substitui o comando sendmail fornecido pelo esmtp. Eu pensei que seria uma maneira simples de contornar os novos bugs, mas agora eu tenho outro bug: (.