Re: Welcome Message
by brian@emwd.com
Thanks Mark. I added the POSTORIUS_TEMPLATE_BASE_URL to my settings:
/opt/mailman/web/settings_local.py
Now I get the following errors:
Apr 16 15:38:44 2019 (28) deque:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 600, in urlopen
chunked=chunked)
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 343, in _make_request
self._validate_conn(conn)
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 839, in _validate_conn
conn.connect()
File "/usr/lib/python3.6/site-packages/urllib3/connection.py", line 344, in connect
ssl_context=context)
File "/usr/lib/python3.6/site-packages/urllib3/util/ssl_.py", line 344, in ssl_wrap_socket
return context.wrap_socket(sock, server_hostname=server_hostname)
File "/usr/lib/python3.6/ssl.py", line 407, in wrap_socket
_context=self, _session=session)
File "/usr/lib/python3.6/ssl.py", line 814, in __init__
self.do_handshake()
File "/usr/lib/python3.6/ssl.py", line 1068, in do_handshake
self._sslobj.do_handshake()
File "/usr/lib/python3.6/ssl.py", line 689, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:841)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/requests/adapters.py", line 449, in send
timeout=timeout
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 638, in urlopen
_stacktrace=sys.exc_info()[2])
File "/usr/lib/python3.6/site-packages/urllib3/util/retry.py", line 398, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='mailman3.emwd.com', port=443): Max retries exceeded with url: /postorius/api/templates/list/testlist.mailman3.emwd.com/list:user:notice:welcome (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:841)'),))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/mailman/app/workflow.py", line 69, in __next__
return step()
File "/usr/lib/python3.6/site-packages/mailman/app/subscriptions.py", line 326, in _step_do_subscription
self.member = self.mlist.subscribe(self.subscriber)
File "/usr/lib/python3.6/site-packages/mailman/database/transaction.py", line 85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3.6/site-packages/mailman/model/mailinglist.py", line 494, in subscribe
notify(SubscriptionEvent(self, member))
File "/usr/lib/python3.6/site-packages/zope/event/__init__.py", line 32, in notify
subscriber(event)
File "/usr/lib/python3.6/site-packages/mailman/app/membership.py", line 169, in handle_SubscriptionEvent
send_welcome_message(mlist, member, member.preferred_language)
File "/usr/lib/python3.6/site-packages/mailman/app/notifications.py", line 52, in send_welcome_message
'list:user:notice:welcome', mlist, language=language.code))
File "/usr/lib/python3.6/site-packages/mailman/model/template.py", line 188, in get
name, lookup_context, **substitutions)
File "/usr/lib/python3.6/site-packages/mailman/database/transaction.py", line 85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3.6/site-packages/mailman/model/template.py", line 109, in get
contents = protocols.get(actual_uri, **auth)
File "/usr/lib/python3.6/site-packages/mailman/utilities/protocols.py", line 38, in get
response = requests.get(url, timeout=REQUEST_TIMEOUT, **kws)
File "/usr/lib/python3.6/site-packages/requests/api.py", line 75, in get
return request('get', url, params=params, **kwargs)
File "/usr/lib/python3.6/site-packages/requests/api.py", line 60, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3.6/site-packages/requests/adapters.py", line 514, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='mailman3.emwd.com', port=443): Max retries exceeded with url: /postorius/api/templates/list/testlist.mailman3.emwd.com/list:user:notice:welcome (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:841)'),))
Apr 16 15:38:44 2019 (28) REST request handler error:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 600, in urlopen
chunked=chunked)
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 343, in _make_request
self._validate_conn(conn)
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 839, in _validate_conn
conn.connect()
File "/usr/lib/python3.6/site-packages/urllib3/connection.py", line 344, in connect
ssl_context=context)
File "/usr/lib/python3.6/site-packages/urllib3/util/ssl_.py", line 344, in ssl_wrap_socket
return context.wrap_socket(sock, server_hostname=server_hostname)
File "/usr/lib/python3.6/ssl.py", line 407, in wrap_socket
_context=self, _session=session)
File "/usr/lib/python3.6/ssl.py", line 814, in __init__
self.do_handshake()
File "/usr/lib/python3.6/ssl.py", line 1068, in do_handshake
self._sslobj.do_handshake()
File "/usr/lib/python3.6/ssl.py", line 689, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:841)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/requests/adapters.py", line 449, in send
timeout=timeout
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 638, in urlopen
_stacktrace=sys.exc_info()[2])
File "/usr/lib/python3.6/site-packages/urllib3/util/retry.py", line 398, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='mailman3.emwd.com', port=443): Max retries exceeded with url: /postorius/api/templates/list/testlist.mailman3.emwd.com/list:user:notice:welcome (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:841)'),))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.6/wsgiref/handlers.py", line 137, in run
self.result = application(self.environ, self.start_response)
File "/usr/lib/python3.6/site-packages/mailman/database/transaction.py", line 50, in wrapper
rtn = function(*args, **kws)
File "/usr/lib/python3.6/site-packages/mailman/rest/wsgiapp.py", line 218, in __call__
return super().__call__(environ, start_response)
File "/usr/lib/python3.6/site-packages/falcon/api.py", line 244, in __call__
responder(req, resp, **params)
File "/usr/lib/python3.6/site-packages/mailman/rest/members.py", line 266, in on_post
pre_approved=pre_approved)
File "/usr/lib/python3.6/site-packages/mailman/app/subscriptions.py", line 520, in register
list(workflow)
File "/usr/lib/python3.6/site-packages/mailman/app/workflow.py", line 69, in __next__
return step()
File "/usr/lib/python3.6/site-packages/mailman/app/subscriptions.py", line 326, in _step_do_subscription
self.member = self.mlist.subscribe(self.subscriber)
File "/usr/lib/python3.6/site-packages/mailman/database/transaction.py", line 85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3.6/site-packages/mailman/model/mailinglist.py", line 494, in subscribe
notify(SubscriptionEvent(self, member))
File "/usr/lib/python3.6/site-packages/zope/event/__init__.py", line 32, in notify
subscriber(event)
File "/usr/lib/python3.6/site-packages/mailman/app/membership.py", line 169, in handle_SubscriptionEvent
send_welcome_message(mlist, member, member.preferred_language)
File "/usr/lib/python3.6/site-packages/mailman/app/notifications.py", line 52, in send_welcome_message
'list:user:notice:welcome', mlist, language=language.code))
File "/usr/lib/python3.6/site-packages/mailman/model/template.py", line 188, in get
name, lookup_context, **substitutions)
File "/usr/lib/python3.6/site-packages/mailman/database/transaction.py", line 85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3.6/site-packages/mailman/model/template.py", line 109, in get
contents = protocols.get(actual_uri, **auth)
File "/usr/lib/python3.6/site-packages/mailman/utilities/protocols.py", line 38, in get
response = requests.get(url, timeout=REQUEST_TIMEOUT, **kws)
File "/usr/lib/python3.6/site-packages/requests/api.py", line 75, in get
return request('get', url, params=params, **kwargs)
File "/usr/lib/python3.6/site-packages/requests/api.py", line 60, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3.6/site-packages/requests/adapters.py", line 514, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='mailman3.emwd.com', port=443): Max retries exceeded with url: /postorius/api/templates/list/testlist.mailman3.emwd.com/list:user:notice:welcome (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:841)'),))
Apr 16 15:38:44 2019 (28) 172.19.199.3 - - "POST /3.1/members HTTP/1.1" 500 59
I am confused by the SSL errors. I have a valid SSL certificate installed on mailman3.emwd.com. These errors occur whether the POSTORIUS_TEMPLATE_BASE_URL is using http or https.
Brian
5 years, 7 months
Re: How To Install Mailman 3 on Debian 10 (Complete Guide)
by Stephen J. Turnbull
Lars Schimmer writes:
> Intereting view for a software poackage taking a few years to get a
> way to migrate from mailman2 to mailman3. Or in other words: if a
> stable version is not useable/to old, the software is not
> production ready.
Not our problem though. It was the distro's choice to provide Mailman
packages. We're happy that they're interested, and happy to do what
we can to support their users when they come here. But it's up to
them to judge whether their packages are useful to their users.
>> For constantly evolving projects where you need to be current,
>> [distribution packages are] more of a detriment.
> Nope. Vote against this view.
> You need a stable system to rely on and setup without hassle in a nonce.
Then what are you doing here? That is not Mailman 3, as you can see
from reading this list. Once working, Mailman 3 is quite stable as
long as you understand the parameters (for example, what a shunted
message is, and what configurations are available from Postorius and
what requires shell access). But it is not yet hassle-free to set up
(unless you use Brian's guide on an otherwise empty host ;-). Mailman
3 is still a work in progress, with a wide variety of requirements
from our users that only we can address.
And again in <428b33e6-189b-3a13-0bab-b5d77735d8ab(a)cgv.tugraz.at>:
> So, why does someone not care about the debian package to fix that bugs?
> It is possible, and is done by other packages every day.
Not our problem. Ask the Debian maintainer, who is not a core Mailman
developer.
> Thats why I like to stay with 1 standard for all softeare packages
> on one system. I do not want to run 20 software distributions with
> 20 ways of doing it the right waay (tm).
I doubt anyone disagrees, but yet again, not our problem. Our problem
is that y'all choose 20 different software distributions and somebody
among you wants to run Mailman on each one of them, embedded in an
equally wide variety of network configurations.
You really should be over on some Debian list with this thread. I
understand your frustration, but we have no obligation and no
intention to do anything about it. We're here to maintain Mailman
itself and never said anything else. If the Debian maintainer has
specific requests of us, I'm sure all of us would take a strong
interest in that. But maintaining the Debian packaging itself is
his/her chosen job, not ours.
Steve
3 years, 8 months
Re: MM3 Postfix FROM header issue
by Mark Sapiro
On 12/17/23 9:42 AM, Mark Sapiro wrote:
> On 12/17/23 9:10 AM, eboltz(a)lhtservices.com wrote:
>> Mark,
>>
>> Here is my postconf -n
>>
>> alias_database = hash:/etc/aliases
>> alias_maps = hash:/etc/aliases
>> always_add_missing_headers = yes
>> append_dot_mydomain = no
>> biff = no
>> compatibility_level = 2
>> default_destination_concurrency_limit = 15
>> default_destination_recipient_limit = 30
>> header_checks = regexp:/etc/postfix/header_checks
>> header_size_limit = 409600
>> inet_interfaces = all
>> inet_protocols = ipv4
>> local_recipient_maps = proxy:unix:passwd.byname $alias_maps
>> hash:/var/lib/mailman3/data/postfix_lmtp
>> mailbox_size_limit = 0
>> mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
>> myhostname = lists.example.com
>> mynetworks = 127.0.0.0/8 [::fff:127.0.0.0]/104 [::1]/128
>> myorigin = /etc/mailname
>> readme_directory = no
>> recipient_delimiter = +
>> relay_domains = hash:/var/lib/mailman3/data/postfix_domains
>> relayhost = [mail.smtp2go.com]:587
>> smtp_always_send_ehlo = yes
>> smtp_sasl_security_options = noanonymous
>> smtp_tls_CApath = /etc/postfix/o365_smtp_cert.pem
>> smtp_tls_security_level = may
>> smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
>> smtp_use_tls = yes
>> smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
>> smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated
>> defer_unauth_destination
>> smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
>> smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
>> smtpd_tls_security_level = may
>> transport_maps = hash:/var/lib/mailman3/data/postfix_lmtp
>> unknown_local_recipient_reject_code = 550
>> virtual_alias_maps = hash:/var/lib/mailman3/data/postfix_vmap
>
>
> It looks like you are now following
> <https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/docs/mta.h…>.
>
>
>> What would I have to do to ensure that MM3 and postfix (same new
>> server) use the newly created lists.example.org domain, which only
>> exists within Postfix when setting up the Postorius domain and lists?
>> I want to have it so that whatever the list name is, for example
>> 'Staff(a)lists.example.org' will route through Postfix correctly.
>
>
> Have you set an alias_domain for the lists.example.org domain?
>
> What are the contents of /var/lib/mailman3/data/postfix_vmap and
> /var/lib/mailman3/data/postfix_lmtp? If you feel it is necessary to
> anonymize the domains in these, please only change the tld so we can see
> the actual subdomains.
However, it looks like you don't need to follow
<https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/docs/mta.h…>
as lists.example.org is not a virtual_alias_domain. You just need to add
lists.example.org to mydestination, assuming lists.example.org and
lists.example.com are actually different domains, and follow
<https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/docs/mta.h…>.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
11 months, 1 week
Re: digest summary heavily cluttered with hrml code
by Mohsen Masoudfar
Hi Mark,
Thanks again for your help!
Yes, I meant "Today's Topic".
I checked the link you sent, but could not see the solution to the issue.
You mentioned:
" They are in order of priority, list based, address based and global"
Is this in descending or ascending priority? If I set it at list level, does it overwrite the member setting (address based?? )?
I set them along with "Delivery mode" at the member level and saved it, but when I get back to it, it still shows "Regular" and other fields like:
acknowledge_posts, delivery_status, hide_address, receive_list_copy, receive_own_postings
are empty, even though I set them and saved.
Thanks
Mohsen
-----Original Message-----
From: Mark Sapiro <mark(a)msapiro.net>
Sent: Wednesday, October 14, 2020 12:21 PM
To: mailman-users(a)mailman3.org
Subject: [MM3-users] Re: digest summary heavily cluttered with hrml code
[EXTERNAL EMAIL]
On 10/14/20 8:46 AM, Mohsen Masoudfar wrote:
> Hi,
>
> I am running Mailman 3.1.1 on Ubuntu 18.04.
>
> The user complains that the digest summary is cluttered with HTML code.
What does 'summary' mean in this context? Are you referring to the 'Today's Topics:' list or the messages themselves?
Is this perhaps <https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitlab.co…>?
> I thought, I may fix it by:
> Members > {user} > Member options > Delivery mode set to [Plain Text Digest]. After setting the value and clicking [save changes], I tried to check the value by getting back to Members setting for the user, it shows the value as "Regular", which was the value before I tried to update it.
There are actually 3 sets of user preferences. They are in order of priority, list based, address based and global. You can see these if you are logged in to the web UI as the user and go to 'Mailman settings' in the pull down at the top right.
There are issues in Postorius if a user is a member of a list with more than one role - see <https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitlab.co…>.
> Question 1: How may I be sure that the value is set, if it is set?
Examine the settings with `mailman shell`
> Question 2: How may set it for all members of the list?
Create a `mailman shell` script.
> Question 3: Is there a CLI way to do this? I tried "mailman members " command. But it seems not supporting this option.
Again, `mailman shell`, but this is low level and requires some knowledge of Mailman internals.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
_______________________________________________
Mailman-users mailing list -- mailman-users(a)mailman3.org To unsubscribe send an email to mailman-users-leave(a)mailman3.org
https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.mai…
4 years, 1 month
Re: Member Issue Discovered
by Brian Carpenter
On 10/20/20 12:29 AM, Stephen J. Turnbull wrote:
> Brian Carpenter writes:
>
> > You don't really think that this is an issue which means it will be
> > years before it is addressed.
>
> You're making the classic mistake of reporting an issue assuming that
> your *proposed *fix* is the *issue*. Mark replies that the immediate
> issue is not that a database record of the user is retained, it's that
> there's no way for an authenticated user or even an authenticated list
> admin to change that user's display name in the database. It's a
> database, there *is* a way to change it in Mailman, it's "just" that
> it requires site admin intervention. (Assume "just" is marked with
> the nonexistent sarcasm emoji.)
I reported a serious problem. The reply was to bring up assumptions that
should not be made such as a list member is actually a registered user.
As you said they are not. List members are treated differently but I
think they are not. Regardless of whether they are just a list member or
a list member that is also a registered user, there is NO MECHANISM in
place where you can change their associated display name AND their data
is not entirely removed when a reasonable assumption is being made that
it has, such as list unsubscribing. Sorry but I can't see how this
behavior can be justified and also not being made a high priority to fix.
>
> It's arguable that there should *also* be a way for a person to delete
> their user entirely (in fact, some interpretation of GDPR say that
> "it's the law" :-). But that's not the immediate issue faced by
> *this* user and list admin, and I doubt deleting the user object is a
> big issue for users (but it might be for admins because of GDPR etc).
>
> Whether it gets addressed this week or sometime in the next few months
> or in the summer is something you're more than welcome to advocate.
> Like Mark, I recommend filing an issue.
>
> Steve
Some may think that retaining data when there is a reasonable assumption
that it is being removed is immoral and not just a violation of GDPR. As
I said in my reply to Mark, it is a big deal for list owners (admins)
because they are the ones that are going to be interacting with
Postorius/Affinity the most. Most list members, especially those
migrating from MM2, will not be registering with Postorius/Affinity.
List owners/moderators have no choice.
--
Brian Carpenter
Harmonylists.com
Emwd.com
4 years, 1 month
Please help - Held message is crashing mailman.
by Alex King
Hi,
I've used mailman a lot in the past, and decided to install mailman3 in a
recent install. I'm unimpressed so far, it seems buggy.
Running on Ubuntu 18.04.2 LTS from packages, mailman3 3.1.1-9, mailman3-web
0+20170523-14, python-django-postorius 1.1.2-3.
After a few messages, I now can't go to the "Held Messages" in postorius, I
get a 500 error.
I tried to interact on the command line, but could not work out how. Reading
https://mailman.readthedocs.io/en/latest/src/mailman/docs/install.html and
https://mailman.readthedocs.io/en/latest/src/mailman/commands/docs/shell.ht…,
I tried:
# mailman shell
Welcome to the GNU Mailman shell
>>> command = cli('mailman.commands.cli_withlist.shell')
Traceback (most recent call last):
File "/usr/lib/python3.6/code.py", line 91, in runcode
exec(code, self.locals)
File "<console>", line 1, in <module>
NameError: name 'cli' is not defined
I did a lot of reading of the manual and googled, but I have no idea where the
cli object is supposed to come from.....? The documentation is confusing.
Anyway, after some trial and error, i found:
# mailman shell
Welcome to the GNU Mailman shell
>>> list_manager = getUtility(IListManager)
>>> m=list_manager.get("committee(a)[redacted].org")
>>> from mailman.interfaces.requests import IListRequests
>>> requests = IListRequests(m)
>>> [x for x in requests.held_requests][0].id
8
>>> requests.get_request(8)
Traceback (most recent call last):
File "/usr/lib/python3.6/code.py", line 91, in runcode
exec(code, self.locals)
File "<console>", line 1, in <module>
File "/usr/lib/python3/dist-packages/mailman/database/transaction.py", line
85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3/dist-packages/mailman/model/requests.py", line 120,
in get_request
result.data_hash, expunge=False)
File "/usr/lib/python3/dist-packages/mailman/database/transaction.py", line
85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3/dist-packages/mailman/model/pending.py", line 138,
in confirm
value = json.loads(keyvalue.value)
File "/usr/lib/python3.6/json/__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.6/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.6/json/decoder.py", line 355, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Unterminated string starting at: line 1 column 1
(char 0)
It seems something was written out to disk that can't be read in for some
reason (assuming a json object on disk?)
How do I debug this further? How do I find the json being decoded? Any help
would be appreciated. (I found mailman2 just worked, I was happy with that.)
(My colleague posted a bug about this I believe but I don't have the link to
that.)
Thanks,
Alex
5 years, 7 months
Re: Mailman installation results in KeyError: 'env_py'
by Marvin Gülker
Hi,
Am 22. October 2017 um 11:47 Uhr -0700 schrieb Abhilash Raj <maxking(a)asynchronous.in>:
> As Simon mentioned, try using DEBUG=False, if you don't already have
> that. With DEBUG=True, you should see emails printed in a `emails`
> directory under `mailman-suite_project` directory.
Bingo! Man, I was not seeing the forest for the trees. I should have
peeked inside that emails folder. And yes, changing the DEBUG flag
resolves the problem and emails now go out as they should. My bad!
Thank you!
> > That being said, the enormous number of configuration files to consider
> > and dozens of cross-references to other pages in the docs make the
> > installation guide hard to follow; it also lacks logical structure in my
> > opinion, when it refers to parts of the configuration which are later
> > explained. For someone like me who never programmed a Django application
> > (Ruby dev) this is all pretty cryptic. Especially, that some parts of
> > information are on <http://docs.list.org/en/latest/index.html> whereas
> > other parts are scattered over readthedocs.io makes it very
> > complicated.
>
> There are only two primary configuration files (there are a few more for
> finer configurations ;-):
Mh, mailman.cfg, settings.py, and hyperkitty.py are three. But I agree,
I exaggerated.
> All the settings mentioned in the documentation go to either of these
> files, except, when configuring web server and mail server. Please open
> an issue[2] if it is not clear where a particular configuration snippet
> goes and we will fix it.
I'll open an issue later; for now off the top of my head so I won't
forget I came over these problems with the docs:
* The linked installation guide for Sass
(<http://sass-lang.com/install>) does not include any C/C++
implementation you speak of.
* The mailman-suite's settings.py includes a handler for Less, which is
not mentioned in any documentation.
* It's officially suggested to use the "fhs" filesystem path
layout. It's not documented that you need to create the exact
directories and change permissions accordingly; even worse, if one
uses this layout, Mailman tries to write into /sbin, which only the
package manager is allowed to do. Thus, don't recommend that layout in
<http://docs.list.org/en/latest/config-core.html>.
* This page: <http://docs.list.org/en/latest/config-core.html> does not
mention that the "postfix_lmtp" and "postfix_domains" files are
*generated* by Mailman. I spend quite some time looking for these
files before I found in the Mailman Core docs that they're generated
and it was not an error in my installation.
* This page: <http://docs.list.org/en/latest/config-core.html> configures
the LMTP server and the REST API server for the same TCP port
(8024). This clashes.
* This page: <http://docs.list.org/en/latest/config-web.html> should
mention the thing with the DEBUG variable we've successfully worked through in
this thread.
* There's no mention of how to create the initial superuser on
<http://docs.list.org/en/latest/>, it is hidden down in
<https://postorius.readthedocs.io/en/latest/setup.html>, where however
there's no mention of the mailman-suite, but some kind of
"example_project". It was unclear to me whether this now applied to me
or not.
* <http://docs.list.org/en/latest> contains quite some pip install
commands (duplicated from the postorius/hyperkitty/core docs), but
it's missing "$ pip3 install mailman-hyperkitty", which is only
mentioned in <http://hyperkitty.readthedocs.io/en/latest/install.html>
in the text body (but not as a command block).
* This page:
<http://mailman.readthedocs.io/en/latest/src/mailman/docs/mta.html>
uses "configuration: python:mailman.config.postfix" in the
introductory text without explanation, but down in the
Postfix-specific block the directive is missing with no explanation. I
opted to include it, but I don't know whether that's now correct or
not.
The overall problem I had with the docs is that they can't be followed
top-down. One has to refer to the subproject docs if something is
unclear, then searching in them until one finds what one was looking for
(even if one doesn't know what one is looking for, as with the superuser
creation command). I totally appreciate the detailed subproject-docs
approach, but you should follow it consequently then. That is, do not
duplicate some information from the subproject docs in the mailman-suite
docs. It creates the impression as if the mailman-suite docs are
complete, which they aren't. Instead, the mailman-suite docs should use
explicit references, for example:
1. Do this...
2. Now follow the procedure outlined in [Postorius Installation link]
3. Do something else...
4. Follow the procudedure in [Hyperkitty installation link]
That way, the Mailman installation guide would be less of a puzzle.
It however might just be me. I apologise if I sound silly.
Greetings
Marvin
--
Blog: https://www.guelkerdev.de
PGP/GPG ID: F1D8799FBCC8BC4F
7 years, 1 month
Internal Server Error: Reattach this thread
by hasimoto@designet.co.jp
Hi,
In the archive, clicking "Reconnect this thread" causes an internal server error.
I received the following email, but I don't know how to solve it, please help me.
-- -- -- --
Subject: [Django] ERROR (EXTERNAL IP): Internal Server Error: /archives/list/testml(a)list1.example.com/thread/LQ6F7D7EVVUSIJJ7B5S675ZVSU5ZZCBU/reattach-suggest
-- -- -- --
Internal Server Error: /archives/list/testml(a)list1.example.com/thread/LQ6F7D7EVVUSIJJ7B5S675ZVSU5ZZCBU/reattach-suggest
AttributeError at /archives/list/testml(a)list1.example.com/thread/LQ6F7D7EVVUSIJJ7B5S675ZVSU5ZZCBU/reattach-suggest
'function' object has no attribute 'lower'
Request Method: GET
Request URL: http://mailman.example.com/archives/list/testml@list1.example.com/thread/LQ…
Django Version: 3.0.14
Python Executable: /opt/mailman/venv/bin/uwsgi
Python Version: 3.10.6
Python Path: ['.', '', '/etc/mailman3', '/usr/lib/python310.zip', '/usr/lib/python3.10', '/usr/lib/python3.10/lib-dynload', '/opt/mailman/venv/lib/python3.10/site-packages']
Server time: 水, 19 10月 2022 01:07:28 +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')
Traceback (most recent call last):
File "/opt/mailman/venv/lib/python3.10/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/opt/mailman/venv/lib/python3.10/site-packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/opt/mailman/venv/lib/python3.10/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/opt/mailman/venv/lib/python3.10/site-packages/hyperkitty/lib/view_helpers.py", line 134, in inner
return func(request, *args, **kwargs)
File "/opt/mailman/venv/lib/python3.10/site-packages/hyperkitty/views/thread.py", line 413, in reattach_suggest
default_search_query = stripped_subject(
File "/opt/mailman/venv/lib/python3.10/site-packages/hyperkitty/lib/utils.py", line 155, in stripped_subject
if subject.lower().startswith(mlist.subject_prefix.lower()):
Exception Type: AttributeError at /archives/list/testml(a)list1.example.com/thread/LQ6F7D7EVVUSIJJ7B5S675ZVSU5ZZCBU/reattach-suggest
Exception Value: 'function' object has no attribute 'lower'
Request information:
USER: admin
GET:
q = ''
POST: No POST data
FILES: No FILES data
COOKIES:
csrftoken = 'cBq9h8x7bG6BMboc89DB8ucQiToTRTpwijt0uJbVXq47ucV2cAGYh05TsaVARobK'
sessionid = 'upuj3rv0wkxafklk633lx2jppwgrco1t'
META:
CSRF_COOKIE = 'cBq9h8x7bG6BMboc89DB8ucQiToTRTpwijt0uJbVXq47ucV2cAGYh05TsaVARobK'
HTTP_ACCEPT = '*/*'
HTTP_ACCEPT_ENCODING = 'gzip, deflate'
HTTP_ACCEPT_LANGUAGE = 'ja,en-US;q=0.7,en;q=0.3'
HTTP_CONNECTION = 'close'
HTTP_COOKIE = 'csrftoken=cBq9h8x7bG6BMboc89DB8ucQiToTRTpwijt0uJbVXq47ucV2cAGYh05TsaVARobK; sessionid=upuj3rv0wkxafklk633lx2jppwgrco1t'
HTTP_HOST = 'mailman.example.com'
HTTP_REFERER = 'http://mailman.example.com/archives/list/testml@list1.example.com/thread/LQ…'
HTTP_USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0'
HTTP_X_FORWARDED_FOR = '192.168.30.94'
HTTP_X_REQUESTED_WITH = 'XMLHttpRequest'
PATH_INFO = '/archives/list/testml(a)list1.example.com/thread/LQ6F7D7EVVUSIJJ7B5S675ZVSU5ZZCBU/reattach-suggest'
QUERY_STRING = 'q='
REMOTE_ADDR = '127.0.0.1'
REQUEST_METHOD = 'GET'
REQUEST_URI = '/archives/list/testml(a)list1.example.com/thread/LQ6F7D7EVVUSIJJ7B5S675ZVSU5ZZCBU/reattach-suggest?q='
SCRIPT_NAME = ''
SERVER_NAME = 'ubuntu22'
SERVER_PORT = '8000'
SERVER_PROTOCOL = 'HTTP/1.0'
uwsgi.core = 0
uwsgi.node = b'ubuntu22'
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 0x7f4ac0d23570>
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 = 'http'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
ACCOUNT_UNIQUE_EMAIL = True
ADMINS = "(('Mailman Suite Admin', 'admin1(a)example.org'),)"
ALLOWED_HOSTS = ['127.0.0.1', 'mailman.example.com']
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 0x7f4ac443e050>
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 = 'admin1(a)example.org'
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://mailman.example.com/mailman3/'
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 = 'admin1(a)example.org'
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'
-- -- -- --
Thank you.
2 years, 1 month
Re: Welcome message template errors
by Mark Sapiro
On 4/23/24 20:36, Mark wrote:
>
>> Did you delete and recreate the template after changing
>> POSTORIUS_TEMPLATE_BASE_URL? If not, the template table still has the
>> old URI.
>
> Yes. Every test is: delete template and users (via Postorius), make any
> config changes, restart everything, then new template and new user (via
> Postorius).
OK
>> What does `ps -fwwu mailman|grep runner` show?
>
> # ps -fwwu mailman|grep runner
> mailman 375726 375716 0 02:00 ? 00:00:01
> /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=archive:0:1
> mailman 375727 375716 0 02:00 ? 00:00:01
> /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=bounces:0:1
> mailman 375728 375716 0 02:00 ? 00:00:01
> /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=command:0:1
> mailman 375729 375716 0 02:00 ? 00:00:01
> /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=in:0:1
> mailman 375730 375716 0 02:00 ? 00:00:01
> /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=lmtp:0:1
> mailman 375731 375716 0 02:00 ? 00:00:01
> /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=nntp:0:1
> mailman 375732 375716 0 02:00 ? 00:00:01
> /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=out:0:1
> mailman 375733 375716 0 02:00 ? 00:00:01
> /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=pipeline:0:1
> mailman 375734 375716 0 02:00 ? 00:00:01
> /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=rest:0:1
> mailman 375735 375716 0 02:00 ? 00:00:00
> /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=retry:0:1
> mailman 375736 375716 0 02:00 ? 00:00:00
> /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=task:0:1
> mailman 375737 375716 0 02:00 ? 00:00:01
> /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=virgin:0:1
> mailman 375738 375716 0 02:00 ? 00:00:01
> /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=digest:0:1
> mailman 375790 375734 0 02:00 ? 00:00:00
> /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=rest:0:1
> mailman 375791 375734 0 02:00 ? 00:00:00
> /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=rest:0:1
So all the runners are running as user mailman. That's good. What
exactly is the issue now. Is it retrievals timing out or an empty
welcome message?
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
7 months
Re: MM3 Docker
by Odhiambo Washington
On Tue, 8 Jan 2019 at 03:29, Mark Sapiro <mark(a)msapiro.net> wrote:
> On 1/7/19 1:18 AM, Odhiambo Washington wrote:
> > On Sun, 6 Jan 2019 at 23:39, Mark Sapiro <mark(a)msapiro.net> wrote:
> >>
> >> Please help me understand what steps are missing and I will try to
> >> provide the information.
> >
> >
> > Okay.
> >
> > At the installation stage, you say the following:
> > "I already had some things set up in /opt/mailman including a git
> > subdirectory containing clones of the GitLab mailman, mailmanclient,
> > mailman-hyperkitty, hyperkitty, django-mailman3 and
> > postorius projects. On the third server I have added mailman-suite
> > because I use the settings.py from that project as the basis for mine."
> >
> > Please assume that the reader is a newbie to python3 virtualenv and give
> the
> > details of the commands they need to execute to (a) clone all the
> projects
> > needed
> > and (b) create the virtualenv.
> >
> > The next steps are:
> > mkdir /opt/mailman/mm
> >
> > Then you say "I then created a /opt/mailman/mm directory and within that
> a
> > Python 3.6 virtualenv"
> > What happens here is something that needs clarification, because you are
> > specific about "python3.6".
> > I have googled and realized that one has to be specific about the python
> > version they want to use in their virtualenv
> > as shown here ->
> >
> https://stackoverflow.com/questions/45293436/how-to-specify-python-version-…
> >
> > exact command to execute to create the /opt/mailman/mm/venv
> > exact command to execute to activate virtualenv
>
>
> I have added a comment to the page which I hope gives you what you want.
>
> I also added a section on templates instead of referring to a prior
> version of the page.
>
That makes it better.
However, as a newbie, something is not yet clear:
"When active in a particular shell, it can be deactivated with the command
deactivate
or by exiting that shell."
HI am trying to understand the effect of detaching from a venv. I am
assuming that a virtualenv is a container that is supposed to be always
active for the services within to be accessible. Is that right? So, how do
I ensure it's always running/up, or that does not matter as the scripts
which run the services will always refer to the files?
--
Best regards,
Odhiambo WASHINGTON,
Nairobi,KE
+254 7 3200 0004/+254 7 2274 3223
"Oh, the cruft.", grep ^[^#] :-)
5 years, 10 months