Roundcube “[1305] FUNCTION roundcube.update_passwd does not exist” webmail şifre değiştirme/yenileme problemi

Yeni kurduğum bir sunucuda karşıma çıkan ilginç bir problem, sistem olarak Debian 11, Exim üzerinde çalışan Roundcube Webmail 1.4.13

Linux dizelweb.com.tr 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21) x86_64 GNU/Linux

Öncelikle Hosting Panel olarak myVesta seçtiğimi belirtmekte fayda var. Fakat kabaca bulduğum çözüm bir çok Hosting Paneli için geçerli olabilir veya çözüm arayan arkadaşlar için bir fikir verebilir.

İyi anlaşılması açısından Roundcube‘un aslında herhangi bir veritabanı kullanmadığı, üzerinde çalıştırıldığı mail server a ait veri sistemine bağlanan (öyle ya mail adresleri mail sunusunda oluşturulmakta, dolayısı ile bütün data’lar mail sunucusuna ait veri depolama merkezinde) bir webmail arabirimidir. Bundan dolayıdır ki bir çok driver ile birlikte gelmektedir.

Öncelikle [1305] FUNCTION roundcube.update_passwd does not exist Nedir?
Kullanıcılarınızın Roundcube’ta mail şifrelerini değiştirmek istediklerinde aldıkları bir hata.

Roundcube driver dosyalarının bulunduğu koum /var/lib/roundcube/plugins/password/drivers/

Listede gördüğünüz üzere; CPanel, Directadmin, Plesk, Vesta vb tanınmış Hosting Panelleri mevcut, bu Hosting Panelleri kurulum yapılırken (örneğin Postfix veya Exim ve vb) hangi mail sunucusu kuruluyor olursa olsun o mail sunucusu ile gerekli iletişimi sağlayabilecekleri kütüphanelere sahipler.

Daha basit bir ifade ile, Roundcube bu sürücü dosyaları ile mail hesabına ait şifreyi değiştirebilme yeteneği kazanıyor.

Hatanın kaynağı da burada yatmakta, eğer üzerinde yürütülen sisteme uygun sürücü kullanılmıyor ise, Roundcube doğal olara bu erişim yeteneğini kaybediyor. Yani siz CPanel kurulu bir sunucuda Roundcube’a, Virtualmin kütüphanesini kullan derseniz doğal olarak Roundcube, üzerinde çalıştırıldığı mail sunucusu ile bu konuda bağlantı kuramıyor / aynı dilde konuşmuyor.

Peki Roundcub’a hangi sürücüyü kullanması gerektiğini tam olarak nerede belirtiyoruz diye soracak olan arkadaşlarımız için gelsin; /etc/roundcube/plugins/password/config.inc.php dosya içeriğine bakalım.

<?php

// Password Plugin options
// -----------------------
// A driver to use for password change. Default: "sql".
// See README file for list of supported driver names.
$rcmail_config['password_driver'] = 'vesta';

// Require the new password to be a certain length.
// set to blank to allow passwords of any length
$rcmail_config['password_minimum_length'] = 6;

// Require the new password to contain a letter and punctuation character
// Change to false to remove this check.
$rcmail_config['password_require_nonalpha'] = false;

// Enables logging of password changes into logs/password
$rcmail_config['password_log'] = false;

// Comma-separated list of login exceptions for which password change
// will be not available (no Password tab in Settings)
$rcmail_config['password_login_exceptions'] = null;


// By default domains in variables are using unicode.
// Enable this option to use punycoded names
$rcmail_config['password_idn_ascii'] = false;

// Vesta Driver options
// -----------------------
// Control Panel host
$rcmail_config['password_vesta_host'] = 'hosting_adresi'; //->/etc/hostname dosyasında yazan adres.
$rcmail_config['password_vesta_port'] = 'Panel_port';

Bakın burada önemli 3 değişken var;

  • password_driver : Görüldüğü üzere bende vesta yazmakta, böylece driver içerisindeki vesta.php sürücüsü devreye giriyor ve sistem çalışıyor.
  • password_vesta_host : vesta panel kurduğum için bende böyle bir değişken mevcut, sizlerde kurulumunu yaptığınız host adresinin doğru girildiğinden emin olmalısınız.
  • password_vesta_port : hostin panelinin çalıştırıldığı Port numarasının da doğru olduğundan emin olmalısınız.

evet hepsi bu kadar demek isterdim ama maalesef bendeki senaryoda bu da yeterli olmadı. 🙂

Evet arkadaşlar buraya kadar bir çok arkadaşımız problemini halletmiş olarak gelmiş olmalı, fakat bazı arkadaşlarımız hala problem yaşıyor olmalı kibenim gibi 🙂 hala burada benimle beraberler.

Hani ben çok uğraştım siz uğraşmayasanız diye bir çok deneme yoluyla ulaştığım yöntemi buraya ekliyorum. Aslında seçtiğimiz sürücü /usr/share/roundcube/plugins/password/password.php dosyasında doğru noktaya eklenirse şifre güncellemesi çalışacaktır (en azından benim için öyle oldu)

Dosya yaklaşık 810 satır uzunluğunda ama bizim için önemli nokta; 424. satırdaki; private function _load_driver($type = ‘password’) fonksiyonunda gizli, burada bende driver olarak “vesta” gelmesi gerekirken; strength gelmekte ve dolayısı ile sürücü düzgün include yani koda eklenememekte.

Ben de olayı tamamen pratik bir şekilde manuel ‘e çevirip istediğim kodu bam bam bam diye kural tanımadan kodun içerisine doğru noktaya ekledim 🙂 ve sorun ortadan kalktı.

Dolayısı ile binlerce kod satırı içerisinden bu noktaya ulaşmam cidden çok zor oldu fakat başardım, elbette daha pratik bir yolu mutlaka vardır fakat ben bulamadım, bulamayan arkadaşlar için benim meşakkatle ulaştığım çözümüm onlar için pratik bir çözüm olsun.

Saygılarımla, Ayhan DELİCAN

Not : /etc/roundcube/config.inc.php dosyasında; Plugins bölümünde yeralan $rcmail_config[‘plugins’] = array(‘password’); değişkenini etkisiz hale getirirseniz Roundcube’da şifre değiştirme seçeneği ayarlar altından tamamen kaldırılacaktır. Böyle bir seçenek hiç olmayacaktır.

Şifre değiştirmek, Roundcube için bir plugin / eklenti olarak ele alınmaktadır.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir