06 Jan 2021

Blocking Accounts From Sending Emails – CPanel/WHM

Is it possible to block certain domains/accounts on my server for sending emails?

It’s possible to block certain domains from sending emails from server. There is an option in Exim configuration on your cPanel server to block domains from sending emails. This can be done by adding those domains into “/etc/blockeddomains” this configuration file.

Here I’m going to explain the steps to block accounts from sending emails. You must have a server with root access to do so.

The steps are explained below:

1. SSH to server as root.
2. Check the file “/etc/blockeddomains” is existing on the server. If it’s not there create one.
3. Add domains in “/etc/blockeddomains” to cut the email sending privilege.

You can use the following commands:

# echo "thedomain.com" > /etc/blockeddomains

Or, open “/etc/blockeddomains” with your favorite text editor and add/append the domain into it.

# vi /etc/blockeddomains

4. Set correct ownership to “/etc/blockeddomains.”

# chown root.mail /etc/blockeddomains

5. Set correct permission.

# chmod 640 /etc/blockeddomains

6. Then log into the WHM panel and go to “EXIM Configuration Manager.”

WHM –> Service Configuration –> EXIM Configuration Manager –> Advanced Editor
Search for “Add additional configuration setting.” This can be located one by forth of the way of scroll down

Add the following entry:

domainlist blocked_domains = lsearch;/etc/blockeddomains


7. Search for “ROUTERSTART” and add the following entry:


driver = redirect
domains = +blocked_domains
data = :fail: Connection rejected: SPAM source $domain is manually blacklisted.

This should be look like:

Yeah, that’s it!! Next time if you want to block another domain from sending emails, just add that domain into “/etc/blockeddomains” this file,

That’s it!!

04 Mar 2020

Guide For Migrating CPanel To DirectAdmin

Due to the recent new pricing scheme for cPanel, customers’ businesses have been impacted destructively. Therefore, customers have to go through a wide range of choices and some of them decided to migrate into DirectAdmin.

The DirectAdmin is the web hosting control panel software, which lets you administer your website as well as hosting options with the help of the graphical and web-based interface. With this, you can manage an unlimited number of websites as well as email accounts using a DirectAdmin control panel. It automates the task so that the web servers can be shared easily and provide a way to the website owners to set up as well as manage their websites in a fast way. 

In general, DirectAdmin allows you to:

  1. Create and manage email addresses, FTP user accounts
  2. Managing DNS
  3. Observing statistics
  4. Managing the FrontPage extensions
  5. Creating and managing subdomains
  6. Uploading and managing the file with the help of File Manager
  7. Managing MySQL Databases
  8. Backing up and restoring the site files and the account data
  9. Setting up error pages
  10. Setting up directory password protection
  11. Installing SSL certificates, setting up cron jobs as well as advanced tools.

You can easily establish and manage hundreds of websites. Also, DirectAdmin costs very low and has been considered as one of the most popular web hosting control panels. It consists of every feature which you will need to set up your website on the hosting platform.

Now, the question arises.

How do we migrate data from cPanel to DirectAdmin?

Migration is generally a bit risky as it involves live websites. Even a single mistake can cause so many website errors as well as data loss. We always take care of every step along with the proper planning.  So, in total, there are two ways to carry out cPanel migration. 

Following is a step-to-step guide for migrating cPanel to DirectAdmin

First Case: This case is applicable when we have root(WHM) access to SSH shell and we can migrate cPanel via the command line.

Let us have a checklist for this:

  1. Being sure that the hardware on the destination server is greater if not equals to the source server hardware specifications. You are also free to select different configurations from either Dedicated servers or Cloud VPS.
  2. Being sure to include the DirectAdmin license in the order.
  3. Being sure that you have the same amount of IPV4 addresses on your destination server as the source server.

Now, follow the steps below:

First Case: This case is applicable when we have root(WHM) access to SSH shell and we can migrate cPanel via the command line.

Let us have a checklist for this:

  1. Being sure that the hardware on the destination server is greater if not equals to the source server hardware specifications. You are also free to select different configurations from either Dedicated servers or Cloud VPS.
  2. Being sure to include the DirectAdmin license in the order.
  3. Being sure that you have the same amount of IPV4 addresses on your destination server as the source server.

Now, follow the steps below:

Step 1: Downloading the conversion tool

Initially, you need to download cPanel to DirectAdmin conversion tool.

Run the command line:

wget https://www.pusathosting.com/file/da.cpanel.import.9.4.tar.gz

Step 2: Creating paths

This tool will require a path (import and export one) which it will use for the conversion. What we will do is create the import and export directories.

mkdir import export

Step 3: Copying the files to “import directory”

What we will do is copy the user backups from cPanel to the import directory.

You can easily create the backups within the cPanel GUI or with the help of the following command:

/scripts/pkgacct USERNAME

This tool will convert the backups created by the following:

  • the ‘/scripts/pkgacct’ script
  • cPanel’s ‘Full Backup’ GUI tool

You need to run the following command on the source server with cPanel where you would be replacing [email protected] with the user as well as the IP address of the new DirectAdmin server.

rsync -av /home/cpmove-USER.tar.gz [email protected]:/import/

You know the name of the backup file is cpmove-USER.tar.gz and this is different for every account.

Step 4: Matching configuration

Now, you need to edit the defaults.conf so to match the DirectAdmin destination server. Here, you must only need to change the IP as well as the nameserver fields.

Step 5: Executing module

Now, you need to proceed to execute the module with the help of the command below and follow the on-screen instructions.

perl da.cpanel.import.pl

Step 6: Moving converted backups

After the completion of converting backups, you need to move the new files from the “export” directory to any DA/home/RESELLER/user_backups directory.

So, we will be using user “admin” as an example.

mv ./export/admin.tar.gz /home/admin/user_backups/

Step 7: Restoring the backups

So, we will now be restoring the backups in the DirectAdmin GUI.

With the help of the “Manage User Backups” tool within the reseller level.

a.) Choose the directory

b.) Choose the option “Stored in the backup”

c.) Select the backup files

So, this is one way to complete the migration from cPanel to DirectAdmin.

Second Case: So, the next case is when we do not have any access to SSH shell and have to migrate the cPanel manually i.e. without any tool.

Step 1: Packaging your account

If you do have root access to the server via SSH (like if you have any VPS), you can do this simply by following the command.

/scripts/pkgacct username

This command will place the cpmove-username.tar.gz file into the /home directory where it can be downloaded via FTP/SCP.

For those who only have user-level cPanel access, you need to login to your cPanel account. You will see a Wizard icon named Backup under the file section.

So, when you click on it, you will be prompted to

1. Backup

2. Full Backup

3. Provide email

When you have completed backup packaging, you will receive an email notification. The generated file will be placed in your home directory. So, you have to download this .tar.gz file onto your desktop.

Step 2: Preparing to upload

For those of you who are windows users, you have to download such as 7-Zip to unpack the tar.gz file. Now, you need to create a folder to place the file in and unpack it. The resulting files will be the entire data from your cPanel account (which also includes your mail in MailDir format). Now, you will find the homedir.tar and pull it out of the folder and then extract it.

Once extracted, you will see several folders that were in your home directory. In the tmp folder, you may find the statistics such as webalizer that can be opened right from your desktop. Moreover, the files you want to concentrate on, are present in /public_html.

If you use any add-on domains, then you need to move them from the public_html folder. Once you have done all this, you can then compress the public_html folder content as a .zip file. You need to do the same for each one of the add-on domains. But, remember to not delete the uncompressed copies.

Step 3: Moving files to DirectAdmin:

Next, you will login into your DirectAdmin account.

In case if you have any add-on domains or subdomains, click on the Domain setup.

After adding the domains as well as subdomains you do have, you can then click on the Files in the top menu bar. Now, you need to click on the ‘domains’ folder. You will see a list of each of your primary domain. For every domain, you would have to click into them until you reach public_html.

Now, you can select the entire files in the folder and delete them. Once you have removed it, you can click on the ‘Upload files into the current directory’ button near the bottom. Therefore, on the same page, you can select the zip file you created for the domain and upload it.

Once you upload it, you can click on the ‘extract’ link in the following row. By doing this, you will get a preview of the compressed archive’s contents. Now, as you can see my test zip, with being an OSX, there is a couple of extra files like _MACOSX and .dstore which can be deleted after the extraction. You can also see that when it is extracted, it will create a public_html folder. So, go for extracting the file.

Once it is extracted, and if the home files directories unpacked in the accurate location then you should not worry about moving anything. If your compressed file extracted into the new folder like another public_html folder, you will click on that folder. Moreover, on the top right, you have to select all the files and click on “Add to Clipboard”.

Now, go one folder back upside and click on the ‘MoveClipboard Files here’ after which you have to click on “Empty Clipboard”. So, here, you will be able to delete the extra public_html folder and the .zip file which was originally uploaded. Now, you need to repeat this step for every domain you have. You will see subdomains as a folder under the original’s domain’s name.  Therefore, if you have sub.testsite.com, it will appear as a folder named as /sub under /domains/testsite.com/public_html.

If you run a WordPress blog, you will have a good chance that your new DirectAdmin account won’t share the same username as your cPanel account. For the same reason, you would like to edit your wp-config.php file to change prefixed username_database/usr to a new username before _. You must also note the password in wp-config.php.

Step 4: Preparing your database:

Go to your extracted cPanel backup folder, you will see a MySQL folder. You will find SQL dumps of each of your database that includes horde or roundcube webmail databases.

Now, you need to login back to the DirectAdmin and click on the domain to find “MySQL Management” and click on the specific link. From here, you will click on ‘Create new database’.

You will see that the DA username is different from the cPanel username. For the password field, you need to make sure that you use the same password which your script was already using for the database. Now, you need to repeat this step for every database you have.

Note for the shell users:

If you are able to login to your account via SSH, then you can simply upload the .sql files via FTP/SCP to your home folder and from there, you can enter the following command to import your database.

mysql -utestuser_dbuser -p testuser_databasename < sql_file.sql

For your every SQL file, you can compress them as SQL files. Now, you can return to the MySQL setup screen and click on phpMyAdmin in the top left corner.

Here, you need to enter the username and password for the database which you are trying to upload. Once it is inside, click on the database you want to upload on the left. Now, you can click on the import tab and select your compressed sql file and click on the go. If everything goes well, you will see a success message on the screen which is followed by the database, showing a table count next to it.

To upload another database for a different database, user needs to click on the exit icon near the logo to be convinced for another username and repeat the process.

So, this is another way to migrate cPanel to DirectAdmin and that is, manually.


In short, DirectAdmin is the cheapest control panel and is very simple and user-friendly. So, migrate your cPanel to DirectAdmin today with WGS and without experiencing any website downtime. 

If You need any assiatnace in migration contact us.



11 Apr 2018

Installing CloudFlare plugin on cPanel server

This is a free Content Delivery Network (CDN) for your domain. CloudFlare provides a better Internet security services and distributed domain name server services, sitting between the visitor and the Cloudflare user’s hosting provider, acting as a reverse proxy for websites. CloudFlare’s cPanel plugin is also available to manage the CloudFlare account simply through the cPanel itself.

The CloudFlare cPanel plugin installation is very simple and it can be achieved within 5 minutes. This plugin integrates CloudFlare with your cPanel server. Try this and enjoy!!!

Installation Steps

Step 1. SSH to the server in which you need to install CloudFlare plugin.

Step 2. Enter the cPanel basic directory:

cd /usr/local/cpanel

Step 3. Download the tar file to your server.

curl -k -L https://github.com/cloudflare/CloudFlare-CPanel/tarball/master > cloudflare.tar.gz

Step 4. Untar the file

tar -zxvf cloudflare.tar.gz

Step 5. This will extracts a directory which includes a UNIQUE_ID. The sample format of this will be as follows:


Here w40bbb3 is the UNIQUE_ID.

cd cloudflare-CloudFlare-CPanel-UNIQUE_ID/cloudflare

Step 6. Execute the install script in the following format:

./install_cf API_HOST_KEY mod_cf "Your Company Name"

API_HOST_KEY – You will get this from your CloudFlare panel.
Your Company name – You can give your hostname here.

How to find the API_HOST_KEY?

You can copy the API_HOST_KEY from your CloudFlare account. Please do the following steps to find out the API_HOST_KEY.

Step 1. Log into your CloudFlare account.

Step 2. Go to “My Settings”.

Step 3. Scroll down to “Global API Key”.

Step 4. Click on the “View API Key” button to see your API identifier.

mod_cf is optional. If set, the installer will also try to install mod_cloudflare

That’s it!!! Now, you will be able to see an icon for “CloudFlare” in all your cPanel accounts.

Sample Output for a successful installation:

info [verify_api_spec_files] LoadFile
Register Complete

==> mod_cloudflare: Installed successfully.
==> You may need to customize your EasyApache profile to include Mod CloudFlare

CloudFlare module installed successfully.

In some cases, if you see the output as :

Your HOST_KEY (d892a17e61de5caa062302d54714eb39e4d42) is invalid.

If you see this error, please contact CloudFlare support and ask for valid Host key.

That’s it 🙂

22 Feb 2018

How to enable Varnish in cPanel server

Varnish is a caching technology. Varnish is a web accelerator and also referred as HTTP accelerator or reverse HTTP proxy, which will significantly enhance the performance of your website. Varnish cache is really fast thereby, speed up the delivery depending on your architecture.

Varnish enhance your website’s performance. Varnish stores a copy of the page which is served by the web server the first time a user visits the website. Next time, when the user requests for the same page, varnish will serve the copy instead of serving it from the web server. Thus, your webserver needs to handle only less traffic and there by increase the website performance and also reduce the server load.


Working of Varnish Cache

Once Varnish is installed in your server, it will listen in the port 80. Make Apache to listen in any other port other than 80. When a client requests for a page in your website, Varnish will try to serve the page from its cache memory. This is cache hit. If the page is not in its cache memory, then Varnish will request to HTTP (Apache) to serve the page and caches it for future reference.

Features of Varnish

1. Reduces the server load
2. High speed (cache + stored in RAM)
3. Useful to gain more visitors


1. Make Apache listen in any other port other than 80. Here I am making Apache to listen in port 8080. It can be done in two ways. Either editing the httpd.conf file or editing the Tweak settings in WHM

a) Editing httpd.conf file

# vi /usr/local/apache/conf/httpd.conf

Locate the following line in /usr/local/apache/conf/httpd.conf file and change the port from 80 to 8080


Once edited, the Apache config file for “Listen” should be as follows:

# grep -iw listen /usr/local/apache/conf/httpd.conf


b) Editing WHM – Tweak settings

WHM > Tweak Settings > Apache non-SSL IP/port

Set the port to 8080 and save the settings.

# grep VARNISH_LISTEN_PORT /etc/sysconfig/varnish

5. Edit Varnish config: /etc/varnish/default.vcl . Correct the IP address in this file to your IP address and port to 80

backend default {
  .host = "YOUR IP ADDRESS";
  .port = "80";

6. Start Varnish service on your server

# chkconfig varnish on
# service varnish start
# service varnish start
Starting Varnish Cache:                                    [  OK  ]

That’s it!!

You can check this by using the netstat command.

#netstat -plan | grep :80


# netstat -plan | grep :80
tcp        0      0        *                   LISTEN      15129/varnishd      
tcp        0      0      *                   LISTEN      12897/httpd        

Now, you can start monitor your Varnish with varnishstat


If you need to change your Varnish configuration file and you can test the configuration before restarting Varnish service by

# varnishd -C -f /etc/varnish/default.vcl

Note: While doing “yum install varnish” if you are getting libedit error, then follow the steps below:

varnish-3.0.5-1.el5.centos.x86_64 from varnish-3.0 has depsolving problems
  --> Missing Dependency: libedit.so.0()(64bit) is needed by package varnish-3.0.5-1.el5.centos.x86_64 (varnish-3.0)
Error: Missing Dependency: libedit.so.0()(64bit) is needed by package varnish-3.0.5-1.el5.centos.x86_64 (varnish-3.0)
 You could try using --skip-broken to work around the problem
 You could try running: package-cleanup --problems
                        package-cleanup --dupes
                        rpm -Va --nofiles --nodigest
The program package-cleanup is found in the yum-utils package.

In this case, you need to install the libedit rpm which is suitable for your architecture. You can find the rpm from http://rpmfind.net/linux/rpm2html

# wget ftp://rpmfind.net/linux/dag/redhat/el5/en/x86_64/dag/RPMS/libedit-20090923-3.0_1.el5.rf.x86_64.rpm
# rpm -ivh libedit-20090923-3.0_1.el5.rf.x86_64.rpm


# rpm -ivh libedit-20090923-3.0_1.el5.rf.x86_64.rpm
warning: libedit-20090923-3.0_1.el5.rf.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
Preparing...                ########################################### [100%]
   1:libedit                ########################################### [100%]


15 Feb 2018

How to Migrate Email from cPanel to cPanel

When transferring accounts between servers, transferring of email accounts is quite different. Transferring data from one server to another is technically called migration even if it is full website or email accounts or databases. When you perform a full website migration of a cPanel account, you do not need to migrate the emails manually. The cPanel transfer will migrate the email accounts also. As we know, there can be DNS propagation after a DNS change when you migrate your website. In the DNS propagation time, some of the emails coming to your email address may be directed to the old server and some of them to the new server. It should be ensured that you do not loss any valuable emails. This is what makes the email migration different from other migrations. Let’s see how the email account transfer is done for both cPanel and non-cPanel accounts.

Email Migration

Email migration can be performed in two ways, You can either utilize the cPanel interface or use the command line prompt.

In this article we are going to take a look on how to perform the migration in cPanel in order to navigate this process.

Follow the ensuing steps below:

Step 1: Backing up email directories

The first step in the email migration is to backup email directories present in the old server.

1) Login to cPanel interface for the account in question in the old server.

2) Open ‘File Manager’ under the section ‘Files’.



3) Go ‘Up One Level’ above public_html.



4) You can see the mail directory there. Enter into the directory.



5) Right click on the directory and click on the option available to compress the directory.

6) Now, download the compressed file to your computer.

Step 2: Restore email backups

1) Login to the cPanel interface of the new server.

2) Create the email accounts just as you did in the old server. You can create email accounts from the ‘Email Accounts’ section under the ‘Mail’ category.

3) Open ‘File Manager’ under the section ‘Files’.

4) Go ‘Up One Level’ above public_html and you can see the mail directory there. Enter into the directory.

5) Upload the email backup file to the directory.

6) Unzip the backup file and the delete the zip file.

7) Open Webmail and configure it to display the new email folders.

If you need any further assistance please contact our support department.

14 Feb 2018

Changing document root of website using .htaccess

By default the document root of your website on a cPanel based server is /home/$username/public_html . At the time anyone search your domain from there own end the site displays the index page from default location. That means from public_html folder. Here I’m explaining the way to change this default folder. That means you can customize the DNS fetching(Index page fetching) from your own folder.
This is possible via .htaccess. You will need to add the following code in your .htaccess file:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.domain.com$ 
RewriteCond %{REQUEST_URI} !folder/
RewriteRule (.*) /folder/$1 [L]

Replace ‘domain.com’ with your domain name and ‘folder’ with your custom folder name where you kept the index

Thats it.

08 Feb 2018

Cronjob to delete all emails older than one month

Before starting with the cronjob script, we must know the locations where the emails stored in the server. Then we can go to the steps to remove them  Exactly there are three folders in a cPanel based server for managing received emails.

Those are cur, new, tmp. The main differences between these three are listed below

new : This is the folder where all emails are first received.
cur : Is the folder having emails that are opened/read by mail client.
tmp : Is the folder contains processed emails for delivery purpose.

In most cases these emails in the server cause high disk space usage in the server. We can remove older email by using different ways. Here I’m explaining the steps to remove emails older than one month from the server by the help of cron.

To clear old emails from the server means, remove email related files from cur folder under mails directory and all other mail user directory. There are cur and new directories under the mail folder for cPanel default mail and also the same in each users domain directory. ie /home/username/mail/domain.com/***/cur Here *** represents each mail user folder. (admin/ for [email protected])

Step 1 : Creating an executable file with command to remove emails

For simplicity, create an executable file under anywhere (here I selected the location under root) and place the script to remove older mails.

Here I’m using the find command to find and remove mails which are older than 30 days (-mtime switch for finding mails older than 30 days.

[[email protected]]# touch mailcleaner.sh

Edit the file using your favorite file editor

[[email protected]]# vim mailcleaner.sh

find /home/username/mail/yourdomain.com/*/cur -type f -mtime +30 -exec rm -f {} \;

Then change that file to an executable one. (ie file permission to 755)

[[email protected]]# chmod 755 /root/mailcleaner.sh

Step 2 : Creating CRON job

Next step is to set the cronjob under root (for setting a cronjob refer this link). Here I’m setting the cron job to run every 1 day of the month.

[[email protected]]# crontab -e
 0 0 1 * * /root/mailcleaner.sh > /dev/null 2>&1
[[email protected]]# crontab -l : To list all cronjobs.

In this case the file mailcleaner.sh will execute first day of every month and remove all emails older than 30days.

Thank you.

©2021 Tranzmedia Netvision Limited. All Rights Reserved.