apache httpd 나 php-fpm 등이 SMTP 에 연결하지 못할때 처리 방법
SELinux 는 기본적으로 httpd 의 SMTP 접근을 차단합니다.
만약 잘못된 설정이나 보안 취약점으로 httpd 가 해킹당했을때 스팸 메일 발송 창구로 사용할 수 있으니까요.
하지만 이 정책은 php-fpm 이나 python wsgi 에도 적용되므로 WAS 에서 발신하려는 정상적인 서비스 메일 전송까지 차단됩니다.
문제를 해결하려면 먼저 php-fpm 등 WAS 가 어떤 context 로 구동되는지를 확인하고 SELinux policy에 허용으로 변경해 주면 되므로 ps 명령어를 SELinux context 까지 표시하는 -Z 옵션을 추가해서 실행합니다.
$ ps -eafZ|grep fpm system_u:system_r:httpd_t:s0 root 1240 1 0 Jul05 ? 00:00:02 php-fpm: master process (/etc/opt/remi/php74/php-fpm.conf) system_u:system_r:httpd_t:s0 lesstif 1566 1240 0 Jul05 ? 00:00:00 php-fpm: pool www system_u:system_r:httpd_t:s0 lesstif 1567 1240 0 Jul05 ? 00:00:00 php-fpm: pool www
context 를 보면 httpd_t 임을 알수 있으므로 다음과 같이 SELinux bool 을 사용해서 접근을 허용해 주면 됩니다.
setsebool -P httpd_can_sendmail on