Reg Archive Inactive Status
 
            I am sending the mail to lists. But in Archive It is showing inactive and no mails are there in archives. Kindly help in this regard.
 
            nirmal--- via Mailman-users writes:
I am sending the mail to lists. But in Archive It is showing inactive and no mails are there in archives. Kindly help in this regard.
Assuming you have all the components of the Mailman Suite installed, you need to configure the archiver in mailman.cfg and enable it in the list's configuration in Settings/Archiving.
I don't understand what you mean by "showing inactive", because "inactive" is not a word used in the configuration. If you mean the appropriate boxes are not checked in Settings/Archiving, then check those boxes and save the configuration. Messages received from then on should be added to the archives. You should not have to restart Mailman.
I don't know offhand how to add the missing messages to the archives. I suggest you get copies and save them in mbox format, one per list. It may be possible to use the archive migration utility to add them but you have to be a little careful about that. I'm not sure how much threading depends on the order in which messages are added.
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan
 
            On 9/22/25 07:29, Stephen J. Turnbull wrote:
nirmal--- via Mailman-users writes:
I am sending the mail to lists. But in Archive It is showing inactive and no mails are there in archives. Kindly help in this regard.
Assuming you have all the components of the Mailman Suite installed, you need to configure the archiver in mailman.cfg and enable it in the list's configuration in Settings/Archiving.
I don't understand what you mean by "showing inactive", because "inactive" is not a word used in the configuration.
HyperKitty shows a list as inactive if it hasn't received a post in
the last 30 days.
There are two possibilities for a list not being archived in HyperKitty.
One is configuration, e.g. Hyperkitty not being enabled or active for this list. I don't think that's the case here because apparently the list appears in HyperKitty's index.
The other is something goes wrong in Mailman core's attempt to deliver the message to HyperKitty. It this case, there should be information in mailman.log and the failed messages should be queued in Mailman's var/archives/hyperkitty/spool/ directory.
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
 
            Sir, The status is enable only. But still It is not coming mail to archives. Hereby I am attaching the screen shots of the status. Kindly help me in this regard.
Thank you for your support.
          Warm Regards,
             Nirmal J
         Junior TechnicianE-Services, Computer Centre, IIT Madras
-----Original Message----- From: Stephen <steve@turnbull.jp> To: nirmal <nirmal@iitm.ac.in> Cc: mailman-users <mailman-users@mailman3.org> Date: Monday, 22 September 2025 7:59 PM IST Subject: [MM3-users] Reg Archive Inactive Status
nirmal--- via Mailman-users writes:
I am sending the mail to lists. But in Archive It is showing inactive and no mails are there in archives. Kindly help in this regard.
Assuming you have all the components of the Mailman Suite installed, you need to configure the archiver in mailman.cfg and enable it in the list's configuration in Settings/Archiving.
I don't understand what you mean by "showing inactive", because "inactive" is not a word used in the configuration. If you mean the appropriate boxes are not checked in Settings/Archiving, then check those boxes and save the configuration. Messages received from then on should be added to the archives. You should not have to restart Mailman.
I don't know offhand how to add the missing messages to the archives. I suggest you get copies and save them in mbox format, one per list. It may be possible to use the archive migration utility to add them but you have to be a little careful about that. I'm not sure how much threading depends on the order in which messages are added.
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan
Mailman's content filtering has removed the following MIME parts from this message.
Content-Type: image/png Name: Screenshot 2025-09-23 091335.png
Content-Type: image/png Name: Screenshot 2025-09-23 091441.png
Content-Type: image/png Name: Screenshot 2025-09-23 091523.png
 
            -----Original Message----- From: Nirmal <nirmal@iitm.ac.in> To: Stephen <steve@turnbull.jp> Cc: mailman-users <mailman-users@mailman3.org> Date: Tuesday, 23 September 2025 9:15 AM IST Subject: Re: [MM3-users] Reg Archive Inactive Status
Sir, The status is enable only. But still It is not coming mail to archives. Hereby I am attaching the screen shots of the status. Kindly help me in this regard.
Thank you for your support.
          Warm Regards,
             Nirmal J
         Junior TechnicianE-Services, Computer Centre, IIT Madras
-----Original Message----- From: Stephen <steve@turnbull.jp> To: nirmal <nirmal@iitm.ac.in> Cc: mailman-users <mailman-users@mailman3.org> Date: Monday, 22 September 2025 7:59 PM IST Subject: [MM3-users] Reg Archive Inactive Status
nirmal--- via Mailman-users writes:
I am sending the mail to lists. But in Archive It is showing inactive and no mails are there in archives. Kindly help in this regard.
Assuming you have all the components of the Mailman Suite installed, you need to configure the archiver in mailman.cfg and enable it in the list's configuration in Settings/Archiving.
I don't understand what you mean by "showing inactive", because "inactive" is not a word used in the configuration. If you mean the appropriate boxes are not checked in Settings/Archiving, then check those boxes and save the configuration. Messages received from then on should be added to the archives. You should not have to restart Mailman.
I don't know offhand how to add the missing messages to the archives. I suggest you get copies and save them in mbox format, one per list. It may be possible to use the archive migration utility to add them but you have to be a little careful about that. I'm not sure how much threading depends on the order in which messages are added.
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan
Mailman's content filtering has removed the following MIME parts from this message.
Content-Type: image/png Name: Screenshot 2025-09-23 092545.png
 
            On 9/22/25 20:45, Nirmal J via Mailman-users wrote:
Sir, The status is enable only. But still It is not coming mail to archives. Hereby I am attaching the screen shots of the status. Kindly help me in this regard.
There are many possibilities for what the problem might be. The starting point is Mailman's mailman.log. What are the messages in this log for the time of posts to the list.
Also, the versions of Mailman core, HyperKitty and mailman-hyperkitty might be relevant. What are they?
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
 
            -----Original Message----- From: Nirmal <nirmal@iitm.ac.in> To: Stephen <steve@turnbull.jp> Cc: mailman-users <mailman-users@mailman3.org> Date: Tuesday, 23 September 2025 9:15 AM IST Subject: Re: [MM3-users] Reg Archive Inactive Status
Sir, The status is enable only. But still It is not coming mail to archives. Hereby I am attaching the screen shots of the status. Kindly help me in this regard.
Thank you for your support.
          Warm Regards,
             Nirmal J
         Junior TechnicianE-Services, Computer Centre, IIT Madras
-----Original Message----- From: Stephen <steve@turnbull.jp> To: nirmal <nirmal@iitm.ac.in> Cc: mailman-users <mailman-users@mailman3.org> Date: Monday, 22 September 2025 7:59 PM IST Subject: [MM3-users] Reg Archive Inactive Status
nirmal--- via Mailman-users writes:
I am sending the mail to lists. But in Archive It is showing inactive and no mails are there in archives. Kindly help in this regard.
Assuming you have all the components of the Mailman Suite installed, you need to configure the archiver in mailman.cfg and enable it in the list's configuration in Settings/Archiving.
I don't understand what you mean by "showing inactive", because "inactive" is not a word used in the configuration. If you mean the appropriate boxes are not checked in Settings/Archiving, then check those boxes and save the configuration. Messages received from then on should be added to the archives. You should not have to restart Mailman.
I don't know offhand how to add the missing messages to the archives. I suggest you get copies and save them in mbox format, one per list. It may be possible to use the archive migration utility to add them but you have to be a little careful about that. I'm not sure how much threading depends on the order in which messages are added.
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan
Mailman's content filtering has removed the following MIME parts from this message.
Content-Type: image/png Name: Screenshot 2025-09-23 095805.png
 
            Nirmal J via Mailman-users writes:
The status is enable only. But still It is not coming mail to archives. Hereby I am attaching the screen shots of the status. Kindly help me in this regard.
This list <mailman-users@mailman3.org> does not accept images. I doubt they would be helpful, so I don't think you should try to use a pastebin site. Just copy text from the files that you find, and put it in the mail directly.
You need to find your configuration files and logs. Usually 'mailman.cfg', 'mailman-hyperkitty.cfg', and 'settings.py' are located in /etc/mailman3.
You are looking for lines like these in 'mailman.cfg'. Some of them may be missing; that is probably normal. They probably won't be all together. Anything after a hash mark (#) is a comment and does not affect Mailman operation at all.
var_dir: /opt/mailman3 # where Mailman keeps data log_dir: /var/log/mailman3 # where Mailman keeps logs archive_dir: $var_dir/archives # where Mailman queues messages # to the archiver
[logging.archiver] # you probably don't have these level: debug
[archiver.prototype] # you probably don't have these enable: yes # but if you do you have a backup
[archiver.hyperkitty] # you should have these class: mailman_hyperkitty.Archiver enable: yes configuration: /etc/mailman3/mailman-hyperkitty.cfg
You are looking for this line in 'mailman-hyperkitty.cfg':
api_key: dXwiLGJ1W2MoODB8X3ZZXA==
and this in 'settings.py':
MAILMAN_ARCHIVER_KEY = "dXwiLGJ1W2MoODB8X3ZZXA=="
Note that 'api_key' is followed by a colon (:) and the value IS NOT quoted, but 'MAILMAN_ARCHIVER_KEY' is followed by an equal sign (=) and the value IS quoted. Of course those two values must match.
If you have the line 'log_dir', that's where you will find Mailman's logs. Most likely the file you want is 'mailman.log'. There should be messages explaining why messages are not being sent to the archiver, as Mark explained.
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan
 
            I am having the issue with Mailman Archive not working. Kindly help me to solve the issue.
Errors Found in:- File "/usr/lib/python3/dist-packages/requests/adapters.py", line 489, in send resp = conn.urlopen( ^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 789, in urlopen retries = retries.increment( ^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 594, in increment raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)')))
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/usr/local/lib/python3.11/dist-packages/mailman_hyperkitty-1.1.0-py3.11.egg/mailman_hyperkitty/__init__.py", line 154, in _archive_message url = self._send_message(mlist, msg) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/dist-packages/mailman_hyperkitty-1.1.0-py3.11.egg/mailman_hyperkitty/__init__.py", line 198, in _send_message result = requests.post( ^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/api.py", line 115, in post return request("post", url, data=data, json=json, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/api.py", line 59, in request return session.request(method=method, url=url, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/sessions.py", line 587, in request resp = self.send(prep, **send_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/sessions.py", line 701, in send r = adapter.send(request, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/adapters.py", line 563, in send raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)'))) Sep 23 16:58:08 2025 (173216) Connection to HyperKitty failed: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)'))) Sep 23 16:58:08 2025 (173216) Exception in the HyperKitty archiver: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)'))) Sep 23 16:58:08 2025 (173216) Traceback (most recent call last): File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 705, in urlopen httplib_response = self._make_request( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 388, in _make_request self._validate_conn(conn) File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 1050, in _validate_conn conn.connect() File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 414, in connect self.sock = ssl_wrap_socket( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/ssl_.py", line 449, in ssl_wrap_socket ssl_sock = _ssl_wrap_socket_impl( ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/ssl_.py", line 493, in _ssl_wrap_socket_impl return ssl_context.wrap_socket(sock, server_hostname=server_hostname) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/ssl.py", line 517, in wrap_socket return self.sslsocket_class._create( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/ssl.py", line 1108, in _create self.do_handshake() File "/usr/lib/python3.11/ssl.py", line 1379, in do_handshake self._sslobj.do_handshake() ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/usr/lib/python3/dist-packages/requests/adapters.py", line 489, in send resp = conn.urlopen( ^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 789, in urlopen retries = retries.increment( ^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 594, in increment raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)')))
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/usr/local/lib/python3.11/dist-packages/mailman_hyperkitty-1.1.0-py3.11.egg/mailman_hyperkitty/__init__.py", line 154, in _archive_message url = self._send_message(mlist, msg) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/dist-packages/mailman_hyperkitty-1.1.0-py3.11.egg/mailman_hyperkitty/__init__.py", line 198, in _send_message result = requests.post( ^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/api.py", line 115, in post return request("post", url, data=data, json=json, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/api.py", line 59, in request return session.request(method=method, url=url, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/sessions.py", line 587, in request resp = self.send(prep, **send_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/sessions.py", line 701, in send r = adapter.send(request, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/adapters.py", line 563, in send raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)'))) Sep 23 16:58:08 2025 (173216) Connection to HyperKitty failed: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)'))) Sep 23 16:58:08 2025 (173216) Exception in the HyperKitty archiver: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)'))) Sep 23 16:58:08 2025 (173216) Traceback (most recent call last): File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 705, in urlopen httplib_response = self._make_request( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 388, in _make_request self._validate_conn(conn) File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 1050, in _validate_conn conn.connect() File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 414, in connect self.sock = ssl_wrap_socket( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/ssl_.py", line 449, in ssl_wrap_socket ssl_sock = _ssl_wrap_socket_impl( ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/ssl_.py", line 493, in _ssl_wrap_socket_impl return ssl_context.wrap_socket(sock, server_hostname=server_hostname) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/ssl.py", line 517, in wrap_socket return self.sslsocket_class._create( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/ssl.py", line 1108, in _create self.do_handshake() File "/usr/lib/python3.11/ssl.py", line 1379, in do_handshake self._sslobj.do_handshake() ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/usr/lib/python3/dist-packages/requests/adapters.py", line 489, in send resp = conn.urlopen( ^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 789, in urlopen retries = retries.increment( ^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 594, in increment raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)')))
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/usr/local/lib/python3.11/dist-packages/mailman_hyperkitty-1.1.0-py3.11.egg/mailman_hyperkitty/__init__.py", line 154, in _archive_message url = self._send_message(mlist, msg) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/dist-packages/mailman_hyperkitty-1.1.0-py3.11.egg/mailman_hyperkitty/__init__.py", line 198, in _send_message result = requests.post( ^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/api.py", line 115, in post return request("post", url, data=data, json=json, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/api.py", line 59, in request return session.request(method=method, url=url, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/sessions.py", line 587, in request resp = self.send(prep, **send_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/sessions.py", line 701, in send r = adapter.send(request, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/adapters.py", line 563, in send raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)'))) Sep 23 16:58:08 2025 (173216) Connection to HyperKitty failed: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)'))) Sep 23 16:58:08 2025 (173216) Exception in the HyperKitty archiver: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)'))) Sep 23 16:58:08 2025 (173216) Traceback (most recent call last): File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 705, in urlopen httplib_response = self._make_request( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 388, in _make_request self._validate_conn(conn) File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 1050, in _validate_conn conn.connect() File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 414, in connect self.sock = ssl_wrap_socket( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/ssl_.py", line 449, in ssl_wrap_socket ssl_sock = _ssl_wrap_socket_impl( ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/ssl_.py", line 493, in _ssl_wrap_socket_impl return ssl_context.wrap_socket(sock, server_hostname=server_hostname) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/ssl.py", line 517, in wrap_socket return self.sslsocket_class._create( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/ssl.py", line 1108, in _create self.do_handshake() File "/usr/lib/python3.11/ssl.py", line 1379, in do_handshake self._sslobj.do_handshake() ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/usr/lib/python3/dist-packages/requests/adapters.py", line 489, in send resp = conn.urlopen( ^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 789, in urlopen retries = retries.increment( ^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 594, in increment raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)')))
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/usr/local/lib/python3.11/dist-packages/mailman_hyperkitty-1.1.0-py3.11.egg/mailman_hyperkitty/__init__.py", line 154, in _archive_message url = self._send_message(mlist, msg) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/dist-packages/mailman_hyperkitty-1.1.0-py3.11.egg/mailman_hyperkitty/__init__.py", line 198, in _send_message result = requests.post( ^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/api.py", line 115, in post return request("post", url, data=data, json=json, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/api.py", line 59, in request return session.request(method=method, url=url, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/sessions.py", line 587, in request resp = self.send(prep, **send_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/sessions.py", line 701, in send r = adapter.send(request, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/adapters.py", line 563, in send raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)'))) Sep 23 16:58:08 2025 (173216) Connection to HyperKitty failed: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)'))) Sep 23 16:58:08 2025 (173216) Exception in the HyperKitty archiver: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)'))) Sep 23 16:58:08 2025 (173216) Traceback (most recent call last): File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 705, in urlopen httplib_response = self._make_request( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 388, in _make_request self._validate_conn(conn) File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 1050, in _validate_conn conn.connect() File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 414, in connect self.sock = ssl_wrap_socket( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/ssl_.py", line 449, in ssl_wrap_socket ssl_sock = _ssl_wrap_socket_impl( ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/ssl_.py", line 493, in _ssl_wrap_socket_impl return ssl_context.wrap_socket(sock, server_hostname=server_hostname) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/ssl.py", line 517, in wrap_socket return self.sslsocket_class._create( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/ssl.py", line 1108, in _create self.do_handshake() File "/usr/lib/python3.11/ssl.py", line 1379, in do_handshake self._sslobj.do_handshake() ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/usr/lib/python3/dist-packages/requests/adapters.py", line 489, in send resp = conn.urlopen( ^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 789, in urlopen retries = retries.increment( ^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 594, in increment raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)')))
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/usr/local/lib/python3.11/dist-packages/mailman_hyperkitty-1.1.0-py3.11.egg/mailman_hyperkitty/__init__.py", line 154, in _archive_message url = self._send_message(mlist, msg) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/dist-packages/mailman_hyperkitty-1.1.0-py3.11.egg/mailman_hyperkitty/__init__.py", line 198, in _send_message result = requests.post( ^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/api.py", line 115, in post return request("post", url, data=data, json=json, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/api.py", line 59, in request return session.request(method=method, url=url, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/sessions.py", line 587, in request resp = self.send(prep, **send_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/sessions.py", line 701, in send r = adapter.send(request, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/adapters.py", line 563, in send raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)'))) Sep 23 16:58:08 2025 (173216) Connection to HyperKitty failed: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)'))) Sep 23 16:58:08 2025 (173216) Exception in the HyperKitty archiver: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)'))) Sep 23 16:58:08 2025 (173216) Traceback (most recent call last): File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 705, in urlopen httplib_response = self._make_request( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 388, in _make_request self._validate_conn(conn) File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 1050, in _validate_conn conn.connect() File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 414, in connect self.sock = ssl_wrap_socket( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/ssl_.py", line 449, in ssl_wrap_socket ssl_sock = _ssl_wrap_socket_impl( ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/ssl_.py", line 493, in _ssl_wrap_socket_impl return ssl_context.wrap_socket(sock, server_hostname=server_hostname) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/ssl.py", line 517, in wrap_socket return self.sslsocket_class._create( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/ssl.py", line 1108, in _create self.do_handshake() File "/usr/lib/python3.11/ssl.py", line 1379, in do_handshake self._sslobj.do_handshake() ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/usr/lib/python3/dist-packages/requests/adapters.py", line 489, in send resp = conn.urlopen( ^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 789, in urlopen retries = retries.increment( ^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 594, in increment raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)')))
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/usr/local/lib/python3.11/dist-packages/mailman_hyperkitty-1.1.0-py3.11.egg/mailman_hyperkitty/__init__.py", line 154, in _archive_message url = self._send_message(mlist, msg) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/dist-packages/mailman_hyperkitty-1.1.0-py3.11.egg/mailman_hyperkitty/__init__.py", line 198, in _send_message result = requests.post( ^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/api.py", line 115, in post return request("post", url, data=data, json=json, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/api.py", line 59, in request return session.request(method=method, url=url, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/sessions.py", line 587, in request resp = self.send(prep, **send_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/sessions.py", line 701, in send r = adapter.send(request, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/adapters.py", line 563, in send raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)'))) Sep 23 16:58:08 2025 (173216) Connection to HyperKitty failed: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)'))) Sep 23 16:58:08 2025 (173216) Exception in the HyperKitty archiver: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)'))) Sep 23 16:58:08 2025 (173216) Traceback (most recent call last): File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 705, in urlopen httplib_response = self._make_request( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 388, in _make_request self._validate_conn(conn) File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 1050, in _validate_conn conn.connect() File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 414, in connect self.sock = ssl_wrap_socket( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/ssl_.py", line 449, in ssl_wrap_socket ssl_sock = _ssl_wrap_socket_impl( ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/ssl_.py", line 493, in _ssl_wrap_socket_impl return ssl_context.wrap_socket(sock, server_hostname=server_hostname) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/ssl.py", line 517, in wrap_socket return self.sslsocket_class._create( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/ssl.py", line 1108, in _create self.do_handshake() File "/usr/lib/python3.11/ssl.py", line 1379, in do_handshake self._sslobj.do_handshake() ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/usr/lib/python3/dist-packages/requests/adapters.py", line 489, in send resp = conn.urlopen( ^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 789, in urlopen retries = retries.increment( ^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 594, in increment raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)')))
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/usr/local/lib/python3.11/dist-packages/mailman_hyperkitty-1.1.0-py3.11.egg/mailman_hyperkitty/__init__.py", line 154, in _archive_message url = self._send_message(mlist, msg) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/dist-packages/mailman_hyperkitty-1.1.0-py3.11.egg/mailman_hyperkitty/__init__.py", line 198, in _send_message result = requests.post( ^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/api.py", line 115, in post return request("post", url, data=data, json=json, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/api.py", line 59, in request return session.request(method=method, url=url, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/sessions.py", line 587, in request resp = self.send(prep, **send_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/sessions.py", line 701, in send r = adapter.send(request, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/adapters.py", line 563, in send raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)'))) Sep 23 16:58:08 2025 (173216) Connection to HyperKitty failed: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)'))) Sep 23 16:58:08 2025 (173216) Exception in the HyperKitty archiver: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)'))) Sep 23 16:58:08 2025 (173216) Traceback (most recent call last): File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 705, in urlopen httplib_response = self._make_request( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 388, in _make_request self._validate_conn(conn) File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 1050, in _validate_conn conn.connect() File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 414, in connect self.sock = ssl_wrap_socket( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/ssl_.py", line 449, in ssl_wrap_socket ssl_sock = _ssl_wrap_socket_impl( ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/ssl_.py", line 493, in _ssl_wrap_socket_impl return ssl_context.wrap_socket(sock, server_hostname=server_hostname) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/ssl.py", line 517, in wrap_socket return self.sslsocket_class._create( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/ssl.py", line 1108, in _create self.do_handshake() File "/usr/lib/python3.11/ssl.py", line 1379, in do_handshake self._sslobj.do_handshake() ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/usr/lib/python3/dist-packages/requests/adapters.py", line 489, in send resp = conn.urlopen( ^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 789, in urlopen retries = retries.increment( ^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 594, in increment raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)')))
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/usr/local/lib/python3.11/dist-packages/mailman_hyperkitty-1.1.0-py3.11.egg/mailman_hyperkitty/__init__.py", line 154, in _archive_message url = self._send_message(mlist, msg) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/dist-packages/mailman_hyperkitty-1.1.0-py3.11.egg/mailman_hyperkitty/__init__.py", line 198, in _send_message result = requests.post( ^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/api.py", line 115, in post return request("post", url, data=data, json=json, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/api.py", line 59, in request return session.request(method=method, url=url, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/sessions.py", line 587, in request resp = self.send(prep, **send_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/sessions.py", line 701, in send r = adapter.send(request, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/adapters.py", line 563, in send raise SSLError(e, request=request)
 
            nirmal--- via Mailman-users writes:
I am having the issue with Mailman Archive not working. Kindly help me to solve the issue.
This error says your SSL is misconfigured. I can't say why.
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)')))
You should change your api_key, since it was revealed in the above error message, and any other secrets you may have posted.
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan
 
            On 9/23/25 04:40, nirmal--- via Mailman-users wrote:
I am having the issue with Mailman Archive not working. Kindly help me to solve the issue.
Errors Found in:- File "/usr/lib/python3/dist-packages/requests/adapters.py", line 489, in send resp = conn.urlopen( ^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 789, in urlopen retries = retries.increment( ^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 594, in increment raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive?key=n%2FZZnR5bRgNdUEyNK4p731C1%2BgWJLw0%2F (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)')))
Your setting for base_url in mailman-hyperkitty.cfg is an https url, but the addressed server is not configured properly to handle https. If the setting is something like
base_url: https://localhost:8000/hyperkitty/
change it to http or change the url to the one used to access hyperkitty from a web browser.
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
 
            My Base Url is as follows:-
/etc/mailman3/hyperkitty.cfg * [general] # The base URL of your HyperKitty web interface base_url = http://list1.iitm.ac.in/hyperkitty/
#archives #archives = /etc/mailman3/hyperkitty.cfg
# API key for HyperKitty to access Mailman 3 api_key = n/ZZnR5bRgNdUEyNK4p731C1+gWJLw0/
# Whether to verify SSL certificates when connecting to Mailman 3 API verify_ssl = false
# Log file for HyperKitty log_file = /var/log/mailman3/hyperkitty.log
# Log level: DEBUG, INFO, WARNING, ERROR log_level = DEBUG
# Optional: Mailman 3 REST API settings if needed #mailman_rest_api_url = http://localhost:8001 #mailman_rest_api_user = restadmin #mailman_rest_api_pass = /EqNGU+Mj8udFpw4ueIkhWXzAy3kJIy17wwzChrXb3P8Vh4e After changing it to http also it is not working.
 
            nirmal--- via Mailman-users writes:
# The base URL of your HyperKitty web interface base_url = http://list1.iitm.ac.in/hyperkitty/
Did you change the scheme from "https" to "http" after Mark recommended that? Or was the scheme always "http"? I can't tell.
If it was always "http", my guess about the SSL issue is that your webserver is configured to redirect HTTP connections to HTTPS, and that "list1.iitm.ac.in" is an alias that isn't covered by the host certificate. I guess you're trying to deal with the SSL error by setting "verify_ssl = false". That will work for now, but you still have a misconfigured webserver there.
If you're running Mailman core and HyperKitty on the same node (whether that's a physical host, a VM, or a container), I recommend that you configure the "list1" virtual host to listen on localhost:80, and avoid the SSL issue entirely. There's little point to using SSL connections on localhost.
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan
 
            According to your suggestion Don't post the entire log
This is enough.
Sep 24 10:45:43 2025 (187698) HyperKitty failure on http://list1.iitm.ac.in/hyperkitty/api/mailman/urls: <html><title>Forbidden</title><body> <h1>Access is forbidden</h1><p>Please check the IP addresses assigned to MAILMAN_ARCHIVER_FROM in the settings file. </p></body></html> (403)
You need to ensure the IP address of list1.iitm.ac.in is in the MAILMAN_ARCHIVER_FROM list in your Django settings.
I have also ensured that the IP Address of list1.iitm.ac.in is in the Mailman_Archiver_From List in settings. But still not working. Please help.
 
            nirmal--- via Mailman-users writes:
Sep 24 10:45:43 2025 (187698) HyperKitty failure on http://list1.iitm.ac.in/hyperkitty/api/mailman/urls: <html><title>Forbidden</title><body> <h1>Access is forbidden</h1><p>Please check the IP addresses assigned to MAILMAN_ARCHIVER_FROM in the settings file. </p></body></html> (403)
You need to ensure the IP address of list1.iitm.ac.in is in the MAILMAN_ARCHIVER_FROM list in your Django settings.
I have also ensured that the IP Address of list1.iitm.ac.in is in the Mailman_Archiver_From List in settings. But still not working. Please help.
Please be more specific than "not working", as much as possible. In this case, copy the setting from your settings.py file and paste it in the email. Always describe the error message. If it's identical to the previous one except for the timestamp and server process, just saying "error message is the same" is OK. If it's not, any small difference could be a clue, and you should copy and paste it.
Check the syntax of the assignment to MAILMAN_ARCHIVER_FROM in settings.py. The variable name must be all uppercase. The assignment must use '-', and the value should be a Python sequence[1] of strings, like this:
MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1')
Even if there is only one IP, I suspect the parentheses are required, and the single entry *must* be followed by a comma, like this:
MAILMAN_ARCHIVER_FROM = ('127.0.0.1',)
If your setting is correct, check your webserver's (Apache, nginx, etc) configuration for access restrictions. Many Mailman installation guides assume localhost and provide examples restricting access to localhost.
Finally, if no configured access restriction applies, there should be a corresponding entry in the webserver's access log. Check that the source IP is what you expect.
Footnotes: [1] If you are an experienced Python programmer, I believe you can use any sequence syntax you are comfortable with. Tuples will definitely work because that's the test configuration we use. :-)
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan
 
            Hereby I am sharing the full settings.py file.
# Build paths inside the project like this: os.path.join(BASE_DIR, ...) import os
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
# SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'change-this-on-your-production-server'
# SECURITY WARNING: don't run with debug turned on in production! DEBUG = False
ADMINS = ( ('Mailman Suite Admin', 'root@localhost'), )
SITE_ID = 1
# Hosts/domain names that are valid for this site; required if DEBUG is False # See https://docs.djangoproject.com/en/1.8/ref/settings/#allowed-hosts ALLOWED_HOSTS = [ "localhost", # Archiving API from Mailman, keep it. # "lists.your-domain.org", # Add here all production URLs you may have. ]
# Mailman API credentials MAILMAN_REST_API_URL = 'http://localhost:8001' MAILMAN_REST_API_USER = 'restadmin' MAILMAN_REST_API_PASS = 'restpass' MAILMAN_ARCHIVER_KEY = 'SecretArchiverAPIKey' MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1')# Application definition
INSTALLED_APPS = ( 'hyperkitty', 'postorius', 'django_mailman3', # Uncomment the next line to enable the admin: 'django.contrib.admin', # Uncomment the next line to enable admin documentation: # 'django.contrib.admindocs', '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', # 'allauth.socialaccount.providers.facebook', # 'allauth.socialaccount.providers.twitter', # 'allauth.socialaccount.providers.stackexchange', )
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', )
ROOT_URLCONF = 'urls'
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', ], }, }, ]
WSGI_APPLICATION = 'wsgi.application' # Database # https://docs.djangoproject.com/en/1.8/ref/settings/#databases
DATABASES = { 'default': { # Use 'sqlite3', 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 'ENGINE': 'django.db.backends.postgresql_psycopg2', # DB name or path to database file if using sqlite3. 'NAME': 'mailman3web', # The following settings are not used with sqlite3: 'USER': 'mailmansuite', 'PASSWORD': 'mmpass', # HOST: empty for localhost through domain sockets or '127.0.0.1' for # localhost through TCP. 'HOST': '', # PORT: set to empty string for default. 'PORT': '', # OPTIONS: for mysql engine only, do not use with other engines. # 'OPTIONS': {'charset': 'utf8mb4'} # Enable utf8 4-byte encodings. } # Example for PostgreSQL (recommanded for production): #'default': { # 'ENGINE': 'django.db.backends.postgresql_psycopg2', # 'NAME': 'database_name', # 'USER': 'database_user', # 'PASSWORD': 'database_password', # 'HOST': 'localhost', #} }
# If you're behind a proxy, use the X-Forwarded-Host header # See https://docs.djangoproject.com/en/1.8/ref/settings/#use-x-forwarded-host USE_X_FORWARDED_HOST = True
# And if your proxy does your SSL encoding for you, set SECURE_PROXY_SSL_HEADER # https://docs.djangoproject.com/en/1.8/ref/settings/#secure-proxy-ssl-header # SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') # SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_SCHEME', 'https')
# Other security settings # SECURE_SSL_REDIRECT = True # If you set SECURE_SSL_REDIRECT to True, make sure the SECURE_REDIRECT_EXEMPT # contains at least this line: # SECURE_REDIRECT_EXEMPT = [ # "archives/api/mailman/.*", # Request from Mailman. # ]# SESSION_COOKIE_SECURE = True # SECURE_CONTENT_TYPE_NOSNIFF = True # SECURE_BROWSER_XSS_FILTER = True # CSRF_COOKIE_SECURE = True # CSRF_COOKIE_HTTPONLY = True # X_FRAME_OPTIONS = 'DENY'
# Password validation # https://docs.djangoproject.com/en/1.9/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [ { 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', }, { 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', }, { 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', }, { 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', }, ]# Internationalization # https://docs.djangoproject.com/en/1.8/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.8/howto/static-files/
# Absolute path to the directory static files should be collected to. # Don't put anything in this directory yourself; store your static files # in apps' "static/" subdirectories and in STATICFILES_DIRS. # Example: "/var/www/example.com/static/" STATIC_ROOT = '/var/lib/mailman3/web/static'
# URL prefix for static files. # Example: "http://example.com/static/", "http://static.example.com/" STATIC_URL = '/mailman3/static/'
# Additional locations of static files STATICFILES_DIRS = ( # Put strings here, like "/home/html/static" or "C:/www/django/static". # Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. # BASE_DIR + '/static/', )
# List of finder classes that know how to find static files in # various locations.STATICFILES_FINDERS = ( 'django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', # 'django.contrib.staticfiles.finders.DefaultStorageFinder', 'compressor.finders.CompressorFinder', )
# Django 1.6+ defaults to a JSON serializer, but it won't work with # django-openid, see # https://bugs.launchpad.net/django-openid-auth/+bug/1252826 SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'
LOGIN_URL = 'account_login' LOGIN_REDIRECT_URL = 'list_index' LOGOUT_URL = 'account_logout'
HOSTNAME = 'localhost.local'
# If you enable internal authentication, this is the address that the emails # will appear to be coming from. Make sure you set a valid domain name, # otherwise the emails may get rejected. # https://docs.djangoproject.com/en/1.8/ref/settings/#default-from-email # DEFAULT_FROM_EMAIL = "mailing-lists@you-domain.org" DEFAULT_FROM_EMAIL = 'postorius@{}'.format(HOSTNAME)
# If you enable email reporting for error messages, this is where those emails # will appear to be coming from. Make sure you set a valid domain name, # otherwise the emails may get rejected. # https://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-SERVER_EMAIL # SERVER_EMAIL = 'root@your-domain.org' SERVER_EMAIL = 'root@{}'.format(HOSTNAME)
# Change this when you have a real email backend EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# Compatibility with Bootstrap 3 from django.contrib.messages import constants as messages # flake8: noqa MESSAGE_TAGS = { messages.ERROR: 'danger' } # # Social auth # AUTHENTICATION_BACKENDS = ( 'django.contrib.auth.backends.ModelBackend', 'allauth.account.auth_backends.AuthenticationBackend', )
# Django Allauth ACCOUNT_AUTHENTICATION_METHOD = "username_email" ACCOUNT_EMAIL_REQUIRED = True ACCOUNT_EMAIL_VERIFICATION = "mandatory" # You probably want https in production, but this is a dev setup file ACCOUNT_DEFAULT_HTTP_PROTOCOL = "https" ACCOUNT_UNIQUE_EMAIL = True
SOCIALACCOUNT_PROVIDERS = { #'openid': { # 'SERVERS': [ # dict(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', #}, } # # Gravatar # https://github.com/twaddington/django-gravatar # # Gravatar base url. # GRAVATAR_URL = 'http://cdn.libravatar.org/' # Gravatar base secure https url. # GRAVATAR_SECURE_URL = 'https://seccdn.libravatar.org/' # Gravatar size in pixels. # GRAVATAR_DEFAULT_SIZE = '80' # An image url or one of the following: 'mm', 'identicon', 'monsterid', # 'wavatar', 'retro'. # GRAVATAR_DEFAULT_IMAGE = 'mm' # One of the following: 'g', 'pg', 'r', 'x'. # GRAVATAR_DEFAULT_RATING = 'g' # True to use https by default, False for plain http. # GRAVATAR_DEFAULT_SECURE = True
# # django-compressor # https://pypi.python.org/pypi/django_compressor # #COMPRESS_PRECOMPILERS = ( # ('text/less', 'lessc {infile} {outfile}'), # ('text/x-scss', 'sassc -t compressed {infile} {outfile}'), # ('text/x-sass', 'sassc -t compressed {infile} {outfile}'), #) # On a production setup, setting COMPRESS_OFFLINE to True will bring a # significant performance improvement, as CSS files will not need to be # recompiled on each requests. It means running an additional "compress" # management command after each code upgrade. # http://django-compressor.readthedocs.io/en/latest/usage/#offline-compression # COMPRESS_OFFLINE = True
# Needed for debug mode # INTERNAL_IPS = ('127.0.0.1',)
# # Full-text search engine #HAYSTACK_CONNECTIONS = { 'default': { 'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine', 'PATH': '/var/lib/mailman3/web/fulltext_index', # You can also use the Xapian engine, it's faster and more accurate, # but requires another library. # http://django-haystack.readthedocs.io/en/v2.4.1/installing_search_engines.ht... # Example configuration for Xapian: #'ENGINE': 'xapian_backend.XapianEngine' }, }
# # Asynchronous tasks # Q_CLUSTER = { 'timeout': 300, 'save_limit': 100, 'orm': 'default', 'poll': 5, }# A sample logging configuration. The only tangible logging # performed by this configuration is to send an email to # the site admins on every HTTP 500 error when DEBUG=False. # See http://docs.djangoproject.com/en/dev/topics/logging for # more details on how to customize your logging configuration. 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', #'class': 'logging.handlers.WatchedFileHandler', 'filename': '/var/log/mailman3/web/mailman-web.log', 'formatter': 'verbose', }, 'console': { 'class': 'logging.StreamHandler', 'formatter': 'simple', }, }, 'loggers': { 'django.request': { 'handlers': ['mail_admins', 'file'], 'level': 'INFO', 'propagate': True, }, 'django': { 'handlers': ['file'], 'level': 'INFO', 'propagate': True, }, 'hyperkitty': { 'handlers': ['file'], 'level': 'INFO', 'propagate': True, }, 'postorius': { 'handlers': ['file'], 'level': 'INFO', 'propagate': True, }, }, 'formatters': { 'verbose': { 'format': '%(levelname)s %(asctime)s %(process)d %(name)s %(message)s' }, 'simple': { 'format': '%(levelname)s %(message)s' }, }, #'root': { # 'handlers': ['file'], # 'level': 'INFO', #}, } if DEBUG == True: EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend' EMAIL_FILE_PATH = os.path.join(BASE_DIR, 'emails')
# # HyperKitty-specific #
# Only display mailing-lists from the same virtual host as the webserver FILTER_VHOST = False
POSTORIUS_TEMPLATE_BASE_URL = 'http://localhost:8000'
try: from settings_local import * except ImportError: pass
-----Original Message----- From: Stephen <steve@turnbull.jp> To: nirmal <nirmal@iitm.ac.in> Cc: mailman-users <mailman-users@mailman3.org> Date: Friday, 26 September 2025 1:15 PM IST Subject: [MM3-users] Reg Archive Inactive Status
nirmal--- via Mailman-users writes:
Sep 24 10:45:43 2025 (187698) HyperKitty failure on http://list1.iitm.ac.in/hyperkitty/api/mailman/urls: <html><title>Forbidden</title><body> <h1>Access is forbidden</h1><p>Please check the IP addresses assigned to MAILMAN_ARCHIVER_FROM in the settings file. </p></body></html> (403)
You need to ensure the IP address of list1.iitm.ac.in is in the MAILMAN_ARCHIVER_FROM list in your Django settings.
I have also ensured that the IP Address of list1.iitm.ac.in is in the Mailman_Archiver_From List in settings. But still not working. Please help.
Please be more specific than "not working", as much as possible. In this case, copy the setting from your settings.py file and paste it in the email. Always describe the error message. If it's identical to the previous one except for the timestamp and server process, just saying "error message is the same" is OK. If it's not, any small difference could be a clue, and you should copy and paste it.
Check the syntax of the assignment to MAILMAN_ARCHIVER_FROM in settings.py. The variable name must be all uppercase. The assignment must use '-', and the value should be a Python sequence[1] of strings, like this:
MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1')
Even if there is only one IP, I suspect the parentheses are required, and the single entry *must* be followed by a comma, like this:
MAILMAN_ARCHIVER_FROM = ('127.0.0.1',)
If your setting is correct, check your webserver's (Apache, nginx, etc) configuration for access restrictions. Many Mailman installation guides assume localhost and provide examples restricting access to localhost.
Finally, if no configured access restriction applies, there should be a corresponding entry in the webserver's access log. Check that the source IP is what you expect.
Footnotes: [1] If you are an experienced Python programmer, I believe you can use any sequence syntax you are comfortable with. Tuples will definitely work because that's the test configuration we use. :-)
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan
 
            Nirmal J via Mailman-users writes:
Hereby I am sharing the full settings.py file.
Are you sure this is the settings.py being used by your installation? It appears to be the distribution file, unchanged.
MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1')# Application definition
If this is from the installed settings.py, it isn't going to work, since you specified a routable domain (I think, although "list1.iitm.ac.in" is not in the public DNS), which will have a routable address, not localhost.
What IP does your DNS report for "list1.iitm.ac.in"?
HOSTNAME = 'localhost.local'
That isn't what you told Mailman via hyperkitty.cfg. I'm not sure it matters, but I think you should make sure all the config files agree on the name of the host.
# If you enable email reporting for error messages, this is where those emails # will appear to be coming from. Make sure you set a valid domain name, # otherwise the emails may get rejected. # https://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-SERVER_EMAIL # SERVER_EMAIL = 'root@your-domain.org' SERVER_EMAIL = 'root@{}'.format(HOSTNAME)
This can be problematic, at least if you enable error messages by email.
try: from settings_local import * except ImportError: pass
Do you have a "settings_local.py" file?
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan
 
            Yes I have it. I am also sharing that also settings_local.py
-----Original Message----- From: Stephen <steve@turnbull.jp> To: Nirmal <nirmal@iitm.ac.in> Cc: mailman-users <mailman-users@mailman3.org> Date: Friday, 26 September 2025 3:09 PM IST Subject: [MM3-users] Re: Reg Archive Inactive Status
Nirmal J via Mailman-users writes:
Hereby I am sharing the full settings.py file.
Are you sure this is the settings.py being used by your installation? It appears to be the distribution file, unchanged.
MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1')# Application definition
If this is from the installed settings.py, it isn't going to work, since you specified a routable domain (I think, although "list1.iitm.ac.in" is not in the public DNS), which will have a routable address, not localhost.
What IP does your DNS report for "list1.iitm.ac.in"?
HOSTNAME = 'localhost.local'
That isn't what you told Mailman via hyperkitty.cfg. I'm not sure it matters, but I think you should make sure all the config files agree on the name of the host.
# If you enable email reporting for error messages, this is where those emails # will appear to be coming from. Make sure you set a valid domain name, # otherwise the emails may get rejected. # https://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-SERVER_EMAIL # SERVER_EMAIL = 'root@your-domain.org' SERVER_EMAIL = 'root@{}'.format(HOSTNAME)
This can be problematic, at least if you enable error messages by email.
try: from settings_local import * except ImportError: pass
Do you have a "settings_local.py" file?
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan
 
            Yes I have it. I am also sharing that also settings_local.py file
# This file is imported by the Mailman Suite. It is used to override # the default settings from /usr/share/mailman3-web/settings.py.
# SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'vWzgIJ1Hvjgy4yXJz7l71vpxX6+pJcBLMdv8mWNNAd0ajVr1'
ADMINS = ( ('Mailman Suite Admin', 'nirmal@iitm.ac.in'), )
# Hosts/domain names that are valid for this site; required if DEBUG is False # See https://docs.djangoproject.com/en/1.8/ref/settings/#allowed-hosts # Set to '*' per default in the Deian package to allow all hostnames. Mailman3 # is meant to run behind a webserver reverse proxy anyway. ALLOWED_HOSTS = [ #"localhost", # Archiving API from Mailman, keep it. # "lists.your-domain.org", # Add here all production URLs you may have. '*' ]
# Mailman API credentials MAILMAN_REST_API_URL = 'http://localhost:8001' MAILMAN_REST_API_USER = 'restadmin' MAILMAN_REST_API_PASS = '/EqNGU+Mj8udFpw4ueIkhWXzAy3kJIy17wwzChrXb3P8Vh4e' MAILMAN_ARCHIVER_KEY = 'n/ZZnR5bRgNdUEyNK4p731C1+gWJLw0/' MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1', '10.24.5.52')
# Application definition
INSTALLED_APPS = ( 'hyperkitty', 'postorius', 'django_mailman3', # Uncomment the next line to enable the admin: 'django.contrib.admin', # Uncomment the next line to enable admin documentation: # 'django.contrib.admindocs', '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', #'allauth.socialaccount.providers.facebook', #'allauth.socialaccount.providers.twitter', #'allauth.socialaccount.providers.stackexchange', )
# Database # https://docs.djangoproject.com/en/1.8/ref/settings/#databases
DATABASES = { 'default': { # Use 'sqlite3', 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 'ENGINE': 'django.db.backends.sqlite3', #'ENGINE': 'django.db.backends.postgresql_psycopg2', #'ENGINE': 'django.db.backends.mysql', # DB name or path to database file if using sqlite3. 'NAME': '/var/lib/mailman3/web/mailman3web.db', # The following settings are not used with sqlite3: 'USER': '', 'PASSWORD': '', # HOST: empty for localhost through domain sockets or '127.0.0.1' for # localhost through TCP. 'HOST': '', # PORT: set to empty string for default. 'PORT': '', # OPTIONS: Extra parameters to use when connecting to the database. 'OPTIONS': { # Set sql_mode to 'STRICT_TRANS_TABLES' for MySQL. See # https://docs.djangoproject.com/en/1.11/ref/ # databases/#setting-sql-mode #'init_command': "SET sql_mode='STRICT_TRANS_TABLES'", }, } }
# If you're behind a proxy, use the X-Forwarded-Host header # See https://docs.djangoproject.com/en/1.8/ref/settings/#use-x-forwarded-host USE_X_FORWARDED_HOST = True
# And if your proxy does your SSL encoding for you, set SECURE_PROXY_SSL_HEADER # https://docs.djangoproject.com/en/1.8/ref/settings/#secure-proxy-ssl-header # SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') # SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_SCHEME', 'https')
# Other security settings # SECURE_SSL_REDIRECT = True # If you set SECURE_SSL_REDIRECT to True, make sure the SECURE_REDIRECT_EXEMPT # contains at least this line: # SECURE_REDIRECT_EXEMPT = [ # "archives/api/mailman/.*", # Request from Mailman. # ] # SESSION_COOKIE_SECURE = True # SECURE_CONTENT_TYPE_NOSNIFF = True # SECURE_BROWSER_XSS_FILTER = True # CSRF_COOKIE_SECURE = True # CSRF_COOKIE_HTTPONLY = True # X_FRAME_OPTIONS = 'DENY'
# Internationalization # https://docs.djangoproject.com/en/1.8/topics/i18n/ LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True USE_L10N = True USE_TZ = True
# Set default domain for email addresses. EMAILNAME = 'list1.iitm.ac.in'
# If you enable internal authentication, this is the address that the emails # will appear to be coming from. Make sure you set a valid domain name, # otherwise the emails may get rejected. # https://docs.djangoproject.com/en/1.8/ref/settings/#default-from-email # DEFAULT_FROM_EMAIL = "mailing-lists@you-domain.org" DEFAULT_FROM_EMAIL = 'postorius@{}'.format(EMAILNAME)
# If you enable email reporting for error messages, this is where those emails # will appear to be coming from. Make sure you set a valid domain name, # otherwise the emails may get rejected. # https://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-SERVER_EMAIL # SERVER_EMAIL = 'root@your-domain.org' SERVER_EMAIL = 'root@{}'.format(EMAILNAME)
# Django Allauth ACCOUNT_DEFAULT_HTTP_PROTOCOL = "https"
# # Social auth # SOCIALACCOUNT_PROVIDERS = { #'openid': { # 'SERVERS': [ # dict(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', #}, }
# On a production setup, setting COMPRESS_OFFLINE to True will bring a # significant performance improvement, as CSS files will not need to be # recompiled on each requests. It means running an additional "compress" # management command after each code upgrade. # http://django-compressor.readthedocs.io/en/latest/usage/#offline-compression COMPRESS_OFFLINE = True
POSTORIUS_TEMPLATE_BASE_URL = 'http://localhost/mailman3/' SITE_ID = 2
import ldap from django_auth_ldap.config import LDAPSearch # LDAP server URI AUTH_LDAP_SERVER_URI = "ldap://127.0.0.1"
# Bind DN & password (service account from IITM LDAP admin) AUTH_LDAP_BIND_DN = "cn=ldapreader,ou=Services,dc=iitm,dc=ac,dc=in" AUTH_LDAP_BIND_PASSWORD = "642126"
# Where to search for users AUTH_LDAP_USER_SEARCH = LDAPSearch( "ou=People,dc=iitm,dc=ac,dc=in", ldap.SCOPE_SUBTREE, "(uid=%(user)s)" )
# Map LDAP attributes to Django user fields AUTH_LDAP_USER_ATTR_MAP = { "first_name": "cn", "last_name": "sn", # "email": "mail" # optional if not present }
# Authentication backends (LDAP first, fallback to Django DB) AUTHENTICATION_BACKENDS = [ "django_auth_ldap.backend.LDAPBackend", "django.contrib.auth.backends.ModelBackend", ] import logging
logger = logging.getLogger('django_auth_ldap') logger.setLevel(logging.DEBUG) logger.addHandler(logging.StreamHandler())
-----Original Message----- From: Nirmal <nirmal@iitm.ac.in> To: Stephen <steve@turnbull.jp> Cc: mailman-users <mailman-users@mailman3.org> Date: Friday, 26 September 2025 3:27 PM IST Subject: Re: [MM3-users] Re: Reg Archive Inactive Status
Yes I have it. I am also sharing that also settings_local.py
-----Original Message----- From: Stephen <steve@turnbull.jp> To: Nirmal <nirmal@iitm.ac.in> Cc: mailman-users <mailman-users@mailman3.org> Date: Friday, 26 September 2025 3:09 PM IST Subject: [MM3-users] Re: Reg Archive Inactive Status
Nirmal J via Mailman-users writes:
Hereby I am sharing the full settings.py file.
Are you sure this is the settings.py being used by your installation? It appears to be the distribution file, unchanged.
MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1')# Application definition
If this is from the installed settings.py, it isn't going to work, since you specified a routable domain (I think, although "list1.iitm.ac.in" is not in the public DNS), which will have a routable address, not localhost.
What IP does your DNS report for "list1.iitm.ac.in"?
HOSTNAME = 'localhost.local'
That isn't what you told Mailman via hyperkitty.cfg. I'm not sure it matters, but I think you should make sure all the config files agree on the name of the host.
# If you enable email reporting for error messages, this is where those emails # will appear to be coming from. Make sure you set a valid domain name, # otherwise the emails may get rejected. # https://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-SERVER_EMAIL # SERVER_EMAIL = 'root@your-domain.org' SERVER_EMAIL = 'root@{}'.format(HOSTNAME)
This can be problematic, at least if you enable error messages by email.
try: from settings_local import * except ImportError: pass
Do you have a "settings_local.py" file?
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan
 
            DNS Report for that list1.iitm.ac.in is 10.24.5.52
-----Original Message----- From: Nirmal <nirmal@iitm.ac.in> To: Nirmal <nirmal@iitm.ac.in> Cc: Stephen <steve@turnbull.jp>; mailman-users <mailman-users@mailman3.org> Date: Friday, 26 September 2025 3:28 PM IST Subject: Re: [MM3-users] Re: Reg Archive Inactive Status
Yes I have it. I am also sharing that also settings_local.py file
# This file is imported by the Mailman Suite. It is used to override # the default settings from /usr/share/mailman3-web/settings.py.
# SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'vWzgIJ1Hvjgy4yXJz7l71vpxX6+pJcBLMdv8mWNNAd0ajVr1'
ADMINS = ( ('Mailman Suite Admin', 'nirmal@iitm.ac.in'), )
# Hosts/domain names that are valid for this site; required if DEBUG is False # See https://docs.djangoproject.com/en/1.8/ref/settings/#allowed-hosts # Set to '*' per default in the Deian package to allow all hostnames. Mailman3 # is meant to run behind a webserver reverse proxy anyway. ALLOWED_HOSTS = [ #"localhost", # Archiving API from Mailman, keep it. # "lists.your-domain.org", # Add here all production URLs you may have. '*' ]
# Mailman API credentials MAILMAN_REST_API_URL = 'http://localhost:8001' MAILMAN_REST_API_USER = 'restadmin' MAILMAN_REST_API_PASS = '/EqNGU+Mj8udFpw4ueIkhWXzAy3kJIy17wwzChrXb3P8Vh4e' MAILMAN_ARCHIVER_KEY = 'n/ZZnR5bRgNdUEyNK4p731C1+gWJLw0/' MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1', '10.24.5.52')
# Application definition
INSTALLED_APPS = ( 'hyperkitty', 'postorius', 'django_mailman3', # Uncomment the next line to enable the admin: 'django.contrib.admin', # Uncomment the next line to enable admin documentation: # 'django.contrib.admindocs', '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', #'allauth.socialaccount.providers.facebook', #'allauth.socialaccount.providers.twitter', #'allauth.socialaccount.providers.stackexchange', )
# Database # https://docs.djangoproject.com/en/1.8/ref/settings/#databases
DATABASES = { 'default': { # Use 'sqlite3', 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 'ENGINE': 'django.db.backends.sqlite3', #'ENGINE': 'django.db.backends.postgresql_psycopg2', #'ENGINE': 'django.db.backends.mysql', # DB name or path to database file if using sqlite3. 'NAME': '/var/lib/mailman3/web/mailman3web.db', # The following settings are not used with sqlite3: 'USER': '', 'PASSWORD': '', # HOST: empty for localhost through domain sockets or '127.0.0.1' for # localhost through TCP. 'HOST': '', # PORT: set to empty string for default. 'PORT': '', # OPTIONS: Extra parameters to use when connecting to the database. 'OPTIONS': { # Set sql_mode to 'STRICT_TRANS_TABLES' for MySQL. See # https://docs.djangoproject.com/en/1.11/ref/ # databases/#setting-sql-mode #'init_command': "SET sql_mode='STRICT_TRANS_TABLES'", }, } }
# If you're behind a proxy, use the X-Forwarded-Host header # See https://docs.djangoproject.com/en/1.8/ref/settings/#use-x-forwarded-host USE_X_FORWARDED_HOST = True
# And if your proxy does your SSL encoding for you, set SECURE_PROXY_SSL_HEADER # https://docs.djangoproject.com/en/1.8/ref/settings/#secure-proxy-ssl-header # SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') # SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_SCHEME', 'https')
# Other security settings # SECURE_SSL_REDIRECT = True # If you set SECURE_SSL_REDIRECT to True, make sure the SECURE_REDIRECT_EXEMPT # contains at least this line: # SECURE_REDIRECT_EXEMPT = [ # "archives/api/mailman/.*", # Request from Mailman. # ] # SESSION_COOKIE_SECURE = True # SECURE_CONTENT_TYPE_NOSNIFF = True # SECURE_BROWSER_XSS_FILTER = True # CSRF_COOKIE_SECURE = True # CSRF_COOKIE_HTTPONLY = True # X_FRAME_OPTIONS = 'DENY'
# Internationalization # https://docs.djangoproject.com/en/1.8/topics/i18n/ LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True USE_L10N = True USE_TZ = True
# Set default domain for email addresses. EMAILNAME = 'list1.iitm.ac.in'
# If you enable internal authentication, this is the address that the emails # will appear to be coming from. Make sure you set a valid domain name, # otherwise the emails may get rejected. # https://docs.djangoproject.com/en/1.8/ref/settings/#default-from-email # DEFAULT_FROM_EMAIL = "mailing-lists@you-domain.org" DEFAULT_FROM_EMAIL = 'postorius@{}'.format(EMAILNAME)
# If you enable email reporting for error messages, this is where those emails # will appear to be coming from. Make sure you set a valid domain name, # otherwise the emails may get rejected. # https://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-SERVER_EMAIL # SERVER_EMAIL = 'root@your-domain.org' SERVER_EMAIL = 'root@{}'.format(EMAILNAME)
# Django Allauth ACCOUNT_DEFAULT_HTTP_PROTOCOL = "https"
# # Social auth # SOCIALACCOUNT_PROVIDERS = { #'openid': { # 'SERVERS': [ # dict(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', #}, }
# On a production setup, setting COMPRESS_OFFLINE to True will bring a # significant performance improvement, as CSS files will not need to be # recompiled on each requests. It means running an additional "compress" # management command after each code upgrade. # http://django-compressor.readthedocs.io/en/latest/usage/#offline-compression COMPRESS_OFFLINE = True
POSTORIUS_TEMPLATE_BASE_URL = 'http://localhost/mailman3/' SITE_ID = 2
import ldap from django_auth_ldap.config import LDAPSearch # LDAP server URI AUTH_LDAP_SERVER_URI = "ldap://127.0.0.1"
# Bind DN & password (service account from IITM LDAP admin) AUTH_LDAP_BIND_DN = "cn=ldapreader,ou=Services,dc=iitm,dc=ac,dc=in" AUTH_LDAP_BIND_PASSWORD = "642126"
# Where to search for users AUTH_LDAP_USER_SEARCH = LDAPSearch( "ou=People,dc=iitm,dc=ac,dc=in", ldap.SCOPE_SUBTREE, "(uid=%(user)s)" )
# Map LDAP attributes to Django user fields AUTH_LDAP_USER_ATTR_MAP = { "first_name": "cn", "last_name": "sn", # "email": "mail" # optional if not present }
# Authentication backends (LDAP first, fallback to Django DB) AUTHENTICATION_BACKENDS = [ "django_auth_ldap.backend.LDAPBackend", "django.contrib.auth.backends.ModelBackend", ] import logging
logger = logging.getLogger('django_auth_ldap') logger.setLevel(logging.DEBUG) logger.addHandler(logging.StreamHandler())
-----Original Message----- From: Nirmal <nirmal@iitm.ac.in> To: Stephen <steve@turnbull.jp> Cc: mailman-users <mailman-users@mailman3.org> Date: Friday, 26 September 2025 3:27 PM IST Subject: Re: [MM3-users] Re: Reg Archive Inactive Status
Yes I have it. I am also sharing that also settings_local.py
-----Original Message----- From: Stephen <steve@turnbull.jp> To: Nirmal <nirmal@iitm.ac.in> Cc: mailman-users <mailman-users@mailman3.org> Date: Friday, 26 September 2025 3:09 PM IST Subject: [MM3-users] Re: Reg Archive Inactive Status
Nirmal J via Mailman-users writes:
Hereby I am sharing the full settings.py file.
Are you sure this is the settings.py being used by your installation? It appears to be the distribution file, unchanged.
MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1')# Application definition
If this is from the installed settings.py, it isn't going to work, since you specified a routable domain (I think, although "list1.iitm.ac.in" is not in the public DNS), which will have a routable address, not localhost.
What IP does your DNS report for "list1.iitm.ac.in"?
HOSTNAME = 'localhost.local'
That isn't what you told Mailman via hyperkitty.cfg. I'm not sure it matters, but I think you should make sure all the config files agree on the name of the host.
# If you enable email reporting for error messages, this is where those emails # will appear to be coming from. Make sure you set a valid domain name, # otherwise the emails may get rejected. # https://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-SERVER_EMAIL # SERVER_EMAIL = 'root@your-domain.org' SERVER_EMAIL = 'root@{}'.format(HOSTNAME)
This can be problematic, at least if you enable error messages by email.
try: from settings_local import * except ImportError: pass
Do you have a "settings_local.py" file?
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan
 
            If you don't mind can you please take remote access of my server through any desk or any other software and check it please.
-----Original Message----- From: Nirmal <nirmal@iitm.ac.in> To: Nirmal <nirmal@iitm.ac.in> Cc: Stephen <steve@turnbull.jp>; mailman-users <mailman-users@mailman3.org> Date: Friday, 26 September 2025 3:30 PM IST Subject: Re: [MM3-users] Re: Reg Archive Inactive Status
DNS Report for that list1.iitm.ac.in is 10.24.5.52
-----Original Message----- From: Nirmal <nirmal@iitm.ac.in> To: Nirmal <nirmal@iitm.ac.in> Cc: Stephen <steve@turnbull.jp>; mailman-users <mailman-users@mailman3.org> Date: Friday, 26 September 2025 3:28 PM IST Subject: Re: [MM3-users] Re: Reg Archive Inactive Status
Yes I have it. I am also sharing that also settings_local.py file
# This file is imported by the Mailman Suite. It is used to override # the default settings from /usr/share/mailman3-web/settings.py.
# SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'vWzgIJ1Hvjgy4yXJz7l71vpxX6+pJcBLMdv8mWNNAd0ajVr1'
ADMINS = ( ('Mailman Suite Admin', 'nirmal@iitm.ac.in'), )
# Hosts/domain names that are valid for this site; required if DEBUG is False # See https://docs.djangoproject.com/en/1.8/ref/settings/#allowed-hosts # Set to '*' per default in the Deian package to allow all hostnames. Mailman3 # is meant to run behind a webserver reverse proxy anyway. ALLOWED_HOSTS = [ #"localhost", # Archiving API from Mailman, keep it. # "lists.your-domain.org", # Add here all production URLs you may have. '*' ]
# Mailman API credentials MAILMAN_REST_API_URL = 'http://localhost:8001' MAILMAN_REST_API_USER = 'restadmin' MAILMAN_REST_API_PASS = '/EqNGU+Mj8udFpw4ueIkhWXzAy3kJIy17wwzChrXb3P8Vh4e' MAILMAN_ARCHIVER_KEY = 'n/ZZnR5bRgNdUEyNK4p731C1+gWJLw0/' MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1', '10.24.5.52')
# Application definition
INSTALLED_APPS = ( 'hyperkitty', 'postorius', 'django_mailman3', # Uncomment the next line to enable the admin: 'django.contrib.admin', # Uncomment the next line to enable admin documentation: # 'django.contrib.admindocs', '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', #'allauth.socialaccount.providers.facebook', #'allauth.socialaccount.providers.twitter', #'allauth.socialaccount.providers.stackexchange', )
# Database # https://docs.djangoproject.com/en/1.8/ref/settings/#databases
DATABASES = { 'default': { # Use 'sqlite3', 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 'ENGINE': 'django.db.backends.sqlite3', #'ENGINE': 'django.db.backends.postgresql_psycopg2', #'ENGINE': 'django.db.backends.mysql', # DB name or path to database file if using sqlite3. 'NAME': '/var/lib/mailman3/web/mailman3web.db', # The following settings are not used with sqlite3: 'USER': '', 'PASSWORD': '', # HOST: empty for localhost through domain sockets or '127.0.0.1' for # localhost through TCP. 'HOST': '', # PORT: set to empty string for default. 'PORT': '', # OPTIONS: Extra parameters to use when connecting to the database. 'OPTIONS': { # Set sql_mode to 'STRICT_TRANS_TABLES' for MySQL. See # https://docs.djangoproject.com/en/1.11/ref/ # databases/#setting-sql-mode #'init_command': "SET sql_mode='STRICT_TRANS_TABLES'", }, } }
# If you're behind a proxy, use the X-Forwarded-Host header # See https://docs.djangoproject.com/en/1.8/ref/settings/#use-x-forwarded-host USE_X_FORWARDED_HOST = True
# And if your proxy does your SSL encoding for you, set SECURE_PROXY_SSL_HEADER # https://docs.djangoproject.com/en/1.8/ref/settings/#secure-proxy-ssl-header # SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') # SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_SCHEME', 'https')
# Other security settings # SECURE_SSL_REDIRECT = True # If you set SECURE_SSL_REDIRECT to True, make sure the SECURE_REDIRECT_EXEMPT # contains at least this line: # SECURE_REDIRECT_EXEMPT = [ # "archives/api/mailman/.*", # Request from Mailman. # ] # SESSION_COOKIE_SECURE = True # SECURE_CONTENT_TYPE_NOSNIFF = True # SECURE_BROWSER_XSS_FILTER = True # CSRF_COOKIE_SECURE = True # CSRF_COOKIE_HTTPONLY = True # X_FRAME_OPTIONS = 'DENY'
# Internationalization # https://docs.djangoproject.com/en/1.8/topics/i18n/ LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True USE_L10N = True USE_TZ = True
# Set default domain for email addresses. EMAILNAME = 'list1.iitm.ac.in'
# If you enable internal authentication, this is the address that the emails # will appear to be coming from. Make sure you set a valid domain name, # otherwise the emails may get rejected. # https://docs.djangoproject.com/en/1.8/ref/settings/#default-from-email # DEFAULT_FROM_EMAIL = "mailing-lists@you-domain.org" DEFAULT_FROM_EMAIL = 'postorius@{}'.format(EMAILNAME)
# If you enable email reporting for error messages, this is where those emails # will appear to be coming from. Make sure you set a valid domain name, # otherwise the emails may get rejected. # https://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-SERVER_EMAIL # SERVER_EMAIL = 'root@your-domain.org' SERVER_EMAIL = 'root@{}'.format(EMAILNAME)
# Django Allauth ACCOUNT_DEFAULT_HTTP_PROTOCOL = "https"
# # Social auth # SOCIALACCOUNT_PROVIDERS = { #'openid': { # 'SERVERS': [ # dict(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', #}, }
# On a production setup, setting COMPRESS_OFFLINE to True will bring a # significant performance improvement, as CSS files will not need to be # recompiled on each requests. It means running an additional "compress" # management command after each code upgrade. # http://django-compressor.readthedocs.io/en/latest/usage/#offline-compression COMPRESS_OFFLINE = True
POSTORIUS_TEMPLATE_BASE_URL = 'http://localhost/mailman3/' SITE_ID = 2
import ldap from django_auth_ldap.config import LDAPSearch # LDAP server URI AUTH_LDAP_SERVER_URI = "ldap://127.0.0.1"
# Bind DN & password (service account from IITM LDAP admin) AUTH_LDAP_BIND_DN = "cn=ldapreader,ou=Services,dc=iitm,dc=ac,dc=in" AUTH_LDAP_BIND_PASSWORD = "642126"
# Where to search for users AUTH_LDAP_USER_SEARCH = LDAPSearch( "ou=People,dc=iitm,dc=ac,dc=in", ldap.SCOPE_SUBTREE, "(uid=%(user)s)" )
# Map LDAP attributes to Django user fields AUTH_LDAP_USER_ATTR_MAP = { "first_name": "cn", "last_name": "sn", # "email": "mail" # optional if not present }
# Authentication backends (LDAP first, fallback to Django DB) AUTHENTICATION_BACKENDS = [ "django_auth_ldap.backend.LDAPBackend", "django.contrib.auth.backends.ModelBackend", ] import logging
logger = logging.getLogger('django_auth_ldap') logger.setLevel(logging.DEBUG) logger.addHandler(logging.StreamHandler())
-----Original Message----- From: Nirmal <nirmal@iitm.ac.in> To: Stephen <steve@turnbull.jp> Cc: mailman-users <mailman-users@mailman3.org> Date: Friday, 26 September 2025 3:27 PM IST Subject: Re: [MM3-users] Re: Reg Archive Inactive Status
Yes I have it. I am also sharing that also settings_local.py
-----Original Message----- From: Stephen <steve@turnbull.jp> To: Nirmal <nirmal@iitm.ac.in> Cc: mailman-users <mailman-users@mailman3.org> Date: Friday, 26 September 2025 3:09 PM IST Subject: [MM3-users] Re: Reg Archive Inactive Status
Nirmal J via Mailman-users writes:
Hereby I am sharing the full settings.py file.
Are you sure this is the settings.py being used by your installation? It appears to be the distribution file, unchanged.
MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1')# Application definition
If this is from the installed settings.py, it isn't going to work, since you specified a routable domain (I think, although "list1.iitm.ac.in" is not in the public DNS), which will have a routable address, not localhost.
What IP does your DNS report for "list1.iitm.ac.in"?
HOSTNAME = 'localhost.local'
That isn't what you told Mailman via hyperkitty.cfg. I'm not sure it matters, but I think you should make sure all the config files agree on the name of the host.
# If you enable email reporting for error messages, this is where those emails # will appear to be coming from. Make sure you set a valid domain name, # otherwise the emails may get rejected. # https://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-SERVER_EMAIL # SERVER_EMAIL = 'root@your-domain.org' SERVER_EMAIL = 'root@{}'.format(HOSTNAME)
This can be problematic, at least if you enable error messages by email.
try: from settings_local import * except ImportError: pass
Do you have a "settings_local.py" file?
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan
 
            Nirmal J via Mailman-users writes:
If you don't mind can you please take remote access of my server through any desk or any other software and check it please.
I don't access other people's systems without a contract.
DNS Report for that list1.iitm.ac.in is 10.24.5.52
in any case, That is a non-routable address, visible only from your internal network. We cannot access it.
I don't see anything that would cause your problem in your Mailman configuration files. Again I suggest you check other HTTP applications including your webserver and any proxies between the Mailman core host and the HyperKitty host for access restrictions. You should also check the intervening network(s) for access restrictions, although I'm not sure a network access denial would result in an HTTP 403 code.
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan
 
            On 9/26/25 02:58, Nirmal J via Mailman-users wrote:
# SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = redacted MAILMAN_REST_API_PASS = redacted MAILMAN_ARCHIVER_KEY = redacted
Now that you have publicly exposed the above secrets, you should change them and also change the api_key: setting in mailman-hyperkitty.cfg to match the value in MAILMAN_ARCHIVER_KEY
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
 
            On 9/25/25 22:29, Nirmal J wrote:
I have ensured that the IP Address of list1.iitm.ac.in is in the Mailman_Archiver_From List in settings. But still not working. Please help.
You may also need variuos localhost IPs such as '127.0.0.1', '::1', '::ffff:127.0.0.1'
What archiving failures do you now see in mailman.log? Do not post the entire log, just the relevant message(s).
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
 
            mailman.log :-
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 388, in _make_request self._validate_conn(conn) File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 1050, in _validate_conn conn.connect() File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 414, in connect self.sock = ssl_wrap_socket( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/ssl_.py", line 449, in ssl_wrap_socket ssl_sock = _ssl_wrap_socket_impl( ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/ssl_.py", line 493, in _ssl_wrap_socket_impl return ssl_context.wrap_socket(sock, server_hostname=server_hostname) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/ssl.py", line 517, in wrap_socket return self.sslsocket_class._create( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/ssl.py", line 1108, in _create self.do_handshake() File "/usr/lib/python3.11/ssl.py", line 1379, in do_handshake self._sslobj.do_handshake() ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/usr/lib/python3/dist-packages/requests/adapters.py", line 489, in send resp = conn.urlopen( ^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 789, in urlopen retries = retries.increment( ^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 594, in increment raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)')))
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/usr/local/lib/python3.11/dist-packages/mailman_hyperkitty-1.2.0-py3.11.egg/mailman_hyperkitty/__init__.py", line 151, in _archive_message url = self._send_message(mlist, msg) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/dist-packages/mailman_hyperkitty-1.2.0-py3.11.egg/mailman_hyperkitty/__init__.py", line 195, in _send_message result = requests.post( ^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/api.py", line 115, in post return request("post", url, data=data, json=json, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/api.py", line 59, in request return session.request(method=method, url=url, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/sessions.py", line 587, in request resp = self.send(prep, **send_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/sessions.py", line 701, in send r = adapter.send(request, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/requests/adapters.py", line 563, in send raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)')))
-----Original Message----- From: Mark <mark@msapiro.net> To: Nirmal <nirmal@iitm.ac.in>; MM3 <mailman-users@mailman3.org> Date: Friday, 26 September 2025 9:56 PM IST Subject: Re: [MM3-users] Re: Reg Archive Inactive Status
On 9/25/25 22:29, Nirmal J wrote:
I have ensured that the IP Address of list1.iitm.ac.in is in the Mailman_Archiver_From List in settings. But still not working. Please help.
You may also need variuos localhost IPs such as '127.0.0.1', '::1', '::ffff:127.0.0.1'
What archiving failures do you now see in mailman.log? Do not post the entire log, just the relevant message(s).
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
 
            On 9/28/25 21:47, Nirmal J via Mailman-users wrote:
mailman.log :-
...
File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 594, in increment raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='list1.iitm.ac.in', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)')))
Can you successfully go to https://list1.iitm.ac.in/hyperkitty/api/ in a web browser or with wget or curl?
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
participants (4)
- 
                 Mark Sapiro Mark Sapiro
- 
                 Nirmal J Nirmal J
- 
                 nirmal@iitm.ac.in nirmal@iitm.ac.in
- 
                 Stephen J. Turnbull Stephen J. Turnbull