Re: A new issue with installation
by Abhilash Raj
On Sat, Feb 20, 2021, at 9:28 AM, Abhilash Raj wrote:
>
>
> On Sat, Feb 20, 2021, at 8:51 AM, Brian Carpenter wrote:
> > As usual, a new issue has arisen with installing Mailman 3. It seems
> > Postorius and Hyperkitty want to install a module called cryptography.
> > Which I am unable to install because of this:
> >
> > error: Can not find Rust compiler
>
> You need to install a Rust compiler. Depending on which distro you are
> using, you can run `sudo apt install rustc` or same command with `yum`.
Also, it is possible depending on your distro that packaged Rust compiler
is too old. cryptography requires a more recent version of Compiler, 1.45
is the min supported version I think.
FAQ: https://cryptography.io/en/latest/faq.html#installing-cryptography-fails-wi…
You can skip the Rust components by setting `CRYPTOGRAPHY_DONT_BUILD_RUST`
but that would work just for this release and you won't be able to
skip from the next release of cryptography.
>
> >
> > Question 1: Is cryptography a new addition to Hyperkitty/Postorius? Or
> > was cryptography always included and something else is different about
> > my installation process?
>
> It was always included. The recent change has been in the underlying
> security library to use Rust language in some parts of it. That has resulting
> in 100s and 1000s of applications/CI and other stuff failing. The fix is quite
> simple in most cases, just install rust compiler.
>
> >
> > "Building wheels for collected packages: hyperkitty, django-haystack,
> > django-mailman3, mailmanclient, robot-detection, rcssmin,
> > django-allauth, cryptography"
> >
> > Question 2: Will Hyperkitty/Postorius work without cryptography? I
> > haven't proceed with this installation once I received the above error.
>
> It is a transitive dependency for P/HK and is required by django-allauth.
> I don't think you can skip it.
>
> >
> > Question 3: Are there any Mailman 3/Postorius/HK documentation that
> > addresses with the installation of cryptography?
>
> Since this issue arose about 2 weeks ago, there isn't anything there yet.
>
> >
> >
> >
> > --
> > Brian Carpenter
> > Harmonylists.com
> > Emwd.com
> > _______________________________________________
> > 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)
--
thanks,
Abhilash Raj (maxking)
5 years, 8 months
Guidance Request: Migrating Existing Mailman 3 Installation to Docker-Based Deployment
by Prasanth Nair
Hi all,
I am currently running a Mailman 3 setup on a standalone server and
planning to migrate it to a Docker-based deployment using the official
Docker Mailman images. I would appreciate your guidance on the recommended
approach for this migration.
*Current (existing) setup:*
- Mailman Core: 3.3.5
- Postorius: 1.3.6
- HyperKitty: 1.3.5
- PostgreSQL: 12.22 (Ubuntu)
- Host-based installation (non-Docker)
- Postfix used as the MTA
- Active mailing lists with members and archives
- Apache reverse proxy in front
*Target (new) setup:*
- Docker-based Mailman 3 (mailman-core, mailman-web, PostgreSQL
containers)
- Based on the official Docker Mailman repository
- Postfix as the MTA
- Apache reverse proxy in front
I would like to migrate the following components safely:
- Mailing lists and their configurations
- Subscribers and roles
- HyperKitty archives
- Postorius/web data (users, preferences, etc.)
I have a few specific questions:
1. What is the recommended migration approach from a host-based Mailman
3 installation to the Docker-based setup?
2. Is it safe to directly restore the PostgreSQL databases into the
Docker environment, or is there a preferred migration method?
3. Are there any version compatibility considerations when migrating
from Mailman Core 3.3.5 / Postorius 1.3.6 / HyperKitty 1.3.5 to the
versions used in the current Docker images?
4. How to migrate archives?
5. The official Docker Compose file references `postgres:12-alpine`. Is
it recommended to stay on PostgreSQL 12 for compatibility, or is it
supported to use a newer PostgreSQL version (for example, PostgreSQL 18)
with the Docker Mailman setup?
6. Are there any common pitfalls or best practices you would recommend
for ensuring a smooth migration?
Any guidance or documentation you can provide would be greatly appreciated.
Thank you for your time and support.
Kind regards,
Prasanth Nair
7 months
Re: Apache Conf
by Mail Person
Ok, progress with tinkering some. Using the below configuration I can manually navigate to lists.example.com/mailman3/postorius/lists/ and all is working fine. If I go to lists.example.com/mailman3 it for some reason redirects to lists.example.com/mailman/postorius/lists/ which generates a 404. Going to lists.example.com also hits a 404.
So closer, but not perfect. Any ideas?
The current, sort of working config:
<VirtualHost *:80>
ServerAdmin admin(a)example.com
ServerName lists.example.com
ServerAlias www.lists.example.com
Alias /mailman3/favicon.ico /var/lib/mailman3/web/static/postorius/img/favicon.ico
Alias /mailman3/static /var/lib/mailman3/web/static
<Directory "/var/lib/mailman3/web/static">
Require all granted
</Directory>
<IfModule mod_proxy_uwsgi.c>
ProxyPass /mailman3/favicon.ico !
ProxyPass /mailman3/static !
ProxyPass /mailman3 unix:/run/mailman3-web/uwsgi.sock|uwsgi://localhost
</IfModule>
RewriteEngine on
RewriteCond %{SERVER_NAME} =lists.example.com [OR]
RewriteCond %{SERVER_NAME} =www.lists.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
4 years, 3 months
Re: Postorius claims 2 messages held when there are none - out of sync
by Mark Sapiro
On 6/26/23 4:19 PM, Ken Alker wrote:
>
> What else is stored in /var/messages, if not archives? I see 4711
> messages in that directory (which I presume would be as many messages
> are in the archive database). If there is a write-up on this, feel free
> to point me to it. I found
> <https://docs.mailman3.org/projects/mailman/en/latest/build/lib/mailman/mode…> but this isn't really answering my question.
These are probably artifacts from your old Debian package. There have
been issues in the past with handled messages not being removed from the
message store. See https://gitlab.com/mailman/mailman/-/issues/257
This was fixed in 3.3.5 and the task runner implemented in 3.3.5 removes
orphaned messages from the message store, but if they are still
referenced in pendings they won't be deleted.
> I didn't think so, but I'll certainly buy that. So, I'm assuming by
> this you are implying that there is no helper function that needed to
> run and the number of held messages should have dropped to zero
> immediately upon a refresh of the web page?
Correct, assuming your changes were committed.
> So if I run the script, exist the shell, then come back in again, I
> can't rely on the request.id being the same? I'd need to re-run the
> script and get a new request.id?
No. The request id for a given held message won't change.
--
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: More Mailman releases!
by Wikinaut
before upgrade (half-way upgrade works → thus: Postorius Version 1.3.10 ; GNU Mailman 3.3.9 (Tom Sawyer) works; the problem pops up when upgrading hyperkitty/mailman-web):
https://mydomain/mailman3/lists/mylist.mydomain/ => works
https://mydomain/postorius/lists/mylist.mydomain/ => does not work (404 not found)
apache2:
<VirtualHost *:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName mydomain
Alias /static "/opt/mailman/web/static"
<Directory "/opt/mailman/web/static">
Require all granted
</Directory>
<IfModule mod_headers.c>
RequestHeader unset X-Forwarded-Proto
<If "%{HTTPS} =~ /on/">
RequestHeader set X-Forwarded-Proto "https"
</If>
</IfModule>
<IfModule mod_proxy.c>
ProxyPreserveHost On
ProxyPass "/mailman3" "http://127.0.0.1:8000/mailman3"
ProxyPass "/archives" "http://127.0.0.1:8000/archives"
ProxyPass "/accounts" "http://127.0.0.1:8000/accounts"
ProxyPass "/admin" "http://127.0.0.1:8000/admin"
ProxyPass "/user-profile" "http://127.0.0.1:8000/user-profile"
</IfModule>
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/mydomain/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mydomain/privkey.pem
</VirtualHost>
3 years
Re: How to upgrade to 3.10
by Paul Tomblin
On Sat, Mar 7, 2026, at 11:08 PM, Mark Sapiro wrote:
> On 3/7/26 17:14, Paul Tomblin via Mailman-users wrote:
>>
>> I’m not seeing it.
>
> Are you looking at <https://your.domain/mailman3/domains/>
>
> Do you have the latest Postorius from GitLab?
I missed that step at first, but now I've done it, I see no change. It still says version 1.3.13, and the Edit Domain page still just has Description, Alias Domain, and Web Host.
When I was installing it, it said it was this commit:
Resolved https://gitlab.com/mailman/postorius to commit 2c0c3aeb905c82ee4d6724897b89def71c02c1ef
which does appear to be the latest.
Sorry to be taking so much of your time, but I really want to make the footer for my neighborhood association lists as much like the old ones as possible.
--
Paul Tomblin
8 months
AttributeError: 'MailingList' object has no attribute 'get_requests_count'
by Shashikanth Komandoor
Hi Team,
I am currently running Mailman 3 with version 3.3.2rc2 and in
built postfix version 2.10.1-6 on RHEL 7.5 with PostgreSQL 11.9 version
with default values. As of now, we don't have any lists and just installed
software components only.
After the installation and configuration, I have tried
creating the domains and lists. I was successful in creating them but when
I tried to login and browse the lists using LDAP authentication, I am
getting the "Mailman REST API not available. Restart Mailman core".
I see the below trace in the mailmansuite.log.
*Traceback (most recent call last): File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/mailmanclient/restbase/base.py",
line 119, in __getattr__ return self._get(name) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/mailmanclient/restbase/base.py",
line 86, in _get raise KeyError(key)KeyError: 'get_requests_count'During
handling of the above exception, another exception occurred:Traceback (most
recent call last): File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/core/handlers/exception.py",
line 34, in inner response = get_response(request) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/core/handlers/base.py",
line 115, in _get_response response =
self.process_exception_by_middleware(e, request) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/core/handlers/base.py",
line 113, in _get_response response = wrapped_callback(request,
*callback_args, **callback_kwargs) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/views/generic/base.py",
line 71, in view return self.dispatch(request, *args, **kwargs) File
"/var/lib/mailman/postorius/src/postorius/views/generic.py", line 74, in
dispatch return super(MailingListView, self).dispatch(request, *args,
**kwargs) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/views/generic/base.py",
line 97, in dispatch return handler(request, *args, **kwargs) File
"/var/lib/mailman/postorius/src/postorius/views/list.py", line 311, in get
return render(request, 'postorius/lists/summary.html', data) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/shortcuts.py",
line 19, in render content = loader.render_to_string(template_name,
context, request, using=using) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/loader.py",
line 62, in render_to_string return template.render(context, request)
File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/backends/django.py",
line 61, in render return self.template.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 171, in render return self._render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 163, in _render return self.nodelist.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 936, in render bit = node.render_annotated(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 903, in render_annotated return self.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/loader_tags.py",
line 150, in render return compiled_parent._render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 163, in _render return self.nodelist.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 936, in render bit = node.render_annotated(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 903, in render_annotated return self.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/loader_tags.py",
line 62, in render result = block.nodelist.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 936, in render bit = node.render_annotated(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 903, in render_annotated return self.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/library.py",
line 234, in render return t.render(new_context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 173, in render return self._render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 163, in _render return self.nodelist.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 936, in render bit = node.render_annotated(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 903, in render_annotated return self.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/defaulttags.py",
line 309, in render return nodelist.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 936, in render bit = node.render_annotated(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 903, in render_annotated return self.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/defaulttags.py",
line 309, in render return nodelist.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 936, in render bit = node.render_annotated(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 903, in render_annotated return self.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 986, in render output = self.filter_expression.resolve(context)
File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 697, in resolve new_obj = func(obj, *arg_vals) File
"/var/lib/mailman/postorius/src/postorius/templatetags/nav_helpers.py",
line 80, in pending_subscriptions return
mlist.get_requests_count(token_owner='moderator') File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/mailmanclient/restbase/base.py",
line 124, in __getattr__ self.__class__.__name__, name))AttributeError:
'MailingList' object has no attribute 'get_requests_count'ERROR 2020-10-25
19:29:46,101 835 django.server "GET
/postorius/lists/mailteamhyd.dlist.nic.in/
<http://mailteamhyd.dlist.nic.in/> HTTP/1.1" 500 1162*
I don't see any error messages in the mailman.log. And I
also executed a few curl commands in getting the details of the lists
created and list info which I got their results successfully.
Could you please guide where exactly I am missing or do I
need to make any changes in my customizations ?
--
Thanks & Regards,
Shashi Kanth.K
9052671936
<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campai…>
Virus-free.
www.avast.com
<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campai…>
<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
6 years
Re: [Django] ERROR (EXTERNAL IP): Service Unavailable
by dancab@caltech.edu
Thanks Mark. I can't see the held messages view at all for this list.
I don't think there's any sensitive info so I'm posting the entire message I get to the server admin email.
[Django] ERROR (EXTERNAL IP): Service Unavailable: /postorius/lists/cpa-announcement.caltech.edu/held_messages
root(a)mailman3.caltech.edu
Tue 2/23/2021 10:30 AM
Service Unavailable: /postorius/lists/cpa-announcement.caltech.edu/held_messages
Report at /postorius/lists/cpa-announcement.caltech.edu/held_messages
Service Unavailable: /postorius/lists/cpa-announcement.caltech.edu/held_messages
Request Method: GET
Request URL: https://mailman3.caltech.edu/postorius/lists/cpa-announcement.caltech.edu/h…
Django Version: 3.0.10
Python Executable: /opt/mailmanve/bin/python3
Python Version: 3.6.8
Python Path: ['/var/www/mailman-www', '/opt/mailmanve/bin', '/usr/lib64/python36.zip', '/usr/lib64/python3.6', '/usr/lib64/python3.6/lib-dynload', '/opt/mailmanve/lib64/python3.6/site-packages', '/opt/mailmanve/lib/python3.6/site-packages']
Server time: Tue, 23 Feb 2021 18:30:19 +0000
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')
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')
Request information:
USER: dancab
GET: No GET data
POST: No POST data
FILES: No FILES data
COOKIES:
_ga = 'GA1.2.1144367399.1613604556'
csrftoken = 'CtA6fFlrwV2fkDonIRHKdBX3V1lRQJA7UjRxYE2nCGEi6s65mFkkLDe3EEKkxgyo'
sessionid = 'm1dqvcmvcs12dxc8pui8u2wrz5cncam4'
META:
CSRF_COOKIE = 'CtA6fFlrwV2fkDonIRHKdBX3V1lRQJA7UjRxYE2nCGEi6s65mFkkLDe3EEKkxgyo'
HTTP_ACCEPT = 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'
HTTP_ACCEPT_ENCODING = 'gzip, deflate, br'
HTTP_ACCEPT_LANGUAGE = 'en-US,en;q=0.9,es-US;q=0.8,es;q=0.7'
HTTP_CONNECTION = 'Keep-Alive'
HTTP_COOKIE = '_ga=GA1.2.1144367399.1613604556; csrftoken=CtA6fFlrwV2fkDonIRHKdBX3V1lRQJA7UjRxYE2nCGEi6s65mFkkLDe3EEKkxgyo; sessionid=m1dqvcmvcs12dxc8pui8u2wrz5cncam4'
HTTP_HOST = 'mailman3.caltech.edu'
HTTP_PRAGMA = 'akamai-x-cache-on, akamai-x-cache-remote-on, akamai-x-check-cacheable, akamai-x-get-cache-key, akamai-x-get-extracted-values, akamai-x-get-ssl-client-session-id, akamai-x-get-true-cache-key, akamai-x-serial-no, akamai-x-get-request-id,akamai-x-get-nonces,akamai-x-get-client-ip,akamai-x-feo-trace'
HTTP_REFERER = 'https://mailman3.caltech.edu/postorius/lists/cpa-announcement.caltech.edu/'
HTTP_SEC_FETCH_DEST = 'document'
HTTP_SEC_FETCH_MODE = 'navigate'
HTTP_SEC_FETCH_SITE = 'same-origin'
HTTP_SEC_FETCH_USER = '?1'
HTTP_UPGRADE_INSECURE_REQUESTS = '1'
HTTP_USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36'
HTTP_X_FORWARDED_FOR = '131.215.248.132'
HTTP_X_FORWARDED_HOST = 'mailman3.caltech.edu'
HTTP_X_FORWARDED_PORT = '443'
HTTP_X_FORWARDED_PROTO = 'https'
HTTP_X_FORWARDED_SERVER = 'mailman3.caltech.edu'
PATH_INFO = '/postorius/lists/cpa-announcement.caltech.edu/held_messages'
QUERY_STRING = ''
RAW_URI = '/postorius/lists/cpa-announcement.caltech.edu/held_messages'
REMOTE_ADDR = '127.0.0.1'
REMOTE_PORT = '49702'
REQUEST_METHOD = 'GET'
SCRIPT_NAME = ''
SERVER_NAME = '127.0.0.1'
SERVER_PORT = '8000'
SERVER_PROTOCOL = 'HTTP/1.1'
SERVER_SOFTWARE = 'gunicorn/20.0.4'
gunicorn.socket = <socket.socket fd=15, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 8000), raddr=('127.0.0.1', 49702)>
wsgi.errors = <gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x7f31f8c22f60>
wsgi.file_wrapper = ''
wsgi.input = <gunicorn.http.body.Body object at 0x7f31f8c22ef0>
wsgi.input_terminated = True
wsgi.multiprocess = False
wsgi.multithread = False
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', 'dancab(a)its.caltech.edu'),)"
ALLOWED_HOSTS = ['api.mailman3.caltech.edu', 'mailman3.caltech.edu', 'www.mailman3.caltech.edu', 'www.lists.caltech.edu', 'lists.caltech.edu', 'localhost']
APPEND_SLASH = True
AUTHENTICATION_BACKENDS = "('django_auth_ldap.backend.LDAPBackend', 'django.contrib.auth.backends.ModelBackend')"
AUTH_LDAP_ALWAYS_UPDATE_USER = True
AUTH_LDAP_BIND_DN = ''
AUTH_LDAP_BIND_PASSWORD = '********************'
AUTH_LDAP_SERVER_URI = 'ldap://ldapslave5.caltech.edu'
AUTH_LDAP_START_TLS = True
AUTH_LDAP_USER_ATTR_MAP = {'username': 'uid', 'first_name': 'givenName', 'last_name': 'sn', 'email': 'mail'}
AUTH_LDAP_USER_SEARCH = <LDAPSearch: ou=Accounts,ou=ITS,o=Caltech,c=US>
AUTH_PASSWORD_VALIDATORS = '********************'
AUTH_USER_MODEL = 'auth.User'
BASE_DIR = '/var/www/mailman-www'
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 = {'js': ['compressor.filters.jsmin.JSMinFilter'], 'css': ['compressor.filters.css_default.CssAbsoluteFilter']}
COMPRESS_JINJA2_GET_ENVIRONMENT = <function CompressorConf.JINJA2_GET_ENVIRONMENT at 0x7f31ffd0d268>
COMPRESS_MINT_DELAY = 30
COMPRESS_MTIME_DELAY = 10
COMPRESS_OFFLINE = False
COMPRESS_OFFLINE_CONTEXT = {'STATIC_URL': '/static/'}
COMPRESS_OFFLINE_MANIFEST = 'manifest.json'
COMPRESS_OFFLINE_TIMEOUT = 31536000
COMPRESS_OUTPUT_DIR = 'CACHE'
COMPRESS_PARSER = 'compressor.parser.AutoSelectParser'
COMPRESS_PRECOMPILERS = "(('text/less', 'lessc {infile} {outfile}'), ('text/x-scss', 'sassc -t compressed {infile} {outfile}'), ('text/x-sass', 'sassc -t compressed {infile} {outfile}'))"
COMPRESS_REBUILD_TIMEOUT = 2592000
COMPRESS_ROOT = '/var/www/mailman-www/static'
COMPRESS_STORAGE = 'compressor.storage.CompressorFileStorage'
COMPRESS_TEMPLATE_FILTER_CONTEXT = {'STATIC_URL': '/static/'}
COMPRESS_URL = '/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': 'mailman3_prod', 'USER': 'mailman', 'PASSWORD': '********************', 'HOST': 'aus-sql1.caltech.edu', 'PORT': '3306', 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'OPTIONS': {}, '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_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter'
DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
DEFAULT_FROM_EMAIL = 'postmaster(a)mailman3.caltech.edu'
DEFAULT_INDEX_TABLESPACE = ''
DEFAULT_TABLESPACE = ''
DISALLOWED_USER_AGENTS = []
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_HOST_PASSWORD = '********************'
EMAIL_HOST_USER = ''
EMAIL_PORT = 587
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 = 420
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/www/mailman-www/fulltext_index'}}
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')"
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'), ('uz', 'Uzbek'), ('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_HTTPONLY = False
LANGUAGE_COOKIE_NAME = 'django_language'
LANGUAGE_COOKIE_PATH = '/'
LANGUAGE_COOKIE_SAMESITE = None
LANGUAGE_COOKIE_SECURE = False
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': 'DEBUG', 'class': 'logging.handlers.WatchedFileHandler', 'filename': '/var/www/mailman-www/logs/mailmansuite.log', 'formatter': 'verbose'}, 'console': {'class': 'logging.StreamHandler', 'formatter': 'simple'}}, 'loggers': {'django.request': {'handlers': ['mail_admins', 'file'], 'level': 'ERROR', 'propagate': True}, 'django': {'handlers': ['file'], 'level': 'ERROR', 'propagate': True}, 'hyperkitty': {'handlers': ['file'], 'level': 'DEBUG', 'propagate': True}, 'postorius': {'handlers': ['console', 'file'], 'level': 'DEBUG'}}, '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')"
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://mailman3.caltech.edu'
PREPEND_WWW = False
Q_CLUSTER = {'timeout': 300, 'save_limit': 100, 'orm': 'default'}
ROOT_URLCONF = 'urls'
SECRET_KEY = '********************'
SECURE_BROWSER_XSS_FILTER = False
SECURE_CONTENT_TYPE_NOSNIFF = True
SECURE_HSTS_INCLUDE_SUBDOMAINS = False
SECURE_HSTS_PRELOAD = False
SECURE_HSTS_SECONDS = 0
SECURE_PROXY_SSL_HEADER = "('HTTP_X_FORWARDED_SCHEME', 'https')"
SECURE_REDIRECT_EXEMPT = []
SECURE_REFERRER_POLICY = None
SECURE_SSL_HOST = None
SECURE_SSL_REDIRECT = False
SERVER_EMAIL = 'root(a)mailman3.caltech.edu'
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
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/www/mailman-www/static/'
STATIC_URL = '/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 = 'DENY'
YEAR_MONTH_FORMAT = 'F Y'
5 years, 8 months
Re: Installed from Howto_Install_Mailman3_On_Debian10, web not quite working
by Volkmar Grote
On 07.05.23 23:13, Mark Sapiro wrote:
> On 5/7/23 10:51, Volkmar Grote wrote:
>> thanks for the quick reply.
>> I am one step closer to a solution,
>> "http://127.0.0.1:8000/postorius/lists/?all-lists#" seems to work now.
>> I get the functionality, but it looks ugly w/o any graphics, for
>> which I get yet another, slightly similar, error message:
>>>
>>>
>>> Page not found (404)
>>>
>>> Request Method: GET
>>> Request URL:
>>> http://127.0.0.1:8000/static/postorius/img/mailman_logo_small_trans.png
>>>
>>> ...
>>
>> Nginx, /etc/nginx/conf.d/me.domain.de.conf
>>> server {
>>> listen 80;
>>> listen [::]:80;
>>>
>>> server_name me.domain.de;
>>> ...
>>> location /static/ {
>>> alias /opt/mailman/mm/static/;
>>> }
>>
>> Again, many thanks in advance for any clue
>
> The above in nginx is correct, but you aren't getting the static files
> via nginx. You need to go to a URL like
> http://me.domain.de/postorius/lists/. Going to
> http://127.0.0.1:8000/postorius/lists/ goes directly to your wsgi
> server and doesn't involve nginx at all. You need to go to port 80
> where nginx is listening and nginx then proxys requests to
> 127.0.0.1:8000. Do you also have
>
> location / {
> proxy_pass http://127.0.0.1:8000;
> proxy_set_header Host $host;
> proxy_set_header X-Forwarded-For $remote_addr;
>
> }
>
> in /etc/nginx/conf.d/me.domain.de.conf. You need that.
>
Thanks, port :80 did the trick. In my old Mailman3 installation on an
outdated Linux VM it runs on :8000.
Life's good again :-)
VGVG
3 years, 6 months
Re: Installed from Howto_Install_Mailman3_On_Debian10, web not quite working
by Volkmar Grote
On 07.05.23 23:13, Mark Sapiro wrote:
> On 5/7/23 10:51, Volkmar Grote wrote:
>> thanks for the quick reply.
>> I am one step closer to a solution,
>> "http://127.0.0.1:8000/postorius/lists/?all-lists#" seems to work now.
>> I get the functionality, but it looks ugly w/o any graphics, for
>> which I get yet another, slightly similar, error message:
>>>
>>>
>>> Page not found (404)
>>>
>>> Request Method: GET
>>> Request URL:
>>> http://127.0.0.1:8000/static/postorius/img/mailman_logo_small_trans.png
>>>
>>> ...
>>
>> Nginx, /etc/nginx/conf.d/me.domain.de.conf
>>> server {
>>> listen 80;
>>> listen [::]:80;
>>>
>>> server_name me.domain.de;
>>> ...
>>> location /static/ {
>>> alias /opt/mailman/mm/static/;
>>> }
>>
>> Again, many thanks in advance for any clue
>
> The above in nginx is correct, but you aren't getting the static files
> via nginx. You need to go to a URL like
> http://me.domain.de/postorius/lists/. Going to
> http://127.0.0.1:8000/postorius/lists/ goes directly to your wsgi
> server and doesn't involve nginx at all. You need to go to port 80
> where nginx is listening and nginx then proxys requests to
> 127.0.0.1:8000. Do you also have
>
> location / {
> proxy_pass http://127.0.0.1:8000;
> proxy_set_header Host $host;
> proxy_set_header X-Forwarded-For $remote_addr;
>
> }
>
> in /etc/nginx/conf.d/me.domain.de.conf. You need that.
>
Thanks, port :80 did the trick. In my old Mailman3 installation on an
outdated Linux VM it runs on :8000.
Life's good again :-)
VGVG
3 years, 6 months