</LI><LI CLASS="li-toc"><A HREF="#htoc4">Chapter 2  Installing <TT>ejabberd</TT></A>
<UL CLASS="toc"><LI CLASS="li-toc">
<A HREF="#htoc5">2.1  Installing <TT>ejabberd</TT> with Binary Installer</A>
-</LI><LI CLASS="li-toc"><A HREF="#htoc6">2.2  Installing <TT>ejabberd</TT> with Operating System specific packages</A>
+</LI><LI CLASS="li-toc"><A HREF="#htoc6">2.2  Installing <TT>ejabberd</TT> with Operating System Specific Packages</A>
</LI><LI CLASS="li-toc"><A HREF="#htoc7">2.3  Installing <TT>ejabberd</TT> with CEAN</A>
</LI><LI CLASS="li-toc"><A HREF="#htoc8">2.4  Installing <TT>ejabberd</TT> from Source Code</A>
<UL CLASS="toc"><LI CLASS="li-toc">
</LI><LI CLASS="li-toc"><A HREF="#htoc57">3.3.23  <TT>mod_version</TT></A>
</LI></UL>
</LI></UL>
-</LI><LI CLASS="li-toc"><A HREF="#htoc58">Chapter 4  Managing an <TT>ejabberd</TT> server</A>
+</LI><LI CLASS="li-toc"><A HREF="#htoc58">Chapter 4  Managing an <TT>ejabberd</TT> Server</A>
<UL CLASS="toc"><LI CLASS="li-toc">
<A HREF="#htoc59">4.1  <TT>ejabberdctl</TT></A>
<UL CLASS="toc"><LI CLASS="li-toc">
<A HREF="#htoc60">4.1.1  Commands</A>
-</LI><LI CLASS="li-toc"><A HREF="#htoc61">4.1.2  Erlang runtime system</A>
+</LI><LI CLASS="li-toc"><A HREF="#htoc61">4.1.2  Erlang Runtime System</A>
</LI></UL>
</LI><LI CLASS="li-toc"><A HREF="#htoc62">4.2  Web Admin</A>
</LI><LI CLASS="li-toc"><A HREF="#htoc63">4.3  Ad-hoc Commands</A>
<A HREF="#htoc66">5.1  Firewall Settings</A>
</LI><LI CLASS="li-toc"><A HREF="#htoc67">5.2  epmd</A>
</LI><LI CLASS="li-toc"><A HREF="#htoc68">5.3  Erlang Cookie</A>
-</LI><LI CLASS="li-toc"><A HREF="#htoc69">5.4  Erlang node name</A>
-</LI><LI CLASS="li-toc"><A HREF="#htoc70">5.5  Securing sensible files</A>
+</LI><LI CLASS="li-toc"><A HREF="#htoc69">5.4  Erlang Node Name</A>
+</LI><LI CLASS="li-toc"><A HREF="#htoc70">5.5  Securing Sensible Files</A>
</LI></UL>
</LI><LI CLASS="li-toc"><A HREF="#htoc71">Chapter 6  Clustering</A>
<UL CLASS="toc"><LI CLASS="li-toc">
</LI></UL>
</LI><LI CLASS="li-toc"><A HREF="#htoc82">Chapter 7  Debugging</A>
<UL CLASS="toc"><LI CLASS="li-toc">
-<A HREF="#htoc83">7.1  Watchdog Alerts</A>
-</LI><LI CLASS="li-toc"><A HREF="#htoc84">7.2  Log Files</A>
-</LI><LI CLASS="li-toc"><A HREF="#htoc85">7.3  Debug Console</A>
+<A HREF="#htoc83">7.1  Log Files</A>
+</LI><LI CLASS="li-toc"><A HREF="#htoc84">7.2  Debug Console</A>
+</LI><LI CLASS="li-toc"><A HREF="#htoc85">7.3  Watchdog Alerts</A>
</LI></UL>
</LI><LI CLASS="li-toc"><A HREF="#htoc86">Appendix A  Internationalization and Localization</A>
</LI><LI CLASS="li-toc"><A HREF="#htoc87">Appendix B  Release Notes</A>
This way you see the error message provided by Erlang
and can identify what is exactly the problem.</P><P>The <TT>ejabberdctl</TT> administration script is included in the <TT>bin</TT> directory.
Please refer to the section <A HREF="#ejabberdctl">4.1</A> for details about <TT>ejabberdctl</TT>,
-and configurable options to fine tune the Erlang runtime system.</P><P> <A NAME="install.os"></A> </P><!--TOC section Installing <TT>ejabberd</TT> with Operating System specific packages-->
-<H2 CLASS="section"><!--SEC ANCHOR --><A NAME="htoc6">2.2</A>  <A HREF="#install.os">Installing <TT>ejabberd</TT> with Operating System specific packages</A></H2><!--SEC END --><P> <A NAME="install.os"></A> </P><P>Some Operating Systems provide a specific <TT>ejabberd</TT> package adapted to
+and configurable options to fine tune the Erlang runtime system.</P><P> <A NAME="install.os"></A> </P><!--TOC section Installing <TT>ejabberd</TT> with Operating System Specific Packages-->
+<H2 CLASS="section"><!--SEC ANCHOR --><A NAME="htoc6">2.2</A>  <A HREF="#install.os">Installing <TT>ejabberd</TT> with Operating System Specific Packages</A></H2><!--SEC END --><P> <A NAME="install.os"></A> </P><P>Some Operating Systems provide a specific <TT>ejabberd</TT> package adapted to
the system architecture and libraries.
It usually also checks dependencies
and performs basic configuration tasks like creating the initial
GNU Make
</LI><LI CLASS="li-itemize">GCC
</LI><LI CLASS="li-itemize">Libexpat 1.95 or higher
-</LI><LI CLASS="li-itemize">Erlang/OTP R10B-9 or newer.
+</LI><LI CLASS="li-itemize">Erlang/OTP R10B-9 or higher.
</LI><LI CLASS="li-itemize">OpenSSL 0.9.6 or higher, for STARTTLS, SASL and SSL encryption. Optional, highly recommended.
</LI><LI CLASS="li-itemize">Zlib 1.2.3 or higher, for Stream Compression support (<A HREF="http://www.xmpp.org/extensions/xep-0138.html">XEP-0138</A>). Optional.
-</LI><LI CLASS="li-itemize">GNU Iconv 1.8 or higher, for the IRC Transport (mod_irc). Optional. Not needed on systems with GNU Libc.
+</LI><LI CLASS="li-itemize">Erlang mysql library. Optional. For MySQL authentication or storage. See section <A HREF="#compilemysql">3.2.1</A>.
+</LI><LI CLASS="li-itemize">Erlang pgsql library. Optional. For PostgreSQL authentication or storage. See section <A HREF="#compilepgsql">3.2.3</A>.
+</LI><LI CLASS="li-itemize">PAM library. Optional. For Pluggable Authentication Modules (PAM). See section <A HREF="#pam">3.1.4</A>.
+</LI><LI CLASS="li-itemize">GNU Iconv 1.8 or higher, for the IRC Transport (mod_irc). Optional. Not needed on systems with GNU Libc. See section <A HREF="#modirc">3.3.6</A>.
</LI></UL><P> <A NAME="download"></A> </P><!--TOC subsection Download Source Code-->
<H3 CLASS="subsection"><!--SEC ANCHOR --><A NAME="htoc10">2.4.2</A>  <A HREF="#download">Download Source Code</A></H3><!--SEC END --><P> <A NAME="download"></A>
</P><P>Released versions of <TT>ejabberd</TT> are available in the ProcessOne <TT>ejabberd</TT> downloads page:
</DD><DT CLASS="dt-description"><B><TT>msgs</TT></B></DT><DD CLASS="dd-description"> Translated strings (*.msgs)
</DD></DL>
</DD></DL>
- </DD><DT CLASS="dt-description"><B><TT>/var/log/ejabberd/</TT></B></DT><DD CLASS="dd-description"> Log files (see section <A HREF="#logfiles">7.2</A>):
+ </DD><DT CLASS="dt-description"><B><TT>/var/log/ejabberd/</TT></B></DT><DD CLASS="dd-description"> Log files (see section <A HREF="#logfiles">7.1</A>):
<DL CLASS="description"><DT CLASS="dt-description">
<B><TT>ejabberd.log</TT></B></DT><DD CLASS="dd-description"> ejabberd service log
</DD><DT CLASS="dt-description"><B><TT>sasl.log</TT></B></DT><DD CLASS="dd-description"> Erlang/OTP system log
We apologise for this inconvenience.’ to <TT>conference.example.org</TT>,
it will be displayed in all active rooms. In this example the history
feature is disabled.
-<PRE CLASS="verbatim">{acl, admins, {user, "admin", "example.org"}}.
+<PRE CLASS="verbatim">{acl, admin, {user, "admin", "example.org"}}.
-{access, muc_admins, [{allow, admins}]}.
+{access, muc_admin, [{allow, admin}]}.
{modules,
[
...
{mod_muc, [{access, all},
{access_create, all},
- {access_admin, muc_admins},
+ {access_admin, muc_admin},
{history_size, 0}]},
...
]}.
<PRE CLASS="verbatim">{acl, paying_customers, {user, "customer1", "example.net"}}.
{acl, paying_customers, {user, "customer2", "example.com"}}.
{acl, paying_customers, {user, "customer3", "example.org"}}.
-{acl, admins, {user, "admin", "example.org"}}.
+{acl, admin, {user, "admin", "example.org"}}.
-{access, muc_admins, [{allow, admins},
+{access, muc_admin, [{allow, admin},
{deny, all}]}.
{access, muc_access, [{allow, paying_customers},
- {allow, admins},
+ {allow, admin},
{deny, all}]}.
{modules,
[
...
{mod_muc, [{access, muc_access},
- {access_create, muc_admins},
- {access_admin, muc_admins}]},
+ {access_create, muc_admin},
+ {access_admin, muc_admin}]},
...
]}.
</PRE></LI><LI CLASS="li-itemize">In the following example, MUC anti abuse options are used. An
[
...
{mod_muc, [{access, muc_access},
- {access_create, muc_admins},
+ {access_create, muc_admin},
{default_room_options,
[
{allow_change_subj, false},
{title, "New chatroom"},
{anonymous, false}
]},
- {access_admin, muc_admins}]},
+ {access_admin, muc_admin}]},
...
]}.
</PRE></LI></UL><P> <A NAME="modmuclog"></A> </P><!--TOC subsection <TT>mod_muc_log</TT>-->
The default value is <TT>true</TT>.
</DD><DT CLASS="dt-description"><B><TT>iqdisc</TT></B></DT><DD CLASS="dd-description"> This specifies
the processing discipline for Software Version (<TT>jabber:iq:version</TT>) IQ queries (see section <A HREF="#modiqdiscoption">3.3.2</A>).
-</DD></DL><P> <A NAME="manage"></A> </P><!--TOC chapter Managing an <TT>ejabberd</TT> server-->
-<H1 CLASS="chapter"><!--SEC ANCHOR --><A NAME="htoc58">Chapter 4</A>  <A HREF="#manage">Managing an <TT>ejabberd</TT> server</A></H1><!--SEC END --><P> <A NAME="manage"></A> </P><P> <A NAME="ejabberdctl"></A> </P><!--TOC section <TT>ejabberdctl</TT>-->
+</DD></DL><P> <A NAME="manage"></A> </P><!--TOC chapter Managing an <TT>ejabberd</TT> Server-->
+<H1 CLASS="chapter"><!--SEC ANCHOR --><A NAME="htoc58">Chapter 4</A>  <A HREF="#manage">Managing an <TT>ejabberd</TT> Server</A></H1><!--SEC END --><P> <A NAME="manage"></A> </P><P> <A NAME="ejabberdctl"></A> </P><!--TOC section <TT>ejabberdctl</TT>-->
<H2 CLASS="section"><!--SEC ANCHOR --><A NAME="htoc59">4.1</A>  <A HREF="#ejabberdctl"><TT>ejabberdctl</TT></A></H2><!--SEC END --><P> <A NAME="ejabberdctl"></A> </P><P> <A NAME="commands"></A> </P><!--TOC subsection Commands-->
<H3 CLASS="subsection"><!--SEC ANCHOR --><A NAME="htoc60">4.1.1</A>  <A HREF="#commands">Commands</A></H3><!--SEC END --><P> <A NAME="commands"></A> </P><P>The <TT>ejabberdctl</TT> command line administration script allows to start, stop and perform
many other administrative tasks in a local or remote <TT>ejabberd</TT> server.</P><P>When <TT>ejabberdctl</TT> is executed without any parameter,
</P><DL CLASS="description"><DT CLASS="dt-description">
<B><TT>status</TT></B></DT><DD CLASS="dd-description"> Check the status of the <TT>ejabberd</TT> server.
</DD><DT CLASS="dt-description"><B><TT>stop</TT></B></DT><DD CLASS="dd-description"> Stop the <TT>ejabberd</TT> server which is running in the machine.
-</DD><DT CLASS="dt-description"><B><TT>reopen-log</TT></B></DT><DD CLASS="dd-description"> If you use a tool to rotate logs, you have to configure it
-so that this command is executed after each rotation.
+</DD><DT CLASS="dt-description"><B><TT>reopen-log</TT></B></DT><DD CLASS="dd-description"> Reopen the log files after they were renamed.
+If the old files were not renamed before calling this command,
+they are automatically renamed to <TT>"*-old.log"</TT>. See section <A HREF="#logfiles">7.1</A>.
</DD><DT CLASS="dt-description"><B><TT>backup, restore, install-fallback, dump, load</TT></B></DT><DD CLASS="dd-description"> You can use these
commands to create and restore backups.
</DD><DT CLASS="dt-description"><B><TT>import-file, import-dir</TT></B></DT><DD CLASS="dd-description">
and other codes may be used for specifical results.
This can be used by other scripts to determine automatically
if a command succedded or failed,
-for example using: <TT>echo $?</TT></P><P> <A NAME="erlangconfiguration"></A> </P><!--TOC subsection Erlang runtime system-->
-<H3 CLASS="subsection"><!--SEC ANCHOR --><A NAME="htoc61">4.1.2</A>  <A HREF="#erlangconfiguration">Erlang runtime system</A></H3><!--SEC END --><P> <A NAME="erlangconfiguration"></A> </P><P><TT>ejabberd</TT> is an Erlang/OTP application that runs inside an Erlang runtime system.
+for example using: <TT>echo $?</TT></P><P> <A NAME="erlangconfiguration"></A> </P><!--TOC subsection Erlang Runtime System-->
+<H3 CLASS="subsection"><!--SEC ANCHOR --><A NAME="htoc61">4.1.2</A>  <A HREF="#erlangconfiguration">Erlang Runtime System</A></H3><!--SEC END --><P> <A NAME="erlangconfiguration"></A> </P><P><TT>ejabberd</TT> is an Erlang/OTP application that runs inside an Erlang runtime system.
This system is configured using environment variables and command line parameters.
The <TT>ejabberdctl</TT> administration script uses many of those possibilities.
You can configure some of them with the file <TT>ejabberdctl.cfg</TT>,
to prevent unauthorized access or intrusion to an Erlang node.
The communication between Erlang nodes are not encrypted,
so the cookie could be read sniffing the traffic on the network.
-The recommended way to secure the Erlang node is to block the port 4369.</P><P> <A NAME="nodename"></A> </P><!--TOC section Erlang node name-->
-<H2 CLASS="section"><!--SEC ANCHOR --><A NAME="htoc69">5.4</A>  <A HREF="#nodename">Erlang node name</A></H2><!--SEC END --><P> <A NAME="nodename"></A> </P><P>An Erlang node may have a node name.
+The recommended way to secure the Erlang node is to block the port 4369.</P><P> <A NAME="nodename"></A> </P><!--TOC section Erlang Node Name-->
+<H2 CLASS="section"><!--SEC ANCHOR --><A NAME="htoc69">5.4</A>  <A HREF="#nodename">Erlang Node Name</A></H2><!--SEC END --><P> <A NAME="nodename"></A> </P><P>An Erlang node may have a node name.
The name can be short (if indicated with the command-line parameter <TT>-sname</TT>)
or long (if indicated with the parameter <TT>-name</TT>).
Starting an Erlang node with -sname limits the communication between Erlang nodes to the LAN.</P><P>Using the option <TT>-sname</TT> instead of <TT>-name</TT> is a simple method
However, it is not ultimately effective to prevent access to the Erlang node,
because it may be possible to fake the fact that you are on another network
using a modified version of Erlang <TT>epmd</TT>.
-The recommended way to secure the Erlang node is to block the port 4369.</P><P> <A NAME="secure-files"></A> </P><!--TOC section Securing sensible files-->
-<H2 CLASS="section"><!--SEC ANCHOR --><A NAME="htoc70">5.5</A>  <A HREF="#secure-files">Securing sensible files</A></H2><!--SEC END --><P> <A NAME="secure-files"></A> </P><P><TT>ejabberd</TT> stores sensible data in the file system either in plain text or binary files.
+The recommended way to secure the Erlang node is to block the port 4369.</P><P> <A NAME="secure-files"></A> </P><!--TOC section Securing Sensible Files-->
+<H2 CLASS="section"><!--SEC ANCHOR --><A NAME="htoc70">5.5</A>  <A HREF="#secure-files">Securing Sensible Files</A></H2><!--SEC END --><P> <A NAME="secure-files"></A> </P><P><TT>ejabberd</TT> stores sensible data in the file system either in plain text or binary files.
The file system permissions should be set to only allow the proper user to read,
write and execute those files and directories.</P><DL CLASS="description"><DT CLASS="dt-description">
<B><TT>ejabberd configuration file: /etc/ejabberd/ejabberd.cfg</TT></B></DT><DD CLASS="dd-description">
</P><PRE CLASS="verbatim">{domain_balancing_component_number, "component.example.com", N}
</PRE><P> <A NAME="debugging"></A> </P><!--TOC chapter Debugging-->
<H1 CLASS="chapter"><!--SEC ANCHOR --><A NAME="htoc82">Chapter 7</A>  <A HREF="#debugging">Debugging</A></H1><!--SEC END --><P> <A NAME="debugging"></A>
-</P><P> <A NAME="watchdog"></A> </P><!--TOC section Watchdog Alerts-->
-<H2 CLASS="section"><!--SEC ANCHOR --><A NAME="htoc83">7.1</A>  <A HREF="#watchdog">Watchdog Alerts</A></H2><!--SEC END --><P> <A NAME="watchdog"></A>
-</P><P><TT>ejabberd</TT> includes a watchdog mechanism.
-If a process in the <TT>ejabberd</TT> server consumes too much memory,
-a message is sent to the Jabber accounts defined with the option
-<TT>watchdog_admins</TT>
- in the <TT>ejabberd</TT> configuration file.
-Example configuration:
-</P><PRE CLASS="verbatim">{watchdog_admins, ["admin2@localhost", "admin2@example.org"]}.
-</PRE><P>To remove watchdog admins, remove them in the option.
-To remove all watchdog admins, set the option with an empty list:
-</P><PRE CLASS="verbatim">{watchdog_admins, []}.
-</PRE><P> <A NAME="logfiles"></A> </P><!--TOC section Log Files-->
-<H2 CLASS="section"><!--SEC ANCHOR --><A NAME="htoc84">7.2</A>  <A HREF="#logfiles">Log Files</A></H2><!--SEC END --><P> <A NAME="logfiles"></A> </P><P>An <TT>ejabberd</TT> node writes two log files:
+</P><P> <A NAME="logfiles"></A> </P><!--TOC section Log Files-->
+<H2 CLASS="section"><!--SEC ANCHOR --><A NAME="htoc83">7.1</A>  <A HREF="#logfiles">Log Files</A></H2><!--SEC END --><P> <A NAME="logfiles"></A> </P><P>An <TT>ejabberd</TT> node writes two log files:
</P><DL CLASS="description"><DT CLASS="dt-description">
<B><TT>ejabberd.log</TT></B></DT><DD CLASS="dd-description"> is the ejabberd service log, with the messages reported by <TT>ejabberd</TT> code
</DD><DT CLASS="dt-description"><B><TT>sasl.log</TT></B></DT><DD CLASS="dd-description"> is the Erlang/OTP system log, with the messages reported by Erlang/OTP using SASL (System Architecture Support Libraries)
</DD></DL><P>
For example, the default configuration is:
</P><PRE CLASS="verbatim">{loglevel, 4}.
-</PRE><P> <A NAME="debugconsole"></A> </P><!--TOC section Debug Console-->
-<H2 CLASS="section"><!--SEC ANCHOR --><A NAME="htoc85">7.3</A>  <A HREF="#debugconsole">Debug Console</A></H2><!--SEC END --><P> <A NAME="debugconsole"></A> </P><P>The Debug Console is an Erlang shell attached to an already running <TT>ejabberd</TT> server.
+</PRE><P>The log files grow continually, so it is recommended to rotate them periodically.
+To rotate the log files, rename the files and then reopen them.
+The ejabberd command <TT>reopen-log</TT>
+(please refer to section <A HREF="#commands">4.1.1</A>)
+reopens the log files,
+and also renames the old ones if you didn’t rename them.</P><P> <A NAME="debugconsole"></A> </P><!--TOC section Debug Console-->
+<H2 CLASS="section"><!--SEC ANCHOR --><A NAME="htoc84">7.2</A>  <A HREF="#debugconsole">Debug Console</A></H2><!--SEC END --><P> <A NAME="debugconsole"></A> </P><P>The Debug Console is an Erlang shell attached to an already running <TT>ejabberd</TT> server.
With this Erlang shell, an experienced administrator can perform complex tasks.</P><P>This shell gives complete control over the <TT>ejabberd</TT> server,
so it is important to use it with extremely care.
There are some simple and safe examples in the article
-<A HREF="http://www.ejabberd.im/interconnect-erl-nodes">Interconnecting Erlang Nodes</A></P><P>To exit the shell, close the window or press the keys: control+c control+c.</P><P> <A NAME="i18ni10n"></A> </P><!--TOC chapter Internationalization and Localization-->
+<A HREF="http://www.ejabberd.im/interconnect-erl-nodes">Interconnecting Erlang Nodes</A></P><P>To exit the shell, close the window or press the keys: control+c control+c.</P><P> <A NAME="watchdog"></A> </P><!--TOC section Watchdog Alerts-->
+<H2 CLASS="section"><!--SEC ANCHOR --><A NAME="htoc85">7.3</A>  <A HREF="#watchdog">Watchdog Alerts</A></H2><!--SEC END --><P> <A NAME="watchdog"></A>
+</P><P><TT>ejabberd</TT> includes a watchdog mechanism that may be useful to developers
+when troubleshooting a problem related to memory usage.
+If a process in the <TT>ejabberd</TT> server consumes a lot of memory,
+a message is sent to the Jabber accounts defined with the option
+<TT>watchdog_admins</TT>
+ in the <TT>ejabberd</TT> configuration file.
+Note that the threshold to define what is too much memory usage
+is only configurable editing the source code.
+Example configuration:
+</P><PRE CLASS="verbatim">{watchdog_admins, ["admin2@localhost", "admin2@example.org"]}.
+</PRE><P>To remove watchdog admins, remove them in the option.
+To remove all watchdog admins, set the option with an empty list:
+</P><PRE CLASS="verbatim">{watchdog_admins, []}.
+</PRE><P> <A NAME="i18ni10n"></A> </P><!--TOC chapter Internationalization and Localization-->
<H1 CLASS="chapter"><!--SEC ANCHOR --><A NAME="htoc86">Appendix A</A>  <A HREF="#i18ni10n">Internationalization and Localization</A></H1><!--SEC END --><P> <A NAME="i18ni10n"></A>
</P><P>All built-in modules support the <TT>xml:lang</TT> attribute inside IQ queries.
Figure <A HREF="#fig:discorus">A.1</A>, for example, shows the reply to the following query:
Please refer to the section~\ref{ejabberdctl} for details about \term{ejabberdctl},
and configurable options to fine tune the Erlang runtime system.
-\makesection{install.os}{Installing \ejabberd{} with Operating System specific packages}
+\makesection{install.os}{Installing \ejabberd{} with Operating System Specific Packages}
Some Operating Systems provide a specific \ejabberd{} package adapted to
the system architecture and libraries.
\item GNU Make
\item GCC
\item Libexpat 1.95 or higher
-\item Erlang/OTP R10B-9 or newer.
+\item Erlang/OTP R10B-9 or higher.
\item OpenSSL 0.9.6 or higher, for STARTTLS, SASL and SSL encryption. Optional, highly recommended.
\item Zlib 1.2.3 or higher, for Stream Compression support (\xepref{0138}). Optional.
-\item GNU Iconv 1.8 or higher, for the IRC Transport (mod\_irc). Optional. Not needed on systems with GNU Libc.
+\item Erlang mysql library. Optional. For MySQL authentication or storage. See section \ref{compilemysql}.
+\item Erlang pgsql library. Optional. For PostgreSQL authentication or storage. See section \ref{compilepgsql}.
+\item PAM library. Optional. For Pluggable Authentication Modules (PAM). See section \ref{pam}.
+\item GNU Iconv 1.8 or higher, for the IRC Transport (mod\_irc). Optional. Not needed on systems with GNU Libc. See section \ref{modirc}.
\end{itemize}
\makesubsection{download}{Download Source Code}
it will be displayed in all active rooms. In this example the history
feature is disabled.
\begin{verbatim}
-{acl, admins, {user, "admin", "example.org"}}.
+{acl, admin, {user, "admin", "example.org"}}.
-{access, muc_admins, [{allow, admins}]}.
+{access, muc_admin, [{allow, admin}]}.
{modules,
[
...
{mod_muc, [{access, all},
{access_create, all},
- {access_admin, muc_admins},
+ {access_admin, muc_admin},
{history_size, 0}]},
...
]}.
{acl, paying_customers, {user, "customer1", "example.net"}}.
{acl, paying_customers, {user, "customer2", "example.com"}}.
{acl, paying_customers, {user, "customer3", "example.org"}}.
-{acl, admins, {user, "admin", "example.org"}}.
+{acl, admin, {user, "admin", "example.org"}}.
-{access, muc_admins, [{allow, admins},
+{access, muc_admin, [{allow, admin},
{deny, all}]}.
{access, muc_access, [{allow, paying_customers},
- {allow, admins},
+ {allow, admin},
{deny, all}]}.
{modules,
[
...
{mod_muc, [{access, muc_access},
- {access_create, muc_admins},
- {access_admin, muc_admins}]},
+ {access_create, muc_admin},
+ {access_admin, muc_admin}]},
...
]}.
\end{verbatim}
[
...
{mod_muc, [{access, muc_access},
- {access_create, muc_admins},
+ {access_create, muc_admin},
{default_room_options,
[
{allow_change_subj, false},
{title, "New chatroom"},
{anonymous, false}
]},
- {access_admin, muc_admins}]},
+ {access_admin, muc_admin}]},
...
]}.
\end{verbatim}
\iqdiscitem{Software Version (\ns{jabber:iq:version})}
\end{description}
-\makechapter{manage}{Managing an \ejabberd{} server}
+\makechapter{manage}{Managing an \ejabberd{} Server}
\makesection{ejabberdctl}{\term{ejabberdctl}}
\begin{description}
\titem{status} Check the status of the \ejabberd{} server.
\titem{stop} Stop the \ejabberd{} server which is running in the machine.
-\titem{reopen-log} If you use a tool to rotate logs, you have to configure it
- so that this command is executed after each rotation.
+\titem{reopen-log} Reopen the log files after they were renamed.
+ If the old files were not renamed before calling this command,
+ they are automatically renamed to \term{"*-old.log"}. See section \ref{logfiles}.
\titem {backup, restore, install-fallback, dump, load} You can use these
commands to create and restore backups.
%%More information about backuping can
for example using: \term{echo \$?}
-\makesubsection{erlangconfiguration}{Erlang runtime system}
+\makesubsection{erlangconfiguration}{Erlang Runtime System}
\ejabberd{} is an Erlang/OTP application that runs inside an Erlang runtime system.
This system is configured using environment variables and command line parameters.
The recommended way to secure the Erlang node is to block the port 4369.
-\makesection{nodename}{Erlang node name}
+\makesection{nodename}{Erlang Node Name}
An Erlang node may have a node name.
The name can be short (if indicated with the command-line parameter \term{-sname})
The recommended way to secure the Erlang node is to block the port 4369.
-\makesection{secure-files}{Securing sensible files}
+\makesection{secure-files}{Securing Sensible Files}
\ejabberd{} stores sensible data in the file system either in plain text or binary files.
The file system permissions should be set to only allow the proper user to read,
\makechapter{debugging}{Debugging}
\ind{debugging}
-\makesection{watchdog}{Watchdog Alerts}
-\ind{debugging!watchdog}
-
-\ejabberd{} includes a watchdog mechanism.
-If a process in the \ejabberd{} server consumes too much memory,
-a message is sent to the Jabber accounts defined with the option
-\term{watchdog\_admins}
-\ind{options!watchdog\_admins} in the \ejabberd{} configuration file.
-Example configuration:
-\begin{verbatim}
-{watchdog_admins, ["admin2@localhost", "admin2@example.org"]}.
-\end{verbatim}
-
-To remove watchdog admins, remove them in the option.
-To remove all watchdog admins, set the option with an empty list:
-\begin{verbatim}
-{watchdog_admins, []}.
-\end{verbatim}
-
-
\makesection{logfiles}{Log Files}
An \ejabberd{} node writes two log files:
{loglevel, 4}.
\end{verbatim}
+The log files grow continually, so it is recommended to rotate them periodically.
+To rotate the log files, rename the files and then reopen them.
+The ejabberd command \term{reopen-log}
+(please refer to section \ref{commands})
+reopens the log files,
+and also renames the old ones if you didn't rename them.
+
\makesection{debugconsole}{Debug Console}
To exit the shell, close the window or press the keys: control+c control+c.
+\makesection{watchdog}{Watchdog Alerts}
+\ind{debugging!watchdog}
+
+\ejabberd{} includes a watchdog mechanism that may be useful to developers
+when troubleshooting a problem related to memory usage.
+If a process in the \ejabberd{} server consumes a lot of memory,
+a message is sent to the Jabber accounts defined with the option
+\term{watchdog\_admins}
+\ind{options!watchdog\_admins} in the \ejabberd{} configuration file.
+Note that the threshold to define what is too much memory usage
+is only configurable editing the source code.
+Example configuration:
+\begin{verbatim}
+{watchdog_admins, ["admin2@localhost", "admin2@example.org"]}.
+\end{verbatim}
+
+To remove watchdog admins, remove them in the option.
+To remove all watchdog admins, set the option with an empty list:
+\begin{verbatim}
+{watchdog_admins, []}.
+\end{verbatim}
+
+
\appendix{}
\makechapter{i18ni10n}{Internationalization and Localization}