Kb. 6 évvel ezelőtt a volt munkahelyemen üzemeltettünk egy levelező szervert, ahol sehogy nem sikerült megoldanom a jelszavak megváltoztatását a Roundcube-ból. Ez azért is volt macerás, mivel unix felhasználókról van szó és az auth nem SQL-ből történik. Erre a célra találták ki a Poppassd-t, de sehogy nem boldogultam vele annak idején.
Azóta jó pár év eltelt, a futó rendszer egy CentOS 6.7 egy régi Roundcube-bal. Saját szerveremen is frissítettem, így gondoltam frissítem már náluk is, legyen egy kis változatosság az életükben. Most ismét nekifeküdtem a jelszavas problémának, immáron sikerrel jártam. A poppassd-t ez alapján a telepítettem, de röviden leírom itt is arra az esetre ha a link megszűnne:
wget http://repo.iotti.biz/CentOS/6/noarch/lux-release-6-3.noarch.rpm rpm -Uvh lux-release-6-3.noarch.rpm yum install poppassd
A fenti lépések elvégzésével feltelepül a poppassd és vele együtt a xinetd.
Első teendőnk, hogy szerkesszük a következő fájlt:
/etc/xinetd.d/poppassd
Eredeti állapot:
service poppassd { disable = yes socket_type = stream wait = no user = root server = /usr/sbin/poppassd log_on_success += USERID log_on_failure += USERID }
Új állapot (disable = no)
service poppassd { disable = no socket_type = stream wait = no user = root server = /usr/sbin/poppassd log_on_success += USERID log_on_failure += USERID }
Ezzel érjük el, hogy a poppassd figyeljen a 106-os porton.
Ezután meg kell szerkeszteni a következő állományt:
/etc/pam.d/poppassd
Erre:
#%PAM-1.0 auth required pam_unix.so account required pam_unix.so password requisite pam_cracklib.so password sufficient pam_unix.so md5 shadow
Végül állítsuk be, hogy a xinetd automatikusan induljon a rendszerrel, majd indítsuk el kézzel:
chkconfig xinetd on /etc/init.d/xinetd restart
Végezetül teszteljük telnettel (ha a lenti kimenetet kaptad, akkor működik):
[root@pluto ~]# telnet localhost 106 Trying ::1... Connected to localhost. Escape character is '^]'. 200 poppassd v1.8.5 hello, who are you? //Parancssorból is tesztelhető a jelszóváltoztatás az alábbi lépésekkel: user johndoe 200 Your password please. pass secret 200 Your new password please. newpass p@ssw0rd 200 Password changed, thank-you. quit 200 Bye.
Már csak egy teendőnk van, a Roundcube-ban beállítani, hogy működjön és megjelenjen a password plugin. Navigáljunk a Roundcube mappába és azon belül a plugins-ba. Létre kell hoznunk egy config.inc.php fájlt, legjobb a meglévő .dist fájlt másoljuk le ami rengeteg példát és lehetséges beállításokat tartalmaz.
plugins/password/config.inc.php.dist cp config.inc.php.dist config.inc.php plugins/password/config.inc.php
Nyissuk meg szerkesztésre a config.inc.php fájlt és módosítsuk az alábbi sort a következőre:
$config['password_driver'] = 'poppassd';
Ebben a fájlban lehetőség van finomhangolni a jelszó erősséget, ezt mindenki állítsa be a saját igényeinek megfelelően.
Végezetül a plugint engedélyezni kell, hogy a webes felületen a beállítások között megjelenjen a jelszó mező. Ehhez nincs más dolgunk mint szerkeszteni a következő állományt:
config/main.inc.php
A következő résznél vannak felsorolva az engedélyezett pluginok, ide kell beírni a password-öt is:
// ---------------------------------- // PLUGINS // ---------------------------------- // List of active plugins (in plugins/ directory) $rcmail_config['plugins'] = array('password');
Mentés után már a webes felületen is meg fog jelenni a jelszó menü és ott is próbálkozhatunk a módosítással, remélhetőleg sikeresen.