diff --git a/modules/mailman/files/apache.conf b/modules/mailman/files/apache.conf
deleted file mode 100644
index a7f421cc5f..0000000000
--- a/modules/mailman/files/apache.conf
+++ /dev/null
@@ -1,73 +0,0 @@
-# Sample configuration for Debian mailman with Apache
-
-# We can find mailman here:
-ScriptAlias /cgi-bin/mailman/ /usr/lib/cgi-bin/mailman/
-# And the public archives:
-Alias /pipermail/ /var/lib/mailman/archives/public/
-# Logos:
-Alias /images/mailman/ /usr/share/images/mailman/
-
-# Use this if you don't want the "cgi-bin" component in your URL:
-# In case you want to access mailman through a shorter URL you should enable
-# this:
-#ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/
-# In this case you need to set the DEFAULT_URL_PATTERN in
-# /etc/mailman/mm_cfg.py to http://%s/mailman/ for the cookie
-# authentication code to work.  Note that you need to change the base
-# URL for all the already-created lists as well.
-
-<Directory /usr/lib/cgi-bin/mailman/>
-    AllowOverride None
-    Options ExecCGI
-    AddHandler cgi-script .cgi
-    Order allow,deny
-    Allow from all
-</Directory>
-<Directory /var/lib/mailman/archives/public/>
-    Options FollowSymlinks
-    AllowOverride None
-    Order allow,deny
-    Allow from all
-</Directory>
-<Directory /usr/share/images/mailman/>
-    AllowOverride None
-    Order allow,deny
-    Allow from all
-</Directory>
-
-
-## The following describes how to configure mailman on
-## a dedicated virtual host, courtesy Marco d'Itri.
-
-# Add these lines in /etc/mailman/mm_cfg.py:
-#DEFAULT_EMAIL_HOST = 'lists.example.net'
-#DEFAULT_URL_HOST = 'lists.example.net'
-#DEFAULT_URL_PATTERN = 'http://%s/'
-
-#<VirtualHost *>
-#ServerName lists.example.net
-#DocumentRoot /var/www/lists
-#ErrorLog /var/log/apache2/lists-error.log
-#CustomLog /var/log/apache2/lists-access.log combined
-#
-#<Directory /var/lib/mailman/archives/>
-#    Options FollowSymLinks
-#    AllowOverride None
-#</Directory>
-#
-#Alias /pipermail/ /var/lib/mailman/archives/public/
-#Alias /images/mailman/ /usr/share/images/mailman/
-#ScriptAlias /admin /usr/lib/cgi-bin/mailman/admin
-#ScriptAlias /admindb /usr/lib/cgi-bin/mailman/admindb
-#ScriptAlias /confirm /usr/lib/cgi-bin/mailman/confirm
-#ScriptAlias /create /usr/lib/cgi-bin/mailman/create
-#ScriptAlias /edithtml /usr/lib/cgi-bin/mailman/edithtml
-#ScriptAlias /listinfo /usr/lib/cgi-bin/mailman/listinfo
-#ScriptAlias /options /usr/lib/cgi-bin/mailman/options
-#ScriptAlias /private /usr/lib/cgi-bin/mailman/private
-#ScriptAlias /rmlist /usr/lib/cgi-bin/mailman/rmlist
-#ScriptAlias /roster /usr/lib/cgi-bin/mailman/roster
-#ScriptAlias /subscribe /usr/lib/cgi-bin/mailman/subscribe
-#ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/
-#</VirtualHost>
-
diff --git a/modules/mailman/files/index.html b/modules/mailman/files/index.html
new file mode 100644
index 0000000000..1c70d95348
--- /dev/null
+++ b/modules/mailman/files/index.html
@@ -0,0 +1,4 @@
+<html><body><h1>It works!</h1>
+<p>This is the default web page for this server.</p>
+<p>The web server software is running but no content has been added, yet.</p>
+</body></html>
diff --git a/modules/mailman/manifests/init.pp b/modules/mailman/manifests/init.pp
index 42b161d7f9..4fa1f1c3c6 100644
--- a/modules/mailman/manifests/init.pp
+++ b/modules/mailman/manifests/init.pp
@@ -8,6 +8,16 @@ class mailman($mailman_host='') {
     ensure => installed,
   }
 
+  file { "/var/www/index.html":
+    source => 'puppet:///modules/mailman/index.html',
+    owner => 'root',
+    group => 'root',
+    ensure => 'present',
+    replace => 'true',
+    mode => 444,
+    require => Package["apache2"],
+  }
+
   file { '/etc/mailman/mm_cfg.py':
     owner => 'root',
     group => 'root',
@@ -18,14 +28,34 @@ class mailman($mailman_host='') {
     require => Package["mailman"]
   }
 
-  file { '/etc/mailman/apache.conf':
+  file { "/etc/apache2/sites-available/mailman":
+    content => template('mailman/mailman.vhost.erb'),
     owner => 'root',
     group => 'root',
-    mode => 444,
     ensure => 'present',
-    source => 'puppet:///modules/mailman/apache.conf',
     replace => 'true',
-    require => Package["mailman"]
+    mode => 444,
+    require => Package["apache2"],
+  }
+
+  file { "/etc/apache2/sites-enabled/mailman":
+    ensure => link,
+    target => '/etc/apache2/sites-available/mailman',
+    require => [
+      File['/etc/apache2/sites-available/mailman'],
+    ],
+  }
+
+  file { '/etc/apache2/sites-enabled/000-default':
+    require => File['/etc/apache2/sites-available/mailman'],
+    ensure => absent,
+  }
+
+  exec { "gracefully restart apache":
+    subscribe => [ File["/etc/apache2/sites-available/mailman"]],
+    refreshonly => true,
+    path => "/bin:/usr/bin:/usr/sbin",
+    command => "apache2ctl graceful",
   }
 
   service { 'mailman':
@@ -38,7 +68,7 @@ class mailman($mailman_host='') {
   service { 'apache2':
     ensure          => running,
     hasrestart      => true,
-    subscribe       => File['/etc/mailman/apache.conf'],
+    subscribe       => File["/etc/apache2/sites-available/mailman"],
     require         => Package["apache2"]
   }
 }
diff --git a/modules/mailman/templates/mailman.vhost.erb b/modules/mailman/templates/mailman.vhost.erb
new file mode 100644
index 0000000000..5d06ae376d
--- /dev/null
+++ b/modules/mailman/templates/mailman.vhost.erb
@@ -0,0 +1,49 @@
+<VirtualHost *:80>
+	ServerName <%= mailman_host %>
+
+	ErrorLog ${APACHE_LOG_DIR}/mailman-error.log
+
+	# Possible values include: debug, info, notice, warn, error, crit,
+	# alert, emerg.
+	LogLevel warn
+
+	CustomLog ${APACHE_LOG_DIR}/mailman-access.log combined
+
+	DocumentRoot /var/www
+
+# We can find mailman here:
+ScriptAlias /cgi-bin/mailman/ /usr/lib/cgi-bin/mailman/
+# And the public archives:
+Alias /pipermail/ /var/lib/mailman/archives/public/
+# Logos:
+Alias /images/mailman/ /usr/share/images/mailman/
+
+# Use this if you don't want the "cgi-bin" component in your URL:
+# In case you want to access mailman through a shorter URL you should enable
+# this:
+#ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/
+# In this case you need to set the DEFAULT_URL_PATTERN in
+# /etc/mailman/mm_cfg.py to http://%s/mailman/ for the cookie
+# authentication code to work.  Note that you need to change the base
+# URL for all the already-created lists as well.
+
+<Directory /usr/lib/cgi-bin/mailman/>
+    AllowOverride None
+    Options ExecCGI
+    AddHandler cgi-script .cgi
+    Order allow,deny
+    Allow from all
+</Directory>
+<Directory /var/lib/mailman/archives/public/>
+    Options FollowSymlinks
+    AllowOverride None
+    Order allow,deny
+    Allow from all
+</Directory>
+<Directory /usr/share/images/mailman/>
+    AllowOverride None
+    Order allow,deny
+    Allow from all
+</Directory>
+
+</VirtualHost>