Bonjour,

j’ai un souci sur le serveur pour envoyer des mails avec la fonction mail() de php:

$ tail -f /var/log/maillog
Mar 23 10:18:52 trilby postfix/sendmail[202640]: fatal: execv /usr/libexec/postfix/smtpd: Permission denied
$ tail -f /var/log/messages
Mar 23 10:19:53 trilby setroubleshoot[202702]: SELinux is preventing /usr/sbin/sendmail.postfix from execute access on the file smtpd. For complete SELinux messages run: sealert -l 4370a3e3-dadb-4adb-93b5-03d6b05172a1

Le problème provient de SELinux mais pourtant j’ai bien autoriser l’envoi de mail par httpd:

setsebool -P httpd_can_sendmail 1

Pour le moment, je tourne sur smtp, mais j’aimerais fixer ceci.

  • Ya pas de booleen pour cet AVC.

    D’après le détail fourni, ce n’est pas PHP ni httpd qui se fait bloquer, mais la commande sendmail, appelée par PHP probablement. Cette commande sendmail semble appeler la commande postfix /usr/sbin/sendmail.postfix, et cet appel est bloqué.

    Pour moi c’est juste un pb dans selinux-policy-targeted, et tu devrais ouvrir un bug.

Que retourne
$ sealert -l 4370a3e3-dadb-4adb-93b5-03d6b05172a1

Il y a encore des outils qui utilisent directement la fonction mail de PHP qui lance un process sendmail ?
au lieu de passer par une bibliothèque dédiée (ex phpmailer) qui se connecte directement au serveur SMTP

    remi Oui, je passe par SMTP… Mais j’aimerais pouvoir utiliser aussi mail().

    C’est quoi la ligne d’AVC correspondante dans /var/log/audit/audit.log ?

      C@sp€r C’est quoi la ligne d’AVC correspondante dans /var/log/audit/audit.log ?

      Ca ?

      SELinux is preventing /usr/sbin/sendmail.postfix from execute access on the file smtpd.
      
      *****  Plugin catchall (100. confidence) suggests   **************************
      
      If you believe that sendmail.postfix should be allowed execute access on the smtpd file 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:
      # ausearch -c 'sendmail' --raw | audit2allow -M my-sendmail
      # semodule -X 300 -i my-sendmail.pp
      
      
      Additional Information:
      Source Context                system_u:system_r:system_mail_t:s0
      Target Context                system_u:object_r:postfix_smtpd_exec_t:s0
      Target Objects                smtpd [ file ]
      Source                        sendmail
      Source Path                   /usr/sbin/sendmail.postfix
      Port                          <Unknown>
      Host                          trilby
      Source RPM Packages           postfix-3.5.9-19.el9.x86_64
      Target RPM Packages           
      SELinux Policy RPM            selinux-policy-targeted-34.1.43-1.el9_1.2.noarch
      Local Policy RPM              selinux-policy-targeted-34.1.43-1.el9_1.2.noarch
      Selinux Enabled               True
      Policy Type                   targeted
      Enforcing Mode                Enforcing
      Host Name                     trilby
      Platform                      Linux trilby 5.14.0-162.18.1.el9_1.x86_64 #1 SMP
                                    PREEMPT_DYNAMIC Wed Mar 1 22:02:24 UTC 2023 x86_64
                                    x86_64
      Alert Count                   16
      First Seen                    2023-03-21 13:26:53 CET
      Last Seen                     2023-03-23 10:19:50 CET
      Local ID                      4370a3e3-dadb-4adb-93b5-03d6b05172a1
      
      Raw Audit Messages
      type=AVC msg=audit(1679563190.560:59439): avc:  denied  { execute } for  pid=202701 comm="sendmail" name="smtpd" dev="sda3" ino=12871874 scontext=system_u:system_r:system_mail_t:s0 tcontext=system_u:object_r:postfix_smtpd_exec_t:s0 tclass=file permissive=0
      
      
      type=SYSCALL msg=audit(1679563190.560:59439): arch=x86_64 syscall=execve success=no exit=EACCES a0=5559344b52a0 a1=5559344b5240 a2=5559344b49c0 a3=8 items=0 ppid=202172 pid=202701 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm=sendmail exe=/usr/sbin/sendmail.postfix subj=system_u:system_r:system_mail_t:s0 key=(null)
      
      Hash: sendmail,system_mail_t,postfix_smtpd_exec_t,file,execute

      Que retourne
      $ sestatus -b | grep -i sendmail

      Sinon il faut créer une politique locale comme proposé

      # ausearch -c 'sendmail' --raw | audit2allow -M my-sendmail
      # semodule -X 300 -i my-sendmail.pp

        # sestatus -b | grep -i sendmail
        gitosis_can_sendmail                        off
        httpd_can_sendmail                          on
        logging_syslogd_can_sendmail                off

        Nicosss Sinon il faut créer une politique locale comme proposé

        Je voulais éviter ça justement 🙁

        En effet, en tout cas il a bien pris la modification pour httpd_can_sendmail .

        Suite à la première manipulation, tu as exactement le même message dans les logs que ceux du 1er message ? (Pas cool qu’il n’y ait plus le numéro du message…)

        Ya pas de booleen pour cet AVC.

        D’après le détail fourni, ce n’est pas PHP ni httpd qui se fait bloquer, mais la commande sendmail, appelée par PHP probablement. Cette commande sendmail semble appeler la commande postfix /usr/sbin/sendmail.postfix, et cet appel est bloqué.

        Pour moi c’est juste un pb dans selinux-policy-targeted, et tu devrais ouvrir un bug.