fundal
Am configurat un exemplu de server postfix folosind sqlite pentru a stoca aliasurile și detaliile cutiei poștale, (astfel încât acestea să poată fi actualizate live și să aibă o singură sursă de adevăr fiind baza de date.)
Am părțile postfix care rulează chroot acolo unde este posibil pentru securitate, așa că baza de date (mail.sqlite) este în /var/lib/postfix/
(Totul funcționează.)
Funcționalitatea necesară
Am scris un front-end web pentru a le permite utilizatorilor să adauge noi adrese de e-mail. Interfața web rulează ca www-data.
Am adăugat www-data la grupul de postfix astfel încât chmod g+rw /var/lib/postfix/mail.sqlite /var/lib/postfix/
ar permite front-end-ului web să actualizeze baza de date.
E-mail-ul curge și iese. Interfața web poate crea actualizări de la distanță Șterge aliasuri. Repornesc postfix și verific jurnalele:
postfix/postfix-script[26524]: avertisment: grup sau alt scriptable: /var/lib/postfix/.
postfix/postfix-script[26525]: avertisment: grup sau alt scriptable: /var/lib/postfix/./mail.sqlite
Dacă eu chmod g-w /var/lib/postfix/mail.sqlite
asta face postfix fericit, dar a eliminat posibilitatea pentru front-end-ul meu web de a adăuga aliasuri noi.
Aș putea avea un script cron pentru a înlocui /var/lib/postfix/mail.sqlite cu un /var/www/admin/app/mail.sqlite autorizat, dar care miroase a condiție de cursă,
sau cel puțin este inelegant.
(Mă întreb de ce postfix se referă la baza de date ca „/var/lib/postfix/./mail.sqlite” când configurația este dbpath = /var/lib/postfix/mail.sqlite
?)
Intrebarea
Cum pot să-mi dau acces de scriere a front-end-ului web cgi la baza de date a postfix, fără a o rula la fel de postfix și păstrând postfix fericit? (Cred că trebuie să rezolv acest lucru înainte de a adăuga politicile SELinux.)
Editați | ×:
am avut main.cf cu
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
și am încercat proxymap:
virtual_mailbox_maps = proxy:sqlite:/etc/postfix/sqlite_mailbox.cf
virtual_alias_maps = proxy:sqlite:/etc/postfix/sqlite_alias.cf
virtual_mailbox_domains = proxy:sqlite:/etc/postfix/sqlite_domains.cf
Ambele par să funcționeze la fel de bine pentru procesarea e-mailurilor, dar după repornirea postfixului, ambele încă se înregistrează:
postfix/postfix-script[957]: avertisment: grup sau alt scriptable: /var/lib/postfix/.
postfix/postfix-script[958]: avertisment: grup sau alt scriptable: /var/lib/postfix/./mail.sqlite