Mail hosting made simple

Overview

Modoboa

workflow codecov Latest version on Pypi

Modoboa is a mail hosting and management platform including a modern and simplified Web User Interface. It provides useful components such as an administration panel or a webmail.

Modoboa integrates with well known software such as Postfix or Dovecot. A SQL database (MySQL, PostgreSQL or SQLite) is used as a central point of communication between all components.

Modoboa is developed with modularity in mind, expanding it is really easy. Actually, all current features are extensions.

It is written in Python 3 and uses the Django, jQuery and Bootstrap frameworks.

Main features

Documentation

A detailed documentation will help you to install, use or extend Modoboa.

Demo Installation

If you want to try out Modoboa, check out our demo installation.

Getting help

If you have any question, you can use the following ways to get help:

  • IRC: join the #modoboa channel on Freenode
  • Mailing list: join the modoboa-users group on Google Groups
  • Github: open an issue if you found a bug

External code

The following external libraries are provided with Modoboa:

Issues
  • Can't open quarantine after upgrade from 1.9.0 to 1.10.1

    Can't open quarantine after upgrade from 1.9.0 to 1.10.1

    Impacted versions

    • Modoboa: 1.10.1
    • installer used: Yes ?
    • Webserver: Nginx

    OS: centos 7.4

    Steps to reproduce

    Upgrade from 1.9.0

    Current behavior

    Can't open quarantine - Internal Error I have put Debug on, should open the debug log on modoboa ? can't see nothing on log files.

    help-needed question 
    opened by lmfrazao 49
  • Edit Domain unresponsive

    Edit Domain unresponsive

    Impacted versions

    • Modoboa: 1.8.2
    • installer used: Yes
    • Webserver: Nginx

    When logging in to modoboa, for one particular domain I am unable to edit anything. For example, if I try to disable the domain and click update nothing happens. For that matter, any field I edit -- once I click update nothing happens. Changes are not saved and there are no error messages. However, I can go into the individual accounts within that domain and edit them without a problem. I can login to webmail without a problem. The accounts are able to send and receive email.

    opened by oconshaw 36
  • no statistics/graphs

    no statistics/graphs

    Just noticed I don't seem to have the nice graphs displaying the mail statistics. How can I debug this?

    opened by JayBeRayBearGun 31
  • Error when running python manage.py migrate

    Error when running python manage.py migrate

    Hi, I'm trying to install the Radicale module, but whenever I try to run python manage.py migrate it gives me this error:

    Traceback (most recent call last):
      File "manage.py", line 10, in <module>
        execute_from_command_line(sys.argv)
      File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
        utility.execute()
      File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 302, in execute
        settings.INSTALLED_APPS
      File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 55, in __getattr__
        self._setup(name)
      File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 43, in _setup
        self._wrapped = Settings(settings_module)
      File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 99, in __init__
        mod = importlib.import_module(self.SETTINGS_MODULE)
      File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
        __import__(name)
      File "/srv/modoboa/instance/instance/settings.py", line 255, in <module>
        from modoboa_amavis.settings import *
    ImportError: No module named modoboa_amavis.settings
    

    I got to say that this is a fresh installation.

    Any idea what is missing?

    Thanks.

    question 
    opened by axd 27
  • Help with upgrading Modoboa on Debian

    Help with upgrading Modoboa on Debian

    I'm not experienced with Python, Postgre.

    I have Modoboa 1.6.0 running on my mailserver . My install method was the 'easy', Python script method:

    $ git clone https://github.com/modoboa/modoboa-installer $ cd modoboa-installer $ sudo ./run.py <mail server hostname>

    I have read the docs describing how to update modoboa with new version, but I'm stuck on the deploy instructions.

    Example from the docs: $ modoboa-admin.py deploy modoboa_example --collectstatic [--dburl default:database-url] [--extensions extensions]

    What do I replace modoboa_example with?

    How do I determine my --dburl values?

    Any help is very appreciated!

    opened by abmiller99 26
  • Cron jobs trigger warning about non-standard shutdown of database connection (MySQL)

    Cron jobs trigger warning about non-standard shutdown of database connection (MySQL)

    Running the cronjobs (no matter under what account) triggers warning in syslog, like this

    Dec 15 13:51:01 {hostname} mysqld: 141215 13:51:01 [Warning] Aborted connection {conn_id} to db: '{db_name}' user: '{db_user}' host: '{db_host}' (Unknown error)
    

    example cronjob definition

    0 0 * * * python /{modoboa_instance_path}/manage.py cleanlogs
    

    Is this known issue, or problem of instance configuration? I'm not running it in virtualenv or anything special.

    opened by smarek 26
  • Can't Add user

    Can't Add user

    I'm recently having issues adding new users. Receiving this response

    SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data .parseJSON() jquery.min.js:3 Cwizard.prototype.post/<() creation_wizard.js:61 .proxy/i() jquery.min.js:3 b.Callbacks/c() jquery.min.js:3 b.Callbacks/p.fireWith() jquery.min.js:3 k() jquery.min.js:5 .send/r()

    opened by scrolls-mckenzie 24
  • Possible to use as a front end mail gateway and NOT a complete mail system?

    Possible to use as a front end mail gateway and NOT a complete mail system?

    I am considering switching from ASSP to modoboa and I was curious if it is possible to setup things up so that modoboa is configured as a mail gateway with all mail (and users) residing on another system (like xmail or hMailServer)?

    I know that I can do this with postfix and setting up relay_domains, relay_receipients, and transport configuration files, The question is -- will modoboa continue to work with this confirmation (including support for quarantine)?

    opened by ravensorb 24
  • Unable to delete user/mailbox when user/domain is disabled

    Unable to delete user/mailbox when user/domain is disabled

    • Modoboa: 1.8.1
    • installer used: No
    • Webserver: Apache

    When disabling a domain, all mailboxes of that domain are (logically) disabled too. When I try to delete a disabled mailbox, an error shows up: Failed to retrieve mailbox location (userdb lookup: user xxx doesn't exist)

    So I must re-enable the domain before being able to delete users, which is kind of weird steps to follow (mailbox disabled -> mailbox enabled -> mailbox deleted).

    Disabling a domain or a mailbox could be considered the first step before deleting it, so their should be no need to re-enable it to do that.

    bug 
    opened by yannfill 23
  • 502 Bad Gateway after update

    502 Bad Gateway after update

    Impacted versions

    • Modoboa: 1.12.1
    • installer used: Yes ?
    • Webserver: Nginx

    Steps to reproduce

    Problem after the update to modoboa 1.12.1 and some plugins

    Current behavior

    Sorry, I use an automatic translation

    502 Bad Gateway when I want to access mail.xxxx.fr Logs Nginx :

    2018/11/26 21:52:41 [error] 1725#1725: *9 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET /dashboard/ HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr", referrer: "https://mail.XXXXX.fr/core/"
    2018/11/26 22:02:46 [error] 1728#1728: *242 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET /dashboard/ HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr", referrer: "https://mail.XXXXX.fr/dashboard/"
    2018/11/26 22:12:48 [error] 1728#1728: *279 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET /dashboard/ HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr", referrer: "https://mail.XXXXX.fr/dashboard/"
    2018/11/26 22:22:50 [error] 1727#1727: *331 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET /dashboard/ HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr", referrer: "https://mail.XXXXX.fr/dashboard/"
    2018/11/26 22:33:15 [error] 1703#1703: *49 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET /dashboard/ HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr", referrer: "https://mail.XXXXX.fr/dashboard/"
    2018/11/26 22:42:08 [error] 9559#9559: *19 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET /dashboard/ HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr"
    2018/11/26 22:42:09 [error] 9559#9559: *19 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET /favicon.ico HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr"
    2018/11/26 22:42:16 [error] 9559#9559: *19 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET / HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr"
    2018/11/26 22:42:17 [error] 9559#9559: *19 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET /favicon.ico HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr"
    2018/11/26 22:43:17 [error] 9559#9559: *33 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET /dashboard/ HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr", referrer: "https://mail.XXXXX.fr/dashboard/"
    2018/11/26 22:53:18 [error] 9557#9557: *103 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET /dashboard/ HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr", referrer: "https://mail.XXXXX.fr/dashboard/"
    2018/11/26 23:02:46 [error] 13697#13697: *31 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET / HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr"
    2018/11/26 23:02:47 [error] 13697#13697: *31 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET /favicon.ico HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr"
    2018/11/26 23:03:20 [error] 13697#13697: *34 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET /dashboard/ HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr", referrer: "https://mail.XXXXX.fr/dashboard/"
    2018/11/26 23:11:35 [error] 1592#1592: *4 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET / HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr"
    2018/11/26 23:11:36 [error] 1592#1592: *4 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET /favicon.ico HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr"
    2018/11/26 23:13:22 [error] 1592#1592: *8 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET /dashboard/ HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr", referrer: "https://mail.XXXXX.fr/dashboard/"
    2018/11/26 23:23:23 [error] 1592#1592: *15 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET /dashboard/ HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr", referrer: "https://mail.XXXXX.fr/dashboard/"
    2018/11/26 23:29:11 [error] 1592#1592: *21 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET / HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr"
    2018/11/26 23:29:12 [error] 1592#1592: *21 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET /favicon.ico HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr"
    2018/11/26 23:31:05 [error] 1592#1592: *21 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET /accounts/login/?next=/ HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr"
    2018/11/26 23:31:06 [error] 1592#1592: *21 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET /favicon.ico HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr"
    2018/11/26 23:31:09 [error] 1592#1592: *21 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET /accounts/login/ HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr"
    2018/11/26 23:31:11 [error] 1592#1592: *21 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET /favicon.ico HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr"
    2018/11/26 23:33:25 [error] 1592#1592: *30 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET /dashboard/ HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr", referrer: "https://mail.XXXXX.fr/dashboard/"
    2018/11/26 23:43:27 [error] 1592#1592: *37 upstream prematurely closed connection while reading response header from upstream, client: XX.XXX.XXX.XX, server: mail.XXXXX.fr, request: "GET /dashboard/ HTTP/2.0", upstream: "uwsgi://unix:/run/uwsgi/app/modoboa_instance/socket:", host: "mail.XXXXX.fr", referrer: "https://mail.XXXXX.fr/dashboard/"
    

    the problem seems to be coming from uwsgi. the "issue" #1607 to the same problem but I didn't succeed in doing the same thing. I simply installed uwsgi with pip install.

    Expected behavior

    Have access to my mailbox and send/receive mails

    feedback-needed 
    opened by CooperBarrett 21
  • Unable to update domain quota from Web UI or API

    Unable to update domain quota from Web UI or API

    1.17.0

    OS Type: Debian OS Version: 10 Database Type: PostgreSQL installer used: Yes Webserver: Nginx

    Set domain quota upon creation, then attempt to update quota. Quota doesn't update for domain and as a result, no more users can be added to the domain. Occurs with both API Patch request and Web UI. When trying to reduce quota from web UI, HTTP 500 is returned

    opened by mattg66 0
  • modo mx fails on DMARC record >100 characters

    modo mx fails on DMARC record >100 characters

    Impacted versions

    • OS Type: Ubuntu
    • OS Version: 20.04.2 LTS
    • Database Type: Postgres
    • Database version: 12.7
    • Modoboa: 1.17.0
    • installer used: Yes
    • Webserver: Nginx

    Steps to reproduce

    1. Set DMARC record with multiple email address, amounting to >100 characters in length.
    2. Run modo check_mx
    3. Observer below stacktrace Traceback (most recent call last): File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/backends/utils.py", line 84, in _execute return self.cursor.execute(sql, params) psycopg2.errors.StringDataRightTruncation: value too long for type character varying(50)

    The above exception was the direct cause of the following exception:

    Traceback (most recent call last): File "/srv/modoboa/instance/manage.py", line 21, in main() File "/srv/modoboa/instance/manage.py", line 17, in main execute_from_command_line(sys.argv) File "/srv/modoboa/env/lib/python3.8/site-packages/django/core/management/init.py", line 381, in execute_from_command_line utility.execute() File "/srv/modoboa/env/lib/python3.8/site-packages/django/core/management/init.py", line 375, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/srv/modoboa/env/lib/python3.8/site-packages/django/core/management/base.py", line 323, in run_from_argv self.execute(*args, **cmd_options) File "/srv/modoboa/env/lib/python3.8/site-packages/modoboa/admin/management/commands/modo.py", line 50, in execute return options.pop('command').execute(*args, **options) File "/srv/modoboa/env/lib/python3.8/site-packages/django/core/management/base.py", line 364, in execute output = self.handle(*args, **options) File "/srv/modoboa/env/lib/python3.8/site-packages/modoboa/admin/management/commands/subcommands/_mx.py", line 296, in handle self.check_domain(domain, **options) File "/srv/modoboa/env/lib/python3.8/site-packages/modoboa/admin/management/commands/subcommands/_mx.py", line 232, in check_domain dns_models.DNSRecord.objects.get_or_create_for_domain( File "/srv/modoboa/env/lib/python3.8/site-packages/modoboa/dnstools/models.py", line 34, in get_or_create_for_domain record.save() File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/models/base.py", line 743, in save self.save_base(using=using, force_insert=force_insert, File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/models/base.py", line 780, in save_base updated = self._save_table( File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/models/base.py", line 873, in _save_table result = self._do_insert(cls._base_manager, using, fields, update_pk, raw) File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/models/base.py", line 910, in _do_insert return manager._insert([self], fields=fields, return_id=update_pk, File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/models/manager.py", line 82, in manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/models/query.py", line 1186, in _insert return query.get_compiler(using=using).execute_sql(return_id) File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1377, in execute_sql cursor.execute(sql, params) File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/backends/utils.py", line 67, in execute return self._execute_with_wrappers(sql, params, many=False, executor=self._execute) File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/backends/utils.py", line 76, in _execute_with_wrappers return executor(sql, params, many, context) File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/backends/utils.py", line 84, in _execute return self.cursor.execute(sql, params) File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/utils.py", line 89, in exit raise dj_exc_value.with_traceback(traceback) from exc_value File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/backends/utils.py", line 84, in _execute return self.cursor.execute(sql, params) django.db.utils.DataError: value too long for type character varying(50)

    Accept >100 characters as multiple email addresses can be specified in DMARC record

    opened by stephensCL 0
  • MySQL/MariaDB localhost / 127.0.0.1 config change request

    MySQL/MariaDB localhost / 127.0.0.1 config change request

    Impacted versions: all (?) OS Type: Debian OS Version: 10 Database: MariaDB Manual installation. Over time various upgrades.

    https://modoboa.readthedocs.io/en/latest/upgrade.html describes the process to upgrade core and extensions. It might be that the following is advised/need to run: python manage.py generate_postfix_maps --destdir <directory> This produces SQL scripts to be used by Postfix. BUT it uses 'localhost' by default as the database-host/server. In a chroot-ed environment such as the default Debian Postfix install this causes problems as now Postfix tries to access MySQL/MariaDB using a socket. The socket file cannot be used. For details also see: https://workaround.org/ispmail/jessie/postfix-mysql I think a better approach would be to use 127.0.0.1 instead or make this configurable/tweakable. In the current setup a checksum file is generated and explicitly mentioned is not to edit the SQL script files. I tried to honor this and tried to enforce TCP connections instead of socket by adding transport=TCP to the [client] stanza in the MariaDB config, but this gets ignored. Therefor the only option seemed to edit the SQL files which I did. Drawback is that the checksum file now no longer matches the files.

    opened by olaf7 1
  • Bump django-phonenumber-field[phonenumbers] from 5.1.0 to 5.2.0

    Bump django-phonenumber-field[phonenumbers] from 5.1.0 to 5.2.0

    Bumps django-phonenumber-field[phonenumbers] from 5.1.0 to 5.2.0.

    Changelog

    Sourced from django-phonenumber-field[phonenumbers]'s changelog.

    5.2.0 (2021-05-31)

    • Lazy load formfields.PhoneNumberField translation for invalid data.
    • Update Russian translations

    Backwards incompatible changes

    • Drop support for end-of-life Django 3.0
    Commits
    • e0fdc98 Bump version to prepare for the next release
    • 0947555 Lazy load form field error message translation
    • e653a09 Verify translations are compiled in the CI
    • bcd0608 Use older Django compiled messages
    • 80fcfb0 Merge two concatenated strings in tests
    • 15a9630 Remove intermediary assignment in PhonePrefixSelect
    • 05c1cfb Drop support for end-of-life Django 3.0
    • cd1d244 Merge pull request #445 from francoisfreitag/coverage-reports
    • 882f982 Ignore coverage reports
    • c029c61 Fix Russian translation
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump django-otp from 1.0.5 to 1.0.6

    Bump django-otp from 1.0.5 to 1.0.6

    Bumps django-otp from 1.0.5 to 1.0.6.

    Changelog

    Sourced from django-otp's changelog.

    v1.0.6 - May 28, 2021 - Email customization

    • [#82](https://github.com/django-otp/django-otp/issues/82)_: Add ability to pass extra context when rendering :class:~django_otp.plugins.otp_email.models.EmailDevice templates.

    .. _#82: django-otp/django-otp#82

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • New admin interface using vuejs 2 and vuetify

    New admin interface using vuejs 2 and vuetify

    A new version of the API is also available.

    opened by tonioo 1
  • Contacts and Calendar throw internal error

    Contacts and Calendar throw internal error

    Impacted versions

    • OS Type: Debian
    • OS Version: 10
    • Database Type: MySQL
    • Database version: 10.3.27-MariaDB-0+deb10u1
    • Modoboa: 1.17.0
    • installer used: Yes
    • Webserver: Nginx
    • python --version: Python 3.7.3

    Steps to reproduce

    • Do a default install of Modoboa on Debian 10.
    • [Using "mailsrv" instead of "mail" as the mail server's subdomain. Using Let's Encrypt.]
    • Set up a first mail domain for testing (modoboa.MY-DOMAIN-HERE.de)
    • Set up a domain administrator account with mail box ([email protected])
    • Using fresh account, try to access "Contacts" or "Calendar" from the menu.

    Current behavior

    Sorry
    An internal error has occured.
    

    Expected behavior

    Open contacts or calendar module.

    bug 
    opened by mas1701 14
  • manage.py modo check_mx (cron job) throws python error (mails every 30 mins.)

    manage.py modo check_mx (cron job) throws python error (mails every 30 mins.)

    Impacted versions

    • OS Type: Debian
    • OS Version: 10
    • Database Type: MySQL
    • Database version: 10.3.27-MariaDB-0+deb10u1
    • Modoboa: 1.17.0
    • installer used: Yes
    • Webserver: Nginx
    • python --version: Python 3.7.3

    Steps to reproduce

    • Do a default install of Modoboa on Debian 10.
    • [Using "mailsrv" instead of "mail" as the mail server's subdomain. Using Let's Encrypt.]
    • Define valid MX servers in Modoboa: mailsrv.MY-DOMAIN-HERE.de mailin.MY-DOMAIN-HERE.de
    • Set up a first mail domain for testing (modoboa.MY-DOMAIN-HERE.de)

    Current behavior

    DNS Status stuck at checks pending (Erwarte Prüfungen). Throws error and generates a mail every 30 mins. containing this:

    Subject: Cron <[email protected]>    $PYTHON $INSTANCE/manage.py modo check_mx
    X-Cron-Env: <PYTHON=/srv/modoboa/env/bin/python>
    X-Cron-Env: <INSTANCE=/srv/modoboa/instance>
    X-Cron-Env: <SHELL=/bin/sh>
    X-Cron-Env: <HOME=/root>
    X-Cron-Env: <PATH=/usr/bin:/bin>
    X-Cron-Env: <LOGNAME=root>
    
    Traceback (most recent call last):
      File "/srv/modoboa/instance/manage.py", line 21, in <module>
        main()
      File "/srv/modoboa/instance/manage.py", line 17, in main
        execute_from_command_line(sys.argv)
      File "/srv/modoboa/env/lib/python3.7/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
        utility.execute()
      File "/srv/modoboa/env/lib/python3.7/site-packages/django/core/management/__init__.py", line 375, in execute
        self.fetch_command(subcommand).run_from_argv(self.argv)
      File "/srv/modoboa/env/lib/python3.7/site-packages/django/core/management/base.py", line 323, in run_from_argv
        self.execute(*args, **cmd_options)
      File "/srv/modoboa/env/lib/python3.7/site-packages/modoboa/admin/management/commands/modo.py", line 50, in execute
        return options.pop('command').execute(*args, **options)
      File "/srv/modoboa/env/lib/python3.7/site-packages/django/core/management/base.py", line 364, in execute
        output = self.handle(*args, **options)
      File "/srv/modoboa/env/lib/python3.7/site-packages/modoboa/admin/management/commands/subcommands/_mx.py", line 296, in handle
        self.check_domain(domain, **options)
      File "/srv/modoboa/env/lib/python3.7/site-packages/modoboa/admin/management/commands/subcommands/_mx.py", line 219, in check_domai
    n
        self.check_valid_mx(domain, mx_list, **options)
      File "/srv/modoboa/env/lib/python3.7/site-packages/modoboa/admin/management/commands/subcommands/_mx.py", line 159, in check_valid
    _mx
        valid_mxs = self.valid_mxs
      File "/srv/modoboa/env/lib/python3.7/site-packages/django/utils/functional.py", line 80, in __get__
        res = instance.__dict__[self.name] = self.func(instance)
      File "/srv/modoboa/env/lib/python3.7/site-packages/modoboa/admin/management/commands/subcommands/_mx.py", line 44, in valid_mxs
        for v in valid_mxs.split() if v.strip()]
      File "/srv/modoboa/env/lib/python3.7/site-packages/modoboa/admin/management/commands/subcommands/_mx.py", line 44, in <listcomp>
        for v in valid_mxs.split() if v.strip()]
      File "/usr/lib/python3.7/ipaddress.py", line 84, in ip_network
        address)
    ValueError: 'mailsrv.MY-DOMAIN-HERE.de' does not appear to be an IPv4 or IPv6 network
    

    Expected behavior

    Running check_mx without problems and with no mail to root every 30 mins.

    opened by mas1701 1
  • Active Directory Identity creation/Web login issues

    Active Directory Identity creation/Web login issues

    Even by looking at the log files, I'm still stumped on where my problem is.
    First, my setup involves modoboa and dovecot syncing with Active Directory. Dovecot syncing is not through Modoboa's parameter settings. Most users that have mailboxes set up can access their mail. Now, however, newly created AD users aren't able to log in Modoboa's web interface. I've ran into the same error logging into Modboa's webmail using 2 different test users: **Error: Failed to update password: {'msgtype': 103, 'msgid': 3, 'result': 50, 'desc': 'Insufficient access', 'ctrls': [], 'info': '00000005: SecErr: DSID-031A1256, problem 4003 (INSUFF_ACCESS_RIGHTS), data 0\n'}**

    • One user has an identity/mailbox in Modoboa. User can create IMAP account under Outlook and Send.Receive emails through that app.
    • A freshly created AD user gets the error logging into Modoboa. No identity or User/Maildir folder is created at this point. Attempting to create Outlook account, user can log into Incoming email server, but cannot send a test email, leading to a 553 error (Sender address rejected: not owned by user). At this point, no Identity is created under Modoboa's web interface, but a User/Maildir is created alongside all others.
    bug documentation 
    opened by DaveDischord 6
  • Bump greenlet from 0.4.17 to 1.1.0

    Bump greenlet from 0.4.17 to 1.1.0

    Bumps greenlet from 0.4.17 to 1.1.0.

    Changelog

    Sourced from greenlet's changelog.

    1.1.0 (2021-05-06)

    • Add support for Python 3.10. Pre-built binary wheels for 3.10 are not currently available for all platforms. The greenlet ABI is different on Python 3.10 from all previous versions, but as 3.10 was never supported before, and the ABI has not changed on other Python versions, this is not considered a reason to change greenlet's major version.

    1.0.0 (2021-01-13)

    • Fix %s and %r formatting of a greenlet on Python 2. Previously it would result in a Unicode string instead of a native string. See issue 218 <https://github.com/python-greenlet/greenlet/issues/218>_.

    • Move continuous integration from Travis CI to Github Actions.

    1.0a1 (2020-11-20)

    • Add the ability to set a greenlet's PEP 567 contextvars context directly, by assigning to the greenlet's gr_context attribute. This restores support for some patterns of using greenlets atop an async environment that became more challenging in 0.4.17. Thanks to Joshua Oreman, Mike bayer, and Fantix King, among others. See PR 198 <https://github.com/python-greenlet/greenlet/pull/198/>_.

    • The repr of greenlet objects now includes extra information about its state. This is purely informative and the details are subject to change. See issue 215 <https://github.com/python-greenlet/greenlet/issues/215>_.

    • The greenlet module is now a package. There are no API changes, so all existing imports, including from C code, should continue to work.

    • (C API) The undocumented GREENLET_VERSION macro that defined a string giving the greenlet version is now deprecated and will not be updated.

    • (Documentation) Publish the change log to https://greenlet.readthedocs.io

    Supported Platforms

    • Drop support for Python 2.4, 2.5, 2.6, 3.0, 3.1, 3.2 and 3.4. The project metadata now includes the python_requires data to

    ... (truncated)

    Commits
    • b27efb9 Preparing release 1.1.0
    • 92ed9b9 Tweak changelog.
    • ce53083 Merge pull request #238 from python-greenlet/python310
    • 2014e4e Add a manylinux environment that should have Python 3.10.
    • 352b974 Save and restore the tstate->cframe as part of the greenlet structure on 3.10.
    • 6c5f096 Add support for Python 3.10
    • ef08260 Merge pull request #229 from CaselIT/master
    • e6eabbe fix: typo in source code url in setup file
    • e2112fc Tell zest.releaser not to upload wheels, just the sdist. [skip ci]
    • 7d9f7e8 Back to development: 1.0.1
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
Releases(1.17.0)
  • 1.17.0(Nov 5, 2020)

  • 1.16.0(Oct 5, 2020)

    A new policy daemon for postfix has been introduced by this version. For now, it only allows the definition of daily sending limits for domains and accounts.

    This release also includes a new mail log section which has been sponsored by the community. More detail: https://modoboa.org/en/projects/9/.

    Source code(tar.gz)
    Source code(zip)
  • 1.15.0(May 7, 2020)

    This major release brings a lot of new features and fixes but it also drops the support for Python 2. Please be careful if you upgrade an existing Python 2 installation since you'll need to rebuilt your virtual environment.

    See associated milestone: https://github.com/modoboa/modoboa/milestone/77?closed=1.

    Source code(tar.gz)
    Source code(zip)
  • 1.7.2(Mar 17, 2017)

    Bug Fixes

    #1078 Upgrade djangorestframework to 3.6 #1076 Include django-ckeditor #1047 Allow SuperAdmins to set custom rss feed for DomainAdmins and Resellers #1070 New widget to display features to sponsor #1065 cleanlogs command is broken with 1.7.x

    Source code(tar.gz)
    Source code(zip)
Owner
Modoboa
Mail hosting made simple!
Modoboa
An open source email campaign management tool for nonprofits

Mail for Good Please be aware that Mail for Good is currently in beta. Looking to contribute? Read our developer setup guide. An app for sending milli

freeCodeCamp.org 3.8k Jun 12, 2021
A fullstack but simple mail server (SMTP, IMAP, LDAP, Antispam, Antivirus, etc.) using Docker.

Docker Mailserver A fullstack but simple mail server (SMTP, IMAP, LDAP, Antispam, Antivirus, etc.). Only configuration files, no SQL database. Keep it

Docker Mailserver 7.3k Jun 7, 2021
Catches mail and serves it through a dream.

MailCatcher Catches mail and serves it through a dream. MailCatcher runs a super simple SMTP server which catches any message sent to it to display in

Samuel Cochran 5.3k Jun 10, 2021
A fast, highly extensible, and event driven SMTP server

Haraka - a Node.js Mail Server Haraka is a highly scalable node.js email server with a modular plugin architecture. Haraka can serve thousands of conc

Haraka 3.9k Jun 11, 2021
The SimpleLogin back-end

SimpleLogin | Protect your online identity with email alias Your email address is your online identity. When you use the same email address everywhere

SimpleLogin 1.3k Jun 6, 2021
A free & open modern, fast email client with user-friendly encryption and privacy features

Welcome to Mailpile! Introduction Mailpile (https://www.mailpile.is/) is a modern, fast web-mail client with user-friendly encryption and privacy feat

mailpile 8.4k Jun 12, 2021
📨 A fully featured open source mail delivery platform for incoming & outgoing e-mail

Postal Postal is a complete and fully featured mail server for use by websites & web servers. Think Sendgrid, Mailgun or Postmark but open source and

Postal 10.5k Jun 10, 2021
Opinionated email server

WildDuck Mail Server WildDuck is a scalable no-SPOF IMAP/POP3 mail server. WildDuck uses a distributed database (sharded + replicated MongoDB) as a ba

nodemailer 1.3k Jun 3, 2021
Mail hosting made simple

Modoboa Modoboa is a mail hosting and management platform including a modern and simplified Web User Interface. It provides useful components such as

Modoboa 1.8k Jun 10, 2021
Vanilla is a powerfully simple discussion forum you can easily customize to make as unique as your community.

Howdy, Stranger! Vanilla was born out of the desire to create flexible, customizable, and downright entertaining community solutions. Vanilla has been

Vanilla Forums 2.4k Jun 6, 2021
Insular email distribution - mail server as Docker images

Mailu is a simple yet full-featured mail server as a set of Docker images. It is free software (both as in free beer and as in free speech), open to s

Mailu 2.7k Jun 7, 2021
Web and API based SMTP testing

MailHog Inspired by MailCatcher, easier to install. Download and run MailHog Configure your outgoing SMTP server View your outgoing email in a web UI

MailHog 8.6k Jun 10, 2021
The ultimate Free Open Source Solution for team communications.

The Ultimate Open Source WebChat Platform NEW! Rocket.Chat Moving to a Single Codebase Community Mobile Apps Desktop Apps Deployment Snaps DigitalOcea

Rocket.Chat 30.4k Jun 7, 2021
HOMER - 100% Open-Source SIP / VoIP Packet Capture & Monitoring

HOMER 7.7 (Seven) 100% Open-Source VoIP & RTC Capture, Troubleshooting & Monitoring HOMER is a robust, carrier-grade, scalable Packet and Event captur

SIPCAPTURE 900 May 28, 2021