What is this EMail trying to tell me
by Martin Lorenz
Since I rebootet my VPS yesterday I get tons of these and can't find out what's wrong.
Please help.
-------- Weitergeleitete Nachricht --------
Betreff: [Django] ERROR (EXTERNAL IP): Service Unavailable: /mailman3/lists/ku-venne-2020.list.poc.im/
Datum: Fri, 09 Dec 2022 04:58:15 -0000
Von: django(a)poc.im
An: root@localhost
Service Unavailable: /mailman3/lists/ku-venne-2020.list.poc.im/
Report at /mailman3/lists/ku-venne-2020.list.poc.im/
Service Unavailable: /mailman3/lists/ku-venne-2020.list.poc.im/
Request Method: GET
Request URL: http://list.holoclan.de/mailman3/lists/ku-venne-2020.list.poc.im/
Django Version: 3.0.14
Python Executable: /opt/mailman/venv/bin/uwsgi
Python Version: 3.9.2
Python Path: ['.', '', '/etc/mailman3', '/usr/lib/python39.zip', '/usr/lib/python3.9', '/usr/lib/python3.9/lib-dynload', '/opt/mailman/venv/lib/python3.9/site-packages']
Server time: Fri, 9 Dec 2022 04:58:15 +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: AnonymousUser
GET: No GET data
POST: No POST data
FILES: No FILES data
COOKIES: No cookie data
META:
HTTP_ACCEPT = '*/*'
HTTP_ACCEPT_CHARSET = 'utf-8;q=0.7,iso-8859-1;q=0.2,*;q=0.1'
HTTP_CONNECTION = 'close'
HTTP_HOST = 'list.holoclan.de'
HTTP_USER_AGENT = 'Mozilla/5.0 (compatible; DotBot/1.2; +https://opensiteexplorer.org/dotbot; help(a)moz.com)'
HTTP_X_FORWARDED_FOR = '216.244.66.197'
HTTP_X_FORWARDED_HOST = 'list.holoclan.de'
HTTP_X_FORWARDED_PROTO = 'http'
PATH_INFO = '/mailman3/lists/ku-venne-2020.list.poc.im/'
QUERY_STRING = ''
REMOTE_ADDR = '127.0.0.1'
REQUEST_METHOD = 'GET'
REQUEST_URI = '/mailman3/lists/ku-venne-2020.list.poc.im/'
SCRIPT_NAME = ''
SERVER_NAME = 'arda.holoclan.de'
SERVER_PORT = '8000'
SERVER_PROTOCOL = 'HTTP/1.0'
uwsgi.core = 1
uwsgi.node = b'arda.holoclan.de'
uwsgi.version = b'2.0.20'
wsgi.errors = <_io.TextIOWrapper name=2 mode='w' encoding='UTF-8'>
wsgi.file_wrapper = ''
wsgi.input = <uwsgi._Input object at 0x7f8d77ae15f0>
wsgi.multiprocess = True
wsgi.multithread = True
wsgi.run_once = False
wsgi.url_scheme = 'http'
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', 'root@localhost'),)"
ALLOWED_HOSTS = ['localhost', '127.0.0.1', 'list.holoclan.de', 'list.poc.im', 'list.lorenz.im']
APPEND_SLASH = True
AUTHENTICATION_BACKENDS = "('django.contrib.auth.backends.ModelBackend', 'allauth.account.auth_backends.AuthenticationBackend')"
AUTH_PASSWORD_VALIDATORS = '********************'
AUTH_USER_MODEL = 'auth.User'
BASE_DIR = PosixPath('/opt/mailman/web')
CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
CACHE_MIDDLEWARE_ALIAS = 'default'
CACHE_MIDDLEWARE_KEY_PREFIX = '********************'
CACHE_MIDDLEWARE_SECONDS = 600
COMPRESSORS = {'css': 'compressor.css.CssCompressor', 'js': 'compressor.js.JsCompressor'}
COMPRESS_CACHEABLE_PRECOMPILERS = '()'
COMPRESS_CACHE_BACKEND = 'default'
COMPRESS_CACHE_KEY_FUNCTION = '********************'
COMPRESS_CLEAN_CSS_ARGUMENTS = ''
COMPRESS_CLEAN_CSS_BINARY = 'cleancss'
COMPRESS_CLOSURE_COMPILER_ARGUMENTS = ''
COMPRESS_CLOSURE_COMPILER_BINARY = 'java -jar compiler.jar'
COMPRESS_CSS_HASHING_METHOD = 'mtime'
COMPRESS_DATA_URI_MAX_SIZE = 1024
COMPRESS_DEBUG_TOGGLE = None
COMPRESS_ENABLED = True
COMPRESS_FILTERS = {'css': ['compressor.filters.css_default.CssAbsoluteFilter', 'compressor.filters.cssmin.rCSSMinFilter'], 'js': ['compressor.filters.jsmin.rJSMinFilter']}
COMPRESS_JINJA2_GET_ENVIRONMENT = <function CompressorConf.JINJA2_GET_ENVIRONMENT at 0x7f8d816d30d0>
COMPRESS_MINT_DELAY = 30
COMPRESS_MTIME_DELAY = 10
COMPRESS_OFFLINE = True
COMPRESS_OFFLINE_CONTEXT = {'STATIC_URL': '/static/'}
COMPRESS_OFFLINE_MANIFEST = 'manifest.json'
COMPRESS_OFFLINE_MANIFEST_STORAGE = 'compressor.storage.OfflineManifestFileStorage'
COMPRESS_OFFLINE_TIMEOUT = 31536000
COMPRESS_OUTPUT_DIR = 'CACHE'
COMPRESS_PARSER = 'compressor.parser.AutoSelectParser'
COMPRESS_PRECOMPILERS = "(('text/x-scss', 'sassc -t compressed {infile} {outfile}'), ('text/x-sass', 'sassc -t compressed {infile} {outfile}'))"
COMPRESS_REBUILD_TIMEOUT = 2592000
COMPRESS_ROOT = '/opt/mailman/web/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.postgresql_psycopg2', 'NAME': 'mailmanweb', 'USER': 'mailman', 'PASSWORD': '********************', 'HOST': 'localhost', 'PORT': '5432', '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 = 'mailman(a)list.poc.im'
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 = 25
EMAIL_SSL_CERTFILE = None
EMAIL_SSL_KEYFILE = '********************'
EMAIL_SUBJECT_PREFIX = '[Django] '
EMAIL_TIMEOUT = None
EMAIL_USE_LOCALTIME = False
EMAIL_USE_SSL = False
EMAIL_USE_TLS = False
FILE_CHARSET = 'utf-8'
FILE_UPLOAD_DIRECTORY_PERMISSIONS = None
FILE_UPLOAD_HANDLERS = ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler']
FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440
FILE_UPLOAD_PERMISSIONS = 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': 'fulltext_index'}}
HYPERKITTY_ENABLE_GRAVATAR = True
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': 'INFO', 'class': 'logging.handlers.WatchedFileHandler', 'filename': '/opt/mailman/web/logs/mailmanweb.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': 'INFO'}}, '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://localhost:8000'
PREPEND_WWW = False
Q_CLUSTER = {'retry': 360, 'timeout': 300, 'save_limit': 100, 'orm': 'default'}
ROOT_URLCONF = 'mailman_web.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 = None
SECURE_REDIRECT_EXEMPT = []
SECURE_REFERRER_POLICY = None
SECURE_SSL_HOST = None
SECURE_SSL_REDIRECT = False
SERVER_EMAIL = 'django(a)poc.im'
SESSION_CACHE_ALIAS = 'default'
SESSION_COOKIE_AGE = 1209600
SESSION_COOKIE_DOMAIN = None
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_NAME = 'sessionid'
SESSION_COOKIE_PATH = '/'
SESSION_COOKIE_SAMESITE = 'Lax'
SESSION_COOKIE_SECURE = False
SESSION_ENGINE = 'django.contrib.sessions.backends.db'
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
SESSION_FILE_PATH = None
SESSION_SAVE_EVERY_REQUEST = False
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'
SETTINGS_MODULE = 'settings'
SHORT_DATETIME_FORMAT = 'm/d/Y P'
SHORT_DATE_FORMAT = 'm/d/Y'
SIGNING_BACKEND = 'django.core.signing.TimestampSigner'
SILENCED_SYSTEM_CHECKS = []
SITE_ID = 1
SOCIALACCOUNT_PROVIDERS = {'openid': {'SERVERS': [{'id': 'yahoo', 'name': 'Yahoo', 'openid_url': 'http://me.yahoo.com'}]}, 'google': {'SCOPE': ['profile', 'email'], 'AUTH_PARAMS': {'access_type': 'online'}}, 'facebook': {'METHOD': 'oauth2', 'SCOPE': ['email'], 'FIELDS': ['email', 'name', 'first_name', 'last_name', 'locale', 'timezone'], 'VERSION': 'v2.4'}}
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 = '/opt/mailman/web/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 = False
USE_X_FORWARDED_PORT = False
WSGI_APPLICATION = 'mailman_web.wsgi.application'
X_FRAME_OPTIONS = 'DENY'
YEAR_MONTH_FORMAT = 'F Y'
3 years, 6 months
Re: Archive search failing on one list
by Stephen J. Turnbull
Mark writes:
> as I kept getting an error when starting:�
>
> #django-admin shell
> >>> from hyperkitty.models.mailinglist import MailingList
> ...
> django.core.exceptions.ImproperlyConfigured ...
This suggests to me that you have multiple versions of Python and/or
Django installed. This is an advantage of using a venv -- once
activated, you are much more likely to get a well-defined, consistent
set of utilities and libraries.
By the way, does that # prompt mean you are logged in as root while
you're working with Mailman? That is inadvisable, as if you change
anything there is a chance that root will be the owner of the file,
and the list user will not be able to work with it.
Also, if you have mailman-web installed, I recommend using that rather
than django-admin or python3 manage.py. Each Django application may
have its own copy of django-admin (not usually, but I've seen it
happen) and definitely will have its own copy of manage.py.
mailman-web knows how to work with both HyperKitty and Postorius
without getting confused about that.
> Does this (missing list_id) give any clue as to why the
> archive-search isn't working, or is just that starting with "#
> python3 manage.py shell" is the wrong thing to do?
If all you're doing is querying the database, it doesn't really
matter how you do this. If you get the right copies of python3,
django-admin, and manage-py it's all just going to work. It doesn't
matter which utility you start with, it all ends up going through
the same Django modules in the end.
The process of search index construction is both CPU and wall-clock
time intensive. For this reason, the cron jobs that do regular
index updating (I think once an hour?) are separate from the utility
that constructs the index in the first place when you have existing
archives (either migrated from another MLM such as Mailman 2, or if
you're upgrading to better archive software).
Is it possible that you have most of a bunch of migrated archives
indexed because the migration process did it, but that the periodic
update process (like cron jobs, but actually run by the Django queue
task manager IIRC) is not running, so no new posts are being archived?
That fits the symptoms you described so far (that I recall).
Steve
2 years, 8 months
Re: Issues with Mail delivery after Mailman 3 installation
by Chihurumnaya Ibiam
On Fri, Feb 6, 2026 at 7:57 AM Stephen J. Turnbull <steve(a)turnbull.jp>
wrote:
> Chihurumnaya Ibiam via Mailman-users writes:
>
> About disabling dovecot:
>
> > I don't plan on shutting down the host anytime soon, so hopefully,
> > I remember to the next time it restarts.
>
> systemctl stop dovecot
> systemctl disable dovecot
> systemctl daemon-reload
>
> should do the trick without rebooting the host.
>
That did, showed it was removed from
/etc/systemd/system/multi-user.target.wants/.
>
> > Yes, postfix_lmtp table is set in transport_maps, virtual_mailbox_maps,
> > relay_domains, local_recipient_maps.
>
> Do you have lists.sugarlabs.org in $virtual_mailbox_domains? As Mark
> points out, virtual mailboxes make life more complicated. Also, I
> don't think postfix_lmtp should be in $relay_domains (that table
> contains addresses which won't match domains being looked up). If
> anything it should be postfix_domains.
>
No, I don't have virtual_mailbox_domains set, I didn't need to.
Yes, postfix_lmtp isn't in relay_domains, that was my fault, it's
postfix_domains.
>
> > > It's problematic for Mailman because that means that *all* local mail
> > > will be delivered to Mailman, which will reject it if it's not
> > > list-related.
>
> > I'm totally fine with this because that's why we setup the host,
>
> I'm sorry, that was unclear. By "list-related", I meant that "the key
> Postfix is trying to match is an exact match for a key in the
> postfix_lmtp table". Because these are hash tables, it is Postfix's
> responsibility to strip "+extension" from the recipient address before
> presenting the stripped address to the table for matching -- the table
> can't do it.
>
> Specifically, this applies to the confirmation and VERP cookies that
> may be attached to addresses for various reasons.
>
Now I understand why it's a problem.
Going by your earlier assumption that perhaps the same thing doesn't happen
for mailbox_transport,
how would I use that as a fallback in such cases?
>
> > a mailing list, which should work just fine but then it seems
> > they need to connect to this host.
>
> > 165968 Feb 5 04:48:46 lists postfix/smtp[1941010]: connect to
> > weblate.sugarlabs.org[2001:5a8:601:f::214]:25: Connection refused
> > 165969 Feb 5 04:48:46 lists postfix/smtp[1941010]: B785D1A897F: to=
> > <root(a)weblate.sugarlabs.org>, relay=none, delay=17323,
> > delays=17323/0.02/0.33/0, dsn=4.4.1, status=deferred (connect to
> > weblate.sugarlabs.org[2001:5a8:601:f::214]:25: Connection refused)
>
> This is a problem at weblate.sugarlabs.org. Is it supposed to be
> receiving mail? I don't think that this is an authentication problem
> (SASL authentication takes place after connection), although if
> "weblate" expects authenticated TLS that might be the problem. So
> "lists" needs to be whitelisted (eg in $mynetworks) at weblate (I
> suppose Postfix is also the MTA at "weblate"?) If you have only the
> toplevel domain sugarlabs.org whitelisted, you may need to set another
> parameter to automatically include subdomains such as lists.sugarlabs.org.
>
>
No, weblate isn't supposed to receive email. It runs a service that sends
emails just like MM3.
Yes, postfix is also the MTA at weblate.
I can include subdomains, but I don't see a reason for doing so at the
moment.
One thing I had done to remediate the error - which didn't do anything from
the logs - is add check_client_access hash:/etc/postfix/client_access
in smtpd_client_restrictions.
> > No, I'm not running mailman as root, it's run as mailman.
> > Seeing as that's the case, would I still need to change lmtp_port?
>
> Yes, as far as I know. That's because by convention ports < 1024 can
> only bound to programs running as root (enforced by the kernel). I
> don't understand how Mailman is receiving mail configured to listen on
> port 24. This may have something to do with dovecot running.
>
> However I really don't understand the lsof output, because you present
> logs that indicate that Mailman is processing mail for lists, but
> nothing was listening or connected on port 24. You also say Postorius
> and HyperKitty are running, but nothing showed up on port 8000, which
> is where they would be listening. Maybe I got the lsof options wrong,
> but it did find Postgres and Mailman's REST API.
>
Me configuring lmtp_port to 24 earlier did interfere with Mailman because
I had dovecot
running on the same port at the time, after disabling dovecot and
commenting out lmtp_port, I noticed
Mailman listening on 8024, postfix_lmtp also showed this.
I don't know why Postorious and Hyperkitty didn't show up at the time, but
I just ran lsof and this is the output;
$ lsof -i TCP(a)127.0.0.1 -i 'TCP@[::1]' | grep 24
python3 1983955 mailman 26u IPv4 181237054 0t0 TCP
localhost:8024 (LISTEN)
uwsgi 1985531 mailman 9u IPv4 181247623 0t0 TCP
localhost:8000 (LISTEN)
uwsgi 1985547 mailman 9u IPv4 181247623 0t0 TCP
localhost:8000 (LISTEN)
uwsgi 1985548 mailman 9u IPv4 181247623 0t0 TCP
localhost:8000 (LISTEN)
mailman-w 1985554 mailman 44u IPv6 185803776 0t0 TCP
localhost:60244->localhost:postgresql (ESTABLISHED)
postgres 2458591 postgres 9u IPv6 185580185 0t0 TCP
localhost:postgresql->localhost:43102 (ESTABLISHED)
postgres 2458595 postgres 9u IPv6 185581026 0t0 TCP
localhost:postgresql->localhost:43140 (ESTABLISHED)
postgres 2458607 postgres 9u IPv6 185579124 0t0 TCP
localhost:postgresql->localhost:43234 (ESTABLISHED)
postgres 2482767 postgres 9u IPv6 185805780 0t0 TCP
localhost:postgresql->localhost:60244 (ESTABLISHED)
postgres 2482831 postgres 9u IPv6 185807057 0t0 TCP
localhost:postgresql->localhost:56188 (ESTABLISHED)
postgres 3568035 postgres 5u IPv6 160224851 0t0 TCP
localhost:postgresql (LISTEN)
postgres 3568035 postgres 6u IPv4 160224852 0t0 TCP
localhost:postgresql (LISTEN)
Which shows the expected ports being listened on, I'll assume the issue
with Postorious was probably because the mailmanweb service stopped at some
point
as I tried to restart it and that was basically running uwsgi, it didn't
run and when I looked further I noticed uwsgi was running so
there was no need to do this, as that's what it was trying to do.
> > It did get it working, I can see mail being sent in the logs.
> > I sent a ping to the systems list just to get delivery confirmation
> > and I'm yet to get a response.
>
> I don't have an idea what's going on yet. The mail you see being sent
> in the logs, is that to a gmail address? Or is it a sugarlabs.org
> address? (Both of these seem to be problematic at the moment.)
>
It was to a sugarlabs.org address, I've been able to receive mail owner
messages to my inbox, I configured a gmail address
as the admin for Mailman suite, which indicates that mail delivery works as
expected.
> > > > > What does "lsof -i @127.0.0.1 -i '@[::1]' | grep 24" output?
> > >
> > > > python3 1592922 mailman 27u IPv4 177685024 0t0 TCP
> > > localhost:8001 (LISTEN)
> > > > python3 1592949 mailman 27u IPv4 177685024 0t0 TCP
> > > localhost:8001 (LISTEN)
> > > > python3 1592950 mailman 27u IPv4 177685024 0t0 TCP
> > > localhost:8001 (LISTEN)
> > >
> > > The above are Mailman (actually, a gunicorn application) listening for
> > > connections to its REST API. These are HTTP listeners used by
> > > Postorius and HyperKitty (I guess those aren't running?), not for
> email.
> > >
> >
> > Postorius and HyperKitty are running.
>
> But they should show up as several Python applications running as
> mailman, listening or connected on port 8000. But they're not here.
> Try "lsof -i :8000 -i :24".
>
I agree, I've explained a probable cause above. They now show up in the
lsof output.
> > This is one that's consistent with Dovecot in the logs;
>
> This is Postfix sending a non-delivery notification about A26F71A8977:
> > 157323 Feb 4 12:27:02 lists postfix/bounce[1587396]: A26F71A8977:
> sender non-delivery notification: AC7381A8978
>
> The <> tells us that this is the nondelivery notification referred to
> as AC7381A8978 so there's no return address to send to:
> > 157324 Feb 4 12:27:02 lists postfix/qmgr[1593314]: AC7381A8978:
> from=<>, size=3129, nrcpt=1 (queue active)
>
> postfix/local looks at mailbox_transport and sends it to lmtp, where
> dovecot is listening;
>
mailbox_transport currently doesn't have a value.
> > 157325 Feb 4 12:27:02 lists postfix/local[1593315]: AC7381A8978:
> passing <mailman(a)lists.sugarlabs.org> to transport=lmtp
> > 157326 Feb 4 12:27:02 lists dovecot: lmtp(1600482): Connect from
> 127.0.0.1
>
> Postfix is done with A26F71A8977, and pops it off the queue:
> > 157327 Feb 4 12:27:02 lists postfix/qmgr[1593314]: A26F71A8977:
> removed
>
> dovecot denies knowing about a local user named "mailman", rejecting it:
>
Yes, this probably because I haven't properly configured user lookup on
dovecot.
> > 157328 Feb 4 12:27:02 lists postfix/lmtp[1593316]: AC7381A8978:
> > to=<mailman(a)lists.sugarlabs.org>, relay=localhost[127.0.0.1]:24,
> delay=0.04,
> > delays=0.02/0/0/0.01, dsn=5.1.1, status=bounced (host
> localhost[127.0.0.1]
> > said: 550 5.1.1 <mailman(a)lists.sugarlabs.org> User doesn't exist:
> > mailman(a)lists.sugarlabs.org (in reply to RCPT TO command))
>
> dovecot says "I'm done here":
> > 157329 Feb 4 12:27:02 lists dovecot: lmtp(1600482): Disconnect from
> 127.0.0.1: Logged out (state=READY)
>
> > Which we've established that mailman doesn't know how to deliver to
> local
> > users.
>
> So that's a bounce from dovecot. I don't know enough about dovecot or
> your configuration of dovecot to guess what happened.
>
>
At the moment, I've disabled the service and have no configurations for it.
I commented out my earlier configs before disabling it.
> > Could be, doesn't seem to be an issue at the moment so I won't worry
> about
> > it.
>
> The Message-ID is syntactically well-formed. I'm worried about side
> effects from the hostname not being the FQDN in mail protocols. As
> long as all the configurations for Postfix use the FQDN (Postfix is
> smart enough to abbreviate when that's useful), there shouldn't be any
> problems like that.
>
All the configurations that are supposed to contain the FQDN does;
mydestination, mydomain, myhostname.
Am I missing any?
> > Yes, earlier when I set it up I had set the port for Mailman to use as
> 465.
>
> OK.
>
>
> --
> GNU Mailman consultant (installation, migration, customization)
> Sirius Open Source https://www.siriusopensource.com/
> Software systems consulting in Europe, North America, and Japan
>
--
Ibiam Chihurumnaya
ibiamchihurumnaya(a)gmail.com
4 months, 2 weeks
Issues encountered while upgrading to 3.3.7
by Odhiambo Washington
Hello everyone,
I am starting a new thread on this so that the issues I encountered do not
get mixed up with the other discussions.
Over the weekend I upgraded an MM3 installation to the latest versions of
the components.
I started off by creating a new venv, installing and then migrating the
configurations and the scripts.
In the end, I ended up with MM3 Core ==3.3.7,
postorius==1.3.7, HyperKitty==1.3.6, django==4.1.3.
1. SQLAlchemy - At the stage where one runs 'mailman info', I encountered
the first error:
: sqlalchemy.exc.NoSuchModuleError: Can't load plugin:
sqlalchemy.dialects:postgres
This is solved by a change in mailman.cfg so that the URI starts with
postgresql:// instead of postgres://.
SQLAlchemy used to accept both but has removed support for the postgres
name.
<https://github.com/sqlalchemy/sqlalchemy/issues/6083#issuecomment-801478013>
2. Django==4.x
At the point of running the post-update processes, particularly the
"migrate" bit, I got the following error:
: ImportError: cannot import name 'url' from 'django.conf.urls'
(/opt/mailman/mm/venv/lib/python3.9/site-packages/django/conf/urls/__init__.py)
I understand this is a consequence of the django.conf.urls.url() having
been deprecated starting version 3 and has been removed in version 4 of
Django.
https://docs.djangoproject.com/en/4.1/releases/4.0/#features-removed-in-4-0
The upgrade process seems to have brought in the newer version of Django
because now I have 4.1.3 up from 3.x
If anyone wants, I found an elaborate explanation at
https://bobbyhadz.com/blog/python-importerror-cannot-import-name-url-from-d…
.
My Google-fu found suggestions that in urls.py, I should import re_path and
use it, or alias it for url for the migrate to work.
The solution I used was to alias url to re_path, but I am considering just
doing away with url altogether. Not sure which is the better option between
using re_path or path.
So here is the patch I have used:
(venv) mailman@lists:~/mm$ diff -u urls.py.bak urls.py
--- urls.py.bak 2022-12-03 12:20:28.028090659 +0300
+++ urls.py 2022-12-03 12:36:20.298875624 +0300
@@ -17,7 +17,8 @@
# Postorius. If not, see <http://www.gnu.org/licenses/>.
-from django.conf.urls import include, url
+from django.conf.urls import include
+from django.urls import re_path as url
from django.contrib import admin
from django.urls import reverse_lazy
from django.views.generic import RedirectView
3. The last issue that I encountered is one I kind of solved, but
completely don't understand the consequences of the solution I applied:
/opt/mailman/mm/bin/django-admin migrate
<CUT>
System check identified some issues:
WARNINGS:
django_mailman3.MailDomain: (models.W042) Auto-created primary key used
when not defining a primary key type, by default
'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the
DjangoMailman3Config.default_auto_field attribute to point to a subclass of
AutoField, e.g. 'django.db.models.BigAutoField'.
django_mailman3.Profile: (models.W042) Auto-created primary key used when
not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the
DjangoMailman3Config.default_auto_field attribute to point to a subclass of
AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Attachment: (models.W042) Auto-created primary key used when not
defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the
HyperKittyConfig.default_auto_field attribute to point to a subclass of
AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Email: (models.W042) Auto-created primary key used when not
defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the
HyperKittyConfig.default_auto_field attribute to point to a subclass of
AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Favorite: (models.W042) Auto-created primary key used when not
defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the
HyperKittyConfig.default_auto_field attribute to point to a subclass of
AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.LastView: (models.W042) Auto-created primary key used when not
defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the
HyperKittyConfig.default_auto_field attribute to point to a subclass of
AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.MailingList: (models.W042) Auto-created primary key used when
not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the
HyperKittyConfig.default_auto_field attribute to point to a subclass of
AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Profile: (models.W042) Auto-created primary key used when not
defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the
HyperKittyConfig.default_auto_field attribute to point to a subclass of
AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Tag: (models.W042) Auto-created primary key used when not
defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the
HyperKittyConfig.default_auto_field attribute to point to a subclass of
AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Tagging: (models.W042) Auto-created primary key used when not
defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the
HyperKittyConfig.default_auto_field attribute to point to a subclass of
AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Thread: (models.W042) Auto-created primary key used when not
defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the
HyperKittyConfig.default_auto_field attribute to point to a subclass of
AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.ThreadCategory: (models.W042) Auto-created primary key used when
not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the
HyperKittyConfig.default_auto_field attribute to point to a subclass of
AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Vote: (models.W042) Auto-created primary key used when not
defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the
HyperKittyConfig.default_auto_field attribute to point to a subclass of
AutoField, e.g. 'django.db.models.BigAutoField'.
postorius.EmailTemplate: (models.W042) Auto-created primary key used when
not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the
PostoriusConfig.default_auto_field attribute to point to a subclass of
AutoField, e.g. 'django.db.models.BigAutoField'.
Operations to perform:
Apply all migrations: account, admin, auth, contenttypes,
django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
socialaccount
</CUT>
Here again, Google-fu came to the rescue. I added the following line to
settings_local.py and the warnings were suppressed.
DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'
I need to understand how this affects everything and how this is likely to
impact the functionality of MM3. What is the proper solution for this?
And should it be django.db.models.BigAutoField or
django.db.models.AutoField? Which is which?
--
Best regards,
Odhiambo WASHINGTON,
Nairobi,KE
+254 7 3200 0004/+254 7 2274 3223
"Oh, the cruft.", egrep -v '^$|^.*#' ¯\_(ツ)_/¯ :-)
3 years, 6 months
Re: Verification links to localhost
by Lars Bjørndal
Hi!
You wrote:
> On Sun, Feb 5, 2023 at 10:23 AM Lars Bjørndal <[1]lars(a)lamasti.net> wrote:
>
> Hi, and than you for your quick reply!
>
> You wrote:
>
> > On Sun, Feb 5, 2023 at 9:51 AM Lars Bjørndal <[1][2]lars(a)lamasti.net>
> wrote:
> >
> > The verification link I get back when trying to add an account,
> referes
> > to localhost, e.g.
> >
> > To confirm this is correct, go to [2][3]https://localhost:8000/
> accounts/
> > confirm-email/Mw:1...
> >
> > Where do I change that?
> >
> >
> > What do you have as POSTORIUS_TEMPLATE_BASE_URL value in settings?
>
> I don't have this variable anywhere in /etc/mailman3. However, I found it
> here:
>
> ./venv/lib/python3.10/site-packages/mailman_web/settings/
> mailman.py:POSTORIUS_TEMPLATE_BASE_URL = '[4]http://localhost:8000'
>
> In which config file should that variable be set, and how do I set it so
> that mailman can works for multiple domains?
>
>
> Because it is still too early in your quest to get to run Mailman3, I'd advise
> that you take your time to follow this guide:
> [5]https://docs.mailman3.org/en/latest/install/virtualenv.html#
> It is the official installation guide.
Yes, I've followed it, maybe with some errors.
> There is a step where it tells you to create a file named settings.py, in a
> particular path. You really need that step.
Yes, I have the file /etc/mailman3/settings.py, but in that file, I didn't have the variable in question.
> Regarding your question about multiple domains, that is already well taken care
> of when you create a list either via Postorius or the cli:
> (venv) [mailman@gw /opt/mailman]$mailman create [6]list1(a)domain1.name
> (venv) [mailman@gw /opt/mailman]$mailman create [7]another-lis(a)domain2.name
>
> Mailman will know how to handle this in conjunction with your MTA.
That's right. But, still, when I set the SITE_ID = 0, I get an server error when trying to connect. I also get mail from Django that states the error. I'm not sure how to fix it.
Thanks, Lars
[...]
> References:
>
> [1] mailto:lars@lamasti.net
> [2] mailto:lars@lamasti.net
> [3] https://localhost:8000/accounts/
> [4] http://localhost:8000/
> [5] https://docs.mailman3.org/en/latest/install/virtualenv.html#
> [6] mailto:list1@domain1.name
> [7] mailto:another-lis@domain2.name
3 years, 4 months
Re: Member Issue Discovered
by Brian Carpenter
On 10/19/20 9:04 PM, Mark Sapiro wrote:
> I suppose it could be considered a bug, but what's happening is your
> initial subscribe created a user and and address and set the user's
> preferred address to the created address. It also set the display_name
> of the address and it subscribed the user to the list or possibly the
> address to the list depending on what actually did the subscribe.
>
> When the user/address was unsubscribed, it is removed from the list's
> membership and the list was removed from the user's memberships, but the
> user and address still existed.
>
> Then when you resubscribed, the existing user/address was made a member
> of the list, but not updated so the "new" display_name was ignored. I
> think this is also the case if the original address had no display_name.
>
> You could say this is a bug and the display_name associated with this
> new subscription should replace the prior one, but what if that address
> was subscribed to other lists and didn't want the display_name changed
> on those lists.
>
> Ideally (perhaps) there could be multiple address records with the same
> email address and different display_names, but address records are keyed
> by email address, so this can't be.
>
> One workaround would be for a user who wanted to have an address with
> different display_names for different lists to have multiple addresses
> likeaddress+list1@example.com,address+list2@example.com, etc.
>
> Is this really an issue that should be fixed or just a curiosity?
No. No. No.
No one set their preferred address here at all. The first incident was
an imported list member who was not a registered user. They wanted their
real name changed to something else. The list owner tried to figured out
how to do that, found no way to do it, figured out it was just easier to
unsubscribe them, and resubscribed them to the list using a different
name. The old name showed up again. This is a bug and please fix it
soon. This has nothing to do with being subscribed to other lists. I can
probably come up with a workaround using Affinity (one of the benefits
of moving away from Postorius) but I can't imagine this not being a
serious issue as Mailman 3/Postorius is more widely adopted.
--
Brian Carpenter
Harmonylists.com
Emwd.com
5 years, 8 months
Re: Easiest way to install a new mailman3 deployment?
by Allan Hansen
All,
I asked Brian to help with the installation of Mailman after I and 2 experts each made attempts and got bogged down in incomprehensible installation instructions and gave up. Brian did it in short order and has been extremely helpful since.
No, he is not paying me for this. No, I have not invested in EMWD.
Yes, I just want to recommend a service that is more than worth it.
Happy New Year to all. Especially to the tireless people who have supported Mailman installations for decades, including my own installations.
Without you, not many installations would be humming.
Yours,
Allan Hansen
hansen(a)rc.org
> On Dec 31, 2020, at 17:28 , Brian Carpenter <brian_carpenter(a)emwd.com> wrote:
>
>
>
> On 12/31/20 8:13 PM, ieso(a)johnwillson.com wrote:
>> So I've been trying for the last two weeks to get a new mailman3 server running on a virtualized server (any server), and I'm turning to this list after having failed many times and running out of holiday time.
>>
>> I started trying a non-docker installation on Ubuntu 18.04 (https://docs.google.com/document/d/1xIcSsoNFp2nHi7r4eQys00s9a0k2sHhu1V5Plan…) , which got me the closest. Except I had a problem with inbound email only being triggered when it came from certain accounts. But that clearly wasn't good enough for production, so after many attempts to figure out where it was failing, I decided to turn to docker as a solution that should be cleaner.
>>
>> A few attempts at doing a docker installation on digitalocean.com failed, which I realized might be due to it not routing private IP addresses, so I moved to AWS after checking that their VPC policy would fit mailman's docker requirements. I found a great but slightly outdated guide on how to do this (https://xiaoxing.us/2018/01/01/deploy-mailman-3-on-aws-using-docker/) By this point I knew enough to correct a number of places where the environment had changed since the procedure was written, but postorius still failed at the curl test.
>>
>> The challenge for me has been the difficulty to know how to troubleshoot the different different systems and network infrastructure that are used to keep mailman3 humming. I've tried about 7 different installation walkthroughs (there are no recent ones on Youtube by the way, in case anyone wants to seize that opportunity!), and the good guides provide ways to check each stage to try to help you a bit on that front.
>>
>> Nonetheless, I feel stuck and thought I'd ask the simple question... for a completely basic, barebones new installation, what's the easiest way to get a mailman3 installation up-and running? (e.g. Which server provider? Which operating system and version? Docker or otherwise?)
>>
>> Any pointers highly appreciated. Google Groups is clearly on its way out, as it no longer allows for people to easily join groups by sending an email or clicking a link, so that should be a big opportunity for mailman3 to step up and help give those mailing list migrants a new home... which is what we're looking for. We're just not quite as smart as you guys. ;-)
>> _______________________________________________
>> Mailman-users mailing list -- mailman-users(a)mailman3.org
>> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
> If you are looking for commercial assistance, please visit our Mailman 3 hosting site at https://mailmanhost.com (Harmony Lists). Feel free to contact me off list if you have any questions.
>
> For us, we chose Debian 10, Postfix, Nginx, and PostgreSQL as the server environment for Mailman 3. We used PIP via a Python virtual environment to install Mailman 3 from source. The Debian packages I believe have older versions of Mailman 3/Postorius/Hyperkitty which is why we went with source. I have a walk-through that is a work in project at:
>
> https://wiki.list.org/DOC/Howto_Install_Mailman3_On_Debian10
>
> I am available to hire to install Mailman 3 for you if you want to run your own server.
>
> With Harmony Lists, we went a step further with Mailman 3 and created our own custom interfaces: Affinity (admin) and Empathy (forum/archive). However they are only available to our own Mailman 3 clients.
>
> Have a Happy New Year.
>
> --
> Brian Carpenter
> Harmonylists.com
> Emwd.com
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
5 years, 5 months
Re: [Mailman-Developers] How to know the URLs for CURL while getting or modifying the data of mailman 3
by Stephen J. Turnbull
Shashi,
This whole thread is off-topic for the developers list. This list is
for development of Mailman, not for teaching people to use it. Read
the whole recommended documentation before you ask busy developers to
tutor you in very basic things. There's a mailman-users(a)mailman3.org
list for users to help each other. All of the Mailman developers who
might be willing to answer your questions are there as well, but there
are also many experienced users, some of whom have experimented with
the REST API who will also help. Please reply there for further
help. (Reply-To is set.)
That said, there are plenty of URLs in the API documentation. Here's
a hint: search for "dump_json". That function takes an URL. You may
want https: instead of http: in your URLs, and you may need to change
the port from 9001, depending on the configuration of your REST
server. Try it with simple GET requests for information first, such
as for domains or lists. You can also do these requests with an
ordinary web browser, though I don't know what it will do with the
JSON-formatted reply.
If you don't have domains and lists configured, I suppose the
informational requests will come back as empty JSON objects. It
should be safe to make them. You can either use Postorius to
bootstrap a few example domains, lists, and users, or (the hard way)
figure out how to POST appropriate requests. I don't recommend trying
to update the backend DBMS by hand; the schema is quite complicated.
I don't know how to use curl to update Mailman's databases. That
requires a POST request which I have never done with curl. The POST
request needs to be valid JSON.
The more I think about this, the less I think your idea of using curl
is worthwhile, because formatting JSON requests by hand is going to be
a real annoyance and a great way to mess up your database with
spurious information. You're really going to want programmatic
support for this. But that's already all available in Python in the
Mailman system.
It's up to you, but I feel a responsibility to warn you that using
curl is not going to be simpler than learning enough Python to do
these things.
Regards,
6 years, 1 month
Re: Is there a way of recording bounce messages?
by Mohsen Masoudfar
Thank you Mark!
[EXTERNAL EMAIL]
On 9/26/23 11:29, Mohsen Masoudfar wrote:
>
> I'm dealing with the same issue. Upon reviewing the logs, I've noticed a significant number of bounced emails for a particular mailing list. Gmail users have reported not receiving emails.
> I haven't been able to locate the "munge from" information. My current setup is using Mailman 3.1.1. I read it has been introduced in 3.2.
DMARC mitigations were introduced in Mailman 3.1.0. They should be
available in 3.1.1. They were first exposed in Postorius 1.1.0.
Where are you looking for DMARC mitigations?
>> Sorry, It was my misunderstanding. DMARC mitigation is functioning well for newly created lists, even with Gmail addresses.
>> I am suspicious that Gmail might be rejecting or bouncing emails from the list due to the reputation of those lists.
>> It's worth noting that I am not the owner of the lists, but admin the Mailman3 infrastructure. My objective is to determine if our suspicious is accurate, whether Gmail is rejecting emails because of the bad reputation. We have asked Google, but no response so far.
>> I am interested to know more about the reasons behind these bounces, they are all handled by Postfix and deleted.
> The Question is what to do with Mailman 3.1.1, if the upgrade is not an option.
>
> I get in the logs messages like below with several Queue-ids:
>
> Sep 25 09:03:55 localhost postfix/smtpd[26692]: 147583E927: client=a14-93.smtp-out.amazonses.com[54.240.14.93]
> Sep 25 09:03:55 localhost postfix/cleanup[26696]: 147583E927: message-id=<0100018acb94b326-fdf39193-144e-4fdc-8faf-0d3df54eb4ee-000000(a)email.amazonses.com>
> Sep 25 09:03:55 localhost postfix/qmgr[1298]: 147583E927: from=<>, size=24934, nrcpt=1 (queue active)
> Sep 25 09:03:55 localhost postfix/lmtp[26697]: 147583E927: to=<listname-bounces@servername>, relay=127.0.0.1[127.0.0.1]:8024, delay=0.03, delays=0.01/0/0/0.01, dsn=2.0.0, status=sent (250 Ok)
> Sep 25 09:03:55 localhost postfix/qmgr[1298]: 147583E927: removed
This only says that some Amazon MTA has relayed a bounce to Mailman. It
says nothing about why the message bounced.
>> Is there a way to send them to a mailbox? Or prevent them from being deleted, so that I can look into the message body?
--
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…<https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/>
Archived at: https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.mai…<https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…>
This message sent to mmasoudf(a)aaas.org
2 years, 8 months
Saving settings of non-members does not work
by Torge Riedel
Dears,
I just experienced, that saving the settings of a list's non-member does not work with Postorius 1.3.13
I find this in mailman.log when saving the settings of a list's member, you see the PATCH there:
[28/Feb/2025:12:55:24 +0100] "GET /3.1/lists/alle.lists.xxxxxxxxxxxxx.de HTTP/1.1" 200 428 "-" "GNU Mailman REST client v3.3.5"
[28/Feb/2025:12:55:24 +0100] "POST /3.1/members/find?list_id=alle.lists.xxxxxxxxxxxxx.de&subscriber=1.vorsitz%40xxxxxxxxxxxxx.de HTTP/1.1" 200 633 "-" "GNU Mailman REST client v3.3.5"
[28/Feb/2025:12:55:24 +0100] "GET /3.1/members/051e31c733a647e8b88fd6340a2e9e91/preferences HTTP/1.1" 200 156 "-" "GNU Mailman REST client v3.3.5"
[28/Feb/2025:12:55:24 +0100] "PATCH /3.1/members/051e31c733a647e8b88fd6340a2e9e91/preferences HTTP/1.1" 204 0 "-" "GNU Mailman REST client v3.3.5"
[28/Feb/2025:12:55:24 +0100] "GET /3.1/lists/alle.lists.xxxxxxxxxxxxx.de HTTP/1.1" 200 428 "-" "GNU Mailman REST client v3.3.5"
[28/Feb/2025:12:55:24 +0100] "POST /3.1/members/find?list_id=alle.lists.xxxxxxxxxxxxx.de&subscriber=1.vorsitz%40xxxxxxxxxxxxx.de HTTP/1.1" 200 633 "-" "GNU Mailman REST client v3.3.5"
[28/Feb/2025:12:55:24 +0100] "GET /3.1/lists/alle(a)lists.xxxxxxxxxxxxx.de/requests/count?token_owner=moderator HTTP/1.1" 200 73 "-" "GNU Mailman REST client v3.3.5"
[28/Feb/2025:12:55:24 +0100] "GET /3.1/lists/alle(a)lists.xxxxxxxxxxxxx.de/held/count HTTP/1.1" 200 73 "-" "GNU Mailman REST client v3.3.5"
[28/Feb/2025:12:55:24 +0100] "GET /3.1/members/051e31c733a647e8b88fd6340a2e9e91/preferences HTTP/1.1" 200 184 "-" "GNU Mailman REST client v3.3.5"
When saving the settings of a list's non-member I find this in mailman.log, but the PATCH is missing:
[28/Feb/2025:12:56:52 +0100] "GET /3.1/lists/alle.lists.xxxxxxxxxxxxx.de HTTP/1.1" 200 428 "-" "GNU Mailman REST client v3.3.5"
[28/Feb/2025:12:56:52 +0100] "POST /3.1/members/find?list_id=alle.lists.xxxxxxxxxxxxx.de&subscriber=admin%40xxxxxxxxxxxxx.de HTTP/1.1" 200 1292 "-" "GNU Mailman REST client v3.3.5"
[28/Feb/2025:12:56:52 +0100] "GET /3.1/members/dc13c0500496485abd7b95001f605aa9/preferences HTTP/1.1" 200 212 "-" "GNU Mailman REST client v3.3.5"
[28/Feb/2025:12:56:52 +0100] "GET /3.1/lists/alle.lists.xxxxxxxxxxxxx.de HTTP/1.1" 200 428 "-" "GNU Mailman REST client v3.3.5"
[28/Feb/2025:12:56:53 +0100] "POST /3.1/members/find?list_id=alle.lists.xxxxxxxxxxxxx.de&subscriber=admin%40xxxxxxxxxxxxx.de HTTP/1.1" 200 1292 "-" "GNU Mailman REST client v3.3.5"
[28/Feb/2025:12:56:53 +0100] "GET /3.1/lists/alle(a)lists.xxxxxxxxxxxxx.de/requests/count?token_owner=moderator HTTP/1.1" 200 73 "-" "GNU Mailman REST client v3.3.5"
[28/Feb/2025:12:56:53 +0100] "GET /3.1/lists/alle(a)lists.xxxxxxxxxxxxx.de/held/count HTTP/1.1" 200 73 "-" "GNU Mailman REST client v3.3.5"
[28/Feb/2025:12:56:53 +0100] "GET /3.1/members/dc13c0500496485abd7b95001f605aa9/preferences HTTP/1.1" 200 212 "-" "GNU Mailman REST client v3.3.5"
Where can I search deeper to find the cause of the issue?
Kind regards
Torge
1 year, 3 months