diff --git a/docs/code/managemails.rst b/docs/code/managemails.rst
index 17c1763..42f060d 100644
--- a/docs/code/managemails.rst
+++ b/docs/code/managemails.rst
@@ -12,14 +12,35 @@
 
 
 :py:mod:`apps <managemails.apps>`
------------------------------------
+---------------------------------
 
 .. automodule:: managemails.apps
    :members:
 
 
+:py:mod:`forms <managemails.forms>`
+-----------------------------------
+
+.. automodule:: managemails.forms
+   :members:
+
+
 :py:mod:`models <managemails.models>`
 -------------------------------------
 
 .. automodule:: managemails.models
    :members:
+
+
+:py:mod:`urls <managemails.urls>`
+---------------------------------
+
+.. automodule:: managemails.urls
+   :members:
+
+
+:py:mod:`views <managemails.views>`
+-----------------------------------
+
+.. automodule:: managemails.views
+   :members:
diff --git a/gnuviechadmin/locale/de/LC_MESSAGES/django.po b/gnuviechadmin/locale/de/LC_MESSAGES/django.po
index b70640b..8056f97 100644
--- a/gnuviechadmin/locale/de/LC_MESSAGES/django.po
+++ b/gnuviechadmin/locale/de/LC_MESSAGES/django.po
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gnuviechadmin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-01-25 00:46+0100\n"
-"PO-Revision-Date: 2015-01-25 00:55+0100\n"
+"POT-Creation-Date: 2015-01-25 12:04+0100\n"
+"PO-Revision-Date: 2015-01-25 12:06+0100\n"
 "Last-Translator: Jan Dittberner <jan@dittberner.info>\n"
 "Language-Team: Jan Dittberner <jan@dittberner.info>\n"
 "Language: de\n"
@@ -793,6 +793,27 @@ msgstr "Diesem Hostingpaket sind noch keine Datenbanken zugeordnet."
 msgid "Add database"
 msgstr "Datenbank hinzufügen"
 
+#: templates/managemails/mailbox_create.html:6
+#: templates/managemails/mailbox_create.html:15
+#, python-format
+msgid "Add Mailbox to Hosting Package %(package)s"
+msgstr "Postfach zum Hostingpaket %(package)s hinzufügen"
+
+#: templates/managemails/mailbox_create.html:8
+#: templates/managemails/mailbox_create.html:17
+#, python-format
+msgid "Add Mailbox to Hosting Package %(package)s of Customer %(full_name)s"
+msgstr ""
+"Postfach zum Hostingpaket %(package)s des Kunden %(full_name)s hinzufügen"
+
+#: templates/managemails/mailbox_create.html:23
+msgid "Please specify the password for your new mailbox."
+msgstr "Bitte geben Sie das Passwort für Ihr neues Postfach ein."
+
+#: templates/managemails/mailbox_create.html:23
+msgid "Please specify the password for the new mailbox."
+msgstr "Bitte geben Sie das Passwort für das neue Postfach ein."
+
 #: templates/osusers/user_setpassword.html:5
 #: templates/osusers/user_setpassword.html:13
 #, python-format
@@ -897,5 +918,10 @@ msgstr ""
 "%(site_name)s zu nutzen. Als letzten Schritt füllen Sie bitte folgendes "
 "Formular aus:"
 
+#, fuzzy
+#~| msgid "Password Reset"
+#~ msgid "Password (again)"
+#~ msgstr "Passwort zurücksetzen"
+
 #~ msgid "My Profile"
 #~ msgstr "Mein Profil"
diff --git a/gnuviechadmin/managemails/forms.py b/gnuviechadmin/managemails/forms.py
new file mode 100644
index 0000000..00c309f
--- /dev/null
+++ b/gnuviechadmin/managemails/forms.py
@@ -0,0 +1,48 @@
+"""
+This module defines form classes for mailbox and mail address editing.
+
+"""
+from __future__ import absolute_import, unicode_literals
+
+from django import forms
+from django.core.urlresolvers import reverse
+from django.utils.translation import ugettext as _
+
+from crispy_forms.helper import FormHelper
+from crispy_forms.layout import Submit
+
+from .models import Mailbox
+from gvawebcore.forms import PasswordModelFormMixin
+
+
+class CreateMailboxForm(PasswordModelFormMixin, forms.ModelForm):
+    """
+    This form is used to create new Mailbox instances.
+
+    """
+    class Meta:
+        model = Mailbox
+        fields = []
+
+    def __init__(self, *args, **kwargs):
+        self.hosting_package = kwargs.pop('hostingpackage')
+        super(CreateMailboxForm, self).__init__(*args, **kwargs)
+        self.helper = FormHelper()
+        self.helper.form_action = reverse(
+            'create_mailbox', kwargs={'package': self.hosting_package.id})
+        self.helper.add_input(Submit('submit', _('Create mailbox')))
+
+    def save(self, commit=True):
+        """
+        Set the new mailbox's password and osuser.
+
+        :param boolean commit: whether to save the created mailbox
+        :return: mailbox instance
+        :rtype: :py:class:`managemails.models.Mailbox`
+
+        """
+        osuser = self.hosting_package.osuser
+        self.instance.osuser = osuser
+        self.instance.username = Mailbox.objects.get_next_mailbox_name(osuser)
+        self.instance.set_password(self.cleaned_data['password1'])
+        return super(CreateMailboxForm, self).save(commit=commit)
diff --git a/gnuviechadmin/managemails/locale/de/LC_MESSAGES/django.po b/gnuviechadmin/managemails/locale/de/LC_MESSAGES/django.po
index 52f2d8f..818ecd3 100644
--- a/gnuviechadmin/managemails/locale/de/LC_MESSAGES/django.po
+++ b/gnuviechadmin/managemails/locale/de/LC_MESSAGES/django.po
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: managemails\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-01-25 00:46+0100\n"
-"PO-Revision-Date: 2015-01-25 00:48+0100\n"
+"POT-Creation-Date: 2015-01-25 12:04+0100\n"
+"PO-Revision-Date: 2015-01-25 12:07+0100\n"
 "Last-Translator: Jan Dittberner <jan@dittberner.info>\n"
 "Language-Team: Jan Dittberner <jan@dittberner.info>\n"
 "Language: de\n"
@@ -47,6 +47,10 @@ msgstr "Deaktivieren"
 msgid "Mailboxes and Mail Addresses"
 msgstr "Postfächer und E-Mailadressen"
 
+#: managemails/forms.py:33
+msgid "Create mailbox"
+msgstr "Postfach anlegen"
+
 #: managemails/models.py:79
 msgid "Mailbox"
 msgstr "Postfach"
@@ -70,3 +74,12 @@ msgstr "E-Mailadresse"
 #: managemails/models.py:142
 msgid "mailbox"
 msgstr "Postfach"
+
+#: managemails/views.py:35
+msgid "You are not allowed to add more mailboxes to this hosting package"
+msgstr "Sie können keine weiteren Postfächer zu diesem Hostingpaket hinzufügen"
+
+#: managemails/views.py:61
+#, python-brace-format
+msgid "Mailbox {mailbox} created successfully."
+msgstr "Postfach {mailbox} erfolgreich angelegt."
diff --git a/gnuviechadmin/managemails/urls.py b/gnuviechadmin/managemails/urls.py
new file mode 100644
index 0000000..6695cd2
--- /dev/null
+++ b/gnuviechadmin/managemails/urls.py
@@ -0,0 +1,18 @@
+"""
+This module defines the URL patterns for mailbox and mail address related
+views.
+
+"""
+from __future__ import absolute_import, unicode_literals
+
+from django.conf.urls import patterns, url
+
+from .views import (
+    CreateMailbox,
+)
+
+urlpatterns = patterns(
+    '',
+    url(r'^(?P<package>\d+)/mailbox/create$',
+        CreateMailbox.as_view(), name='create_mailbox'),
+)
diff --git a/gnuviechadmin/managemails/views.py b/gnuviechadmin/managemails/views.py
new file mode 100644
index 0000000..c53cca8
--- /dev/null
+++ b/gnuviechadmin/managemails/views.py
@@ -0,0 +1,65 @@
+"""
+This module defines views for mailbox and mail address handling.
+
+"""
+from __future__ import absolute_import, unicode_literals
+
+from django.http import HttpResponseForbidden
+from django.shortcuts import get_object_or_404, redirect
+from django.utils.translation import ugettext as _
+from django.views.generic.edit import CreateView
+from django.contrib import messages
+
+from gvacommon.viewmixins import StaffOrSelfLoginRequiredMixin
+
+from hostingpackages.models import CustomerHostingPackage
+
+from .forms import CreateMailboxForm
+from .models import Mailbox
+
+
+class CreateMailbox(StaffOrSelfLoginRequiredMixin, CreateView):
+    """
+    This view is used to setup new mailboxes for a customer hosting package.
+
+    """
+    model = Mailbox
+    context_object_name = 'mailbox'
+    template_name_suffix = '_create'
+    form_class = CreateMailboxForm
+
+    def dispatch(self, request, *args, **kwargs):
+        resp = super(CreateMailbox, self).dispatch(request, *args, **kwargs)
+        if not self._get_hosting_package().may_add_mailbox():
+            resp = HttpResponseForbidden(
+                _('You are not allowed to add more mailboxes to this'
+                  ' hosting package'))
+        return resp
+
+    def _get_hosting_package(self):
+        return get_object_or_404(
+            CustomerHostingPackage, pk=int(self.kwargs['package']))
+
+    def get_customer_object(self):
+        return self._get_hosting_package().customer
+
+    def get_context_data(self, **kwargs):
+        context = super(CreateMailbox, self).get_context_data(**kwargs)
+        context['hostingpackage'] = self._get_hosting_package()
+        context['customer'] = self.get_customer_object()
+        return context
+
+    def get_form_kwargs(self):
+        kwargs = super(CreateMailbox, self).get_form_kwargs()
+        kwargs['hostingpackage'] = self._get_hosting_package()
+        return kwargs
+
+    def form_valid(self, form):
+        mailbox = form.save()
+        messages.success(
+            self.request,
+            _('Mailbox {mailbox} created successfully.').format(
+                mailbox=mailbox.username
+            )
+        )
+        return redirect(self._get_hosting_package().get_absolute_url())
diff --git a/gnuviechadmin/templates/managemails/base.html b/gnuviechadmin/templates/managemails/base.html
new file mode 100644
index 0000000..94d9808
--- /dev/null
+++ b/gnuviechadmin/templates/managemails/base.html
@@ -0,0 +1 @@
+{% extends "base.html" %}
diff --git a/gnuviechadmin/templates/managemails/mailbox_create.html b/gnuviechadmin/templates/managemails/mailbox_create.html
new file mode 100644
index 0000000..7446d6c
--- /dev/null
+++ b/gnuviechadmin/templates/managemails/mailbox_create.html
@@ -0,0 +1,34 @@
+{% extends "managemails/base.html" %}
+{% load i18n crispy_forms_tags %}
+{% block title %}{{ block.user }} - {% spaceless %}
+{% with full_name=customer.get_full_name package=hostingpackage.name %}
+{% if customer == user %}
+{% blocktrans %}Add Mailbox to Hosting Package {{ package }}{% endblocktrans %}
+{% else %}
+{% blocktrans %}Add Mailbox to Hosting Package {{ package }} of Customer {{ full_name }}{% endblocktrans %}
+{% endif %}
+{% endwith %}
+{% endspaceless %}{% endblock title %}
+{% block page_title %}{% spaceless %}
+{% with full_name=customer.get_full_name package=hostingpackage.name %}
+{% if customer == user %}
+{% blocktrans %}Add Mailbox to Hosting Package {{ package }}{% endblocktrans %}
+{% else %}
+{% blocktrans %}Add Mailbox to Hosting Package {{ package }} of Customer {{ full_name }}{% endblocktrans %}
+{% endif %}
+{% endwith %}
+{% endspaceless %}{% endblock page_title %}
+
+{% block content %}
+<p>{% if customer == user %}{% trans "Please specify the password for your new mailbox." %}{% else %}{% trans "Please specify the password for the new mailbox." %}{% endif %}</p>
+{% crispy form %}
+{% endblock content %}
+
+{% block extra_js %}
+<script type="text/javascript">
+$(document).ready(function() {
+  $('input[type=password]').val('');
+  $('input[type=password]').first().focus();
+});
+</script>
+{% endblock extra_js %}