The Perfect Server - Ubuntu 12.10 (Apache2, BIND, Dovecot, ISPConfig 3) - Page 3

4 Get root Privileges

After the reboot you can login with your previously created username (e.g. administrator). Because we must run all the steps from this tutorial with root privileges, we can either prepend all commands in this tutorial with the string sudo, or we become root right now by typing

sudo su

(You can as well enable the root login by running

sudo passwd root

and giving root a password. You can then directly log in as root, but this is frowned upon by the Ubuntu developers and community for various reasons. See


5 Install The SSH Server (Optional)

If you did not install the OpenSSH server during the system installation, you can do it now:

apt-get install ssh openssh-server

From now on you can use an SSH client such as PuTTY and connect from your workstation to your Ubuntu 12.10 server and follow the remaining steps from this tutorial.


6 Install vim-nox (Optional)

I'll use vi as my text editor in this tutorial. The default vi program has some strange behaviour on Ubuntu and Debian; to fix this, we install vim-nox:

apt-get install vim-nox

(You don't have to do this if you use a different text editor such as joe or nano.)


7 Configure The Network

Because the Ubuntu installer has configured our system to get its network settings via DHCP, we have to change that now because a server should have a static IP address. Edit /etc/network/interfaces and adjust it to your needs (in this example setup I will use the IP address and the DNS servers and - starting with Ubuntu 12.04, you cannot edit /etc/resolv.conf directly anymore, but have to specify your nameservers in your network configuration - see

man resolvconf

for more details):

vi /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static

Then restart your network:

/etc/init.d/networking restart

Then edit /etc/hosts. Make it look like this:

vi /etc/hosts       localhost.localdomain   localhost     server1

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Now run

echo > /etc/hostname
/etc/init.d/hostname restart

Afterwards, run

hostname -f

Both should show now.


8 Edit /etc/apt/sources.list And Update Your Linux Installation

Edit /etc/apt/sources.list. Comment out or remove the installation CD from the file and make sure that the universe and multiverse repositories are enabled. It should look like this:

vi /etc/apt/sources.list


# deb cdrom:[Ubuntu-Server 12.10 _Quantal Quetzal_ - Release amd64 (20121017.2)]/ quantal main restricted

#deb cdrom:[Ubuntu-Server 12.10 _Quantal Quetzal_ - Release amd64 (20121017.2)]/ quantal main restricted

# See for how to upgrade to
# newer versions of the distribution.
deb quantal main restricted
deb-src quantal main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb quantal-updates main restricted
deb-src quantal-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb quantal universe
deb-src quantal universe
deb quantal-updates universe
deb-src quantal-updates universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb quantal multiverse
deb-src quantal multiverse
deb quantal-updates multiverse
deb-src quantal-updates multiverse

## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb quantal-backports main restricted universe multiverse
deb-src quantal-backports main restricted universe multiverse

deb quantal-security main restricted
deb-src quantal-security main restricted
deb quantal-security universe
deb-src quantal-security universe
deb quantal-security multiverse
deb-src quantal-security multiverse

## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb quantal partner
# deb-src quantal partner

## Uncomment the following two lines to add software from Ubuntu's
## 'extras' repository.
## This software is not part of Ubuntu, but is offered by third-party
## developers who want to ship their latest software.
# deb quantal main
# deb-src quantal main

Then run

apt-get update

to update the apt package database and

apt-get upgrade

to install the latest updates (if there are any). If you see that a new kernel gets installed as part of the updates, you should reboot the system afterwards:



9 Change The Default Shell

/bin/sh is a symlink to /bin/dash, however we need /bin/bash, not /bin/dash. Therefore we do this:

dpkg-reconfigure dash

Use dash as the default system shell (/bin/sh)? <-- No

If you don't do this, the ISPConfig installation will fail.


10 Disable AppArmor

AppArmor is a security extension (similar to SELinux) that should provide extended security. In my opinion you don't need it to configure a secure system, and it usually causes more problems than advantages (think of it after you have done a week of trouble-shooting because some service wasn't working as expected, and then you find out that everything was ok, only AppArmor was causing the problem). Therefore I disable it (this is a must if you want to install ISPConfig later on).

We can disable it like this:

/etc/init.d/apparmor stop
update-rc.d -f apparmor remove
apt-get remove apparmor apparmor-utils


11 Synchronize the System Clock

It is a good idea to synchronize the system clock with an NTP (network time protocol) server over the Internet. Simply run

apt-get install ntp ntpdate

and your system time will always be in sync.

Share this page:

25 Comment(s)

Add comment


From: GoldMan at: 2013-06-15 21:16:12


I installed the ubuntu web server like in this lesson.

All work well. But when I send emails to some servers like and some other I get this answer:
550-Message rejected. Spamscore threshold (100 points) reached. Spamscore is 550-110! Details: Suspicious e-mail address; Suspected PTR DNS record points 550 to dynamic IP pool; Untrusted domain zone; Suspicious HELO argument; (in reply to RCPT TO command)

My domain is

Can somebody help me? please what I do incorrectly?

From: Jaideep at: 2012-12-23 05:08:49

At the end of step 7, My system is showing "server" in hostname, and "" in hostname -f.

 what should  I do now.

 Pls help me in this.

and , Thanks for this grt work. 

From: Anonymous at: 2013-02-17 17:31:37

Check that you have the rights to write to the file or that you are using the sudo command (ex. sudo echo > /etc/hostname)

From: Lordi at: 2012-10-26 07:53:41

by apt-get install i now see phpMyAdmin to call for install



apt-get install postfix postfix-mysql postfix-doc mysql-client
mysql-server openssl getmail4 rkhunter binutils dovecot-imapd
dovecot-pop3d dovecot-mysql dovecot-sieve sudo


From: Anonymous at: 2012-11-10 22:11:31

i have many projects running on php 5.3 but i have problems with these projects on php 5.4. i followed this tutorial because i am planning to build an new cms engine on php 5.4. everything is working very well and i'm very happy with this tutorial but i have problems with multiple php versions. php 5.4 is working good but if i add a website in ispconfig and i put this website on php-fpm and php version 5.3 i always get an error 403 forbidden when i browse to the website. first i thought it whas maybe a mis configuration of php 5.3 but i tested with php-fpm and version 5.4 and have the same problem. i think it is a problem with apache. if i add a website and put it on fast-cgi with default php version everything works ok.

 it would be great if someone could help me with this problem.

From: Rakesh at: 2013-01-01 20:33:02

for those who might face 'inserv: command not found', do this -

 ln -s /usr/lib/insserv/insserv /sbin/insserv

From: mboy at: 2013-01-15 17:33:53

 I sorted my fix out .. for php


  ./configure --prefix=/opt/php-5.3.18 --with-pdo-pgsql --with-zlib-dir --with-freetype-dir --enable-fpm --enable-mbstring --with-libxml-dir=/usr --enable-soap --enable-calendar --with-curl --with-mcrypt --with-zlib --with-gd --with-pgsql --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex --with-mysql --with-pdo-mysql --with-mysqli --with-jpeg-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-openssl --with-fpm-user=www-data --with-fpm-group=www-data --with-libdir=/lib/i386-linux-gnu

From: Graham at: 2013-02-06 18:51:24

Thanks myboy, I was getting the "configure: error: Cannot find libmysqlclient under /usr. Note that the MySQL client library is not bundled anymore" , and your configure with --with-libdir=/lib/i386-linux-gnu fixed the error for me.

Many thanks!

From: AJ at: 2013-02-18 16:44:18

I have compiled and installed additional php5.3.18 as above, however, I have problem starting the service.
It tells me it fails to start after approx 60secs, does not create the PID in /opt/php-5.3.18/var/run yet the processes do spawn and port is bound. I cannot then stop or restart the service and must manually kill.

From: chuck at: 2013-03-12 05:36:14

Thank you for this wonderful tutorial!

However, I have been closely following instructions and doing everything in the terminal. I skipped 14.3 because I don't need to worry about other versions of php. But then the tutorial all of a sudden shows ISPConfig in a browser and I have no idea how to get there because all I have in front of me is a terminal... ???

 You really have to spell everything out for us noobs ;P

From: Anonymous at: 2013-03-25 18:58:13

insserv still saying command not found...I know its there...I looked....? Any suggestions?

From: Putter at: 2013-04-13 20:25:00

Thanks for an excellent guide.

The --with-libdir parameter worked for me too! 


From: Steve Metzler at: 2013-07-24 23:08:17

Has any one come across not being able to log on to ISPconfig 3 after installing the server to boot up in virtual box? I'm stumped. I have forwarded the 8080 port network settings are the same, I just created a bridge and a tap but I can not log into ISP. Help please!

From: Anonymous at: 2013-09-02 17:35:57

May I know the reason behind ISPConfig screen here in this page even before you installed it?! 

From: Shella at: 2013-04-03 13:36:02

Hi there,

what if I'd like to change the standard 21 port to another one?

Any tips? I changed the value in /usr/local/ispconfig/server/lib/classes/

but I guess it's not enough... right?


From: Anonymous at: 2012-10-25 05:25:14

hi dear,

 I already installed ispconfig 3 use this tutorial.

I can't configure  change password plugin. i install this plugin  change_pass-3.0-1.4.0.tar.gz .

 but, this plugin is not working. please help!!!


 thanks for help.

From: eXtReMaL at: 2012-10-30 11:56:49

Great Guide !

But i have few questions . Why when i login using ftp or webdav it shows me huge tree of folders that are locked for access. Is there a way to hide them and leave only folders that works with service that user is using at moment ? I think that should be written somwhere inside of pureftpd and ssh configs

From: at: 2012-11-13 10:52:54


Thanks for tutorial!

Could you please improve it with instructions about how to install and configure DKIM (DomainKeys Identified Mail)?

Server works great, but there is problem with Google servers, because they requests SPF and DKIM...

 Thanks in advance!

From: Feby at: 2012-12-18 00:26:05

Hey man, great tutorial, but i have 1 req, can you insert roundcube in the tutorial? i've tried earlier to install it with apt-get but it seems smth went wrong cause the page wouldn't even load it just asked me to save it, added the .php type but still nothin'.

Anyways great tutorial, thanks

From: elricho at: 2013-02-20 14:00:06

I do all of this tutorial with a new and clean pc,  but when i try to install ispconfig3 I received that error,  No PHP MySQL functions available. What can i do ?
 Thanks so much !
Installation mode (standard,expert) [standard]:

Full qualified hostname (FQDN) of the server, eg server1.domain.tld  []:

No PHP MySQL functions available. Please ensure that the PHP MySQL module is loa              root@richoserver:/tmp/ispconfig3_install/install#

From: elricho at: 2013-02-20 20:18:35

Excelent Guide !!!

 Thank's a lot ! 

From: Andrew Christensen at: 2013-03-02 18:29:09

Did you ever find a solution to the "No PHP MySQL functions available" problem? I can't get past this part. I did the PHP CGI method as the FPM one didn't work for me (there were missing folders).

Thank you.

From: M3bis at: 2013-03-27 13:56:52

Same problem here! Any solutions?

From: Joao at: 2013-05-15 16:33:09

Excellent Tutorial!

Thanks a lot!

From: Yashaswi at: 2014-03-13 10:47:37

Thanks a lot. great tutorial and great forum. Keep up the good work.