На недавно установленном сервере CentOS 8 с минимальной конфигурацией не обрабатываются почтовые сообщения, не публикуются комментарии на сайтах и т.п., а в логе /var/log/maillog можно найти подобную запись:
cat /var/log/maillog
Jan 12 10:24:11 host postfix/sendmail[13534]: fatal: open /etc/postfix/main.cf: Permission denied
Спокойно, только не нужно редактировать пользователей и права на конфигурационные файлы postfix. Необходимо настроить политику SELinux, чтобы разрешить отправлять почту. Но, для начала, можно убедится, что вопрос именно в SELinux и проверить состояние контроля доступа введя команду sestatus.
sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 31
Значение Current mode: enforcing — значит включён. Так и должно быть, пусть будет включён.
Чтоб прояснить ситуацию, проверьте состояние httpd_can_sendmail, по умолчаню выключено.
getsebool -a | grep httpd_can_sendmail
httpd_can_sendmail --> off
Так и есть, off.
httpd_can_sendmail, по умолчаню выключен.
setsebool -P httpd_can_sendmail 1
getsebool -a | grep httpd_can_sendmail
httpd_can_sendmail --> on
результат httpd_can_sendmail —> on, on — значит, включили.
И попробуйте отправить свою почту сейчас.
Можно из консоли:
echo "Send Test Message" | sendmail [email protected]
только со своим почтовый ящиком.
Если ситуация схожа с описанной здесь, то сообщение будет доставлено.
В случае, когда ничего не получается и подозрения падают, только на SELinux, можно решиться на совсем отчаянный шаг. Просто, чтоб убедиться.
И так, чтоб убедится наверняка, сейчас мы ненадолго отключим SELinux, попытаемся отправить почту и сразу включим его обратно. Очень быстро)
Отключаем и смотрим состояние:
setenforce 0
sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 31
Значение Current mode: permissive — значит SELinux пока выключен.
Пробуем отправить почту, смотрим результат и сразу снова включаем SELinux
setenforce 1
sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 31
Значение Current mode:, должно быть enforcing.
Не оставляйте SELinux выключенным, потому что это тупо, тупо, тупо.
1 комментарий. Оставить новый
Наконец-то! А то, задолбался уже искать причину!