Điểm:1

Làm cách nào để tôi có thể dừng hậu tố kén chọn quyền của nhóm cơ sở dữ liệu sqlite một cách an toàn?

lá cờ de

Lý lịch

Tôi đã thiết lập một máy chủ postfix ví dụ bằng cách sử dụng sqlite để lưu trữ các bí danh và chi tiết hộp thư, (để chúng có thể được cập nhật trực tiếp và có một nguồn sự thật duy nhất là cơ sở dữ liệu.)

Tôi có các phần của postfix đang chạy chroot nếu có thể để bảo mật, vì vậy cơ sở dữ liệu (mail.sqlite) nằm trong /var/lib/postfix/ (Tất cả đều hoạt động.)

Các chức năng cần thiết

Tôi đã viết giao diện người dùng web để cho phép người dùng thêm địa chỉ email mới. Giao diện người dùng web đang chạy dưới dạng dữ liệu www.

Tôi đã thêm dữ liệu www vào nhóm postfix để chmod g+rw /var/lib/postfix/mail.sqlite /var/lib/postfix/ sẽ cho phép giao diện người dùng web cập nhật cơ sở dữ liệu.

Email đang chảy vào và ra. Giao diện người dùng web có thể Tạo Cập nhật từ xa Xóa bí danh. Tôi khởi động lại postfix và kiểm tra nhật ký:

postfix/postfix-script[26524]: cảnh báo: nhóm hoặc có thể ghi khác: /var/lib/postfix/.
postfix/postfix-script[26525]: cảnh báo: nhóm hoặc có thể ghi khác: /var/lib/postfix/./mail.sqlite

Nếu tôi chmod g-w /var/lib/postfix/mail.sqlite điều đó làm cho hậu tố hài lòng, nhưng đã loại bỏ khả năng giao diện người dùng web của tôi thêm bí danh mới.

Tôi có thể có một tập lệnh cron để thay thế /var/lib/postfix/mail.sqlite bằng một /var/www/admin/app/mail.sqlite có thẩm quyền, nhưng điều đó có mùi giống như điều kiện chủng tộc, hoặc ít nhất là không thanh lịch.

(Tôi thắc mắc tại sao postfix lại đề cập đến cơ sở dữ liệu là "/var/lib/postfix/./mail.sqlite" khi cấu hình là dbpath = /var/lib/postfix/mail.sqlite?)

Câu hỏi

Làm cách nào tôi có thể cấp quyền truy cập ghi vào giao diện người dùng web cgi của mình vào cơ sở dữ liệu của postfix mà không cần chạy nó như hậu tố trong khi giữ postfix hạnh phúc? (Tôi nghĩ rằng tôi phải giải quyết vấn đề này trước khi thêm vào các chính sách của SELinux.)

Chỉnh sửa:

Tôi đã có main.cf với

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

và đã thử 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

Cả hai dường như hoạt động tốt như nhau để xử lý email, nhưng sau khi khởi động lại postfix, cả hai vẫn đăng nhập:

postfix/postfix-script[957]: cảnh báo: nhóm hoặc có thể ghi khác: /var/lib/postfix/.             
postfix/postfix-script[958]: cảnh báo: nhóm hoặc có thể ghi khác: /var/lib/postfix/./mail.sqlite
Nikita Kipriyanov avatar
lá cờ za
Tại sao bạn gắn bó với SQLite? Có bất kỳ lý do đằng sau này? MariaDB (MySQL) là cách dễ dàng và rẻ tiền để thực hiện điều tương tự mà không phải lo lắng về quyền đối với tệp.
lá cờ de
Tôi yêu MariaDB nhưng môi trường này bị hạn chế và việc cài đặt một cơ sở dữ liệu đầy đủ là quá mức cần thiết đối với một khóa: tra cứu giá trị đơn giản.
Nikita Kipriyanov avatar
lá cờ za
Sau đó, bạn đã thử sử dụng dịch vụ postfix [proxymap](http://www.postfix.org/proxymap.8.html) chưa?
lá cờ de
Tôi chưa thử proxymap. Có vẻ như đó là giải pháp tốt nhất. Tôi đã thử nhưng postfix vẫn cảnh báo về quyền của nhóm.
Điểm:2
lá cờ jo

Nguồn gốc của lỗi này là từ tập lệnh "postfix-script" tại thời điểm này:

tìm $queue_directory/. $queue_directory/pid \
    -prune \( -perm -020 -o -perm -002 \) \
    -exec $WARN nhóm hoặc có thể ghi khác: {} \;
..
tìm $todo \( -perm -020 -o -perm -002 \) \
    -exec $WARN nhóm hoặc có thể ghi khác: {} \;
..
tìm $data_directory/. \( -perm -020 -o -perm -002 \) \
    -exec $WARN nhóm hoặc có thể ghi khác: {} \;
..

$việc cần làm là hiệu quả config_directory, shlib_directory, daemon_directorymeta_directory như một danh sách.

Bạn có thể chạy postconf lệnh để tìm ra những biến đó là gì.

$ 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

Điều này dường như gợi ý, nếu bạn giữ cơ sở dữ liệu sqlite thực tế ở ngoài trong số các thư mục đó, postfix-script sẽ không thể kiểm tra chúng.

Vì vậy, bạn chỉ có thể tạo một cái gì đó mới được chia sẻ bởi máy chủ web và máy chủ thư, chẳng hạn như - /srv/maildb/ thiết lập quyền sở hữu theo sở thích của bạn và giải quyết vấn đề như vậy.

Ồ, tôi muốn chỉ ra rằng bạn có thể muốn thay đổi môi trường chroot của mình để hỗ trợ tải dữ liệu vào. Bạn có thể sử dụng một liên kết cứng nhưng điều đó giống như một vụ hack.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.