พื้นหลัง
ฉันตั้งค่าเซิร์ฟเวอร์ postfix ตัวอย่างโดยใช้ sqlite เพื่อจัดเก็บนามแฝงและรายละเอียดกล่องจดหมาย (เพื่อให้สามารถอัปเดตได้สดและมีแหล่งความจริงแหล่งเดียวที่เป็นฐานข้อมูล)
ฉันมีส่วนของ postfix ที่เรียกใช้ chroot เพื่อความปลอดภัย ดังนั้นฐานข้อมูล (mail.sqlite) จึงอยู่ใน /var/lib/postfix/
(ที่ใช้งานได้ทั้งหมด)
ฟังก์ชันที่จำเป็น
ฉันเขียนส่วนหน้าของเว็บเพื่อให้ผู้ใช้เพิ่มที่อยู่อีเมลใหม่ ส่วนหน้าของเว็บทำงานเป็น www-data
ฉันเพิ่ม www-data ลงในกลุ่ม postfix เพื่อที่ว่า chmod g+rw /var/lib/postfix/mail.sqlite /var/lib/postfix/
จะเปิดใช้งานส่วนหน้าของเว็บเพื่ออัปเดตฐานข้อมูล
อีเมลไหลเข้าและออก ส่วนหน้าของเว็บสามารถสร้างนามแฝงของ Remote Update Delete ฉันรีสตาร์ท postfix และตรวจสอบบันทึก:
postfix/postfix-script[26524]: คำเตือน: กลุ่มหรืออื่นๆ ที่เขียนได้: /var/lib/postfix/
postfix/postfix-script[26525]: คำเตือน: กลุ่มหรืออื่นๆ ที่เขียนได้: /var/lib/postfix/./mail.sqlite
ถ้าฉัน chmod g-w /var/lib/postfix/mail.sqlite
นั่นทำให้ postfix มีความสุข แต่ลบความสามารถสำหรับเว็บส่วนหน้าของฉันเพื่อเพิ่มนามแฝงใหม่
ฉันสามารถมีสคริปต์ cron เพื่อแทนที่ /var/lib/postfix/mail.sqlite ด้วยสิทธิ์ /var/www/admin/app/mail.sqlite แต่นั่นมีกลิ่นเหมือนสภาพการแข่งขัน
หรืออย่างน้อยก็ไม่สง่างาม
(ฉันสงสัยว่าเหตุใด postfix จึงอ้างถึงฐานข้อมูลเป็น "/var/lib/postfix/./mail.sqlite" เมื่อการกำหนดค่าเป็น dbpath = /var/lib/postfix/mail.sqlite
?)
คำถาม
ฉันจะให้สิทธิ์เขียนส่วนหน้าเว็บ cgi ของฉันกับฐานข้อมูลของ postfix โดยไม่ต้องเรียกใช้ได้อย่างไร เช่น โพสต์ฟิกซ์ และ ในขณะที่ทำให้ postfix มีความสุข? (ฉันคิดว่าฉันต้องแก้ปัญหานี้ก่อนที่จะเพิ่มนโยบาย SELinux)
แก้ไข:
ฉันมี main.cf ด้วย
virtual_mailbox_maps = sqlite:/etc/postfix/sqlite_mailbox.cf
virtual_alias_maps = sqlite:/etc/postfix/sqlite_alias.cf
virtual_mailbox_domains = sqlite:/etc/postfix/sqlite_domains.cf
และได้ลองใช้ proxymap:
virtual_mailbox_maps = พร็อกซี:sqlite:/etc/postfix/sqlite_mailbox.cf
virtual_alias_maps = พร็อกซี:sqlite:/etc/postfix/sqlite_alias.cf
virtual_mailbox_domains = พร็อกซี:sqlite:/etc/postfix/sqlite_domains.cf
ดูเหมือนว่าทั้งคู่จะทำงานได้ดีพอ ๆ กันสำหรับการประมวลผลอีเมล แต่หลังจากรีสตาร์ท postfix ทั้งคู่ยังคงบันทึก:
postfix/postfix-script[957]: คำเตือน: กลุ่มหรืออื่นๆ ที่เขียนได้: /var/lib/postfix/
postfix/postfix-script[958]: คำเตือน: กลุ่มหรืออื่นๆ ที่เขียนได้: /var/lib/postfix/./mail.sqlite