Tuesday, July 16, 2024

How to install SSL on CWP hostname?

1 - Check that you should have an A record for the hostname. For example if your server hostname is cp.hostinpk.com, then you should have an A record for "cp" pointing to server IP

2 - Login to CWP Admin Panel>> Server Settings>>Change Hostname and then hit "Change Hostname" button after putting your desired hostname (in my case cp.hostinpk.com). This will only generate a valid LE SSL for your hostname when an A record is present against hostname

3 - Perform following command from shell

service cwpsrv reload

Saturday, June 15, 2024

How to merge a branch to main branch in Github.

In Terminal or Command Prompt: 

git checkout main [switch to main branch]

git pull origin main
 [grab latest updates from main branch]

git merge master merge [master branch to your main branch]

git push origin main [push your changes to main]

Sunday, April 21, 2024

Exim configuration & Filter

 There are two things that need to be configured. The system filter and the specific transport. If you only want to forward emails and not save them to the filesystem, the transport section is not needed.

Edit your exim configuration and add these lines at the top:

# /etc/exim.conf top

system_filter = /etc/system_filter.exim

system_filter_directory_transport = local_copy_outgoing

Add these lines lower in the configuration, in your transports section:

# /etc/exim.conf transpors section


  driver = appendfile




  group = mail

  user = mail

  mode = 0660

  maildir_format = true

  create_directory = true

Change the mail user to the specific user account on your system exim runs at. It could be named exim. You can check that with the getent passwd command.

To configure the actual saving and filtering create or edit the /etc/system_filter.exim file. The below snippets should be placed in that file, according to what you're trying to acomplish.

To save all outgoing mail from a specific domain to a maildir folder in /var/mail/:

if $sender_address_domain is example.tld


unseen save /var/mail/example.tld/mailarchive/.${tr{$sender_address}{.}{_}}.outgoing/


Forward all outgoing from specific domain to specific email address:

if $sender_address_domain is example.tld


unseen deliver othermailbox@otherdomain.com


Forward ALL outgoing mail to email address:

unseen deliver othermailbox@otherdomain.com

Save ALL outgoing email to maildir folder:

unseen save /var/mail/${tr{$sender_address_domain}{.}{_}}/mailarchive/${tr{$sender_address}{.}{_}}.outgoing/

The files are saved in a maildir structure:

ls -la /var/mail/example.tld/mailarchive/example\@example.tld.outgoing/new/

total 16

-rw-rw---- 1 mail mail 1632 Dec 15 20:31 1450207897.H829447P10443.example.tld

drwx------ 5 mail mail 4096 Dec 15 20:31 ..

-rw-rw---- 1 mail mail 1747 Dec 15 20:33 1450207983.H51962P10484.example.tld

drwx------ 2 mail mail 4096 Dec 15 20:33 .

Ref: Exim Documentation

Wednesday, April 17, 2024

Sunday, April 7, 2024

How to forward all outbound mail sent from an email account on your centOS server


Filters and forwarders that can be managed directly within a cPanel account are only applied to incoming messages. They do not affect outbound messages. To forward outbound messages, you need to create a system filter. This article provides an example of how you can use an Exim system filter in cPanel to forward all outbound mail from an email account. 

Please note that cPanel is not able to provide support for customizing the specific contents of your Exim filters. If you need help crafting a custom filter, you should reach out to a systems administrator with the skills, training, and expertise required to do so for you.



1.      Access the server's command line as the 'root' user via SSH or "Terminal" in WHM.

2.      Create the filter file.

touch /usr/local/cpanel/etc/exim/sysfilter/options/fowardOutbound.conf

3.      Open the newly created filter file in your preferred text editor.

4.      Add the following to the file.

if ("$h_from:" contains "from@domain.tld")
   ## The following will make it so that the original recipient is skipped and
   ## and only recipient@domain.tld will recieve the message
   deliver "recipient@domain.tld"
   ## If you add the word unseen in front, the message will be forwarded to
   ## recipient@domain.tld as well as delivered to the original recipient.
   ## For example, you would remove the above deliver line and replace it with:
   ## unseen deliver "recipient@domain.tld"

For multiple :
if $h_from: contains "user1@domain.com"
or $h_from: contains "user2@domain.com""
or $h_from: contains "user3@domain.com""
unseen deliver "user@domain.com"

Please note that 'from@domain.tld' and 'recipient@domain.tld' must be replaced with the sender and recipient email addresses, respectively.

5.      Rebuild the Exim configuration.


Please note that cPanel will copy your custom filter into the system filter file, /etc/cpanel_exim_system_filter.

6.      Restart Exim.



Wednesday, April 3, 2024

Download Large File from Google Drive using API

 Here are step-by-step instructions to download a file from Google Drive using the command line API if the file is shared privately and needs authentication.

Get the file ID:

  1. Go to your Google Drive in your browser.
  2. Right-click (or control-click) the file you want to download and click “Get shareable link”. The link looks like this: https://drive.google.com/open?id=XXXXX. Make note of the file ID “XXXXX”; you will be needing it below.

Get an OAuth token:

  1. Go to OAuth 2.0 Playground
  2. In the “Select the Scope” box, scroll down, expand “Drive API v3”, and select https://www.googleapis.com/auth/drive.readonly
  3. Click “Authorize APIs” and then “Exchange authorization code for tokens”. Copy the “Access token”; you will be needing it below.

Download the file from the command line:

If using OS X or Linux, open the “Terminal” program and enter the following command.

  1. curl -H "Authorization: Bearer YYYYY" https://www.googleapis.com/drive/v3/files/XXXXX?alt=media -o ZZZZZ 

If using Windows, open the “PowerShell” program and enter the following command.

  1. Invoke-RestMethod -Uri https://www.googleapis.com/drive/v3/files/XXXXX?alt=media -Method Get -Headers @{"Authorization"="Bearer YYYYY"} -OutFile ZZZZZ 

In your command, replace “XXXXX” with the file ID from above, “YYYYY” with the access token from above, and “ZZZZZ” with the file name that will be saved (for example, “myFile.mp4” if you’re downloading an mp4 file).

Press Enter and let the download begin.

Wednesday, March 13, 2024

WordPress website Migration & Restore using All-In-One-WP-Migration

Copy cPanel to cPanel internal server Migration

cp /home/Source-cPanel-username/public_html/wp-content/ai1wm-backups/your-backup-file-name.wpress /home/Target-cPanel-username/public_html/wp-content/ai1wm-backups

 Copy cPanel to cPanel Different server Migration

1. cd /home/Target-cPanel-username/public_html/wp-content/ai1wm-backups

2. wget use-source-url-https-link

All in One WP Migration Download

Sunday, March 10, 2024

Rebuild BCD in Windows using CMD

  1. Boot your computer into Advanced Recovery Mode
  2. Launch Command Prompt available under Advanced Options.
  3. To rebuild the BCD or Boot Configuration Data file use the command – bootrec /rebuildbcd
  4. It will scan for other operating systems and let you select the OS’s you want to add to BCD

To set boot record manually:

bcdboot c:\windows /s c:

Friday, February 16, 2024

Increment the cell in Vlookup when dragging horizontally in Excel

Excel VLOOKUP with Dynamic Column Reference:




Monday, January 22, 2024

How to Install and Use PHP Composer on CentOS 7

 sudo yum install php-cli php-zip wget unzip

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

HASH="$(wget -q -O - https://composer.github.io/installer.sig)"

php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer


How to install SSL on CWP hostname?

1 - Check that you should have an A record for the hostname. For example if your server hostname is cp.hostinpk.com, then you should have a...