Score:1

ฉันจะหยุด postfix ที่จู้จี้จุกจิกเกี่ยวกับการอนุญาตกลุ่มของฐานข้อมูล sqlite ได้อย่างปลอดภัยได้อย่างไร

ธง de

พื้นหลัง

ฉันตั้งค่าเซิร์ฟเวอร์ 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
Nikita Kipriyanov avatar
za flag
ทำไมคุณถึงยึดติดกับ SQLite? มีเหตุผลใด ๆ ที่อยู่เบื้องหลังสิ่งนี้หรือไม่? MariaDB (MySQL) เป็นวิธีที่ง่ายและประหยัดในการทำสิ่งเดียวกันโดยไม่ต้องกังวลเกี่ยวกับสิทธิ์ของไฟล์
de flag
ฉันรัก MariaDB แต่สภาพแวดล้อมนี้มีจำกัด และการติดตั้งฐานข้อมูลแบบเต็มก็เกินความจำเป็นสำหรับการค้นหาคีย์:ค่าอย่างง่าย
Nikita Kipriyanov avatar
za flag
คุณได้ลองใช้บริการ postfix [proxymap](http://www.postfix.org/proxymap.8.html) แล้วหรือยัง
de flag
ฉันไม่ได้ลองใช้ proxymap ดูเหมือนว่าจะเป็นทางออกที่ดีที่สุด ฉันลองแล้ว แต่ postfix ยังคงเตือนเกี่ยวกับการอนุญาตกลุ่ม
Score:2
ธง jo

แหล่งที่มาของข้อผิดพลาดนี้มาจากสคริปต์ "postfix-script" ณ จุดนี้:

หา $queue_directory/. $queue_directory/pid \
    -พรุน \( -perm -020 -o -perm -002 \) \
    -exec $WARN group หรืออื่นๆ ที่เขียนได้: {} \;
..
หา $todo \( -perm -020 -o -perm -002 \) \
    -exec $WARN group หรืออื่นๆ ที่เขียนได้: {} \;
..
หา $data_directory/. \( -perm -020 -o -perm -002 \) \
    -exec $WARN group หรืออื่นๆ ที่เขียนได้: {} \;
..

สิ่งที่ต้องทำ $ เป็นไปอย่างมีประสิทธิภาพ config_directory, shlib_directory, daemon_directory และ meta_directory เป็นรายการ

คุณสามารถเรียกใช้ หลังการประชุม คำสั่งให้หาว่าตัวแปรเหล่านั้นคืออะไร

$ postconf Queue_directory config_directory daemon_directory meta_directory shlib_directory data_directory
queue_directory = /var/spool/postfix
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
meta_directory = /etc/postfix
shlib_directory = /usr/lib64/postfix
data_directory = /var/lib/postfix

สิ่งนี้ดูเหมือนจะแนะนำหากคุณเก็บฐานข้อมูล sqlite จริงไว้ ข้างนอก ในไดเร็กทอรีเหล่านั้น postfix-script จะตรวจสอบโดยไม่รู้ตัว

คุณจึงสามารถสร้างสิ่งใหม่ที่แชร์โดยเว็บเซิร์ฟเวอร์และเมลเซิร์ฟเวอร์ โดยพูดว่า - /srv/maildb/ ตั้งค่าความเป็นเจ้าของตามความต้องการของคุณและหลีกเลี่ยงสิ่งนั้น

โอ้ ฉันจะชี้ให้เห็นว่าคุณอาจต้องการเปลี่ยนสภาพแวดล้อม chroot ของคุณเพื่อรองรับการโหลดข้อมูล คุณอาจใช้ฮาร์ดลิงก์แต่รู้สึกเหมือนเป็นการแฮ็ก

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา