Roundcube Community Forum

 

Recent posts

#1
General Discussion / Sabre issue
Last post by sheri207 - Today at 11:23:41 AM
Hello!

I was working on integration of calendar in Roundcube. I have Mailcow Suite where I am have installed Rouncube. As Roundcube does not have any official calendar plugin, I used Kolab plugin. The documentation I followed was of this below link attached. Although the steps were bit different as I am using Dockerized Mailcow

Link of Kolab:   https://packagist.org/packages/kolab/calendar

I have successfully integrated the Kolab and when I open RoundCube I can see Calendar option from where I can add and remove event. But after event creation on calendar, that event is not Synced to Sogo. Upon debugging the issue, this is the error which I came across


[20-Mar-2025 15:03:15 Etc/UTC] PHP Deprecated:  Return type of Sabre\VObject\Node::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /web/rc/vendor/sabre/vobject/lib/Node.php on line 83
[20-Mar-2025 15:03:15 Etc/UTC] PHP Deprecated:  Return type of Sabre\VObject\Node::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /web/rc/vendor/sabre/vobject/lib/Node.php on line 162
[20-Mar-2025 15:03:15 Etc/UTC] PHP Deprecated:  Return type of Sabre\VObject\Node::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /web/rc/vendor/sabre/vobject/lib/Node.php on line 177
[20-Mar-2025 15:03:15 Etc/UTC] PHP Deprecated:  Return type of Sabre\VObject\Node::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /web/rc/vendor/sabre/vobject/lib/Node.php on line 193
[20-Mar-2025 15:03:15 Etc/UTC] PHP Deprecated:  Return type of Sabre\VObject\Node::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /web/rc/vendor/sabre/vobject/lib/Node.php on line 213
[20-Mar-2025 15:03:15 Etc/UTC] PHP Deprecated:  Return type of Sabre\VObject\Node::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /web/rc/vendor/sabre/vobject/lib/Node.php on line 142


The sabre version installed through Kolab setup is

sabre/vobject                 3.5.3    The VObject library for PHP allows you to easily parse and manipulate iCalendar and vCard objects
This seems that the version of sabre is not compatible.

Should I update it? If yes, wouldn't it cause compatibility issues with other libraries.

Has anyone ever faced this issue. Any help would be highly appreciated.
#2
General Discussion / Re: Massive PHP Warning: Unde...
Last post by JohnDoh - March 19, 2025, 02:07:01 PM
these warnings were fixed in v1.6
#3
General Discussion / Re: Filters and rules without ...
Last post by loxlay - March 19, 2025, 12:18:19 PM
Great, it works!
Thank you
#4
General Discussion / Massive PHP Warning: Undefine...
Last post by langeman - March 19, 2025, 11:13:46 AM
I installed roundcubemail on AlmaLinux9:

# rpm -q roundcubemail
roundcubemail-1.5.9-1.el9.noarch
# rpm -q php
php-8.0.30-1.el9_2.x86_64
# rpm -q mariadb
mariadb-10.5.22-1.el9_2.alma.1.x86_64

Using  FreeIPA LDAP contacts ("address book") seems to work well using this config:

$config['ldap_public']['Home'] = [
  'name'             => 'Home FreeIPA LDAP directory',
  // Replacement variables supported in host names:
  // %h - user's IMAP hostname
  // %n - http hostname ($_SERVER['SERVER_NAME'])
  // %d - domain (http hostname without the first part)
  // %z - IMAP domain (IMAP hostname without the first part)
  // For example %n = mail.domain.tld, %d = domain.tld
  'hosts'            => [ 'ipa1.example.com', 'ipa2.example.com' ],
  'port'             => 389,
  'use_tls'          => true,
  'ldap_version'     => 3,
  'user_specific'    => false,
  'bind_dn'          => 'uid=ap_roundcube_dev,cn=users,cn=accounts,dc=example,dc=com',
  'bind_pass'        => '2XKcbuZrvfFGNHJS99qY1RrOD',
  'base_dn'          => 'cn=users,cn=accounts,dc=example,dc=com',
  'filter'           => '(memberOf=cn=roundcube_users,cn=groups,cn=accounts,dc=example,dc=com)',
  'writable'         => false,
  'scope'            => 'sub',
  'search_fields'    => [ 'mail', 'displayName', 'cn', 'sn', 'givenName'],  // fields to search in
  'fuzzy_search'     => true,    // server allows wildcard search
  'vlv'              => false,        // Enable Virtual List View to more efficiently fetch paginated data (if server supports it)
  'vlv_search'       => false,        // Use Virtual List View functions for autocompletion searches (if server supports it)
  'fieldmap'         => [
    // Roundcube    => LDAP:limit
    'name'          => 'displayName',
    'surname'       => 'sn',
    'firstname'     => 'givenName',
    'jobtitle'      => 'title',
    'email'         => 'mail:*',
    'phone:home'    => 'homePhone',
    'phone:work'    => 'telephoneNumber',
    'phone:mobile'  => 'mobile',
    'phone:pager'   => 'pager',
    'phone:workfax' => 'facsimileTelephoneNumber',
    'street'        => 'street',
    'zipcode'       => 'postalCode',
    'region'        => 'st',
    'locality'      => 'l',
    // if you country is a complex object, you need to configure 'sub_fields' below
    'country'       => 'c',
    'organization'  => 'o',
    'department'    => 'ou',
    'jobtitle'      => 'title',
    'notes'         => 'description',
    'photo'         => 'jpegPhoto',
    // these currently don't work:
    // 'manager'       => 'manager',
    // 'assistant'     => 'secretary',
   ],
  'group_filters' => [
    'roundcube_users' => [
      'name'    => 'Webmail gebruikers',
      'scope'   => 'sub',
      'base_dn' => 'cn=accounts,dc=example,dc=com',
      'filter'  => '(memberof=cn=roundcube_users,cn=groups,cn=accounts,dc=example,dc=com)',
      'name_attr' => 'cn',
    ],
    'calweb-toegang-dev' => [
      'name'    => 'Calweb toegang dev',
      'scope'   => 'sub',
      'base_dn' => 'cn=accounts,dc=example,dc=com',
      'filter'  => '(&(memberof=cn=some-other-group,cn=groups,cn=accounts,dc=example,dc=com)(objectClass=inetorgPerson))',
      'name_attr' => 'cn',
    ],
  ],
];

However, XXX is flooding with warnings as soon as i access "Contacts":

[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 1763
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 1763
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 1763
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 1763
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 1763
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 1763
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 1763
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 1763
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 1763
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 1763
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 1763
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 1763
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 1763
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 1763
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 1763
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 1763
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 1763
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 1763
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 145
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key "name" in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 167
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 145
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key "surname" in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 167
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 145
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key "firstname" in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 167
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 145
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key "jobtitle" in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 167
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 145
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key "email" in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 167
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key "phone" in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 167
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 145
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key "street" in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 167
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 145
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key "zipcode" in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 167
[19-Mar-2025 15:50:19 Europe/Amsterdam] PHP Warning:  Undefined array key 1 in /usr/share/roundcubemail/program/lib/Roundcube/rcube_ldap.php on line 145

Still, the address book seems to work fine, but this rather massive logging will fill up my disk...

Is something missing in my config, is something wrong in mij config?
Am I hitting a bug?
#5
Pending Issues / Re: How to configure TLS versi...
Last post by returntosender - March 19, 2025, 09:22:23 AM
Thanks a lot SKaero.

I was able to solve the problem in the meantime. It turned out, i was not using fullchain.pem on dovecot. Changing this solved the issue, now CA verification works on the clients.

I obv. didn't correctly understand how CA verification works. I had the impression, it should be sufficient for the server to present its cert.pem, since it contains information about the issuing CA, so the client should be able to extract this information and perform a lookup against its CA trust store. However, it seems this is not how it is working. At least not with openssl.

Interestingly I had no issues with this on Android and Windows. I will have to check why this is.
#6
General Discussion / Re: Filters and rules without ...
Last post by SKaero - March 19, 2025, 09:17:52 AM
There is a old client side filtering plugin https://github.com/roundcubevnz/roundcube-plugin-filters it doesn't seem to be supported anymore (last update in 2019) but there is a PR to make it work with Roundcube 1.6.x https://github.com/roundcubevnz/roundcube-plugin-filters/pull/3
#7
Theme Releases / Roundcube for Login Theme
Last post by rcartists - March 19, 2025, 08:41:14 AM
Hello, Sir,

Please roundcube login theme design to customization it. It's but your help me.


Thank you for your assistance.
#8
General Discussion / Filters and rules without mana...
Last post by loxlay - March 19, 2025, 06:42:18 AM
I have a general question.
Is there a way to use filters and rules without managesieve? Managesieve works server based.
I imagine a rule/filter function on the client side, i.e. directly in Roundcube.
Is there a plugin for this or another possibility on a client basis?

Thanks and greetings
Robin
#9
Pending Issues / Re: How to configure TLS versi...
Last post by SKaero - March 18, 2025, 10:28:02 AM
Looks correct to me, setting the ssl_cert in the config is a valid way of handling it.
#10
Pending Issues / Re: How to configure TLS versi...
Last post by returntosender - March 18, 2025, 09:33:51 AM
Thanks SKaero.

Setting

 'verify_peer' => false

and en suite also setting

 $config['imap_auth_type'] = 'PLAIN';

worked.



Still, it would be nice to get CA validation running correctly.

Roundcube is running on Ubuntu Host A, dovecot/postfix on Ubuntu Host B. I'm using letsencrypt certs on dovecot/postfix. Clients on Android or Windows are connecting without issues, not complainig about not being able to validate the CA.

If i correctly understand, CA certs are stored in the hosts certstore. And roundcube is using PHP is using openssl is looking up the certstore for a matching CA cert. Is this correct? So I would have to make sure the related CA cert is in Host B's cert store.

Reading https://letsencrypt.org/certificates/, letsencrypt is using:
ISRG Root X1
ISRG Root X2

With these chain of trust:
RSA Subcriber Cert ← RSA Intermediate (R10 or R11) ← ISRG Root X1
ECDSA Subcriber Cert ← ECDSA Intermediate (E5 or E6) ← ISRG Root X1
ECDSA Subcriber Cert ← ECDSA Intermediate (E5 or E6) ← ISRG Root X2

So i would have to check and make sure, these certs are in th certstore and then it would be expeceted Roundcube is able to validate the CA?


With

awk -v cmd='openssl x509 -noout -subject' '
    /BEGIN/{close(cmd)};{print | cmd}' < /etc/ssl/certs/ca-certificates.crt

I'm listing all CAs in the certstore and I get hits for

subject=C = US, O = Internet Security Research Group, CN = ISRG Root X1
subject=C = US, O = Internet Security Research Group, CN = ISRG Root X2

The Intermediate Certs i can't find in the trust store, assuming, that's expected.
So it would be up to me to provide Roundcube with the intermediate or fullchain cert?
I tried so using:

'ssl_cert' => '/etc/apache2/ssl/fullchain.pem' (readable for www-data)

which does seem to work.

Am I on the wrong way? Did i miss or missunderstand something?

--
Trying to verify the cert on the console with

openssl verify /etc/apache2/ssl/cert.pem
also fails. That's consistent with roundcube not being able to validate. I will try to find out if i can get the validation working on the console.