Exchange Chat Features/IRCX

Archived content. No warranty is made as to technical accuracy. Content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.

Published: April 19, 2004

IRCX Overview

Internet Relay Chat Extension (IRCX) extends many of the elements of RFC 1459. In general, it defines more clearly the relationships among users, administrators, channels, and the server. More roles have been defined, and with those new roles come additional controls and security. IRCX helps maintain security through Simple Authentication and Security Layer (SASL) authentication. IRCX defines additional client commands, server commands, user modes and properties, channel modes and properties, and command responses. In addition to enhanced and new commands, IRCX supports UTF-8, provides a more flexible interpretation of user masks, and supports the Platform for Internet Content Selection (PICS) rating system.


The development of Internet Relay Chat (IRC) has been a fragmented one. The major IRC networks (EFNet, DalNet, and UnderNet) have each followed a separate path in extending the IRC2 protocol. The result is that none of the three can link with the others. There have been a number of ill-fated attempts to form a working group to define an IRC3 protocol based on RFC 1459. In an attempt to bring some unity to the expanding world of chat, because IRC3 has not been adopted, Microsoft has submitted to the Internet Engineering Task Force (IETF) a draft proposal defining an extension to the current IRC called IRCX. IRCX is a string-based protocol extension to IRC that supports additional functionality.

On the client side, IRCX supplants an earlier chat technology Microsoft developed called Microsoft Internet Chat (MIC) protocol. MIC is a binary protocol, and because of its speed, MIC is still used for server-to-server communication within Microsoft Exchange Chat Service. MIC was developed because IRC did not support all functionality that was needed and the IRC packet size was quite large. MIC provided a 32-bit client-side interface called Chatsock. Using Chatsock, client developers could write clients that could support both IRC and MIC. However, writing a Chat client is not a trivial task. IRCX provides a standard that accommodates existing IRC clients and provides for new functionality.

Multiple Language Support

The IRCX draft specifies using UTF-8 to convert Unicode into ASCII. UTF is an acronym combining the acronym UCS (Universal Character Set) and the term Transformation Formats. The translation is a two-step process: first Unicode is translated into UTF-8; then the results of the translation are processed into ASCII. This two-step process enables the full range of Unicode characters. IRCX clients will view Unicode strings in their native form. To allow non-IRCX clients to communicate with Unicode users, the server translates Unicode strings into a client-usable form before sending them.

IRCX Functions

IRCX adds several new commands and modes to those found in RFC 1459 and extends other commands. These additions to the IRC protocol enable a broad range of new features.

The enhanced commands are:

  • Mode. Includes two new user modes, 10 new channel modes.

  • Notice. Notices can now be sent to a list of users in a channel rather than simply to a channel or a list of users.

  • Privmsg. Private messages can now be sent to a list of users in a channel rather than simply to a channel or a list of users.

  • Silence. Blocks all messages from certain users at the server.

The new commands are:

  • Access. Grants or denies access to an object.

  • Auth. Authenticates clients.

  • Create. Creates a new channel or joins an existing channel.

  • Data. Sends instructions, banners, or other data to clients.

  • Event. Enables event logging.

  • Ircx. Enables IRCX mode on server.

  • Isircx. Queries server as to whether it supports IRCX.

  • Listx. Lists channel properties and searches for strings.

  • Prop. Adds, changes, or deletes channel properties.

  • Whisper. Sends a message to one or more members within the context of the channel.

Increasing Security

Two new commands in IRCX help address security issues of RFC 1459:

  • Access. Administrators can help control access by banning a chat user with the IRC -b Mode option. They can also use the IRCX Access command to grant any of several levels of access to a particular client. IRCX provides controlled access to objects through the Access command. An object can be a channel, a user (Nickname) or one or more servers. An access control list is maintained that contains the level of access that have been granted, the object to which access is granted, and the duration of the grant. Levels of access can be Deny, Grant, Host, Owner, and Voice. There is also a text field for explanation of the access level.

  • Auth. The Auth command is used to authenticate a client. Authentication uses the Simple Authentication and Security Layer (SASL) SASL[4] mechanism. SASL is a method for adding authentication support to connection-based protocols. Under this specification, a connecting client issues a command identifying and authenticating it to a server. The details of the authentication mechanisms are specified in a profile registered with Internet Assigned Numbers Authority (IANA). If authentication is to be used and the server is known to support IRCX with one or more specific SASL mechanisms, the first message must be the Auth command.

Managing Channels and Users

Channels and users are easier to control with the following commands added under IRCX:

  • Create. The IRCX Create command combines features of the IRC Join command and the IRC Mode command, adding new functionality. The Create command allows clients to set the properties of a channel at the time they create it, rather than having to create the channel, and then use the Mode command to set the properties.

  • Prop. The Prop command adds to functions found in the IRC Mode command. In the Microsoft Exchange Chat Service implementation, the Prop command provides channel creators the ability to set properties such as security accounts, message lag time, the preferred language type, and member and host keys.

  • Mode. The Mode command as defined in RFC 1459 is used to add and delete modes. There are two new user modes: Owner and Gag. There are 10 new channel modes defined in IRCX. One particularly useful new mode is the Gag mode.

  • Gag mode. Only sysops (system operators) and administrators can use Gag mode. Gag mode causes the server to ignore all messages sent from a user who has been gagged to other users. Users on whom Gag mode has been imposed are unaware they have been gagged. Gag mode remains in force for the duration of the user session. Messages from the gagged user are ignored in all channels on all linked chat servers.

  • Event. The Event command enables event logging, which is used by administrators and sysops to monitor server activity. When logs are monitored, problems can be spotted quickly, and action can be taken to prevent or correct problems before they become serious. In the current implementation of Microsoft Exchange Chat Server, any of more than thirty events can be logged in any combination to alert administrators of attempts at attack, channel problems, server problems, socket and network problems, or simply the reaching of the limit for a particular class of users.

  • Listx. Rather than simply list channels and topics as the IRC List command does, IRCX extends the List command. Listx enables searches for strings in names or topics. It also includes in the search result, channel modes, member limits, channel topics, and the Platform for Internet Content Selection (PICS) rating string.

Communicating with a Server

IRCX adds several new commands enabling users to communicate with the server directly:

  • Ircx. Enables IRCX mode on the server.

  • Silence. Channel members can instruct the server not to send them messages from certain other members. Members can, for example, silence an annoying member by including that member's Nickname or IP address in the silence mask.

  • Isircx. Before joining a channel, users can query a server as to whether it supports the IRCX protocol using the Isircx command.

Communicating with and Among Clients

With the following new IRCX commands, members, sysops, and sysop managers can send messages either privately or to a subset of members:

  • Privmsg. This is an extension to the RFC 1459 command. Private messages can be sent to one or more users or an entire channel plus any number of selected users on another channel.

  • Whisper. This new IRCX command enables channel members to converse privately with one or more other members.

  • Notice. This RFC 1459 command is extended under IRCX so that notices can be sent to one or more users or an entire channel plus any number of selected users on another channel.

  • Data/Reply/Request. The IRCX Data command provides a means to send instructions or information to clients. Data can range from sysop cautions about topics to advertising banners. It also allows for positioning three-dimensional images. Companion commands, Reply and Request, imply that the data sent is a response to a request for data or that a reply is expected.