Category Archives: Plesk

Plesk CLI Tools

Plesk CLI tools – email account mailbox size updation

Plesk cli tools are helpful for the system administrators to bulk updations in plesk using scripts and it will help to save lots of time. Here I am discussing the plesk cli tool for updating the mailbox quota for an email account.

If we need to update mailbox quota for a few accounts, we can easily do this from plesk front end. But if the count is high, we may need to script it via cli.  Following is the command to update mailbox quota for a single email account. 

plesk bin mail -u -mbox_quota 1G

If number of mail accounts are a large number, then we can take the email account list for all the mail account from all the domains from the following command. 

plesk bin mail  -l

Just filter the list with your domain, here it is “”

plesk bin mail  -l | grep

Using  a for loop to pass each email account from the above list to the quota update command. Here is the exact command for the same. 

for email in $(plesk bin mail  -l | grep ; do plesk bin mail -u $email  -mbox_quota 1G ; done 

Note : Take a backup for psa before doing this change. So that we can restore the settings, if anything goes wrong. 

Plesk cli tools needs to be done with the help of an experienced linux system administrator to avoid mistakes. You can get in touch with your hosting provider for support or get in touch with our plesk support services for assistance.


How to change default PHP version in plesk

How to change default PHP version in plesk

In this article, I am referring to change default php version in plesk. In latest plesk versions are come with all the php versions installed ( we have the option to install all the php versions ). So no need to install a separate php in the server for setting the default PHP to the latest version. Creating symlink and some additional commands to bring the default handler to the required version.

Here is the environment in which the command worked.

Plesk Version : 17.5.3 CentOS 7

List the php handlers

/usr/local/psa/admin/bin/php_handlers_control --list

Verify the default php version.

php -v

Check the PHP version 5.6

/opt/plesk/php/5.6/bin/php -v

Find the default php binary

which php

Backup the php, php-cgi and php-fpm binaries.

mv /usr/bin/php /usr/bin/php.backup
mv /usr/bin/php-cgi /usr/bin/php-cgi.backup
mv /sbin/php-fpm /sbin/php-fpm.backup

Create symlink from php 5.6 binaries

ln -s /opt/plesk/php/5.6/bin/php /usr/bin/php
ln -s /opt/plesk/php/5.6/bin/php-cgi /usr/bin/php-cgi
ln -s /opt/plesk/php/5.6/sbin/php-fpm /sbin/php-fpm

You can set symlink from any other php version installed in the server. Following are the php bnaries for other versions, find the same for php-cgi and php-fpm too.


Once the symlink is created, the php version will show the new version we set. You can check it using the following command.

php -v

Next option is to update the plesk database with the changed versions. The reread option will update plesk database with the new versions.

/usr/local/psa/admin/bin/php_handlers_control --reread

After that reconfigure all the domains or the domains using the default php versions. And proceed with a service restart.

/usr/local/psa/admin/sbin/httpdmng --reconfigure-all
service httpd restart

Once this is completed, the sites will load with new php version.

Note: Make sure to do this by a qualified technician.

If you need us to do these changes for your server, please get it touch without support


MagicSpam Extension Installation fails in Plesk 17

Recently we faced the below error while trying to install MagicSpam free version via plesk interface and got installed via command line using the rpm from the plesk download section. Since the plesk download section had too old version and plesk was showing an upgrade option and free version was not working (which I installed from rpm available at plesk )

Error while trying to install / upgrade from plesk interface is the below 
 Installation of extension has failed
 Execution of /usr/local/psa/tmp/modulehfmXQh/plib/scripts/pre-install.php failed with exit code 1 and the output:
 Failed to find operating system package manager rpm or dpkg.
 Contact with full details of your installation for assistance.

Normal rpm installation and yum install was working fine. Continue reading


Generate CSR and Private Key in Plesk

Certificate Signing Request ( CSR ) is a message sent from an applicant to a Certificate Authority in order to apply for a digital identity certificate.

Before creating a CSR, the applicant first generates a key pair, keeping the private key secret. The CSR contains information identifying the applicant (such as a distinguished name in the case of an X.509 certificate) which must be signed using the applicant’s private key. The CSR also contains the public key chosen by the applicant. The CSR may be accompanied by other credentials or proofs of identity required by the certificate authority, and the certificate authority may contact the applicant for further information. Continue reading

cPanel to Plesk Migration

cPanel to Plesk – How to Migrate a hosting account ?

Migration from cPanel to Plesk

Plesk and cPanel have different business models and features, requiring the conversion of migrated objects during deployment on the destination server. I am referring the way to migrate a cPanel hosting account to Plesk

For example: Parked domains in  cPanel converts to domain aliases in Plesk.

Some objects and settings will not migrate due to the technical limitations

For example: Encrypted FTP user’s password in cPanel will not migrate to Plesk.

 Plesk generates new passwords for FTP users during the deployment process and reports them in the migration results report.

This article explains the process of migrating accounts from cPanel to Plesk control panel using the Plesk Migration & Transfer Manager tool.

Plesk’s built-in Migration Manager is available only on latest versions of Plesk like 11.0,11.5,12.0,12.5

Open the Migration & Transfer Manager in the Plesk GUI:

Tools & Settings > Migration & Transfer Manager 
and click the Start New Migration button.

Step 1:

On the first step of the migration wizard, input the source server hostname (or IP address), the SSH server’s port, and the root user password. Then choose the options to migrate the whole server or to perform a selective migration.

Leave the Use rsync transport option enabled — this will improve the speed and reliability of the data transfer, as well as lower the free disk space requirements for both the source and the destination servers.

Migration Settings


You can specify the location of temporary migration data on the source (Migration & Transfer Agent upload path) and destination (Temporary Files Location) servers. If the source server hosts large databases or the Use rsync transport option has been disabled, it is recommended you to choose paths to locations with enough free disk space

Step 2:

If selective migration was selected in the previous step, the Migration & Transfer Manager wizard will present a screen with a list of accounts on the source server, each with a check-box to select.

Additionally, you can choose the options to transfer all data, mail only, or everything except mail. By default, all data will migrate.

Step 3:

The next step IP address mapping  allows you to choose an IP mapping scheme.(i.e. which IP addresses the domains will have on the destination server, based on the IP addresses they had on the source server)

Two or more shared IP addresses can maps to a single shared IP address on the Plesk server. But mapping of dedicated IP addresses can be done one-to-one.

IP addresses will be changed in domain’s DNS records and hosting setup during deployment.



Step 4:

After that, your migration will start. Progress can be monitored on the Migration & Transfer Manager screen. Upon completion, the Migration and Transfer Manager will report on the general status of the migration. (Completed or Completed with errors)


If the migration finishes with errors, links to view or download the migration results report will be available on the migration process screen. To access it, click on the source server’s hostname in the list of migrations

For migration assistance, you can contact us. Also we will manage cPanel and Plesk servers with lowest rates, you can check our cPanel Server Management for more details.


Getting nginx disabled message while trying to start nginx service in plesk.

Sometimes we get the following error message, even if nginx is enabled in plesk.

[root@server ~]# /etc/init.d/nginx start
Not starting nginx as it is disabled in config

You can confirm the nginx service is enabled in the server using the following commands.

[root@server ~]# /usr/local/psa/admin/sbin/nginxmng -s
[root@server ~]# chkconfig --list | grep nginx
nginx           0:off   1:off   2:on    3:on    4:on    5:on    6:off

Try enablng nginx as root from the terminal will fix the issue.

[root@server ~]# /usr/local/psa/admin/sbin/nginxmng -e
[root@server ~]# /etc/init.d/nginx status
nginx (pid  9873) is running...

Note: The enable/disable operations for the Reverse Proxy Server (Nginx) listed above do not just start and stop the Nginx service. They also switch the web server configuration for all the domains in Plesk (Nginx and Apache combination or just an Apache web server).


Detecting WordPress Outbound Bruteforce attack

We have heard a lot about the WordPress inbound Bruteforce attacks. On checking we can see the inbound attack IP’s  may have cpanel installed and  are actually generating from some other server which is infected.

Two day before,we  got a message from a client of ours saying data center has informed them that server is infected and is generating attacks on other servers. Initially I am not able to get any of the details regarding the attack as no rogue process is running neither scan using gave me any valid clue on this attack .

I was just checking the result of tcpdump to see the what all data is being transferred from the server.

user@host ~ # tcpdump -A -i eth0 -s 1500 port not 22

While checking the results I can see something is going on and many wp-login.php entry was going on.

Sample tcpdump Output (changed domain and hostnames)

v.G....pPOST /restaurants/wp-login.php HTTP/1.0^M
Content-Type: application/x-www-form-urlencoded^M
Content-Length: 30^M
06:15:22.056294 IP > host6.domain.com48202: Flags [P.], seq 2779525802:2779527849, ack 2761432155, win 3216, options [nop,nop,TS val 166530731 ecr 1994475337], length 2047

I tried to stop apache and mysql ,psa, and still some process were running as www-data user and the process was some thing like the below.

www-data 1258 10.8 1.5 18327 1268 ? Ssl Dec10 129:10 /usr/bin/host 

I took the lsof result of this command and I got the culprit (account ) responsible for this attack 🙂 Thanks to lsof command to give me correct location and scripts.

Relevant output from lsof command

host 20636 username cwd DIR 9,2 4096 60874901 /var/www/vhosts/
host 20636 username rtd DIR 9,2 4096 2 /
host 20636 username txt REG 9,2 120240 68160132 /usr/bin/host
host 20636 username DEL REG 9,2 60817452 /var/www/vhosts/
host 20636 username mem REG 9,2 22928 23855190 /lib/
host 20636 username mem REG 9,2 51728 23855282 /lib/
host 20636 username mem REG 9,2 12582912 60827148 /var/www/vhosts/
host 20636 username DEL REG 9,2 60817412 /var/www/vhosts/
cwd : /var/www/vhosts/

The above entry from lsof means attack is being generated from this folder and scripts are located in this location.




Above 3 files are the main hack files in which / was not present in the server at that time . This script was removed soon after the attack in initiated.

To fix this , I have removed the entire “js” folder and then kill all these process. Also asked client to remove the plugin. It will be good if we can remove the host binary (/usr/bin/host) file. If it is there, they can again come back with the attack and can kill the server reputation within few hours.


Multiple Versions of PHP in plesk


By default, in latest version of plesk we will have 5.4 version of php. So if you need additional php version, you can install seperatly and those additional  version will be available in fastcgi and cgi handlers.

Installtion Steps for php 5.2.17 version

# cd /usr/local/src
# wget
# tar -zxvf php-5.2.17.tar.gz
# cd php-5.2.17
# ./configure --with-libdir=lib64 --cache-file=./config.cache --prefix=/usr/local/php-5.2.17 --with-config-file-path=/usr/local/php-5.2.17/etc --disable-debug --with-pic --disable-rpath --with-bz2 --with-curl --with-freetype-dir=/usr/local/php-5.2.17 --with-png-dir=/usr/local/php-5.2.17 --enable-gd-native-ttf --without-gdbm --with-gettext --with-gmp --with-iconv --with-jpeg-dir=/usr/local/php-5.2.17 --with-openssl --with-pspell --with-pcre-regex --with-zlib --enable-exif --enable-ftp --enable-sockets --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-wddx --with-kerberos --with-unixODBC=/usr --enable-shmop --enable-calendar --with-libxml-dir=/usr/local/php-5.2.17 --enable-pcntl --with-imap --with-imap-ssl --enable-mbstring --enable-mbregex --with-gd --enable-bcmath --with-xmlrpc --with-ldap --with-ldap-sasl --with-mysql=/usr --with-mysqli --with-snmp --enable-soap --with-xsl --enable-xmlreader --enable-xmlwriter --enable-pdo --with-pdo-mysql --with-pdo-pgsql --with-pear=/usr/local/php-5.2.17/pear --with-mcrypt --without-pdo-sqlite --with-config-file-scan-dir=/usr/local/php-5.2.17/php.d --enable-fastcgi
# make 
# make install

There may be some error while compiling and you need to make necessary changes in the configure as per your need / your server.

# cp /usr/local/src/php-5.2.17/php.ini-recommended /usr/local/php-5.2.17/etc/php.ini

Make necessary changes in the php.ini like timezone setting, memory limit etc.

Inorder to register this php version in plesk, we need to use the below command.

# /usr/local/psa/bin/php_handler --add -displayname "PHP 5.2.17" -path /usr/local/php-5.2.17/bin/php-cgi -phpini /usr/local/php-5.2.17/etc/php.ini -type fastcgi -id "fastcgi-5.2.17"

You will get a message like ” The new PHP handler with the id “fastcgi-5.2.17″ was successfully registered”

Installtion Steps for php 5.3.28 version

# cd /usr/local/src
# wget
# tar -zxvf php-5.3.28.tar.gz
# cd php-5.3.28
# ./configure --with-libdir=lib64 --cache-file=./config.cache --prefix=/usr/local/php-5.3.28 --with-config-file-path=/usr/local/php-5.3.28/etc --disable-debug --with-pic --disable-rpath --with-bz2 --with-curl --with-freetype-dir=/usr/local/php-5.3.28 --with-png-dir=/usr/local/php-5.3.28 --enable-gd-native-ttf --without-gdbm --with-gettext --with-gmp --with-iconv --with-jpeg-dir=/usr/local/php-5.3.28 --with-openssl --with-pspell --with-pcre-regex --with-zlib --enable-exif --enable-ftp --enable-sockets --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-wddx --with-kerberos --with-unixODBC=/usr --enable-shmop --enable-calendar --with-libxml-dir=/usr/local/php-5.3.28 --enable-pcntl --with-imap --with-imap-ssl --enable-mbstring --enable-mbregex --with-gd --enable-bcmath --with-xmlrpc --with-ldap --with-ldap-sasl --with-mysql=/usr --with-mysqli --with-snmp --enable-soap --with-xsl --enable-xmlreader --enable-xmlwriter --enable-pdo --with-pdo-mysql --with-pdo-pgsql --with-pear=/usr/local/php-5.3.28/pear --with-mcrypt --without-pdo-sqlite --with-config-file-scan-dir=/usr/local/php-5.3.28/php.d --without-sqlite3 --enable-intl
# make 
# make install

There may be some error while compiling and you need to make necessary changes in the configure as per your need / your server.

# cp -a /etc/php.ini /usr/local/php-5.3.28/etc/php.ini

Make necessary changes in the php.ini like timezone setting, memory limit etc.

Inorder to register this php version in plesk, we need to use the below command.

# /usr/local/psa/bin/php_handler --add -displayname "5.3.28" -path /usr/local/php-5.3.28/bin/php-cgi -phpini /usr/local/php-5.3.28/etc/php.ini -type fastcgi -id "fastcgi-5.3.28"

You will get a message like ” The new PHP handler with the id “fastcgi-5.3.28″ was successfully registered.”

After this try to login to plesk and see if these additional php version are available in fastcgi and cgi handlers.

If all good then you are set to use all these additional php version in plesk.





Error : “Identifier removed: couldn’t grab the accept mutex” in apache error logs

Apache was getting stopped automatically with the below logs in the Apache Error log:

[Tue Jul 22 22:29:35 2014] [alert] Child 30758 returned a Fatal error… Apache is exiting!
[Tue Jul 22 22:29:35 2014] [emerg] (43)Identifier removed: couldn’t grab the accept mutex
[Tue Jul 22 22:29:35 2014] [emerg] (43)Identifier removed: couldn’t grab the accept mutex
[Tue Jul 22 22:29:35 2014] [emerg] (43)Identifier removed: couldn’t grab the accept mutex

These type of errors occur on systems low on memory or file handlers.The AcceptMutex directives sets the method that Apache uses to serialize multiple children accepting requests on network sockets.

One suggested resolution for the error message would be to try adding the following line to /usr/local/apache/conf/httpd.conf file:

AcceptMutex fcntl

If you add this above “<IfModule prefork.c>” in tht file, you could then try running these commands to distill the change and restart Apache:

Continue reading


Find domains targeted for wordpress brute-force attack in Plesk

The following script will give an overview of all the domains and the corresponding hits to wordpress login page. By analyzing the result, you will be be able to find which all domains are facing brute-force attack.

for dom in `ls -l /var/www/vhosts/ | awk -F” ” {‘print $9’}`; do if [ -f /var/www/vhosts/$dom/statistics/logs/access_log ]; then COUNT=`grep wp-login.php /var/www/vhosts/$dom/statistics/logs/access_log |wc -l`; echo “$dom:$COUNT”;fi; done | sort -n -t “:” -k 2 -r