Trên hệ thống CentOS 7 của tôi, tôi đang cố chạy dovecot với yêu cầu TLS.
Để làm được điều đó, tôi đã tạo khóa riêng và chứng chỉ của mình trong
[root@homeserver /]# ls -lZ indernet/cert/homeserver.*
-r--r--r--. chứng chỉ gốc system_u:object_r:default_t:s0 indernet/cert/homeserver.crt
-r--r-----. chứng chỉ gốc system_u:object_r:default_t:s0 indernet/cert/homeserver.key
[root@máy chủ nhà /]#
Để làm cho dovecot thực sự tải các tệp tôi đã đảm bảo /etc/dovecot/conf.d/10-ssl.conf chứa các dòng sau:
ssl=bắt buộc
ssl_key=</indernet/cert/homeserver.key
ssl_cert=</indernet/cert/homeserver.crt
Phần có vấn đề: Dovecot không thể khởi động, nó bị lỗi với lỗi này:
dovecot: doveconf: Fatal: Lỗi trong tệp cấu hình /etc/dovecot/conf.d/10-ssl.conf dòng 14: ssl_key: Không thể mở tệp /indernet/cert/homeserver.key: Quyền bị từ chối
Tôi đã cố gắng sửa đổi quyền đối với tệp của chứng chỉ và khóa (điều này không bắt buộc theo quy định https://doc.dovecot.org/configuration_manual/dovecot_ssl_configuration/), thậm chí đến 777 và không có gì thay đổi.
Ai đó đã gợi ý cho tôi rằng có thể SELinux đang ngăn truy cập và tôi đã định cấu hình unconfined_u:object_r:default_t:s0 cũng như system_u:object_r:default_t:s0 như bạn có thể thấy ở trên. Không thay đổi.
Bây giờ là phần đáng ngạc nhiên: Tôi rất tò mò và đã chỉnh sửa /usr/lib/systemd/system/dovecot.service để chứa
ExecStart=/bin/strace /usr/sbin/dovecot
và sau đó trong/var/log/messages tôi có thể thấy chứng chỉ và khóa được truy cập và tải. Và dovecot hoạt động. Nhưng khi tôi xóa dấu vết một lần nữa, tôi lại gặp vấn đề tương tự.
Điều gì có thể đang xảy ra ở đây?