MSN Messenger
The BBS has an MSN Messenger server (MSNP, the protocol of Microsoft's MSN Messenger), beside its IRC and AIM servers and on the same chat. Someone signed in with MSN Messenger 1.0 to 4.7 or Windows Messenger 4.x sees their BBS friends as contacts and IMs anyone on the BBS: other MSN users, IRC and AIM users, and callers on telnet, SSH, 3270s and the web terminal.
| Setting | Default | What it sets |
|---|---|---|
address |
:1863 |
where to listen |
host |
the address each client came to | where clients are sent for conversations (host:port); set it behind NAT |
domain |
bbs.invalid |
users' handles are name@domain |
max_clients |
256 |
connections at once |
max_per_ip |
16 |
from one address (each conversation is a connection) |
system |
BBS |
the name the BBS's notices come from |
site |
none | a web address the client's links (inbox, profiles) open |
One port serves the whole of it: sign-in, the contact list and presence (the "notification server"), and the conversations ("switchboards").
Versions served¶
MSNP2 to MSNP7: MSN Messenger 1.0 to 4.7, Windows Messenger 4.0 to 4.7, and third-party clients that speak those versions. They sign in by MD5 (MSN 1.0 by the password itself) over plain TCP. MSN Messenger 5.0 and later, and Windows Live Messenger, sign in by Passport over HTTPS, which is not served yet: they are told the version is not supported, and the log says so.
Pointing a client at the BBS¶
The clients were made for Microsoft's servers, so each must be pointed at the BBS:
- MSN Messenger 1.0 to 4.7: the
Servervalue (a string) underHKEY_CURRENT_USER\Software\Microsoft\MessengerServicein the registry, set to the BBS's host (with:1863if the port is another). A hosts file entry sendingmessenger.hotmail.comto the BBS may also work. Neither has been tried with the real clients yet. - Third-party clients (aMSN, Miranda, Trillian and others) take a server and port in the account's settings.
The deny list and bans in [security] apply as they do everywhere else.
Signing in¶
Every MSN user is a BBS user. They sign in with name@domain as the
e-mail address (a name with spaces may be typed with or without them,
CarolAnn@msn.example.org) and their BBS password. The domain part is not
checked, so a client that insists on @hotmail.com (MSN 1.0) works too.
Failed sign-ins count towards the throttle and the hack log, like any
other login, and the user's access level must allow chat. One account is
signed in on one MSN client at a time: signing in again signs the older
one out.
MSN clients send the password as an MD5 digest, which the BBS's password
hashes can't check. So the BBS keeps each account's MSN digest too, made
whenever the password is known: when the account is made, when its
password is set, and at any login by password. An account from before
[msn] was set up has none yet: its user logs in once some other way
(telnet, SSH, IRC, AIM, the web) and can then sign in with MSN. The log
says so when that is why a sign-in failed. The digest is kept only while
[msn] is set up. MSN's challenge for an account is the same each time,
as it was on Microsoft's servers, so anyone who saw a sign-in on the wire
(or read the digest from the database) could sign in by MSN as that
user. The connection is not encrypted.
Contacts¶
The contact list is the user's friends list, the same list the BBS's chat, IRC and AIM show, with its groups (MSN Messenger 4.6 and later show them). A contact is always a BBS user; adding anyone else is refused. A friend added elsewhere comes to a client that is on at once, and one added or removed on MSN is on or off the list everywhere. Someone who adds an MSN user is on their reverse list, so the client asks "X has added you to their contact list".
The block list is the user's blocked list,
shared with the chat's /block: a blocked user's messages are refused
however they come, and the user appears offline to them. "Only people on
my Allow List can see my status" shows the user offline to those not on
their friends list.
A contact is online while they are on the BBS by any route: with the status their MSN client set (busy, away, appearing offline...), or plain online on any other route.
Conversations¶
An IM to an MSN user opens a conversation on their client as usual. An
IM to a BBS user on another route puts them in the conversation at once:
what is said reaches them as a private message (a PRIVMSG on IRC, an
IM on AIM, a message line on a terminal), and what they send back comes
into it. A private message from someone not on MSN opens a conversation
with them on the client. Conversations of several MSN users work as they
did on Microsoft's servers; typing notices and invitations pass between
MSN clients, not to other routes.
Every line is kept. One to a user who
isn't on is kept for them, and the sender told so (once); they get it
when they next log in. Lines kept for an MSN user come when they sign in,
in a conversation from each sender, marked with when they were sent. The
BBS's notices (new mail, a page for the sysop) come from the system
name. Calling someone who is offline is refused, as on Microsoft's
servers: to leave a message for them, use their conversation while it is
open, or another route.