mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-19 05:58:34 +02:00
* Documentation update
* New requirements
This commit is contained in:
+2
-2
@@ -48,9 +48,9 @@ copyright = u'2012, Antoine Nguyen'
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = '0.9.2'
|
||||
version = '0.9.3'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '0.9.2'
|
||||
release = '0.9.3'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
||||
@@ -15,6 +15,8 @@ Requirements
|
||||
* `pycrypto python module <http://www.dlitz.net/software/pycrypto/>`_
|
||||
* `rrdtool python binding <http://oss.oetiker.ch/rrdtool/>`_
|
||||
* `sievelib python module <http://pypi.python.org/pypi/sievelib>`_
|
||||
* `chardet python module <http://pypi.python.org/pypi/chardet>`_
|
||||
* `argparse python module <http://pypi.python.org/pypi/argparse>`_
|
||||
|
||||
.. _get_modoboa:
|
||||
|
||||
@@ -44,7 +46,7 @@ only exception concerns the RRDtool binding because there isn't any
|
||||
python package available, it is directly provided with the official
|
||||
tarball.
|
||||
|
||||
Fortunately, all major distributions includes a ready-to-use
|
||||
Fortunately, all major distributions include a ready-to-use
|
||||
package. On Debian/Ubuntu::
|
||||
|
||||
$ apt-get install python-rrdtool
|
||||
@@ -70,12 +72,33 @@ sure your database is using UTF8 as a default charset.
|
||||
Deployment
|
||||
**********
|
||||
|
||||
Automatic
|
||||
=========
|
||||
|
||||
`modoboa-admin.py`, a command line tool, let you deploy a
|
||||
*ready-to-use* Modoboa site using only one instruction::
|
||||
|
||||
$ modoboa-admin.py deploy modoboa_example --syncdb --collectstatic [--with-amavis]
|
||||
|
||||
Just answer the few questions and you're done. You can now go to the
|
||||
:ref:`first_use` section.
|
||||
|
||||
.. note::
|
||||
|
||||
The `--with-amavis` option must be set only if you intend to use
|
||||
the :ref:`amavis_frontend`.
|
||||
|
||||
Manual
|
||||
======
|
||||
|
||||
As Modoboa is a set of Django applications, you need to create a new
|
||||
project. Just run the following commands::
|
||||
|
||||
$ cd /var/www
|
||||
$ django-admin.py startproject modoboa_example
|
||||
$ cd modoboa_example
|
||||
$ rm settings.py
|
||||
$ rm urls.py
|
||||
$ wget http://modoboa.org/resources/settings.py
|
||||
$ wget http://modoboa.org/resources/urls.py
|
||||
$ mkdir media
|
||||
@@ -92,9 +115,15 @@ Finally, run the following commands::
|
||||
|
||||
$ python manage.py collectstatic
|
||||
$ python manage.py syncdb --migrate --noinput
|
||||
$ python manage.py loaddata initial_users.json
|
||||
|
||||
At the end of this command, a default super administrator is
|
||||
available:
|
||||
.. _first_use:
|
||||
|
||||
*********
|
||||
First use
|
||||
*********
|
||||
|
||||
Your installation should now have a default super administrator:
|
||||
|
||||
* Username: ``admin``
|
||||
* Password: ``password``
|
||||
@@ -107,7 +136,7 @@ server::
|
||||
|
||||
$ python manage.py runserver
|
||||
|
||||
You should be able to access your site at http://locahost:8000/.
|
||||
You should be able to access Modoboa at http://locahost:8000/.
|
||||
|
||||
For a production environnement, we recommend using a stable webserver
|
||||
like :ref:`apache2` or :ref:`nginx-label`.
|
||||
|
||||
@@ -261,25 +261,15 @@ configuration files as follow:
|
||||
|
||||
``<modoboa_site>`` is the path of your Modoboa instance.
|
||||
|
||||
Then, create new map files with the following content:
|
||||
Then, create the requested map files::
|
||||
|
||||
``/etc/postfix/maps/sql-transport.cf``::
|
||||
$ modoboa-admin.py postfix_maps mapfiles --categories autoreply
|
||||
|
||||
user = <user>
|
||||
password = <password>
|
||||
dbname = <database>
|
||||
hosts = 127.0.0.1
|
||||
query = SELECT method FROM postfix_autoreply_transport WHERE domain='%s'
|
||||
|
||||
``/etc/postfix/maps/sql-autoreplies.cf``::
|
||||
|
||||
user = <user>
|
||||
password = <password>
|
||||
dbname = <database>
|
||||
hosts = 127.0.0.1
|
||||
query = SELECT full_address, autoreply_address FROM postfix_autoreply_alias WHERE full_address='%s'
|
||||
`mapfiles` is the directory where the files will be stored. Answer the
|
||||
few questions and you're done.
|
||||
|
||||
.. note::
|
||||
|
||||
Auto-reply messages are just sent one time per sender for a
|
||||
pre-defined time period. By default, this period is equal to 1 day
|
||||
(86400s), you can adjust this value by modifying the ``AUTOREPLY_TIMEOUT``
|
||||
|
||||
@@ -29,8 +29,9 @@ Then, follow the common procedure::
|
||||
$ python manage.py syncdb --migrate
|
||||
$ python manage.py collectstatic
|
||||
|
||||
Finally, refer to this page to see if the version you're installing
|
||||
requires specific operations.
|
||||
Finally, refer to this page to check if the version you're installing
|
||||
requires specific operations. If the version you're looking for is not
|
||||
present, it means nothing special is required.
|
||||
|
||||
0.9.1: standard django application and more
|
||||
===========================================
|
||||
|
||||
@@ -12,9 +12,31 @@ This section gives an example about building a simple virtual hosting
|
||||
configuration with *Postfix*. Refer to the `official documentation
|
||||
<http://www.postfix.org/VIRTUAL_README.html>`_ for more explanation.
|
||||
|
||||
Map files
|
||||
=========
|
||||
|
||||
You first need to create configuration files (or map files) that will
|
||||
be used by *postfix* to lookup into Modoboa tables.
|
||||
|
||||
Automatic generation
|
||||
--------------------
|
||||
|
||||
To automaticaly generate the requested map files and store them in a
|
||||
directory, run the following command::
|
||||
|
||||
$ modoboa-admin.py postfix_maps --dbtype <mysql|postgres> mapfiles
|
||||
|
||||
`mapfiles` is the directory where the files will be stored. Answer the
|
||||
few questions and you're done.
|
||||
|
||||
.. _manual_map_files:
|
||||
|
||||
Manual generation
|
||||
-----------------
|
||||
|
||||
.. note::
|
||||
|
||||
The SQL queries presented below are working well with MySQL
|
||||
The SQL queries presented below are working only with MySQL
|
||||
only. To make them work with PostgreSQL, just replace (when needed)
|
||||
the `concat` function call by the standard concatenation operator
|
||||
(ie. `||`).
|
||||
@@ -62,7 +84,26 @@ Define the following map files on your server (it should work with
|
||||
hosts = 127.0.0.1
|
||||
query = SELECT DISTINCT concat(mb.address, '@', dom.name) FROM admin_alias al INNER JOIN admin_domain dom ON dom.id=al.domain_id INNER JOIN admin_domainalias domal ON domal.target_id=dom.id INNER JOIN (admin_alias_mboxes almb, admin_mailbox mb) ON (almb.alias_id=al.id AND almb.mailbox_id=mb.id) WHERE domal.name='%d' AND domal.enabled=1 AND (al.address='%u' OR mb.address='%u')
|
||||
|
||||
Then, use the following configuration in the */etc/postfix/main.cf* file
|
||||
``/etc/postfix/sql-email2email.cf``::
|
||||
|
||||
user = <user>
|
||||
password = <password>
|
||||
dbname = <database>
|
||||
hosts = 127.0.0.1
|
||||
query = SELECT concat(mb.address, '@', dom.name) FROM admin_mailbox mb INNER JOIN admin_domain dom ON mb.domain_id=dom.id INNER JOIN auth_user user ON mb.user_id=user.id WHERE dom.name='%d' AND dom.enabled=1 AND mb.address='%u' AND user.is_active=1
|
||||
|
||||
``/etc/postfix/sql-catchall-aliases.cf``::
|
||||
|
||||
user = <user>
|
||||
password = <password>
|
||||
dbname = <database>
|
||||
hosts = 127.0.0.1
|
||||
query = (SELECT concat(mb.address, '@', dom.name) FROM admin_mailbox mb INNER JOIN admin_domain dom ON mb.domain_id=dom.id WHERE mb.id IN (SELECT al_mb.mailbox_id FROM admin_alias al INNER JOIN admin_domain dom ON al.domain_id=dom.id INNER JOIN admin_alias_mboxes al_mb ON al.id=al_mb.alias_id WHERE al.enabled=1 AND al.address='*' AND dom.name='%d' AND dom.enabled=1)) UNION (SELECT al.extmboxes FROM admin_alias al INNER JOIN admin_domain dom ON al.domain_id=dom.id WHERE al.enabled='1' AND al.extmboxes<>'' AND al.address='*' AND dom.name='%d' AND dom.enabled=1)
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
Use the following configuration in the */etc/postfix/main.cf* file
|
||||
(this is just one possible configuration)::
|
||||
|
||||
# Stuff before
|
||||
@@ -78,7 +119,10 @@ Then, use the following configuration in the */etc/postfix/main.cf* file
|
||||
virtual_alias_domains = mysql:/etc/postfix/sql-domain-aliases.cf
|
||||
virtual_mailbox_maps = mysql:/etc/postfix/sql-mailboxes.cf
|
||||
virtual_alias_maps = mysql:/etc/postfix/sql-aliases.cf,
|
||||
mysql:/etc/postfix/sql-domain-aliases-mailboxes.cf
|
||||
mysql:/etc/postfix/sql-domain-aliases-mailboxes.cf,
|
||||
mysql:/etc/postfix/sql-email2email.cf,
|
||||
mysql:/etc/postfix/sql-catchall-aliases.cf
|
||||
|
||||
# Stuff after
|
||||
|
||||
.. note::
|
||||
@@ -86,47 +130,12 @@ Then, use the following configuration in the */etc/postfix/main.cf* file
|
||||
which format to use by modifying the MAILBOX_TYPE parameter available
|
||||
in the admin panel.
|
||||
|
||||
Optional : 'catchall' aliases
|
||||
=============================
|
||||
|
||||
Modoboa supports 'catchall' aliases creation. In the case you would
|
||||
like to use this feature, you'll need to add specific queries to
|
||||
*postfix* configuration.
|
||||
|
||||
First, create the following new maps (*MySQL* users):
|
||||
|
||||
``/etc/postfix/sql-email2email.cf``::
|
||||
|
||||
user = <user>
|
||||
password = <password>
|
||||
dbname = <database>
|
||||
hosts = 127.0.0.1e
|
||||
query = SELECT concat(mb.address, '@', dom.name) FROM admin_mailbox mb INNER JOIN admin_domain dom ON mb.domain_id=dom.id INNER JOIN auth_user user ON mb.user_id=user.id WHERE dom.name='%d' AND dom.enabled=1 AND mb.address='%u' AND user.is_active=1
|
||||
|
||||
``/etc/postfix/sql-catchall-aliases.cf``::
|
||||
|
||||
user = <user>
|
||||
password = <password>
|
||||
dbname = <database>
|
||||
hosts = 127.0.0.1
|
||||
query = (SELECT concat(mb.address, '@', dom.name) FROM admin_mailbox mb INNER JOIN admin_domain dom ON mb.domain_id=dom.id WHERE mb.id IN (SELECT al_mb.mailbox_id FROM admin_alias al INNER JOIN admin_domain dom ON al.domain_id=dom.id INNER JOIN admin_alias_mboxes al_mb ON al.id=al_mb.alias_id WHERE al.enabled=1 AND al.address='*' AND dom.name='%d' AND dom.enabled=1)) UNION (SELECT al.extmboxes FROM admin_alias al INNER JOIN admin_domain dom ON al.domain_id=dom.id WHERE al.enabled='1' AND al.extmboxes<>'' AND al.address='*' AND dom.name='%d' AND dom.enabled=1)
|
||||
|
||||
Once done, edit the *main.cf* configuration file and add the new maps
|
||||
to the ``virtual_alias_maps`` parameter like this::
|
||||
|
||||
virtual_alias_maps = mysql:/etc/postfix/sql-aliases.cf,
|
||||
mysql:/etc/postfix/sql-domain-aliases-mailboxes.cf,
|
||||
mysql:/etc/postfix/sql-email2email.cf, # new
|
||||
mysql:/etc/postfix/sql-catchall-aliases.cf # new
|
||||
|
||||
Reload *postfix*.
|
||||
|
||||
.. _dovecot_lda:
|
||||
|
||||
Optional: using Dovecot's LDA
|
||||
=============================
|
||||
Recommended: using Dovecot's LDA
|
||||
================================
|
||||
|
||||
If you are using *Dovecot* in your environnement, I recommend to use
|
||||
If you are using *Dovecot* in your environnement, we recommend to use
|
||||
its LDA. Doing so, you'll will be able to use extra functionalities
|
||||
such as sieve filters and more.
|
||||
|
||||
@@ -142,7 +151,7 @@ definition at the end::
|
||||
dovecot unix - n n - - pipe
|
||||
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}
|
||||
|
||||
If you have followed the :ref:`postfix` section to install your
|
||||
If you have followed the :ref:`manual_map_files` section to install your
|
||||
environnement, you need to modify the SQL query corresponding to the
|
||||
``virtual_mailbox_maps`` parameter. Edit the
|
||||
*/etc/postfix/maps/sql-mailboxes.cf* and modify the ``query``
|
||||
|
||||
@@ -4,3 +4,4 @@ lxml
|
||||
pycrypto
|
||||
sievelib
|
||||
chardet
|
||||
argparse
|
||||
|
||||
Reference in New Issue
Block a user