[Django] ERROR (EXTERNAL IP): Service Unavailable
I've imported a list from Mailman2 and had the owner send a message for testing purposes.
His message are moderated per the list configuration. The message is delivered to Mailman3 and shows that it's being held.
However if we attempt to view the message in Postorius web UI then an error is thrown.
In the web interface the error is simply "Mailman REST API not available. Please start Mailman core."
But Mailman Core is running and we can do other functions just fine. Our superuser account receives a much more detailed message with the subject below.
[Django] ERROR (EXTERNAL IP): Service Unavailable: /postorius/lists/cpa-announcement.caltech.edu/held_messages
Does "Service Unavailable" mean I'm missing something in the configuration?
Thanks for your help.
Dan Caballero
On 2/22/21 5:47 PM, dancab@caltech.edu wrote:
I've imported a list from Mailman2 and had the owner send a message for testing purposes.
His message are moderated per the list configuration. The message is delivered to Mailman3 and shows that it's being held.
However if we attempt to view the message in Postorius web UI then an error is thrown.
Can you see the message in the held messages view and only get the error when you click the message, or can you not see the held messages view at all?
Is it only this list that has an issue? Can you visit other pages for this list?
In the web interface the error is simply "Mailman REST API not available. Please start Mailman core."
But Mailman Core is running and we can do other functions just fine. Our superuser account receives a much more detailed message with the subject below.
[Django] ERROR (EXTERNAL IP): Service Unavailable: /postorius/lists/cpa-announcement.caltech.edu/held_messages
Does "Service Unavailable" mean I'm missing something in the configuration?
Possibly, but I don't think so.
What is the Traceback from the message Django sends to the server admin?
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
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@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/he... 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@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@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@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'
One more note... We were attempting to test modifying the template for the footer in non-digest messages. So the user/owner of the list had created a template with a modified footer based on the template: "list:member:regular:footer"
On 2/24/21 10:00 AM, dancab@caltech.edu wrote:
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.
Thanks for that, but it's not helpful, at least for me. I'm looking for a Traceback leading to the error, but it isn't there.
One more note... We were attempting to test modifying the template for the footer in non-digest messages. So the user/owner of the list had created a template with a modified footer based on the template: "list:member:regular:footer"
That shouldn't affect access to the held messages view.
Is there anything in Mailman's mailman.log that might be helpful, such as a "GET /3.1/lists/cpa-announcement@caltech.edu/held/..." message with a non 200 status. Also, are there "GET /3.1/lists/cpa-announcement@caltech.edu/..." messages with 200 status?
Also, you didn't answer my
Is it only this list that has an issue? Can you visit other pages for this list?
questions.
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
Mark,
Is it only this list that has an issue?
Yes, this is the only list that is having the issue.
Can you visit other pages for this list?
Yes, I'm able to view the members list, list settings, templates, etc.
I've restarted the service and tried to access the held messages for the list once again. Here's what is in the mailman log.
ERROR 2021-02-25 17:28:14,197 393 postorius Mailman REST API not available Traceback (most recent call last): File "/opt/mailmanve/lib64/python3.6/site-packages/urllib3/connectionpool.py", line 706, in urlopen chunked=chunked, File "/opt/mailmanve/lib64/python3.6/site-packages/urllib3/connectionpool.py", line 445, in _make_request six.raise_from(e, None) File "<string>", line 3, in raise_from File "/opt/mailmanve/lib64/python3.6/site-packages/urllib3/connectionpool.py", line 440, in _make_request httplib_response = conn.getresponse() File "/usr/lib64/python3.6/http/client.py", line 1346, in getresponse response.begin() File "/usr/lib64/python3.6/http/client.py", line 307, in begin version, status, reason = self._read_status() File "/usr/lib64/python3.6/http/client.py", line 276, in _read_status raise RemoteDisconnected("Remote end closed connection without" http.client.RemoteDisconnected: Remote end closed connection without response
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/opt/mailmanve/lib64/python3.6/site-packages/requests/adapters.py", line 449, in send timeout=timeout File "/opt/mailmanve/lib64/python3.6/site-packages/urllib3/connectionpool.py", line 756, in urlopen method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2] File "/opt/mailmanve/lib64/python3.6/site-packages/urllib3/util/retry.py", line 531, in increment raise six.reraise(type(error), error, _stacktrace) File "/opt/mailmanve/lib64/python3.6/site-packages/urllib3/packages/six.py", line 734, in reraise raise value.with_traceback(tb) File "/opt/mailmanve/lib64/python3.6/site-packages/urllib3/connectionpool.py", line 706, in urlopen chunked=chunked, File "/opt/mailmanve/lib64/python3.6/site-packages/urllib3/connectionpool.py", line 445, in _make_request six.raise_from(e, None) File "<string>", line 3, in raise_from File "/opt/mailmanve/lib64/python3.6/site-packages/urllib3/connectionpool.py", line 440, in _make_request httplib_response = conn.getresponse() File "/usr/lib64/python3.6/http/client.py", line 1346, in getresponse response.begin() File "/usr/lib64/python3.6/http/client.py", line 307, in begin version, status, reason = self._read_status() File "/usr/lib64/python3.6/http/client.py", line 276, in _read_status raise RemoteDisconnected("Remote end closed connection without" urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/opt/mailmanve/lib64/python3.6/site-packages/mailmanclient/restbase/connection.py", line 112, in call headers=headers) File "/opt/mailmanve/lib64/python3.6/site-packages/requests/api.py", line 61, in request return session.request(method=method, url=url, **kwargs) File "/opt/mailmanve/lib64/python3.6/site-packages/requests/sessions.py", line 542, in request resp = self.send(prep, **send_kwargs) File "/opt/mailmanve/lib64/python3.6/site-packages/requests/sessions.py", line 655, in send r = adapter.send(request, **kwargs) File "/opt/mailmanve/lib64/python3.6/site-packages/requests/adapters.py", line 498, in send raise ConnectionError(err, request=request) requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/opt/mailmanve/lib64/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/opt/mailmanve/lib64/python3.6/site-packages/django/contrib/auth/decorators.py", line 21, in _wrapped_view return view_func(request, *args, **kwargs) File "/opt/mailmanve/lib64/python3.6/site-packages/postorius/auth/decorators.py", line 60, in wrapper return fn(*args, **kwargs) File "/opt/mailmanve/lib64/python3.6/site-packages/postorius/views/list.py", line 620, in list_moderation paginator_class=MailmanPaginator) File "/opt/mailmanve/lib64/python3.6/site-packages/django_mailman3/lib/paginator.py", line 71, in paginate objects = paginator.page(page_num) File "/opt/mailmanve/lib64/python3.6/site-packages/django_mailman3/lib/paginator.py", line 47, in page result = self.function(count=self.per_page, page=number) File "/opt/mailmanve/lib64/python3.6/site-packages/mailmanclient/restobjects/mailinglist.py", line 132, in get_held_page return Page(self._connection, url, HeldMessage, count, page) File "/opt/mailmanve/lib64/python3.6/site-packages/mailmanclient/restbase/page.py", line 37, in __init__ self._create_page() File "/opt/mailmanve/lib64/python3.6/site-packages/mailmanclient/restbase/page.py", line 62, in _create_page response, content = self._connection.call(self._build_url()) File "/opt/mailmanve/lib64/python3.6/site-packages/mailmanclient/restbase/connection.py", line 136, in call 'Could not connect to Mailman API: ', repr(e)) mailmanclient.restbase.connection.MailmanConnectionError: ('Could not connect to Mailman API: ', "ConnectionError(ProtocolError('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',)),)") ERROR 2021-02-25 17:28:14,271 393 django.request Service Unavailable: /postorius/lists/cpa-announcement.caltech.edu/held_messages ERROR 2021-02-25 17:28:14,271 393 django.request Service Unavailable: /postorius/lists/cpa-announcement.caltech.edu/held_messages
On 2/25/21 9:38 AM, dancab@caltech.edu wrote:
Mark,
Is it only this list that has an issue?
Yes, this is the only list that is having the issue.
Can you visit other pages for this list?
Yes, I'm able to view the members list, list settings, templates, etc.
I've restarted the service and tried to access the held messages for the list once again. Here's what is in the mailman log.
ERROR 2021-02-25 17:28:14,197 393 postorius Mailman REST API not available Traceback (most recent call last): File "/opt/mailmanve/lib64/python3.6/site-packages/urllib3/connectionpool.py", line 706, in urlopen chunked=chunked, File "/opt/mailmanve/lib64/python3.6/site-packages/urllib3/connectionpool.py", line 445, in _make_request six.raise_from(e, None) File "<string>", line 3, in raise_from File "/opt/mailmanve/lib64/python3.6/site-packages/urllib3/connectionpool.py", line 440, in _make_request httplib_response = conn.getresponse() File "/usr/lib64/python3.6/http/client.py", line 1346, in getresponse response.begin() File "/usr/lib64/python3.6/http/client.py", line 307, in begin version, status, reason = self._read_status() File "/usr/lib64/python3.6/http/client.py", line 276, in _read_status raise RemoteDisconnected("Remote end closed connection without" http.client.RemoteDisconnected: Remote end closed connection without response
This is from Django's log. What's in Mailman core's mailman.log?
Since everything else is accessing the REST API with no problem, I think core must be stuck on something and timing out. Is there a time delay between trying to get the held messages view and the "Mailman REST API not available. Please start Mailman core." response?
Also is there a non-zero count in the badge on the Held messages tab?
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
Thanks, I'm copying what seems like the relevant info from mailman.log below. Sorry, I totally missed that log existed!
There's very little time delay from the moment I click to view the held messages and receiving the API error.
There is a non-zero count in the badge for the Held Messages tab. It shows "1" as expected.
[25/Feb/2021:09:28:14 -0800] "GET /3.1/lists/cpa-announcement@caltech.edu/held?count=0&page=1 HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.2" [2021-02-25 09:28:14 -0800] [462] [ERROR] Socket error processing request. Traceback (most recent call last): File "/opt/mailmanve/lib64/python3.6/site-packages/gunicorn/workers/sync.py", line 134, in handle self.handle_request(listener, req, client, addr) File "/opt/mailmanve/lib64/python3.6/site-packages/gunicorn/workers/sync.py", line 190, in handle_request util.reraise(*sys.exc_info()) File "/opt/mailmanve/lib64/python3.6/site-packages/gunicorn/util.py", line 625, in reraise raise value File "/opt/mailmanve/lib64/python3.6/site-packages/gunicorn/workers/sync.py", line 175, in handle_request respiter = self.wsgi(environ, resp.start_response) File "/opt/mailmanve/lib64/python3.6/site-packages/mailman/database/transaction.py", line 50, in wrapper 18,1 Top raise value File "/opt/mailmanve/lib64/python3.6/site-packages/gunicorn/workers/sync.py", line 175, in handle_request respiter = self.wsgi(environ, resp.start_response) File "/opt/mailmanve/lib64/python3.6/site-packages/mailman/database/transaction.py", line 50, in wrapper rtn = function(*args, **kws) File "/opt/mailmanve/lib64/python3.6/site-packages/mailman/rest/wsgiapp.py", line 193, in __call__ return super().__call__(environ, start_response) File "falcon/api.py", line 274, in falcon.api.API.__call__ File "falcon/api.py", line 269, in falcon.api.API.__call__ File "/opt/mailmanve/lib64/python3.6/site-packages/mailman/rest/post_moderation.py", line 174, in on_get resource = self._make_collection(request) File "/opt/mailmanve/lib64/python3.6/site-packages/mailman/rest/helpers.py", line 182, in _make_collection entries = [as_dict(resource) for resource in collection] File "/opt/mailmanve/lib64/python3.6/site-packages/mailman/rest/helpers.py", line 182, in <listcomp> entries = [as_dict(resource) for resource in collection] File "/opt/mailmanve/lib64/python3.6/site-packages/mailman/rest/post_moderation.py", line 164, in _resource_as_dict resource = self._make_resource(request.id) File "/opt/mailmanve/lib64/python3.6/site-packages/mailman/rest/post_moderation.py", line 76, in _make_resource msg = getUtility(IMessageStore).get_message_by_id(key) File "/opt/mailmanve/lib64/python3.6/site-packages/mailman/database/transaction.py", line 85, in wrapper return function(args[0], config.db.store, *args[1:], **kws) File "/opt/mailmanve/lib64/python3.6/site-packages/mailman/model/messagestore.py", line 103, in get_message_by_id return self._get_message(row) File "/opt/mailmanve/lib64/python3.6/site-packages/mailman/model/messagestore.py", line 95, in _get_message with open(path, 'rb') as fp: FileNotFoundError: [Errno 2] No such file or directory: '/var/tmp/mailman/messages/XC/DU/XCDUNGGCTVSN7RGCW5F3WXM5T2WEHCCJ'
On 2/26/21 4:23 PM, dancab@caltech.edu wrote:
Thanks, I'm copying what seems like the relevant info from mailman.log below. Sorry, I totally missed that log existed!
FileNotFoundError: [Errno 2] No such file or directory: '/var/tmp/mailman/messages/XC/DU/XCDUNGGCTVSN7RGCW5F3WXM5T2WEHCCJ'
This is the issue. The held message is gone. The reason is that your configuration for mailman.config.config.MESSAGE_DIR is apparently '/var/tmp/mailman/messages' and something has removed stuff in it behind your back.
It appears you either have explicitly or by default layout: local in your mailman.cfg. See <https://gitlab.com/mailman/mailman/-/blob/master/src/mailman/config/mailman.cfg>. The value of layout determines which paths.* section is used. In your case, the local layout puts stuff in /var/tmp/mailman and apparently, something is 'cleaning' that.
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
Ok, thanks. I'll need to reproduce what happened somehow.
Any suggestions on how to clear this "held message" notification from the database?
If necessary I can just re-initialize everything but it would be helpful to know if there's just a row I could drop.
Thanks again.
On 3/1/21 12:58 PM, dancab@caltech.edu wrote:
Ok, thanks. I'll need to reproduce what happened somehow.
Any suggestions on how to clear this "held message" notification from the database?
If necessary I can just re-initialize everything but it would be helpful to know if there's just a row I could drop.
I would d delete rows from 3 tables. I would first
SELECT * from message WHERE path = 'XC/DU/XCDUNGGCTVSN7RGCW5F3WXM5T2WEHCCJ';
then
SELECT * from pendedkeyvalue WHERE type = 'id AND value = <the id of the message table>;
Then
SELECT * from pendedkeyvalue WHERE pended_id = <the pended_id from above>;
This should return 2 rows, the type = id from above and a type = 'held message'
Then I would delete the row from the pended table with id = that pended_id and the two rows from the pendedkeyvalue table and the row from the message table.
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
Thanks Mark. I ended up just restoring the database from a backup.
One last question. One more question.
I'm testing a custom footer via the template creation tool in Postorius.
However my messages aren't being delivered when I have the template activated.
If I delete the template then suddenly my message goes through.
I see the out queue folder seems to have the message stuck.
The smtp.log is just filling up with the output below.
Mar 04 11:44:33 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:33 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f49976f0710> Mar 04 11:44:33 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:33 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f49977ea390> Mar 04 11:44:33 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:33 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f4997895e48> Mar 04 11:44:33 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:34 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f499770e908> Mar 04 11:44:34 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:34 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f49978f2f28> Mar 04 11:44:34 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:34 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f49977e8320> Mar 04 11:44:34 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:34 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f499784c588> Mar 04 11:44:34 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:34 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f499775c860> Mar 04 11:44:34 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:34 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f49976f79e8> Mar 04 11:44:34 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:34 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f499775e9e8> Mar 04 11:44:34 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:34 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f499aa18b00> Mar 04 11:44:34 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:34 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f499aa66ac8> Mar 04 11:44:34 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:34 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f499784fcf8> Mar 04 11:44:34 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:34 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f49976df080> Mar 04 11:44:34 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:34 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f499d64d438> Mar 04 11:44:34 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:34 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f499780b160> Mar 04 11:44:34 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:34 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f499784c048> Mar 04 11:44:34 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:35 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f499784ceb8> Mar 04 11:44:35 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:35 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f49977f8828> Mar 04 11:44:35 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:35 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f4997764160> Mar 04 11:44:35 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:35 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f499784c2e8> Mar 04 11:44:35 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:35 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f49978b2cc0> Mar 04 11:44:35 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:35 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f49978d89b0> Mar 04 11:44:35 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:35 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f4997a374e0> Mar 04 11:44:35 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:35 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f499775c470> Mar 04 11:44:35 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:35 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f49978d8dd8> Mar 04 11:44:35 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:35 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f499784f9e8> Mar 04 11:44:35 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:35 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f499784ce48> Mar 04 11:44:35 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:35 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f499aa60860> Mar 04 11:44:35 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu Mar 04 11:44:35 2021 (416) Using agent: <mailman.mta.deliver.Deliver object at 0x7f4997819e80> Mar 04 11:44:35 2021 (416) IndividualDelivery to: dancab@systems.caltech.edu
On 3/4/21 11:44 AM, dancab@caltech.edu wrote:
One last question. One more question.
I'm testing a custom footer via the template creation tool in Postorius.
However my messages aren't being delivered when I have the template activated.
If I delete the template then suddenly my message goes through.
I see the out queue folder seems to have the message stuck.
See <https://gitlab.com/mailman/mailman/-/issues/760>
Remove the Postorius template and install it in the file system as in <https://gitlab.com/mailman/mailman/-/issues/760#note_521886834>
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
I just tested this with the heads of the GitLab branches for Postorius and Mailman core, and I don't see this issue. I did see an issue in that if the footer template did not end with a newline, the footer wasn't added, but I didn't see any looping behavior.
With a Postorius template, what do you get from
curl -o - https://example.com/postorius/api/templates/list/listname.example.com/list:member:regular:footer
Thanks. I think that may be the issue is with http vs https.
I checked the templates table in MySQL. The URL has 'http' and not 'https'.
So the curl returns a 301 error instead of the contents of the template.
I could try a rewrite rule instead of a redirect. But is there a configuration I can change to affect that entry?
Would this be the setting below? I thought that was for encrypting the Mailman API connection. I'm running Mailman Core and Postorius on the same host so just using 127.0.0.1 for internal traffic.
[webservice] use_https: no
I started checking all my settings and found the problem in the Django settings.py file.
POSTORIUS_TEMPLATE_BASE_URL = 'https://mailman3.caltech.edu'
My footer template works now!
Thanks again for all your help. I think we're getting close to putting this into production. Just going to have some of our users do some QA and testing with real lists migrated from Mailman2.
dancab@caltech.edu writes:
I started checking all my settings and found the problem in the Django settings.py file.
POSTORIUS_TEMPLATE_BASE_URL = 'https://mailman3.caltech.edu'
My footer template works now!
Ouch! Somebody should have suggested that, and not left it for you to find. :-( Glad you got things working. Thank you for reporting your success!
Steve
participants (3)
-
dancab@caltech.edu
-
Mark Sapiro
-
Stephen J. Turnbull