We have some users who own servers who dont want to fork out for automated systems like Plesk or Virtualmin, but don’t 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
<VirtualHost *:80>
DocumentRoot /var/www/CHANGEME/html
ServerName CHANGEME
ServerAlias www.CHANGEME
<directory "/var/www/CHANGEME">
allow from all
Options +Indexes
</directory>
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
|
#!/bin/bash if [ ! $1 ];then echo "Usage: $0 domainname.com" exit 0 fi echo Adding the virtualhost to apache cat >/tmp/httpd.tmp < < EOF <VirtualHost *:80> DocumentRoot /var/www/CHANGEME/html ServerName CHANGEME ServerAlias www.CHANGEME <directory "/var/www/CHANGEME"> allow from all Options +Indexes </directory> 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
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 ~]#
|
[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
|
#!/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
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 ~]#
|
[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 ~]#
|
[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 don’t 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 🙂