1. Главная
  2. /
  3. Linux
  4. /
  5. postfix/sendmail[]: fatal: open /etc/postfix/main.cf: Permission denied

postfix/sendmail[]: fatal: open /etc/postfix/main.cf: Permission denied

На недавно установленном сервере 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 комментарий. Оставить новый

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Категории

Меню