Re: MM3 Docker
by Mark Sapiro
On 1/7/19 1:18 AM, Odhiambo Washington wrote:
> On Sun, 6 Jan 2019 at 23:39, Mark Sapiro <mark(a)msapiro.net> wrote:
>>
>> Please help me understand what steps are missing and I will try to
>> provide the information.
>
>
> Okay.
>
> At the installation stage, you say the following:
> "I already had some things set up in /opt/mailman including a git
> subdirectory containing clones of the GitLab mailman, mailmanclient,
> mailman-hyperkitty, hyperkitty, django-mailman3 and
> postorius projects. On the third server I have added mailman-suite
> because I use the settings.py from that project as the basis for mine."
>
> Please assume that the reader is a newbie to python3 virtualenv and give the
> details of the commands they need to execute to (a) clone all the projects
> needed
> and (b) create the virtualenv.
>
> The next steps are:
> mkdir /opt/mailman/mm
>
> Then you say "I then created a /opt/mailman/mm directory and within that a
> Python 3.6 virtualenv"
> What happens here is something that needs clarification, because you are
> specific about "python3.6".
> I have googled and realized that one has to be specific about the python
> version they want to use in their virtualenv
> as shown here ->
> https://stackoverflow.com/questions/45293436/how-to-specify-python-version-…
>
> exact command to execute to create the /opt/mailman/mm/venv
> exact command to execute to activate virtualenv
I have added a comment to the page which I hope gives you what you want.
I also added a section on templates instead of referring to a prior
version of the page.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
6 years, 10 months
Re: [Mailman-Users] mailman 3 and freeipa
by Abhilash Raj
On Mon, Mar 18, 2019, at 12:16 AM, Stephen J. Turnbull wrote:
> Crossposting and redirecting replies to mailman-users(a)mailman3.org.
>
> Steven Jones writes:
>
> > I cant find anything on this so far but can Mailman3's webui use
> > freeipa as the authentication mechanism?
>
> Hi Steve,
>
> I don't have a complete answer offhand (and right now I'm just
> reducing my inbox so a single google search is as much as I can do),
> but searching for "freeipa django" indicates that there are
> "connectors" for Django and FreeIPA. The nicest option would be a
> plugin for Django's socialauth application.
>
> If that doesn't seem to exist, perhaps you can just add a FreeIPA
> application to the Django configuration. You would need to add it to
> both Postorius and HyperKitty configurations.
Here is a list of all the providers Django-allauth(and hence us) support[1].
You can definitely add more providers and if Django-allauth isn't ready
to merge that, you could create a completely separate python package
that providers that functionality.
If you need examples, here is a custom provider we have in our source
code to authenticate using Fedora's auth management system[2].
[1]: https://django-allauth.readthedocs.io/en/latest/providers.html
[2]: https://gitlab.com/mailman/django-mailman3/tree/master/django_mailman3/lib/…
>
> Steve
>
>
> --
> Associate Professor Division of Policy and Planning Science
> http://turnbull.sk.tsukuba.ac.jp/ Faculty of Systems and Information
> Email: turnbull(a)sk.tsukuba.ac.jp University of Tsukuba
> Tel: 029-853-5175 Tennodai 1-1-1, Tsukuba 305-8573 JAPAN
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
--
thanks,
Abhilash Raj (maxking)
6 years, 8 months
Hacking attempts?
by Lists
Hi,
We are seeing thousands of these emails every day, looks like someone is trying to hack our Mailman3 but would appreciate someone with more knowledge of MM3 to confirm.
Is this a problem with our setup? i.e. the “Internal Server Error” bit, or are the hackers just sending bad data that is causing the error? also how do we stop/block this?
TIA and here is a typical email:
Subject: [Django] ERROR (EXTERNAL IP): Internal Server Error: /mailman3/accounts/fedora/login/
Internal Server Error: /mailman3/accounts/fedora/login/
TypeError at /accounts/fedora/login/
_openid_consumer() missing 2 required positional arguments: 'provider' and 'endpoint'
Request Method: GET
Request URL: https://mailman.ardc.net/mailman3/accounts/fedora/login/?process=login&next… <https://mailman.ardc.net/mailman3/accounts/fedora/login/?process=login&next…>
Django Version: 2.2.26
Python Executable: /usr/bin/uwsgi-core
Python Version: 3.9.2
Python Path: ['.', '', '/usr/lib/python39.zip', '/usr/lib/python3.9', '/usr/lib/python3.9/lib-dynload', '/usr/local/lib/python3.9/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.9/dist-packages']
Server time: Thu, 14 Jul 2022 02:34:04 -0400
Installed Applications:
('hyperkitty',
'postorius',
'django_mailman3',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'django_gravatar',
'compressor',
'haystack',
'django_extensions',
'django_q',
'allauth',
'allauth.account',
'allauth.socialaccount',
'django_mailman3.lib.auth.fedora')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django_mailman3.middleware.TimezoneMiddleware',
'postorius.middleware.PostoriusMiddleware')
Traceback:
File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py" in inner
34. response = get_response(request)
File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response
115. response = self.process_exception_by_middleware(e, request)
File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response
113. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python3/dist-packages/django/views/generic/base.py" in view
71. return self.dispatch(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/django/views/generic/base.py" in dispatch
97. return handler(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/django_mailman3/lib/auth/fedora/views.py" in get
56. return self.post(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/django_mailman3/lib/auth/fedora/views.py" in post
67. client = _openid_consumer(request)
Exception Type: TypeError at /accounts/fedora/login/
Exception Value: _openid_consumer() missing 2 required positional arguments: 'provider' and 'endpoint'
Request information:
USER: AnonymousUser
GET:
process = 'login'
next = '/mailman3/hyperkitty/list/44net(a)mailman.ampr.org <mailto:mailman3/hyperkitty/list/44net@mailman.ampr.org>/message/O5Z2YZBJZXFPH2ACAORN6BST7B2S3M3P/'
POST: No POST data
FILES: No FILES data
COOKIES: No cookie data
META:
CONTEXT_DOCUMENT_ROOT = '/var/www/html'
CONTEXT_PREFIX = ''
DOCUMENT_ROOT = '/var/www/html'
GATEWAY_INTERFACE = 'CGI/1.1'
HTTPS = 'on'
HTTP_ACCEPT = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
HTTP_ACCEPT_ENCODING = 'gzip,deflate'
HTTP_CONNECTION = 'Keep-Alive'
HTTP_HOST = 'mailman.ardc.net <http://mailman.ardc.net/>'
HTTP_USER_AGENT = 'Mozilla/5.0 (compatible; BLEXBot/1.0; +http://webmeup-crawler.com/ <http://webmeup-crawler.com/>)'
PATH = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
PATH_INFO = '/accounts/fedora/login/'
QUERY_STRING = 'process=login&next=/mailman3/hyperkitty/list/44net(a)mailman.ampr.org <mailto:process=login&next=/mailman3/hyperkitty/list/44net@mailman.ampr.org>/message/O5Z2YZBJZXFPH2ACAORN6BST7B2S3M3P/'
REMOTE_ADDR = '157.90.177.212'
REMOTE_PORT = '63384'
REQUEST_METHOD = 'GET'
REQUEST_SCHEME = 'https'
REQUEST_URI = '/mailman3/accounts/fedora/login/?process=login&next=/mailman3/hyperkitty/list/44net(a)mailman.ampr.org <mailto:mailman3/accounts/fedora/login/?process=login&next=/mailman3/hyperkitty/list/44net@mailman.ampr.org>/message/O5Z2YZBJZXFPH2ACAORN6BST7B2S3M3P/'
SCRIPT_FILENAME = 'proxy:uwsgi://localhost//accounts/fedora/login/' <uwsgi://localhost//accounts/fedora/login/'>
SCRIPT_NAME = '/mailman3'
SERVER_ADDR = '44.1.1.29'
SERVER_ADMIN = 'postmaster(a)ardc.net <mailto:postmaster@ardc.net>'
SERVER_NAME = 'mailman.ardc.net <http://mailman.ardc.net/>'
SERVER_PORT = '443'
SERVER_PROTOCOL = 'HTTP/1.1'
SERVER_SIGNATURE = '<address>Apache/2.4.53 (Debian) Server at mailman.ardc.net <http://mailman.ardc.net/> Port 443</address>\n'
SERVER_SOFTWARE = 'Apache/2.4.53 (Debian)'
SSL_TLS_SNI = 'mailman.ardc.net <http://mailman.ardc.net/>'
uwsgi.core = 1
uwsgi.node = b'mailman'
uwsgi.version = b'2.0.19.1-debian'
wsgi.errors = <_io.TextIOWrapper name=2 mode='w' encoding='UTF-8'>
wsgi.file_wrapper = ''
wsgi.input = <uwsgi._Input object at 0x7f8e0b4a0410>
wsgi.multiprocess = False
wsgi.multithread = True
wsgi.run_once = False
wsgi.url_scheme = 'https'
wsgi.version = '(1, 0)'
Settings:
Using settings module settings
ABSOLUTE_URL_OVERRIDES = {}
ACCOUNT_AUTHENTICATION_METHOD = 'username_email'
ACCOUNT_DEFAULT_HTTP_PROTOCOL = 'https'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
ACCOUNT_UNIQUE_EMAIL = True
ADMINS = "(('Mailman Suite Admin', 'postmaster(a)ardc.net <mailto:postmaster@ardc.net>'),)"
ALLOWED_HOSTS = ['*']
APPEND_SLASH = True
AUTHENTICATION_BACKENDS = "('django.contrib.auth.backends.ModelBackend', 'allauth.account.auth_backends.AuthenticationBackend')"
AUTH_PASSWORD_VALIDATORS = '********************'
AUTH_USER_MODEL = 'auth.User'
BASE_DIR = '/usr/share/mailman3-web'
CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
CACHE_MIDDLEWARE_ALIAS = 'default'
CACHE_MIDDLEWARE_KEY_PREFIX = '********************'
CACHE_MIDDLEWARE_SECONDS = 600
COMPRESSORS = {'css': 'compressor.css.CssCompressor', 'js': 'compressor.js.JsCompressor'}
COMPRESS_CACHEABLE_PRECOMPILERS = '()'
COMPRESS_CACHE_BACKEND = 'default'
COMPRESS_CACHE_KEY_FUNCTION = '********************'
COMPRESS_CLEAN_CSS_ARGUMENTS = ''
COMPRESS_CLEAN_CSS_BINARY = 'cleancss'
COMPRESS_CLOSURE_COMPILER_ARGUMENTS = ''
COMPRESS_CLOSURE_COMPILER_BINARY = 'java -jar compiler.jar'
COMPRESS_CSS_HASHING_METHOD = 'mtime'
COMPRESS_DATA_URI_MAX_SIZE = 1024
COMPRESS_DEBUG_TOGGLE = None
COMPRESS_ENABLED = True
COMPRESS_FILTERS = {'css': ['compressor.filters.css_default.CssAbsoluteFilter'], 'js': ['compressor.filters.jsmin.JSMinFilter']}
COMPRESS_JINJA2_GET_ENVIRONMENT = <function CompressorConf.JINJA2_GET_ENVIRONMENT at 0x7f8e17d7a670>
COMPRESS_MINT_DELAY = 30
COMPRESS_MTIME_DELAY = 10
COMPRESS_OFFLINE = True
COMPRESS_OFFLINE_CONTEXT = {'STATIC_URL': '/mailman3/static/'}
COMPRESS_OFFLINE_MANIFEST = 'manifest.json'
COMPRESS_OFFLINE_TIMEOUT = 31536000
COMPRESS_OUTPUT_DIR = 'CACHE'
COMPRESS_PARSER = 'compressor.parser.AutoSelectParser'
COMPRESS_PRECOMPILERS = '()'
COMPRESS_REBUILD_TIMEOUT = 2592000
COMPRESS_ROOT = '/var/lib/mailman3/web/static'
COMPRESS_STORAGE = 'compressor.storage.CompressorFileStorage'
COMPRESS_TEMPLATE_FILTER_CONTEXT = {'STATIC_URL': '/mailman3/static/'}
COMPRESS_URL = '/mailman3/static/'
COMPRESS_URL_PLACEHOLDER = '/__compressor_url_placeholder__/'
COMPRESS_VERBOSE = False
COMPRESS_YUGLIFY_BINARY = 'yuglify'
COMPRESS_YUGLIFY_CSS_ARGUMENTS = '--terminal'
COMPRESS_YUGLIFY_JS_ARGUMENTS = '--terminal'
COMPRESS_YUI_BINARY = 'java -jar yuicompressor.jar'
COMPRESS_YUI_CSS_ARGUMENTS = ''
COMPRESS_YUI_JS_ARGUMENTS = ''
CSRF_COOKIE_AGE = 31449600
CSRF_COOKIE_DOMAIN = None
CSRF_COOKIE_HTTPONLY = False
CSRF_COOKIE_NAME = 'csrftoken'
CSRF_COOKIE_PATH = '/'
CSRF_COOKIE_SAMESITE = 'Lax'
CSRF_COOKIE_SECURE = False
CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure'
CSRF_HEADER_NAME = 'HTTP_X_CSRFTOKEN'
CSRF_TRUSTED_ORIGINS = []
CSRF_USE_SESSIONS = False
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', 'NAME': 'mailman', 'USER': 'mailman', 'PASSWORD': '********************', 'HOST': ‘X.X.X.X', 'PORT': '', 'OPTIONS': {'init_command': "SET sql_mode='STRICT_TRANS_TABLES'", 'charset': 'utf8mb4'}, 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'TIME_ZONE': None, 'TEST': {'CHARSET': None, 'COLLATION': None, 'NAME': None, 'MIRROR': None}}}
DATABASE_ROUTERS = []
DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440
DATA_UPLOAD_MAX_NUMBER_FIELDS = 1000
DATETIME_FORMAT = 'N j, Y, P'
DATETIME_INPUT_FORMATS = ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y']
DATE_FORMAT = 'N j, Y'
DATE_INPUT_FORMATS = ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y']
DEBUG = False
DEBUG_PROPAGATE_EXCEPTIONS = False
DECIMAL_SEPARATOR = '.'
DEFAULT_CHARSET = 'utf-8'
DEFAULT_CONTENT_TYPE = 'text/html'
DEFAULT_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter'
DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
DEFAULT_FROM_EMAIL = 'postorius(a)mailman.ardc.net <mailto:postorius@mailman.ardc.net>'
DEFAULT_INDEX_TABLESPACE = ''
DEFAULT_TABLESPACE = ''
DISALLOWED_USER_AGENTS = []
EMAILNAME = 'mailman.ardc.net <http://mailman.ardc.net/>'
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_HOST_PASSWORD = '********************'
EMAIL_HOST_USER = ''
EMAIL_PORT = 25
EMAIL_SSL_CERTFILE = None
EMAIL_SSL_KEYFILE = '********************'
EMAIL_SUBJECT_PREFIX = '[Django] '
EMAIL_TIMEOUT = None
EMAIL_USE_LOCALTIME = False
EMAIL_USE_SSL = False
EMAIL_USE_TLS = False
FILE_CHARSET = 'utf-8'
FILE_UPLOAD_DIRECTORY_PERMISSIONS = None
FILE_UPLOAD_HANDLERS = ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler']
FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440
FILE_UPLOAD_PERMISSIONS = None
FILE_UPLOAD_TEMP_DIR = None
FILTER_VHOST = False
FIRST_DAY_OF_WEEK = 0
FIXTURE_DIRS = []
FORCE_SCRIPT_NAME = None
FORMAT_MODULE_PATH = None
FORM_RENDERER = 'django.forms.renderers.DjangoTemplates'
HAYSTACK_CONNECTIONS = {'default': {'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine', 'PATH': '/var/lib/mailman3/web/fulltext_index'}}
HOSTNAME = 'localhost.local'
IGNORABLE_404_URLS = []
INSTALLED_APPS = "('hyperkitty', 'postorius', 'django_mailman3', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'django_gravatar', 'compressor', 'haystack', 'django_extensions', 'django_q', 'allauth', 'allauth.account', 'allauth.socialaccount', 'django_mailman3.lib.auth.fedora')"
INTERNAL_IPS = []
LANGUAGES = [('af', 'Afrikaans'), ('ar', 'Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('dsb', 'Lower Sorbian'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper Sorbian'), ('hu', 'Hungarian'), ('hy', 'Armenian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kab', 'Kabyle'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmål'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('vi', 'Vietnamese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese')]
LANGUAGES_BIDI = ['he', 'ar', 'fa', 'ur']
LANGUAGE_CODE = 'en-us'
LANGUAGE_COOKIE_AGE = None
LANGUAGE_COOKIE_DOMAIN = None
LANGUAGE_COOKIE_NAME = 'django_language'
LANGUAGE_COOKIE_PATH = '/'
LOCALE_PATHS = []
LOGGING = {'version': 1, 'disable_existing_loggers': False, 'filters': {'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}}, 'handlers': {'mail_admins': {'level': 'ERROR', 'filters': ['require_debug_false'], 'class': 'django.utils.log.AdminEmailHandler'}, 'file': {'level': 'INFO', 'class': 'logging.handlers.RotatingFileHandler', 'filename': '/var/log/mailman3/web/mailman-web.log', 'formatter': 'verbose'}, 'console': {'class': 'logging.StreamHandler', 'formatter': 'simple'}}, 'loggers': {'django.request': {'handlers': ['mail_admins', 'file'], 'level': 'INFO', 'propagate': True}, 'django': {'handlers': ['file'], 'level': 'INFO', 'propagate': True}, 'hyperkitty': {'handlers': ['file'], 'level': 'INFO', 'propagate': True}, 'postorius': {'handlers': ['file'], 'level': 'INFO', 'propagate': True}}, 'formatters': {'verbose': {'format': '%(levelname)s %(asctime)s %(process)d %(name)s %(message)s'}, 'simple': {'format': '%(levelname)s %(message)s'}}}
LOGGING_CONFIG = 'logging.config.dictConfig'
LOGIN_REDIRECT_URL = 'list_index'
LOGIN_URL = 'account_login'
LOGOUT_REDIRECT_URL = None
LOGOUT_URL = 'account_logout'
MAILMAN_ARCHIVER_FROM = "('127.0.0.1', '::1', '10.4.16.129', '44.1.1.29')"
MAILMAN_ARCHIVER_KEY = '********************'
MAILMAN_REST_API_PASS = '********************'
MAILMAN_REST_API_URL = '********************'
MAILMAN_REST_API_USER = '********************'
MANAGERS = []
MEDIA_ROOT = ''
MEDIA_URL = ''
MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
MESSAGE_TAGS = {40: 'danger'}
MIDDLEWARE = "('django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', 'django_mailman3.middleware.TimezoneMiddleware', 'postorius.middleware.PostoriusMiddleware')"
MIGRATION_MODULES = {}
MONTH_DAY_FORMAT = 'F j'
NUMBER_GROUPING = 0
PASSWORD_HASHERS = '********************'
PASSWORD_RESET_TIMEOUT_DAYS = '********************'
POSTORIUS_TEMPLATE_BASE_URL = 'http://localhost/mailman3/ <http://localhost/mailman3/>'
PREPEND_WWW = False
Q_CLUSTER = {'timeout': 300, 'save_limit': 100, 'orm': 'default', 'poll': 5}
ROOT_URLCONF = 'urls'
SECRET_KEY = '********************'
SECURE_BROWSER_XSS_FILTER = False
SECURE_CONTENT_TYPE_NOSNIFF = False
SECURE_HSTS_INCLUDE_SUBDOMAINS = False
SECURE_HSTS_PRELOAD = False
SECURE_HSTS_SECONDS = 0
SECURE_PROXY_SSL_HEADER = None
SECURE_REDIRECT_EXEMPT = []
SECURE_SSL_HOST = None
SECURE_SSL_REDIRECT = False
SERVER_EMAIL = 'root(a)mailman.ardc.net <mailto:root@mailman.ardc.net>'
SESSION_CACHE_ALIAS = 'default'
SESSION_COOKIE_AGE = 1209600
SESSION_COOKIE_DOMAIN = None
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_NAME = 'sessionid'
SESSION_COOKIE_PATH = '/'
SESSION_COOKIE_SAMESITE = 'Lax'
SESSION_COOKIE_SECURE = False
SESSION_ENGINE = 'django.contrib.sessions.backends.db'
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
SESSION_FILE_PATH = None
SESSION_SAVE_EVERY_REQUEST = False
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'
SETTINGS_MODULE = 'settings'
SHORT_DATETIME_FORMAT = 'm/d/Y P'
SHORT_DATE_FORMAT = 'm/d/Y'
SIGNING_BACKEND = 'django.core.signing.TimestampSigner'
SILENCED_SYSTEM_CHECKS = []
SITE_ID = 1
SOCIALACCOUNT_PROVIDERS = {}
STATICFILES_DIRS = '()'
STATICFILES_FINDERS = "('django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', 'compressor.finders.CompressorFinder')"
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
STATIC_ROOT = '/var/lib/mailman3/web/static'
STATIC_URL = '/mailman3/static/'
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.i18n', 'django.template.context_processors.media', 'django.template.context_processors.static', 'django.template.context_processors.tz', 'django.template.context_processors.csrf', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'django_mailman3.context_processors.common', 'hyperkitty.context_processors.common', 'postorius.context_processors.postorius']}}]
TEST_NON_SERIALIZED_APPS = []
TEST_RUNNER = 'django.test.runner.DiscoverRunner'
THOUSAND_SEPARATOR = ','
TIME_FORMAT = 'P'
TIME_INPUT_FORMATS = ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_THOUSAND_SEPARATOR = False
USE_TZ = True
USE_X_FORWARDED_HOST = True
USE_X_FORWARDED_PORT = False
WSGI_APPLICATION = 'wsgi.application'
X_FRAME_OPTIONS = 'SAMEORIGIN'
YEAR_MONTH_FORMAT = 'F Y’
3 years, 4 months
confirm-email: error NoReverseMatc
by Peter Münster
Hi,
When confirming the email address after sign-up, I get this error:
--8<---------------cut here---------------start------------->8---
ERROR 2018-01-31 09:31:57,143 28537 django.request Internal Server Error: /accounts/confirm-email/Ng:1egno5:_T5eipR8TTan-zWjLK8EhYuetjQ/
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py", line 132, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python2.7/site-packages/django/views/generic/base.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "/usr/lib/python2.7/site-packages/django/views/generic/base.py", line 89, in dispatch
return handler(request, *args, **kwargs)
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/account/views.py", line 283, in post
resp = self.login_on_confirm(confirmation)
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/account/views.py", line 332, in login_on_confirm
redirect_url=self.get_redirect_url)
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/account/utils.py", line 157, in perform_login
get_login_redirect_url(request, redirect_url))
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/account/utils.py", line 50, in get_login_redirect_url
url = url()
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/account/views.py", line 362, in get_redirect_url
self.request)
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/account/adapter.py", line 176, in get_email_confirmation_redirect_url
return self.get_login_redirect_url(request)
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/account/adapter.py", line 156, in get_login_redirect_url
return resolve_url(url)
File "/usr/lib/python2.7/site-packages/django/shortcuts.py", line 205, in resolve_url
return urlresolvers.reverse(to, args=args, kwargs=kwargs)
File "/usr/lib/python2.7/site-packages/django/core/urlresolvers.py", line 579, in reverse
return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)))
File "/usr/lib/python2.7/site-packages/django/core/urlresolvers.py", line 496, in _reverse_with_prefix
(lookup_view_s, args, kwargs, len(patterns), patterns))
NoReverseMatch: Reverse for '' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
ERROR 2018-01-31 09:31:57,143 28537 django.request Internal Server Error: /accounts/confirm-email/Ng:1egno5:_T5eipR8TTan-zWjLK8EhYuetjQ/
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py", line 132, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python2.7/site-packages/django/views/generic/base.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "/usr/lib/python2.7/site-packages/django/views/generic/base.py", line 89, in dispatch
return handler(request, *args, **kwargs)
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/account/views.py", line 283, in post
resp = self.login_on_confirm(confirmation)
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/account/views.py", line 332, in login_on_confirm
redirect_url=self.get_redirect_url)
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/account/utils.py", line 157, in perform_login
get_login_redirect_url(request, redirect_url))
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/account/utils.py", line 50, in get_login_redirect_url
url = url()
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/account/views.py", line 362, in get_redirect_url
self.request)
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/account/adapter.py", line 176, in get_email_confirmation_redirect_url
return self.get_login_redirect_url(request)
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/account/adapter.py", line 156, in get_login_redirect_url
return resolve_url(url)
File "/usr/lib/python2.7/site-packages/django/shortcuts.py", line 205, in resolve_url
return urlresolvers.reverse(to, args=args, kwargs=kwargs)
File "/usr/lib/python2.7/site-packages/django/core/urlresolvers.py", line 579, in reverse
return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)))
File "/usr/lib/python2.7/site-packages/django/core/urlresolvers.py", line 496, in _reverse_with_prefix
(lookup_view_s, args, kwargs, len(patterns), patterns))
NoReverseMatch: Reverse for '' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
--8<---------------cut here---------------end--------------->8---
What could be the reason, and how could I solve this issue please?
Since it's perhaps related, here is my urls.py:
--8<---------------cut here---------------start------------->8---
from django.conf.urls import include, url
from django.contrib import admin
from postorius.views.list import list_index
urlpatterns = [
url(r'^postorius/', include('postorius.urls')),
url(r'^archives/', include('hyperkitty.urls')),
url(r'', include('django_mailman3.urls')),
url(r'^accounts/', include('allauth.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^$', list_index, name='list_index'),
]
--8<---------------cut here---------------end--------------->8---
TIA for any help,
--
Peter
7 years, 10 months
Re: Internal server error instead of web interface
by Andreas Vetter
Hi,
sounds like an apache config problem.
You might show your apache config and apache error log.
Regards,
Andreas
On Mittwoch, 5. November 2025 11:44:32 CET Christian H. Kuhn via Mailman-users
wrote:
> Hi all,
>
> https://lists.qno.de/mailman3 shows an internal server error.
>
> I followed https://docs.mailman3.org/en/latest/install/virtualenv.html
> with MariaDB instead of PostgreSQL.
>
> Python 3.13.0
> pip 25.3
> mailman 3.3.11b
> mailman-web 0.0.10.dev14?g0997bd
> postorius 1.3.13
>
> Services mailman3, mailmanweb, apache2, uwsgi up and running. uwsgi
> listens on [::1]:8000, apache2 is configured accordingly. Ports show up
> in netstat.
>
> No errors show in logs.
>
> If /mailman3 was a directory, i would have thought of user permission
> problems. But not with TCP ports.
>
> As :8000 is available, i would have thought that there is a problem with
> uwsgi. Requests arrive there and are processed:
>
> [pid: 3185672|app: 0|req: 10/17] ::1 () {28 vars in 409 bytes} [Mon Nov
> 3 13:24:05 2025] GET /mailman3/ => generated 5038 bytes in 28 msecs
> (HTTP/1.0 200) 8 headers in 261 bytes (1 switches on core 0)
>
> So uwsgi gets the request and delivers data. The problem seems that
> apache2 does not get the result, and i cannot find any reason. Any help?
>
> TIA
> QNo
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message
> /4R6RER25GZLZW7XNWCXYFTGKUW5STBNH/
>
> This message sent to andreas.vetter(a)uni-wuerzburg.de
--
Mit freundlichen Gruessen,
Andreas Vetter
Stellv. IT-Bereichsmanager Fakultaet fuer Physik und Astronomie
Tel.: +49 (0)931 31-82264
Informations- und Kommunikationstechnik
Tel: +49 (0)931 31-85890
Ticketsystem:
physik-it(a)uni-wuerzburg.de
4 weeks, 1 day
Re: Hyperkitty
by Stephen J. Turnbull
Mark Labeste writes:
> Thanks for your reply. I was abled point to the mailman.cfg path
> appeared in mailman info. Below is the result of mailman conf. But
> archive is still now showing on web browser.
Sorry, can't help you without more information. Is your archive
visible from the Internet?
What do you mean by "archive is not showing"? Do you get an error
indication (like HTTP 404 error "no such page")? Do you get the
archive page but you expect to see email there and there isn't any?
If something else, what?
I assume you installed Mailman from a distribution. Which one?
What does "mailman info" report? If that doesn't work, you'll have to
find the installed Mailman hierarchy, probably /var/lib/mailman3 or
/usr/lib/mailman3, and run "bin/mailman info" from there.
What are the contents of these files:
mailman.cfg (probably in /etc/mailman3/mailman.cfg)
settings.py (there are a lot of these with different purposes, with
luck you'll find the right one in
/etc/mailman3/settings.py or possibly in
var/etc/settings.py under the Mailman hierarchy)
urls.py (may be in /etc/mailman3/urls.py, or next to settings.py)
This list strips most attachments. However it should be possible to
attach these files as long as the Content-Type is text/plain. If
you're not sure what the Content-Type your email program applies, you
can include them in the message body at the end.
The following version information may be useful later, but it's not
urgent. What versions of the following packages are installed:
mailman3 (possibly just mailman)
postorius
hyperkitty
gunicorn
mailman-web
mailmanclient
django_mailman (possibly django-mailman)
django (or Django)
(all of the above may be prefixed with something that indicates that
they are Python programs)
apache (possibly apache2 or apache24) or possibly nginx
uwsgi (may not be in use)
Steve
2 years, 2 months
Re: Hyperkitty 403 Forbidden Error
by Abhilash Raj
On Wed, Aug 7, 2019, at 8:41 AM, Phil Thompson wrote:
> On 06/08/2019 09:48, Phil Thompson wrote:
> > On 06/08/2019 03:38, Abhilash Raj wrote:
> >> On Mon, Aug 5, 2019, at 10:06 AM, Phil Thompson wrote:
> >>> I'm in the process of setting up mailman3. The only problem I seem to
> >>> be
> >>> having is getting Hyperkitty to archive messages. Rather than the
> >>> authorisation problems people have previously asked about on the
> >>> list, I
> >>> am getting a 403 error...
> >>>
> >>> Aug 05 15:38:40 2019 (10229) HyperKitty failure on
> >>> http://localhost/mailman3/hyperkitty/api/mailman/urls:
> >>> <html><title>Forbidden</title><body>
> >>> <h1>Access is forbidden</h1></body></html> (403)
> >>> Aug 05 15:38:58 2019 (10222) HyperKitty failure on
> >>> http://localhost/mailman3/hyperkitty/api/mailman/archive:
> >>> <html><title>Forbidden</title><body>
> >>> <h1>Access is forbidden</h1></body></html> (403)
> >>>
> >>> Any suggestions would be appreciated.
> >>
> >> How did you install Hyperkitty?
> >
> > On Ubuntu...
> >
> > apt-get install mailman3-full
> >
> >> You probably need to the set the API key correctly in both Core and
> >> Hyperkitty.
> >>
> >> Have you looked at documentation here[1]?
> >>
> >> [1]:
> >> https://hyperkitty.readthedocs.io/en/latest/install.html#connecting-to-mail…
> >>
> >> Note that the MAILMAN_ARCHIVER_KEY = "value" (this value should be in
> >> quotes, single or double, doesn't matter) in your settings.py for Web
> >> (Django) should be same as the `api_key : value` (without quotes here
> >> in hyperkitty.cfg config file).
> >
> > That's all correct. I'm familiar with the authorisation issues that
> > other people have had.
> >
> > The only thing I'm doing differently (as far as I am aware) is that
> > I'm using a URL prefixed with /mailman3 which is stripped off in my
> > nginx configuration...
> >
> > # mailman3.
> > location /mailman3/ {
> > uwsgi_pass unix:/run/mailman3/web/uwsgi.sock;
> > include uwsgi_params;
> > uwsgi_param SERVER_ADDR $server_addr;
> > uwsgi_modifier1 30;
> > uwsgi_param SCRIPT_NAME /mailman3;
> > }
> >
> > location /mailman3/static {
> > alias /var/lib/mailman3/web/static;
> > }
> >
> > location /mailman3/static/favicon.ico {
> > alias /var/lib/mailman3/web/static/postorius/img/favicon.ico;
> > }
> >
> > ...but I don't see this affecting the mailman to Hyperkitty
> > communication. Posting to lists and the Postorius and Hyperkitty
> > frontends seem to work fine.
>
> I have now fixed the 403 error (by setting MAILMAN_ARCHIVER_FROM to my
> public IP address). However I now get a 400 Bad Request error.
>
> I have traced this to the archive() function in
> hyperkitty/views/mailman.py which is expect a POST but is actually
> getting a GET, specifically...
>
> GET '/mailman3/hyperkitty/api/mailman/archive?key=...'
>
> ...which seems to be a fairly fundamental problem.
>
> Again, any suggestions would be welcome.
It should be sending POST request to archive emails[1]. How did you grab the above request? Was it from logs?
Do you have anything else in the logs? There should be something in the Mailman Core or web logs should have something.
[1]: https://gitlab.com/mailman/mailman-hyperkitty/blob/master/mailman_hyperkitt…
--
thanks,
Abhilash Raj (maxking)
6 years, 3 months
Re: Unable to get mailman3 working on Ubuntu 20.04 LTS
by Shawn Heisey
On 10/28/2021 5:28 PM, Abhilash Raj wrote:
> The instructions are basically in the issue description, pending move to a documentation page:
>
> https://github.com/maxking/docker-mailman/issues/293
>
> If you are upgrading the latest 0.4.x release from 0.3.x, you also want to look at
>
> https://asynchronous.in/docker-mailman/news/#upgrading-to-040-release
Awesome! Thank you for that info! I just upgraded from 0.4.1 (which
was the tag I used for the initial install) to 0.4.2 and it all looks
good. The lists are still there in the output of this command on the host:
docker exec -u mailman mailman-core mailman lists
After the upgrade, I sent a test message to one of the mailing lists
that looks like it worked perfectly.
I assumed that it would be necessary to update the tags in the
docker-compose.yaml file, and I did so. Should that be added to the
instructions?
One thing that was very non-obvious is how to get the containers to
start at boot time. A command like this, issued three times with the
actual ID values for the containers, took care of it for me:
docker update --restart=unless-stopped 0576df221c0b
If it is possible to have the docker-compose.yaml file set that flag
when it creates the containers, I think that would be a good idea. I
did notice that the postorius and mysql docker-compose configs do set
the database container (but not the mailman containers) to restart
always ... but my limited experience with docker tells me that
unless-stopped is a better option.
> If you can send a PR for the config you set up for Apache in Github, or just an issue, I can include it in the docs :-)
I created an issue and included a sanitized copy of my virtualhost config.
Thanks,
Shawn
4 years, 1 month
Re: mailman 3.x upgrade and downgrade
by Mark Sapiro
On 7/12/22 6:12 AM, skooperit(a)gmail.com wrote:
> Hi all,
>
> I have a few contradictory questions.
>
> 1. How to upgrade the 3.x version?
>
> 2. Is it possible to migrate (downgrade) the lists from mailman 3.x to 2.1?
>
> 3. If so, what would be the best way to do that?
>
>
> My mailing list server is running on a CenOS-7x with postgreSQL and the following mailman packages:
>
> django-mailman3 1.3.5
> mailman 3.3.2
> mailman-hyperkitty 1.1.0
> mailman-web 0.0.3
> mailmanclient 3.3.2
> postorius 1.3.3
>
> We have ~200 lists with more than a decade of history.
So you have installed Mailman 3, apparently following
https://docs.mailman3.org/en/latest/install/virtualenv.html. There is a
caveat. Current released versions of HyperKitty (I don't see your
version above) don't work with mistune >= 2.0.0.
This is https://gitlab.com/mailman/hyperkitty/-/issues/431, fixed by
https://gitlab.com/mailman/hyperkitty/-/merge_requests/379 but not yet
released.
If your installed mistune is not 2.0.0rc1, you can work around this with
this patch
```
--- a/hyperkitty/lib/renderer.py
+++ b/hyperkitty/lib/renderer.py
@@ -4,7 +4,7 @@ from django.conf import settings
import mistune
from mistune.plugins.extra import plugin_url
-from mistune.scanner import escape_html, escape_url
+from mistune.util import escape_html, escape_url
class MyRenderer(mistune.HTMLRenderer):
```
Or you can downgrade mistune with
```
pip install mistune==2.0.0rc1
```
in your virtualenv.
To answer your questions, to migrate your lists, you use `mailman
import21` and to migrate archives, `mailman-web hyperkitty_import`. Give
these commands with the `--help` option for more info.
Downgrading lists from Mailman 3 to Mailman 2.1 is not currently
possible. There is no inverse to `mailman import21`. You can export a
HyperKitty archive as a mbox to use as input to Mailman 2.1s bin/arch.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
3 years, 4 months
Re: [Mailman-Developers] Mailman 3.1 beta coming soon
by Florian Fuchs
On Sat, Dec 03, 2016 at 17:25:24PM -0800, Terri Oda wrote:
>On 2016-12-03 12:22 PM, Florian Fuchs wrote:
>>I did some manual integration testing today
>>(core+mailmanclient+postorius) which looked fine so far. I didn't get
>>to test HyperKitty and the bundler though, so any help testing those
>>would be very much appreciated. I will have some more time tomorrow.
>
>I tried to do some testing based on these wiki instructions last weekend
>https://wiki.list.org/HyperKitty/DevelopmentSetupGuide
>
>and hit a "[Errno 61] Connection refused" issue when attempting to log
>in to Postorius. I suspect it might be an issue with the mac, since
>googling for the error (it's a django one) seems to find a lot of
>people on macs with problems, but I didn't manage to narrow it down
>more than that to make a useful bug report.
Do you have a traceback somewhere? If you're logging in for the first
time, it *might* have to do with allauth trying to verify your email
address by sending you an confirmation email (which probably fails if
you don't have smtp set up on your mac).
If that's the case, we should probably try to catch this condition and
display a useful error message instead of just letting it break.
Cheers
Florian
>I did set up a new linux install on another machine to work on next,
>though, so I may have something else to say on that front tomorrow.
>
> Terri
>
>
>_______________________________________________
>Mailman-Developers mailing list
>Mailman-Developers(a)python.org
>https://mail.python.org/mailman/listinfo/mailman-developers
>Mailman FAQ: http://wiki.list.org/x/AgA3
>Searchable Archives: http://www.mail-archive.com/mailman-developers%40python.org/
>Unsubscribe: https://mail.python.org/mailman/options/mailman-developers/f%40florianfuchs…
>
>Security Policy: http://wiki.list.org/x/QIA9
8 years, 11 months