Run the following commands as root on cPanel server.
Block :
whmapi1 suspend_outgoing_email user=USERNAME
Unblock :
whmapi1 unsuspend_outgoing_email user=USERNAME
Run the following commands as root on cPanel server.
Block :
whmapi1 suspend_outgoing_email user=USERNAME
Unblock :
whmapi1 unsuspend_outgoing_email user=USERNAME
1.Create your own Telegram bot based on this tutorial :
https://www.domoticz.com/wiki/Telegram_Bot
or this one :
https://www.forsomedefinition.com/automation/creating-telegram-bot-notifications/
2.Create an email forwarder in cPanel and pipe it into a PHP script. make sure the script is executable (755 permission).
3.Here is the php script that will forward the email to your telegram bot :
Dont forget to adjust $url variable in telegram function based on first step.
#!/usr/local/bin/php -q <?php function mailRead($iKlimit = "") { if ($iKlimit == "") { $iKlimit = 1024; } $sErrorSTDINFail = "Error - failed to read mail from STDIN!"; $fp = fopen("php://stdin", "r"); if (!$fp) { echo $sErrorSTDINFail; exit(); } $sEmail = ""; if ($iKlimit == - 1) { while (!feof($fp)) { $sEmail .= fread($fp, 1024); } } else { while (!feof($fp) && $i_limit < $iKlimit) { $sEmail .= fread($fp, 1024); $i_limit++; } } fclose($fp); return $sEmail; } function telegram($m) { $url = 'https://api.telegram.org/botxxxxxxx:xxxxxxxxx/sendMessage?chat_id=xxxxx&text='; $url .= urlencode($m); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); } $mail = mailRead(4096); $lines = explode("\n", $mail); $from = ""; $subject = ""; $headers = ""; $message = ""; $splittingheaders = true; for ($i = 0; $i < count($lines); $i++) { if ($splittingheaders) { $headers .= $lines[$i] . "\n"; if (preg_match("/^Subject: (.*)/", $lines[$i], $matches)) { $subject = $matches[1]; } if (preg_match("/^From: (.*)/", $lines[$i], $matches)) { $from = $matches[1]; } if (preg_match("/^To: (.*)/", $lines[$i], $matches)) { $to = $matches[1]; } } else { $message .= $lines[$i] . "\n"; } if (trim($lines[$i]) == "") { $splittingheaders = false; } } telegram("From: $from\nSubject: $subject\nMessage: $message"); ?>
If you have a compromised cPanel account which is used by spammers to send out spam emails, you can use the following trick to prevent the account from sending out any emails temporarily until you can fix the issue.
Edit “/etc/cpanel_exim_system_filter” and add the following ACL to the end of it.
Change USERNAME to compromised cPanel account.
if ( $received_protocol is "local" or $received_protocol is "esmtpa" ) and ( $h_Received contains "USERNAME" ) then seen finish endif
If you want to make the change permanent, you have to create a file in “/usr/local/cpanel/etc/exim/sysfilter/options” and put above rule in it.
As a minimalist person, I am not a fan of running heavy monitoring tools of HP on my server. so I have written a very small bash script to monitor my server RAID status and send me email alerts if it fails.
For this script to work, first you need to install hpacucli (HP Array Configuration Utility) on your server. you can download it from HP website for your Linux distribution.
The script is very easy to understand but you may need to tweak it a little bit to fit your server.
The heart is this line :
hpacucli ctrl slot=1 pd all show
which returns following on my server :
\\ EMPTY LINE Smart Array P222 in Slot 1 array A physicaldrive 2I:1:1 (port 2I:box 1:bay 1, SATA, 3 TB, OK) physicaldrive 2I:1:2 (port 2I:box 1:bay 2, SATA, 3 TB, OK) physicaldrive 2I:1:3 (port 2I:box 1:bay 3, SATA, 3 TB, OK) physicaldrive 2I:1:4 (port 2I:box 1:bay 4, SATA, 3 TB, OK)
but we only need lines 6-9 which are showing the drives status. It is where you may need to tweak it as you may have more or less drives.
So it may not be 6-9 for you and you may need to change 6,9 in sed command.
Here is the final script :
#!/bin/bash MAIL=mail@domain.com RESULT=`hpacucli ctrl slot=1 pd all show | sed -n '6,9 p' | grep -v OK` if [ -n "$RESULT" ]; then echo "$RESULT" | mail -s 'Raid Error' "$MAIL" else echo "Raid is OK" fi
Dont forget to change MAIL variable to your own email address.
You may test the script once to make sure your server is able to send emails and you actually receive them.
Finally save the script in a file and put it in cronjob. I have chosen to run it every 12 hours :
0 */12 * * * /usr/bin/raidcheck
Make sure mutt & bzip2 are installed on your server.
Change USERNAME & PASSWORD to your MySQL login credentials.
Change email@domain.com to your email which can accept large attachments (gmail is recommended, currently it accepts attachments up to 25MBs)
Put the following line in your crontab. you can access crontab by this command : crontab -e
0 0 * * * mysqldump --user=USERNAME --password=PASSWORD -A | bzip2 > ~/AllDBsBackup.bz2 && echo | mutt -a ~/AllDBsBackup.bz2 -s "All DBs Daily Backup" -- email@domain.com
These steps show how to check your e-mail on a pop3 server using a telnet client.
Telnet to the pop3 server.
telnet pop3.somedomain.com 110
You should recieve a reply to this effect.
Trying A.B.C.D... Connected to pop3.somedomain.com. Escape character is '^]'. +OK (rwcrpxc13) POP3 server
if you want to connect to a pop3 SSL server use the following command on a linux shell :
openssl s_client -connect FQDN:PORT
for instance for gmail it is :
openssl s_client -connect pop.gmail.com:995
You will get a response like this :
CONNECTED(00000003) depth=1 /C=US/O=Google Inc/CN=Google Internet Authority verify error:num=20:unable to get local issuer certificate verify return:0 --- Certificate chain 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=pop.gmail.com i:/C=US/O=Google Inc/CN=Google Internet Authority 1 s:/C=US/O=Google Inc/CN=Google Internet Authority i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority --- Server certificate -----BEGIN CERTIFICATE----- MIIDWjCCAsOgAwIBAgIKYgy3qQADAAAJ5zANBgkqhkiG9w0BAQUFADBGMQswCQYD VQQGEwJVUzETMBEGA1UEChMKR29vZ2xlIEluYzEiMCAGA1UEAxMZR29vZ2xlIElu dGVybmV0IEF1dGhvcml0eTAeFw0wOTA3MTcxNzE2NTVaFw0xMDA3MTcxNzI2NTVa MGcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1N b3VudGFpbiBWaWV3MRMwEQYDVQQKEwpHb29nbGUgSW5jMRYwFAYDVQQDEw1wb3Au Z21haWwuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDTHqjJfnRXdpmZ 4iP/WNCpvzX4N97bEZ3rvS4aDYey/DJetKZqp9DK1Ie4/C5j8M1aakwiTNA/eHS/ wNWVgQx8+HxproYKUeeYj3shYKEkHGfrRYBcyCxc7Gd6NSGaaYru3Z7nJ+STIPUJ E1N35JAwcjjdITVI2O4LckAL4b7GkwIDAQABo4IBLDCCASgwHQYDVR0OBBYEFIln 0T5I8Mw6cqhtUS4pyMGYRxOTMB8GA1UdIwQYMBaAFL/AMOv1QxE+Z7qekfv8atrj axIkMFsGA1UdHwRUMFIwUKBOoEyGSmh0dHA6Ly93d3cuZ3N0YXRpYy5jb20vR29v Z2xlSW50ZXJuZXRBdXRob3JpdHkvR29vZ2xlSW50ZXJuZXRBdXRob3JpdHkuY3Js MGYGCCsGAQUFBwEBBFowWDBWBggrBgEFBQcwAoZKaHR0cDovL3d3dy5nc3RhdGlj LmNvbS9Hb29nbGVJbnRlcm5ldEF1dGhvcml0eS9Hb29nbGVJbnRlcm5ldEF1dGhv cml0eS5jcnQwIQYJKwYBBAGCNxQCBBQeEgBXAGUAYgBTAGUAcgB2AGUAcjANBgkq hkiG9w0BAQUFAAOBgQCEGIebkDpktdjtzMiTTmEiN7e4vc73hEI4K0jYKyY0Wn5N dc44AXTfIWOzsikwb886PCUSevGs9rcw2/kaHdPaBSuGrzSCf8ODQqTC3odry3lo PtZGr6nf/81F5UW71+bE1iWOQlJ5/olWOr2SlqYla1iOmosEctD/GyoFnDh+BA== -----END CERTIFICATE----- subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=pop.gmail.com issuer=/C=US/O=Google Inc/CN=Google Internet Authority --- No client certificate CA names sent --- SSL handshake has read 1703 bytes and written 300 bytes --- New, TLSv1/SSLv3, Cipher is RC4-MD5 Server public key is 1024 bit Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1 Cipher : RC4-MD5 Session-ID: AF09D6024039D1F70D7A6518034EF3B2E1B949C15A71ED3D0E85BC89F7D4ADC2 Session-ID-ctx: Master-Key: 58D4202B16256CA5715C45B2CDDDFDDC16ABCAEF2A0993D23F3817193AE3F4A4E5531EF13CA970BADD1F8EA273FD6871 Key-Arg : None Start Time: 1270025037 Timeout : 300 (sec) Verify return code: 20 (unable to get local issuer certificate) --- +OK Gpop ready for requests from a.b.c.d q9pf826547gve.29
Enter your username for the pop3 e-mail account using the “user” command.
user username_here
You should recieve the following reply.
+OK
Enter your password for the pop3 e-mail account using the “pass” command.
pass password_here
You should recieve the following reply.
+OK Maildrop ready
Stat your mailbox using “stat” command.
stat
You will get response showing the number of messages on the server and total size of them.
+OK 2 9141
List the mail on the pop3 e-mail account using the “list” command.
list
You will see the list of messages on the server.
+OK scan listing follows 1 1489 2 7652 .
To see one of the messages issue the retrieve command “retr” and the message id.
retr 1
You will see the whole e-mail headers and all.
+OK 1489 octets Return-path: Received: from blah (blah.somedomain.net [a.b.c.d]) by blah2.somedomain.net (iPlanet Messaging Server 5.2 HotFix 1.16 (built May 14 2003)) with ESMTP id <0HHF00C6KK6NXJ@blah2.somedomain.net> for me@here.net; Wed, 02 Jul 2003 23:54:23 -0400 (EDT) Date: Wed, 02 Jul 2003 23:52:59 -0400 From: Me Subject: test To: you@there.net Reply-to: me@here.net Message-id: <200307022352.59679.me@here.net> Organization: Pantz.org MIME-version: 1.0 Content-type: text/plain; charset=us-ascii Content-transfer-encoding: 7bit Content-disposition: inline User-Agent: KMail/1.5.1 Original-recipient: rfc822;me@here.net test
If you would like to delete the message issue the dele command with the message id.
dele 1
You will then see a delete confirmation.
+OK message deleted
To finish issue the quit command.
quit
Response :
+OK Connection closed by foreign host.
if you want to limit all domains globally , login into your WHM control panel. then go to Server Configuration –> Tweak Settings.
in the Mail section , you will find this setting :
The maximum each domain can send out per hour (0 is unlimited)
set it to any number that you want and click on Save.
but if you want to set the limit for each domain individually , edit /var/cpanel/maxemails :
nano /var/cpanel/maxemails
and add the following line into it ( replace domain.com and 100 with your domain name and limit number ) :
domain.com=100
then execute the following command :
/scripts/build_maxemails_config
A very effective way for backing up your data on a Linux server is to set a cron job on your box to mail your data to your GMail account. GMail servers are very reliable and give you a huge amount of space for free. so they are pretty suitable for backing up sensitive data.
In order to accomplish this , first create a directory named “backup” in the root directory of your box :
cd / && mkdir backup
then you need to create a script to do the backup and mail it for you.
nano /usr/bin/backup
copy and paste the following into the file :
cd /backup rm -rf /backup/* cp LIST_OF_FILES . tar jcf backup.tar.bz2 * echo | mutt -a backup.tar.bz2 -s "my daily backup" -- adminsehow@gmail.com
you have to change LIST_OF_FILES string to the list of the files you want to be backed up separated by space , and change adminsehow@gmail.com to your own gmail account.
as you can see in the script we are compressing the data files to make them as small as possible.
also we are using “mutt” to send emails so you need to install it , in Debian you can install it by following command :
apt-get install mutt
make the script executable :
chmod +x /usr/bin/backup
lastly you need to set a cron job , so open the cron file by following command :
crontab -e
and copy and paste the following command into it :
0 0 * * * /usr/bin/backup
it will run your backup script once daily 🙂
also don’t forget you need to have a working smtp server on your Linux box.
Powered by WordPress