<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://commons.oreilly.com/wiki/skins/common/feed.css?97"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://commons.oreilly.com/wiki/index.php?title=JabChapter_3&amp;action=history&amp;feed=atom</id>
		<title>JabChapter 3 - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://commons.oreilly.com/wiki/index.php?title=JabChapter_3&amp;action=history&amp;feed=atom"/>
		<link rel="alternate" type="text/html" href="http://commons.oreilly.com/wiki/index.php?title=JabChapter_3&amp;action=history"/>
		<updated>2013-05-23T13:12:32Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.11.0</generator>

	<entry>
		<id>http://commons.oreilly.com/wiki/index.php?title=JabChapter_3&amp;diff=1846&amp;oldid=prev</id>
		<title>KruegerN: insert content template</title>
		<link rel="alternate" type="text/html" href="http://commons.oreilly.com/wiki/index.php?title=JabChapter_3&amp;diff=1846&amp;oldid=prev"/>
				<updated>2006-10-07T10:03:30Z</updated>
		
		<summary type="html">&lt;p&gt;insert content template&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 10:03, 7 October 2006&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;{{Content Programming Jabber}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=Installing the Jabber Server=&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=Installing the Jabber Server=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This chapter explains what you have to do to&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This chapter explains what you have to do to&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;obtain, install, configure, and start up a Jabber server of your own&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;obtain, install, configure, and start up a Jabber server of your own&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>KruegerN</name></author>	</entry>

	<entry>
		<id>http://commons.oreilly.com/wiki/index.php?title=JabChapter_3&amp;diff=1611&amp;oldid=prev</id>
		<title>Mikeh: /* jabberd Command-Line Switches */</title>
		<link rel="alternate" type="text/html" href="http://commons.oreilly.com/wiki/index.php?title=JabChapter_3&amp;diff=1611&amp;oldid=prev"/>
				<updated>2006-09-13T19:06:15Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;jabberd Command-Line Switches&lt;/span&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 19:06, 13 September 2006&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 444:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 444:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{|&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{|&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Command-line switches -&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;|+ &lt;/del&gt;Command-line switches -&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;! Switch !! Relating to !! Description&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;! Switch !! Relating to !! Description&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| -c || Alternate configuration || Use this to specify an alternative configuration file if you don't want to use jabber.xml.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| -c || Alternate configuration || Use this to specify an alternative configuration file if you don't want to use jabber.xml.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| -D || Debugging info || Specifying this switch will cause (a large&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| -D || Debugging info || Specifying this switch will cause (a large amount of) debugging information to be sent to STDERR.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;| &lt;/del&gt;amount of) debugging information to be sent to STDERR.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| -h || Hostname || The hostname of the Jabber server.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| -h || Hostname || The hostname of the Jabber server.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 457:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 455:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| -H || Home folder || Used to specify &amp;quot;home&amp;quot; folder or directory.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| -H || Home folder || Used to specify &amp;quot;home&amp;quot; folder or directory.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| -s || Spool area || The directory where the Jabber server stores data&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| -s || Spool area || The directory where the Jabber server stores data via the xdb_file module.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;| &lt;/del&gt;via the xdb_file module.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| -v || Show version || Reports Jabber server version and exits.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| -v || Show version || Reports Jabber server version and exits.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wikicontent:diff:version:1.11a:oldid:1610:newid:1611 --&gt;
&lt;/table&gt;</summary>
		<author><name>Mikeh</name></author>	</entry>

	<entry>
		<id>http://commons.oreilly.com/wiki/index.php?title=JabChapter_3&amp;diff=1610&amp;oldid=prev</id>
		<title>Mikeh: /* jabberd Command-Line Switches */</title>
		<link rel="alternate" type="text/html" href="http://commons.oreilly.com/wiki/index.php?title=JabChapter_3&amp;diff=1610&amp;oldid=prev"/>
				<updated>2006-09-13T19:05:19Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;jabberd Command-Line Switches&lt;/span&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 19:05, 13 September 2006&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 443:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 443:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{|&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{|&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|+ Command-line switches -&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|+ Command-line switches -&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;! Switch !! Relating to !! Description&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;! Switch !! Relating to !! Description&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| -c || Alternate configuration || Use this to specify an alternative &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| -c || Alternate configuration || Use this to specify an alternative configuration file if you don't want to use jabber.xml.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;| &lt;/del&gt;configuration file if you don't want to use jabber.xml.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| -D || Debugging info || Specifying this switch will cause (a large&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| -D || Debugging info || Specifying this switch will cause (a large&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wikicontent:diff:version:1.11a:oldid:1609:newid:1610 --&gt;
&lt;/table&gt;</summary>
		<author><name>Mikeh</name></author>	</entry>

	<entry>
		<id>http://commons.oreilly.com/wiki/index.php?title=JabChapter_3&amp;diff=1609&amp;oldid=prev</id>
		<title>Mikeh: /* jabberd Command-Line Switches */</title>
		<link rel="alternate" type="text/html" href="http://commons.oreilly.com/wiki/index.php?title=JabChapter_3&amp;diff=1609&amp;oldid=prev"/>
				<updated>2006-09-13T19:04:39Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;jabberd Command-Line Switches&lt;/span&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 19:04, 13 September 2006&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 448:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 448:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;! Switch !! Relating to !! Description&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;! Switch !! Relating to !! Description&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| -c || Alternate configuration || Use this to specify an alternative&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| -c || Alternate configuration || Use this to specify an alternative &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| configuration file if you don't want to use jabber.xml.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| configuration file if you don't want to use jabber.xml.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wikicontent:diff:version:1.11a:oldid:1608:newid:1609 --&gt;
&lt;/table&gt;</summary>
		<author><name>Mikeh</name></author>	</entry>

	<entry>
		<id>http://commons.oreilly.com/wiki/index.php?title=JabChapter_3&amp;diff=1608&amp;oldid=prev</id>
		<title>Mikeh at 19:00, 13 September 2006</title>
		<link rel="alternate" type="text/html" href="http://commons.oreilly.com/wiki/index.php?title=JabChapter_3&amp;diff=1608&amp;oldid=prev"/>
				<updated>2006-09-13T19:00:12Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=Installing the Jabber Server=&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This chapter explains what you have to do to&lt;br /&gt;
obtain, install, configure, and start up a Jabber server of your own&lt;br /&gt;
with the minimum of fuss.&lt;br /&gt;
&lt;br /&gt;
It's certainly possible to learn about the Jabber protocols and&lt;br /&gt;
technology and develop solutions using someone else's Jabber server, but&lt;br /&gt;
for real understanding and control, it's definitely worth setting up one&lt;br /&gt;
of your own. By installing and configuring a Jabber server, you will&lt;br /&gt;
gain a valuable insight into how it and its components work together.&lt;br /&gt;
Understanding how components are controlled and configured allows us to&lt;br /&gt;
build Jabber solutions in the context of the &amp;quot;big picture.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Installations of earlier versions (1.0, 1.2) of the Jabber server were&lt;br /&gt;
often complex affairs, and while the installation process has become&lt;br /&gt;
much more straightforward, some people still shrink back from installing&lt;br /&gt;
and configuring their own. This chapter shows how straightforward it is.&lt;br /&gt;
&lt;br /&gt;
If you already have a server set up, you might want to skip this chapter&lt;br /&gt;
and go on to Chapter 4, where the configuration and system architecture&lt;br /&gt;
are explained in more detail.&lt;br /&gt;
&lt;br /&gt;
Although the Jabber development platform is Linux, the Jabber server&lt;br /&gt;
will compile and run on many flavors of Unix, including FreeBSD,&lt;br /&gt;
Solaris, AIX, and IRIX.&amp;lt;ref&amp;gt;In fact, the next patch level version of the&lt;br /&gt;
Jabber server, 1.4.2, which is available already, has the modifications&lt;br /&gt;
necessary for it to be compilable under Mac OS X. &amp;lt;/ref&amp;gt; Versions of the&lt;br /&gt;
C compiler and make utility from the GNU project (at http://www.gnu.org)&lt;br /&gt;
are recommended if you don't already have them installed.&lt;br /&gt;
&lt;br /&gt;
The examples shown in this and other chapters are taken from Linux&lt;br /&gt;
platforms (various Slackware and Red Hat distributions with 2.2 and 2.4&lt;br /&gt;
kernel versions); consult your local documentation for equivalent&lt;br /&gt;
commands on your Unix OS.&lt;br /&gt;
&lt;br /&gt;
The incarnation of the Jabber server at the time of writing is Version&lt;br /&gt;
1.4, more specifically 1.4.1. Version 1.4 represents a major advance in&lt;br /&gt;
the server code and brings increases in performance and reliability over&lt;br /&gt;
earlier versions. Jabber server Version 1.4.1 is the one we will obtain&lt;br /&gt;
and install here, and this will be used as the server for the recipes in&lt;br /&gt;
the rest of this book.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Downloading the Jabber Server== &lt;br /&gt;
&amp;lt;br&amp;gt;The Jabber server package can be&lt;br /&gt;
obtained from the Jabber project site, http://www.jabber.org; the 1.4.1&lt;br /&gt;
version is available in the downloads area:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;http://download.jabber.org/dists/1.4/final/jabber-1.4.1.tar.&lt;br /&gt;
gz&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;The tarball jabber-1.4.1.tar.gz contains everything that&lt;br /&gt;
you need to get a Jabber server up and running.&amp;lt;ref&amp;gt;If you want the&lt;br /&gt;
Jabber server to support SSL connections, you will need to have&lt;br /&gt;
installed an SSL package; see the next chapter for more details. &amp;lt;/ref&amp;gt; &lt;br /&gt;
Previous versions of the Jabber server came in multiple packages; it was&lt;br /&gt;
necessary to separately obtain and install GNU's portable threads&lt;br /&gt;
library (pth) and the asynchronous DNS package (ADNS), as well as&lt;br /&gt;
obtaining and installing various Jabber-specific libraries such as&lt;br /&gt;
libxode, libjabber, and libetherx. Now some of these libraries and&lt;br /&gt;
packages have become obsolete as far as the Jabber server is concerned&lt;br /&gt;
(ADNS and libetherx) and others have been combined into the main Jabber&lt;br /&gt;
server tarball.&lt;br /&gt;
&lt;br /&gt;
If you don't want to compile the server yourself, you can also download&lt;br /&gt;
prebuilt binaries for some of the platforms already mentioned, from&lt;br /&gt;
http://download.jabber.org.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing the Server== &lt;br /&gt;
&amp;lt;br&amp;gt;Once you have downloaded the Jabber server&lt;br /&gt;
tarball, you need to unpack it, configure the build environment, and&lt;br /&gt;
compile the server. The general idea is that the Jabber server will be&lt;br /&gt;
compiled and run from wherever you decide to unpack it; that is, there&lt;br /&gt;
is no separate &amp;quot;install&amp;quot; step.&lt;br /&gt;
&lt;br /&gt;
For this reason, and because it's also often useful to be able to&lt;br /&gt;
install and start up a different version of the Jabber server for&lt;br /&gt;
testing and comparisons, create a generic jabber directory somewhere&lt;br /&gt;
central but local, for example in /usr/local/:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;| yak:/usr/local# &amp;lt;tt&amp;gt;mkdir jabber&amp;lt;/tt&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Jabber server does not need to be and should not be run as ''root'';&lt;br /&gt;
so create a new user ''jabber'' (group ''jabber'') to be used as the&lt;br /&gt;
Jabber server administrator and make that user the owner of the generic&lt;br /&gt;
Jabber server directory:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;| yak:/usr/local# &amp;lt;tt&amp;gt;groupadd jabber&amp;lt;/tt&amp;gt; yak:/usr/local#&lt;br /&gt;
&amp;lt;tt&amp;gt;useradd -g jabber -d /usr/local/jabber jabber&amp;lt;/tt&amp;gt; yak:/usr/local#&lt;br /&gt;
&amp;lt;tt&amp;gt;passwd jabber&amp;lt;/tt&amp;gt; Changing password for jabber Enter the new&lt;br /&gt;
password (minimum of 5, maximum of 127 characters) Please use a&lt;br /&gt;
combination of upper and lower case letters and numbers. New password:&lt;br /&gt;
&amp;lt;tt&amp;gt;********&amp;lt;/tt&amp;gt; Re-enter new password: &amp;lt;tt&amp;gt;********&amp;lt;/tt&amp;gt; Password&lt;br /&gt;
changed. yak:/usr/local# &amp;lt;tt&amp;gt;chown jabber:jabber jabber&amp;lt;/tt&amp;gt;&lt;br /&gt;
yak:/usr/local#&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you've created the generic Jabber server directory, switch to the&lt;br /&gt;
new Jabber server administration user ''jabber'', unpack the tarball you&lt;br /&gt;
downloaded, and enter the resulting directory:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;| yak:/usr/local# &amp;lt;tt&amp;gt;su - jabber&amp;lt;/tt&amp;gt; yak:~$ &amp;lt;tt&amp;gt;tar xzf&lt;br /&gt;
jabber-1.4.1.tar.gz&amp;lt;/tt&amp;gt; yak:~$ &amp;lt;tt&amp;gt;cd jabber-1.4.1/&amp;lt;/tt&amp;gt;&lt;br /&gt;
yak:~/jabber-1.4.1$&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Running the Configure Server === &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Examining the contents of the&lt;br /&gt;
jabber-1.4.1 directory, we see the following files:&lt;br /&gt;
&lt;br /&gt;
* configure (the configuration script) &amp;lt;br&amp;gt;&lt;br /&gt;
* jabber.xml (the server configuration file) &amp;lt;br&amp;gt;&lt;br /&gt;
* Makefile (for compiling the Jabber server) &amp;lt;br&amp;gt;&lt;br /&gt;
* README (some basic instructions) &amp;lt;br&amp;gt;&lt;br /&gt;
* UPGRADE (information on upgrading from an earlier server version) as well as a number of directories that contain the source code.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first step is to run the configure script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;| yak:~/jabber-1.4.1$ &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to determine your platform's compiler settings.&lt;br /&gt;
&lt;br /&gt;
If you want SSL support in the Jabber server, run the script with the&lt;br /&gt;
--enable-ssl switch:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;| yak:~/jabber-1.4.1$ &amp;lt;tt&amp;gt;./configure --enable-ssl&amp;lt;/tt&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you specified the --enable-ssl switch, the configure script looks for&lt;br /&gt;
your SSL installation and adds the appropriate compiler flags. If it&lt;br /&gt;
doesn't find your SSL installation, it says so and your Jabber server is&lt;br /&gt;
compiled ''without'' SSL support.&lt;br /&gt;
&lt;br /&gt;
Next, it will try to determine whether you have pth installed and if so&lt;br /&gt;
will use the pth-config command to glean the extra compiler options for&lt;br /&gt;
building the Jabber server. pth is required, so if it ''isn't'' already&lt;br /&gt;
installed, it will be set up within your current jabber-1.4.1 directory&lt;br /&gt;
tree (as pth is included in the jabber-1.4.1.tar.gz tarball) and the&lt;br /&gt;
appropriate compiler options added.&lt;br /&gt;
&lt;br /&gt;
If pth is set up during the course of running configure, you may see a&lt;br /&gt;
message: &amp;quot;&amp;lt;tt&amp;gt;Now please type 'make' to compile. Good luck.&amp;lt;/tt&amp;gt;&amp;quot;, which&lt;br /&gt;
comes at the end of the pth configure procedure; you can ignore this&lt;br /&gt;
because there is only one make step, for the Jabber server, that must be&lt;br /&gt;
carried out as we are merely preparing the pth build environment for&lt;br /&gt;
binding into the Jabber Server build.&lt;br /&gt;
&lt;br /&gt;
Finally, after extra platform-specific compiler settings are determined,&lt;br /&gt;
a shell script to set the build environment variables is created with&lt;br /&gt;
the name platform-settings. This is used in the next step.&lt;br /&gt;
&lt;br /&gt;
Example 3-1 shows typical output from the configure script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Typical output from configure''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;| Running Jabber Configure ========================&lt;br /&gt;
&lt;br /&gt;
Getting pth settings...         Done. Setting Build Parameters...    &lt;br /&gt;
Done. Generating Settings Script...   Done.&lt;br /&gt;
&lt;br /&gt;
You may now type 'make' to build your new Jabber system.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Running make=== &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Once the platform settings have been determined by&lt;br /&gt;
the configure script, we are ready to build the Jabber server with make:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;| yak:~/jabber-1.4.1$ &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example 3-2 shows abbreviated typical output from the make command.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Typical output from make''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;| Making all in pthsock make[1]: Entering directory&lt;br /&gt;
`/usr/local/jabber/jabber-1.4.1/pthsock' gcc -g -Wall -fPIC -I. -I..&lt;br /&gt;
-I/usr/local/include -I../jabberd/   -c client.c -o client.o gcc -g&lt;br /&gt;
-Wall -fPIC -I. -I.. -I/usr/local/include -I../jabberd/ -shared -o&lt;br /&gt;
pthsoc k_client.so client.o -L/usr/local/lib -lpth -ldl -lresolv&lt;br /&gt;
make[1]: Leaving directory `/usr/local/jabber/jabber-1.4.1/pthsock'&lt;br /&gt;
Making all in xdb_file make[1]: Entering directory&lt;br /&gt;
`/usr/local/jabber/jabber-1.4.1/xdb_file' gcc -g -Wall -fPIC -I. -I..&lt;br /&gt;
-I/usr/local/include -I../jabberd   -c xdb_file.c -o xdb_file.o&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
gcc -g -Wall -fPIC -I. -I.. -I/usr/local/include&lt;br /&gt;
-DHOME=&amp;quot;\&amp;quot;/usr/local/jabber/jab ber-1.4.1\&amp;quot;&amp;quot;&lt;br /&gt;
-DCONFIGXML=&amp;quot;\&amp;quot;jabber.xml\&amp;quot;&amp;quot; -o jabberd config.o mio.o mio_raw.o mi&lt;br /&gt;
o_xml.o mio_ssl.o deliver.o heartbeat.o jabberd.o load.o xdb.o mtq.o&lt;br /&gt;
static.o lo g.o lib/expat.o lib/genhash.o lib/hashtable.o lib/jid.o&lt;br /&gt;
lib/jpacket.o lib/jutil. o lib/karma.o lib/pool.o lib/pproxy.o&lt;br /&gt;
lib/rate.o lib/sha.o lib/snprintf.o lib/so cket.o lib/str.o&lt;br /&gt;
lib/xmlnode.o lib/xmlparse.o lib/xmlrole.o lib/xmltok.o lib/xst ream.o&lt;br /&gt;
lib/xhash.o base/base_connect.o base/base_dynamic.o base/base_exec.o base&lt;br /&gt;
/base_stdout.o base/base_accept.o base/base_file.o base/base_format.o&lt;br /&gt;
/base/base_&lt;br /&gt;
stderr.o base/base_to.o -Wl,--export-dynamic -L/usr/local/lib -lpth -ldl&lt;br /&gt;
-lresol v make[2]: Leaving directory&lt;br /&gt;
`/usr/local/jabber/jabber-1.4.1/jabberd' make[1]: Leaving directory&lt;br /&gt;
`/usr/local/jabber/jabber-1.4.1/jabberd' make[1]: Entering directory&lt;br /&gt;
`/usr/local/jabber/jabber-1.4.1' make[1]: Nothing to be done for&lt;br /&gt;
`all-local'. make[1]: Leaving directory&lt;br /&gt;
`/usr/local/jabber/jabber-1.4.1'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Sidebar|Running from the Build Environment?You may be wondering where&lt;br /&gt;
the make install step is—there isn't one. The Jabber server is run from&lt;br /&gt;
within its build environment. One of the reasons for this is that&lt;br /&gt;
additional components, such as transports, which may be installed at any&lt;br /&gt;
time after the basic server installation, must be compiled with&lt;br /&gt;
reference to various Jabber server header file information. One of the&lt;br /&gt;
simplest ways of making this happen is to have the source for those&lt;br /&gt;
components unpacked in a subdirectory within the jabber-1.4.1 directory&lt;br /&gt;
tree, and at compilation time component-level references to header files&lt;br /&gt;
at the Jabber server level can be made using relative directory names&lt;br /&gt;
that point back up the directory hierarchy.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Configuring the Jabber Server== &lt;br /&gt;
&amp;lt;br&amp;gt;The nature and behavior of a Jabber&lt;br /&gt;
server is controlled by the contents of a configuration file (with a&lt;br /&gt;
default name of jabber.xml), which you will find in the jabber-1.4.1&lt;br /&gt;
directory. As you can probably guess from the filename's extension, the&lt;br /&gt;
configuration is formatted in XML, which offers a very powerful way of&lt;br /&gt;
expressing the nature and features of your Jabber server and associated&lt;br /&gt;
services and components.&lt;br /&gt;
&lt;br /&gt;
Details on how to navigate, interpret, and edit this configuration file&lt;br /&gt;
are given in Chapter 4; here we will just look at the basic settings&lt;br /&gt;
that can be modified before you start up the Jabber server.&lt;br /&gt;
&lt;br /&gt;
For an experimental Jabber server (such as for the purposes of this&lt;br /&gt;
book), there isn't actually anything you ''need'' to change in the&lt;br /&gt;
configuration. The out-of-the-box configuration settings are pretty much&lt;br /&gt;
what we need in order to experiment with our recipes later in the book;&lt;br /&gt;
nevertheless, let's look at some of the settings you may wish to change&lt;br /&gt;
right now:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Server hostname&lt;br /&gt;
: The &amp;lt;tt&amp;gt;&amp;amp;lt;host/&amp;amp;gt;&amp;lt;/tt&amp;gt; parameter specifies the Jabber server's&lt;br /&gt;
: hostname. As delivered, the jabber.xml configuration has this set to&lt;br /&gt;
: localhost: : &lt;br /&gt;
&amp;lt;code&amp;gt;|&amp;amp;lt;host&amp;amp;gt;&amp;amp;lt;jabberd:cmdline&lt;br /&gt;
flag=&amp;quot;h&amp;quot;&amp;amp;gt;localhost&amp;amp;lt;/jabberd:cmdline&amp;amp;gt;&amp;amp;lt;/host&amp;amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
: You can change this to the name of your server hostname; in the case&lt;br /&gt;
: of our examples, this would be yak. : The localhost setting occurs&lt;br /&gt;
: elsewhere in the configuration too—as a literal in the welcome message&lt;br /&gt;
: that is sent to users after a successful registration with the server.&lt;br /&gt;
: You may wish to replace this occurrence of localhost; furthermore, you&lt;br /&gt;
: will find other occurrences, but they are within sections of the&lt;br /&gt;
: configuration that are commented out in the standard delivered version&lt;br /&gt;
: of jabber.xml (specifically, administration JIDs and definitions for&lt;br /&gt;
: various add-on agents and transports; we will cover these in the next&lt;br /&gt;
: chapter). : One other place that localhost occurs is in the&lt;br /&gt;
: &amp;lt;tt&amp;gt;&amp;amp;lt;update/&amp;amp;gt;&amp;lt;/tt&amp;gt; section, which is explained next. &lt;br /&gt;
; Server software update notification mechanism&lt;br /&gt;
: The Jabber server development team offers a facility for servers to&lt;br /&gt;
: check for updated versions of the Jabber server software. The facility&lt;br /&gt;
: is addressed with this configuration setting: : &lt;br /&gt;
&amp;lt;code&amp;gt;|&amp;amp;lt;update&amp;amp;gt;&amp;amp;lt;jabberd:cmdline&lt;br /&gt;
flag=&amp;quot;h&amp;quot;&amp;amp;gt;localhost&amp;amp;lt;/jabberd:cmdline&amp;amp;gt;&amp;amp;lt;/update&amp;amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
: which causes a versioning module, mod_version, in the Jabber Session&lt;br /&gt;
: Manager (JSM), to send a &amp;lt;tt&amp;gt;&amp;amp;lt;presence/&amp;amp;gt;&amp;lt;/tt&amp;gt; packet (which&lt;br /&gt;
: carries the server version—in our case, 1.4.1) from the server to the&lt;br /&gt;
: Jabber ID ''jsm@update.jabber.org'' when the Jabber server starts up.&lt;br /&gt;
: : If your server is purely internal, and/or behind a firewall, it&lt;br /&gt;
: makes no sense to have this facility switched on (you can check for&lt;br /&gt;
: updates to the server on the http://www.jabber.org web site) as the&lt;br /&gt;
: &amp;lt;tt&amp;gt;&amp;amp;lt;presence/&amp;amp;gt;&amp;lt;/tt&amp;gt; packet will never reach its intended&lt;br /&gt;
: destination. You can comment it out like this: : &lt;br /&gt;
&amp;lt;code&amp;gt;|&amp;amp;lt;!-- &amp;amp;lt;update&amp;amp;gt;&amp;amp;lt;jabberd:cmdline&lt;br /&gt;
flag=&amp;quot;h&amp;quot;&amp;amp;gt;localhost&amp;amp;lt;/jabberd:cmdline&amp;amp;gt;&amp;amp;lt;/update&amp;amp;gt; --&amp;amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Automatic user directory update&lt;br /&gt;
: The configuration as delivered contains a directive: : &lt;br /&gt;
&amp;lt;code&amp;gt;|&amp;amp;lt;vcard2jud/&amp;amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
: which means that any vCard data—a vCard is a virtual &amp;quot;business card&amp;quot;&lt;br /&gt;
: containing contact information and so on—that is maintained by a&lt;br /&gt;
: Jabber client will be automatically passed on to the central user&lt;br /&gt;
: directory (the Jabber User Directory, or JUD), defined elsewhere in&lt;br /&gt;
: the jabber.xml as the one at ''jabber.org'', ''users.jabber.org''. :&lt;br /&gt;
: If you've commented out the update notification mechanism because&lt;br /&gt;
: you're not going to be able to (or want to) reach the servers at&lt;br /&gt;
: ''jabber.org'', then you might as well comment this out to avoid error&lt;br /&gt;
: messages being sent to Jabber clients when vCard data is modified:  : &lt;br /&gt;
&amp;lt;code&amp;gt;|&amp;amp;lt;!-- &amp;amp;lt;vcard2jud/&amp;amp;gt; --&amp;amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
: Alternatively, instead of commenting out the&lt;br /&gt;
: &amp;lt;tt&amp;gt;&amp;amp;lt;vcard2jud/&amp;amp;gt;&amp;lt;/tt&amp;gt;, you could comment out the definition of&lt;br /&gt;
: the JUD service in the &amp;lt;tt&amp;gt;&amp;amp;lt;browse/&amp;amp;gt;&amp;lt;/tt&amp;gt; section: : &lt;br /&gt;
&amp;lt;code&amp;gt;|&amp;amp;lt;!-- &amp;amp;lt;service type=&amp;quot;jud&amp;quot; jid=&amp;quot;users.jabber.org&amp;quot;&lt;br /&gt;
name=&amp;quot;Jabber User Directory&amp;quot;&amp;amp;gt; &amp;amp;lt;ns&amp;amp;gt;jabber:iq:search&amp;amp;lt;/ns&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;ns&amp;amp;gt;jabber:iq:register&amp;amp;lt;/ns&amp;amp;gt; &amp;amp;lt;/service&amp;amp;gt; --&amp;amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
: because the mechanism looks in the &amp;lt;tt&amp;gt;&amp;amp;lt;browse/&amp;amp;gt;&amp;lt;/tt&amp;gt; section&lt;br /&gt;
: for a reference to a JUD service; if there isn't one there, no vCard&lt;br /&gt;
: update will be sent. &lt;br /&gt;
{{Note|Some Jabber clients such as Jabber Instant Messenger (JIM)&lt;br /&gt;
require vCard information to be entered when registering for a new&lt;br /&gt;
account, which means that an attempt to contact ''users.jabber.org''&lt;br /&gt;
would be made the first time a user connects.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
You may have noticed that the values for each of these two settings&lt;br /&gt;
(&amp;lt;tt&amp;gt;&amp;amp;lt;host/&amp;amp;gt;&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;&amp;amp;lt;update/&amp;amp;gt;&amp;lt;/tt&amp;gt;) were wrapped in&lt;br /&gt;
another tag:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;|&amp;amp;lt;jabberd:cmdline flag=&amp;quot;h&amp;quot;&amp;amp;gt;...&amp;amp;lt;/jabberd:cmdline&amp;amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This means that you can override the setting with a command-line switch&lt;br /&gt;
(or &amp;quot;flag&amp;quot;), in this case -h. So, in fact, you don't even need to modify&lt;br /&gt;
the jabber.xml configuration at all, if you specify your hostname when&lt;br /&gt;
you start the server up (the welcome message will not be changed, of&lt;br /&gt;
course).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Starting and Stopping the Jabber Server== &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
At this stage, we have a&lt;br /&gt;
Jabber server with enough basic configuration to be able to start it up&lt;br /&gt;
and have it do something useful (like accept client connections). If&lt;br /&gt;
you're curious about the rest of the configuration you encountered while&lt;br /&gt;
editing the jabber.xml file, you can jump to Chapter 4. Otherwise, let's&lt;br /&gt;
start it up!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Starting the Server=== &lt;br /&gt;
&amp;lt;br&amp;gt;The basic invocation looks like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;| yak:~/jabber-1.4.1$ &amp;lt;tt&amp;gt;./jabberd/jabberd&amp;lt;/tt&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
but if you haven't bothered to change localhost anywhere in the&lt;br /&gt;
configuration (as described earlier), you can use the -h switch to&lt;br /&gt;
specify the hostname:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;| yak:~/jabber-1.4.1$ &amp;lt;tt&amp;gt;./jabberd/jabberd -h yak&amp;lt;/tt&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As it stands, there's a directive in the standard jabber.xml&lt;br /&gt;
configuration file that specifies that any server error messages are to&lt;br /&gt;
be written out to STDERR:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;|&amp;amp;lt;log id='elogger'&amp;amp;gt; &amp;amp;lt;host/&amp;amp;gt; &amp;amp;lt;logtype/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;format&amp;amp;gt;%d: [%t] (%h): %s&amp;amp;lt;/format&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;file&amp;amp;gt;error.log&amp;amp;lt;/file&amp;amp;gt; &amp;lt;tt&amp;gt;&amp;amp;lt;stderr/&amp;amp;gt;&amp;lt;/tt&amp;gt; &amp;amp;lt;/log&amp;amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So either comment the directive out:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;|&amp;amp;lt;!-- &amp;amp;lt;stderr/&amp;amp;gt; --&amp;amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
 Or redirect STDERR to /dev/null:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;| yak:~/jabber-1.4.1$ &amp;lt;tt&amp;gt;./jabberd/jabberd -h yak&lt;br /&gt;
2&amp;amp;gt;/dev/null&amp;lt;/tt&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You won't lose the error messages—as you can see they're also written to&lt;br /&gt;
the error.log file.&lt;br /&gt;
&lt;br /&gt;
Assuming you wish to free up the terminal session after starting the&lt;br /&gt;
server, you can send it to the background:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;| yak:~/jabber-1.4.1$ &amp;lt;tt&amp;gt;./jabberd/jabberd -h yak 2&amp;amp;gt;/dev/null&lt;br /&gt;
&amp;amp;amp;&amp;lt;/tt&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Connecting a Client=== &lt;br /&gt;
&amp;lt;br&amp;gt;Once the server is started, you're ready to&lt;br /&gt;
start up a client and make a connection. The thing to remember at this&lt;br /&gt;
point, when specifying which server to connect to, is to use the same&lt;br /&gt;
hostname as you specified in the &amp;lt;tt&amp;gt;&amp;amp;lt;host/&amp;amp;gt;&amp;lt;/tt&amp;gt; part of the&lt;br /&gt;
configuration, described earlier in Section 3.3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|If your client supports the &amp;lt;tt&amp;gt;&amp;amp;lt;alias/&amp;amp;gt;&amp;lt;/tt&amp;gt; mechanism,&lt;br /&gt;
described in Section 4.6.3 in Chapter 4, this may not be necessary.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Stopping the Server=== &lt;br /&gt;
&amp;lt;br&amp;gt;To stop the server, just kill the processes,&lt;br /&gt;
and it will shut down:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;| yak:~/jabber-1.4.1$ &amp;lt;tt&amp;gt;killall jabberd&amp;lt;/tt&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
or:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;| yak:~/jabber-1.4.1$ &amp;lt;tt&amp;gt;kill `cat jabber.pid`&amp;lt;/tt&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== jabberd Command-Line Switches === &lt;br /&gt;
&amp;lt;br&amp;gt;We've seen the -h switch to&lt;br /&gt;
specify the host when starting the server up. There are other switches&lt;br /&gt;
available on the command line, too; they are listed in Table 3-1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
&lt;br /&gt;
|+ Command-line switches -&lt;br /&gt;
! Switch !! Relating to !! Description&lt;br /&gt;
|-&lt;br /&gt;
| -c || Alternate configuration || Use this to specify an alternative&lt;br /&gt;
| configuration file if you don't want to use jabber.xml.&lt;br /&gt;
|-&lt;br /&gt;
| -D || Debugging info || Specifying this switch will cause (a large&lt;br /&gt;
| amount of) debugging information to be sent to STDERR.&lt;br /&gt;
|-&lt;br /&gt;
| -h || Hostname || The hostname of the Jabber server.&lt;br /&gt;
|-&lt;br /&gt;
| -H || Home folder || Used to specify &amp;quot;home&amp;quot; folder or directory.&lt;br /&gt;
|-&lt;br /&gt;
| -s || Spool area || The directory where the Jabber server stores data&lt;br /&gt;
| via the xdb_file module.&lt;br /&gt;
|-&lt;br /&gt;
| -v || Show version || Reports Jabber server version and exits.&lt;br /&gt;
|-&lt;br /&gt;
| -V || Show version || Same as -v.&lt;br /&gt;
|-&lt;br /&gt;
| -Z || Debugging info || Limits the debugging information to certain&lt;br /&gt;
| &amp;quot;zones&amp;quot; (comma-separated).&amp;lt;ref&amp;gt;The &amp;quot;zones&amp;quot; are the filenames that&lt;br /&gt;
| immediately follow the timestamp in the debug log records, for&lt;br /&gt;
| example, xdb_file or deliver. Specifying one or more zones will limit&lt;br /&gt;
| debug output to lines that pertain to those zones. &amp;lt;/ref&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
	Starting the Jabber server with any unrecognized switches will cause&lt;br /&gt;
	it to show you a list of valid switches:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;| [yak: ~/jabber-1.4.1]$ &amp;lt;tt&amp;gt;./jabberd/jabberd -badswitch&amp;lt;/tt&amp;gt;&lt;br /&gt;
Usage: jabberd &amp;amp;amp; Optional Parameters: -c             configuration&lt;br /&gt;
file -D             enable debug output -H             location of home&lt;br /&gt;
folder -v             server version -V             server version&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Yes, the list that it shows isn't complete. If the common switch -h were&lt;br /&gt;
present in the list, we could almost consider the unlisted switches as&lt;br /&gt;
undocumented, but it isn't present, so we won't.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Monitoring and Troubleshooting the Server== &lt;br /&gt;
&amp;lt;br&amp;gt;We've already seen a&lt;br /&gt;
glimpse of the configuration relating to logging of messages in the&lt;br /&gt;
previous section. As standard, the Jabber server configuration describes&lt;br /&gt;
two types of logging record and a recipient file for each type:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Error logging&lt;br /&gt;
: Error log records are written to error.log in the current directory,&lt;br /&gt;
: as determined thus: : &lt;br /&gt;
&amp;lt;code&amp;gt;|&amp;amp;lt;log id='elogger'&amp;amp;gt; &amp;amp;lt;host/&amp;amp;gt; &amp;amp;lt;logtype/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;format&amp;amp;gt;%d: [%t] (%h): %s&amp;amp;lt;/format&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;file&amp;amp;gt;&amp;lt;tt&amp;gt;error.log&amp;lt;/tt&amp;gt;&amp;amp;lt;/file&amp;amp;gt; &amp;amp;lt;stderr/&amp;amp;gt; &amp;amp;lt;/log&amp;amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Statistical logging&lt;br /&gt;
: Statistical log records used for tracking purposes are written to&lt;br /&gt;
: record.log in the current directory, as determined thus: : &lt;br /&gt;
&amp;lt;code&amp;gt;|&amp;amp;lt;log id='rlogger'&amp;amp;gt; &amp;amp;lt;host/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;logtype&amp;amp;gt;record&amp;amp;lt;/logtype&amp;amp;gt; &amp;amp;lt;format&amp;amp;gt;%d %h&lt;br /&gt;
%s&amp;amp;lt;/format&amp;amp;gt; &amp;amp;lt;file&amp;amp;gt;&amp;lt;tt&amp;gt;record.log&amp;lt;/tt&amp;gt;&amp;amp;lt;/file&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/log&amp;amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
: Log records of this type are written when a client connects to the&lt;br /&gt;
: server and when a client disconnects. Furthermore, we can use the&lt;br /&gt;
: debugging switch (-D) when we start the server and have debugging and&lt;br /&gt;
: trace output written to STDERR. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===If Your Server Doesn't Start=== &lt;br /&gt;
&amp;lt;br&amp;gt;A number of likely candidates might&lt;br /&gt;
have prevented your server from starting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Bad XML configuration&lt;br /&gt;
: It is not difficult to make errors (typographical or otherwise) in the&lt;br /&gt;
: server configuration. The first line of defense is to be careful when&lt;br /&gt;
: editing your jabber.xml file. After that, the Jabber server isn't&lt;br /&gt;
: going to be too forthcoming with information if you have broken the&lt;br /&gt;
: well-formedness of the XML: : &lt;br /&gt;
&amp;lt;code&amp;gt;| yak:~/jabber-1.4.1$ &amp;lt;tt&amp;gt;./jabberd/jabberd -h yak&amp;lt;/tt&amp;gt;&lt;br /&gt;
Configuration parsing using jabber.xml failed&amp;lt;/code&amp;gt;&lt;br /&gt;
: Help is at hand in the shape of Perl and the &amp;lt;tt&amp;gt;XML::Parser&amp;lt;/tt&amp;gt;&lt;br /&gt;
: module, which is a wrapper around the XML parser, expat. : Providing&lt;br /&gt;
: you have Perl and the &amp;lt;tt&amp;gt;XML::Parser&amp;lt;/tt&amp;gt; module installed, you can&lt;br /&gt;
: get expat to give you a clue where the XML is broken: : &lt;br /&gt;
&amp;lt;code&amp;gt;|yak:~/jabber-1.4.1$ perl -MXML::Parser -e&lt;br /&gt;
'XML::Parser-&amp;amp;gt;new-&amp;amp;gt;parsefile(&amp;quot;jabber.xml&amp;quot;, ErrorContext =&amp;amp;gt; 3)'&lt;br /&gt;
&lt;br /&gt;
not well-formed (invalid token) at line 47, column 35, byte 1750: be on&lt;br /&gt;
one line, the server doesn't like it otherwise! :) --&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;amp;lt;host&amp;amp;gt;&amp;amp;lt;jabberd:cmdline&lt;br /&gt;
    flag=&amp;quot;h&amp;quot;yak&amp;amp;lt;/jabberd:cmdline&amp;amp;gt;&amp;amp;lt;/host&amp;amp;gt;&lt;br /&gt;
    ==================================^&lt;br /&gt;
&lt;br /&gt;
    &amp;amp;lt;!-- This is the custom configuration section for the at&lt;br /&gt;
    /usr/local/lib/perl5/site_perl/5.6.0/i586-linux/XML/Parser.pm line&lt;br /&gt;
    185 yak:~/jabber-1.4.1$&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
: This shows us exactly where the problem is.&amp;lt;ref&amp;gt;Better highlighting of&lt;br /&gt;
: problems in parsing the configuration file is available in Version&lt;br /&gt;
: 1.4.2 of the server. You're told where the configuration is broken or&lt;br /&gt;
: if there were problems opening the file. &amp;lt;/ref&amp;gt; In this case, the&lt;br /&gt;
: close-tag symbol (&amp;amp;gt;) had been inadvertently removed when replacing&lt;br /&gt;
: localhost with yak. &lt;br /&gt;
{{Sidebar|No XML Is Bad XML!If you don't use the -c switch to specify&lt;br /&gt;
which configuration file to use, the standard jabber.xml is used. If&lt;br /&gt;
that file can't be found, you get ''exactly the same error''  as if your&lt;br /&gt;
XML was not well-formed. You've been warned!&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
; Unable to listen on port(s)&lt;br /&gt;
: Taking the standard jabber.xml configuration, the Jabber server tries&lt;br /&gt;
: to bind to and listen on two ports: 5222 (for client connections) and&lt;br /&gt;
: 5269 (for server-to-server connections). If  other processes are&lt;br /&gt;
: listening to these ports, then the Jabber server can't start and&lt;br /&gt;
: you'll see something like this in the error log: : &lt;br /&gt;
&amp;lt;code&amp;gt;| 20010407T12:11:06: [alert] (-internal): io_select unable to&lt;br /&gt;
listen on 5222 [(null)] 20010406T12:11:06: [alert] (-internal):&lt;br /&gt;
io_select unable to listen on 5269 [(null)]}}&lt;br /&gt;
: If this is the case, use the netstat command to check the status of&lt;br /&gt;
: the ports: : &lt;br /&gt;
&amp;lt;code&amp;gt;| yak:~/jabber-1.4.1$ &amp;lt;tt&amp;gt;netstat -an | grep -E '5222|5269'&amp;lt;/tt&amp;gt;&lt;br /&gt;
tcp        0      0 0.0.0.0:5269            0.0.0.0:*              &lt;br /&gt;
LISTEN tcp        0      0 0.0.0.0:5222            0.0.0.0:*            &lt;br /&gt;
  LISTEN&amp;lt;/code&amp;gt;&lt;br /&gt;
: If you see entries like this, it means that processes have been bound&lt;br /&gt;
: to these ports on ''all'' IP addresses.&amp;lt;ref&amp;gt;This &amp;quot;all&amp;quot; relates to the&lt;br /&gt;
: &amp;lt;tt&amp;gt;(null)&amp;lt;/tt&amp;gt; shown in the unable-to-listen error messages shown&lt;br /&gt;
: earlier. &amp;lt;/ref&amp;gt;  For example, if &amp;lt;tt&amp;gt;0.0.0.0:5222&amp;lt;/tt&amp;gt; is being&lt;br /&gt;
: listened to then you may have another instance of a Jabber server&lt;br /&gt;
: already running. : On some BSD systems, you cannot bind to the&lt;br /&gt;
: &amp;quot;default&amp;quot; null address; the same error messages will be issued as if&lt;br /&gt;
: the ports were already bound. In the standard jabber.xml configuration&lt;br /&gt;
: file, a bind to the null address is specified for each port as&lt;br /&gt;
: standard; you must change this and specify an explicit IP address for&lt;br /&gt;
: each of the ports in the configuration. That is, instead of: : &lt;br /&gt;
&amp;lt;code&amp;gt;|&amp;amp;lt;ip port=&amp;quot;5222&amp;quot;/&amp;amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
: do something like this: : &lt;br /&gt;
&amp;lt;code&amp;gt;|&amp;amp;lt;ip port=&amp;quot;5222&amp;quot;&amp;amp;gt;127.0.0.1&amp;amp;lt;/ip&amp;amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mikeh</name></author>	</entry>

	</feed>