Queues
You can get information about what messages are currently in the Mailman
queues by querying the top-level queues
resource. Of course, this
information may be out-of-date by the time you receive a response, since queue
management is asynchronous, but the information will be as current as
possible.
You can get the list of all queue names.
>>> from mailman.testing.documentation import dump_json
>>> dump_json('http://localhost:9001/3.0/queues')
entry 0:
count: 0
directory: .../queue/archive
files: []
http_etag: ...
name: archive
self_link: http://localhost:9001/3.0/queues/archive
entry 1:
count: 0
directory: .../queue/bad
files: []
http_etag: ...
name: bad
self_link: http://localhost:9001/3.0/queues/bad
entry 2:
count: 0
directory: .../queue/bounces
files: []
http_etag: ...
name: bounces
self_link: http://localhost:9001/3.0/queues/bounces
entry 3:
count: 0
directory: .../queue/command
files: []
http_etag: ...
name: command
self_link: http://localhost:9001/3.0/queues/command
entry 4:
count: 0
directory: .../queue/digest
files: []
http_etag: ...
name: digest
self_link: http://localhost:9001/3.0/queues/digest
entry 5:
count: 0
directory: .../queue/in
files: []
http_etag: ...
name: in
self_link: http://localhost:9001/3.0/queues/in
entry 6:
count: 0
directory: .../queue/nntp
files: []
http_etag: ...
name: nntp
self_link: http://localhost:9001/3.0/queues/nntp
entry 7:
count: 0
directory: .../queue/out
files: []
http_etag: ...
name: out
self_link: http://localhost:9001/3.0/queues/out
entry 8:
count: 0
directory: .../queue/pipeline
files: []
http_etag: ...
name: pipeline
self_link: http://localhost:9001/3.0/queues/pipeline
entry 9:
count: 0
directory: .../queue/retry
files: []
http_etag: ...
name: retry
self_link: http://localhost:9001/3.0/queues/retry
entry 10:
count: 0
directory: .../queue/shunt
files: []
http_etag: ...
name: shunt
self_link: http://localhost:9001/3.0/queues/shunt
entry 11:
count: 0
directory: .../queue/virgin
files: []
http_etag: ...
name: virgin
self_link: http://localhost:9001/3.0/queues/virgin
http_etag: ...
self_link: http://localhost:9001/3.0/queues
start: 0
total_size: 12
Query an individual queue to get a count of, and the list of file base names
in the queue. There are currently no files in the bad
queue.
>>> dump_json('http://localhost:9001/3.0/queues/bad')
count: 0
directory: .../queue/bad
files: []
http_etag: ...
name: bad
self_link: http://localhost:9001/3.0/queues/bad
We can inject a message into the bad
queue. It must be destined for an
existing mailing list.
>>> dump_json('http://localhost:9001/3.0/lists', {
... 'fqdn_listname': 'ant@example.com',
... })
content-length: 0
content-type: application/json
date: ...
location: http://localhost:9001/3.0/lists/ant.example.com
server: ...
status: 201
While list creation takes an FQDN list name, injecting a message to the queue requires a List ID.
>>> dump_json('http://localhost:9001/3.0/queues/bad', {
... 'list_id': 'ant.example.com',
... 'text': """\
... From: anne@example.com
... To: ant@example.com
... Subject: Testing
...
... """})
content-length: 0
content-type: application/json
date: ...
location: http://localhost:9001/3.0/queues/bad/...
server: ...
status: 201
And now the bad
queue has at least one message in it.
>>> dump_json('http://localhost:9001/3.0/queues/bad')
count: 1
directory: .../queue/bad
files: ['...']
http_etag: ...
name: bad
self_link: http://localhost:9001/3.0/queues/bad
We can delete the injected message.
>>> from mailman.testing.documentation import call_http
>>> json = call_http('http://localhost:9001/3.0/queues/bad')
>>> len(json['files'])
1
>>> dump_json('http://localhost:9001/3.0/queues/bad/{}'.format(
... json['files'][0]),
... method='DELETE')
date: ...
server: ...
status: 204
And now the queue has no files.
>>> dump_json('http://localhost:9001/3.0/queues/bad')
count: 0
directory: .../queue/bad
files: []
http_etag: ...
name: bad
self_link: http://localhost:9001/3.0/queues/bad