Após adicionar mais registros verbosos, recebi dicas suficientes do sistema (e de @Michael Hampton) para descobrir isso.
yum install setroubleshoot setools
Isso gera muito mais informações em / var / log / messages e oferece ferramentas como:
sealert -a /var/log/audit/audit.log
Além disso:
ausearch -m avc
Estes lhe darão instruções como:
Sep 29 16:11:15 ip-172-31-6-51 setroubleshoot: SELinux is preventing /usr/bin/msmtp from name_connect access on the tcp_socket port 587. For complete SELinux messages. run sealert -l 78f05dbd-a953-4196-9f14-afaabb5a4d88
Executando o comando sugerido:
sealert -l 78f05dbd-a953-4196-9f14-afaabb5a4d88
Me dá:
If you believe that msmtp should be allowed name_connect access on the port 587 tcp_socket by default.
Then you should report this as a bug.
You can generate a local policy module to allow this access.
Do
allow this access for now by executing:
# grep msmtp /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp
Então eu fiz:
$ grep msmtp /var/log/audit/audit.log | audit2allow -M fail2ban_msmtp
Eu dei uma olhada para ver o que isso criou:
$ vim fail2ban_msmtp.te
Em seguida, instalei a política, tornando-a persistente na reinicialização:
$ semodule -i fail2ban_msmtp.pp
Em seguida, eu banquei um IP aleatório para acionar uma transação com e-mail para confirmar que agora, finalmente, envia-me o e-mail desejado via msmtp:
$ fail2ban-client set sshd banip 162.229.158.134
Presto! Tão fácil, esse material do SELinux.
PS Outra maneira parece ser (não testada):
$ setsebool -P nis_enabled 1