
Django: An error occurred while processing your request.
by Florian Sukup
Hi,
I running Debian bookworm and have installed mailman3-full (+ postfix).
I am new to mailman3 (using mailman2 now) and about exploring how to
migrate.
I had 3 sites or domains: example.com and two real ones.
When I received emails from postorius, then it came from example.com
which is nonsense as I worked with the real lists. So I deleted example.com.
When I call https://.../mailman3/admin or any of the lists, the result is:
Server error
An error occurred while processing your request.
How can I get out of it? This is only a test environment, so no heart
attack.
Thank you for any help.
Florian.
2 weeks, 6 days

Re: Confusing mailman user model
by Gilles Filippini
Gilles Filippini a écrit le 19/07/2020 à 19:10 :
> Gilles Filippini a écrit le 19/07/2020 à 18:00 :
>> Mark Sapiro a écrit le 19/07/2020 à 17:30 :
>>> On 7/19/20 8:10 AM, Gilles Filippini wrote:
>>>> Hi,
>>>>
>>>> I'm trying to understand the Mailman user model, and I'm confused about
>>>> the respective roles of tables 'auth_user' and 'user'.
>>>
>>>
>>> auth_user is a Django auth table. These are the users listed in the
>>> Django admin web UI.
>>>
>>> user is Mailman core's users.
>>>
>>>
>>>> Both have an 'id' column referred to as 'user_id' when used as a foreign
>>>> key. But there seems to be no relation at all between them as they use
>>>> different ids for the same user.
>>>
>>>
>>> Right, they are unrelated.
>>>
>>>
>>>> Our mailman server was migrated from mailman2 to mailman3 about 1.5 year
>>>> ago, and there is an inconsistency I'd like to fix:
>>>> 2 of our users have a registered Mailman account with their respective
>>>> email addresses in table 'auth_user', but these very same addresses in
>>>> the 'address' table are linked to another old admin account in the
>>>> 'user' table.
>>>
>>> Their Mailman account is the 'old' one. the auth_user account is a
>>> Django account
>>>>
>>>> Then if add one of these addresses as a domain owner, it it the old
>>>> admin address which is selected instead. How could I fix that?
>>>
>>>
>>> That's because domain owner in a Mailman thing and involvs the Mailman
>>> user. You could delete the Django users via the Django admin UI and then
>>> re-register them via Postorius. That *might* work.
>>
>> When login into postorius, it is the Django account that is used, right?
>> Then how is the mailman account retrieved from there? It seems UUIDs are
>> used in the process, but I fail understanding how, so far. Wouldn't it
>> be safe to retrieve the new Mailman account associated to these Django
>> users, and link there emails from 'address' table' to them?
>
> Reading the mailman-web source code I understand now that the mailman
> account is retrieved from the Django account email address. Then both
> users are tied to the same old mailman admin account, and deleting then
> registering them again won't change anything on this aspect.
>
> Would this work?
> 1- For both addresses, update their record in table 'address' to set
> 'user_id' to null
> 2- On their next login to Mailman-web, a new mailman account would be
> created and associated with their own email address.
Done that, and it worked.
Thanks,
_g.
4 years, 10 months

Re: Some doc updates from Fedora install experience
by tlhackque
On 26-Jun-17 15:31, Abhilash Raj wrote:
> Excerpts from tlhackque--- via Mailman-users's message of June 24,
> 2017 4:21 am:
>> I had to read code to discover that the web UI (Postorious) server
>> address doesn't exist in any config file.
>
> That is True, there is no stright forward way for Mailman Core to know
> who is
> using the API and where is the Web UI working. I *think* "Web Host" is
> used to
> generate emails, but that can't always be completely accurate because
> there is
> no easy way to know what is the "root" url for Postorius and
> Hyperkitty. Generally, the default configurations place it at
> "/postorius/" and
> "/hyperkitty/", but there are installations where it is placed at
> "/mailman3/"
> and "/archives/".
>
It would be helpful for API users to "register" with Mailman, so that
API clients can figure out how to direct users to their web pages.
There has to be a directory somewhere, and Mailman is the central
character. It doesn't have to be one place. Perhaps something like
"get( '/lists/config/admin_ui') and get('/lists/config/subscriber_ui") -
which could return something like:
[ {"type":"gui", "name":"postorius",
"uri":"https://www.example.net/mailman3/"},
{"type":"cli","name":"mailmanclient","uri":"domain://my.socket.example.net:1234"},{"type":"gui","name":"mailmanx","uri":"file:///usr/sbin/mailman-Tk"},
...]
(Where the order indicates preference).
Speaking of which, without this knowledge, how can Mailman provide the
personalized "to unsubscribe, visit your account at "...." customizations"?
I see that there are URLs for headers/footers, but we seem to have lost
the ability to insert the URL for the GUI managing your list/account
into personalized e-mails...
>>
>> To bind it to something other than localhost, you put the desired ip
>> address & port on the
>>
>> `python manage.py runserver` command line (in mailman-suite_project.
>
> Ok, so you should never use this in production.
AGREEED
> This command starts a
> "development" server which is only supposed to be used in the development
> environment.
My development environment is a VM for Mailman, and other VMs for the
mail server. And if I try to run a web browser on the Mailman VM, it
takes over the machine and even so is unresponsive. So I needed to make the
UI visible on the network where my PC is. I do understand the issues,
and there are firewalls protecting the environment.
> For any production use, in general for any python web app, we use a
> wsgi server which interfaces between Django and a "real" web server
> like Nginx
> or Apache. I would recommend using uwsgi. This[1] and [2] might be of
> help.
>
AGREE. I know that I will have to do this eventually. But my immediate
goal is to see if it's possible to get my application talking to Mailman
V3 - it's a 1-user environment. So I needed an evaluation environment
with the absolute minimum setup costs. If things work out, I'll do the
right thing. If not, I can't afford to have spent a week or so
untangling nested webservers talking to each-other with frameworks, a
half-dozen passwords and config files.
This was the quickest path I could find to an 'almost out-of-the-box'
evaluation and prototyping environment...and pretty much the only
"step-by-step" instructions that I could find. I'd have tried
"step-by-step" for production if (a) I could find it and (b) I could
configure it with less than a couple of days of study :-(
I decided to document this in case it helps someone else.
I strongly agree that it's not production, and not for all users.
> There is some configuration over here[3] that might help you get it
> running. You
> would have to change some parameters in the configuration though.
>
>>
>> It must be an IP address - it doesn't resolve DNS names. The port is
>> appended to the IP address with a ':'.
>>
>> So, in venv 2.7
>> `cd mailman-suite_project && python manage.py runserver
>> 10.0.0.11:8000` will work.
>>
>> There are all sorts of issues if your network is at all public, but
>> in my
>> case, a multi-machine walled garden, with no local web browser, it
>> allowed
>> bootstrapping to continue.
>
> It is not supposed to be public and should only be used for development.
>
Agree, agree, agree.
>>
>> The runserver command also takes --ipv6 (or -6) to bind to an IPv6
>> address,
>> --nothreading and --noreload also exist (but i haven't tracked down
>> whethere
>> they're useful')
>
> There are a whole lot of other optins available to `python manage.py`
> command
> which you can find in the documentation for Django.
Truth be told, I had no idea that 'runserver" had anything to do with
Django. I was just
following instructions to get something out of the box and onto the wire.
FWIW, 'python manage.py --help' and 'python manage.py help runserver'
are semi-intructive.
I still have no clue what an "auto-reloader" is, but the help does say
that --noreload won't use it :-)
It's clear that a lot of work has gone into this release -- but it's
also quite frustrating for
people who just want to explore using it to get through the setup effort.
I've made some progress.
> --
> thanks,
> Abhilash Raj
7 years, 11 months

Changing Mailman's "from" domain - redux
by roger@reasonal.com
(this is a posting directly into this web ui as mails to this list just vanish without a trace)
--
Anyone? Anyone? With reference to the original mail here https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
It seems that the "From" domain field is set by Postorius, but I can't find anything in its documentation on how to change it.
I've done obvious things like change the boxes hostname to what I want, have fiddled around in the various Postfix settings for mydomain, etc etc. But all admin messages, listserver replies etc come from the partial domain "blah.blah", not "listman.blah.blah".
Any ideas welcome.
6 years

Re: templates
by Christian
Okay I sent a test message this morning and subscribers are reporting they
did not receive it. The smtp.log shows 'smtp to
degrowcali(a)lists.ccalternatives.org for 25 recips, completed in
3276.275292634964 seconds' (see below)
I alone received it however and it is listed in the archive. Below is the
excerpt from smtp.log. Two of my 5 lists are exhibiting this behavior, while
2 other lists are working normally. Please advise. Thank you.
root@zarathustra:/opt/mailman/mm/var/logs# vi smtp.log
May 05 08:09:24 2023 (768) ('127.0.0.1', 48706) recip:
degrowcali-bounces+vortexanthony=hotmail.com(a)lists.ccalternatives.org
May 05 08:09:24 2023 (768) ('127.0.0.1', 48706) >> b'DATA'
May 05 08:09:24 2023 (768) ('127.0.0.1', 48706) >> b'QUIT'
May 05 08:09:24 2023 (768) ('127.0.0.1', 48706) connection lost
May 05 08:09:24 2023 (768) ('127.0.0.1', 48706) Connection lost during
_handle_client()
May 05 08:11:35 2023 (768) Available AUTH mechanisms: LOGIN(builtin)
PLAIN(builtin)
May 05 08:11:35 2023 (768) Peer: ('127.0.0.1', 60312)
May 05 08:11:35 2023 (768) ('127.0.0.1', 60312) handling connection
May 05 08:11:35 2023 (768) ('127.0.0.1', 60312) >> b'LHLO
zarathustra.ccalternatives.org'
May 05 08:11:35 2023 (768) ('127.0.0.1', 60312) >> b'MAIL FROM:<> SIZE=9885
BODY=8BITMIME'
May 05 08:11:35 2023 (768) ('127.0.0.1', 60312) sender: <>
May 05 08:11:35 2023 (768) ('127.0.0.1', 60312) >> b'RCPT
TO:<degrowcali-bounces+alaitz.aritza=gmail.com(a)lists.ccalternatives.org>'
May 05 08:11:35 2023 (768) ('127.0.0.1', 60312) recip:
degrowcali-bounces+alaitz.aritza=gmail.com(a)lists.ccalternatives.org
May 05 08:11:35 2023 (768) ('127.0.0.1', 60312) >> b'DATA'
May 05 08:11:35 2023 (768) ('127.0.0.1', 60312) >> b'QUIT'
May 05 08:11:35 2023 (768) ('127.0.0.1', 60312) connection lost
May 05 08:11:35 2023 (768) ('127.0.0.1', 60312) Connection lost during
_handle_client()
May 05 08:13:46 2023 (771)
<046f01d97f5c$27c4ada0$774e08e0$(a)degrowthcalifornia.org> smtp to
degrowcali(a)lists.ccalternatives.org for 25 recips, completed in
3276.275292634964 seconds
May 05 08:13:46 2023 (771)
<046f01d97f5c$27c4ada0$774e08e0$(a)degrowthcalifornia.org> post to
degrowcali(a)lists.ccalternatives.org from christian(a)degrowthcalifornia.org,
5012 bytes
May 05 08:13:46 2023 (771)
<168329874052.765.12737190159456781981(a)zarathustra.ccalternatives.org> smtp
to degrowcali(a)lists.ccalternatives.org for 1 recips, completed in
0.011698722839355469 seconds
May 05 08:13:46 2023 (771)
<168329874052.765.12737190159456781981(a)zarathustra.ccalternatives.org> post
to degrowcali(a)lists.ccalternatives.org from
degrowcali-bounces+6397d6fde210be0b39dbf22a9868e61d6e2d0f23(a)lists.ccalternat
ives.org, 11445 bytes
May 05 08:13:46 2023 (771)
<168329886073.765.17844938860507947692(a)zarathustra.ccalternatives.org> smtp
to degrowcali(a)lists.ccalternatives.org for 1 recips, completed in
0.00799560546875 seconds
May 05 08:13:46 2023 (771)
<168329886073.765.17844938860507947692(a)zarathustra.ccalternatives.org> post
to degrowcali(a)lists.ccalternatives.org from
degrowcali-bounces+62749dfe16f9d39e2cd0c3e94754723efbe8169d(a)lists.ccalternat
ives.org, 11400 bytes
May 05 08:13:46 2023 (771)
<168329958151.765.3625387421642934590(a)zarathustra.ccalternatives.org> smtp
to degrowcali(a)lists.ccalternatives.org for 1 recips, completed in
0.008965730667114258 seconds
May 05 08:13:46 2023 (771)
<168329958151.765.3625387421642934590(a)zarathustra.ccalternatives.org> post
to degrowcali(a)lists.ccalternatives.org from
degrowcali-bounces+8890cbead24710cdebeedbbd96d99fcd7f6f1343(a)lists.ccalternat
ives.org, 11426 bytes
May 05 08:13:46 2023 (768) Available AUTH mechanisms: LOGIN(builtin)
PLAIN(builtin)
May 05 08:13:46 2023 (768) Peer: ('127.0.0.1', 39046)
May 05 08:13:46 2023 (768) ('127.0.0.1', 39046) handling connection
May 05 08:13:46 2023 (768) ('127.0.0.1', 39046) >> b'LHLO
zarathustra.ccalternatives.org'
May 05 08:13:46 2023 (768) ('127.0.0.1', 39046) >> b'MAIL FROM:<> SIZE=15076
BODY=8BITMIME'
May 05 08:13:46 2023 (768) ('127.0.0.1', 39046) sender: <>
May 05 08:13:46 2023 (768) ('127.0.0.1', 39046) >> b'RCPT
TO:<degrowcali-bounces+6397d6fde210be0b39dbf22a9868e61d6e2d0f23(a)lists.ccalte
rnatives.org>'
May 05 08:13:46 2023 (768) ('127.0.0.1', 39046) recip:
degrowcali-bounces+6397d6fde210be0b39dbf22a9868e61d6e2d0f23(a)lists.ccalternat
ives.org
May 05 08:13:46 2023 (768) ('127.0.0.1', 39046) >> b'DATA'
May 05 08:13:46 2023 (768) ('127.0.0.1', 39046) >> b'QUIT'
May 05 08:13:46 2023 (768) ('127.0.0.1', 39046) connection lost
May 05 08:13:46 2023 (768) ('127.0.0.1', 39046) Connection lost during
_handle_client()
May 05 08:13:46 2023 (768) Available AUTH mechanisms: LOGIN(builtin)
PLAIN(builtin)
May 05 08:13:46 2023 (768) Peer: ('127.0.0.1', 39050)
May 05 08:13:46 2023 (768) ('127.0.0.1', 39050) handling connection
May 05 08:13:46 2023 (768) ('127.0.0.1', 39050) >> b'LHLO
zarathustra.ccalternatives.org'
May 05 08:13:46 2023 (768) ('127.0.0.1', 39050) >> b'MAIL FROM:<> SIZE=15049
BODY=8BITMIME'
May 05 08:13:46 2023 (768) ('127.0.0.1', 39050) sender: <>
May 05 08:13:46 2023 (768) ('127.0.0.1', 39050) >> b'RCPT
TO:<degrowcali-bounces+8890cbead24710cdebeedbbd96d99fcd7f6f1343(a)lists.ccalte
rnatives.org>'
May 05 08:13:46 2023 (768) ('127.0.0.1', 39050) recip:
degrowcali-bounces+8890cbead24710cdebeedbbd96d99fcd7f6f1343(a)lists.ccalternat
ives.org
May 05 08:13:46 2023 (768) ('127.0.0.1', 39050) >> b'DATA'
May 05 08:13:46 2023 (768) ('127.0.0.1', 39050) >> b'QUIT'
May 05 08:13:46 2023 (768) ('127.0.0.1', 39050) connection lost
-----Original Message-----
From: Mark Sapiro <mark(a)msapiro.net>
Sent: Thursday, May 4, 2023 12:19 PM
To: mailman-users(a)mailman3.org
Subject: [MM3-users] Re: templates
On 5/4/23 11:15, Christian via Mailman-users wrote:
> In March when I started troubleshooting my lists, you stated:
>
> "Also, one other thing you might check. Do these non-working lists
> have templates defined in postorius, in particular, one for
> list:member:regular:footer, and if not, are there any in Mailman's
> mailto:var/templates/lists/redlatinleg@lists.ccalternatives.org/ derectory
> that Mailman doesn't have permission to find and read?"
>
> There are no other templates listed in either Postorius nor in
> Mailman's var/templates (as I stated, I do not even lave a 'lists'
> subdirectory under Mailman's var/templates). My subscribers are not
> receiving message distributions from my lists, even while some of them
> are listed in the archives.
See the original thread at
https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/U
HWOG6S57FM2SIQWHEPWM3CDUSAMLOOP/
(which you hijacked about 4 messages in) and particularly the message at
https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message/
NZ7G3JMYXFTQNVJ2DYGJ6PETEQT55SKB/
Without further information, I can't say more than that.
--
Mark Sapiro <mailto:mark@msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
_______________________________________________
Mailman-users mailing list -- mailto:mailman-users@mailman3.org To
unsubscribe send an email to mailto:mailman-users-leave@mailman3.org
https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
Archived at:
https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message/
GJNYZK3DK4UZYAILV7JZ62PPVPDPKNOZ/
This message sent to mailto:csa@web-analysts.net
2 years, 1 month

MM3 gateway errors and frequent reboot needs
by hansen@rc.org
We have had to reboot the list server almost every week and wonder if there is something leaking and eating up resources. I does not appear to be memory, though. The server is slow to respond (could be because it's overseas) and then after some time we get intermittent gateway errors and finally we cannot access the lists online because of the gateway errors. It appears to me that the issue is with Postorius, but I could be wrong. Do files get closed after opening? Are we alone having such issues?
Please advise.
PS: My old MM2 installation could (and did) run without any help. Not so with MM3.
5 years, 1 month

Re: Broken web interface Ubuntu 20.04
by Mark Sapiro
On 9/30/21 2:30 PM, tim(a)thecutts.org wrote:
>
> When I look at the mailman-web-logs, the urls that postorious puts into the page don't honour the POSTORIOUS_TEMPLATE_BASE_URL variable in the mailman-web.py file any more.
I'm not saying there isn't an issue in Postorius, but I don't think it
has anything to do with POSTORIUS_TEMPLATE_BASE_URL which is only used
for templates and has nothing to do with the rendering of the list pages
and shouldn't contain anything beyond the host and port in any case.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
3 years, 8 months

Re: [Mailman-Users] MM3 startup issues
by Brian Carpenter
On 1/7/20 2:16 AM, hansen(a)rc.org wrote:
> Beats me, Mark. Brian, do you know?
Yes sir. Here are the three startup scripts that you will need to know.
I should have included that in the communication I sent you and I
apologize for that:
systemctl start/stop/restart/status mailman (this is for Mailman core)
systemctl start/stop/restart/status qcluster (this is for Django)
systemctl start/stop/restart/status gunicorn (this is for web access to
postorius/hyperkitty)
--
Please let me know if you need further assistance.
Thank you for your business. We appreciate our clients.
Brian Carpenter
EMWD.com
--
EMWD's Knowledgebase:
https://clientarea.emwd.com/index.php/knowledgebase
EMWD's Community Forums
http://discourse.emwd.com/
5 years, 5 months

Hyperkitty not receaving messages / empty archive [Django] ERROR (EXTERNAL IP): Internal Server Error: /hyperkitty/api/mailman/urls
by Helge Baumgart
Hello Everybody,
i have set up a fresh mailman3 installation with maxkings Docker compose
image (https://github.com/maxking/docker-mailman)
I've got it working except i get a very strange hyperkitty error:
Each time i'm sending a post to the list, it gets distributed to the
emailadresses of the list, and at the same time i'm geting a bunch of
error Mails.
And: There are no Mails visible in the Archive.
The directory under core/var/archive/hyperkitty/spool/ listst the
mails....though...
Hyperkitty-Api-Key in the docker-compose.yml is set via .env Variabel,
so it should be identical.
That ist the error Mail i receive:
Can annybody hint me where to search further, what is wrong?
If searched insesivly but found nothing as of jet.... :-(
Thank you in advance!
Helge
Internal Server Error: /hyperkitty/api/mailman/urls
TypeError at /hyperkitty/api/mailman/urls
unsupported operand types(s) or combination of types: 'str' and 'NoneType'
Request Method: GET
Request URL:http://mailman-web:8000/hyperkitty/api/mailman/urls?mlist=test%40lists.mydomain.net&msgid=2291673b-c760-4651-8025-ae170429d587%40web.de
Django Version: 4.1.12
Python Executable: /usr/bin/uwsgi
Python Version: 3.11.6
Python Path: ['.', '', '/usr/lib/python311.zip', '/usr/lib/python3.11', '/usr/lib/python3.11/lib-dynload', '/usr/lib/python3.11/site-packages']
Server time: Tue, 21 Jan 2025 13:12:13 +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',
'django_mailman3.lib.auth.fedora',
'allauth.socialaccount.providers.openid',
'allauth.socialaccount.providers.github',
'allauth.socialaccount.providers.gitlab',
'allauth.socialaccount.providers.google']
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',
'allauth.account.middleware.AccountMiddleware',
'django_mailman3.middleware.TimezoneMiddleware',
'postorius.middleware.PostoriusMiddleware')
Traceback (most recent call last):
File "/usr/lib/python3.11/site-packages/django/core/handlers/exception.py", line 56, in inner
response = get_response(request)
File "/usr/lib/python3.11/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python3.11/site-packages/hyperkitty/views/mailman.py", line 109, in _decorator
not hmac.compare_digest(
Exception Type: TypeError at /hyperkitty/api/mailman/urls
Exception Value: unsupported operand types(s) or combination of types: 'str' and 'NoneType'
Raised during: hyperkitty.views.mailman.urls
Request information:
USER: AnonymousUser
GET:
mlist = 'test(a)lists.mydomain.net'
msgid = '2291673b-c760-4651-8025-ae170429d587(a)web.de'
POST: No POST data
FILES: No FILES data
COOKIES: No cookie data
META:
HTTP_ACCEPT = '*/*'
HTTP_ACCEPT_ENCODING = 'gzip, deflate'
HTTP_AUTHORIZATION = 'Token 3ezHkyhUqlD0qB2LiLb4xORyuVFCwimlVZidlOk7XJqjy9QBaNM6O0w4aSR162bN2tIFMdWFKOpfQ1Zq5QYrrVE4IsNFGvkLfGwbf58uENJmUD2yvA0pGXTlvLc3KFD1'
HTTP_CONNECTION = 'keep-alive'
HTTP_HOST = 'mailman-web:8000'
HTTP_USER_AGENT = 'python-requests/2.31.0'
PATH_INFO = '/hyperkitty/api/mailman/urls'
QUERY_STRING = 'mlist=test%40lists.mydomain.net&msgid=2291673b-c760-4651-8025-ae170429d587%40web.de'
REMOTE_ADDR = '172.26.0.2'
REQUEST_METHOD = 'GET'
REQUEST_URI = '/hyperkitty/api/mailman/urls?mlist=test%40lists.mydomain.net&msgid=2291673b-c760-4651-8025-ae170429d587%40web.de'
SCRIPT_NAME = ''
SERVER_NAME = 'mailman-web'
SERVER_PORT = '8000'
SERVER_PROTOCOL = 'HTTP/1.1'
uwsgi.core = 1
uwsgi.node = b'mailman-web'
uwsgi.version = b'2.0.22'
wsgi.errors = <_io.TextIOWrapper name=2 mode='w' encoding='UTF-8'>
wsgi.file_wrapper = <built-in function uwsgi_sendfile>
wsgi.input = <uwsgi._Input object at 0x790fb0ef82b0>
wsgi.multiprocess = True
wsgi.multithread = True
wsgi.run_once = False
wsgi.url_scheme = 'http'
wsgi.version = '(1, 0)'
Settings:
Using settings module settings
ABSOLUTE_URL_OVERRIDES = {}
ACCOUNT_AUTHENTICATION_METHOD = 'username_email'
ACCOUNT_DEFAULT_HTTP_PROTOCOL = 'https'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
ACCOUNT_UNIQUE_EMAIL = True
ADMINS = "(('Mailman Suite Admin', 'it(a)mydomain.net'),)"
ALLOWED_HOSTS = ['localhost', 'mailman-web', '172.26.0.3', 'lists.mydomain.net', 'lists.mydomain.net']
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 = '/opt/mailman-web'
CACHES = {'default': {'BACKEND': 'diskcache.DjangoCache', 'LOCATION': '/opt/mailman-web-data/diskcache', 'OPTIONS': {'size_limit': 1073741824}}}
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 0x790fb2323420>
COMPRESS_MINT_DELAY = 30
COMPRESS_MTIME_DELAY = 10
COMPRESS_OFFLINE = False
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/less', 'lessc {infile} {outfile}'), ('text/x-scss', 'sassc -t compressed {infile} {outfile}'), ('text/x-sass', 'sassc -t compressed {infile} {outfile}'))"
COMPRESS_REBUILD_TIMEOUT = 2592000
COMPRESS_ROOT = '/opt/mailman-web-data/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_MASKED = 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': {'NAME': 'mailmandb', 'USER': 'mailman', 'PASSWORD': '********************', 'HOST': 'database', 'PORT': '', 'CONN_MAX_AGE': 600, 'CONN_HEALTH_CHECKS': False, 'ENGINE': 'django.db.backends.postgresql', 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'OPTIONS': {}, 'TIME_ZONE': None, 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, 'MIRROR': None, 'NAME': None}}}
DATABASE_ROUTERS = []
DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440
DATA_UPLOAD_MAX_NUMBER_FIELDS = 1000
DATA_UPLOAD_MAX_NUMBER_FILES = 100
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', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M']
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_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']
DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'
DEFAULT_CHARSET = 'utf-8'
DEFAULT_EXCEPTION_REPORTER = 'django.views.debug.ExceptionReporter'
DEFAULT_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter'
DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
DEFAULT_FROM_EMAIL = 'lists(a)mydomain.net'
DEFAULT_INDEX_TABLESPACE = ''
DEFAULT_TABLESPACE = ''
DISALLOWED_USER_AGENTS = []
DISKCACHE_PATH = '/opt/mailman-web-data/diskcache'
DISKCACHE_SIZE = 1073741824
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = '172.26.0.5'
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_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': '/opt/mailman-web-data/fulltext_index'}}
IGNORABLE_404_URLS = []
INSTALLED_APPS = ['hyperkitty', 'postorius', 'django_mailman3', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'django_gravatar', 'compressor', 'haystack', 'django_extensions', 'django_q', 'allauth', 'allauth.account', 'allauth.socialaccount', 'django_mailman3.lib.auth.fedora', 'allauth.socialaccount.providers.openid', 'allauth.socialaccount.providers.github', 'allauth.socialaccount.providers.gitlab', 'allauth.socialaccount.providers.google']
INTERNAL_IPS = []
LANGUAGES = [('af', 'Afrikaans'), ('ar', 'Arabic'), ('ar-dz', 'Algerian 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'), ('ig', 'Igbo'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kab', 'Kabyle'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('ky', 'Kyrgyz'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('ms', 'Malay'), ('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'), ('tg', 'Tajik'), ('th', 'Thai'), ('tk', 'Turkmen'), ('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', 'ar-dz', '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.RotatingFileHandler', 'filename': '/opt/mailman-web-data/logs/mailmanweb.log', 'formatter': 'verbose'}, 'console': {'class': 'logging.StreamHandler', 'formatter': 'simple', 'level': 'INFO', 'stream': <_io.TextIOWrapper name=2 mode='w' encoding='UTF-8'>}}, '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 = "('172.26.0.2',)"
MAILMAN_ARCHIVER_KEY = '********************'
MAILMAN_REST_API_PASS = '********************'
MAILMAN_REST_API_URL = '********************'
MAILMAN_REST_API_USER = '********************'
MAILMAN_WEB_SOCIAL_AUTH = ['django_mailman3.lib.auth.fedora', 'allauth.socialaccount.providers.openid', 'allauth.socialaccount.providers.github', 'allauth.socialaccount.providers.gitlab', 'allauth.socialaccount.providers.google']
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', 'allauth.account.middleware.AccountMiddleware', 'django_mailman3.middleware.TimezoneMiddleware', 'postorius.middleware.PostoriusMiddleware')"
MIGRATION_MODULES = {}
MONTH_DAY_FORMAT = 'F j'
NUMBER_GROUPING = 0
PASSWORD_HASHERS = '********************'
PASSWORD_RESET_TIMEOUT = '********************'
POSTORIUS_TEMPLATE_BASE_URL = 'http://mailman-web:8000'
PREPEND_WWW = False
Q_CLUSTER = {'timeout': 300, 'retry': 300, 'save_limit': 100, 'orm': 'default'}
ROOT_URLCONF = 'urls'
SECRET_KEY = '********************'
SECRET_KEY_FALLBACKS = '********************'
SECURE_CONTENT_TYPE_NOSNIFF = True
SECURE_CROSS_ORIGIN_OPENER_POLICY = 'same-origin'
SECURE_HSTS_INCLUDE_SUBDOMAINS = False
SECURE_HSTS_PRELOAD = False
SECURE_HSTS_SECONDS = 0
SECURE_PROXY_SSL_HEADER = None
SECURE_REDIRECT_EXEMPT = []
SECURE_REFERRER_POLICY = 'same-origin'
SECURE_SSL_HOST = None
SECURE_SSL_REDIRECT = False
SERVER_EMAIL = 'lists(a)mydomain.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 = {'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-data/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_DEPRECATED_PYTZ = False
USE_I18N = True
USE_L10N = True
USE_SSL = False
USE_THOUSAND_SEPARATOR = False
USE_TZ = True
USE_X_FORWARDED_HOST = True
USE_X_FORWARDED_PORT = False
WSGI_APPLICATION = 'wsgi.application'
X_FRAME_OPTIONS = 'DENY'
YEAR_MONTH_FORMAT = 'F Y'
That is my docker-compose.yml:
services:
postfix:
image: boky/postfix #mailu/postfix
restart: unless-stopped
container_name: postfix #_incomming
volumes:
- ./data/postfix/etc:/etc/postfix/ #main.cf.d
- ./data/core:/opt/mailman
ports:
- "${MM3_INTERNAL_POSTFIX_SMTP_PORT}:25"
- "${MM3_INTERNAL_POSTFIX_SUBM_PORT}:587"
environment:
- HOSTNAME=${MM3_HOSTNAME}
- RELAYHOST=${MM3_RELAYHOST}
#- RELAYHOST_USERNAME=${MM3_RELAYHOST_USERNAME} # = An (optional) username for the relay server
#- RELAYHOST_PASSWORD=${MM3_RELAYHOST_PASSWORD} # = An (optional) login password for the relay server
- POSTFIX_mynetworks=${MM3_POSTFIX_mynetworks} #=127.0.0.0/24,10.8.0.0/24,172.26.0.0/24,192.168.1.0/24 )
#- ALLOWED_SENDER_DOMAINS=${MM3_ALLOWED_SENDER_DOMAINS} #
- ALLOW_EMPTY_SENDER_DOMAINS=${MM3_ALLOW_EMPTY_SENDER_DOMAINS} #="true" #'), MM3_ALLOWED_SENDER_DOMAINS can be unset
#- MASQUERADED_DOMAINS=${MM3_MASQUERADED_DOMAINS} # = domains where you want to masquerade internal hosts
networks:
mailman:
ipv4_address: ${MM3_IP_INTERNAL_POSTFIX} #172.26.0.5
#services:
mailman-core:
image: maxking/mailman-core:0.4 # Use a specific version tag (tag latest is not published)
container_name: mailman-core
hostname: mailman-core
restart: unless-stopped
volumes:
- ./data/core:/opt/mailman/
stop_grace_period: 30s
links:
- database:database
depends_on:
database:
condition: service_healthy
environment:
- DATABASE_URL=postgresql://mailman:mailmanpass@database/mailmandb
- DATABASE_TYPE=postgres
- DATABASE_CLASS=mailman.database.postgresql.PostgreSQLDatabase
- HYPERKITTY_API_KEY=${MM3_HYPERKITTY_API_KEY} #someapikey_longAndTrustworty
- TIMEZONE=${MM3_TIMEZONE} #Europe/Berlin
- MTA=postfix
- SMTP_HOST=172.26.0.5 #postfix # outgoing smtp Sererv
- SMTP_PORT=25 #${MM3_INTERNAL_POSTFIX_SMTP_PORT} # Outgoing SMTPS Server Port
ports:
- "8001:8001" # API removed 127.0.0.1
- "8024:8024" # LMTP - incoming emails
#extra_hosts:
# - ${MM3_HOSTNAME}:${MM3_IP_INTERNAL_POSTFIX}
networks:
mailman:
ipv4_address: ${MM3_IP_INTERNAL_CORE} #172.26.0.2
mailman-web:
image: maxking/mailman-web:0.4 # Use a specific version tag (tag latest is not published)
container_name: mailman-web
hostname: mailman-web
restart: unless-stopped
depends_on:
database:
condition: service_healthy
links:
- mailman-core:mailman-core
- database:database
volumes:
- ./data/web:/opt/mailman-web-data
environment:
- DATABASE_TYPE=postgres
- DATABASE_URL=postgresql://mailman:mailmanpass@database/mailmandb
- HAYPERKITTY_API_KEY=${MM3_HYPERKITTY_API_KEY} #someapikey_longAndTrustworty
- UWSGI_STATIC_MAP=/static=/opt/mailman-web-data/static
- SECRET_KEY=${MM3_SECRET_KEY} #blah-blah-secret_undgehie
- SERVE_FROM_DOMAIN=${MM3_SERVE_FROM_DOMAIN} #lists.mydomain.net
- MAILMAN_ADMIN_USER=${MM3_MAILMAN_ADMIN_USER} #it
- MAILMAN_ADMIN_EMAIL=${MM3_MAILMAN_ADMIN_EMAIL} #it(a)mydomain.net
- DJANGO_ALLOWED_HOSTS=${MM3_DJANGO_ALLOWED_HOSTS} #lists.mydomain.net
- SMTP_HOST=172.26.0.5 #postfix
- SMTP_PORT=25 #${MM3_INTERNAL_POSTFIX_SMTP_PORT}
- TIMEZONE=${MM3_TIMEZONE} #Europe/Berlin
ports:
- "8000:8000" # HTTP removed 127.0.0.1
- "8080:8080" # uwsgi
# extra_hosts:
# - ${MM3_HOSTNAME}:${MM3_IP_INTERNAL_POSTFIX}
networks:
mailman:
ipv4_address: ${MM3_IP_INTERNAL_WEB} #172.26.0.3
database:
environment:
- POSTGRES_DB=mailmandb
- POSTGRES_USER=mailman
- POSTGRES_PASSWORD=mailmanpass
- TIMEZONE=${MM3_TIMEZONE} #Europe/Berlin
image: postgres:12-alpine
volumes:
- ./data/database:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready --dbname mailmandb --username mailman"]
interval: 10s
timeout: 5s
retries: 5
networks:
mailman:
ipv4_address: ${MM3_IP_INTERNAL_DB} #172.26.0.4
networks:
mailman:
driver: bridge
ipam:
driver: default
config:
- subnet: ${MM3_SUBNET} #172.26.0.0/24
Mailman-extra.cfg:
[mailman]
site_owner:mailman@mydomain.de
max_recipients=1
SMTP_MAX_RCPTS = 1
run_tasks_every: 1h
VERP_CONFIRMATIONS = Yes
VERP_PASSWORD_REMINDERS = Yes
VERP_PERSONALIZED_DELIVERIES = Yes
VERP_DELIVERY_INTERVAL = 1
VERP_PROBES: Yes
[devmode]
enabled: no
recipient:it@mydomain.de
#
# extra local settings for mailmen
[mta]
incoming: mailman.mta.postfix.LMTP
outgoing: mailman.mta.deliver.deliver
lmtp_host: 172.26.0.2
lmtp_port: 8024
smtp_host: 172.26.0.5
smtp_port: 25
#configuration: /etc/postfix-mailman.cfg
#
#
#
[logging.smtp]
level: warn
[language.en]
charset: utf-8
[language.de]
charset: utf-8
and my settings_locale.py from mailman-web:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = '172.26.0.5'
EMAIL_PORT = 25
USE_SSL = False
DEFAULT_FROM_EMAIL ="lists(a)mydomain.net"
SERVER_EMAIL ="lists(a)mydomain.net"
#DEBUG = True
#: Default list of admins who receive the emails from error logging.
ADMINS = (
('Mailman Suite Admin', 'it(a)mydomain.net'),
)
4 months, 3 weeks

Re: Installing mailman 3
by Mark Sapiro
On 07/25/2017 01:21 PM, Rafael Mora wrote:
> Regarding this:
>
> # To be added to Django's settings.py
>
> EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
> EMAIL_HOST = 'localhost'
> EMAIL_PORT = 25
> EMAIL_HOST_USER = <username>
> EMAIL_HOST_PASSWORD = <password>
>
>
>
> What should I use for username and password?
> Should I keep the localhost on the host param?
If you want Django (i.e. Postorius, Hyperkitty and Django
admin/auth/etc.) to deliver via localhost, you don't need
EMAIL_HOST_USER and EMAIL_HOST_PASSWORD. Those are only for
authentication to some other host.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
7 years, 10 months