The .elm/elmrc File

Elm, like lots of other software on the Unix TM system, has the ability to automatically read in a configuration file at each invocation. The file must be called elmrc and reside in the .elm directory located in your home directory. It can have any of the entries below, in any order. If you are missing any entries, or if you don't have an .elm/elmrc file, the default values (listed below for each option) will be used. Note that those options below designated with * can be altered using elm via the o)ptions screen. Also note that when you save a new .elm/elmrc file via the `> ' command of the options screen, it will be (re)created including even those options that have default values.

alternatives

This is a list of other machine/username combinations that you receive mail from (forwarded). This is used when the group reply feature is invoked to ensure that you don't send yourself a copy of the outbound message. (The default is a list of no alternatives.)

calendar*

This is used in conjunction with the `< ' scan message for calendar entries command, as the file to append any found calendar entries to. (The default is calendar in your home directory.)

editor*

The editor to use when typing in new mail. If you select ``none'' or ``builtin'' you'll get a Berkeley Mail style interface for all mail that doesn't already have text in the buffer (e.g. a reply, mail with a ``signature'', etc). (The default is to use the value of $EDITOR in your current environment, and if not set, an editor selected by the person who configured elm for your system.)

escape

The character used with the ``builtin'' editor (see above (editor)) to escape from text entry to input a command. When a line begins with this character, the editor interprets it as a command rather than as text to add. (The default is ``~''.)

fullname*

This is the name the mailer will use in messages you send. It is highly recommended that you use your full name and nothing strange or unusual, as that can appear extremely rude to people receiving your mail. (The default is to use the ``gcos'' field from the /etc/passwd file on systems that use this field to store full names, and to use the contents of .fullname in your home directory on other systems.)

maildir*

This is your folder directory. When you specify a folder name beginning with the `=' metacharacter. Note that `%' and `+' are synonymous with `=' throughout elm it stands for this directory name. That is, if you save a message to folder =stuff the `=' will be expanded to the current value of maildir. (The default is the directory Mail in your home directory.)

tmpdir*

Use this if you want to define your own directory for the temporary file Elm creates while running. This is only necessary if using the system temporary directory could cause problems, such as when not all NFS clients mount the common temporary directory, or when the temporary directory is prone to being cleared periodically. The default entry of the system temporary directory is normally ok.

pager

This is the program to be used to display messages. You can specify ``builtin'' or the name of any standard pager. If you use ``builtin+'', each screenfull of displayed message is ``paged'' from the top of your screen with a title line, while ``builtin'' simply ``scrolls up'' subsequent screenfulls once it has ``paged'' the first screenfull. (The default is to use the value of $PAGER in your current environment, and if not set, a pager selected by the person who configured elm for your system, quite likely ``builtin+''.)

attribution

When you forward a message or reply to it, you can optionally attribute the quoted text to its original author. Defining the attribution string here allows you to indicate the form that the attribution should take. The sequence `%s' in the attribution will be replaced by the name of the original author. Examples are:
  • attribution = According to %s:
  • attribution = %s writes:
  • prefix

    When you reply to a message or forward a message to another person, you can optionally include the original message. Defining the prefix value here allows you to indicate what the prefix of each included line should be. (The default is ``> '' and is standard in the Unix community.)

    print*

    This is the command used for printing messages. There are two possible formats for it, either a command that can have a filename affixed to (as a suffix) before being executed, or a string that contains the meta-sequence `%s' which will be replaced by the name of the file before being executed. Examples of each are: print = print -formfeed print = pr %s | lpr (The default is set by the person who configured elm for your system.)

    received mail

    This is the folder to which incoming mail is saved after you've read it. When you answer no (`n') to the ``keep unread messages in your incoming mailbox?'' prompt or yes (`y') to the ``store read messages in your "received" folder?'', this is where the messages go. (The default is "=received", that is, a folder called received in your maildir directory).

    sentmail*

    This is the folder to which a copy of outgoing mail is automatically saved. This will only be done if the copy flag is turned on (see below). Also note that if the savename feature (see below) is enabled then this folder may be ignored since the program may save to a folder that has the same name as the login of the person you're sending to. Whether or not a copy is saved, and to what folder, can be changed just prior to sending a message. (The default is "=sent", that is, a folder called sent in your maildir directory).

    shell

    This defines the shell to use when doing ``!'' escapes and such. (The default is to use the value of $SHELL in your current environment, and if not set, a shell selected by the person who configured elm for your system.)

    signature

    This file, if defined, will be automatically appended to all outbound mail before the editor is invoked. Furthermore, if you'd like a different ``.signature'' file for local mail and remote mail (remote being via other hosts), you can alternatively define two variables, localsignature and remotesignature, to have the same functionality. (The default is "localsignature" and "remotesignature" in your home directory.)

    sortby*

    You can have your folder sorted by any of the following ways:
    from
    This will sort according to whom each message is from.
    lines
    This will sort shortest to longest by message.
    mailbox
    This will leave the messages in the order found in the folder.
    received
    This will sort least recently received to most recently received.
    sent
    This will sort least recently sent to most recently sent.
    status
    This will sort by priority, action, new, tagged, then deleted.
    subject
    This will sort according to the subject of each message.

    Each of these fields can also optionally be prepended with the sequence ``reverse-'' to reverse the order of the sort. This doesn't imply anything about the order of the message in the folder itself and affects only their order on the index screen. (The default is mailbox order.)

    weedout

    When specifying this option, you can list headers that you don't want to see when you are displaying a message. This list can continue for as many lines as desired, as long as the continued lines all have leading indentation. (The default is ``Received:'' and others.)

    bounceback

    This is a hop count threshold value and allows you to set up the mailer so that when you send mail more than n machines away, it'll automatically include a ``Cc:'' to you through the remote machine. In practice this should be very rarely used. (Note: this refuses to bounce mail off an Internet address. The default is to have it set to zero, which disables the function)

    timeout

    On more advanced systems, it's nice to start up the mailer in a window and let it sit in background unless new mail arrives (see wnewmail, not on-line, for another window based program) at which point it can be brought up to the forefront of the system and read. In this case, it would be quite convenient to have the mailer internally resynchronize every so often. This option specifies the number of seconds that this occurs.

    This is also useful for normal terminals, for example you can leave elm running at night (I usually do) and when you come in in the morning it'll be all ready to read your mail!

    (The default is a 300 second (5 minute) timeout period).

    userlevel*

    This is what the program uses to determine the relative level of sophistication of the user. The values are 0 for a new user (the default), 1 for someone familiar with elm user, and 2 for experts. Some advanced features are hidden from novice users, while experts get less verbose prompt messages.

    alwaysdelete

    When set, this changes the default answer of the prompt ``Delete messages?'' to the indicated value. The default is to have the answer be No (i.e. alwaysdelete = OFF).

    alwaysstore

    This sets the default answer on the ``store read mail in "received" folder'' prompt to the value indicated. The default is to have the default answer be No (i.e., alwaysstore = OFF).

    alwayskeep

    This sets the default answer on the ``keep unread mail in incoming mailbox'' However, if you answered No to the ``store read mail in "received" folder'' it is presumed that you'd also want to keep your unread mail in the incoming mailbox, too, and the value of alwayskeep is ignored. The default is to have the default answer be Yes (i.e., alwayskeep = ON).

    arrow*

    Sometimes you are forced to use a slow, or ``dumb'' terminal. In this case, you can force the current message pointer to be the ``-> '' sequence rather than the inverse bar. Note that this is overridden by the similar `-a' command line option, see below (the default is OFF).

    ask

    This allows you to tell the elm system that you'd rather not be asked ``Delete Mail?'' and such each time you quit, resynchronize a folder or change folders, and instead it should just use the values of ``alwaysdelete'', ``alwaysstore'', and ``awayskeep'' without prompting. Note that when you quit elm, if you use `Q' instead of `q', you will never be questioned, regardless of how you have ask set. (The default is ON, i.e. to ask the questions).

    askcc

    If turned off, this will allow you to send mail without being presented the ``Copies to:'' prompt for each message. This still allows you to explicitly include addresses in the ``cc'' list via either ``~c'' in the builtin editor, or via using the header editor. (The default is ON, i.e. to ask about copies.)

    autocopy

    If turned on, this will automatically copy the text of each message being replied to into the edit buffer. Otherwise you will be prompted as to whether you want the message included in yours. (See the prefix option above.) (The default is OFF.)

    copy

    This, in combination with the sentmail folder, will allow you to have silent copies of all outgoing mail made on the outbound step. Whether a copy is saved and to which folder can be set prior to sending a message, see below. (The default is OFF.)

    forcename

    This, in combination with the savename option, governs how a copy of an outgoing message will be saved. (See savename below for details.) (The default is OFF.)

    keep

    The mail system has a habit of deleting folders when you've removed everything from them. With this option turned on, it will instead preserve them as zero-byte files. This option does not apply to your incoming mailbox. (The default is OFF.)

    keypad

    If on, this tells elm that you have an HP terminal and enables the < NEXT> , < PREV> , < HOME> and < SHIFT-HOME> keys. (The default is OFF.)

    menu*

    If turned off, this will inhibit the Menu display on all of the screen displays within the elm program. (Note that this is overridden by the similar `-m' command line option, see below.) (The default is ON.)

    names*

    If turned off, the primary recipients' address is displayed on your screen with their full names when you send a message. Otherwise, only the full names are given. (The default is ON.)

    movepage

    If this is enabled then commands that move through the folder by pages (the `+', `-', < right-arrow> , and < left-arrow> keys) will also move the current message pointer to the top of that page of messages. If this is turned off then moving through the pages doesn't alter the current message pointer location. (The default is OFF.)

    noheader

    This boolean flag tells the mailer not to include the headers of messages when copying a message into a file buffer for replying to or forwarding. (The default is ON.)

    promptafter

    If this flag is ON and you use an external pager, when the pager exits, you will be prompted for a command rather than returned directly to the index screen. If the external pager you are using exits when it reaches end of file (i.e. end of the message), you should have this flag ON, otherwise the last screen of the displayed message will not be held but instead be immediately replaced by the index screen. If the external pager you are using does not exit until you command it to exit, you have a choice. If you usually want to see the index screen before issuing a command, having the flag OFF will cut down out the extra keystroke needed to return to the index screen. If you usually don't need to see the index screen to before issuing the next command, having the flag ON will allow you to proceed with your next command without having to wait for the redrawing of the index screen. (The default is ON.)

    pointnew

    If this is turned on, the mailer will be automatically pointing to the first new message in your folder when started, instead of at message #1. This will only be effective for the incoming mailbox since other folders are not expected to have `new' mail. (The default is ON.)

    resolve

    This is a boolean flag that defines the behaviour of the program for such actions as deletion, saving a message and so on. Specifically, with this option enabled, as soon as mail is `dealt with' the program moves you to the next message in the folder, with deletion, undeletion, saving a message and forwarding a message all being treated as dealing with email in this manner. (The default is ON.)

    savename

    One of the problems with electronic mail systems is that one tends to get very large, one-dimensional (flat) files that contain lots of completely unrelated mail. If this option is turned on, elm will use a more intelligent algorithm on incoming mail, when you save or copy it, the default mailbox to save to (changeable by pressing anything other than < return> of course) is a folder that is the login name of the person who sent you the message. Similarly, when sending mail out, instead of just blindly saving it to the sentmail folder, elm will save it to a folder that is the login name of the person who is to receive the mail. When sending to a group, it's saved to the first person in the list only.

    If forcename is off (see above), the copy will be saved to that folder only if the folder already exists. In practice, this means that important people that you communicate with (those that you tend to save mail from) have folders that are actually a recorded log of the discussion in both directions and those others (random mailings) are all stuffed in the sentmail folder for easy perusal and removal.

    Otherwise, if you always want to save copies of outgoing messages in separate folders by recipient login name, you'll want to set forcename to on. (The default for savename is ON.)

    sigdashes

    If on, this tells elm that you wish to follow the convention of prefixing your signature with newline dash dash blank newline. This will be placed in your message before your signature file. If off, the signature file is placed at the end of the message without any prefix.

    softkeys

    If on, this tells elm that you have an HP terminal with the HP 2622 function key protocol and that you'd like to have them available while in the program. (The default is OFF.)

    titles

    This flag allows you to have the first line of a message titled with:
  • Message N/M from username date at time
  • where all the information has been previously extracted from the message. This is especially useful if you weed out all the headers of each message with a large `weedout' list... (The default is ON.)

    warnings

    The mailer likes to warn you when you send mail to a machine that cannot be directly accessed. In some situations, however, the system is set up so that mail is automatically forwarded to another machine that might then have better connections. Setting this flag to OFF will allow you to effectively shut off all the warning messages. Use of this flag requires support of the uuname command on your system. Without this command, the flag will be cleared to OFF automatically. (The default is ON.)

    weed

    This is a boolean flag that, in combination with the ``weedout'' list, allows you to custom define the set of headers you would like to not have displayed while reading messages. (The default is ON.)

    One more thing: the format for each of the lines is: variable = value and for boolean variables, value can be `ON' or `OFF' only.

    For a better idea of how this all works, here's my .elm/elmrc file. While looking through it, notice that you can have lots of comments and blank lines for readability and that you can also use `shell variables' and the `~' metacharacter for your home directory, and they are expanded accordingly when read in by the mailer. (Note that this was automatically saved by the elm program on the fly from the o)ptions screen)

     #
     # .elm/elmrc - options file for the ELM mail system
     #
     # Saved automatically by ELM 2.2 for Dave Taylor
     #
    
     # For yes/no settings with ?, ON means yes, OFF means no
    
     # where to save calendar entries
     calendar = ~/.Agenda
    
     # what editor to use ("none" means simulate Berkeley Mail)
     editor = none
    
     # the character to use in the builtin editor for entering
     #   commands
     escape = ~
    
     # the full user name for outbound mail
     fullname = Dave Taylor
    
     # where to save received messages to, default file is 
     #   "=received"
     receivedmail = $HOME/Mail/received
    
     # where to save my mail to, default directory is "Mail"
     maildir = /users/taylor/Mail
    
     # program to use for displaying messages ('builtin' is
     #   recommended)
     pager = builtin
    
     # prefix sequence for indenting included message text in 
     #   outgoing messages...
     prefix = >_
    
     # how to print a message ('%s' is the filename)
     print = lpr -Plw2 %s
    
     # where to save copies of outgoing mail to, default file is 
     #   "=sent"
     sentmail = /users/taylor/Mail/mail.sent
    
     # the shell to use for shell escapes
     shell = /bin/csh
    
     # local ".signature" file to append to appropriate messages...
     localsignature = localsig
    
     # remote ".signature" file to append to appropriate messages...
     remotesignature = remotesig
    
     # do we want dashes above signatures? (News 2.11 compatibility 
     #    and convention)
     sigdashes = ON
    
     # how to sort folders, "Mailbox" by default
     sortby = Reverse-Received
    
     # should the default be to delete messages we've marked for 
     #  deletion?
     alwaysdelete = ON
    
     # should the default be to store read messages to the "received" 
     #   folder?
     alwaysstore = ON
    
     # should the default be to keep unread messages in the incoming 
     #   mailbox?
     alwayskeep = ON
    
     # should we use the "->" rather than the inverse video bar?
     arrow = OFF
    
     # should the message disposition questions be displayed(ON) or
     # auto-answered(OFF) with the default answers when we resync or
     #   change folders?
     ask = ON
    
     # would you like to be asked for Carbon-Copies information each
     #   msg?
     askcc = ON
    
     # automatically copy message being replied to into buffer? 
     autocopy = OFF
    
     # threshold for bouncing copies of remote uucp messages...
     # zero = disable function.
     bounceback = 0
    
     # save a copy of all outbound messages?
     copy = ON
    
     # do we want to be able to mail out AT&T Mail Forms?
     forms = OFF
    
     # should we keep folders from which all messages are deleted?
     keepempty = OFF
    
     # we're running on an HP terminal and want HOME, PREV, NEXT, etc...
     keypad = OFF
    
     # should we display the three-line 'mini' menu?
     menu = ON
    
     # when using the page commands (+ -  ) change the
     #  current message pointer...?
     movepage = ON
    
     # just show the names when expanding aliases?
     names = ON
    
     # when messages are copied into the outbound buffer, don't include
     #  headers?
     noheader = ON
    
     # start up by pointing to the first new message received, if 
     #  possible?
     pointnew = ON
    
     # prompt for a command after the external pager exits?
     promptafter = ON
    
     # emulate the mailx message increment mode (only increment after 
     # something has been 'done' to a message, either saved or deleted,
     # as opposed to simply each time something is touched)?
     resolve = ON
    
     # save messages, incoming and outbound, by login name of 
     #  sender/recipient?
     savename = ON
    
     # save outbound messages by login name of sender/recipient even
     # if the associated folder doesn't already exist?
     forcename = OFF
    
     # are we running on an HP terminal and want HOME, PREV, NEXT,
     #  etc...? (this implies "keypad=ON" too)
     softkeys = OFF
    
     # set the main prompt timeout for resynching...
     timeout = 60
    
     # display message title when displaying pages of message?
     titles = ON
    
     # are we good at it? 0=beginner, 1=intermediate, 2+ = expert!
     userlevel = 2
    
     # tell us about addresses to machines we can't directly get to?
     warnings = OFF
    
     # enable the weedout list to be read?
     weed = ON
    
     # what headers I DON'T want to see, ever.
     weedout = "Path:" "Via:" "Sent:" "Date" "Status:" "Original" 
      "Phase" "Subject:" "Fruit" "Sun" "Lat" "Buzzword" "Return" 
      "Posted" "Telephone" "Postal-Address" "Origin" "X-Sent-By-Nmail-V"
      "Resent" "X-Location" "Source" "Mood" "Neuron" "Libido" "To:" 
      "X-Mailer:" "Full-Name:" "X-HPMAIL" "Cc:" "cc:" "Mmdf" "Network-" 
      "Really-" "Sender:" "Post" "Message-" "Relay-" "Article-" "Lines:" 
      "Approved:" "Xref:" "Organization:" "*end-of-user-headers*"
    
     # alternative addresses that I could receive mail from (usually a
     # forwarding mailbox) and don't want to have listed...
     alternatives = hplabs!taylor hpldat!taylor taylor@hplabs 
           taylor%hpldat