Re: Extracting mailing list users
by Jan Eden
On 2022-12-30 14:10, Odhiambo Washington wrote:
> On Fri, Dec 30, 2022 at 1:57 PM Jan Eden via Mailman-users <
> mailman-users(a)mailman3.org> wrote:
>
> > Hi,
> >
> > I would like to export users of my mailing lists including their full
> > name (if present). The export button in Postorius creates a CSV with
> > addresses only, and the tool bin/list_members mentioned in the
> > [Mailman 2 FAQ] does not seem to be available in Mailman 3.
> >
> > I have full access to the server/database, so scraping the web interface
> > with [Mark's script] seems unneccessary. Is there an SQL statement (or
> > an equivalent of bin/list_members) to extract the data?
> >
> > Thanks,
> > Jan
> >
> For MM3:
>
> (venv) [mailman@gw ~/mm]$ mailman members listname@domain --output
> some_file.txt
Thank you! This should have been obvious to me, but I never actually
used the mailman command so far. On minor issue: All user names with
non-ASCII characters appear with quoted-printable encoding (e.g.
=?utf-8?q?J=C3=BCrgen?=). Is there a way to output UTF-8 instead of QP?
- Jan
3 years, 4 months
Re: Virtual alias + shell
by Mark Sapiro
On 5/26/23 4:36 AM, alopez(a)ac.upc.edu wrote:
> Hello,
> I want to have a mailman configured together with virtual alias. To do that I need to use alias_domain.
> I have tried to do it with mailman shell. The domain seams to be created but when I leave the shell and enter again, the domain is not longer there.
Because you are leaving mailman shell with exit() which doesn't commit
changes. You deed to either explicitly commit with `commit()` or exit
with control-D. Recent mailman shell will report in its banner
Welcome to the GNU Mailman shell
Use commit() to commit changes.
Use abort() to discard changes since the last commit.
Exit with ctrl+D does an implicit commit() but exit() does not.
> On the other hand, If I create a domain in administrator interface, it is not listed in the shell. If I create in the web interface, which field correspond to the alias_domain : Domain Name, Display Name , Mail domain?
Your Postorius is too old to support alias_domain, and your Mailman core
may be too - requires core >= 3.2.0.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
2 years, 11 months
Re: Ann: Mailman Core 3.3.5 is out
by Odhiambo Washington
On Wed, Sep 29, 2021 at 7:59 PM Brett Delmage via Mailman-users <
mailman-users(a)mailman3.org> wrote:
> On Wed, 29 Sep 2021, Eggert Ehmke via Mailman-users wrote:
>
> > Should I upgrade my Mailman 3.3.3 installed from Debian Bullseye? I
> would have
> > to bypass the Debian installer. Or will there be Debian packages
> available?
> > Same question for Postorius 1.3.6
>
> I am excited to see 3.3.5 with its many updates
> available. Thanks to all the contributors.
>
> I would like to know this too, as I was just about to install parallel to
> the Debian package(s). I expect there are many of us.
>
> Going forward, what is the best way to maintain a stable version of 3.3.5
> with security and defect fixes only, exluding new features? Is
> picking and applying individual checkins on gitlab the only way?
>
If you install using the guide from Virtualenv Installation — Mailman Suite
3.3 documentation (mailman3.org)
<https://docs.mailman3.org/en/latest/install/virtualenv.html#virtualenv-inst…>,
then you can pretty much upgrade at will.
--
Best regards,
Odhiambo WASHINGTON,
Nairobi,KE
+254 7 3200 0004/+254 7 2274 3223
"Oh, the cruft.", egrep -v '^$|^.*#' :-)
4 years, 7 months
Re: sqlite3 Database "read only" error on mailman_sync job
by Abhilash Raj
On Thu, Sep 5, 2019, at 1:15 PM, Ugnius wrote:
>
> I do not know... In the setup example settings was something like process number = 2. But I understand at least 1 uwsgi and 1 run server should run?
No, only uwsgi needs to run. It is fine if there are two of those, since it probably forks to have 2 worker process. There shouldn't be any "python manage.py runserver" processes running at all, it is meant only for testing purposes.
The doc mentions that it is "development" server[1][2].
[1]: # Run the Django's "development" server at localhost:8000
[2]: http://docs.mailman3.org/en/latest/prodsetup.html#setting-up-django-project
Perhaps it should be more descriptive about what does it mean.
>
> On 5 Sep 2019, at 23:08, Abhilash Raj <maxking(a)asynchronous.in> wrote:
>> 6644 ? S 0:12 /usr/bin/uwsgi --master --ini /opt/home/uwsgi.ini
>> 6645 ? S 0:00 /usr/bin/python3 /opt/home/manage.py runserver 0:8015
>> 6653 ? Sl 636:28 /usr/bin/python3 /opt/home/manage.py runserver 0:8015
>> 6656 ? Sl 0:27 /usr/bin/uwsgi --master --ini /opt/home/uwsgi.ini
>>
>> This fishy, why do you have both uwsgi and "python manage.py runserver" running?
>>
>> You only need one of those, since they both do the exact same thing. Please remove
>> whatever is running the "python manage.py runserver" part and only use uwsgi.
>>
>> On Thu, Sep 5, 2019, at 1:02 PM, Ugnius S wrote:
>>> Thank You, Abhilash, to helping. I have checked the processes, but also I have read, that sqlite3 can run in multi writing mode.
>>> May mailman processes are next:
>>>
>>> 6644 ? S 0:12 /usr/bin/uwsgi --master --ini /opt/home/uwsgi.ini
>>> 6645 ? S 0:00 /usr/bin/python3 /opt/home/manage.py runserver 0:8015
>>> 6653 ? Sl 636:28 /usr/bin/python3 /opt/home/manage.py runserver 0:8015
>>> 6656 ? Sl 0:27 /usr/bin/uwsgi --master --ini /opt/home/uwsgi.ini
>>> 6643 ? S 0:00 /usr/bin/python3 /usr/bin/master -C /opt/home/mailman.cfg
>>> 659 ? S 0:46 /usr/bin/python3 /usr/bin/runner -C /opt/home/mailman.cfg --runner=in:0:1
>>> 6660 ? S 0:42 /usr/bin/python3 /usr/bin/runner -C /opt/home/mailman.cfg --runner=nntp:0:1
>>> 6661 ? S 0:42 /usr/bin/python3 /usr/bin/runner -C /opt/home/mailman.cfg --runner=digest:0:1
>>> 6662 ? S 0:48 /usr/bin/python3 /usr/bin/runner -C /opt/home/mailman.cfg --runner=pipeline:0:1
>>> 6663 ? S 0:44 /usr/bin/python3 /usr/bin/runner -C /opt/home/mailman.cfg --runner=archive:0:1
>>> 6664 ? S 0:41 /usr/bin/python3 /usr/bin/runner -C /opt/home/mailman.cfg --runner=command:0:1
>>> 6665 ? S 0:01 /usr/bin/python3 /usr/bin/runner -C /opt/home/mailman.cfg --runner=retry:0:1
>>> 6666 ? S 0:45 /usr/bin/python3 /usr/bin/runner -C /opt/home/mailman.cfg --runner=virgin:0:1
>>> 6667 ? Sl 0:16 /usr/bin/python3 /usr/bin/runner -C /opt/home/mailman.cfg --runner=lmtp:0:1
>>> 6668 ? Sl 1:30 /usr/bin/python3 /usr/bin/runner -C /opt/home/mailman.cfg --runner=rest:0:1
>>> 6669 ? S 0:42 /usr/bin/python3 /usr/bin/runner -C /opt/home/mailman.cfg --runner=bounces:0:1
>>> 6670 ? S 0:49 /usr/bin/python3 /usr/bin/runner -C /opt/home/mailman.cfg --runner=out:0:1
>>>
>>> Looks like there are no double. Nothing more is running.
>>>
>>> 2019-09-05, kt, 03:16 Abhilash Raj <maxking(a)asynchronous.in> rašė:
>>>> __
>>>> On Wed, Sep 4, 2019, at 2:05 PM, Ugnius S wrote:
>>>>>
>>>>> I have installed using documentation. My linux distribution version has no full package available. I have installed step by step:
>>>>> $ sudo pip3 install mailman
>>>>> $ sudo pip3 install postorius
>>>>> $ sudo pip3 install hyperkitty
>>>>> $ sudo pip3 install mailman-hyperkitty
>>>>> And of course all mandatory components... Everything without errors, I can drop db files and I can download mailman-suite again and start from empty page again. But it will not guarantee that DB will not become READ ONLY again. Here should be logic. No developing support here?
>>>>
>>>> Could you be running two separate processes such that the database is locked by one and so other finds it as READ Only? When you find a read only database, can you check if it is open in some other process?
>>>>
>>>>>
>>>>>
>>>>>
>>>>> 2019-09-03, an, 19:36 Abhilash Raj <maxking(a)asynchronous.in> rašė:
>>>>>>
>>>>>>
>>>>>> On Sun, Sep 1, 2019, at 3:22 AM,ugniusviln(a)gmail.com wrote:
>>>>>> > Hi. All the project installation is under the same user / path and
>>>>>> > it works. Archiving working as well, (just one remark: no matter what
>>>>>> > to set in postorius, hyperkitty shows list as public)
>>>>>> > I have found work around - it is possible to change list as private in
>>>>>> > "admin" page.
>>>>>> > I started to get issues with runjobs after I have created couple of
>>>>>> > new lists with "no archive" option.
>>>>>>
>>>>>> How did you install all these components. It seems there the installation is broken in weird ways.
>>>>>>
>>>>>> >
>>>>>> > If as owner user from project home I run:
>>>>>> >
>>>>>> > django-admin mailman_sync
>>>>>> >
>>>>>> > Traceback (most recent call last):
>>>>>> > File
>>>>>> > "/home/user/.local/lib/python3.5/site-packages/django/db/backends/utils.py",
>>>>>> > line 84, in _execute
>>>>>> > return self.cursor.execute(sql, params)
>>>>>> > File
>>>>>> > "/home/user/.local/lib/python3.5/site-packages/django/db/backends/sqlite3/base.py",
>>>>>> > line 383, in execute
>>>>>> > return Database.Cursor.execute(self, query, params)
>>>>>> > sqlite3.OperationalError: attempt to write a readonly database
>>>>>> >
>>>>>> > "django-admin runjob sync_mailman " - makes read only errors as well.
>>>>>> > "django-admin runjob new_lists_from_mailman"
>>>>>> > django.db.utils.OperationalError: attempt to write a readonly database
>>>>>> > END TRACEBACK
>>>>>> >
>>>>>> > I did not find information how to fix this. It was worked without errors
>>>>>> > before.
>>>>>> > I noticed, that if I stop mailman, "django-admin mailman_sync" starts
>>>>>> > to work.
>>>>>> > If I start "mailman start", then "django-admin mailman_sync" failing
>>>>>> > again.
>>>>>> > I did not check other jobs, but I think what is related to database,
>>>>>> > will get errors.
>>>>>> > Seems mailman locking the database. It is not a file permissions issue.
>>>>>> > Mailman db location is: /project_directory/var/data/mailman.db
>>>>>> >
>>>>>> > if to rename /project_directory/var/data/mailman.db to something,
>>>>>> > mailman creates database file size 0, django-admin runjobs start
>>>>>> > working, but of course postorius stops working. I did it for testing.
>>>>>> > I have returned this database file back, postorius started to work
>>>>>> > again, but django-admin runjobs does not work, error: "database read
>>>>>> > only".
>>>>>> > Please help me how to fix this issue.
>>>>>> > _______________________________________________
>>>>>> > Mailman-users mailing list -- mailman-users(a)mailman3.org
>>>>>> > To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>>>>>> > https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>>>>>> >
>>>>>>
>>>>>> --
>>>>>> thanks,
>>>>>> Abhilash Raj (maxking)
>>>>
>>>> --
>>>> thanks,
>>>> Abhilash Raj (maxking)
>>>>
>>>>
>>
>> --
>> thanks,
>> Abhilash Raj (maxking)
>>
>>
--
thanks,
Abhilash Raj (maxking)
6 years, 8 months
Re: Wrong info in moderation mail when held due to match of a header rule
by Mark Sapiro
On 10/17/20 1:31 PM, tlhackque via Mailman-users wrote:
>
> I might also add the rule number or config filename:line, as in
>
> Header "{name}": rule in {file}:{n} matched value "{value}"
>
> This would be helpful when backtracking from a rejected message to the
> cause.
>
> A sample expansion might be:
>
> Header "X-Spam": rule in foo.conf:83 matched value "yes"
These rules are not in a configuration file. They are in the headermatch
table in the database and the rules for a particular list are exposed on
the Header filters tab in Postorius or at the REST
lists/LISTNAME/header-matches endpoint.
Perhaps something like
{name}: header match rule, pattern "{pattern}" matched value "{value}"
example:
subject: header match rule, pattern "sex|long|list|of|other|bad|words"
matched value "This is a post about filtering based on words like sex in
the subject."
but that could be just adding more clutter.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
5 years, 6 months
unknown encoding: windows-874
by Mark Dadgar
Anyone seen this before? Just started happening today.
Latest ubuntu packages:
- Mark
-----
mark(a)pdc-racing.net | 408-348-2878
——
Internal Server Error: /mailman3/hyperkitty/api/mailman/archive
LookupError at /hyperkitty/api/mailman/archive
unknown encoding: windows-874
Request Method: POST
Request URL: http://localhost/mailman3/hyperkitty/api/mailman/archive?key=MiloIsTheBestD… <http://localhost/mailman3/hyperkitty/api/mailman/archive?key=MiloIsTheBestD…>
Django Version: 2.2.12
Python Executable: /usr/bin/uwsgi-core
Python Version: 3.8.2
Python Path: ['.', '', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/usr/local/lib/python3.8/dist-packages', '/usr/lib/python3/dist-packages']
Server time: Wed, 13 May 2020 16:42:46 -0700
Installed Applications:
('hyperkitty',
'postorius',
'django_mailman3',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'django_gravatar',
'compressor',
'haystack',
'django_extensions',
'django_q',
'allauth',
'allauth.account',
'allauth.socialaccount',
'django_mailman3.lib.auth.fedora')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django_mailman3.middleware.TimezoneMiddleware',
'postorius.middleware.PostoriusMiddleware')
Traceback:
File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py" in inner
34. response = get_response(request)
File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response
115. response = self.process_exception_by_middleware(e, request)
File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response
113. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python3/dist-packages/django/views/decorators/http.py" in inner
40. return func(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/hyperkitty/views/mailman.py" in _decorator
71. return func(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/django/views/decorators/csrf.py" in wrapped_view
54. return view_func(*args, **kwargs)
File "/usr/lib/python3/dist-packages/hyperkitty/views/mailman.py" in archive
117. add_to_list(mlist_fqdn, msg)
File "/usr/lib/python3/dist-packages/hyperkitty/lib/incoming.py" in add_to_list
123. email.content, attachments = scrubber.scrub()
File "/usr/lib/python3/dist-packages/django_mailman3/lib/scrub.py" in scrub
77. attachments = self._get_all_attachments()
File "/usr/lib/python3/dist-packages/django_mailman3/lib/scrub.py" in _get_all_attachments
98. attachments.append(self._parse_attachment(part, part_num))
File "/usr/lib/python3/dist-packages/django_mailman3/lib/scrub.py" in _parse_attachment
156. payload = part.get_content()
File "/usr/lib/python3.8/email/message.py" in get_content
1096. if content_manager is None:
File "/usr/lib/python3.8/email/contentmanager.py" in get_content
22. return self.get_handlers[maintype](msg, *args, **kw)
File "/usr/lib/python3.8/email/contentmanager.py" in get_text_content
67. return content.decode(charset, errors=errors)
Exception Type: LookupError at /hyperkitty/api/mailman/archive
Exception Value: unknown encoding: windows-874
Request information:
USER: AnonymousUser
GET:
key = <REDACTED>
POST:
mlist = <REDACTED>
FILES:
message = <InMemoryUploadedFile: message.txt ()>
COOKIES: No cookie data
META:
CONTENT_LENGTH = '52215'
CONTENT_TYPE = 'multipart/form-data; boundary=c697884a8c5c014c7e388933c444cab3'
CONTEXT_DOCUMENT_ROOT = '/var/www/html'
CONTEXT_PREFIX = ''
DOCUMENT_ROOT = '/var/www/html'
GATEWAY_INTERFACE = 'CGI/1.1'
HTTP_ACCEPT = '*/*'
HTTP_ACCEPT_ENCODING = 'gzip, deflate'
HTTP_CONNECTION = 'keep-alive'
HTTP_HOST = 'localhost'
HTTP_USER_AGENT = 'python-requests/2.22.0'
PATH = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin'
PATH_INFO = '/hyperkitty/api/mailman/archive'
QUERY_STRING = 'key=MiloIsTheBestDogEver2018%21'
REMOTE_ADDR = '127.0.0.1'
REMOTE_PORT = '45516'
REQUEST_METHOD = 'POST'
REQUEST_SCHEME = 'http'
REQUEST_URI = '/mailman3/hyperkitty/api/mailman/archive?key=MiloIsTheBestDogEver2018%21'
SCRIPT_FILENAME = 'proxy:uwsgi://localhost//hyperkitty/api/mailman/archive' <uwsgi://localhost//hyperkitty/api/mailman/archive'>
SCRIPT_NAME = '/mailman3'
SERVER_ADDR = '127.0.0.1'
SERVER_ADMIN = 'webmaster@localhost'
SERVER_NAME = 'localhost'
SERVER_PORT = '80'
SERVER_PROTOCOL = 'HTTP/1.1'
SERVER_SIGNATURE = '<address>Apache/2.4.41 (Ubuntu) Server at localhost Port 80</address>\n'
SERVER_SOFTWARE = 'Apache/2.4.41 (Ubuntu)'
uwsgi.core = 1
uwsgi.node = b'mail'
uwsgi.version = b'2.0.18-debian'
wsgi.errors = <_io.TextIOWrapper name=2 mode='w' encoding='UTF-8'>
wsgi.file_wrapper = ''
wsgi.input = <uwsgi._Input object at 0x7ff7d81444b0>
wsgi.multiprocess = False
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', 'mark(a)pdc-racing.net <mailto:mark@pdc-racing.net>'),)"
ALLOWED_HOSTS = ['*']
APPEND_SLASH = True
AUTHENTICATION_BACKENDS = "('django.contrib.auth.backends.ModelBackend', 'allauth.account.auth_backends.AuthenticationBackend')"
AUTH_PASSWORD_VALIDATORS = '********************'
AUTH_USER_MODEL = 'auth.User'
BASE_DIR = '/usr/share/mailman3-web'
CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
CACHE_MIDDLEWARE_ALIAS = 'default'
CACHE_MIDDLEWARE_KEY_PREFIX = '********************'
CACHE_MIDDLEWARE_SECONDS = 600
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_COMPRESSOR = 'compressor.css.CssCompressor'
COMPRESS_CSS_FILTERS = ['compressor.filters.css_default.CssAbsoluteFilter']
COMPRESS_CSS_HASHING_METHOD = 'mtime'
COMPRESS_DATA_URI_MAX_SIZE = 1024
COMPRESS_DEBUG_TOGGLE = None
COMPRESS_ENABLED = True
COMPRESS_JINJA2_GET_ENVIRONMENT = <function CompressorConf.JINJA2_GET_ENVIRONMENT at 0x7ff7db78fb80>
COMPRESS_JS_COMPRESSOR = 'compressor.js.JsCompressor'
COMPRESS_JS_FILTERS = ['compressor.filters.jsmin.JSMinFilter']
COMPRESS_MINT_DELAY = 30
COMPRESS_MTIME_DELAY = 10
COMPRESS_OFFLINE = True
COMPRESS_OFFLINE_CONTEXT = {'STATIC_URL': '/mailman3/static/'}
COMPRESS_OFFLINE_MANIFEST = 'manifest.json'
COMPRESS_OFFLINE_TIMEOUT = 31536000
COMPRESS_OUTPUT_DIR = 'CACHE'
COMPRESS_PARSER = 'compressor.parser.AutoSelectParser'
COMPRESS_PRECOMPILERS = '()'
COMPRESS_REBUILD_TIMEOUT = 2592000
COMPRESS_ROOT = '/var/lib/mailman3/web/static'
COMPRESS_STORAGE = 'compressor.storage.CompressorFileStorage'
COMPRESS_TEMPLATE_FILTER_CONTEXT = {'STATIC_URL': '/mailman3/static/'}
COMPRESS_URL = '/mailman3/static/'
COMPRESS_URL_PLACEHOLDER = '/__compressor_url_placeholder__/'
COMPRESS_VERBOSE = False
COMPRESS_YUGLIFY_BINARY = 'yuglify'
COMPRESS_YUGLIFY_CSS_ARGUMENTS = '--terminal'
COMPRESS_YUGLIFY_JS_ARGUMENTS = '--terminal'
COMPRESS_YUI_BINARY = 'java -jar yuicompressor.jar'
COMPRESS_YUI_CSS_ARGUMENTS = ''
COMPRESS_YUI_JS_ARGUMENTS = ''
CSRF_COOKIE_AGE = 31449600
CSRF_COOKIE_DOMAIN = None
CSRF_COOKIE_HTTPONLY = False
CSRF_COOKIE_NAME = 'csrftoken'
CSRF_COOKIE_PATH = '/'
CSRF_COOKIE_SAMESITE = 'Lax'
CSRF_COOKIE_SECURE = False
CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure'
CSRF_HEADER_NAME = 'HTTP_X_CSRFTOKEN'
CSRF_TRUSTED_ORIGINS = []
CSRF_USE_SESSIONS = False
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3', 'NAME': '/var/lib/dbconfig-common/sqlite3/mailman3-web/mailman3web.db', 'USER': '', 'PASSWORD': '********************', 'HOST': '', 'PORT': '', 'OPTIONS': {}, 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'TIME_ZONE': None, 'TEST': {'CHARSET': None, 'COLLATION': None, 'NAME': None, 'MIRROR': None}}}
DATABASE_ROUTERS = []
DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440
DATA_UPLOAD_MAX_NUMBER_FIELDS = 1000
DATETIME_FORMAT = 'N j, Y, P'
DATETIME_INPUT_FORMATS = ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y']
DATE_FORMAT = 'N j, Y'
DATE_INPUT_FORMATS = ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y']
DEBUG = False
DEBUG_PROPAGATE_EXCEPTIONS = False
DECIMAL_SEPARATOR = '.'
DEFAULT_CHARSET = 'utf-8'
DEFAULT_CONTENT_TYPE = 'text/html'
DEFAULT_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter'
DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
DEFAULT_FROM_EMAIL = 'postorius(a)pdc-racing.net <mailto:postorius@pdc-racing.net>'
DEFAULT_INDEX_TABLESPACE = ''
DEFAULT_TABLESPACE = ''
DISALLOWED_USER_AGENTS = []
EMAILNAME = 'pdc-racing.net <http://pdc-racing.net/>'
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_HOST_PASSWORD = '********************'
EMAIL_HOST_USER = ''
EMAIL_PORT = 25
EMAIL_SSL_CERTFILE = None
EMAIL_SSL_KEYFILE = '********************'
EMAIL_SUBJECT_PREFIX = '[Django] '
EMAIL_TIMEOUT = None
EMAIL_USE_LOCALTIME = False
EMAIL_USE_SSL = False
EMAIL_USE_TLS = False
FILE_CHARSET = 'utf-8'
FILE_UPLOAD_DIRECTORY_PERMISSIONS = None
FILE_UPLOAD_HANDLERS = ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler']
FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440
FILE_UPLOAD_PERMISSIONS = None
FILE_UPLOAD_TEMP_DIR = None
FILTER_VHOST = False
FIRST_DAY_OF_WEEK = 0
FIXTURE_DIRS = []
FORCE_SCRIPT_NAME = None
FORMAT_MODULE_PATH = None
FORM_RENDERER = 'django.forms.renderers.DjangoTemplates'
HAYSTACK_CONNECTIONS = {'default': {'ENGINE': 'xapian_backend.XapianEngine', 'PATH': '/var/lib/mailman3/web/xapian_index'}}
HOSTNAME = 'localhost.local'
IGNORABLE_404_URLS = []
INSTALLED_APPS = "('hyperkitty', 'postorius', 'django_mailman3', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'django_gravatar', 'compressor', 'haystack', 'django_extensions', 'django_q', 'allauth', 'allauth.account', 'allauth.socialaccount', 'django_mailman3.lib.auth.fedora')"
INTERNAL_IPS = []
LANGUAGES = [('af', 'Afrikaans'), ('ar', 'Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('dsb', 'Lower Sorbian'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper Sorbian'), ('hu', 'Hungarian'), ('hy', 'Armenian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kab', 'Kabyle'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmål'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('vi', 'Vietnamese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese')]
LANGUAGES_BIDI = ['he', 'ar', 'fa', 'ur']
LANGUAGE_CODE = 'en-us'
LANGUAGE_COOKIE_AGE = None
LANGUAGE_COOKIE_DOMAIN = None
LANGUAGE_COOKIE_NAME = 'django_language'
LANGUAGE_COOKIE_PATH = '/'
LOCALE_PATHS = []
LOGGING = {'version': 1, 'disable_existing_loggers': False, 'filters': {'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}}, 'handlers': {'mail_admins': {'level': 'ERROR', 'filters': ['require_debug_false'], 'class': 'django.utils.log.AdminEmailHandler'}, 'file': {'level': 'INFO', 'class': 'logging.handlers.RotatingFileHandler', 'filename': '/var/log/mailman3/web/mailman-web.log', 'formatter': 'verbose'}, 'console': {'class': 'logging.StreamHandler', 'formatter': 'simple'}}, 'loggers': {'django.request': {'handlers': ['mail_admins', 'file'], 'level': 'INFO', 'propagate': True}, 'django': {'handlers': ['file'], 'level': 'INFO', 'propagate': True}, 'hyperkitty': {'handlers': ['file'], 'level': 'INFO', 'propagate': True}, 'postorius': {'handlers': ['file'], 'level': 'INFO', 'propagate': True}}, 'formatters': {'verbose': {'format': '%(levelname)s %(asctime)s %(process)d %(name)s %(message)s'}, 'simple': {'format': '%(levelname)s %(message)s'}}}
LOGGING_CONFIG = 'logging.config.dictConfig'
LOGIN_REDIRECT_URL = 'list_index'
LOGIN_URL = 'account_login'
LOGOUT_REDIRECT_URL = None
LOGOUT_URL = 'account_logout'
MAILMAN_ARCHIVER_FROM = "('127.0.0.1', '::1')"
MAILMAN_ARCHIVER_KEY = '********************'
MAILMAN_REST_API_PASS = '********************'
MAILMAN_REST_API_URL = '********************'
MAILMAN_REST_API_USER = '********************'
MANAGERS = []
MEDIA_ROOT = ''
MEDIA_URL = ''
MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
MESSAGE_TAGS = {40: 'danger'}
MIDDLEWARE = "('django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', 'django_mailman3.middleware.TimezoneMiddleware', 'postorius.middleware.PostoriusMiddleware')"
MIGRATION_MODULES = {}
MONTH_DAY_FORMAT = 'F j'
NUMBER_GROUPING = 0
PASSWORD_HASHERS = '********************'
PASSWORD_RESET_TIMEOUT_DAYS = '********************'
POSTORIUS_TEMPLATE_BASE_URL = 'http://localhost/mailman3/ <http://localhost/mailman3/>'
PREPEND_WWW = False
Q_CLUSTER = {'timeout': 300, 'save_limit': 100, 'orm': 'default', 'poll': 5}
ROOT_URLCONF = 'urls'
SECRET_KEY = '********************'
SECURE_BROWSER_XSS_FILTER = False
SECURE_CONTENT_TYPE_NOSNIFF = False
SECURE_HSTS_INCLUDE_SUBDOMAINS = False
SECURE_HSTS_PRELOAD = False
SECURE_HSTS_SECONDS = 0
SECURE_PROXY_SSL_HEADER = None
SECURE_REDIRECT_EXEMPT = []
SECURE_SSL_HOST = None
SECURE_SSL_REDIRECT = False
SERVER_EMAIL = 'root(a)pdc-racing.net <mailto:root@pdc-racing.net>'
SESSION_CACHE_ALIAS = 'default'
SESSION_COOKIE_AGE = 1209600
SESSION_COOKIE_DOMAIN = None
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_NAME = 'sessionid'
SESSION_COOKIE_PATH = '/'
SESSION_COOKIE_SAMESITE = 'Lax'
SESSION_COOKIE_SECURE = False
SESSION_ENGINE = 'django.contrib.sessions.backends.db'
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
SESSION_FILE_PATH = None
SESSION_SAVE_EVERY_REQUEST = False
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'
SETTINGS_MODULE = 'settings'
SHORT_DATETIME_FORMAT = 'm/d/Y P'
SHORT_DATE_FORMAT = 'm/d/Y'
SIGNING_BACKEND = 'django.core.signing.TimestampSigner'
SILENCED_SYSTEM_CHECKS = []
SITE_ID = 1
SOCIALACCOUNT_PROVIDERS = {}
STATICFILES_DIRS = '()'
STATICFILES_FINDERS = "('django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', 'compressor.finders.CompressorFinder')"
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
STATIC_ROOT = '/var/lib/mailman3/web/static'
STATIC_URL = '/mailman3/static/'
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.i18n', 'django.template.context_processors.media', 'django.template.context_processors.static', 'django.template.context_processors.tz', 'django.template.context_processors.csrf', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'django_mailman3.context_processors.common', 'hyperkitty.context_processors.common', 'postorius.context_processors.postorius']}}]
TEST_NON_SERIALIZED_APPS = []
TEST_RUNNER = 'django.test.runner.DiscoverRunner'
THOUSAND_SEPARATOR = ','
TIME_FORMAT = 'P'
TIME_INPUT_FORMATS = ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_THOUSAND_SEPARATOR = False
USE_TZ = True
USE_X_FORWARDED_HOST = True
USE_X_FORWARDED_PORT = False
WSGI_APPLICATION = 'wsgi.application'
X_FRAME_OPTIONS = 'SAMEORIGIN'
YEAR_MONTH_FORMAT = 'F Y'
5 years, 11 months
message duplication and an NNTP related error
by Laurens Kils-Huetten
Good day,
I have recently installed mailman3 on a Debian trixie system.
While I managed to set up most of it (the mailing lists, postorius and
also a working gateway to our inn2 news server) I'm seeing a weird
duplication of messages, that seems to be related to the error
messages posted below.
When I switch off gating to nntp the duplication stops. Also only mail
messages are duplicated, not the postings on the news server.
Any pointers as to what to look into, or how to remedy this problem
are greatly appreciated :)
Thanks,
Laurens
here come the error logs:
Feb 23 20:39:08 2026 (2776528) ACCEPT: <e4938b85cbd75c0b04867514fc0b8ad9(a)betola.de>
Feb 23 20:39:10 2026 (2776528) ACCEPT: <e4938b85cbd75c0b04867514fc0b8ad9(a)betola.de>
Feb 23 20:39:12 2026 (2776530) <e4938b85cbd75c0b04867514fc0b8ad9(a)betola.de> NNTP error for test(a)grenzland.club
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/mailman/runners/nntp.py", line 94, in _dispose
conn.post(fp)
~~~~~~~~~^^^^
File "/usr/lib/python3/dist-packages/nntplib/__init__.py", line 916, in post
return self._post('POST', data)
~~~~~~~~~~^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/nntplib/__init__.py", line 909, in _post
return self._getresp()
~~~~~~~~~~~~~^^
File "/usr/lib/python3/dist-packages/nntplib/__init__.py", line 492, in _getresp
raise NNTPTemporaryError(resp)
nntplib.NNTPTemporaryError: 441 Can't set system Injection-Info header field
2 months, 2 weeks
Re: Installation Help on Ubuntu 18
by Odhiambo Washington
On Sat, 25 Jul 2020 at 20:35, <joseverde(a)gmail.com> wrote:
> Hi folks, I spent many hours last night trying to get Mailman 3 up and
> running. I am using Ubuntu on a Digital Ocean LAMP droplet (so PHP, Apache,
> Sql, and Postfix are already installed). The LAMP stack works as I have a
> successful installation of YOURLS going on.
>
> So, I tried to use this guide (
> https://docs.google.com/document/d/1xIcSsoNFp2nHi7r4eQys00s9a0k2sHhu1V5Plan…)
> to install the Mailman3 package and got to the configuration screen (the
> one with all the DOS-esque GUI). I ran it but it kept saying the DB wasn't
> installed. Was I supposed to create SQL databases and users before running
> that and use those usernames/databases in the credentials it asks for? It
> doesn't seem like that in the way it asks the questions (since it asks to
> create a password) but I wasn't sure.
>
> Anywho, I tried to remove the package completely and restart but I keep
> spinning my wheels. So my questions:
>
> 1. Does that guide actually work? Did I just foul up the database part?
> 2. Is there a better way to install mailman3 with some nice step-by-step
> directions to follow?
> 3. Is there a way to completely wipe my previous installs without wiping
> the server? ( I didn't back up...silly I know ). I used apt-get --purge
> remove to uninstall mailman3 and mailman to start over, did that do the
> trick?
>
> Sorry for all the questions.
>
DISCLAIMER: I have no experience at all with MM3. I haven't even succeeded
in installing it as yet because I am trying to do it manually on FreeBSD.
I have an Ubuntu box that runs mailman-2.1.34 manually installed as well,
but I am wondering if you tried the following:
root@lists:/home/wash# apt search mailman3
Sorting... Done
Full Text Search... Done
mailman3/bionic 3.2.0-1~ubuntu18.04.1 all [residual-config]
Mailing list management system
mailman3-doc/bionic 3.2.0-1~ubuntu18.04.1 all
Mailing list management system documentation
mailman3-full/bionic 3.2.0-1~ubuntu18.04.1 all
Full Mailman3 mailing list management suite (metapackage)
mailman3-web/bionic 0+20180916-2~ubuntu18.04.1 all [residual-config]
Django project integrating Mailman3 Postorius and HyperKitty
python-django-hyperkitty/bionic 1.1.4-4 all
Web user interface to access GNU Mailman3 archives
python-django-mailman3/bionic 1.1.0-4 all
Django library to help interaction with Mailman3 (Python 2 version)
python-django-postorius/bionic 1.1.2-3 all
Web user interface to access GNU Mailman3
python-mailmanclient/bionic 3.1.1-5 all
Python bindings for Mailman3 REST API (Python 2 version)
python-mailmanclient-doc/bionic 3.2.0-2~ubuntu18.04.1 all
Python bindings for Mailman3 REST API (Documentation)
python3-django-hyperkitty/bionic 1.2.1-3~ubuntu18.04.1 all
Web user interface to access GNU Mailman3 archives
python3-django-mailman3/bionic 1.2.0-2~ubuntu18.04.1 all
Django library to help interaction with Mailman3 (Python 3 version)
python3-django-postorius/bionic 1.2.2-2~ubuntu18.04.1 all
Web user interface to access GNU Mailman3
python3-mailman-hyperkitty/bionic 1.1.0-9~ubuntu18.04.1 all
[residual-config]
Mailman3 plugin to archive emails with HyperKitty
python3-mailmanclient/bionic 3.2.0-2~ubuntu18.04.1 all
Python bindings for Mailman3 REST API (Python 3 version)
root@lists:/home/wash# apt install mailman3
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
python3-aiosmtpd python3-alembic python3-dateutil python3-falcon
python3-flufl.bounce python3-flufl.i18n python3-flufl.lock
python3-lazr.config python3-lazr.delegates python3-mako python3-mimeparse
python3-nose python3-passlib
python3-psycopg2 python3-public python3-sqlalchemy python3-sqlalchemy-ext
python3-zope.configuration python3-zope.i18nmessageid python3-zope.schema
Suggested packages:
mailman3-doc python3-editor python-flufl.bounce-doc python-flufl.i18n-doc
python-flufl.lock-doc python-lazr.config-doc python-lazr.delegates-doc
python3-beaker python-mako-doc python-nose-doc python-psycopg2-doc
python-public-doc
python-sqlalchemy-doc python3-mysqldb python3-fdb python3-zope.testing
The following NEW packages will be installed:
mailman3 python3-aiosmtpd python3-alembic python3-dateutil python3-falcon
python3-flufl.bounce python3-flufl.i18n python3-flufl.lock
python3-lazr.config python3-lazr.delegates python3-mako python3-mimeparse
python3-nose
python3-passlib python3-psycopg2 python3-public python3-sqlalchemy
python3-sqlalchemy-ext python3-zope.configuration
python3-zope.i18nmessageid python3-zope.schema
0 upgraded, 21 newly installed, 0 to remove and 2 not upgraded.
Need to get 2,862 kB of archives.
After this operation, 16.7 MB of additional disk space will be used.
Do you want to continue? [Y/n]
Where would that end you???
--
Best regards,
Odhiambo WASHINGTON,
Nairobi,KE
+254 7 3200 0004/+254 7 2274 3223
"Oh, the cruft.", grep ^[^#] :-)
5 years, 9 months
Re: Avoiding non-members to be saved.
by Guillermo Hernandez (Oldno7)
On 7/8/21 20:03, Mark Sapiro wrote:
> This is the way MM 3 works. The only reason *_these_nonmembers exists
> in MM 3 is to support the legacy regexps from MM 2.1. For non-regexp
> addresses the address is a nonmember with the appropriate moderation
> action.
>
> I actually find this convenient. When a nonmember posts spam to a list
> and that spam is held, I discard the spam in Postorius and at the same
> time set the nonmember's moderation action to discard so I never see
> any more from that address. Also, when someone who I recognize as a
> list member posts from an alternate nonmember address, I can accept
> that post and set the nonmember address moderation action to default
> processing.
>
I find it very convenient too, but it concerns me that spammers, really
"profesional" spammers and senders of phising mail change the forged
address and sender domain too rapidly to track them. As of it, the
non-member database is growing more and more. It could be a "monster" in
two or three years...
Not a problem now. And I know now how to delete them in one go :)
--
4 years, 8 months
Re: Migration of the e-mail templates
by Mark Sapiro
On 3/6/25 2:24 PM, Markus Grandpré wrote:
>
> Thank you for your prompt reply. Based on a customer request, it seems
> that custom templates need to be copied manually. Could you kindly
> indicate which files and locations should be considered when
> transferring them from the source to the target system?
In MM 2.1, you could have list specific templates in directories like
lists/<listname>/<language>/, domain specific templates in directories
like templates/<list.host_name>/<language> and sitewide templates in
directories like templates/site/<language>.
In MM 3 You can create list and domain specific templates in Postorius
or you can create them in sub-directories of Mailman's var/templates/
directory. List specific templates in lists/<list-id>/<language>/,
domain specific templates in directories like
domains/<mail-host>/<language>/ and sitewide templates in directories
like site/<language>/.
However, you can't just copy MM 2.1 templates because the variable
replacement syntax is different and the template file names are
different. See
https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/rest/docs/…
for documentation of the MM 3 templating system.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
1 year, 2 months