Puncte:1

Cum pot opri în siguranță postfix să fie pretențios cu privire la permisiunile de grup ale bazei de date sqlite?

drapel de

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
Nikita Kipriyanov avatar
drapel za
De ce rămâneți cu SQLite? Există vreun raționament în spatele asta? MariaDB (MySQL) este o modalitate ieftină și ușoară de a face același lucru fără să vă faceți griji cu privire la permisiunile fișierelor.
drapel de
Îmi place MariaDB, dar acest mediu este limitat și instalarea unei baze de date complete este exagerată pentru o căutare simplă cheie: valoare.
Nikita Kipriyanov avatar
drapel za
Atunci ați încercat să utilizați un serviciu postfix [proxymap](http://www.postfix.org/proxymap.8.html)?
drapel de
Nu am încercat proxymap. Se pare că aceasta este cea mai bună soluție. L-am încercat, dar postfix încă avertizează despre permisiunile de grup.
Puncte:2
drapel jo

Sursa acestei erori este din scriptul „postfix-script” în acest moment:

găsiți $queue_directory/. $director_codă/pid \
    -prune \( -perm -020 -o -perm -002 \) \
    -exec $WARN grup sau alt scriere: {} \;
..
găsiți $todo \( -perm -020 -o -perm -002 \) \
    -exec $WARN grup sau alt scriere: {} \;
..
găsiți $data_directory/. \( -perm -020 -o -perm -002 \) \
    -exec $WARN grup sau alt scriere: {} \;
..

$todo este eficient directorul_config, directorul_shlib, directorul_demoniului și meta_director ca o listă.

Puteți rula postconf comanda pentru a afla care sunt acele variabile.

$ postconf director_codă director_config director_daemon meta_directory director_shlib director_date
director_codă = /var/spool/postfix
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
meta_directory = /etc/postfix
shlib_directory = /usr/lib64/postfix
directorul_date = /var/lib/postfix

Acest lucru ar părea să sugereze, dacă păstrați bazele de date sqlite reale in afara dintre acele directoare, postfix-script nu va fi conștient să le verifice.

Așa că ați putea crea ceva nou partajat de serverul web și serverul de e-mail, să spunem - /srv/maildb/ configurați proprietățile conform preferințelor dvs. și ocoliți așa.

Oh, aș sublinia că probabil ați dori să vă modificați mediul chroot pentru a suporta încărcarea datelor în interior. Ați putea utiliza un link dur, dar asta se simte ca un hack.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.