Search left

How to create a full backup of Plesk client data



The problem: Making a daily/weekly/monthly backup of your *nix Plesk server, with no other 3rd party tools involved.
Subrelated problem
: The server may be pretty unresponsive during the backup process. We can avoid that by “niceing” the process.

The solution: We’ll use pleskbackup and some sh scripting. Our idea is to make a daily backup of all domains and settings, and keep the last 7 backups (as you will see you can modify the number of days to retain, the location, the backup name).

The backup file will have the day as a suffix, for an easier identification.

Also, the backups will be saved in a dedicated folder to ease the process of rsync to another server (syncing to Amazon S3 will follow).

#!/bin/sh

# Nice Plesk Backup
# (c) 2008 Frontline softworks, www.frontline.ro
# Visit http://sandbox.frontline.ro for updates

# Plesk Backup Utility Location
PleskBackup='/usr/local/psa/bin/pleskbackup'

# Backup folder
BackupFolder='/--plesk-backup/';

#Backup filename
BackupFileName='plesk-server';

#Backup extension
BackupExt='bak';

# Number of backups to keep
NrOfBackups=7;

# Generate the file names for the backups to keep (last NrOfBackups including today)
for (( i=0; i<$NrOfBackups; i++)); do
    FileToKeep[$i]=`date --date=$i' day ago' +%Y%m%d`;
done

# Generate the complete path of the backup files to keep
for (( i=0;i<${#FileToKeep[@]};i++)); do
    FileToKeep[$i]=$BackupFolder$BackupFileName-${FileToKeep[i]}.$BackupExt;
done

# Start PleskBackup Utility for current day, save to FileToKeep[0]
# We'll renice the process, to avoid server lockup during backup
# Other usefull parameters
# -v: Verbose (useful for debugging)
# --skip-logs: skips client logs
nice -15 $PleskBackup all ${FileToKeep[0]}

# Search the backup folder, and delete all the files older than last 'NrOfBackups' days
for file in `find $BackupFolder -type f -name $BackupFileName\*$BackupExt`; do
    donotdelete=false;

for (( i=0;i<${#FileToKeep[@]};i++)); do
    if [ "$file" = "${FileToKeep[i]}" ]; then
        donotdelete=true;
    fi
done

    if [ "$donotdelete" = "false" ]; then
        rm $file;
    fi
done

Save the above script in /etc/cron.daily and wait for the daily run.

Have fun playing …


Posted on May 23rd, 2008 in General, Linux, Plesk | 1 Comment »




How to trim/pack Spamassassin´s auto-whitelist



The problem: if a mailbox has spam filtering enabled, Spamassasin creates and maintain an auto-whitelist for each of it, and this file increases in time. Generally, every admin wants to trim it or limit it’s size.

Solution 1: On Debian Etch servers running Plesk / QMail & Spamassassin, each mail user has it’s own config files /var/qmail/mailnames/domain/user/.spamassassin. You can add bayes_expiry_max_db_size to each user local.cf or default.cf, but it’s not a global solution and it’s hard to maintain to new users.

Solution 2: Another approach is to run a job (let’s say weekly) to automatically trim the auto-whitelist for all mail users on the server. It’s fast, easy … and you can forget about this in the cron job ;)

After a bit of googling, we found a script to trim old and unused records from an auto-whitelist file here. (in the rest of the article, we’ll assume that the above script is saved as /root/bin/trim-spamassasin-auto-whitelist and it’s made executable with chmod +x)

So far, so good, but the above script works on only one given auto-whitelist.

We can use some bash/sh scripting to find all the mail users settings and apply the trimming to every file, as follows:

#!/bin/sh

# Trim old records and unused space from mail users's .spamassasin/auto-whitelist
# (c) 2008 Frontline softworks, www.frontline.ro
# Visit http://sandbox.frontline.ro for updates

# Trim Utility Location
# Get if from http://www.deepnet.cx/~kdeugau/spamtools/trim_whitelist
TrimUtility='/root/bin/trim-spamassasin-auto-whitelist'

# Users mail storage folder
UsersMail='/var/qmail/mailnames/'

# Auto-whitelist file name
AutoFileName='auto-whitelist'

# Find all Plesk users auto-whitelist
for file in `find $UsersMail -type f -name $AutoFileName`; do
    # Run the trim tool on this mailbox
    # See http://www.deepnet.cx/~kdeugau/spamtools/trim_whitelist
    $TrimUtility $file;

    # After the file is trimmed, there is an '-old' file which we don't need it anymore
    if [ -e $file'-old' ]; then
        rm $file'-old';
    fi;
done

Save the above script in /etc/cron.weekly and wait for the weekly run.

Have fun playing …


Posted on May 13th, 2008 in Debian, Linux, Plesk | 1 Comment »




How to run the SMTP server on another port



The problem: Many ISP’s block port 25 for outgoing mail. So if you are running a Linux/Unix Plesk based server (or, in fact, any kind of SMTP server), your clients can be in a situation where they can receive mail (POP3/110) from your server, but they can’t send mail (SMTP/25) from their mail client using your server.
Note: Generally, the ISP will “kindly” give you the opportunity to use their SMTP/IMAP server, but this can be a risk.

Solution 1: Tell you clients to use Plesk’s Webmail. Or not … and skip to the second solution :)

Solution 2: Use another port for the SMTP server, keeping the server to accept connections on standard port 25.
In this way, the SMTP / Plesk’s Qmail server will accept connections on two different ports, using a simple port redirection. We’ll use one iptables rule, with 587 as the second port, like this:

sudo iptables -t nat -A PREROUTING -p tcp --dport 587 -i eth0 -j REDIRECT --to-ports 25

Also, it would be a good idea to add this to add it to system startup or to your firewall, to avoid loosing these settings after reboot.
For example, on any Debian based system, you can add it to /etc/rc.local:

sudo echo "# Port redirection from port 587 to 25, on eth0
/sbin/iptables -t nat -A PREROUTING -p tcp --dport 587 -i eth0 -j REDIRECT --to-ports 25" >> /etc/rc.local

Notes:
1: You can choose any other port, replace 587 with the port you want to use.
2: Don’t forget to open this port in your firewall.
3. Don’t forget to tell your clients about this, and maybe … be a sport and give them a helping hand in the long process of configuring the mail client :D

Have fun playing …


Posted on February 14th, 2008 in Debian, Linux, Plesk | No Comments »




Entering Sys Sandbox



This is the technical blog of Frontline softworks stuff.

What can you expect in here ? Mainly Debian Linux / Plesk for Unix / FirebirdSQL / CodeGear/Borland Delphi and other interesting related stuff.

Why ? Because we already lost so much time googleing and testing solutions for relatively simple problems (at least we thought there were simple). So if we found a solution, sharing it would be a good idea, don’t you think ?

Why Sandbox ? Hmm … we’ll post an article in here after the solution is well tested in our “sandboxes”.

While the problem is in testing stages, maybe you can find these in W(ork) I(n) P(rogress) section.


Posted on December 10th, 2007 in General | Comments Off




 


Footer left Footer right