summaryrefslogtreecommitdiff
path: root/src/mailman/handlers/docs/nntp.rst
blob: 72bcb35f00b4e59754395d4928a9b3def2ba0fde (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
============
NNTP Gateway
============

Mailman has an NNTP gateway, whereby messages posted to the mailing list can
be forwarded onto an NNTP newsgroup.

    >>> mlist = create_list('test@example.com')

Gatewaying from the mailing list to the newsgroup happens through a separate
``nntp`` queue and happen immediately when the message is posted through to
the list.  Note that gatewaying from the newsgroup to the list happens via a
separate process.

There are several situations which prevent a message from being gatewayed to
the newsgroup.  The feature could be disabled, as is the default.
::

    >>> mlist.gateway_to_news = False
    >>> msg = message_from_string("""\
    ... Subject: An important message
    ...
    ... Something of great import.
    ... """)

    >>> handler = config.handlers['to-usenet']
    >>> handler.process(mlist, msg, {})
    >>> from mailman.testing.helpers import get_queue_messages
    >>> get_queue_messages('nntp')
    []

Even if enabled, messages that came from the newsgroup are never gated back to
the newsgroup.

    >>> mlist.gateway_to_news = True
    >>> handler.process(mlist, msg, dict(fromusenet=True))
    >>> get_queue_messages('nntp')
    []

Neither are digests ever gated to the newsgroup.

    >>> handler.process(mlist, msg, dict(isdigest=True))
    >>> get_queue_messages('nntp')
    []

However, other posted messages get gated to the newsgroup via the nntp queue.
The list owner can set the linked newsgroup and the nntp host that its
messages are gated to.
::

    >>> mlist.linked_newsgroup = 'comp.lang.thing'
    >>> mlist.nntp_host = 'news.example.com'
    >>> handler.process(mlist, msg, {})
    >>> messages = get_queue_messages('nntp')
    >>> len(messages)
    1

    >>> print(messages[0].msg.as_string())
    Subject: An important message
    <BLANKLINE>
    Something of great import.
    <BLANKLINE>

    >>> dump_msgdata(messages[0].msgdata)
    _parsemsg: False
    listid   : test.example.com
    version  : 3