Server Error! (Ok) Roundcube Cpanel – Fix

When I tried to load my Roundcube today, found that it failed to load the inbox and instead had thrown the following error:

Server Error! (Ok)

Then, I tried searching the cpanel logs or the roundcube error log but found nothing. Then, I checked the Dovecot log located here:

/var/log/maillog

I found the following:

May  7 13:57:49 network2 dovecot: imap([email protected])<26343><cQG+qxX7MvdneMrv>: Error: Mailbox INBOX: mmap(size=351817308) failed with file /home/mellow/mail/mellowhost.com/shawon/dovecot.index.cache: Cannot allocate memory

This is happening because Dovecot caches the mail index in a file, once it tries to cache a lot of emails, it fails with a memory error. In those cases, you may remove the cache file and let Dovecot generate a new cache based on the latest mails. You may simply rm the file and see Roundcube is loading again:

rm -f /home/mellow/mail/mellowhost.com/shawon/dovecot.index.cache

How to see all the constraints in a Postgresql Database

To see/list the constraints, first, connect to the database using the following:

\c my_prod;

Here we are assuming the database name is my_prod. Please note, we are putting these commands in the psql client utility.

Now, use the following query to list all the constraints in the database:

select pgc.conname as constraint_name,
       ccu.table_schema as table_schema,
       ccu.table_name,
       ccu.column_name,
       contype,
        pg_get_constraintdef(pgc.oid)
from pg_constraint pgc
         join pg_namespace nsp on nsp.oid = pgc.connamespace
         join pg_class  cls on pgc.conrelid = cls.oid
         left join information_schema.constraint_column_usage ccu
                   on pgc.conname = ccu.constraint_name
                       and nsp.nspname = ccu.constraint_schema
order by pgc.conname;

Good luck

How to install SSL in Zimbra with Certificate and CA-bundle

There are 3 things you need:

  1. Private key
  2. Certificate
  3. Ca-bundle

First, switch to the user zimbra:

su - zimbra

Let’s except your files are located here:

Private Key: /tmp/private.key
Certificate: /tmp/your.domain.com.crt
Ca-Bundle: /tmp/your.domain.com.ca-bundle

Now, copy your private key file to the following location:

cp /tmp/private.key /opt/zimbra/ssl/zimbra/commercial/commercial.key

Now, first, verify 3 things to make sure, they are correct:

/opt/zimbra/bin/zmcertmgr verifycrt comm /opt/zimbra/ssl/zimbra/commercial/commercial.key /tmp/your.domain.com.crt /tmp/your.domain.com.ca-bundle

If it, says ok, now you may deploy the certificate like the following:

/opt/zimbra/bin/zmcertmgr deploycrt comm /tmp/your.domain.com.crt /tmp/your.domain.com.ca-bundle

Once done, now, exit from the user zimbra and restart zimbra:

exit
service zimbra restart

Your SSL should work now.

How to stop Postgresql when you have multiple versions of PGSQL Running on Ubuntu

Question: How to stop Postgresql when you have multiple versions of PGSQL Running on Ubuntu

You may run the following command to stop specific version of postgresql when using multiple versions of postgresql in a single system, under Ubuntu

systemctl stop postgresql[@version-main]

So, for example, if you have a system, with 3 postgresql server, 12, 14, 15, and would like to stop 14 and 15, then you can run the following:

systemctl stop postgresql@15-main
systemctl stop postgresql@14-main

To disable them from booting:

systemctl disable postgresql@15-main
systemctl disable postgresql@14-main

How to mount NTFS in Debian/Ubuntu

You need to first install NTFS-3G package to access NTFS on Debian. NTFS-3g depends on libntfs and fuse. Using the following shall install NTFS-3g on the system:

apt install ntfs-3g -y

Once done, now you can mount ntfs using the following command:

mount -t ntfs /dev/sdb2 /mnt

In this case, sdb2 is the ntfs partition, and we are mounting this to /mnt directory.

If you are trying to mount a Windows 10/11 partition, you might end up having a read only NTFS file system. The reason is Windows 10/11 partition doesn’t fully shutdown on shutdown command, instead it hibernates the system. To properly shutdown the system, remember to shutdown the system with ‘SHIFT’ + SHUTDOWN.

ipset: error while loading shared libraries: libipset.so.13: cannot open shared object file: No such file or directory

Error

When you try to install Imunify360, you get the following:

[root@stack10 ~]# bash i360deploy.sh IPL
Checking for an update to i360deploy.sh
Downloading i360deploy.sh.repo_version (please wait)
i360deploy.sh is already the latest version (2.58) - continuing
Detecting ostype... centos
ipset: error while loading shared libraries: libipset.so.13: cannot open shared object file: No such file or directory
[2022-12-21 04:44:14] Your OS virtualization technology kvm has limited support for ipset in containers. Please, contact Imunify360 Support Team.

The reason is, latest Imunify360 installer looking for the ipset library. To install that, use the following:

yum install ipset-libs -y

Once done, you should be able to install Imunify360 now.

Could not make the Query. Virtualizor Error

Today, when I opened a Virtualizor panel for a VM node, I found an issue like the following:

Could not make the Query.
SELECT tasks.actid, tasks.action, users.uid, users.email FROM `tasks` LEFT JOIN users on tasks.uid = users.uid WHERE action NOT IN ('vpsbackups_plan_email', 'send_background_mail', 'backuply_vpsbackups_plan_email') ORDER BY tasks.actid DESC LIMIT 10
Array
(
    [0] => HY000
    [1] => 144
    [2] => Table './virtualizor/tasks' is marked as crashed and last (automatic?) repair failed

Issue was the tasks table is marked as crashed. To solve this, we need to repair the table tasks.

First, find the password for database ‘virtualizor’ using the following command:

[root@sg40 ~]# grep dbpass /usr/local/virtualizor/universal.php
$globals['dbpass'] = 'gziqr4y989';

Now connect to the mysql using the password:

/usr/local/emps/bin/mysql -u root -p virtualizor

Now repair the table:

use virtualizor;
REPAIR TABLE tasks;

Now the virtualizor shall work.

kernel module installer failed. (0) – R1Soft – Could not find a suitable hcpdriver module for your system – How to install CDP Agent Kernel Module in Ubuntu

There are times, you may end up with the following error, when you are trying to install R1Soft hcp module or the kernel module in Ubuntu based servers:

kernel module installer failed. (0) - R1Soft - Could not find a suitable hcpdriver module for your system - Ubuntu

Full error could be like the following when you call for –get-module

root@hisab:/lib/modules/r1soft# serverbackup-setup --get-module
Building header archive ...
outfile = /tmp/headers881407773
headers = /usr/src/linux-headers-5.4.0-128-generic
Session ID: 379634599
Waiting to upload...
Uploading file...
Waiting in build queue...
Failed to get suitable module for this system: Failed to build module: No builders found.

Get module failed.
Falling back to old get-module ...
Checking if module needs updated
Checking for binary module
Waiting                       /
No binary module found
Gathering kernel information
Gathering kernel information complete.
Creating kernel headers package
Checking '/tmp/r1soft-cki.1667140819' for kernel headers
Found headers in '/tmp/r1soft-cki.1667140819'
Compressing...
Starting module build...
Building                      /          kernel module installer failed. (0):
Internal error encountered. Please contact support
Request ID: (75ca382d-5a0e-4161-8c70-8b136a6b1330)
http://www.r1soft.com/distros/index.php?uuid=75ca382d-5a0e-4161-8c70-8b136a6b1330

To solve this error, you may get the built kernel module for Ubuntu based on it’s distribution in their repository. The link to the repository would be as following:

http://beta.r1soft.com/modules/

Now, if you are using Ubuntu 20.04, then the module would be available under the folder: Ubuntu_2004_x64

In my case, it was Ubuntu 20.04. Next stop, is to find the kernel version. You may get it from the following command:

root@hisab:~# uname -a
Linux hisab.skincafe.co 5.4.0-128-generic #144-Ubuntu SMP Tue Sep 20 11:00:04 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
root@hisab:~#

Kernel number to note in our case, would be ‘5.4.0-128’. Now search for this inside the link:

http://beta.r1soft.com/modules/Ubuntu_2004_x64/

You should find a match, like for my case it was the following link:

http://beta.r1soft.com/modules/Ubuntu_2004_x64/hcpdriver-cki-5.4.0-128-generic.209.ko

Next stop, is to go to the r1soft module folder and load the module. You may do so like the following:

cd /lib/modules/r1soft
wget http://beta.r1soft.com/modules/Ubuntu_2004_x64/hcpdriver-cki-5.4.0-128-generic.209.ko

Now, all you need, is to restart r1soft. Remember to stop and star the agent instead of direct restart.

service cdp-agent stop
service cdp-agent start

This should be able to load the HCP module now. You may verify this by typing:

root@hisab:~# hcp --list
Idera Hot Copy     6.16.4 build 117 (http://www.r1soft.com)
Documentation      http://wiki.r1soft.com
Forums             http://forum.r1soft.com

Thank you for using Hot Copy!
Idera makes the only Continuous Data Protection software for Linux.


No Hot Copy sessions are currently running.
root@hisab:~#

Happy troubleshooting

How to mount raw (.img) images in Linux

You may have raw images in your system coming from some bare metal VM, like KVM/Vmware. You may mount them directly to the host machine without attaching them to a VM. To do so, you need two things:

  1. Partition to mount
  2. Sector size of the partition and the first position of the partition.

Both of these, can be derived using a command called fdisk with attribute l as the following:

[root@vps5 vpsextra]# fdisk -l mhdevelopment.img

Disk mhdevelopment.img: 268.4 GB, 268435456000 bytes, 524288000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000f1752

            Device Boot      Start         End      Blocks   Id  System
mhdevelopment.img1            2048   523241471   261619712   83  Linux
mhdevelopment.img2       523241472   524287999      523264   82  Linux swap / Solaris
You have new mail in /var/spool/mail/root
[root@vps5 vpsextra]#

Here, we are trying to mount an old image of mine, called ‘mhdevelopment.img. I would like to mount the partition that is not swap, which is namely ‘mhdevelopment.img2’ here. This partition starts from 2048 and the sector size is 512 bytes.

So to mount the partition, you can now use the following command:

sudo mount -o loop,offset=$((2048 * 512)) mhdevelopment.img /mnt

This will mount the the partition mhdevelopment.img1 to /mnt. If you want to change the mount destination, you may do this at the end in replace of /mnt to wherever you want this to be.

Happy shooting.

How to add Bangla Taka (৳) currency symbol in WkHTMLtoPdf / Odoo / OpenERP Qweb Report

WkHTMLtoPDF is a tool to convert html reports to PDF. Odoo/OpenERP uses this tool to generate PDF reports. If you are using an unicode character in PDF report, that character has to be installed in font package in the system. If you are using Windows, Bangla characters are available by default. But that is not same for Linux.

Bangla & Assamese fonts are available for Linux, in a package called ‘lohit’.

To install Bangla fonts in CentOS/Redhat based system, use the following:

yum install lohit-bengali-fonts

To install in Debian/Ubuntu based system, use the following:

apt install fonts-lohit-beng-bengali

Once this is installed, PDF reports should start showing the Bangla characters properly.

Happy shooting!