msend - send a message
] [ -d
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.
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
To send a message to someone you would commonly use the form:
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
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
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
- Sends to user "fred" on the same machine.
- Sends to fred on the machine "bitty.box".
- Sends to fred on terminal tty00.
- Sends to all terminals on bitty.box.
- Sends to the console at bitty.box.
Strictly speaking, the form of the recipient
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
" the message will be sent to all of user
logins. If user
isn't specified it will be sent to all users on the
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.
] [ -d
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.
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.
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
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.
Display unread messages. This will display all messages received while you were
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
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.
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
- 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.
- 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.
- 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.
- Turns on verbose mode. This tells you various details of the progress of
- 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.
- Sets the internet port number to use. Normally the default port ⅛)
will be used.
- Turns on debugging mode. This will display a lot of boring
MSENDOPTS used to set default switches
~/.message store of old or unread messages
/var/message/$USER alternative location for messages
~/.msgsig signature to add to messages
Geoff Arnold <geoff@tyger.East.Sun.COM> wrote the core.
Andrew Herbert <email@example.com> cleaned it up a bit.
Zik Saleeba <firstname.lastname@example.org> did many extensions and rewrites.
Michael Strates <email@example.com> has taken over the
project to hopefully keep continuing it.