Two days ago Ray Tomlinson, aged 74, died of a suspected heart failure. The name may not really ring a bell but Tomlinson played a big part in shaping the Internet we know today. He played a key role in the development of ARPANET, the Internet's predecessor, and wrote the very first e-mail client. Furthermore, he also came up with the idea of using the @ symbol.
I was making improvements to the local inter-user mail program called SNDMSG. Single-computer electronic mail had existed since at least the early 1960's and SNDMSG was an example of that. SNDMSG allowed a user to compose, address, and send a message to other users' mailboxes.
A mailbox was simply a file with a particular name. It's only special property was its protection which only allowed other users to append to the file. That is, they could write more material onto the end of the mailbox, but they couldn't read or overwrite what was already there. The idea occurred to me that CPYNET could append material to a mailbox file just as readily as SNDMSG could. SNDMSG could easily incorporate the code from CPYNET and direct messages through a network connection to remote mailboxes in addition to appending messages to local mailbox files.
The missing piece was that the experimental CPYNET protocol had no provision for appending to a file; it could just send and receive files. Adding the missing piece was a no-brainer—just a minor addition to the protocol. I don't recall the protocol details, but appending to a file was the same as writing to a file except for the mode in which the file was opened.
Next, the CPYNET code was incorporated into SNDMSG. It remained to provide a way to distinguish local mail from network mail. I chose to append an at sign and the host name to the user's (login) name. I am frequently asked why I chose the at sign, but the at sign just makes sense. The purpose of the at sign (in English) was to indicate a unit price (for example, 10 items @ $1.95). I used the at sign to indicate that the user was "at" some other host rather than being local.