We have some users who own VPS who dont want to fork out for automated systems like Plesk or Virtualmin, but dont really want to deal with adding domains and email addresses all the time (and sometimes get lost)
I decided today after one such user emailed us to add another 3 domains and bunch of email addresses to write something simple to help him out, and thought I would share them with you.
I put the following in a plain text file in /root/adddomain.sh
#!/bin/bash
if [ ! $1 ];then
echo "Usage: $0 domainname.com"
exit 0
fi
echo Adding the virtualhost to apache
cat >/tmp/httpd.tmp << EOF
DocumentRoot /var/www/CHANGEME/html
ServerName CHANGEME
ServerAlias www.CHANGEME
allow from all
Options +Indexes
EOF
cat /tmp/httpd.tmp | sed s/CHANGEME/$1/g >> /etc/httpd/conf/httpd.conf
echo Making the directory at /var/www/$1
mkdir -p /var/www/$1/html
echo reloading apache
/etc/init.d/httpd reload
echo Adding domain to mail
echo $1 /etc/postfix/virtual_domain # this was his postfix virtual domain name list
Then run
chmod +x adddomain.sh
Now I can add domains like this very easily
[root@hostname ~]# ./adddomain.sh
Usage: ./adddomain.sh domainname.com
[root@hostname ~]# ./adddomain.sh domain.co.nz
Adding the virtualhost to apache
Making the directory at /var/www/domain.co.nz
reloading apache
Reloading httpd: [ OK ]
Adding domain to mail
[root@hostname ~]#
Please note: do not add the ‘www’ part onto the domain name. That is done in the script itself where required.
Since he had set up virtual hosting in postfix, i then created another text file at /root/addmailuser.sh – this was so he could add email addresses easily and quickly. The contents were
#!/bin/bash
if [ ! $2 ]; then
echo "Usage: $0 [username|destination] emailaddress"
exit 0
fi
if [ -z $(echo $1 | grep @) ];then
echo Looks like a username to me, adding the user
adduser -s /sbin/nologin $1
passwd $1
else
echo Looks like a redirect off site, adding it as such
fi
echo Adding the email address
echo $2 $1 >> /etc/postfix/virtual
echo Running postmap
postmap /etc/postfix/virtual
echo Reloading postfix
/etc/init.d/postfix restart
Again i run the chmod on it
chmod +x addmailuser.sh
This is how I can use it
[root@hostname ~]# ./addmailuser.sh
Usage: ./addmailuser.sh [username|destination] emailaddress
[root@hostname ~]# ./addmailuser.sh julie.domain julie@domain.co.nz
Looks like a username to me, adding the user
Changing password for user julie.domain.
New UNIX password:
BAD PASSWORD: it is too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
Adding the email address
Running postmap
Reloading postfix
Shutting down postfix: [ OK ]
Starting postfix: [ OK ]
[root@hostname ~]#
Or I can use it to create an off site alias
[root@hostname ~]# ./addmailuser.sh james.someguy@gmail.com james@domain.co.nz
Looks like a redirect offsite, adding it as such
Adding the email address
Running postmap
Reloading postfix
Shutting down postfix: [ OK ]
Starting postfix: [ OK ]
[root@hostname ~]#
These were designed/written for Centos/RedHat based systems, let me know if you want it for Debian/Ubuntu based ones. Also, strictly speaking, things dont need to be restarted, but it doesn’t hurt and is a good way of testing things work ok.
There is no error checking in either of these scripts, feel free to contribute patches/fixes :)
One response to “Its the small things that help”
Liz, you’ll put yourself out of a job! Good stuff. (re: that script, not the job…)