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, 3 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, 4 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, 5 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
10 months, 3 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, 6 months
Re: Handling of SPAM mails in mailman3 - Check for X-Spam Header
by Torge Riedel
Am 16.01.20 um 21:43 schrieb Mark Sapiro:
> On 1/16/20 10:51 AM, Torge Riedel wrote:
>> Such SPAM mails are currently hold for moderation with reason "not from
>> a list member". Is there no check for the "X-Spam: Yes" header or is
>> this check done later?
>
> If you set a Header Filter (in Postorius the Header filters tab) those
> checks are done before non-member moderation.
>
> This won't work for posts from members because the header checks are
> done between member moderation checks and non-member moderation checks,
> but if you create a Header Filter for header 'x-spam' and pattern 'yes'
> with action hold, a message from a non-member which has an X-Spam: Yes
> header should be held for that reason.
>
>
Hi Mark,
thank you for your answer. Just to understand that right: In case a posting with an "X-Spam: Yes" header comes from a member, it will not be held? It will be directly forwarded to the list?
If yes, is there any chance to change or extend this?
Best regards
Torge
6 years
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, 8 months
Re: Subscription request cannot be moderated: 404 Not Found
by Eric Broens
Hi Mark,
The link that shows the subscription request pending approval is as follows: 'https://<host_url>/postorius/lists/<listname>.<domain>/subscription_requests'
The link behind the accept button is as follows. 'https://<host_url>/postorius/lists/<listname>.<domain>/handle_subscription_request/4d6b4b11266c7332684c5a492eb3f92c531f761b/accept'
I have checked if there is already a subscription with that email address, but that's not the case.
Best Regards,Eric
On Thursday, January 14, 2021, 08:43:54 PM GMT+1, Mark Sapiro <mark(a)msapiro.net> wrote:
On 1/9/21 5:39 AM, Eric Broens via Mailman-users wrote:
> For one of our mailinglists we also have a problem with accepting a subscription request.
> When Clicking "Accept", we get a 404 Not found error.
> See the attached screenshot.
> Is there a way to solve this?
Content filtering removed your screenshot so we can't see it. What is
the URL that gives the 404? How does this compare to the URL of the held
message view?
--
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://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
5 years
List Migration from MM2.1 -> MM3
by Odhiambo Washington
So I thought I have everything running. Fresh install of MM3 on
Ubuntu-22.04.
I have created a list in postorius - it has the same name as my old list in
MM2.
[image: MM3.png]
Now, following - https://docs.mailman3.org/en/latest/migration.html - I
change user to mailman so as to run the migration.
mailman@lists:~$ pwd
/opt/mailman
mailman@lists:~$ id
uid=1003(mailman) gid=1002(mailman) groups=1002(mailman),4(adm),38(list)
mailman@lists:~$ */opt/mailman/mm/venv/bin/mailman import21
skunkworks(a)lists.my.co.ke <skunkworks(a)lists.my.co.ke>
/var/list/lists/skunkworks/config.pck *# running without specifying the
absolute path is not working!
Usage: mailman import21 [OPTIONS] LISTSPEC PICKLE_FILE
Try 'mailman import21 -h' for help.
Error: No such list: skunkworks(a)lists.my.co.ke
mailman@lists:~$ ls -al /var/list/lists/skunkworks/config.pck
-rw-rw---- 1 root list 63765 Aug 14 11:10
/var/list/lists/skunkworks/config.pck
mailman@lists:~$ exim -bt skunkworks(a)lists.my.co.ke
skunkworks(a)lists.my.co.ke
router = mailman3_router, transport = mailman3_transport
mailman@lists:~$
What am I missing?
--
Best regards,
Odhiambo WASHINGTON,
Nairobi,KE
+254 7 3200 0004/+254 7 2274 3223
"Oh, the cruft.", egrep -v '^$|^.*#' ¯\_(ツ)_/¯ :-)
___________________________________________
Mailman's content filtering has removed the
following MIME parts from this message.
Content-Type: image/png
Name: MM3.png
Replaced multipart/alternative part with first alternative.
3 years, 5 months
Re: Welcome message template errors
by Mark
On 2024-04-23 11:33, Mark Sapiro wrote:
> On 4/22/24 17:06, Mark wrote:
>>
>> There was no line POSTORIUS_TEMPLATE_BASE_URL in
>> /etc/mailman3/settings.py
> So presumably you were getting the default
>
> POSTORIUS_TEMPLATE_BASE_URL = 'http://localhost:8000'
>
> from mailman-web/settings/mailman.py because of
> from mailman_web.settings.mailman import *
> in your settings.py.
Yes.
# Mailman Web configuration file.
# /etc/mailman3/settings.py
# Get the default settings.
from mailman_web.settings.base import *
from mailman_web.settings.mailman import *
...
>
>> Then, as site-owner, creating a new custom Welcome template (again via
>> the WebUI) I can see it correctly added to the database in
>> mailman.template.uri
>>
>> -
>> https://lists.mydomain.com/mailman3/api/templates/list/lists.mydomain.com/l…
That URI should have been;
https://lists.mydomain.com/mailman3/api/templates/list/mytestlist.lists.myd…
If I go to the above URL, the text of the list's Custom welcome message
displays on an otherwise empty webpage.
>
>
> And what happens if you go to that URL in a web browser? Also what do
> you get when going to https://lists.mydomain.com/mailman3?
I get the Postorius page "Mailing Lists" that displays the table of
lists.
1 year, 9 months