Roundcube và Password plugin

Password plugin cho Roundcube là một công cụ rất quan trọng, giúp người dùng tự thay đổi mật khẩu mà không phải thông qua admin của mailserver.

Đến Debian Bullseye thì plugin này đột nhiên không hoạt động với các kiểu mật khẩu mà dovecot hỗ trợ. Thông báo lỗi là không thể cất được mật khẩu.

Thực tế là Password plugin tạo ra mật khẩu rỗng nên không ghi được vào CSDL vì trường mật khẩu được qui định khác rỗng.

Nhiều người phát hiện ra www-data không thể gọi chạy doveadm để tạo mật khẩu. Giải quyết bằng cách cho quyền www-data gọi doveadm qua sudoers, nhưng phát sinh lỗi khác, doveadm không thể đọc các chứng chỉ Let’s Encrypt. Càng cấp thêm quyền cho www-data thì càng phát sinh nguy cơ bảo mật.

Giải pháp tình thế là quay về với các kiểu mã hóa mật khẩu dơn giản hơn không cần dùng doveadm.

Dùng password_hass

Từ PHP7.3, hàm password_hash đã được cải tiến nhiều, hỗ trợ các kiểu mã hóa phức tạp hơn như ARGON2ID. Vì vậy thay vì cố gọi chạy doveadm thì chúng ta dùng cây nhà lá vườn password_hass của PHP và không gặp trở ngại gì.

Chèn thêm vào file /path/to/roundcube/plugins/password/password.php

Script thực hiện việc chèn code như sau:

F=/path/to/password_plugin
sed -i '/password_dovecotpw_method/{N;N;a\
define(CRYPT,"PASSWORD_".$method);\
$crypted = "{".$method."}".password_hash($password,constant(CRYPT));\
break;
}' $F/password.php

Mật khẩu được tạo ra hoàn toàn tương thích với doveadm.

Comments Off on Roundcube và Password plugin

Filed under Software

Comments are closed.