Deny messages from non-roster users in Openfire

617 Views Asked by At

How do I only allow contacts who are on my roster list to send me messages? Is there any XEP responsible to do that? Or will I need to do this client-side?

1

There are 1 best solutions below

1
On BEST ANSWER

Yes, OpenFire supports XEP-0016: Privacy Lists (see this question), which can be used to block stanzas according to various criteria.

You can't explicitly block stanzas for contacts not in your roster, but you can block by subscription status none, which can more or less accomplish the same goal. You could send something like this:

<iq from='[email protected]/orchard' type='set' id='msg3'>
<query xmlns='jabber:iq:privacy'>
  <list name='message-sub-example'>
    <item type='subscription'
          value='none'
          action='deny'
          order='5'>
      <message/>
    </item>
  </list>
</query>
</iq>

This creates a privacy list called message-sub-example, containing a rule to block any messages from contacts with subscription type none, including contacts not in the roster. For this list to take effect, you need to make it the active list:

<iq from='[email protected]/orchard' type='set' id='active1'>
<query xmlns='jabber:iq:privacy'>
  <active name='message-sub-example'/>
</query>
</iq>