mosquitto.conf.5.xml 94 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179
  1. <?xml version='1.0' encoding='UTF-8'?>
  2. <?xml-stylesheet type="text/xsl" href="manpage.xsl"?>
  3. <refentry xml:id="mosquitto.conf" xmlns:xlink="http://www.w3.org/1999/xlink">
  4. <refmeta>
  5. <refentrytitle>mosquitto.conf</refentrytitle>
  6. <manvolnum>5</manvolnum>
  7. <refmiscinfo class="source">Mosquitto Project</refmiscinfo>
  8. <refmiscinfo class="manual">File formats and conventions</refmiscinfo>
  9. </refmeta>
  10. <refnamediv>
  11. <refname>mosquitto.conf</refname>
  12. <refpurpose>the configuration file for mosquitto</refpurpose>
  13. </refnamediv>
  14. <refsynopsisdiv>
  15. <cmdsynopsis>
  16. <command>mosquitto.conf</command>
  17. </cmdsynopsis>
  18. </refsynopsisdiv>
  19. <refsect1>
  20. <title>Description</title>
  21. <para><command>mosquitto.conf</command> is the configuration file for
  22. mosquitto. This file can reside anywhere as long as mosquitto can read
  23. it. By default, mosquitto does not need a configuration file and will
  24. use the default values listed below. See
  25. <citerefentry><refentrytitle><link xlink:href="mosquitto-8.html">mosquitto</link></refentrytitle><manvolnum>8</manvolnum></citerefentry>
  26. for information on how to load a configuration file.</para>
  27. <para>
  28. Mosquitto can be instructed to reload the configuration file by sending
  29. a SIGHUP signal as described in the Signals section of
  30. <citerefentry><refentrytitle><link xlink:href="mosquitto-8.html">mosquitto</link></refentrytitle><manvolnum>8</manvolnum></citerefentry>.
  31. Not all configuration options can be reloaded, as detailed in the options below.
  32. </para>
  33. </refsect1>
  34. <refsect1>
  35. <title>File Format</title>
  36. <para>All lines with a # as the very first character are treated as a
  37. comment.</para>
  38. <para>Configuration lines start with a variable name. The variable
  39. value is separated from the name by a single space.</para>
  40. </refsect1>
  41. <refsect1>
  42. <title>Authentication</title>
  43. <para>The authentication options described below allow a wide range of
  44. possibilities in conjunction with the listener options. This
  45. section aims to clarify the possibilities. An overview is also available at
  46. <ulink url="https://mosquitto.org/documentation/authentication-methods/"/></para>
  47. <para>The simplest option is to have no authentication at all. This is
  48. the default if no other options are given. Unauthenticated
  49. encrypted support is provided by using the certificate based
  50. SSL/TLS based options certfile and keyfile.</para>
  51. <para>MQTT provides username/password authentication as part of the
  52. protocol. Use the password_file option to define the valid
  53. usernames and passwords. Be sure to use network encryption if you
  54. are using this option otherwise the username and password will be
  55. vulnerable to interception. Use the
  56. <option>per_listener_settings</option> to control whether passwords
  57. are required globally or on a per-listener basis.</para>
  58. <para>Mosquitto provides the Dynamic Security plugin which handles
  59. username/password authentication and access control in a much
  60. more flexible way than a password file. See
  61. <ulink url="https://mosquitto.org/documentation/dynamic-security/"/>
  62. </para>
  63. <para>When using certificate based encryption there are three options
  64. that affect authentication. The first is require_certificate, which
  65. may be set to true or false. If false, the SSL/TLS component of the
  66. client will verify the server but there is no requirement for the
  67. client to provide anything for the server: authentication is
  68. limited to the MQTT built in username/password. If
  69. require_certificate is true, the client must provide a valid
  70. certificate in order to connect successfully. In this case, the
  71. second and third options, use_identity_as_username and
  72. use_subject_as_username, become relevant. If set to true,
  73. use_identity_as_username causes the Common Name (CN) from the
  74. client certificate to be used instead of the MQTT username for
  75. access control purposes. The password is not used because it is
  76. assumed that only authenticated clients have valid certificates.
  77. This means that any CA certificates you include in cafile or capath
  78. will be able to issue client certificates that are valid for
  79. connecting to your broker. If use_identity_as_username is false,
  80. the client must authenticate as normal (if required by
  81. password_file) through the MQTT options. The same principle applies
  82. for the use_subject_as_username option, but the entire certificate
  83. subject is used as the username instead of just the CN.</para>
  84. <para>When using pre-shared-key based encryption through the psk_hint
  85. and psk_file options, the client must provide a valid identity and
  86. key in order to connect to the broker before any MQTT communication
  87. takes place. If use_identity_as_username is true, the PSK identity
  88. is used instead of the MQTT username for access control purposes.
  89. If use_identity_as_username is false, the client may still
  90. authenticate using the MQTT username/password if using the
  91. password_file option.</para>
  92. <para>Both certificate and PSK based encryption are configured on a
  93. per-listener basis.</para>
  94. <para>Authentication plugins can be created to augment the
  95. password_file, acl_file and psk_file options with e.g. SQL based
  96. lookups.</para>
  97. <para>It is possible to support multiple authentication schemes at
  98. once. A config could be created that had a listener for all of the
  99. different encryption options described above and hence a large
  100. number of ways of authenticating.</para>
  101. </refsect1>
  102. <refsect1>
  103. <title>General Options</title>
  104. <variablelist>
  105. <varlistentry>
  106. <term><option>acl_file</option> <replaceable>file path</replaceable></term>
  107. <listitem>
  108. <para>Set the path to an access control list file. If
  109. defined, the contents of the file are used to control
  110. client access to topics on the broker.</para>
  111. <para>If this parameter is defined then only the topics
  112. listed will have access. Topic access is added with
  113. lines of the format:</para>
  114. <para><code>topic [read|write|readwrite|deny] &lt;topic&gt;</code></para>
  115. <para>The access type is controlled using "read", "write",
  116. "readwrite" or "deny". This parameter is optional (unless
  117. &lt;topic&gt; includes a space character) - if not
  118. given then the access is read/write. &lt;topic&gt; can
  119. contain the + or # wildcards as in
  120. subscriptions. The "deny" option can used to explicitly
  121. deny access to a topic that would otherwise be granted
  122. by a broader read/write/readwrite statement. Any "deny"
  123. topics are handled before topics that grant read/write access.</para>
  124. <para>The first set of topics are applied to anonymous
  125. clients, assuming <option>allow_anonymous</option> is
  126. true. User specific topic ACLs are added after a user
  127. line as follows:</para>
  128. <para><code>user &lt;username&gt;</code></para>
  129. <para>The username referred to here is the same as in
  130. <option>password_file</option>. It is not the
  131. clientid.</para>
  132. <para>It is also possible to define ACLs based on pattern
  133. substitution within the topic. The form is the same as
  134. for the topic keyword, but using pattern as the
  135. keyword.</para>
  136. <para><code>pattern [read|write|readwrite|deny] &lt;topic&gt;</code></para>
  137. <para>The patterns available for substition are:</para>
  138. <itemizedlist mark="circle">
  139. <listitem><para>%c to match the client id of the client</para></listitem>
  140. <listitem><para>%u to match the username of the client</para></listitem>
  141. </itemizedlist>
  142. <para>The substitution pattern must be the only text for
  143. that level of hierarchy. Pattern ACLs apply to all
  144. users even if the "user" keyword has previously been
  145. given.</para>
  146. <para>Example:</para>
  147. <para><code>pattern write sensor/%u/data</code></para>
  148. <para>Allow access for bridge connection messages:</para>
  149. <para><code>pattern write $SYS/broker/connection/%c/state</code></para>
  150. <para>If the first character of a line of the ACL file is a
  151. # it is treated as a comment.</para>
  152. <para>If <option>per_listener_settings</option> is
  153. <replaceable>true</replaceable>, this option applies to
  154. the current listener being configured only. If
  155. <option>per_listener_settings</option> is
  156. <replaceable>false</replaceable>, this option applies
  157. to all listeners.</para>
  158. <para>Reloaded on reload signal. The currently loaded ACLs
  159. will be freed and reloaded. Existing subscriptions will
  160. be affected after the reload.</para>
  161. <para>See also
  162. <ulink url="https://mosquitto.org/documentation/dynamic-security/"/>
  163. </para>
  164. </listitem>
  165. </varlistentry>
  166. <varlistentry>
  167. <term><option>allow_anonymous</option> [ true | false ]</term>
  168. <listitem>
  169. <para>Boolean value that determines whether clients that
  170. connect without providing a username are allowed to
  171. connect. If set to <replaceable>false</replaceable>
  172. then another means of connection should be created to
  173. control authenticated client access.</para>
  174. <para>Defaults to <replaceable>false</replaceable>,
  175. unless no listeners are defined in the configuration
  176. file, in which case it set to <replaceable>true</replaceable>,
  177. but connections are only allowed from the local machine.</para>
  178. <para>If <option>per_listener_settings</option> is
  179. <replaceable>true</replaceable>, this option applies to
  180. the current listener being configured only. If
  181. <option>per_listener_settings</option> is
  182. <replaceable>false</replaceable>, this option applies
  183. to all listeners.</para>
  184. <important><para>In version 1.6.x and earlier, this option defaulted
  185. to <replaceable>true</replaceable> unless there was another security
  186. option set.</para></important>
  187. <para>Reloaded on reload signal.</para>
  188. </listitem>
  189. </varlistentry>
  190. <varlistentry>
  191. <term><option>allow_duplicate_messages</option> [ true | false ]</term>
  192. <listitem>
  193. <para>This option is deprecated and will be removed in a
  194. future version. The behaviour will default to true.
  195. </para>
  196. <para>If a client is subscribed to multiple subscriptions
  197. that overlap, e.g. foo/# and foo/+/baz , then MQTT
  198. expects that when the broker receives a message on a
  199. topic that matches both subscriptions, such as
  200. foo/bar/baz, then the client should only receive the
  201. message once.</para>
  202. <para>Mosquitto keeps track of which clients a message has
  203. been sent to in order to meet this requirement. This
  204. option allows this behaviour to be disabled, which may
  205. be useful if you have a large number of clients
  206. subscribed to the same set of topics and want to
  207. minimise memory usage.</para>
  208. <para>It can be safely set to
  209. <replaceable>true</replaceable> if you know in advance
  210. that your clients will never have overlapping
  211. subscriptions, otherwise your clients must be able to
  212. correctly deal with duplicate messages even when then
  213. have QoS=2.</para>
  214. <para>Defaults to <replaceable>true</replaceable>.</para>
  215. <para>This option applies globally.</para>
  216. <para>Reloaded on reload signal.</para>
  217. </listitem>
  218. </varlistentry>
  219. <varlistentry>
  220. <term><option>allow_zero_length_clientid</option> [ true | false ]</term>
  221. <listitem>
  222. <para>MQTT 3.1.1 and MQTT 5 allow clients to connect with a zero
  223. length client id and have the broker generate a client
  224. id for them. Use this option to allow/disallow this
  225. behaviour. Defaults to true.</para>
  226. <para>See also the <option>auto_id_prefix</option> option.</para>
  227. <para>If <option>per_listener_settings</option> is
  228. <replaceable>true</replaceable>, this option applies to
  229. the current listener being configured only. If
  230. <option>per_listener_settings</option> is
  231. <replaceable>false</replaceable>, this option applies
  232. to all listeners.</para>
  233. <para>Reloaded on reload signal.</para>
  234. </listitem>
  235. </varlistentry>
  236. <varlistentry>
  237. <term><option>auth_plugin_deny_special_chars</option> [ true | false ]</term>
  238. <listitem>
  239. <para>If <replaceable>true</replaceable> then before an ACL
  240. check is made, the username/client id of the client
  241. needing the check is searched for the presence of
  242. either a '+' or '#' character. If either of these
  243. characters is found in either the username or client
  244. id, then the ACL check is denied before it is sent to
  245. the plugin.</para>
  246. <para>This check prevents the case where a malicious user
  247. could circumvent an ACL check by using one of these
  248. characters as their username or client id. This is the
  249. same issue as was reported with mosquitto itself as
  250. CVE-2017-7650.</para>
  251. <para>If you are entirely sure that the plugin you are
  252. using is not vulnerable to this attack (i.e. if you
  253. never use usernames or client ids in topics) then you
  254. can disable this extra check and hence have all ACL
  255. checks delivered to your plugin by setting this option
  256. to <replaceable>false</replaceable>.</para>
  257. <para>Defaults to <replaceable>true</replaceable>.</para>
  258. <para>Applies to the current authentication plugin being configured.</para>
  259. <para>Not currently reloaded on reload signal.</para>
  260. </listitem>
  261. </varlistentry>
  262. <varlistentry>
  263. <term><option>auto_id_prefix</option> <replaceable>prefix</replaceable></term>
  264. <listitem>
  265. <para>If <option>allow_zero_length_clientid</option> is
  266. <replaceable>true</replaceable>, this option allows you
  267. to set a string that will be prefixed to the
  268. automatically generated client ids to aid visibility in
  269. logs. Defaults to <option>auto-</option>.</para>
  270. <para>If <option>per_listener_settings</option> is
  271. <replaceable>true</replaceable>, this option applies to
  272. the current listener being configured only. If
  273. <option>per_listener_settings</option> is
  274. <replaceable>false</replaceable>, this option applies
  275. to all listeners.</para>
  276. <para>Reloaded on reload signal.</para>
  277. </listitem>
  278. </varlistentry>
  279. <varlistentry>
  280. <term><option>autosave_interval</option> <replaceable>seconds</replaceable></term>
  281. <listitem>
  282. <para>The number of seconds that mosquitto will wait
  283. between each time it saves the in-memory database to
  284. disk. If set to 0, the in-memory database will only be
  285. saved when mosquitto exits or when receiving the
  286. SIGUSR1 signal. Note that this setting only has an
  287. effect if persistence is enabled. Defaults to 1800
  288. seconds (30 minutes).</para>
  289. <para>This option applies globally.</para>
  290. <para>Reloaded on reload signal.</para>
  291. </listitem>
  292. </varlistentry>
  293. <varlistentry>
  294. <term><option>autosave_on_changes</option> [ true | false ]</term>
  295. <listitem>
  296. <para>If <replaceable>true</replaceable>, mosquitto will
  297. count the number of subscription changes, retained
  298. messages received and queued messages and if the total
  299. exceeds <option>autosave_interval</option> then the
  300. in-memory database will be saved to disk. If
  301. <replaceable>false</replaceable>, mosquitto will save
  302. the in-memory database to disk by treating
  303. <option>autosave_interval</option> as a time in
  304. seconds.</para>
  305. <para>This option applies globally.</para>
  306. <para>Reloaded on reload signal.</para>
  307. </listitem>
  308. </varlistentry>
  309. <varlistentry>
  310. <term><option>check_retain_source</option> [ true | false ]</term>
  311. <listitem>
  312. <para>This option affects the scenario when a client
  313. subscribes to a topic that has retained messages. It is
  314. possible that the client that published the retained
  315. message to the topic had access at the time they
  316. published, but that access has been subsequently
  317. removed. If <option>check_retain_source</option> is set
  318. to true, the default, the source of a retained message
  319. will be checked for access rights before it is
  320. republished. When set to false, no check will be made
  321. and the retained message will always be
  322. published.</para>
  323. <para>This option applies globally, regardless of the
  324. <option>per_listener_settings</option> option.</para>
  325. </listitem>
  326. </varlistentry>
  327. <varlistentry>
  328. <term><option>clientid_prefixes</option> <replaceable>prefix</replaceable></term>
  329. <listitem>
  330. <para>This option is deprecated and will be removed in a
  331. future version.</para>
  332. <para>If defined, only clients that have a clientid with a
  333. prefix that matches clientid_prefixes will be allowed
  334. to connect to the broker. For example, setting
  335. "secure-" here would mean a client "secure-client"
  336. could connect but another with clientid "mqtt"
  337. couldn't. By default, all client ids are valid.</para>
  338. <para>This option applies globally.</para>
  339. <para>Reloaded on reload signal. Note that currently
  340. connected clients will be unaffected by any
  341. changes.</para>
  342. </listitem>
  343. </varlistentry>
  344. <varlistentry>
  345. <term><option>connection_messages</option> [ true | false ]</term>
  346. <listitem>
  347. <para>If set to <replaceable>true</replaceable>, the log
  348. will include entries when clients connect and
  349. disconnect. If set to <replaceable>false</replaceable>,
  350. these entries will not appear.</para>
  351. <para>This option applies globally.</para>
  352. <para>Reloaded on reload signal.</para>
  353. </listitem>
  354. </varlistentry>
  355. <varlistentry>
  356. <term><option>include_dir</option> <replaceable>dir</replaceable></term>
  357. <listitem>
  358. <para>External configuration files may be included by using
  359. the include_dir option. This defines a directory that
  360. will be searched for config files. All files that end
  361. in '.conf' will be loaded as a configuration file. It
  362. is best to have this as the last option in the main
  363. file. This option will only be processed from the main
  364. configuration file. The directory specified must not
  365. contain the main configuration file.</para>
  366. <para>The configuration files in
  367. <option>include_dir</option> are loaded in case
  368. sensitive alphabetical order, with the upper case of
  369. each letter ordered before the lower case of the same
  370. letter.</para>
  371. <example title="Load Order for include_dir" label="Load Order for include_dir">
  372. <para>Given the files
  373. <replaceable>b.conf</replaceable>,
  374. <replaceable>A.conf</replaceable>,
  375. <replaceable>01.conf</replaceable>,
  376. <replaceable>a.conf</replaceable>,
  377. <replaceable>B.conf</replaceable>, and
  378. <replaceable>00.conf</replaceable> inside
  379. <option>include_dir</option>, the config files
  380. would be loaded in this order:</para>
  381. <programlisting language="config">
  382. 00.conf
  383. 01.conf
  384. A.conf
  385. a.conf
  386. B.conf
  387. b.conf
  388. </programlisting></example>
  389. <para>If this option is used multiple times, then each
  390. <option>include_dir</option> option is processed
  391. completely in the order that they are written in the
  392. main configuration file.</para>
  393. <example title="Load Order for Multiple include_dir" label="Load Order for Multiple include_dir">
  394. <para>Assuming a directory
  395. <replaceable>one.d</replaceable> containing
  396. files <replaceable>B.conf</replaceable> and
  397. <replaceable>C.conf</replaceable>, and a second
  398. directory <replaceable>two.d</replaceable>
  399. containing files
  400. <replaceable>A.conf</replaceable> and
  401. <replaceable>D.conf</replaceable>, and a
  402. config:</para>
  403. <programlisting language="config">
  404. include_dir one.d
  405. include_dir two.d
  406. </programlisting><para>Then the config files would be loaded in this order:</para>
  407. <programlisting language="config">
  408. # files from one.d
  409. B.conf
  410. C.conf
  411. # files from two.d
  412. A.conf
  413. D.conf
  414. </programlisting></example>
  415. </listitem>
  416. </varlistentry>
  417. <varlistentry>
  418. <term><option>log_dest</option> <replaceable>destinations</replaceable></term>
  419. <listitem>
  420. <para>Send log messages to a particular destination.
  421. Possible destinations are: <option>stdout</option>
  422. <option>stderr</option> <option>syslog</option>
  423. <option>topic</option> <option>file</option>
  424. <option>dlt</option>.</para>
  425. <para><option>stdout</option> and
  426. <option>stderr</option> log to the console on the
  427. named output.</para>
  428. <para><option>syslog</option> uses the userspace syslog
  429. facility which usually ends up in /var/log/messages or
  430. similar.</para>
  431. <para><option>topic</option> logs to the broker topic
  432. '$SYS/broker/log/&lt;severity&gt;', where severity is
  433. one of E, W, N, I, M which are error,
  434. warning, notice, information and message. Message type
  435. severity is used by the subscribe and unsubscribe
  436. log_type options and publishes log messages at
  437. $SYS/broker/log/M/subscribe and
  438. $SYS/broker/log/M/unsubscribe. Debug messages are never
  439. logged on topics.</para>
  440. <para>The <option>file</option> destination requires an
  441. additional parameter which is the file to be logged to,
  442. e.g. "log_dest file /var/log/mosquitto.log". The file
  443. will be closed and reopened when the broker receives a
  444. HUP signal. Only a single file destination may be
  445. configured.</para>
  446. <para>The <option>dlt</option> destination is for the
  447. automotive `Diagnostic Log and Trace` tool. This
  448. requires that Mosquitto has been compiled with DLT
  449. support.</para>
  450. <para>Use "log_dest none" if you wish to disable logging.
  451. Defaults to stderr. This option may be specified
  452. multiple times.</para>
  453. <para>Note that if the broker is running as a Windows
  454. service it will default to "log_dest none" and neither
  455. stdout nor stderr logging is available.</para>
  456. <para>Reloaded on reload signal.</para>
  457. </listitem>
  458. </varlistentry>
  459. <varlistentry>
  460. <term><option>log_facility</option> <replaceable>local facility</replaceable></term>
  461. <listitem>
  462. <para>If using syslog logging (not on Windows), messages
  463. will be logged to the "daemon" facility by default. Use
  464. the <option>log_facility</option> option to choose
  465. which of local0 to local7 to log to instead. The option
  466. value should be an integer value, e.g. "log_facility 5"
  467. to use local5.</para>
  468. </listitem>
  469. </varlistentry>
  470. <varlistentry>
  471. <term><option>log_timestamp</option> [ true | false ]</term>
  472. <listitem>
  473. <para>Boolean value, if set to
  474. <replaceable>true</replaceable> a timestamp value will
  475. be added to each log entry. The default is
  476. <replaceable>true</replaceable>.</para>
  477. <para>Reloaded on reload signal.</para>
  478. </listitem>
  479. </varlistentry>
  480. <varlistentry>
  481. <term><option>log_timestamp_format</option> <replaceable>format</replaceable></term>
  482. <listitem>
  483. <para>Set the format of the log timestamp. If left unset,
  484. this is the number of seconds since the Unix epoch.
  485. This option is a free text string which will be passed
  486. to the strftime function as the format specifier. To
  487. get an ISO 8601 datetime, for example:</para>
  488. <programlisting language="config">
  489. log_timestamp_format %Y-%m-%dT%H:%M:%S
  490. </programlisting>
  491. <para>Reloaded on reload signal.</para>
  492. </listitem>
  493. </varlistentry>
  494. <varlistentry>
  495. <term><option>log_type</option> <replaceable>types</replaceable></term>
  496. <listitem>
  497. <para>Choose types of messages to log. Possible types are:
  498. <replaceable>debug</replaceable>,
  499. <replaceable>error</replaceable>,
  500. <replaceable>warning</replaceable>,
  501. <replaceable>notice</replaceable>,
  502. <replaceable>information</replaceable>,
  503. <replaceable>subscribe</replaceable>,
  504. <replaceable>unsubscribe</replaceable>,
  505. <replaceable>websockets</replaceable>,
  506. <replaceable>none</replaceable>,
  507. <replaceable>all</replaceable>.</para>
  508. <para>Defaults to <replaceable>error</replaceable>,
  509. <replaceable>warning</replaceable>, <replaceable>notice
  510. </replaceable>and
  511. <replaceable>information</replaceable>. This option
  512. may be specified multiple times. Note that the
  513. <replaceable>debug </replaceable>type (used for
  514. decoding incoming/outgoing network packets) is never
  515. logged in topics.</para>
  516. <para>Reloaded on reload signal.</para>
  517. </listitem>
  518. </varlistentry>
  519. <varlistentry>
  520. <term><option>max_inflight_bytes</option> <replaceable>count</replaceable></term>
  521. <listitem>
  522. <para>Outgoing QoS 1 and 2 messages will be allowed in flight until this byte
  523. limit is reached. This allows control of outgoing message rate based on
  524. message size rather than message count. If the limit is set to 100,
  525. messages of over 100 bytes are still allowed, but only a single message
  526. can be in flight at once. Defaults to 0. (No limit).</para>
  527. <para>See also the <option>max_inflight_messages</option> option.</para>
  528. <para>This option applies globally.</para>
  529. <para>Reloaded on reload signal.</para>
  530. </listitem>
  531. </varlistentry>
  532. <varlistentry>
  533. <term><option>max_inflight_messages</option> <replaceable>count</replaceable></term>
  534. <listitem>
  535. <para>The maximum number of outgoing QoS 1 or 2 messages that can be
  536. in the process of being transmitted simultaneously.
  537. This includes messages currently going through
  538. handshakes and messages that are being retried.
  539. Defaults to 20. Set to 0 for no maximum. If set to 1,
  540. this will guarantee in-order delivery of
  541. messages.</para>
  542. <para>This option applies globally.</para>
  543. <para>Reloaded on reload signal.</para>
  544. </listitem>
  545. </varlistentry>
  546. <varlistentry>
  547. <term><option>max_keepalive</option> <replaceable>value</replaceable></term>
  548. <listitem>
  549. <para>For MQTT v5 clients, it is possible to have the
  550. server send a "server keepalive" value that will
  551. override the keepalive value set by the client. This
  552. is intended to be used as a mechanism to say that the
  553. server will disconnect the client earlier than it
  554. anticipated, and that the client should use the new
  555. keepalive value. The max_keepalive option allows you to
  556. specify that clients may only connect with keepalive
  557. less than or equal to this value, otherwise they will
  558. be sent a server keepalive telling them to use
  559. max_keepalive. This only applies to MQTT v5 clients.
  560. The maximum value allowable, and default value, is
  561. 65535.</para>
  562. <para>
  563. Set to 0 to allow clients to set keepalive = 0, which
  564. means no keepalive checks are made and the client will
  565. never be disconnected by the broker if no messages are
  566. received. You should be very sure this is the behaviour
  567. that you want.
  568. </para>
  569. <para>
  570. For MQTT v3.1.1 and v3.1 clients, there is no mechanism
  571. to tell the client what keepalive value they should use.
  572. If an MQTT v3.1.1 or v3.1 client specifies a keepalive
  573. time greater than max_keepalive they will be sent a
  574. CONNACK message with the "identifier rejected" reason
  575. code, and disconnected.
  576. </para>
  577. <para>This option applies globally.</para>
  578. <para>Reloaded on reload signal.</para>
  579. </listitem>
  580. </varlistentry>
  581. <varlistentry>
  582. <term><option>max_packet_size</option> <replaceable>value</replaceable></term>
  583. <listitem>
  584. <para>For MQTT v5 clients, it is possible to have the
  585. server send a "maximum packet size" value that will
  586. instruct the client it will not accept MQTT packets
  587. with size greater than <option>value</option> bytes.
  588. This applies to the full MQTT packet, not just the
  589. payload. Setting this option to a positive value will
  590. set the maximum packet size to that number of bytes. If
  591. a client sends a packet which is larger than this
  592. value, it will be disconnected. This applies to all
  593. clients regardless of the protocol version they are
  594. using, but v3.1.1 and earlier clients will of course
  595. not have received the maximum packet size information.
  596. Defaults to no limit.</para>
  597. <para>This option applies to all clients, not just those
  598. using MQTT v5, but it is not possible to notify clients
  599. using MQTT v3.1.1 or MQTT v3.1 of the limit.</para>
  600. <para>Setting below 20 bytes is forbidden because it is
  601. likely to interfere with normal client operation even
  602. with small payloads.</para>
  603. <para>This option applies globally.</para>
  604. <para>Reloaded on reload signal.</para>
  605. </listitem>
  606. </varlistentry>
  607. <varlistentry>
  608. <term><option>max_queued_bytes</option> <replaceable>count</replaceable></term>
  609. <listitem>
  610. <para>The number of outgoing QoS 1 and 2 messages above those currently in-flight will be
  611. queued (per client) by the broker. Once this limit has been reached, subsequent
  612. messages will be silently dropped. This is an important option if you are sending
  613. messages at a high rate and/or have clients who are slow to respond or may be offline
  614. for extended periods of time. Defaults to 0. (No maximum).</para>
  615. <para>See also the
  616. <option>max_queued_messages</option> option.
  617. If both max_queued_messages and max_queued_bytes are specified,
  618. packets will be queued until the first limit is reached.
  619. </para>
  620. <para>This option applies globally.</para>
  621. <para>Reloaded on reload signal.</para>
  622. </listitem>
  623. </varlistentry>
  624. <varlistentry>
  625. <term><option>max_queued_messages</option> <replaceable>count</replaceable></term>
  626. <listitem>
  627. <para>The maximum number of QoS 1 or 2 messages to hold in the
  628. queue (per client) above those messages that are currently
  629. in flight. Defaults to 1000. Set to 0 for no maximum (not
  630. recommended). See also the
  631. <option>queue_qos0_messages</option> and
  632. <option>max_queued_bytes</option> options.</para>
  633. <para>This option applies globally.</para>
  634. <para>Reloaded on reload signal.</para>
  635. </listitem>
  636. </varlistentry>
  637. <varlistentry>
  638. <term><option>memory_limit</option> <replaceable>limit</replaceable></term>
  639. <listitem>
  640. <para>
  641. This option sets the maximum number of heap memory bytes that the broker
  642. will allocate, and hence sets a hard limit on memory use by the broker.
  643. Memory requests that exceed this value will be denied. The effect will
  644. vary depending on what has been denied. If an incoming message is being
  645. processed, then the message will be dropped and the publishing client
  646. will be disconnected. If an outgoing message is being sent, then the
  647. individual message will be dropped and the receiving client will be
  648. disconnected. Defaults to no limit.</para>
  649. <para>This option is only available if memory tracking support is compiled
  650. in.</para>
  651. <para>Reloaded on reload signal. Setting to a lower value and reloading will
  652. not result in memory being freed.</para>
  653. </listitem>
  654. </varlistentry>
  655. <varlistentry>
  656. <term><option>message_size_limit</option> <replaceable>limit</replaceable></term>
  657. <listitem>
  658. <para>This option sets the maximum publish payload size
  659. that the broker will allow. Received messages that
  660. exceed this size will not be accepted by the broker. This means that the
  661. message will not be forwarded on to subscribing clients, but the QoS flow
  662. will be completed for QoS 1 or QoS 2 messages. MQTT v5 clients using QoS 1
  663. or QoS 2 will receive a PUBACK or PUBREC with the "implementation specific
  664. error" reason code.</para>
  665. <para>The default value is 0, which means that all valid MQTT
  666. messages are accepted. MQTT imposes a maximum payload
  667. size of 268435455 bytes.</para>
  668. <para>This option applies globally.</para>
  669. <para>Reloaded on reload signal.</para>
  670. </listitem>
  671. </varlistentry>
  672. <varlistentry>
  673. <term><option>password_file</option> <replaceable>file path</replaceable></term>
  674. <listitem>
  675. <para>Set the path to a password file. If defined, the
  676. contents of the file are used to control client access
  677. to the broker. The file can be created using the
  678. <citerefentry><refentrytitle><link xlink:href="mosquitto_passwd-1.html">mosquitto_passwd</link></refentrytitle><manvolnum>1</manvolnum></citerefentry>
  679. utility. If mosquitto is compiled without TLS support
  680. (it is recommended that TLS support is included), then
  681. the password file should be a text file with each line
  682. in the format "username:password", where the colon and
  683. password are optional but recommended. If
  684. <option>allow_anonymous</option> is set to
  685. <replaceable>false</replaceable>, only users defined in
  686. this file will be able to connect. Setting
  687. <option>allow_anonymous</option> to
  688. <replaceable>true</replaceable> when
  689. <replaceable>password_file</replaceable>is defined is
  690. valid and could be used with acl_file to have e.g. read
  691. only guest/anonymous accounts and defined users that
  692. can publish.</para>
  693. <para>If <option>per_listener_settings</option> is
  694. <replaceable>true</replaceable>, this option applies to
  695. the current listener being configured only. If
  696. <option>per_listener_settings</option> is
  697. <replaceable>false</replaceable>, this option applies
  698. to all listeners.</para>
  699. <para>Reloaded on reload signal. The currently loaded
  700. username and password data will be freed and reloaded.
  701. Clients that are already connected will not be
  702. affected.</para>
  703. <para>See also
  704. <citerefentry><refentrytitle><link xlink:href="mosquitto_passwd-1.html">mosquitto_passwd</link></refentrytitle><manvolnum>1</manvolnum></citerefentry> and
  705. <ulink url="https://mosquitto.org/documentation/dynamic-security/"/>
  706. </para>
  707. </listitem>
  708. </varlistentry>
  709. <varlistentry>
  710. <term><option>per_listener_settings</option> [ true | false ]</term>
  711. <listitem>
  712. <para>If <replaceable>true</replaceable>, then
  713. authentication and access control settings will be
  714. controlled on a per-listener basis. The following
  715. options are affected:</para>
  716. <para><option>password_file</option>,
  717. <option>acl_file</option>, <option>psk_file</option>,
  718. <option>allow_anonymous</option>,
  719. <option>allow_zero_length_clientid</option>,
  720. <option>auto_id_prefix</option>.</para>
  721. <option>plugin</option>,
  722. <option>plugin_opt_*</option>,
  723. <para>Note that if set to true, then a durable client (i.e.
  724. with clean session set to false) that has disconnected
  725. will use the ACL settings defined for the listener that
  726. it was most recently connected to.</para>
  727. <para>The default behaviour is for this to be set to
  728. <replaceable>false</replaceable>, which maintains the
  729. settings behaviour from previous versions of
  730. mosquitto.</para>
  731. <para>Reloaded on reload signal.</para>
  732. </listitem>
  733. </varlistentry>
  734. <varlistentry>
  735. <term><option>persistence</option> [ true | false ]</term>
  736. <listitem>
  737. <para>If <replaceable>true</replaceable>, connection,
  738. subscription and message data will be written to the
  739. disk in mosquitto.db at the location dictated by
  740. persistence_location. When mosquitto is restarted, it
  741. will reload the information stored in mosquitto.db. The
  742. data will be written to disk when mosquitto closes and
  743. also at periodic intervals as defined by
  744. autosave_interval. Writing of the persistence database
  745. may also be forced by sending mosquitto the SIGUSR1
  746. signal. If <replaceable>false</replaceable>, the data
  747. will be stored in memory only. Defaults to
  748. <replaceable>false</replaceable>.</para>
  749. <para>The persistence file may change its format in a new
  750. version. The broker can currently read all old formats,
  751. but will only save in the latest format. It should always
  752. be safe to upgrade, but cautious users may wish to take a
  753. copy of the persistence file before installing a new
  754. version so that they can roll back to an earlier version
  755. if necessary.</para>
  756. <para>This option applies globally.</para>
  757. <para>Reloaded on reload signal.</para>
  758. </listitem>
  759. </varlistentry>
  760. <varlistentry>
  761. <term><option>persistence_file</option> <replaceable>file name</replaceable></term>
  762. <listitem>
  763. <para>The filename to use for the persistent database.
  764. Defaults to mosquitto.db.</para>
  765. <para>This option applies globally.</para>
  766. <para>Reloaded on reload signal.</para>
  767. </listitem>
  768. </varlistentry>
  769. <varlistentry>
  770. <term><option>persistence_location</option> <replaceable>path</replaceable></term>
  771. <listitem>
  772. <para>The path where the persistence database should be
  773. stored. If not given, then the current directory is used.</para>
  774. <para>This option applies globally.</para>
  775. <para>Reloaded on reload signal.</para>
  776. </listitem>
  777. </varlistentry>
  778. <varlistentry>
  779. <term><option>persistent_client_expiration</option> <replaceable>duration</replaceable></term>
  780. <listitem>
  781. <para>This option allows persistent clients (those with
  782. clean session set to false) to be removed if they do
  783. not reconnect within a certain time frame. This is a
  784. non-standard option. As far as the MQTT spec is
  785. concerned, persistent clients persist forever.</para>
  786. <para>Badly designed clients may set clean session to false
  787. whilst using a randomly generated client id. This leads
  788. to persistent clients that will never reconnect. This
  789. option allows these clients to be removed.</para>
  790. <para>The expiration period should be an integer followed
  791. by one of h d w m y for hour, day, week, month and year
  792. respectively. For example:</para>
  793. <itemizedlist mark="circle">
  794. <listitem><para>persistent_client_expiration 2m</para></listitem>
  795. <listitem><para>persistent_client_expiration 14d</para></listitem>
  796. <listitem><para>persistent_client_expiration 1y</para></listitem>
  797. </itemizedlist>
  798. <para>As this is a non-standard option, the default if not
  799. set is to never expire persistent clients.</para>
  800. <para>This option applies globally.</para>
  801. <para>Reloaded on reload signal.</para>
  802. </listitem>
  803. </varlistentry>
  804. <varlistentry>
  805. <term><option>pid_file</option> <replaceable>file path</replaceable></term>
  806. <listitem>
  807. <para>Write a pid file to the file specified. If not given
  808. (the default), no pid file will be written. If the pid
  809. file cannot be written, mosquitto will exit.</para>
  810. <para>If mosquitto is being automatically started by an
  811. init script it will usually be required to write a pid
  812. file. This should then be configured as e.g.
  813. /var/run/mosquitto/mosquitto.pid</para>
  814. <para>Not reloaded on reload signal.</para>
  815. </listitem>
  816. </varlistentry>
  817. <varlistentry>
  818. <term><option>plugin_opt_*</option> <replaceable>value</replaceable></term>
  819. <listitem>
  820. <para>
  821. Options to be passed to the most recent
  822. <option>plugin</option> defined in the
  823. configuration file. See the specific
  824. plugin instructions for details of what
  825. options are available.
  826. </para>
  827. <para>Applies to the current plugin being configured.</para>
  828. <para>
  829. This is also available as the <option>auth_opt_*</option>
  830. option, but this use is deprecated and will be removed
  831. in a future version.
  832. </para>
  833. </listitem>
  834. </varlistentry>
  835. <varlistentry>
  836. <term><option>plugin</option> <replaceable>file path</replaceable></term>
  837. <listitem>
  838. <para>Specify an external module to use for authentication
  839. and access control. This allows custom
  840. username/password and access control functions to be
  841. created.</para>
  842. <para>Can be specified multiple times to load multiple
  843. plugins. The plugins will be processed in the order
  844. that they are specified.</para>
  845. <para>If <option>password_file</option>, or
  846. <option>acl_file</option> are used in the config file
  847. alongsize <option>plugin</option>, the plugin
  848. checks will run after the built in checks.</para>
  849. <para>Not currently reloaded on reload signal.</para>
  850. <para>See also
  851. <ulink url="https://mosquitto.org/documentation/dynamic-security/"/>
  852. </para>
  853. <para>
  854. This is also available as the <option>auth_plugin</option>
  855. option, but this use is deprecated and will be removed
  856. in a future version.
  857. </para>
  858. </listitem>
  859. </varlistentry>
  860. <varlistentry>
  861. <term><option>psk_file</option> <replaceable>file path</replaceable></term>
  862. <listitem>
  863. <para>Set the path to a pre-shared-key file. This option
  864. requires a listener to be have PSK support enabled. If
  865. defined, the contents of the file are used to control
  866. client access to the broker. Each line should be in the
  867. format "identity:key", where the key is a hexadecimal
  868. string with no leading "0x". A client connecting to a
  869. listener that has PSK support enabled must provide a
  870. matching identity and PSK to allow the encrypted
  871. connection to proceed.</para>
  872. <para>If <option>per_listener_settings</option> is
  873. <replaceable>true</replaceable>, this option applies to
  874. the current listener being configured only. If
  875. <option>per_listener_settings</option> is
  876. <replaceable>false</replaceable>, this option applies
  877. to all listeners.</para>
  878. <para>Reloaded on reload signal. The currently loaded
  879. identity and key data will be freed and reloaded.
  880. Clients that are already connected will not be
  881. affected.</para>
  882. </listitem> </varlistentry>
  883. <varlistentry>
  884. <term><option>queue_qos0_messages</option> [ true | false ]</term>
  885. <listitem>
  886. <para>Set to <replaceable>true</replaceable> to queue
  887. messages with QoS 0 when a persistent client is
  888. disconnected. These messages are included in the limit
  889. imposed by max_queued_messages. Defaults to
  890. <replaceable>false</replaceable>.</para>
  891. <para>Note that the MQTT v3.1.1 spec states that only QoS 1
  892. and 2 messages should be saved in this situation so
  893. this is a non-standard option.</para>
  894. <para>This option applies globally.</para>
  895. <para>Reloaded on reload signal.</para>
  896. </listitem>
  897. </varlistentry>
  898. <varlistentry>
  899. <term><option>retain_available</option> [ true | false ]</term>
  900. <listitem>
  901. <para>If set to false, then retained messages are not
  902. supported. Clients that send a message with the retain
  903. bit will be disconnected if this option is set to
  904. false. Defaults to true.</para>
  905. <para>This option applies globally.</para>
  906. <para>Reloaded on reload signal.</para>
  907. </listitem>
  908. </varlistentry>
  909. <varlistentry>
  910. <term><option>set_tcp_nodelay</option> [ true | false ]</term>
  911. <listitem>
  912. <para>If set to true, the TCP_NODELAY option will be set on
  913. client sockets to disable Nagle's algorithm. This
  914. has the effect of reducing latency of some messages
  915. at potentially increasing the number of TCP packets
  916. being sent. Defaults to false.</para>
  917. <para>This option applies globally.</para>
  918. <para>Reloaded on reload signal.</para>
  919. </listitem>
  920. </varlistentry>
  921. <varlistentry>
  922. <term><option>sys_interval</option> <replaceable>seconds</replaceable></term>
  923. <listitem>
  924. <para>The integer number of seconds between updates of the
  925. $SYS subscription hierarchy, which provides status
  926. information about the broker. If unset, defaults to 10
  927. seconds.</para>
  928. <para>Set to 0 to disable publishing the $SYS hierarchy
  929. completely.</para>
  930. <para>This option applies globally.</para>
  931. <para>Reloaded on reload signal.</para>
  932. </listitem>
  933. </varlistentry>
  934. <varlistentry>
  935. <term><option>upgrade_outgoing_qos</option> [ true | false ]</term>
  936. <listitem>
  937. <para>The MQTT specification requires that the QoS of a
  938. message delivered to a subscriber is never upgraded to
  939. match the QoS of the subscription. Enabling this option
  940. changes this behaviour. If
  941. <option>upgrade_outgoing_qos</option> is set
  942. <replaceable>true</replaceable>, messages sent to a
  943. subscriber will always match the QoS of its
  944. subscription. This is a non-standard option not
  945. provided for by the spec. Defaults to
  946. <replaceable>false</replaceable>.</para>
  947. <para>This option applies globally.</para>
  948. <para>Reloaded on reload signal.</para>
  949. </listitem>
  950. </varlistentry>
  951. <varlistentry>
  952. <term><option>user</option> <replaceable>username</replaceable></term>
  953. <listitem>
  954. <para>When run as root, change to this user and its primary
  955. group on startup. If set to "mosquitto" or left unset,
  956. and if the "mosquitto" user does not exist, then
  957. mosquitto will change to the "nobody" user instead.
  958. If this is set to another value and mosquitto is unable
  959. to change to this user and group, it will exit with an
  960. error. The user specified must have read/write access
  961. to the persistence database if it is to be written. If
  962. run as a non-root user, this setting has no effect.
  963. Defaults to mosquitto.</para>
  964. <para>This setting has no effect on Windows and so you
  965. should run mosquitto as the user you wish it to run
  966. as.</para>
  967. <para>Not reloaded on reload signal.</para>
  968. </listitem>
  969. </varlistentry>
  970. </variablelist>
  971. </refsect1>
  972. <refsect1>
  973. <title>Listeners</title>
  974. <para>The network ports that mosquitto listens on can be controlled
  975. using listeners. The default listener options can be overridden and
  976. further listeners can be created.</para>
  977. <refsect2>
  978. <title>General Options</title>
  979. <variablelist>
  980. <varlistentry>
  981. <term><option>bind_address</option> <replaceable>address</replaceable></term>
  982. <listitem>
  983. <para>This option is deprecated and will be removed in a
  984. future version. Use the <option>listener</option> instead.
  985. </para>
  986. <para>Listen for incoming network connections on the
  987. specified IP address/hostname only. This is useful
  988. to restrict access to certain network interfaces.
  989. To restrict access to mosquitto to the local host
  990. only, use "bind_address localhost". This only
  991. applies to the default listener. Use the
  992. <option>listener</option> option to control other
  993. listeners.</para>
  994. <para>It is recommended to use an explicit
  995. <option>listener</option> rather than rely on the
  996. implicit default listener options like this.</para>
  997. <para>Not reloaded on reload signal.</para>
  998. </listitem>
  999. </varlistentry>
  1000. <varlistentry>
  1001. <term><option>bind_interface</option> <replaceable>device</replaceable></term>
  1002. <listitem>
  1003. <para>Listen for incoming network connections only on
  1004. the specified interface. This is similar to the
  1005. <option>bind_address</option> option but is useful
  1006. when an interface has multiple addresses or the
  1007. address may change.</para>
  1008. <para>If used at the same time as the
  1009. <option>bind_address</option> for the default
  1010. listener, or the <replaceable>bind
  1011. address/host</replaceable> part of the
  1012. <option>listener</option>, then <option>bind_interface</option>
  1013. will take priority.</para>
  1014. <para>This option is not available on Windows.</para>
  1015. <para>Not reloaded on reload signal.</para>
  1016. </listitem>
  1017. </varlistentry>
  1018. <varlistentry>
  1019. <term><option>http_dir</option> <replaceable>directory</replaceable></term>
  1020. <listitem>
  1021. <para>When a listener is using the websockets protocol,
  1022. it is possible to serve http data as well. Set
  1023. <option>http_dir</option> to a directory which
  1024. contains the files you wish to serve. If this
  1025. option is not specified, then no normal http
  1026. connections will be possible.</para>
  1027. <para>Not reloaded on reload signal.</para>
  1028. </listitem>
  1029. </varlistentry>
  1030. <varlistentry>
  1031. <term><option>listener</option> <replaceable>port</replaceable> <replaceable><optional>bind address/host/unix socket path</optional></replaceable></term>
  1032. <listitem>
  1033. <para>Listen for incoming network connection on the
  1034. specified port. A second optional argument allows
  1035. the listener to be bound to a specific ip
  1036. address/hostname. If this variable is used and
  1037. neither the global <option>bind_address</option>
  1038. nor <option>port</option> options are used then the
  1039. default listener will not be started.</para>
  1040. <para>The <option>bind address/host</option> option
  1041. allows this listener to be bound to a specific IP
  1042. address by passing an IP address or hostname. For
  1043. websockets listeners, it is only possible to pass
  1044. an IP address here.</para>
  1045. <para>On systems that support Unix Domain Sockets, this
  1046. option can also be used to create a Unix socket rather
  1047. than opening a TCP socket. In this case, the port must
  1048. be set to 0, and the unix socket path must be given.</para>
  1049. <para>This option may be specified multiple times. See
  1050. also the <option>mount_point</option>
  1051. option.</para>
  1052. <para>Not reloaded on reload signal.</para>
  1053. </listitem>
  1054. </varlistentry>
  1055. <varlistentry>
  1056. <term><option>max_connections</option> <replaceable>count</replaceable></term>
  1057. <listitem>
  1058. <para>Limit the total number of clients connected for
  1059. the current listener. Set to <literal>-1</literal>
  1060. to have "unlimited" connections. Note that other
  1061. limits may be imposed that are outside the control
  1062. of mosquitto. See e.g.
  1063. <citerefentry><refentrytitle><link xlink:href="http://linux.die.net/man/5/limits.conf">limits.conf</link></refentrytitle></citerefentry>.</para>
  1064. <para>Not reloaded on reload signal.</para>
  1065. </listitem>
  1066. </varlistentry>
  1067. <varlistentry>
  1068. <term><option>max_qos</option> <replaceable>value</replaceable></term>
  1069. <listitem>
  1070. <para>Limit the QoS value allowed for clients connecting to this
  1071. listener. Defaults to 2, which means any QoS can be
  1072. used. Set to 0 or 1 to limit to those QoS values.
  1073. This makes use of an MQTT v5 feature to notify
  1074. clients of the limitation. MQTT v3.1.1 clients will
  1075. not be aware of the limitation. Clients publishing
  1076. to this listener with a too-high QoS will be
  1077. disconnected.</para>
  1078. <para>Not reloaded on reload signal.</para>
  1079. </listitem>
  1080. </varlistentry>
  1081. <varlistentry>
  1082. <term><option>max_topic_alias</option> <replaceable>number</replaceable></term>
  1083. <listitem>
  1084. <para>This option sets the maximum number topic aliases
  1085. that an MQTT v5 client is allowed to create. This option
  1086. applies per listener. Defaults to 10. Set to 0 to
  1087. disallow topic aliases. The maximum value possible is 65535.</para>
  1088. <para>Not reloaded on reload signal.</para>
  1089. </listitem>
  1090. </varlistentry>
  1091. <varlistentry>
  1092. <term><option>mount_point</option> <replaceable>topic prefix</replaceable></term>
  1093. <listitem>
  1094. <para>This option is used with the listener option to
  1095. isolate groups of clients. When a client connects
  1096. to a listener which uses this option, the string
  1097. argument is attached to the start of all topics for
  1098. this client. This prefix is removed when any
  1099. messages are sent to the client. This means a
  1100. client connected to a listener with mount point
  1101. <replaceable>example</replaceable> can only see
  1102. messages that are published in the topic hierarchy
  1103. <replaceable>example</replaceable> and below.</para>
  1104. <para>Not reloaded on reload signal.</para>
  1105. </listitem>
  1106. </varlistentry>
  1107. <varlistentry>
  1108. <term><option>port</option> <replaceable>port number</replaceable></term>
  1109. <listitem>
  1110. <para>This option is deprecated and will be removed in a
  1111. future version. Use the <option>listener</option> instead.
  1112. </para>
  1113. <para>Set the network port for the default listener to
  1114. listen on. Defaults to 1883.</para>
  1115. <para>Not reloaded on reload signal.</para>
  1116. <para>It is recommended to use an explicit
  1117. <option>listener</option> rather than rely on the
  1118. implicit default listener options like this.</para>
  1119. </listitem>
  1120. </varlistentry>
  1121. <varlistentry>
  1122. <term><option>protocol</option> <replaceable>value</replaceable></term>
  1123. <listitem>
  1124. <para>Set the protocol to accept for the current listener. Can
  1125. be <option>mqtt</option>, the default, or
  1126. <option>websockets</option> if available.</para>
  1127. <para>Websockets support is currently disabled by
  1128. default at compile time. Certificate based TLS may be used
  1129. with websockets, except that only the
  1130. <option>cafile</option>, <option>certfile</option>,
  1131. <option>keyfile</option>, <option>ciphers</option>, and
  1132. <option>ciphers_tls1.3</option> options are
  1133. supported.</para>
  1134. <para>Not reloaded on reload signal.</para>
  1135. </listitem>
  1136. </varlistentry>
  1137. <varlistentry>
  1138. <term><option>socket_domain</option> [ ipv4 | ipv6 ]</term>
  1139. <listitem>
  1140. <para>By default, a listener will attempt to listen on
  1141. all supported IP protocol versions. If you do not
  1142. have an IPv4 or IPv6 interface you may wish to
  1143. disable support for either of those protocol
  1144. versions. In particular, note that due to the
  1145. limitations of the websockets library, it will only
  1146. ever attempt to open IPv6 sockets if IPv6 support
  1147. is compiled in, and so will fail if IPv6 is not
  1148. available.</para>
  1149. <para>Set to <option>ipv4</option> to force the
  1150. listener to only use IPv4, or set to
  1151. <option>ipv6</option> to force the listener to only
  1152. use IPv6. If you want support for both IPv4 and
  1153. IPv6, then do not use the
  1154. <option>socket_domain</option> option.</para>
  1155. <para>Not reloaded on reload signal.</para>
  1156. </listitem>
  1157. </varlistentry>
  1158. <varlistentry>
  1159. <term><option>use_username_as_clientid</option> [ true | false ]</term>
  1160. <listitem>
  1161. <para>Set <option>use_username_as_clientid</option> to
  1162. true to replace the clientid that a client
  1163. connected with its username. This allows
  1164. authentication to be tied to the clientid, which
  1165. means that it is possible to prevent one client
  1166. disconnecting another by using the same
  1167. clientid. Defaults to false.</para>
  1168. <para>If a client connects with no username it will be
  1169. disconnected as not authorised when this option is
  1170. set to true. Do not use in conjunction with
  1171. <option>clientid_prefixes</option>.</para>
  1172. <para>See also
  1173. <option>use_identity_as_username</option>.</para>
  1174. <para>Not reloaded on reload signal.</para>
  1175. </listitem>
  1176. </varlistentry>
  1177. <varlistentry>
  1178. <term><option>websockets_log_level</option> <replaceable>level</replaceable></term>
  1179. <listitem>
  1180. <para>Change the websockets logging level. This is a
  1181. global option, it is not possible to set per
  1182. listener. This is an integer that is interpreted by
  1183. libwebsockets as a bit mask for its lws_log_levels
  1184. enum. See the libwebsockets documentation for more
  1185. details.</para>
  1186. <para>To use this option, <option>log_type
  1187. websockets</option> must also be enabled.
  1188. Defaults to 0.</para>
  1189. </listitem>
  1190. </varlistentry>
  1191. <varlistentry>
  1192. <term><option>websockets_headers_size</option> <replaceable>size</replaceable></term>
  1193. <listitem>
  1194. <para>Change the websockets headers size. This is a
  1195. global option, it is not possible to set per
  1196. listener. This option sets the size of the buffer
  1197. used in the libwebsockets library when reading HTTP
  1198. headers. If you are passing large header data such
  1199. as cookies then you may need to increase this
  1200. value. If left unset, or set to 0, then the default
  1201. of 1024 bytes will be used.</para>
  1202. </listitem>
  1203. </varlistentry>
  1204. </variablelist>
  1205. </refsect2>
  1206. <refsect2>
  1207. <title>Certificate based SSL/TLS Support</title>
  1208. <para>The following options are available for all listeners to
  1209. configure certificate based SSL support. See also
  1210. "Pre-shared-key based SSL/TLS support".</para>
  1211. <variablelist>
  1212. <varlistentry>
  1213. <term><option>cafile</option> <replaceable>file path</replaceable></term>
  1214. <listitem>
  1215. <para><option>cafile</option> is used to define the
  1216. path to a file containing the PEM encoded CA
  1217. certificates that are trusted when checking incoming
  1218. client certificates.
  1219. </para>
  1220. </listitem>
  1221. </varlistentry>
  1222. <varlistentry>
  1223. <term><option>capath</option> <replaceable>directory path</replaceable></term>
  1224. <listitem>
  1225. <para><option>capath</option> is used to define a
  1226. directory that contains PEM encoded CA certificates
  1227. that are trusted when checking incoming client
  1228. certificates. For <option>capath</option> to
  1229. work correctly, the certificates files must have
  1230. ".pem" as the file ending and you must run
  1231. "openssl rehash &lt;path to capath&gt;" each time
  1232. you add/remove a certificate.
  1233. </para>
  1234. </listitem>
  1235. </varlistentry>
  1236. <varlistentry>
  1237. <term><option>certfile</option> <replaceable>file path</replaceable></term>
  1238. <listitem>
  1239. <para>
  1240. Path to the PEM encoded server certificate. This
  1241. option and <option>keyfile</option> must be present
  1242. to enable certificate based TLS encryption.
  1243. </para>
  1244. <para>
  1245. The certificate pointed to by this option will be
  1246. reloaded when Mosquitto receives a SIGHUP signal.
  1247. This can be used to load new certificates prior to
  1248. the existing ones expiring.
  1249. </para>
  1250. </listitem>
  1251. </varlistentry>
  1252. <varlistentry>
  1253. <term><option>ciphers</option> <replaceable>cipher:list</replaceable></term>
  1254. <listitem>
  1255. <para>
  1256. The list of allowed ciphers for this listener, for
  1257. TLS v1.2 and earlier only, each separated with
  1258. a colon. Available ciphers can be obtained using
  1259. the "openssl ciphers" command.
  1260. </para>
  1261. </listitem>
  1262. </varlistentry>
  1263. <varlistentry>
  1264. <term><option>ciphers_tls1.3</option> <replaceable>cipher:list</replaceable></term>
  1265. <listitem>
  1266. <para>
  1267. The list of allowed ciphersuites for this listener,
  1268. for TLS v1.3, each separated with a colon.
  1269. </para>
  1270. </listitem>
  1271. </varlistentry>
  1272. <varlistentry>
  1273. <term><option>crlfile</option> <replaceable>file path</replaceable></term>
  1274. <listitem>
  1275. <para>If you have <option>require_certificate</option>
  1276. set to <replaceable>true</replaceable>, you can
  1277. create a certificate revocation list file to revoke
  1278. access to particular client certificates. If you
  1279. have done this, use crlfile to point to the PEM
  1280. encoded revocation file.</para>
  1281. </listitem>
  1282. </varlistentry>
  1283. <varlistentry>
  1284. <term><option>dhparamfile</option> <replaceable>file path</replaceable></term>
  1285. <listitem>
  1286. <para>To allow the use of ephemeral DH key exchange,
  1287. which provides forward security, the listener must
  1288. load DH parameters. This can be specified with the
  1289. dhparamfile option. The dhparamfile can be
  1290. generated with the command e.g.</para>
  1291. <programlisting>
  1292. openssl dhparam -out dhparam.pem 2048</programlisting>
  1293. </listitem>
  1294. </varlistentry>
  1295. <varlistentry>
  1296. <term><option>keyfile</option> <replaceable>file path</replaceable></term>
  1297. <listitem>
  1298. <para>
  1299. Path to the PEM encoded server key. This
  1300. option and <option>certfile</option> must be present
  1301. to enable certificate based TLS encryption.
  1302. </para>
  1303. <para>
  1304. The private key pointed to by this option will be
  1305. reloaded when Mosquitto receives a SIGHUP signal.
  1306. This can be used to load new keys prior to
  1307. the existing ones expiring.
  1308. </para>
  1309. </listitem>
  1310. </varlistentry>
  1311. <varlistentry>
  1312. <term><option>require_certificate</option> [ true | false ]</term>
  1313. <listitem>
  1314. <para>By default an SSL/TLS enabled listener will
  1315. operate in a similar fashion to a https enabled web
  1316. server, in that the server has a certificate signed
  1317. by a CA and the client will verify that it is a
  1318. trusted certificate. The overall aim is encryption
  1319. of the network traffic. By setting
  1320. <option>require_certificate</option> to
  1321. <replaceable>true</replaceable>, a client connecting
  1322. to this listener must provide a valid certificate in
  1323. order for the network connection to proceed. This
  1324. allows access to the broker to be controlled outside
  1325. of the mechanisms provided by MQTT.</para>
  1326. </listitem>
  1327. </varlistentry>
  1328. <varlistentry>
  1329. <term><option>tls_engine</option> <replaceable>engine</replaceable></term>
  1330. <listitem>
  1331. <para>A valid openssl engine id. These can be listed with
  1332. openssl engine command.</para>
  1333. </listitem>
  1334. </varlistentry>
  1335. <varlistentry>
  1336. <term><option>tls_engine_kpass_sha1</option> <replaceable>engine_kpass_sha1</replaceable></term>
  1337. <listitem>
  1338. <para>SHA1 of the private key password when using an
  1339. TLS engine. Some TLS engines such as the TPM
  1340. engine may require the use of a password in order
  1341. to be accessed. This option allows a hex encoded
  1342. SHA1 hash of the password to the engine directly,
  1343. instead of the user being prompted for the
  1344. password.</para>
  1345. </listitem>
  1346. </varlistentry>
  1347. <varlistentry>
  1348. <term><option>tls_keyform</option> [ pem | engine ]</term>
  1349. <listitem>
  1350. <para>Specifies the type of private key in use when
  1351. making TLS connections.. This can be "pem" or
  1352. "engine". This parameter is useful when a TPM
  1353. module is being used and the private key has been
  1354. created with it. Defaults to "pem", which means
  1355. normal private key files are used.</para>
  1356. </listitem>
  1357. </varlistentry>
  1358. <varlistentry>
  1359. <term><option>tls_version</option> <replaceable>version</replaceable></term>
  1360. <listitem>
  1361. <para>Configure the minimum version of the TLS protocol to be
  1362. used for this listener. Possible values are
  1363. <replaceable>tlsv1.3</replaceable>,
  1364. <replaceable>tlsv1.2</replaceable> and
  1365. <replaceable>tlsv1.1</replaceable>. If left unset,
  1366. the default of allowing TLS v1.3 and v1.2.</para>
  1367. <para>In Mosquitto version 1.6.x and earlier, this
  1368. option set the only TLS protocol version that
  1369. was allowed, rather than the minimum.</para>
  1370. </listitem>
  1371. </varlistentry>
  1372. <varlistentry>
  1373. <term><option>use_identity_as_username</option> [ true | false ]</term>
  1374. <listitem>
  1375. <para>If <option>require_certificate</option> is
  1376. <replaceable>true</replaceable>, you may set
  1377. <option>use_identity_as_username</option> to
  1378. <replaceable>true</replaceable> to use the CN value
  1379. from the client certificate as a username. If this
  1380. is <replaceable>true</replaceable>, the
  1381. <option>password_file</option> option will not be
  1382. used for this listener.</para>
  1383. <para>This takes priority over
  1384. <option>use_subject_as_username</option> if both
  1385. are set to <replaceable>true</replaceable>.</para>
  1386. <para>See also
  1387. <option>use_subject_as_username</option></para>
  1388. </listitem>
  1389. </varlistentry>
  1390. <varlistentry>
  1391. <term><option>use_subject_as_username</option> [ true | false ]</term>
  1392. <listitem>
  1393. <para>If <option>require_certificate</option> is
  1394. <replaceable>true</replaceable>, you may set
  1395. <option>use_subject_as_username</option> to
  1396. <replaceable>true</replaceable> to use the complete subject value
  1397. from the client certificate as a username. If this
  1398. is <replaceable>true</replaceable>, the
  1399. <option>password_file</option> option will not be
  1400. used for this listener.</para>
  1401. <para>The subject will be generated in a form similar
  1402. to <option>CN=test client,OU=Production,O=Server,L=Nottingham,ST=Nottinghamshire,C=GB</option>.</para>
  1403. <para>See also
  1404. <option>use_identity_as_username</option></para>
  1405. </listitem>
  1406. </varlistentry>
  1407. </variablelist>
  1408. </refsect2>
  1409. <refsect2>
  1410. <title>Pre-shared-key based SSL/TLS Support</title>
  1411. <para>The following options are available for all listeners to
  1412. configure pre-shared-key based SSL support. See also
  1413. "Certificate based SSL/TLS support".</para>
  1414. <variablelist>
  1415. <varlistentry>
  1416. <term><option>ciphers</option> <replaceable>cipher:list</replaceable></term>
  1417. <listitem>
  1418. <para>When using PSK, the encryption ciphers used will
  1419. be chosen from the list of available PSK ciphers.
  1420. If you want to control which ciphers are available,
  1421. use this option. The list of available ciphers can
  1422. be optained using the "openssl ciphers" command and
  1423. should be provided in the same format as the output
  1424. of that command.</para>
  1425. </listitem>
  1426. </varlistentry>
  1427. <varlistentry>
  1428. <term><option>psk_hint</option> <replaceable>hint</replaceable></term>
  1429. <listitem>
  1430. <para>The <option>psk_hint</option> option enables
  1431. pre-shared-key support for this listener and also
  1432. acts as an identifier for this listener. The hint
  1433. is sent to clients and may be used locally to aid
  1434. authentication. The hint is a free form string that
  1435. doesn't have much meaning in itself, so feel free
  1436. to be creative.</para>
  1437. <para>If this option is provided, see
  1438. <option>psk_file</option> to define the pre-shared
  1439. keys to be used or create a security plugin to
  1440. handle them.</para>
  1441. </listitem>
  1442. </varlistentry>
  1443. <varlistentry>
  1444. <term><option>tls_version</option> <replaceable>version</replaceable></term>
  1445. <listitem>
  1446. <para>Configure the minimum version of the TLS protocol to be
  1447. used for this listener. Possible values are
  1448. <replaceable>tlsv1.3</replaceable>,
  1449. <replaceable>tlsv1.2</replaceable> and
  1450. <replaceable>tlsv1.1</replaceable>. If left unset,
  1451. the default of allowing TLS v1.3 and v1.2.</para>
  1452. <para>In Mosquitto version 1.6.x and earlier, this
  1453. option set the only TLS protocol version that
  1454. was allowed, rather than the minimum.</para>
  1455. </listitem>
  1456. </varlistentry>
  1457. <varlistentry>
  1458. <term><option>use_identity_as_username</option> [ true | false ]</term>
  1459. <listitem>
  1460. <para>Set <option>use_identity_as_username</option> to
  1461. have the psk identity sent by the client used as
  1462. its username. The username will be checked as
  1463. normal, so <option>password_file</option> or
  1464. another means of authentication checking must be
  1465. used. No password will be used.</para>
  1466. </listitem>
  1467. </varlistentry>
  1468. </variablelist>
  1469. </refsect2>
  1470. </refsect1>
  1471. <refsect1>
  1472. <title>Configuring Bridges</title>
  1473. <para>Multiple bridges (connections to other brokers) can be configured
  1474. using the following variables.</para>
  1475. <para>Bridges cannot currently be reloaded on reload signal.</para>
  1476. <variablelist>
  1477. <varlistentry>
  1478. <term><option>address</option> <replaceable>address[:port]</replaceable> <replaceable>[address[:port]]</replaceable></term>
  1479. <term><option>addresses</option> <replaceable>address[:port]</replaceable> <replaceable>[address[:port]]</replaceable></term>
  1480. <listitem>
  1481. <para>Specify the address and optionally the port of the
  1482. bridge to connect to. This must be given for each
  1483. bridge connection. If the port is not specified, the
  1484. default of 1883 is used.</para>
  1485. <para>If you use an IPv6 address, then the port is not
  1486. optional.</para>
  1487. <para>Multiple host addresses can be specified on the
  1488. address config. See the <option>round_robin</option>
  1489. option for more details on the behaviour of bridges
  1490. with multiple addresses.</para>
  1491. </listitem>
  1492. </varlistentry>
  1493. <varlistentry>
  1494. <term><option>bridge_attempt_unsubscribe</option> [ true | false ]</term>
  1495. <listitem>
  1496. <para>If a bridge has topics that have "out" direction, the
  1497. default behaviour is to send an unsubscribe request to
  1498. the remote broker on that topic. This means that
  1499. changing a topic direction from "in" to "out" will not
  1500. keep receiving incoming messages. Sending these
  1501. unsubscribe requests is not always desirable, setting
  1502. <option>bridge_attempt_unsubscribe</option> to
  1503. <replaceable>false</replaceable> will disable sending
  1504. the unsubscribe request. Defaults to
  1505. <replaceable>true</replaceable>.</para>
  1506. </listitem>
  1507. </varlistentry>
  1508. <varlistentry>
  1509. <term><option>bridge_bind_address</option> <replaceable>ip address</replaceable></term>
  1510. <listitem>
  1511. <para>
  1512. If you need to have the bridge connect over a particular
  1513. network interface, use bridge_bind_address to tell the
  1514. bridge which local IP address the socket should bind to,
  1515. e.g. <option>bridge_bind_address 192.168.1.10</option>.
  1516. </para>
  1517. </listitem>
  1518. </varlistentry>
  1519. <varlistentry>
  1520. <term><option>bridge_max_packet_size</option> <replaceable>value</replaceable></term>
  1521. <listitem>
  1522. <para>
  1523. If you wish to restrict the size of messages sent to a
  1524. remote bridge, use this option. This sets the maximum
  1525. number of bytes for the total message, including headers
  1526. and payload. Note that MQTT v5 brokers may provide their
  1527. own maximum-packet-size property. In this case, the
  1528. smaller of the two limits will be used. Set to 0 for
  1529. "unlimited".
  1530. </para>
  1531. </listitem>
  1532. </varlistentry>
  1533. <varlistentry>
  1534. <term><option>bridge_outgoing_retain</option> [ true | false ]</term>
  1535. <listitem>
  1536. <para>Some MQTT brokers do not allow retained messages. MQTT v5 gives
  1537. a mechanism for brokers to tell clients that they do not support
  1538. retained messages, but this is not possible for MQTT v3.1.1 or v3.1.
  1539. If you need to bridge to a v3.1.1 or v3.1 broker that does not support
  1540. retained messages, set the <option>bridge_outgoing_retain</option>
  1541. option to <replaceable>false</replaceable>. This will remove the
  1542. retain bit on all outgoing messages to that bridge, regardless of any
  1543. other setting. Defaults to <replaceable>true</replaceable>.</para>
  1544. </listitem>
  1545. </varlistentry>
  1546. <varlistentry>
  1547. <term><option>bridge_protocol_version</option> <replaceable>version</replaceable></term>
  1548. <listitem>
  1549. <para>Set the version of the MQTT protocol to use with for
  1550. this bridge. Can be one of
  1551. <replaceable>mqttv50</replaceable>,
  1552. <replaceable>mqttv311</replaceable> or
  1553. <replaceable>mqttv31</replaceable>. Defaults to
  1554. <replaceable>mqttv311</replaceable>.</para>
  1555. </listitem>
  1556. </varlistentry>
  1557. <varlistentry>
  1558. <term><option>cleansession</option> [ true | false ]</term>
  1559. <listitem>
  1560. <para>Set the clean session option for this bridge. Setting
  1561. to <replaceable>false</replaceable> (the default),
  1562. means that all subscriptions on the remote broker are
  1563. kept in case of the network connection dropping. If set
  1564. to <replaceable>true</replaceable>, all subscriptions
  1565. and messages on the remote broker will be cleaned up if
  1566. the connection drops. Note that setting to
  1567. <replaceable>true</replaceable> may cause a large
  1568. amount of retained messages to be sent each time the
  1569. bridge reconnects.</para>
  1570. <para>If you are using bridges with
  1571. <option>cleansession</option> set to
  1572. <replaceable>false</replaceable> (the default), then
  1573. you may get unexpected behaviour from incoming topics
  1574. if you change what topics you are subscribing to. This
  1575. is because the remote broker keeps the subscription for
  1576. the old topic. If you have this problem, connect your
  1577. bridge with <option>cleansession</option> set to
  1578. <replaceable>true</replaceable>, then reconnect with
  1579. cleansession set to <replaceable>false</replaceable> as
  1580. normal.</para>
  1581. </listitem>
  1582. </varlistentry>
  1583. <varlistentry>
  1584. <term><option>local_cleansession</option> [ true | false]</term>
  1585. <listitem>
  1586. <para>The regular <option>cleansession</option> covers both the local subscriptions
  1587. and the remote subscriptions. local_cleansession allows splitting this.
  1588. Setting <replaceable>false</replaceable> will mean that the local connection
  1589. will preserve subscription, independent of the remote connection.
  1590. </para>
  1591. <para>Defaults to the value of bridge.cleansession unless explicitly specified.</para>
  1592. </listitem>
  1593. </varlistentry>
  1594. <varlistentry>
  1595. <term><option>connection</option> <replaceable>name</replaceable></term>
  1596. <listitem>
  1597. <para>This variable marks the start of a new bridge
  1598. connection. It is also used to give the bridge a name
  1599. which is used as the client id on the remote
  1600. broker.</para>
  1601. </listitem>
  1602. </varlistentry>
  1603. <varlistentry>
  1604. <term><option>keepalive_interval</option> <replaceable>seconds</replaceable></term>
  1605. <listitem>
  1606. <para>Set the number of seconds after which the bridge
  1607. should send a ping if no other traffic has occurred.
  1608. Defaults to 60. A minimum value of 5 seconds
  1609. is allowed.</para>
  1610. </listitem>
  1611. </varlistentry>
  1612. <varlistentry>
  1613. <term><option>idle_timeout</option> <replaceable>seconds</replaceable></term>
  1614. <listitem>
  1615. <para>Set the amount of time a bridge using the lazy start
  1616. type must be idle before it will be stopped. Defaults
  1617. to 60 seconds.</para>
  1618. </listitem>
  1619. </varlistentry>
  1620. <varlistentry>
  1621. <term><option>local_clientid</option> <replaceable>id</replaceable></term>
  1622. <listitem>
  1623. <para>Set the clientid to use on the local broker. If not
  1624. defined, this defaults to
  1625. <option>local.&lt;remote_clientid&gt;</option>. If you are
  1626. bridging a broker to itself, it is important that
  1627. local_clientid and remote_clientid do not match.</para>
  1628. </listitem>
  1629. </varlistentry>
  1630. <varlistentry>
  1631. <term><option>local_password</option> <replaceable>password</replaceable></term>
  1632. <listitem>
  1633. <para>Configure the password to be used when connecting
  1634. this bridge to the local broker. This may be important
  1635. when authentication and ACLs are being used.</para>
  1636. </listitem>
  1637. </varlistentry>
  1638. <varlistentry>
  1639. <term><option>local_username</option> <replaceable>username</replaceable></term>
  1640. <listitem>
  1641. <para>Configure the username to be used when connecting
  1642. this bridge to the local broker. This may be important
  1643. when authentication and ACLs are being used.</para>
  1644. </listitem>
  1645. </varlistentry>
  1646. <varlistentry>
  1647. <term><option>notifications</option> [ true | false ]</term>
  1648. <listitem>
  1649. <para>If set to <replaceable>true</replaceable>, publish
  1650. notification messages to the local and remote brokers
  1651. giving information about the state of the bridge
  1652. connection. Retained messages are published to the
  1653. topic $SYS/broker/connection/&lt;remote_clientid&gt;/state
  1654. unless otherwise set with
  1655. <option>notification_topic</option>s. If the message
  1656. is 1 then the connection is active, or 0 if the
  1657. connection has failed. Defaults to
  1658. <replaceable>true</replaceable>.</para>
  1659. <para>This uses the Last Will and Testament (LWT) feature.</para>
  1660. </listitem>
  1661. </varlistentry>
  1662. <varlistentry>
  1663. <term><option>notifications_local_only</option> [ true | false ]</term>
  1664. <listitem>
  1665. <para>If set to <replaceable>true</replaceable>, only publish
  1666. notification messages to the local broker giving
  1667. information about the state of the bridge connection.
  1668. Defaults to <replaceable>false</replaceable>.</para>
  1669. </listitem>
  1670. </varlistentry>
  1671. <varlistentry>
  1672. <term><option>notification_topic</option> <replaceable>topic</replaceable></term>
  1673. <listitem>
  1674. <para>Choose the topic on which notifications will be
  1675. published for this bridge. If not set the messages will
  1676. be sent on the topic
  1677. $SYS/broker/connection/&lt;remote_clientid&gt;/state.</para>
  1678. </listitem>
  1679. </varlistentry>
  1680. <varlistentry>
  1681. <term><option>remote_clientid</option> <replaceable>id</replaceable></term>
  1682. <listitem>
  1683. <para>Set the client id for this bridge connection. If not
  1684. defined, this defaults to 'name.hostname', where name
  1685. is the connection name and hostname is the hostname of
  1686. this computer.</para>
  1687. <para>This replaces the old "clientid" option to avoid
  1688. confusion with local/remote sides of the bridge.
  1689. "clientid" remains valid for the time being.</para>
  1690. </listitem>
  1691. </varlistentry>
  1692. <varlistentry>
  1693. <term><option>remote_password</option> <replaceable>value</replaceable></term>
  1694. <listitem>
  1695. <para>Configure a password for the bridge. This is used for
  1696. authentication purposes when connecting to a broker
  1697. that supports MQTT v3.1 and up and requires a username
  1698. and/or password to connect. This option is only valid
  1699. if a remote_username is also supplied.</para>
  1700. <para>This replaces the old "password" option to avoid
  1701. confusion with local/remote sides of the bridge.
  1702. "password" remains valid for the time being.</para>
  1703. </listitem>
  1704. </varlistentry>
  1705. <varlistentry>
  1706. <term><option>remote_username</option> <replaceable>name</replaceable></term>
  1707. <listitem>
  1708. <para>Configure a username for the bridge. This is used for
  1709. authentication purposes when connecting to a broker
  1710. that supports MQTT v3.1 and up and requires a username
  1711. and/or password to connect. See also the
  1712. <option>remote_password</option> option.</para>
  1713. <para>This replaces the old "username" option to avoid
  1714. confusion with local/remote sides of the bridge.
  1715. "username" remains valid for the time being.</para>
  1716. </listitem>
  1717. </varlistentry>
  1718. <varlistentry>
  1719. <term><option>restart_timeout</option> <replaceable>base cap</replaceable></term>
  1720. <term><option>restart_timeout</option> <replaceable>constant</replaceable></term>
  1721. <listitem>
  1722. <para>Set the amount of time a bridge using the automatic
  1723. start type will wait until attempting to reconnect.</para>
  1724. <para>This option can be configured to use a constant delay
  1725. time in seconds, or to use a backoff mechanism based on
  1726. "Decorrelated Jitter", which adds a degree of
  1727. randomness to when the restart occurs, starting at the
  1728. base and increasing up to the cap. Set a constant
  1729. timeout of 20 seconds:</para>
  1730. <programlisting language="config">
  1731. restart_timeout 20</programlisting>
  1732. <para>Set backoff with a base (start value) of 10 seconds and a cap (upper
  1733. limit) of 60 seconds:</para>
  1734. <programlisting language="config">
  1735. restart_timeout 10 30</programlisting>
  1736. <para>Defaults to jitter with a base of 5 seconds and cap
  1737. of 30 seconds.</para>
  1738. </listitem>
  1739. </varlistentry>
  1740. <varlistentry>
  1741. <term><option>round_robin</option> [ true | false ]</term>
  1742. <listitem>
  1743. <para>If the bridge has more than one address given in the
  1744. address/addresses configuration, the round_robin option
  1745. defines the behaviour of the bridge on a failure of the
  1746. bridge connection. If round_robin is
  1747. <replaceable>false</replaceable>, the default value,
  1748. then the first address is treated as the main bridge
  1749. connection. If the connection fails, the other
  1750. secondary addresses will be attempted in turn. Whilst
  1751. connected to a secondary bridge, the bridge will
  1752. periodically attempt to reconnect to the main bridge
  1753. until successful.</para>
  1754. <para>If round_robin is <replaceable>true</replaceable>,
  1755. then all addresses are treated as equals. If a
  1756. connection fails, the next address will be tried and if
  1757. successful will remain connected until it fails.</para>
  1758. </listitem>
  1759. </varlistentry>
  1760. <varlistentry>
  1761. <term><option>start_type</option> [ automatic | lazy | once ]</term>
  1762. <listitem>
  1763. <para>Set the start type of the bridge. This controls how
  1764. the bridge starts and can be one of three types:
  1765. <replaceable>automatic</replaceable>, <replaceable>lazy
  1766. </replaceable>and <replaceable>once</replaceable>. Note
  1767. that RSMB provides a fourth start type "manual" which
  1768. isn't currently supported by mosquitto.</para>
  1769. <para><replaceable>automatic</replaceable> is the default
  1770. start type and means that the bridge connection will be
  1771. started automatically when the broker starts and also
  1772. restarted after a short delay (30 seconds) if the
  1773. connection fails.</para>
  1774. <para>Bridges using the <replaceable>lazy</replaceable>
  1775. start type will be started automatically when the
  1776. number of queued messages exceeds the number set with
  1777. the <option>threshold</option> option. It will be
  1778. stopped automatically after the time set by the
  1779. <option>idle_timeout</option> parameter. Use this start
  1780. type if you wish the connection to only be active when
  1781. it is needed.</para>
  1782. <para>A bridge using the <replaceable>once</replaceable>
  1783. start type will be started automatically when the
  1784. broker starts but will not be restarted if the
  1785. connection fails.</para>
  1786. </listitem>
  1787. </varlistentry>
  1788. <varlistentry>
  1789. <term><option>threshold</option> <replaceable>count</replaceable></term>
  1790. <listitem>
  1791. <para>Set the number of messages that need to be queued for
  1792. a bridge with lazy start type to be restarted.
  1793. Defaults to 10 messages.</para>
  1794. </listitem>
  1795. </varlistentry>
  1796. <varlistentry>
  1797. <term><option>topic</option> <replaceable>pattern</replaceable> [[[ out | in | both ] qos-level] local-prefix remote-prefix]</term>
  1798. <listitem>
  1799. <para>Define a topic pattern to be shared between the two
  1800. brokers. Any topics matching the pattern (which may
  1801. include wildcards) are shared. The second parameter
  1802. defines the direction that the messages will be shared
  1803. in, so it is possible to import messages from a remote
  1804. broker using <replaceable>in</replaceable>, export
  1805. messages to a remote broker using
  1806. <replaceable>out</replaceable> or share messages in
  1807. both directions. If this parameter is not defined, the
  1808. default of <replaceable>out</replaceable> is used. The
  1809. QoS level defines the publish/subscribe QoS level used
  1810. for this topic and defaults to 0.</para>
  1811. <para>The <replaceable>local-prefix</replaceable> and
  1812. <replaceable>remote-prefix</replaceable> options allow
  1813. topics to be remapped when publishing to and receiving
  1814. from remote brokers. This allows a topic tree from the
  1815. local broker to be inserted into the topic tree of the
  1816. remote broker at an appropriate place.</para>
  1817. <para>For incoming topics, the bridge will prepend the
  1818. pattern with the remote prefix and subscribe to the
  1819. resulting topic on the remote broker. When a matching
  1820. incoming message is received, the remote prefix will be
  1821. removed from the topic and then the local prefix
  1822. added.</para>
  1823. <para>For outgoing topics, the bridge will prepend the
  1824. pattern with the local prefix and subscribe to the
  1825. resulting topic on the local broker. When an outgoing
  1826. message is processed, the local prefix will be removed
  1827. from the topic then the remote prefix added.</para>
  1828. <para>When using topic mapping, an empty prefix can be
  1829. defined using the place marker
  1830. <replaceable>""</replaceable>. Using the empty marker
  1831. for the topic itself is also valid. The table below
  1832. defines what combination of empty or value is
  1833. valid. The <option>Full Local Topic</option> and
  1834. <option>Full Remote Topic</option> show the resulting
  1835. topics that would be used on the local and remote ends
  1836. of the bridge. For example, for the first table row if
  1837. you publish to <option>L/topic</option> on the local
  1838. broker, then the remote broker will receive a message
  1839. on the topic <option>R/topic</option>.</para>
  1840. <informaltable>
  1841. <tgroup cols="6">
  1842. <thead>
  1843. <row>
  1844. <entry><emphasis>Pattern</emphasis></entry>
  1845. <entry><emphasis>Local Prefix</emphasis></entry>
  1846. <entry><emphasis>Remote Prefix</emphasis></entry>
  1847. <entry><emphasis>Validity</emphasis></entry>
  1848. <entry><emphasis>Full Local Topic</emphasis></entry>
  1849. <entry><emphasis>Full Remote Topic</emphasis></entry>
  1850. </row>
  1851. </thead>
  1852. <tbody>
  1853. <row><entry>pattern</entry><entry>L/</entry><entry>R/</entry><entry>valid</entry><entry>L/pattern</entry><entry>R/pattern</entry></row>
  1854. <row><entry>pattern</entry><entry>L/</entry><entry>""</entry><entry>valid</entry><entry>L/pattern</entry><entry>pattern</entry></row>
  1855. <row><entry>pattern</entry><entry>""</entry><entry>R/</entry><entry>valid</entry><entry>pattern</entry><entry>R/pattern</entry></row>
  1856. <row><entry>pattern</entry><entry>""</entry><entry>""</entry><entry>valid (no remapping)</entry><entry>pattern</entry><entry>pattern</entry></row>
  1857. <row><entry>""</entry><entry>local</entry><entry>remote</entry><entry>valid (remap single local topic to remote)</entry><entry>local</entry><entry>remote</entry></row>
  1858. <row><entry>""</entry><entry>local</entry><entry>""</entry><entry>invalid</entry><entry></entry><entry></entry></row>
  1859. <row><entry>""</entry><entry>""</entry><entry>remote</entry><entry>invalid</entry><entry></entry><entry></entry></row>
  1860. <row><entry>""</entry><entry>""</entry><entry>""</entry><entry>invalid</entry><entry></entry><entry></entry></row>
  1861. </tbody>
  1862. </tgroup>
  1863. </informaltable>
  1864. <para>To remap an entire topic tree, use e.g.:</para>
  1865. <programlisting language="config">
  1866. topic # both 2 local/topic/ remote/topic/</programlisting>
  1867. <para>This option can be specified multiple times per
  1868. bridge.</para>
  1869. <para>Care must be taken to ensure that loops are not
  1870. created with this option. If you are experiencing high
  1871. CPU load from a broker, it is possible that you have a
  1872. loop where each broker is forever forwarding each other
  1873. the same messages.</para>
  1874. <para>See also the <option>cleansession</option> option if
  1875. you have messages arriving on unexpected topics when
  1876. using incoming topics.</para>
  1877. <example title="Bridge Topic Remapping" label="Bridge Topic Remapping">
  1878. <para>The configuration below connects a bridge to the
  1879. broker at <option>test.mosquitto.org</option>. It
  1880. subscribes to the remote topic
  1881. <option>$SYS/broker/clients/total</option> and
  1882. republishes the messages received to the local topic
  1883. <option>test/mosquitto/org/clients/total</option></para>
  1884. <programlisting language="config">
  1885. connection test-mosquitto-org
  1886. address test.mosquitto.org
  1887. cleansession true
  1888. topic clients/total in 0 test/mosquitto/org/ $SYS/broker/
  1889. </programlisting></example>
  1890. </listitem>
  1891. </varlistentry>
  1892. <varlistentry>
  1893. <term><option>try_private</option> [ true | false ]</term>
  1894. <listitem>
  1895. <para>If try_private is set to
  1896. <replaceable>true</replaceable>, the bridge will
  1897. attempt to indicate to the remote broker that it is a
  1898. bridge not an ordinary client. If successful, this
  1899. means that loop detection will be more effective and
  1900. that retained messages will be propagated correctly.
  1901. Not all brokers support this feature so it may be
  1902. necessary to set <option>try_private</option> to
  1903. <replaceable>false</replaceable> if your bridge does
  1904. not connect properly.</para>
  1905. <para>Defaults to <replaceable>true</replaceable>.</para>
  1906. </listitem>
  1907. </varlistentry>
  1908. </variablelist>
  1909. <refsect2>
  1910. <title>SSL/TLS Support</title>
  1911. <para>The following options are available for all bridges to
  1912. configure SSL/TLS support.</para>
  1913. <variablelist>
  1914. <varlistentry>
  1915. <term><option>bridge_alpn</option> <replaceable>alpn</replaceable></term>
  1916. <listitem>
  1917. <para>Configure the application layer protocol negotiation
  1918. option for the TLS session. Useful for brokers that support
  1919. both websockets and MQTT on the same port.</para>
  1920. </listitem>
  1921. </varlistentry>
  1922. <varlistentry>
  1923. <term><option>bridge_cafile</option> <replaceable>file path</replaceable></term>
  1924. <listitem>
  1925. <para>One of <option>bridge_cafile</option> or
  1926. <option>bridge_capath</option> must be provided to
  1927. allow SSL/TLS support.</para>
  1928. <para>bridge_cafile is used to define the path to a file
  1929. containing the PEM encoded CA certificates that
  1930. have signed the certificate for the remote broker.
  1931. </para>
  1932. </listitem>
  1933. </varlistentry>
  1934. <varlistentry>
  1935. <term><option>bridge_capath</option> <replaceable>file path</replaceable></term>
  1936. <listitem>
  1937. <para>One of <option>bridge_capath</option> or
  1938. <option>bridge_cafile</option> must be provided to
  1939. allow SSL/TLS support.</para>
  1940. <para>bridge_capath is used to define the path to a
  1941. directory containing the PEM encoded CA
  1942. certificates that have signed the certificate for
  1943. the remote broker. For bridge_capath to work
  1944. correctly, the certificate files must have ".crt"
  1945. as the file ending and you must run "openssl rehash
  1946. &lt;path to bridge_capath&gt;" each time you
  1947. add/remove a certificate.</para>
  1948. </listitem>
  1949. </varlistentry>
  1950. <varlistentry>
  1951. <term><option>bridge_certfile</option> <replaceable>file path</replaceable></term>
  1952. <listitem>
  1953. <para>Path to the PEM encoded client certificate for
  1954. this bridge, if required by the remote
  1955. broker.</para>
  1956. </listitem>
  1957. </varlistentry>
  1958. <varlistentry>
  1959. <term><option>bridge_identity</option> <replaceable>identity</replaceable></term>
  1960. <listitem>
  1961. <para>Pre-shared-key encryption provides an alternative
  1962. to certificate based encryption. A bridge can be
  1963. configured to use PSK with the
  1964. <option>bridge_identity</option> and
  1965. <option>bridge_psk</option> options. This is the
  1966. client identity used with PSK encryption. Only one
  1967. of certificate and PSK based encryption can be used
  1968. on one bridge at once.</para>
  1969. </listitem>
  1970. </varlistentry>
  1971. <varlistentry>
  1972. <term><option>bridge_insecure</option> [ true | false ]</term>
  1973. <listitem>
  1974. <para>When using certificate based TLS, the bridge will
  1975. attempt to verify the hostname provided in the
  1976. remote certificate matches the host/address being
  1977. connected to. This may cause problems in testing
  1978. scenarios, so <option>bridge_insecure</option> may
  1979. be set to <replaceable>true</replaceable> to
  1980. disable the hostname verification.</para>
  1981. <para>Setting this option to
  1982. <replaceable>true</replaceable> means that a
  1983. malicious third party could potentially impersonate
  1984. your server, so it should always be set to
  1985. <replaceable>false</replaceable> in production
  1986. environments.</para>
  1987. </listitem>
  1988. </varlistentry>
  1989. <varlistentry>
  1990. <term><option>bridge_keyfile</option> <replaceable>file path</replaceable></term>
  1991. <listitem>
  1992. <para>Path to the PEM encoded private key for this
  1993. bridge, if required by the remote broker.</para>
  1994. </listitem>
  1995. </varlistentry>
  1996. <varlistentry>
  1997. <term><option>bridge_psk</option> <replaceable>key</replaceable></term>
  1998. <listitem>
  1999. <para>Pre-shared-key encryption provides an alternative
  2000. to certificate based encryption. A bridge can be
  2001. configured to use PSK with the
  2002. <option>bridge_identity</option> and
  2003. <option>bridge_psk</option> options. This is the
  2004. pre-shared-key in hexadecimal format with no "0x".
  2005. Only one of certificate and PSK based encryption
  2006. can be used on one bridge at once.</para>
  2007. </listitem>
  2008. </varlistentry>
  2009. <varlistentry>
  2010. <term><option>bridge_require_ocsp</option> [ true | false ]</term>
  2011. <listitem>
  2012. <para>When set to true, the bridge requires OCSP on the TLS
  2013. connection it opens as client.</para>
  2014. </listitem>
  2015. </varlistentry>
  2016. <varlistentry>
  2017. <term><option>bridge_tls_version</option> <replaceable>version</replaceable></term>
  2018. <listitem>
  2019. <para>Configure the version of the TLS protocol to be
  2020. used for this bridge. Possible values are
  2021. <replaceable>tlsv1.3</replaceable>,
  2022. <replaceable>tlsv1.2</replaceable> and
  2023. <replaceable>tlsv1.1</replaceable>. Defaults to
  2024. <replaceable>tlsv1.2</replaceable>. The remote
  2025. broker must support the same version of TLS for the
  2026. connection to succeed.</para>
  2027. </listitem>
  2028. </varlistentry>
  2029. </variablelist>
  2030. </refsect2>
  2031. </refsect1>
  2032. <refsect1>
  2033. <title>Files</title>
  2034. <para>mosquitto.conf</para>
  2035. </refsect1>
  2036. <refsect1>
  2037. <title>Bugs</title>
  2038. <para><command>mosquitto</command> bug information can be found at
  2039. <ulink url="https://github.com/eclipse/mosquitto/issues"/></para>
  2040. </refsect1>
  2041. <refsect1>
  2042. <title>See Also</title>
  2043. <simplelist type="inline">
  2044. <member>
  2045. <citerefentry>
  2046. <refentrytitle><link xlink:href="mosquitto-8.html">mosquitto</link></refentrytitle>
  2047. <manvolnum>8</manvolnum>
  2048. </citerefentry>
  2049. </member>
  2050. <member>
  2051. <citerefentry>
  2052. <refentrytitle><link xlink:href="mosquitto_passwd-1.html">mosquitto_passwd</link></refentrytitle>
  2053. <manvolnum>1</manvolnum>
  2054. </citerefentry>
  2055. </member>
  2056. <member>
  2057. <citerefentry>
  2058. <refentrytitle><link xlink:href="mosquitto-tls-7.html">mosquitto-tls</link></refentrytitle>
  2059. <manvolnum>7</manvolnum>
  2060. </citerefentry>
  2061. </member>
  2062. <member>
  2063. <citerefentry>
  2064. <refentrytitle><link xlink:href="mqtt-7.html">mqtt</link></refentrytitle>
  2065. <manvolnum>7</manvolnum>
  2066. </citerefentry>
  2067. </member>
  2068. <member>
  2069. <citerefentry>
  2070. <refentrytitle><link xlink:href="http://linux.die.net/man/5/limits.conf">limits.conf</link></refentrytitle>
  2071. <manvolnum>5</manvolnum>
  2072. </citerefentry>
  2073. </member>
  2074. </simplelist>
  2075. </refsect1>
  2076. <refsect1>
  2077. <title>Author</title>
  2078. <para>Roger Light <email>roger@atchoo.org</email></para>
  2079. </refsect1>
  2080. </refentry>