msend(1)

Name
msend - send a message

Syntax
msend [-t] [-g] [-b] [-v] [-rN] [-pN] [-d] recipient [message]
msend [-sN] -l[N]
msend -c
msend [-sN] -u
msend -e[N]
msend -s[N]

Introduction
The msend project was flaring until 1993. In 1993 the next version of msend just didn't get released. I don't quite know why, but it's my duty to the UNIX community to continue this project and make sure it becomes the number one message daemon around (if not the only?!).

This new version of msend marks many little cleanups, and fixes, mostly to the actual user interface of the program. However, in sense it marks more than that. It marks a continuation of a great project! The next version will include support for encrypted message transmission, file transmission via TCP and a new message forwarding daemon which will e-mail you any new messages while you are away. You will also have the option to spawn another editor (like pico/vi/emacs) to edit the message, rather than do it on a line by line basis. I'm considering adding a simple user interface, to let learning users use the msend program (without spoiling it for others).

The easiest way to get to know msend is to try chatting with other people with it, either locally or remotely, to get a feel for the program. I'm sure you'll be impressed. If you have any suggestions for the future release of msend, please e-mail me. My address is at the bottom of this manual page. I also hope to keep this manual page up to date. I'll leave it virtually as is (with a few minor modifications) below, until the next release. If you want a more up to date resource, read the README file. Hopefully the administrator has read the instructions and installed it into /usr/doc/msend.

Description
This program can be used to send messages to people on either the local machine or on remote machines where the RFC1312 Message Send Protocol is supported.

To send a message to someone you would commonly use the form:

msend recipient

Msend will then go into an message input mode where you enter a message line-by-line. You can complete the message by entering a blank line or sending the end-of-file character.

If the person you have sent the message to is not logged on or has used mesg n to turn their messages off, the message to them may be saved for them to read when they next log in. In fact all messages that are received are saved so that you can review them at leisure. The msend -c, msend -l and msend -u options select these features and are described in greater detail later.

In the example shown above, recipient is usually one of the following forms:

    fred
        Sends to user "fred" on the same machine.

    fred@bitty.box
        Sends to fred on the machine "bitty.box".

    fred:tty00
        Sends to fred on terminal tty00.

    :all@bitty.box
        Sends to all terminals on bitty.box.

    @bitty.box
        Sends to the console at bitty.box.

Strictly speaking, the form of the recipient string is:

[user][:tty][@host]

If either the user or the tty is omitted the program will attempt to match on the other. If both are omitted the message will be sent to the console or some other default destination. If the tty is given as "all" the message will be sent to all of user's logins. If user isn't specified it will be sent to all users on the machine.

If the host is not specified, the message will be delivered to the local host. Otherwise it will be sent to the specified machine. This field is ignored if the -b flag is given.

Usage
msend [-t] [-g] [-b] [-v] [-rN] [-pN] [-d] recipient [message]

This form is used to send messages. A message may either be given on the command line or if omitted there will be taken from standard input.

msend -l[N]

Display the last N messages. This is particularly useful if a message was lost from your screen before you had a chance to read it. Usually only a maximum of twenty messages are kept between logins. Regular cleanups will delete old messages as well.

msend -c

Check unread messages. If a message is sent to a user who is not logged on it will be stored in their save file and marked as unread. Placing an msend -c command in your .login file will inform you of any unread messages when you log in next. The program will return 0 if there are messages or 1 if there are none.

msend -u

Display unread messages. This will display all messages received while you were incommunicado.

msend -s[N]

Shorten your buffer of old messages. The number of messages left in your buffer is reduced to at most N. You may want to put this in your .logout file to prevent keeping ancient messages. If neither this function nor msend -e is ever executed the message buffer will grow forever, which is considered a Bad Thing.

msend -e[N]

Expire old messages. This goes through all the users on the system and reduces the maximum number of saved messages to N. The default is twenty. Only the system administrator can run this function. Often this is run as a daily cron(8) job.

Options

-t  This enables the use of TCP (stream) connections rather than datagrams. Using streams connections means that messages will have no size limit and will be reliable over bad network connections. On the other hand transmission is a little more inefficient and takes longer.

-g  Enables UDP (datagram) transmission. This is the default. Datagram connections are slightly faster but are less reliable on unreliable network links. They are also limited to 64k in size.

-b  Switches to broadcast transmission. This will cause the message to be seen by all machines on the local network. If none of the machines is able to deliver it directly to the destination the attempt will timeout and you will receive a "Message unacknowledged - may not have been received" error. Broadcast messages are also limited to 1k.

-v  Turns on verbose mode. This tells you various details of the progress of transmission.

-rN Selects a number of retransmission attempts. The default is four. The first retransmission occurs after three seconds. This period between retransmissions increases by two seconds each time.

-pN Sets the internet port number to use. Normally the default port will be used.

-d  Turns on debugging mode. This will display a lot of boring information.

Environment Variables
MSENDOPTS    used to set default switches

Files
~/.message    store of old or unread messages
/var/message/$USER    alternative location for messages
~/.msgsig    signature to add to messages

See Also
write(1), talk(1)

Authors
Geoff Arnold <geoff@tyger.East.Sun.COM> wrote the core.
Andrew Herbert <andrew@werple.apana.org.au> cleaned it up a bit.
Zik Saleeba <zik@zikzak.apana.org.au> did many extensions and rewrites.
Michael Strates <mstrates@minkirri.apana.org.au> has taken over the project to hopefully keep continuing it.