Skip to content
GitLab
    • GitLab: the DevOps platform
    • Explore GitLab
    • Install GitLab
    • How GitLab compares
    • Get started
    • GitLab docs
    • GitLab Learn
  • Pricing
  • Talk to an expert
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
    • Switch to GitLab Next
    Projects Groups Topics Snippets
  • Register
  • Sign in
  • Mailman Core Mailman Core
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Issues 186
    • Issues 186
    • List
    • Boards
    • Service Desk
    • Milestones
  • Jira
    • Jira
  • Merge requests 26
    • Merge requests 26
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Artifacts
    • Schedules
  • Deployments
    • Deployments
    • Environments
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Create a new issue
  • Jobs
  • Issue Boards
Collapse sidebar

Do not update/delete: Banner broadcast message test data

Do not update/delete: Notification broadcast message test data

  • mailmanmailman
  • Mailman CoreMailman Core
  • Issues
  • #256
Closed
Open
Issue created Jun 14, 2016 by username-removed-107958@msapiroOwner

Defective held message gives 500 error in REST api

This is complex. The problem originates with Russian spam sent to the list. Several things occurred:

The message was held and then a message (I think the held notice to the admin) was shunted:

Jun 14 02:56:12 2016 (26473) HOLD: mailman-users@mailman3.org post from jurisdictionaly@list.ru held, message-id=<20160614104741.PXDL4PINP3U@2J1.list.ru>: The message is not from a list member
Jun 14 02:56:13 2016 (26480) Uncaught runner exception: 'content-transfer-encoding'
Jun 14 02:56:13 2016 (26480) Traceback (most recent call last):
  File "/usr/local/lib/python3.4/dist-packages/mailman-3.1.0-py3.4.egg/mailman/core/runner.py", line 159, in _one_iteration
    self._process_one_file(msg, msgdata)
  File "/usr/local/lib/python3.4/dist-packages/mailman-3.1.0-py3.4.egg/mailman/core/runner.py", line 252, in _process_one_file
    keepqueued = self._dispose(mlist, msg, msgdata)
  File "/usr/local/lib/python3.4/dist-packages/mailman-3.1.0-py3.4.egg/mailman/runners/outgoing.py", line 93, in _dispose
    self._func(mlist, msg, msgdata)
  File "/usr/local/lib/python3.4/dist-packages/mailman-3.1.0-py3.4.egg/mailman/mta/deliver.py", line 86, in deliver
    refused = agent.deliver(mlist, msg, msgdata)
  File "/usr/local/lib/python3.4/dist-packages/mailman-3.1.0-py3.4.egg/mailman/mta/bulk.py", line 101, in deliver
    mlist, msg, msgdata, recipients)
  File "/usr/local/lib/python3.4/dist-packages/mailman-3.1.0-py3.4.egg/mailman/mta/base.py", line 68, in _deliver_to_recipients
    sender, recipients, msg.as_string())
  File "/usr/lib/python3.4/email/message.py", line 159, in as_string
    g.flatten(self, unixfrom=unixfrom)
  File "/usr/lib/python3.4/email/generator.py", line 112, in flatten
    self._write(msg)
  File "/usr/lib/python3.4/email/generator.py", line 178, in _write
    self._dispatch(msg)
  File "/usr/lib/python3.4/email/generator.py", line 211, in _dispatch
    meth(msg)
  File "/usr/lib/python3.4/email/generator.py", line 269, in _handle_multipart
    g.flatten(part, unixfrom=False, linesep=self._NL)
  File "/usr/lib/python3.4/email/generator.py", line 112, in flatten
    self._write(msg)
  File "/usr/lib/python3.4/email/generator.py", line 178, in _write
    self._dispatch(msg)
  File "/usr/lib/python3.4/email/generator.py", line 211, in _dispatch
    meth(msg)
  File "/usr/lib/python3.4/email/generator.py", line 355, in _handle_message
    g.flatten(msg.get_payload(0), unixfrom=False, linesep=self._NL)
  File "/usr/lib/python3.4/email/generator.py", line 112, in flatten
    self._write(msg)
  File "/usr/lib/python3.4/email/generator.py", line 186, in _write
    msg.replace_header('content-transfer-encoding', munge_cte[0])
  File "/usr/lib/python3.4/email/message.py", line 559, in replace_header
    raise KeyError(_name)
KeyError: 'content-transfer-encoding'
Jun 14 02:56:13 2016 (26480) SHUNTING: 1465872973.3492272+fd72df4a9c11c38c3964605185fdc99c5cc3acea

Attempts to view the shunted message throw a similar error

$ ../bin/mailman qfile queue/shunt/1465872973.3492272+fd72df4a9c11c38c3964605185fdc99c5cc3acea.pck 
[----- start pickle -----]
<----- start object 1 ----->
Traceback (most recent call last):
  File "/opt/mailman/mailman-bundler/venv-3.4/bin/mailman", line 9, in <module>
    load_entry_point('mailman==3.1.0', 'console_scripts', 'mailman')()
  File "/usr/local/lib/python3.4/dist-packages/mailman-3.1.0-py3.4.egg/mailman/bin/mailman.py", line 100, in main
    args.func(args)
  File "/usr/local/lib/python3.4/dist-packages/mailman-3.1.0-py3.4.egg/mailman/commands/cli_qfile.py", line 81, in process
    printer.pprint(obj)
  File "/usr/lib/python3.4/pprint.py", line 139, in pprint
    self._format(object, self._stream, 0, 0, {}, 0)
  File "/usr/lib/python3.4/pprint.py", line 162, in _format
    rep = self._repr(object, context, level - 1)
  File "/usr/lib/python3.4/pprint.py", line 301, in _repr
    self._depth, level)
  File "/usr/lib/python3.4/pprint.py", line 313, in format
    return _safe_repr(object, context, maxlevels, level)
  File "/usr/lib/python3.4/pprint.py", line 399, in _safe_repr
    rep = repr(object)
  File "/usr/local/lib/python3.4/dist-packages/mailman-3.1.0-py3.4.egg/mailman/email/message.py", line 43, in __repr__
    return self.__str__()
  File "/usr/lib/python3.4/email/message.py", line 136, in __str__
    return self.as_string()
  File "/usr/lib/python3.4/email/message.py", line 159, in as_string
    g.flatten(self, unixfrom=unixfrom)
  File "/usr/lib/python3.4/email/generator.py", line 112, in flatten
    self._write(msg)
  File "/usr/lib/python3.4/email/generator.py", line 178, in _write
    self._dispatch(msg)
  File "/usr/lib/python3.4/email/generator.py", line 211, in _dispatch
    meth(msg)
  File "/usr/lib/python3.4/email/generator.py", line 269, in _handle_multipart
    g.flatten(part, unixfrom=False, linesep=self._NL)
  File "/usr/lib/python3.4/email/generator.py", line 112, in flatten
    self._write(msg)
  File "/usr/lib/python3.4/email/generator.py", line 178, in _write
    self._dispatch(msg)
  File "/usr/lib/python3.4/email/generator.py", line 211, in _dispatch
    meth(msg)
  File "/usr/lib/python3.4/email/generator.py", line 355, in _handle_message
    g.flatten(msg.get_payload(0), unixfrom=False, linesep=self._NL)
  File "/usr/lib/python3.4/email/generator.py", line 112, in flatten
    self._write(msg)
  File "/usr/lib/python3.4/email/generator.py", line 186, in _write
    msg.replace_header('content-transfer-encoding', munge_cte[0])
  File "/usr/lib/python3.4/email/message.py", line 559, in replace_header
    raise KeyError(_name)
KeyError: 'content-transfer-encoding'

The above is really OK as far as it goes. The real problem is attempts to view the held message in postorius give a 500 error with the following:

Jun 14 03:00:35 2016 (26481) 127.0.0.1 - - "GET /3.0/lists/mailman-users@mailman3.org/held?count=1&page=1 HTTP/1.1" 200 4750
Jun 14 03:00:35 2016 (26481) REST request handler error:
Traceback (most recent call last):
  File "/usr/lib/python3.4/wsgiref/handlers.py", line 137, in run
    self.result = application(self.environ, self.start_response)
  File "/usr/local/lib/python3.4/dist-packages/mailman-3.1.0-py3.4.egg/mailman/database/transaction.py", line 50, in wrapper
    rtn = function(*args, **kws)
  File "/usr/local/lib/python3.4/dist-packages/mailman-3.1.0-py3.4.egg/mailman/rest/wsgiapp.py", line 208, in __call__
    return super().__call__(environ, start_response)
  File "/usr/local/lib/python3.4/dist-packages/falcon-1.0.0rc1-py3.4.egg/falcon/api.py", line 184, in __call__
    responder(req, resp, **params)
  File "/usr/local/lib/python3.4/dist-packages/mailman-3.1.0-py3.4.egg/mailman/rest/post_moderation.py", line 151, in on_get
    resource = self._make_collection(request)
  File "/usr/local/lib/python3.4/dist-packages/mailman-3.1.0-py3.4.egg/mailman/rest/helpers.py", line 141, in _make_collection
    for resource in collection]
  File "/usr/local/lib/python3.4/dist-packages/mailman-3.1.0-py3.4.egg/mailman/rest/helpers.py", line 141, in <listcomp>
    for resource in collection]
  File "/usr/local/lib/python3.4/dist-packages/mailman-3.1.0-py3.4.egg/mailman/rest/post_moderation.py", line 141, in _resource_as_dict
    resource = self._make_resource(request.id)
  File "/usr/local/lib/python3.4/dist-packages/mailman-3.1.0-py3.4.egg/mailman/rest/post_moderation.py", line 74, in _make_resource
    resource['msg'] = msg.as_string()
  File "/usr/lib/python3.4/email/message.py", line 159, in as_string
    g.flatten(self, unixfrom=unixfrom)
  File "/usr/lib/python3.4/email/generator.py", line 112, in flatten
    self._write(msg)
  File "/usr/lib/python3.4/email/generator.py", line 186, in _write
    msg.replace_header('content-transfer-encoding', munge_cte[0])
  File "/usr/lib/python3.4/email/message.py", line 559, in replace_header
    raise KeyError(_name)
KeyError: 'content-transfer-encoding'

and Postorius sees

ERROR 2016-06-14 03:00:35,056 base 26520 139720996378432 Internal Server Error: /mailman3/lists/mailman-users.mailman3.org/held_messages
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/Django-1.9.4-py2.7.egg/django/core/handlers/base.py", line 149, in get_response
    response = self.process_exception_by_middleware(e, request)
  File "/usr/local/lib/python2.7/dist-packages/Django-1.9.4-py2.7.egg/django/core/handlers/base.py", line 147, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/local/lib/python2.7/dist-packages/Django-1.9.4-py2.7.egg/django/contrib/auth/decorators.py", line 23, in _wrapped_view
    return view_func(request, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/postorius-1.0.4-py2.7.egg/postorius/auth/decorators.py", line 80, in wrapper
    return fn(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/postorius-1.0.4-py2.7.egg/postorius/views/list.py", line 421, in list_moderation
    paginator_class=utils.MailmanPaginator)
  File "/usr/local/lib/python2.7/dist-packages/postorius-1.0.4-py2.7.egg/postorius/utils.py", line 89, in paginate
    results = paginator.page(1)
  File "/usr/local/lib/python2.7/dist-packages/postorius-1.0.4-py2.7.egg/postorius/utils.py", line 63, in page
    result = self.function(count=self.per_page, page=number)
  File "/usr/local/lib/python2.7/dist-packages/mailmanclient-1.0.1-py2.7.egg/mailmanclient/_client.py", line 677, in get_held_page
    return Page(self._connection, url, HeldMessage, count, page)
  File "/usr/local/lib/python2.7/dist-packages/mailmanclient-1.0.1-py2.7.egg/mailmanclient/_client.py", line 329, in __init__
    self._create_page()
  File "/usr/local/lib/python2.7/dist-packages/mailmanclient-1.0.1-py2.7.egg/mailmanclient/_client.py", line 354, in _create_page
    response, content = self._connection.call(self._build_url())
  File "/usr/local/lib/python2.7/dist-packages/mailmanclient-1.0.1-py2.7.egg/mailmanclient/_client.py", line 111, in call
    raise HTTPError(url, response.status, content, response, None)
HTTPError: HTTP Error 500: A server error occurred.  Please contact the administrator.

This makes it impossible to view/discard the message in Postorius.

It seems this failure should somehow be more graceful.

Edited Sep 29, 2017 by username-removed-107958
Assignee
Assign to
Time tracking