[TUTORIAL] Parallels Plesk update all domain zones at once

I had to change all SPF records for a client today from the Parallels Plesk default : “v=spf1 +a +mx -all” to something like “v=spf1 a mx a:server.name.tld -all” and the fun part was that the customer had something like 50+ domains on his server.

Since the Parallels Plesk Panel holds 99.99% of it’s data in the psa database, DNS settings are stored there as well, in two tables.

  • dns_recs_t which holds the DNS template information, and
  • dns_recs which holds the actual domain information.

I started with changing the template, then the domains info:

-bash-3.2# mysql -u admin -p`cat /etc/psa/.psa.shadow`

mysql> use psa;
mysql> update dns_recs_t set val = 'v=spf1 a mx a:server.name.tld -all' where val = 'v=spf1 +a +mx -all';
mysql> update dns_recs_t set displayVal = 'v=spf1 a mx a:server.name.tld -all' where displayVal = 'v=spf1 +a +mx -all';
mysql> update dns_recs set val = 'v=spf1 a mx a:server.name.tld -all' where val = 'v=spf1 +a +mx -all';
mysql> update dns_recs set displayVal = 'v=spf1 a mx a:server.name.tld -all' where displayVal = 'v=spf1 +a +mx -all';

you can now check the records if they match:

mysql> select from dns_recs where val like '%spf%';
mysql> select from dns_recs_t where val like '%spf%';

If you got what you were looking for, now you need to change the actual DNS zone files using the dnsmng utility provided by Parallels Plesk Panel. I used the following script:

-bash-3.2# vi dns_update.sh


ADMIN_PASS=`cat /etc/psa/.psa.shadow`
MYSQL_BIN_D=`grep MYSQL_BIN_D /etc/psa/psa.conf | awk '{print $2}'`
mysql="${MYSQL_BIN_D}/mysql -N -uadmin -p${ADMIN_PASS} psa"

query="select name from domains;"
domains=`echo $query | $mysql `

for i in ${domains}; do
echo "found $i"
/usr/local/psa/admin/sbin/dnsmng update $i
echo "zone for $i updated"

Then just run the script:
-bash-3.2# sh dns_update.sh

Now all you have to do is a final check in the zones directory, I did something like:

-bash-3.2# cd /var/named/run-root/var
-bash-3.2# grep -i spf *

Have fun, and use the above at your own risk.

Bungee bashing

[#cluj @ UnderNet]

10:44 < ||||||||||||> Vasile am tot vrut sa te intreb ceva de mult timp
10:44 < ||||||||||||> da mi tare groaza
10:44 < ||||||||||||> : )
10:44 < ||||||||||||> pot?
10:45 <@Vasile> nu
10:45 <@Vasile> : )
10:46 < ||||||||||||> Vasile: spune-mi si mie secretul virginitatii tale
10:46 < ||||||||||||> : ))))))))))))))))))))))))))))))))
10:47 <@Vasile> oooo hohohoho:)
10:47 <@Vasile> sfoara extrem de elastica
10:47 <@Vasile> diblule
10:47 <@Vasile> : )
10:48 <@Vasile> din p*** mea s-a facut sfoara de bungee jumpin’
10:48 < Lord|ce> Vasile: asta nu explica impotenta…
10:48 < Lord|ce> : )
10:48 < Lord|ce> de fapt…
10:48 < Lord|ce> ba da o explica