Cannot use OMEMO (error 406 when setting pubsub#access_model to open)

OMEMO doesn’t work with Gajim as client and Openfire as server. According to the developers of Gajim, a problem in Openfire might be the cause.

Environment:

  • XMPP Client: Gajim 1.3.3 with OMEMO Plugin 2.7.15
  • Client OS: Windows 10 x64
  • XMPP Server: Openfire 4.7.1
  • Server JVM: 1.8.0_31 Oracle Corporation – Java HotSpot™ Client VM
  • Server Application Server: jetty/9.4.43.v20210629
  • Server OS: Windows 2003 / x86

Gajim tries to set pubsub#access_model to open:

<iq type="error" id="24f29e89-a327-4cf7-8b1e-b8a8f3d9b9a1" from="CENSORED@xmpp.CENSORED.de" to="CENSORED@xmpp.CENSORED.de/gajim.CENSORED">
	<pubsub xmlns="http://jabber.org/protocol/pubsub#owner">
		<configure node="eu.siacs.conversations.axolotl.devicelist">
			<x xmlns="jabber:x:data" type="submit">
				<title>Node Konfiguration</title>
				<instructions>Bitte die Konfiguration für den Knoten &amp;#39;eu.siacs.conversations.axolotl.devicelist&amp;#39; bereitstellen.</instructions>
				<field var="FORM_TYPE" type="hidden">
					<value>http://jabber.org/protocol/pubsub#node_config</value>
				</field>
				<field var="pubsub#title" type="text-single" label="Kurzname für den Knoten">
					<value/>
				</field>
				<field var="pubsub#description" type="text-single" label="Knotenbeschreibung">
					<value/>
				</field>
				<field var="pubsub#node_type" type="text-single" label="Ob der Knoten ein Blatt (Standard) oder eine Sammlung ist.">
					<value>leaf</value>
				</field>
				<field var="pubsub#collection" type="text-single" label="Die Sammlung, der ein Knoten zugeordnet ist."/>
				<field var="pubsub#subscribe" type="boolean" label="Erlaube Abonnements vom Knoten">
					<value>1</value>
				</field>
				<field var="pubsub#subscription_required" type="boolean" label="Neue Abonnements erfordern eine Konifguration">
					<value>0</value>
				</field>
				<field var="pubsub#deliver_payloads" type="boolean" label="Übermittle Nutzdaten mit Eregnisbenachrichtigung">
					<value>1</value>
				</field>
				<field var="pubsub#notify_config" type="boolean" label="Benachrichtige die Abonnenten, wenn sich die Knotenkonfiguration ändert">
					<value>1</value>
				</field>
				<field var="pubsub#notify_delete" type="boolean" label="Benachrichtige die Abonnenten, wenn der Knoten gelöscht wird">
					<value>1</value>
				</field>
				<field var="pubsub#notify_retract" type="boolean" label="Benachrichtige die Abonnenten, wenn Elemente vom Knoten entfernt werden">
					<value>1</value>
				</field>
				<field var="pubsub#presence_based_delivery" type="boolean" label="Übermittle Benachrichtigungen nur an verfügbare Nutzer">
					<value>0</value>
				</field>
				<field var="pubsub#type" type="text-single" label="Nutzdatentyp muss an diesem Knoten bereitgestellt werden">
					<value/>
				</field>
				<field var="pubsub#body_xslt" type="text-single" label="Nachrichtenkörper XSLT">
					<value/>
				</field>
				<field var="pubsub#dataform_xslt" type="text-single" label="Nutzdaten XSLT">
					<value/>
				</field>
				<field var="pubsub#access_model" type="list-single" label="Bitte spezifizieren, wer Elemente abonnieren und wiederherstellen darf">
					<option>
						<value>authorize</value>
					</option>
					<option>
						<value>open</value>
					</option>
					<option>
						<value>presence</value>
					</option>
					<option>
						<value>roster</value>
					</option>
					<option>
						<value>whitelist</value>
					</option>
					<value>open</value>
				</field>
				<field var="pubsub#publish_model" type="list-single" label="Publisher Model">
					<option>
						<value>publishers</value>
					</option>
					<option>
						<value>subscribers</value>
					</option>
					<option>
						<value>open</value>
					</option>
					<value>publishers</value>
				</field>
				<field var="pubsub#roster_groups_allowed" type="list-multi" label="Roster Gruppen dürfen abonnieren"/>
				<field var="pubsub#contact" type="jid-multi" label="zu kontaktierende Personen mit Fragen"/>
				<field var="pubsub#language" type="text-single" label="Standardsprache">
					<value>English</value>
				</field>
				<field var="pubsub#owner" type="jid-multi" label="Knotenbesitzer">
					<value>CENSORED@xmpp.CENSORED.de</value>
				</field>
				<field var="pubsub#publisher" type="jid-multi" label="Knotenherausgeber"/>
				<field var="pubsub#itemreply" type="list-single" label="Bitte eine Instanzt wählen, die Antworten zu Elementen erhalten soll">
					<option>
						<value>owner</value>
					</option>
					<option>
						<value>publisher</value>
					</option>
					<value>owner</value>
				</field>
				<field var="pubsub#replyroom" type="jid-multi" label="Mehrnutzer-Chatraum, an den Antworten gesendet werden sollen"/>
				<field var="pubsub#replyto" type="jid-multi" label="Nutzer, an die Anworten gesendet werden sollen"/>
				<field var="pubsub#send_item_subscribe" type="boolean" label="Sende Elemente an neue Abonnenten">
					<value>1</value>
				</field>
				<field var="pubsub#persist_items" type="boolean" label="Behalte Elemente im Speicher">
					<value>1</value>
				</field>
				<field var="pubsub#max_items" type="text-single" label="Maximale Anzahl von zu behaltenden Elementen">
					<value>1</value>
				</field>
				<field var="pubsub#max_payload_size" type="text-single" label="Maximale Nutzdatengröße in bytes">
					<value>10485760</value>
				</field>
			</x>
		</configure>
	</pubsub>
	<error code="406" type="modify">
		<not-acceptable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
	</error>
</iq>

However, this fails with error 406 “not acceptable”:

<iq type="error" id="24f29e89-a327-4cf7-8b1e-b8a8f3d9b9a1" from="CENSORED@xmpp.CENSORED.de" to="CENSORED@xmpp.CENSORED.de/gajim.CENSORED">
	<pubsub xmlns="http://jabber.org/protocol/pubsub#owner">
		<configure node="eu.siacs.conversations.axolotl.devicelist">
			<x xmlns="jabber:x:data" type="submit">
				<title>Node Konfiguration</title>
				<instructions>Bitte die Konfiguration für den Knoten &amp;#39;eu.siacs.conversations.axolotl.devicelist&amp;#39; bereitstellen.</instructions>
				<field var="FORM_TYPE" type="hidden">
					<value>http://jabber.org/protocol/pubsub#node_config</value>
				</field>
				<field var="pubsub#title" type="text-single" label="Kurzname für den Knoten">
					<value/>
				</field>
				<field var="pubsub#description" type="text-single" label="Knotenbeschreibung">
					<value/>
				</field>
				<field var="pubsub#node_type" type="text-single" label="Ob der Knoten ein Blatt (Standard) oder eine Sammlung ist.">
					<value>leaf</value>
				</field>
				<field var="pubsub#collection" type="text-single" label="Die Sammlung, der ein Knoten zugeordnet ist."/>
				<field var="pubsub#subscribe" type="boolean" label="Erlaube Abonnements vom Knoten">
					<value>1</value>
				</field>
				<field var="pubsub#subscription_required" type="boolean" label="Neue Abonnements erfordern eine Konifguration">
					<value>0</value>
				</field>
				<field var="pubsub#deliver_payloads" type="boolean" label="Übermittle Nutzdaten mit Eregnisbenachrichtigung">
					<value>1</value>
				</field>
				<field var="pubsub#notify_config" type="boolean" label="Benachrichtige die Abonnenten, wenn sich die Knotenkonfiguration ändert">
					<value>1</value>
				</field>
				<field var="pubsub#notify_delete" type="boolean" label="Benachrichtige die Abonnenten, wenn der Knoten gelöscht wird">
					<value>1</value>
				</field>
				<field var="pubsub#notify_retract" type="boolean" label="Benachrichtige die Abonnenten, wenn Elemente vom Knoten entfernt werden">
					<value>1</value>
				</field>
				<field var="pubsub#presence_based_delivery" type="boolean" label="Übermittle Benachrichtigungen nur an verfügbare Nutzer">
					<value>0</value>
				</field>
				<field var="pubsub#type" type="text-single" label="Nutzdatentyp muss an diesem Knoten bereitgestellt werden">
					<value/>
				</field>
				<field var="pubsub#body_xslt" type="text-single" label="Nachrichtenkörper XSLT">
					<value/>
				</field>
				<field var="pubsub#dataform_xslt" type="text-single" label="Nutzdaten XSLT">
					<value/>
				</field>
				<field var="pubsub#access_model" type="list-single" label="Bitte spezifizieren, wer Elemente abonnieren und wiederherstellen darf">
					<option>
						<value>authorize</value>
					</option>
					<option>
						<value>open</value>
					</option>
					<option>
						<value>presence</value>
					</option>
					<option>
						<value>roster</value>
					</option>
					<option>
						<value>whitelist</value>
					</option>
					<value>open</value>
				</field>
				<field var="pubsub#publish_model" type="list-single" label="Publisher Model">
					<option>
						<value>publishers</value>
					</option>
					<option>
						<value>subscribers</value>
					</option>
					<option>
						<value>open</value>
					</option>
					<value>publishers</value>
				</field>
				<field var="pubsub#roster_groups_allowed" type="list-multi" label="Roster Gruppen dürfen abonnieren"/>
				<field var="pubsub#contact" type="jid-multi" label="zu kontaktierende Personen mit Fragen"/>
				<field var="pubsub#language" type="text-single" label="Standardsprache">
					<value>English</value>
				</field>
				<field var="pubsub#owner" type="jid-multi" label="Knotenbesitzer">
					<value>CENSORED@xmpp.CENSORED.de</value>
				</field>
				<field var="pubsub#publisher" type="jid-multi" label="Knotenherausgeber"/>
				<field var="pubsub#itemreply" type="list-single" label="Bitte eine Instanzt wählen, die Antworten zu Elementen erhalten soll">
					<option>
						<value>owner</value>
					</option>
					<option>
						<value>publisher</value>
					</option>
					<value>owner</value>
				</field>
				<field var="pubsub#replyroom" type="jid-multi" label="Mehrnutzer-Chatraum, an den Antworten gesendet werden sollen"/>
				<field var="pubsub#replyto" type="jid-multi" label="Nutzer, an die Anworten gesendet werden sollen"/>
				<field var="pubsub#send_item_subscribe" type="boolean" label="Sende Elemente an neue Abonnenten">
					<value>1</value>
				</field>
				<field var="pubsub#persist_items" type="boolean" label="Behalte Elemente im Speicher">
					<value>1</value>
				</field>
				<field var="pubsub#max_items" type="text-single" label="Maximale Anzahl von zu behaltenden Elementen">
					<value>1</value>
				</field>
				<field var="pubsub#max_payload_size" type="text-single" label="Maximale Nutzdatengröße in bytes">
					<value>10485760</value>
				</field>
			</x>
		</configure>
	</pubsub>
	<error code="406" type="modify">
		<not-acceptable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
	</error>
</iq>