
Re: Mailman archive issues (Hyperkitty)
by Kimmo L
Hi!
I'm very grateful for your help :)
Okay, sorry about that. I will try to give more information now.
We use https://gitlab.com/mailman/mailman-suite to set up mailman with postorius and hyperkitty.
Additional we use NGINX web server and postgresql database.
Settings.py configuration are basically same with this - https://gitlab.com/mailman/mailman-suite/-/blob/master/mailman-suite_projec…
The only differences are:
*In database section we use postgresql configuration
*Social accounts configuration is disabled
*Haystack connections we use xapian_backend.XapianEngine engine
Here is also our mailman.cfg:
[database]
class: mailman.database.postgresql.PostgreSQLDatabase
url: postgres://mailman:xxxxxx@localhost/mailman
[paths.custom]
bin_dir: /usr/local/bin
var_dir: /var/lib/mailman
queue_dir: /var/spool/mailman
log_dir: /var/log/mailman
lock_dir: /var/lock/mailman
etc_dir: /etc
ext_dir: /etc/mailman.d
pid_file: /var/run/mailman/master.pid
[mailman]
layout: custom
site_owner: xxxx
anonymous_list_keep_headers:
[mta]
*****
[loggin.archiver]
path: archiver.log
level: debug
[archiver.hyperkitty]
class: mailman_hyperkitty.Archiver
enable: yes
configuration: /etc/hyperkitty.cfg
clobber_date: maybe
clobber_skew: 1d
Here is our uwsgi.ini:
# /etc/uwsgi.ini
[uwsgi]
uid = uwsgi
gid = uwsgi
pidfile = /run/uwsgi/uwsgi.pid
emperor = /etc/uwsgi.d
stats = /run/uwsgi/stats.sock
chmod-socket = 660
emperor-tyrant = true
cap = setgid,setuid
buffer-size = 32000
# process limits
limit-as = 512
# Mailman settings
plugins = python36,logfile
master = true
process = 2
threads = 2
chdir = /opt/mailman-suite/mailman-suite_project/
wsgi-file = wsgi.py
uwsgi-socket = 0.0.0.0:8000
attach-daemon = ./manage.py qcluster
# Logging
req-logger = file:/var/log/uwsgi/uwsgi.log
logger = cron file:/var/log/uwsgi/uwsgi-cron.log
log-route = cron uwsgi-cron
logger = qcluster file:/var/log/uwsgi/uwsgi-qcluster.log
log-route = qcluster uwsgi-daemons
logger = file:/var/log/uwsgi/uwsgi-error.log
It seems that we have some perfomance issues on webUI, if we try to check archived messages.
Some lists, that contains low number of archives is not a problem but lists, that contains several thousand messages and grows faster are issue. Sometimes it loads so long, that i get "504 Gateway Time-Out"
I was also monitoring server perfomance and i didnt see any issues on that side. It seems that there might be some issues to read archived messages from database. But this is just my one opinion.
I also debugged log files and found some error messages:
1) mailmansuite.log -> django.db.utils.DatabaseError: out of memory for query result
# it happens when i try to open a lists in webui, to check archived messages.
nginx-error.log -> upstream timed out (110: Connection timed out) while reading response header from upstream
# also happens when i try to open list in hyperkitty and it takes long time to open
If any information is more needed then let me know. My one thought was also, that maybe i need to try rebuild_indexes.
4 years, 1 month

Re: Archive Policy not reflecting in Hyperkitty
by Nathan Dixon
Hi,
I have removed the docker images and pulled the version tagged as 0.2.
$ docker pull quay.io/maxking/mailman-web:0.2
$ docker pull quay.io/maxking/mailman-core:0.2
Unfortunately I am still getting the error message when trying to run the
sync_mailman job manually:
# python3 manage.py runjob sync_mailman
Also running docker-compose up (without -d) I am seeing these errors for
each of the lists that currently exist:
database_1 | ERROR: null value in column "description" violates
not-null constraint
database_1 | DETAIL: Failing row contains (2,
<listname>@<domain>.com, OMA-COM, null, [OMA-COM], 1, 2019-02-25
13:30:03.868072+00, <listuri>).
database_1 | STATEMENT: UPDATE "hyperkitty_mailinglist" SET "name" =
'<listname>@<domain>.com', "list_id" = '<listuri>', "display_name" =
'<LISTNAME>', "description" = NULL, "subject_prefix" = '[<LISTNAME>]',
"archive_policy" = 1, "created_at" =
'2019-02-25T13:30:03.868072+00:00'::timestamptz WHERE
"hyperkitty_mailinglist"."id" = 2
database_1 | ERROR: null value in column "description" violates
not-null constraint
All of the lists do have description that I can see in the Postorius
interface.
Thanks
On Tue, 7 May 2019 at 16:06, Abhilash Raj <maxking(a)asynchronous.in> wrote:
> Are you using images with "rolling" tags?
>
> If yes, you should try to switch to "0.2" tag and the new release will be
> tagged with the same one.
>
> To update, you can do:
>
> $ docker pull ...
> $ docker pull ..
>
> $ docker-compose stop
> $ docker-compose rm
> $ docker-compose up -d
>
> This should basically get you up and running with the new image you pulled.
>
>
> --
> thanks,
> Abhilash Raj (maxking)
>
>
>
--
*Nathan Dixon* MEng
Senior Software Architect
m: +44 (0)7402 690311
t: +44 (0)20 81231252
e: nathan.dixon(a)evadon.com
w: www.evadon.com
This e-mail and any attachments are confidential and may be protected by
legal, professional or other privilege. If you are not the intended
recipient you should not store it, copy it, re-transmit it, use it or
disclose its contents, but should return it to the sender immediately and
delete your copy from your system. The views expressed are those of the
sender and not necessarily those of Evadon. Please note that whilst we scan
all e-mails for viruses we cannot guarantee that any e-mail is virus-free.
Please be advised that we expressly reserve the right to monitor email
content for the purposes of ensuring compliance with legal requirements and
company policies and your sending to, or receiving from, us of any email
constitutes your agreement to these terms.
Evadon Dynamics Limited, registered in England No. 09494097. Registered
Office: Electric Works, Sheffield Digital Campus, 3 Concourse Way, Sheffield,
S1 2BJ
6 years, 2 months

Internal Server Error: /mailman3/accounts/fedora/login/
by Mohsen Masoudfar
Hi,
I am getting the following errors starting some days ago. It is unclear to me what is causing this. I searched internet, there are some similar reports that mention bugs causing this. I am running mailman3 as Ubuntu 18 package and they do not provide any update for this.
Internal Server Error: /mailman3/accounts/fedora/login/
ProgrammingError at /accounts/fedora/login/ relation "socialaccount_openidstore" does not exist LINE 1: SELECT COUNT(*) AS "__count" FROM "socialaccount_openidstore...
^
Request Method: GET
Request URL: https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Flistserv2…
Django Version: 1.11.11
Python Executable: /usr/bin/uwsgi-core
Python Version: 2.7.17
Python Path: ['.', '', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
Server time: Tue, 27 Dec 2022 11:01:12 -0500 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',
'paintstore',
'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.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django_mailman3.middleware.TimezoneMiddleware',
'postorius.middleware.PostoriusMiddleware')
Traceback:
File "/usr/lib/python2.7/dist-packages/django/core/handlers/exception.py" in inner
41. response = get_response(request)
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in _legacy_get_response
249. response = self._get_response(request)
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python2.7/dist-packages/django/views/generic/base.py" in view
68. return self.dispatch(request, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django/views/generic/base.py" in dispatch
88. return handler(request, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django_mailman3/lib/auth/fedora/views.py" in get
59. return self.post(request, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django_mailman3/lib/auth/fedora/views.py" in post
72. auth_request = client.begin(form.cleaned_data['openid'])
File "/usr/lib/python2.7/dist-packages/openid/consumer/consumer.py" in begin
353. return self.beginWithoutDiscovery(service, anonymous)
File "/usr/lib/python2.7/dist-packages/openid/consumer/consumer.py" in beginWithoutDiscovery
376. auth_req = self.consumer.begin(service)
File "/usr/lib/python2.7/dist-packages/openid/consumer/consumer.py" in begin
598. assoc = self._getAssociation(service_endpoint)
File "/usr/lib/python2.7/dist-packages/openid/consumer/consumer.py" in _getAssociation
1158. assoc = self.store.getAssociation(endpoint.server_url)
File "/usr/lib/python2.7/dist-packages/allauth/socialaccount/providers/openid/utils.py" in getAssociation
96. if stored_assocs.count() == 0:
File "/usr/lib/python2.7/dist-packages/django/db/models/query.py" in count
364. return self.query.get_count(using=self.db)
File "/usr/lib/python2.7/dist-packages/django/db/models/sql/query.py" in get_count
504. number = obj.get_aggregation(using, ['__count'])['__count']
File "/usr/lib/python2.7/dist-packages/django/db/models/sql/query.py" in get_aggregation
485. result = compiler.execute_sql(SINGLE)
File "/usr/lib/python2.7/dist-packages/django/db/models/sql/compiler.py" in execute_sql
899. raise original_exception
Exception Type: ProgrammingError at /accounts/fedora/login/ Exception Value: relation "socialaccount_openidstore" does not exist LINE 1: SELECT COUNT(*) AS "__count" FROM "socialaccount_openidstore...
^
Request information:
USER: AnonymousUser
GET:
process = u'login'
next = u'/mailman3/hyperkitty/list/sec_g_zoom(a)listserv2.aaas.org/message/new'
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 = '*/*'
HTTP_ACCEPT_ENCODING = 'gzip, deflate, br'
HTTP_CONNECTION = 'keep-alive'
HTTP_FROM = 'googlebot(at)googlebot.com'
HTTP_HOST = 'listserv2.aaas.org'
HTTP_USER_AGENT = 'Googlebot/2.1 (+https://nam12.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.google.com%2Fbot.html&data=05%7C01%7Cmmasoudf%40aaas.org%7Cc767333920c94048355708dae823947a%7C2eebd8ff9ed140f0a15638e5dfb3bc56%7C0%7C0%7C638077536774767693%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=8%2F5tgjkoHnu%2BWaHwrNVRzcJUh%2BcQ9%2BFUkmB3psMzKMU%3D&reserved=0)'
PATH = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin'
PATH_INFO = u'/accounts/fedora/login/'
QUERY_STRING = 'process=login&next=%2Fmailman3%2Fhyperkitty%2Flist%2Fsec_g_zoom%40listserv2.aaas.org%2Fmessage%2Fnew'
REMOTE_ADDR = '66.249.66.53'
REMOTE_PORT = '37189'
REQUEST_METHOD = 'GET'
REQUEST_SCHEME = 'https'
REQUEST_URI = '/mailman3/accounts/fedora/login/?process=login&next=%2Fmailman3%2Fhyperkitty%2Flist%2Fsec_g_zoom%40listserv2.aaas.org%2Fmessage%2Fnew'
SCRIPT_FILENAME = 'proxy:uwsgi://localhost//accounts/fedora/login/'
SCRIPT_NAME = u'/mailman3'
SERVER_ADDR = '172.24.9.130'
SERVER_ADMIN = 'mmasoudf(a)aaas.org'
SERVER_NAME = 'listserv2.aaas.org'
SERVER_PORT = '443'
SERVER_PROTOCOL = 'HTTP/1.1'
SERVER_SIGNATURE = '<address>Apache/2.4.29 (Ubuntu) Server at listserv2.aaas.org Port 443</address>\n'
SERVER_SOFTWARE = 'Apache/2.4.29 (Ubuntu)'
SSL_TLS_SNI = 'listserv2.aaas.org'
uwsgi.core = 0
uwsgi.node = 'listserv2'
uwsgi.version = '2.0.15-debian'
wsgi.errors = <open file 'wsgi_errors', mode 'w' at 0x7fdfa1c748a0> wsgi.file_wrapper = ''
wsgi.input = <uwsgi._Input object at 0x7fdfa1ccc710> wsgi.multiprocess = False wsgi.multithread = True wsgi.run_once = False wsgi.url_scheme = 'https'
wsgi.version = u'(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 = u"(('Mailman Suite Admin', 'mmasoudf(a)aaas.org'),)"
ALLOWED_HOSTS = ['*']
APPEND_SLASH = True
AUTHENTICATION_BACKENDS = u"('django.contrib.auth.backends.ModelBackend', 'allauth.account.auth_backends.AuthenticationBackend')"
AUTH_PASSWORD_VALIDATORS = u'********************'
AUTH_USER_MODEL = u'auth.User'
BASE_DIR = '/usr/share/mailman3-web'
CACHES = {u'default': {u'BACKEND': u'django.core.cache.backends.locmem.LocMemCache'}}
CACHE_MIDDLEWARE_ALIAS = u'default'
CACHE_MIDDLEWARE_KEY_PREFIX = u'********************'
CACHE_MIDDLEWARE_SECONDS = 600
COMPRESS_CACHEABLE_PRECOMPILERS = u'()'
COMPRESS_CACHE_BACKEND = u'default'
COMPRESS_CACHE_KEY_FUNCTION = u'********************'
COMPRESS_CLEAN_CSS_ARGUMENTS = u''
COMPRESS_CLEAN_CSS_BINARY = u'cleancss'
COMPRESS_CLOSURE_COMPILER_ARGUMENTS = u''
COMPRESS_CLOSURE_COMPILER_BINARY = u'java -jar compiler.jar'
COMPRESS_CSS_COMPRESSOR = u'compressor.css.CssCompressor'
COMPRESS_CSS_FILTERS = [u'compressor.filters.css_default.CssAbsoluteFilter']
COMPRESS_CSS_HASHING_METHOD = u'mtime'
COMPRESS_DATA_URI_MAX_SIZE = 1024
COMPRESS_DEBUG_TOGGLE = None
COMPRESS_ENABLED = True
COMPRESS_JINJA2_GET_ENVIRONMENT = <function JINJA2_GET_ENVIRONMENT at 0x7fdfa1de2f50> COMPRESS_JS_COMPRESSOR = u'compressor.js.JsCompressor'
COMPRESS_JS_FILTERS = [u'compressor.filters.jsmin.JSMinFilter']
COMPRESS_MINT_DELAY = 30
COMPRESS_MTIME_DELAY = 10
COMPRESS_OFFLINE = False
COMPRESS_OFFLINE_CONTEXT = {u'STATIC_URL': '/mailman3/static/'} COMPRESS_OFFLINE_MANIFEST = u'manifest.json'
COMPRESS_OFFLINE_TIMEOUT = 31536000
COMPRESS_OUTPUT_DIR = u'CACHE'
COMPRESS_PARSER = u'compressor.parser.AutoSelectParser'
COMPRESS_PRECOMPILERS = u"(('text/less', 'lessc {infile} {outfile}'), ('text/x-scss', 'sass -t compressed {infile} {outfile}'), ('text/x-sass', 'sass -t compressed {infile} {outfile}'))"
COMPRESS_REBUILD_TIMEOUT = 2592000
COMPRESS_ROOT = '/var/lib/mailman3/web/static'
COMPRESS_STORAGE = u'compressor.storage.CompressorFileStorage'
COMPRESS_TEMPLATE_FILTER_CONTEXT = {u'STATIC_URL': '/mailman3/static/'} COMPRESS_URL = '/mailman3/static/'
COMPRESS_URL_PLACEHOLDER = u'/__compressor_url_placeholder__/'
COMPRESS_VERBOSE = False
COMPRESS_YUGLIFY_BINARY = u'yuglify'
COMPRESS_YUGLIFY_CSS_ARGUMENTS = u'--terminal'
COMPRESS_YUGLIFY_JS_ARGUMENTS = u'--terminal'
COMPRESS_YUI_BINARY = u'java -jar yuicompressor.jar'
COMPRESS_YUI_CSS_ARGUMENTS = u''
COMPRESS_YUI_JS_ARGUMENTS = u''
CSRF_COOKIE_AGE = 31449600
CSRF_COOKIE_DOMAIN = None
CSRF_COOKIE_HTTPONLY = False
CSRF_COOKIE_NAME = u'csrftoken'
CSRF_COOKIE_PATH = u'/'
CSRF_COOKIE_SECURE = False
CSRF_FAILURE_VIEW = u'django.views.csrf.csrf_failure'
CSRF_HEADER_NAME = u'HTTP_X_CSRFTOKEN'
CSRF_TRUSTED_ORIGINS = []
CSRF_USE_SESSIONS = False
DATABASES = {'default': {'ENGINE': 'django.db.backends.postgresql_psycopg2', 'AUTOCOMMIT': True, 'ATOMIC_REQUESTS': False, 'NAME': 'mailman3web', 'CONN_MAX_AGE': 0, 'TIME_ZONE': None, 'PORT': '', 'HOST': 'localhost', 'USER': 'mailman3web', 'TEST': {'COLLATION': None, 'CHARSET': None, 'NAME': None, 'MIRROR': None}, 'PASSWORD': u'********************', 'OPTIONS': {}}} DATABASE_ROUTERS = [] DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440 DATA_UPLOAD_MAX_NUMBER_FIELDS = 1000 DATETIME_FORMAT = u'N j, Y, P'
DATETIME_INPUT_FORMATS = [u'%Y-%m-%d %H:%M:%S', u'%Y-%m-%d %H:%M:%S.%f', u'%Y-%m-%d %H:%M', u'%Y-%m-%d', u'%m/%d/%Y %H:%M:%S', u'%m/%d/%Y %H:%M:%S.%f', u'%m/%d/%Y %H:%M', u'%m/%d/%Y', u'%m/%d/%y %H:%M:%S', u'%m/%d/%y %H:%M:%S.%f', u'%m/%d/%y %H:%M', u'%m/%d/%y'] DATE_FORMAT = u'N j, Y'
DATE_INPUT_FORMATS = [u'%Y-%m-%d', u'%m/%d/%Y', u'%m/%d/%y', u'%b %d %Y', u'%b %d, %Y', u'%d %b %Y', u'%d %b, %Y', u'%B %d %Y', u'%B %d, %Y', u'%d %B %Y', u'%d %B, %Y'] DEBUG = False DEBUG_PROPAGATE_EXCEPTIONS = False DECIMAL_SEPARATOR = u'.'
DEFAULT_CHARSET = u'utf-8'
DEFAULT_CONTENT_TYPE = u'text/html'
DEFAULT_EXCEPTION_REPORTER_FILTER = u'django.views.debug.SafeExceptionReporterFilter'
DEFAULT_FILE_STORAGE = u'django.core.files.storage.FileSystemStorage'
DEFAULT_FROM_EMAIL = 'postorius(a)listserv2.aaas.org'
DEFAULT_INDEX_TABLESPACE = u''
DEFAULT_TABLESPACE = u''
DISALLOWED_USER_AGENTS = []
EMAILNAME = 'listserv2.aaas.org'
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = u'localhost'
EMAIL_HOST_PASSWORD = u'********************'
EMAIL_HOST_USER = u''
EMAIL_PORT = 25
EMAIL_SSL_CERTFILE = None
EMAIL_SSL_KEYFILE = u'********************'
EMAIL_SUBJECT_PREFIX = u'[Django] '
EMAIL_TIMEOUT = None
EMAIL_USE_LOCALTIME = False
EMAIL_USE_SSL = False
EMAIL_USE_TLS = False
FILE_CHARSET = u'utf-8'
FILE_UPLOAD_DIRECTORY_PERMISSIONS = None FILE_UPLOAD_HANDLERS = [u'django.core.files.uploadhandler.MemoryFileUploadHandler', u'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 = u'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 = u"('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', 'paintstore', 'compressor', 'haystack', 'django_extensions', 'django_q', 'allauth', 'allauth.account', 'allauth.socialaccount', 'django_mailman3.lib.auth.fedora')"
INTERNAL_IPS = []
LANGUAGES = [(u'af', u'Afrikaans'), (u'ar', u'Arabic'), (u'ast', u'Asturian'), (u'az', u'Azerbaijani'), (u'bg', u'Bulgarian'), (u'be', u'Belarusian'), (u'bn', u'Bengali'), (u'br', u'Breton'), (u'bs', u'Bosnian'), (u'ca', u'Catalan'), (u'cs', u'Czech'), (u'cy', u'Welsh'), (u'da', u'Danish'), (u'de', u'German'), (u'dsb', u'Lower Sorbian'), (u'el', u'Greek'), (u'en', u'English'), (u'en-au', u'Australian English'), (u'en-gb', u'British English'), (u'eo', u'Esperanto'), (u'es', u'Spanish'), (u'es-ar', u'Argentinian Spanish'), (u'es-co', u'Colombian Spanish'), (u'es-mx', u'Mexican Spanish'), (u'es-ni', u'Nicaraguan Spanish'), (u'es-ve', u'Venezuelan Spanish'), (u'et', u'Estonian'), (u'eu', u'Basque'), (u'fa', u'Persian'), (u'fi', u'Finnish'), (u'fr', u'French'), (u'fy', u'Frisian'), (u'ga', u'Irish'), (u'gd', u'Scottish Gaelic'), (u'gl', u'Galician'), (u'he', u'Hebrew'), (u'hi', u'Hindi'), (u'hr', u'Croatian'), (u'hsb', u'Upper Sorbian'), (u'hu', u'Hungarian'), (u'ia', u'Interlingua'), (u'id', u'Indonesian'), (u'io', u'Ido'), (u'is', u'Icelandic'), (u'it', u'Italian'), (u'ja', u'Japanese'), (u'ka', u'Georgian'), (u'kk', u'Kazakh'), (u'km', u'Khmer'), (u'kn', u'Kannada'), (u'ko', u'Korean'), (u'lb', u'Luxembourgish'), (u'lt', u'Lithuanian'), (u'lv', u'Latvian'), (u'mk', u'Macedonian'), (u'ml', u'Malayalam'), (u'mn', u'Mongolian'), (u'mr', u'Marathi'), (u'my', u'Burmese'), (u'nb', u'Norwegian Bokm\xe5l'), (u'ne', u'Nepali'), (u'nl', u'Dutch'), (u'nn', u'Norwegian Nynorsk'), (u'os', u'Ossetic'), (u'pa', u'Punjabi'), (u'pl', u'Polish'), (u'pt', u'Portuguese'), (u'pt-br', u'Brazilian Portuguese'), (u'ro', u'Romanian'), (u'ru', u'Russian'), (u'sk', u'Slovak'), (u'sl', u'Slovenian'), (u'sq', u'Albanian'), (u'sr', u'Serbian'), (u'sr-latn', u'Serbian Latin'), (u'sv', u'Swedish'), (u'sw', u'Swahili'), (u'ta', u'Tamil'), (u'te', u'Telugu'), (u'th', u'Thai'), (u'tr', u'Turkish'), (u'tt', u'Tatar'), (u'udm', u'Udmurt'), (u'uk', u'Ukrainian'), (u'ur', u'Urdu'), (u'vi', u'Vietnamese'), (u'zh-hans', u'Simplified Chinese'), (u'zh-hant', u'Traditional Chinese')] LANGUAGES_BIDI = [u'he', u'ar', u'fa', u'ur'] LANGUAGE_CODE = 'en-us'
LANGUAGE_COOKIE_AGE = None
LANGUAGE_COOKIE_DOMAIN = None
LANGUAGE_COOKIE_NAME = u'django_language'
LANGUAGE_COOKIE_PATH = u'/'
LOCALE_PATHS = []
LOGGING = {'loggers': {'django': {'handlers': ['file'], 'propagate': True, 'level': 'INFO'}, 'hyperkitty': {'handlers': ['file'], 'propagate': True, 'level': 'INFO'}, 'django.request': {'handlers': ['mail_admins', 'file'], 'propagate': True, 'level': 'INFO'}, 'postorius': {'handlers': ['file'], 'propagate': True, 'level': 'INFO'}}, 'disable_existing_loggers': False, 'handlers': {'console': {'formatter': 'simple', 'class': 'logging.StreamHandler'}, 'file': {'level': 'INFO', 'formatter': 'verbose', 'class': 'logging.handlers.RotatingFileHandler', 'filename': '/var/log/mailman3/web/mailman-web.log'}, 'mail_admins': {'class': 'django.utils.log.AdminEmailHandler', 'filters': ['require_debug_false'], 'level': 'ERROR'}}, 'formatters': {'simple': {'format': '%(levelname)s %(message)s'}, 'verbose': {'format': '%(levelname)s %(asctime)s %(process)d %(name)s %(message)s'}}, 'version': 1, 'filters': {'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}}}
LOGGING_CONFIG = u'logging.config.dictConfig'
LOGIN_REDIRECT_URL = 'list_index'
LOGIN_URL = 'account_login'
LOGOUT_REDIRECT_URL = None
LOGOUT_URL = 'account_logout'
MAILMAN_ARCHIVER_FROM = u"('127.0.0.1', '::1')"
MAILMAN_ARCHIVER_KEY = u'********************'
MAILMAN_REST_API_PASS = u'********************'
MAILMAN_REST_API_URL = u'********************'
MAILMAN_REST_API_USER = u'********************'
MANAGERS = []
MEDIA_ROOT = u''
MEDIA_URL = u''
MESSAGE_STORAGE = u'django.contrib.messages.storage.fallback.FallbackStorage'
MESSAGE_TAGS = {40: 'danger'}
MIDDLEWARE = None
MIDDLEWARE_CLASSES = u"('django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', '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 = u'F j'
NUMBER_GROUPING = 0
PASSWORD_HASHERS = u'********************'
PASSWORD_RESET_TIMEOUT_DAYS = u'********************'
PREPEND_WWW = False
Q_CLUSTER = {'orm': 'default', 'save_limit': 100, 'timeout': 300} ROOT_URLCONF = 'urls'
SECRET_KEY = u'********************'
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)listserv2.aaas.org'
SESSION_CACHE_ALIAS = u'default'
SESSION_COOKIE_AGE = 1209600
SESSION_COOKIE_DOMAIN = None
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_NAME = u'sessionid'
SESSION_COOKIE_PATH = u'/'
SESSION_COOKIE_SECURE = False
SESSION_ENGINE = u'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 = u'm/d/Y P'
SHORT_DATE_FORMAT = u'm/d/Y'
SIGNING_BACKEND = u'django.core.signing.TimestampSigner'
SILENCED_SYSTEM_CHECKS = []
SITE_ID = 1
SOCIALACCOUNT_PROVIDERS = {}
STATICFILES_DIRS = u'()'
STATICFILES_FINDERS = u"('django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', 'compressor.finders.CompressorFinder')"
STATICFILES_STORAGE = u'django.contrib.staticfiles.storage.StaticFilesStorage'
STATIC_ROOT = '/var/lib/mailman3/web/static'
STATIC_URL = '/mailman3/static/'
TEMPLATES = [{'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']}, 'BACKEND': 'django.template.backends.django.DjangoTemplates'}]
TEST_NON_SERIALIZED_APPS = []
TEST_RUNNER = u'django.test.runner.DiscoverRunner'
THOUSAND_SEPARATOR = u','
TIME_FORMAT = u'P'
TIME_INPUT_FORMATS = [u'%H:%M:%S', u'%H:%M:%S.%f', u'%H:%M'] TIME_ZONE = 'UTC'
USE_ETAGS = False
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 = u'SAMEORIGIN'
YEAR_MONTH_FORMAT = u'F Y'
Best regards
Mohsen Masoudfar
2 years, 7 months

Re: Mailman issues after re-boot
by Odhiambo Washington
On Sat, Sep 16, 2023 at 5:49 PM Paul Rubin <paulrubin37(a)gmail.com> wrote:
> *<< I sent this to the mailman3 issues on gitlab and Mark replied but asked
> me to move to this list, so I copied everything and inserted responses. I
> hope this makes sense and someone can help me.>>*
>
> After a lengthy power failure I had to reboot a machine that has been
> running for several years. the WEB-UI does not seem to be able to see
> mailman-core. I have looked for log entries that might explain what the
> issue is and I am stumped to even find logs that will update when I get an
> error on the browser. Mailman is definitely running, postgres is running
> and mailman web is running. if I go to the lists page I see lists, if I try
> to access a specific list I get Server error: An error occurred while
> processing your request.
>
> I looked in /var/logs/mailman /opt/mailman/web/mailmanweb
>
> All I can find is:
>
> django.urls.exceptions.NoReverseMatch: Reverse for
> 'list_unsubscription_requests' not found.
> 'list_unsubscription_requests' is not a valid view function or pattern
> name.16688 ERROR 2023-09-12 13:56:58,430 1760 django.request Internal
> Server Error: /mailman3/lists/goodstein.goodstein.org/ File
> "/opt/mailman/venv/lib64/python3.8/site-packages/haystack/admin.py",
> line 8, in <module> from django.utils.translation import
> ungettextImportError: cannot import name 'ungettext' from
> 'django.utils.translation'
>
> (/opt/mailman/venv/lib64/python3.8/site-packages/django/utils/translation/__init__.py)
>
> Also I have to run mailman from "mailman start" because the systemctl
> returns this:
>
> ● mailman3.service - GNU Mailing List Manager Loaded: loaded
> (/etc/systemd/system/mailman3.service; enabled; vendor preset:
> disabled) Active: failed (Result: exit-code) since Tue 2023-09-12
> 10:06:31 EDT; 13s ago Process: 31159
> ExecStart=/opt/mailman/venv/bin/mailman start (code=exited,
> status=1/FAILURE) CPU: 806msSep 12 10:06:31 mail
> mailman[31159]: Error in atexit._run_exitfuncs:Sep 12 10:06:31 mail
> mailman[31159]: Traceback (most recent call last):Sep 12 10:06:31 mail
> mailman[31159]: File "/usr/lib64/python3.8/logging/__init__.py",
> line 2126, in shutdownSep 12 10:06:31 mail mailman[31159]:
> h.flush()Sep 12 10:06:31 mail mailman[31159]: File
> "/opt/mailman/venv/lib64/python3.8/site-packages/mailman/core/logging.py",
> line 67, in flushSep 12 10:06:31 mail mailman[31159]: if
> self._stream:Sep 12 10:06:31 mail mailman[31159]: AttributeError:
> 'ReopenableFileHandler' object has no attribute '_stream'Sep 12
> 10:06:31 mail systemd[1]: mailman3.service: Control process exited,
> code=exited, status=1/FAILURESep 12 10:06:31 mail systemd[1]:
> mailman3.service: Failed with result 'exit-code'.Sep 12 10:06:31 mail
> systemd[1]: Failed to start GNU Mailing List Manager.
>
> Please tell me where to start looking or adjusting.
>
>
> Reply from Mark Sapiro,* Edited to include responses:*
>
> Mark Sapiro <https://gitlab.com/msapiro>@msapiro
> <https://gitlab.com/msapiro>· 1 day ago
> <https://gitlab.com/mailman/mailman-web/-/issues/23#note_1557601916>
> Owner
> Add reaction
> More actions
>
> The mailman-users(a)mailman3.org list is probably a more appropriate place
> for issues like this.
>
> django.urls.exceptions.NoReverseMatch: Reverse for
> 'list_unsubscription_requests' not found. 'list_unsubscription_requests' is
> not a valid view function or pattern name. 16688 ERROR 2023-09-12
> 13:56:58,430 1760 django.request Internal Server Error: /mailman3/lists/
> goodstein.goodstein.org/
>
> /opt/mailman/venv/lib64/python3.8/site-packages/postorius/urls.py should
> contain
>
> re_path( r'^unsubscription_requests$',
> list_views.list_unsubscription_requests,
> name='list_unsubscription_requests', ),
>
> Y
>
> *Yes this exists*
>
> and /opt/mailman/venv/lib64/python3.8/site-packages/postorius/views/list.py
> should define list_unsubscription_requests.
>
> *Yes there is a method by this name defined*
>
> File "/opt/mailman/venv/lib64/python3.8/site-packages/haystack/admin.py",
> line 8, in from django.utils.translation import ungettext ImportError:
> cannot import name 'ungettext' from 'django.utils.translation'
> (/opt/mailman/venv/lib64/python3.8/site-packages/django/utils/translation/
> *init*.py)
>
> See
>
> https://docs.djangoproject.com/en/4.2/internals/deprecation/#deprecation-re…
> -
> ungettext() is removed from django>=4.0
>
> Sep 12 10:06:31 mail mailman[31159]: AttributeError:
> 'ReopenableFileHandler' object has no attribute '_stream'
>
> I don't understand this one offhand, but what is the content of
> /etc/systemd/system/mailman3.service, in particular the settings for User,
> Group and ExecStart?
>
> *The service looks right:*
>
> 1 [Unit]
> 2 Description=GNU Mailing List Manager
> 3 After=syslog.target network.target postgresql.service
> 4
> 5 [Service]
> 6 Type=forking
> 7 PIDFile=/opt/mailman/mm/var/master.pid
> 8 User=mailman
> 9 Group=mailman
> 10 ExecStart=/opt/mailman/venv/bin/mailman start
> 11 ExecReload=/opt/mailman/venv/bin/mailman restart
> 12 ExecStop=/opt/mailman/venv/bin/mailman stop
> 13
> 14 [Install]
> 15 WantedBy=multi-user.target
>
> *It seems I may have two versions of the mailman script:*
>
> mail:/opt/mailman # which mailman
> /usr/bin/mailman
> mail:/opt/mailman # ls -al /usr/bin/mailman
> -rwxr-xr-x 1 root root 382 May 10 2021 /usr/bin/mailman
> mail:/opt/mailman # ls -al /opt/mailman/venv/bin/mailman
> -rwxr-xr-x 1 mailman mailman 231 Sep 12 10:02 /opt/mailman/venv/bin/mailman
>
> Somehow, your installation is corrupted. I don't know how
>
> *I need to know what to remove, how to correctly update, etc., That said
> the two scripts appear to be very similar:*
>
> mail:/opt/mailman # head /usr/bin/mailman
>
> #!/usr/bin/python3
> # EASY-INSTALL-ENTRY-SCRIPT: 'mailman==3.3.4','console_scripts','mailman'
> __requires__ = 'mailman==3.3.4'
> import re
> import sys
> from pkg_resources import load_entry_point
>
> if __name__ == '__main__':
> sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
> sys.exit(
>
>
> mail:/opt/mailman # head /opt/mailman/venv/bin/mailman
> #!/opt/mailman/venv/bin/python3
> # -*- coding: utf-8 -*-
> import re
> import sys
> from mailman.bin.mailman import main
> if __name__ == '__main__':
> sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
> sys.exit(main())
> mail:/opt/mailman #
>
> *Given the two years since the last reboot I also tried following *
> https://docs.mailman3.org/en/latest/upgrade-guide.html *to make sure I was
> running the latest*
>
> pip install -U mailman postorius django-mailman3 hyperkitty mailman-web
>
Why don't you try and do a fresh virtualenv install and move your configs
into it?
1. cd /opt
2. mv mailman _mailman.BAK
3. Create a backup of the database.
Then follow this:
https://docs.mailman3.org/en/latest/install/virtualenv.html#virtualenv-inst…,
but do not create the database as it already exists.
You also do not need to run any database migrations, so you can actually
skip those
You just need to ensure that `mailman info` says that its configuration
files are in /etc/mailman3/
Create the necessary directories as per the above installation instructions.
--
Best regards,
Odhiambo WASHINGTON,
Nairobi,KE
+254 7 3200 0004/+254 7 2274 3223
"Oh, the cruft.", egrep -v '^$|^.*#' ¯\_(ツ)_/¯ :-)
[How to ask smart questions:
http://www.catb.org/~esr/faqs/smart-questions.html]
1 year, 10 months

Re: Welcome Message
by brian@emwd.com
Thanks Mark. I added the POSTORIUS_TEMPLATE_BASE_URL to my settings:
/opt/mailman/web/settings_local.py
Now I get the following errors:
Apr 16 15:38:44 2019 (28) deque:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 600, in urlopen
chunked=chunked)
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 343, in _make_request
self._validate_conn(conn)
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 839, in _validate_conn
conn.connect()
File "/usr/lib/python3.6/site-packages/urllib3/connection.py", line 344, in connect
ssl_context=context)
File "/usr/lib/python3.6/site-packages/urllib3/util/ssl_.py", line 344, in ssl_wrap_socket
return context.wrap_socket(sock, server_hostname=server_hostname)
File "/usr/lib/python3.6/ssl.py", line 407, in wrap_socket
_context=self, _session=session)
File "/usr/lib/python3.6/ssl.py", line 814, in __init__
self.do_handshake()
File "/usr/lib/python3.6/ssl.py", line 1068, in do_handshake
self._sslobj.do_handshake()
File "/usr/lib/python3.6/ssl.py", line 689, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:841)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/requests/adapters.py", line 449, in send
timeout=timeout
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 638, in urlopen
_stacktrace=sys.exc_info()[2])
File "/usr/lib/python3.6/site-packages/urllib3/util/retry.py", line 398, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='mailman3.emwd.com', port=443): Max retries exceeded with url: /postorius/api/templates/list/testlist.mailman3.emwd.com/list:user:notice:welcome (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:841)'),))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/mailman/app/workflow.py", line 69, in __next__
return step()
File "/usr/lib/python3.6/site-packages/mailman/app/subscriptions.py", line 326, in _step_do_subscription
self.member = self.mlist.subscribe(self.subscriber)
File "/usr/lib/python3.6/site-packages/mailman/database/transaction.py", line 85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3.6/site-packages/mailman/model/mailinglist.py", line 494, in subscribe
notify(SubscriptionEvent(self, member))
File "/usr/lib/python3.6/site-packages/zope/event/__init__.py", line 32, in notify
subscriber(event)
File "/usr/lib/python3.6/site-packages/mailman/app/membership.py", line 169, in handle_SubscriptionEvent
send_welcome_message(mlist, member, member.preferred_language)
File "/usr/lib/python3.6/site-packages/mailman/app/notifications.py", line 52, in send_welcome_message
'list:user:notice:welcome', mlist, language=language.code))
File "/usr/lib/python3.6/site-packages/mailman/model/template.py", line 188, in get
name, lookup_context, **substitutions)
File "/usr/lib/python3.6/site-packages/mailman/database/transaction.py", line 85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3.6/site-packages/mailman/model/template.py", line 109, in get
contents = protocols.get(actual_uri, **auth)
File "/usr/lib/python3.6/site-packages/mailman/utilities/protocols.py", line 38, in get
response = requests.get(url, timeout=REQUEST_TIMEOUT, **kws)
File "/usr/lib/python3.6/site-packages/requests/api.py", line 75, in get
return request('get', url, params=params, **kwargs)
File "/usr/lib/python3.6/site-packages/requests/api.py", line 60, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3.6/site-packages/requests/adapters.py", line 514, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='mailman3.emwd.com', port=443): Max retries exceeded with url: /postorius/api/templates/list/testlist.mailman3.emwd.com/list:user:notice:welcome (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:841)'),))
Apr 16 15:38:44 2019 (28) REST request handler error:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 600, in urlopen
chunked=chunked)
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 343, in _make_request
self._validate_conn(conn)
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 839, in _validate_conn
conn.connect()
File "/usr/lib/python3.6/site-packages/urllib3/connection.py", line 344, in connect
ssl_context=context)
File "/usr/lib/python3.6/site-packages/urllib3/util/ssl_.py", line 344, in ssl_wrap_socket
return context.wrap_socket(sock, server_hostname=server_hostname)
File "/usr/lib/python3.6/ssl.py", line 407, in wrap_socket
_context=self, _session=session)
File "/usr/lib/python3.6/ssl.py", line 814, in __init__
self.do_handshake()
File "/usr/lib/python3.6/ssl.py", line 1068, in do_handshake
self._sslobj.do_handshake()
File "/usr/lib/python3.6/ssl.py", line 689, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:841)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/requests/adapters.py", line 449, in send
timeout=timeout
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 638, in urlopen
_stacktrace=sys.exc_info()[2])
File "/usr/lib/python3.6/site-packages/urllib3/util/retry.py", line 398, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='mailman3.emwd.com', port=443): Max retries exceeded with url: /postorius/api/templates/list/testlist.mailman3.emwd.com/list:user:notice:welcome (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:841)'),))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.6/wsgiref/handlers.py", line 137, in run
self.result = application(self.environ, self.start_response)
File "/usr/lib/python3.6/site-packages/mailman/database/transaction.py", line 50, in wrapper
rtn = function(*args, **kws)
File "/usr/lib/python3.6/site-packages/mailman/rest/wsgiapp.py", line 218, in __call__
return super().__call__(environ, start_response)
File "/usr/lib/python3.6/site-packages/falcon/api.py", line 244, in __call__
responder(req, resp, **params)
File "/usr/lib/python3.6/site-packages/mailman/rest/members.py", line 266, in on_post
pre_approved=pre_approved)
File "/usr/lib/python3.6/site-packages/mailman/app/subscriptions.py", line 520, in register
list(workflow)
File "/usr/lib/python3.6/site-packages/mailman/app/workflow.py", line 69, in __next__
return step()
File "/usr/lib/python3.6/site-packages/mailman/app/subscriptions.py", line 326, in _step_do_subscription
self.member = self.mlist.subscribe(self.subscriber)
File "/usr/lib/python3.6/site-packages/mailman/database/transaction.py", line 85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3.6/site-packages/mailman/model/mailinglist.py", line 494, in subscribe
notify(SubscriptionEvent(self, member))
File "/usr/lib/python3.6/site-packages/zope/event/__init__.py", line 32, in notify
subscriber(event)
File "/usr/lib/python3.6/site-packages/mailman/app/membership.py", line 169, in handle_SubscriptionEvent
send_welcome_message(mlist, member, member.preferred_language)
File "/usr/lib/python3.6/site-packages/mailman/app/notifications.py", line 52, in send_welcome_message
'list:user:notice:welcome', mlist, language=language.code))
File "/usr/lib/python3.6/site-packages/mailman/model/template.py", line 188, in get
name, lookup_context, **substitutions)
File "/usr/lib/python3.6/site-packages/mailman/database/transaction.py", line 85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3.6/site-packages/mailman/model/template.py", line 109, in get
contents = protocols.get(actual_uri, **auth)
File "/usr/lib/python3.6/site-packages/mailman/utilities/protocols.py", line 38, in get
response = requests.get(url, timeout=REQUEST_TIMEOUT, **kws)
File "/usr/lib/python3.6/site-packages/requests/api.py", line 75, in get
return request('get', url, params=params, **kwargs)
File "/usr/lib/python3.6/site-packages/requests/api.py", line 60, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3.6/site-packages/requests/adapters.py", line 514, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='mailman3.emwd.com', port=443): Max retries exceeded with url: /postorius/api/templates/list/testlist.mailman3.emwd.com/list:user:notice:welcome (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:841)'),))
Apr 16 15:38:44 2019 (28) 172.19.199.3 - - "POST /3.1/members HTTP/1.1" 500 59
I am confused by the SSL errors. I have a valid SSL certificate installed on mailman3.emwd.com. These errors occur whether the POSTORIUS_TEMPLATE_BASE_URL is using http or https.
Brian
6 years, 3 months

Re: How To Install Mailman 3 on Debian 10 (Complete Guide)
by Stephen J. Turnbull
Lars Schimmer writes:
> Intereting view for a software poackage taking a few years to get a
> way to migrate from mailman2 to mailman3. Or in other words: if a
> stable version is not useable/to old, the software is not
> production ready.
Not our problem though. It was the distro's choice to provide Mailman
packages. We're happy that they're interested, and happy to do what
we can to support their users when they come here. But it's up to
them to judge whether their packages are useful to their users.
>> For constantly evolving projects where you need to be current,
>> [distribution packages are] more of a detriment.
> Nope. Vote against this view.
> You need a stable system to rely on and setup without hassle in a nonce.
Then what are you doing here? That is not Mailman 3, as you can see
from reading this list. Once working, Mailman 3 is quite stable as
long as you understand the parameters (for example, what a shunted
message is, and what configurations are available from Postorius and
what requires shell access). But it is not yet hassle-free to set up
(unless you use Brian's guide on an otherwise empty host ;-). Mailman
3 is still a work in progress, with a wide variety of requirements
from our users that only we can address.
And again in <428b33e6-189b-3a13-0bab-b5d77735d8ab(a)cgv.tugraz.at>:
> So, why does someone not care about the debian package to fix that bugs?
> It is possible, and is done by other packages every day.
Not our problem. Ask the Debian maintainer, who is not a core Mailman
developer.
> Thats why I like to stay with 1 standard for all softeare packages
> on one system. I do not want to run 20 software distributions with
> 20 ways of doing it the right waay (tm).
I doubt anyone disagrees, but yet again, not our problem. Our problem
is that y'all choose 20 different software distributions and somebody
among you wants to run Mailman on each one of them, embedded in an
equally wide variety of network configurations.
You really should be over on some Debian list with this thread. I
understand your frustration, but we have no obligation and no
intention to do anything about it. We're here to maintain Mailman
itself and never said anything else. If the Debian maintainer has
specific requests of us, I'm sure all of us would take a strong
interest in that. But maintaining the Debian packaging itself is
his/her chosen job, not ours.
Steve
4 years, 5 months

Re: MM3 Postfix FROM header issue
by Mark Sapiro
On 12/17/23 9:42 AM, Mark Sapiro wrote:
> On 12/17/23 9:10 AM, eboltz(a)lhtservices.com wrote:
>> Mark,
>>
>> Here is my postconf -n
>>
>> alias_database = hash:/etc/aliases
>> alias_maps = hash:/etc/aliases
>> always_add_missing_headers = yes
>> append_dot_mydomain = no
>> biff = no
>> compatibility_level = 2
>> default_destination_concurrency_limit = 15
>> default_destination_recipient_limit = 30
>> header_checks = regexp:/etc/postfix/header_checks
>> header_size_limit = 409600
>> inet_interfaces = all
>> inet_protocols = ipv4
>> local_recipient_maps = proxy:unix:passwd.byname $alias_maps
>> hash:/var/lib/mailman3/data/postfix_lmtp
>> mailbox_size_limit = 0
>> mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
>> myhostname = lists.example.com
>> mynetworks = 127.0.0.0/8 [::fff:127.0.0.0]/104 [::1]/128
>> myorigin = /etc/mailname
>> readme_directory = no
>> recipient_delimiter = +
>> relay_domains = hash:/var/lib/mailman3/data/postfix_domains
>> relayhost = [mail.smtp2go.com]:587
>> smtp_always_send_ehlo = yes
>> smtp_sasl_security_options = noanonymous
>> smtp_tls_CApath = /etc/postfix/o365_smtp_cert.pem
>> smtp_tls_security_level = may
>> smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
>> smtp_use_tls = yes
>> smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
>> smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated
>> defer_unauth_destination
>> smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
>> smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
>> smtpd_tls_security_level = may
>> transport_maps = hash:/var/lib/mailman3/data/postfix_lmtp
>> unknown_local_recipient_reject_code = 550
>> virtual_alias_maps = hash:/var/lib/mailman3/data/postfix_vmap
>
>
> It looks like you are now following
> <https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/docs/mta.h…>.
>
>
>> What would I have to do to ensure that MM3 and postfix (same new
>> server) use the newly created lists.example.org domain, which only
>> exists within Postfix when setting up the Postorius domain and lists?
>> I want to have it so that whatever the list name is, for example
>> 'Staff(a)lists.example.org' will route through Postfix correctly.
>
>
> Have you set an alias_domain for the lists.example.org domain?
>
> What are the contents of /var/lib/mailman3/data/postfix_vmap and
> /var/lib/mailman3/data/postfix_lmtp? If you feel it is necessary to
> anonymize the domains in these, please only change the tld so we can see
> the actual subdomains.
However, it looks like you don't need to follow
<https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/docs/mta.h…>
as lists.example.org is not a virtual_alias_domain. You just need to add
lists.example.org to mydestination, assuming lists.example.org and
lists.example.com are actually different domains, and follow
<https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/docs/mta.h…>.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
1 year, 7 months

Re: digest summary heavily cluttered with hrml code
by Mohsen Masoudfar
Hi Mark,
Thanks again for your help!
Yes, I meant "Today's Topic".
I checked the link you sent, but could not see the solution to the issue.
You mentioned:
" They are in order of priority, list based, address based and global"
Is this in descending or ascending priority? If I set it at list level, does it overwrite the member setting (address based?? )?
I set them along with "Delivery mode" at the member level and saved it, but when I get back to it, it still shows "Regular" and other fields like:
acknowledge_posts, delivery_status, hide_address, receive_list_copy, receive_own_postings
are empty, even though I set them and saved.
Thanks
Mohsen
-----Original Message-----
From: Mark Sapiro <mark(a)msapiro.net>
Sent: Wednesday, October 14, 2020 12:21 PM
To: mailman-users(a)mailman3.org
Subject: [MM3-users] Re: digest summary heavily cluttered with hrml code
[EXTERNAL EMAIL]
On 10/14/20 8:46 AM, Mohsen Masoudfar wrote:
> Hi,
>
> I am running Mailman 3.1.1 on Ubuntu 18.04.
>
> The user complains that the digest summary is cluttered with HTML code.
What does 'summary' mean in this context? Are you referring to the 'Today's Topics:' list or the messages themselves?
Is this perhaps <https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitlab.co…>?
> I thought, I may fix it by:
> Members > {user} > Member options > Delivery mode set to [Plain Text Digest]. After setting the value and clicking [save changes], I tried to check the value by getting back to Members setting for the user, it shows the value as "Regular", which was the value before I tried to update it.
There are actually 3 sets of user preferences. They are in order of priority, list based, address based and global. You can see these if you are logged in to the web UI as the user and go to 'Mailman settings' in the pull down at the top right.
There are issues in Postorius if a user is a member of a list with more than one role - see <https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitlab.co…>.
> Question 1: How may I be sure that the value is set, if it is set?
Examine the settings with `mailman shell`
> Question 2: How may set it for all members of the list?
Create a `mailman shell` script.
> Question 3: Is there a CLI way to do this? I tried "mailman members " command. But it seems not supporting this option.
Again, `mailman shell`, but this is low level and requires some knowledge of Mailman internals.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
_______________________________________________
Mailman-users mailing list -- mailman-users(a)mailman3.org To unsubscribe send an email to mailman-users-leave(a)mailman3.org
https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.mai…
4 years, 9 months

Re: Member Issue Discovered
by Brian Carpenter
On 10/20/20 12:29 AM, Stephen J. Turnbull wrote:
> Brian Carpenter writes:
>
> > You don't really think that this is an issue which means it will be
> > years before it is addressed.
>
> You're making the classic mistake of reporting an issue assuming that
> your *proposed *fix* is the *issue*. Mark replies that the immediate
> issue is not that a database record of the user is retained, it's that
> there's no way for an authenticated user or even an authenticated list
> admin to change that user's display name in the database. It's a
> database, there *is* a way to change it in Mailman, it's "just" that
> it requires site admin intervention. (Assume "just" is marked with
> the nonexistent sarcasm emoji.)
I reported a serious problem. The reply was to bring up assumptions that
should not be made such as a list member is actually a registered user.
As you said they are not. List members are treated differently but I
think they are not. Regardless of whether they are just a list member or
a list member that is also a registered user, there is NO MECHANISM in
place where you can change their associated display name AND their data
is not entirely removed when a reasonable assumption is being made that
it has, such as list unsubscribing. Sorry but I can't see how this
behavior can be justified and also not being made a high priority to fix.
>
> It's arguable that there should *also* be a way for a person to delete
> their user entirely (in fact, some interpretation of GDPR say that
> "it's the law" :-). But that's not the immediate issue faced by
> *this* user and list admin, and I doubt deleting the user object is a
> big issue for users (but it might be for admins because of GDPR etc).
>
> Whether it gets addressed this week or sometime in the next few months
> or in the summer is something you're more than welcome to advocate.
> Like Mark, I recommend filing an issue.
>
> Steve
Some may think that retaining data when there is a reasonable assumption
that it is being removed is immoral and not just a violation of GDPR. As
I said in my reply to Mark, it is a big deal for list owners (admins)
because they are the ones that are going to be interacting with
Postorius/Affinity the most. Most list members, especially those
migrating from MM2, will not be registering with Postorius/Affinity.
List owners/moderators have no choice.
--
Brian Carpenter
Harmonylists.com
Emwd.com
4 years, 9 months

Please help - Held message is crashing mailman.
by Alex King
Hi,
I've used mailman a lot in the past, and decided to install mailman3 in a
recent install. I'm unimpressed so far, it seems buggy.
Running on Ubuntu 18.04.2 LTS from packages, mailman3 3.1.1-9, mailman3-web
0+20170523-14, python-django-postorius 1.1.2-3.
After a few messages, I now can't go to the "Held Messages" in postorius, I
get a 500 error.
I tried to interact on the command line, but could not work out how. Reading
https://mailman.readthedocs.io/en/latest/src/mailman/docs/install.html and
https://mailman.readthedocs.io/en/latest/src/mailman/commands/docs/shell.ht…,
I tried:
# mailman shell
Welcome to the GNU Mailman shell
>>> command = cli('mailman.commands.cli_withlist.shell')
Traceback (most recent call last):
File "/usr/lib/python3.6/code.py", line 91, in runcode
exec(code, self.locals)
File "<console>", line 1, in <module>
NameError: name 'cli' is not defined
I did a lot of reading of the manual and googled, but I have no idea where the
cli object is supposed to come from.....? The documentation is confusing.
Anyway, after some trial and error, i found:
# mailman shell
Welcome to the GNU Mailman shell
>>> list_manager = getUtility(IListManager)
>>> m=list_manager.get("committee(a)[redacted].org")
>>> from mailman.interfaces.requests import IListRequests
>>> requests = IListRequests(m)
>>> [x for x in requests.held_requests][0].id
8
>>> requests.get_request(8)
Traceback (most recent call last):
File "/usr/lib/python3.6/code.py", line 91, in runcode
exec(code, self.locals)
File "<console>", line 1, in <module>
File "/usr/lib/python3/dist-packages/mailman/database/transaction.py", line
85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3/dist-packages/mailman/model/requests.py", line 120,
in get_request
result.data_hash, expunge=False)
File "/usr/lib/python3/dist-packages/mailman/database/transaction.py", line
85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3/dist-packages/mailman/model/pending.py", line 138,
in confirm
value = json.loads(keyvalue.value)
File "/usr/lib/python3.6/json/__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.6/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.6/json/decoder.py", line 355, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Unterminated string starting at: line 1 column 1
(char 0)
It seems something was written out to disk that can't be read in for some
reason (assuming a json object on disk?)
How do I debug this further? How do I find the json being decoded? Any help
would be appreciated. (I found mailman2 just worked, I was happy with that.)
(My colleague posted a bug about this I believe but I don't have the link to
that.)
Thanks,
Alex
6 years, 3 months