ในระบบ CentOS 7 ของฉัน ฉันพยายามเรียกใช้ dovecot โดยต้องใช้ TLS
ด้วยเหตุนี้ ฉันจึงสร้างคีย์ส่วนตัวและใบรับรองใน
[root@homeserver /]# ls -lZ indernet/cert/homeserver.*
-r--r--r--. ผู้ใช้ใบรับรอง root system_u:object_r:default_t:s0 indernet/cert/homeserver.crt
-ร--ร-----. ผู้ใช้ใบรับรองหลัก system_u:object_r:default_t:s0 indernet/cert/homeserver.key
[รูท@โฮมเซิร์ฟเวอร์ /]#
ในการทำให้ dovecot โหลดไฟล์จริง ๆ ฉันมั่นใจว่า /etc/dovecot/conf.d/10-ssl.conf มีบรรทัดเหล่านี้:
ssl=จำเป็น
ssl_key=</indernet/cert/homeserver.key
ssl_cert=</indernet/cert/homeserver.crt
ส่วนที่มีปัญหา: Dovecot ไม่สามารถเริ่มทำงาน มันล้มเหลวด้วยข้อผิดพลาดนี้:
dovecot: doveconf: ร้ายแรง: ข้อผิดพลาดในไฟล์การกำหนดค่า /etc/dovecot/conf.d/10-ssl.conf บรรทัดที่ 14: ssl_key: ไม่สามารถเปิดไฟล์ /indernet/cert/homeserver.key: สิทธิ์ถูกปฏิเสธ
ฉันพยายามแก้ไขการอนุญาตไฟล์ของใบรับรองและคีย์ (สิ่งนี้ไม่ควรบังคับตาม https://doc.dovecot.org/configuration_manual/dovecot_ssl_configuration/) แม้จะเป็น 777 และไม่มีอะไรเปลี่ยนแปลง
มีคนแนะนำฉันว่าอาจเป็น SELinux ที่ป้องกันการเข้าถึง และฉันได้กำหนดค่า unconfined_u:object_r:default_t:s0 รวมทั้ง system_u:object_r:default_t:s0 ตามที่คุณเห็นด้านบน ไม่มีการเปลี่ยนแปลง.
ตอนนี้ส่วนที่น่าแปลกใจ: ฉันอยากรู้อยากเห็นมากและแก้ไข /usr/lib/systemd/system/dovecot.service เพื่อให้มี
ExecStart=/bin/strace /usr/sbin/dovecot
จากนั้นใน /var/log/messages ฉันเห็นใบรับรองและคีย์ที่เข้าถึงและโหลดได้ และโดฟคอตก็ใช้ได้ แต่เมื่อฉันถอดสายรัดออกอีกครั้ง ฉันก็ยังมีปัญหาเดิม
เกิดอะไรขึ้นที่นี่?