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

15 Install Mailman

Since version 3.0.4, ISPConfig also allows you to manage (create/modify/delete) Mailman mailing lists. If you want to make use of this feature, install Mailman as follows:

apt-get install mailman

Select at least one language, e.g.:

Languages to support: <-- en (English)
Missing site list <-- Ok

Before we can start Mailman, a first mailing list called mailman must be created:

newlist mailman

root@server1:~# newlist mailman
Enter the email of the person running the list:
 <-- admin email address, e.g.
Initial mailman password: <-- admin password for the mailman list
To finish creating your mailing list, you must edit your /etc/aliases (or
equivalent) file by adding the following lines, and possibly running the
`newaliases' program:

## mailman mailing list
mailman:              "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin:        "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces:      "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm:      "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join:         "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave:        "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner:        "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request:      "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe:    "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe:  "|/var/lib/mailman/mail/mailman unsubscribe mailman"

Hit enter to notify mailman owner...
 <-- ENTER


Open /etc/aliases afterwards...

vi /etc/aliases

... and add the following lines:

## mailman mailing list
mailman:              "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin:        "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces:      "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm:      "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join:         "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave:        "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner:        "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request:      "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe:    "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe:  "|/var/lib/mailman/mail/mailman unsubscribe mailman"



afterwards and restart Postfix:

/etc/init.d/postfix restart

Finally we must enable the Mailman Apache configuration:

ln -s /etc/mailman/apache.conf /etc/apache2/conf.d/mailman.conf

This defines the alias /cgi-bin/mailman/ for all Apache vhosts, which means you can access the Mailman admin interface for a list at http://<vhost>/cgi-bin/mailman/admin/<listname>, and the web page for users of a mailing list can be found at http://<vhost>/cgi-bin/mailman/listinfo/<listname>.

Under http://<vhost>/pipermail you can find the mailing list archives.

Restart Apache afterwards:

/etc/init.d/apache2 restart

Then start the Mailman daemon:

/etc/init.d/mailman start


16 Install PureFTPd And Quota

PureFTPd and quota can be installed with the following command:

apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool

Edit the file /etc/default/pure-ftpd-common...

vi /etc/default/pure-ftpd-common

... and make sure that the start mode is set to standalone and set VIRTUALCHROOT=true:


Now we configure PureFTPd to allow FTP and TLS sessions. FTP is a very insecure protocol because all passwords and all data are transferred in clear text. By using TLS, the whole communication can be encrypted, thus making FTP much more secure.

If you want to allow FTP and TLS sessions, run

echo 1 > /etc/pure-ftpd/conf/TLS

In order to use TLS, we must create an SSL certificate. I create it in /etc/ssl/private/, therefore I create that directory first:

mkdir -p /etc/ssl/private/

Afterwards, we can generate the SSL certificate as follows:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Country Name (2 letter code) [AU]: <-- Enter your Country Name (e.g., "DE").
State or Province Name (full name) [Some-State]:
<-- Enter your State or Province Name.
Locality Name (eg, city) []:
<-- Enter your City.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
<-- Enter your Organization Name (e.g., the name of your company).
Organizational Unit Name (eg, section) []:
<-- Enter your Organizational Unit Name (e.g. "IT Department").
Common Name (eg, YOUR name) []:
<-- Enter the Fully Qualified Domain Name of the system (e.g. "").
Email Address []:
<-- Enter your Email Address.

Change the permissions of the SSL certificate:

chmod 600 /etc/ssl/private/pure-ftpd.pem

Then restart PureFTPd:

/etc/init.d/pure-ftpd-mysql restart

Edit /etc/fstab. Mine looks like this (I added ,usrjquota=quota.user,,jqfmt=vfsv0 to the partition with the mount point /):

vi /etc/fstab

# /etc/fstab: static file system information.
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/server1-root /               ext4    errors=remount-ro,usrjquota=quota.user,,jqfmt=vfsv0 0       1
# /boot was on /dev/sda1 during installation
UUID=07152d44-158e-4603-a14d-79f1838adebe /boot           ext2    defaults        0       2
/dev/mapper/server1-swap_1 none            swap    sw              0       0

To enable quota, run these commands:

mount -o remount /

quotacheck -avugm
quotaon -avug


17 Install BIND DNS Server

BIND can be installed as follows:

apt-get install bind9 dnsutils


18 Install Vlogger, Webalizer, And AWstats

Vlogger, webalizer, and AWstats can be installed as follows:

apt-get install vlogger webalizer awstats geoip-database libclass-dbi-mysql-perl

Open /etc/cron.d/awstats afterwards...

vi /etc/cron.d/awstats

... and comment out everything in that file:


#*/10 * * * * www-data [ -x /usr/share/awstats/tools/ ] && /usr/share/awstats/tools/

# Generate static reports:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/ ] && /usr/share/awstats/tools/


19 Install Jailkit

Jailkit is needed only if you want to chroot SSH users. It can be installed as follows (important: Jailkit must be installed before ISPConfig - it cannot be installed afterwards!):

apt-get install build-essential autoconf automake1.9 libtool flex bison debhelper binutils-gold

cd /tmp
tar xvfz jailkit-2.15.tar.gz
cd jailkit-2.15
./debian/rules binary

You can now install the Jailkit .deb package as follows:

cd ..
dpkg -i jailkit_2.15-1_*.deb
rm -rf jailkit-2.15*

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.