MH-PROFILE(5)MH-PROFILE(5)NAMEmh-profile - user profile customization for nmh message handler
DESCRIPTION
Each user of nmh is expected to have a file named .mh_profile in his or
her home directory. This file contains a set of user parameters used
by some or all of the nmh family of programs. Each entry in the file
is of the format
profile-component: value
If the text of profile entry is long, you may extend it across several
real lines by indenting the continuation lines with leading spaces or
tabs. Comments may be introduced by a line starting with `#:':
#: This is a comment.
Blank lines are not permitted in .mh_profile. The shell quoting con‐
ventions are not available in the .mh_profile; each token is separated
by whitespace.
Standard Profile Entries
The possible profile components are exemplified below. The only manda‐
tory entry is `Path:'. The others are optional; some have default val‐
ues if they are not present. In the notation used below, (profile,
default) indicates whether the information is kept in the user's nmh
profile or nmh context, and indicates what the default value is. Note
that a profile component can only appear once. Multiple appearances
with trigger a warning that all appearances after the first are
ignored.
Path: Mail
Locates nmh transactions in directory “Mail”. This is the only
mandatory profile entry. (profile, no default)
context: context
Declares the location of the nmh context file. This is overridden
by the environment variable $MHCONTEXT. See the HISTORY section
below. (profile, default: <nmh-dir>/context)
Current-Folder: inbox
Keeps track of the current open folder. (context, default: folder
specified by “Inbox”)
Inbox: inbox
Defines the name of your default inbox. (profile, default: inbox)
Previous-Sequence: pseq
Names the sequence or sequences which should be defined as the
`msgs' or `msg' argument given to any nmh command. If not present
or empty, no such sequences are defined. Otherwise, for each name
given, the sequence is first zero'd and then each message is added
to the sequence. Read the mh-sequence(5) man page for the details
about this sequence. (profile, no default)
Sequence-Negation: not
Defines the string which, when prefixed to a sequence name,
negates that sequence. Hence, “notseen” means all those messages
that are not a member of the sequence “seen”. Read the
mh-sequence(5) man page for the details. (profile, no default)
Unseen-Sequence: unseen
Names the sequence or sequences which should be defined as those
messages which are unread. The commands inc, rcvstore, mhshow,
and show will add or remove messages from these sequences when
they are incorporated or read. If not present or empty, no such
sequences are defined. Otherwise, each message is added to, or
removed from, each sequence name given. Read the mh-sequence(5)
man page for the details about this sequence. (profile, no
default)
mh-sequences: .mh_sequences
The name of the file in each folder which defines public
sequences. To disable the use of public sequences, leave the
value portion of this entry blank. (profile, default:
.mh_sequences)
atr-seq-folder: 172 178-181 212
Keeps track of the private sequence called “seq” in the specified
folder. Private sequences are generally used for read-only fold‐
ers. See the mh-sequence(5) man page for details about private
sequences. (context, no default)
Editor: vi
Defines the editor to be used by the commands comp, dist, forw,
and repl. If not set in profile the value will be taken from the
VISUAL and EDITOR environment variables. (profile, default: vi)
Msg-Protect: 600
An octal number which defines the permission bits for new message
files. See chmod(1) for an explanation of the octal number. Note
that some filesystems, such as FAT32, do not support removal of
read file permissions. (profile, default: 0600)
Folder-Protect: 700
An octal number which defines the permission bits for new folder
directories. See chmod(1) for an explanation of the octal number.
(profile, default: 700)
datalocking: fcntl
The locking algorithm used to lock changes to any nmh data files,
such as sequences or the context. The locking algorithm is any
one of the following entries:
fcntl dot flock lockf
Available locking algorithms can vary depending on what is sup‐
ported by the operating system. Note: currently transactional
locking is only supported on public sequences; see mh-sequence(5)
for more information. (profile, default: fcntl)
program: default switches
Sets default switches to be used whenever the mh program program
is invoked. For example, one could override the “Editor:” profile
component when replying to messages by adding a component such as:
repl: -editor /bin/ed
(profile, no defaults)
lasteditor-next: nexteditor
Names “nexteditor” to be the default editor after using “lastedi‐
tor”. This takes effect at “What now?” prompt in comp, dist,
forw, and repl. After editing the draft with “lasteditor”, the
default editor is set to be “nexteditor”. If the user types
“edit” without any arguments to “What now?”, then “nexteditor” is
used. (profile, no default)
Folder-Stack: folders
The contents of the folder-stack for the folder command. (con‐
text, no default)
Local-Mailbox: Your Username <user@some.host>
Tells the various MH tools what your local mailbox is. If set,
will be used by the default component files by tools like comp and
repl to construct your default “From” header. The text used here
will be copied exactly to your From: header, so it should already
be RFC 822 compliant. If this is set, the Signature profile entry
is NOT used, so it should include a signature as well. (profile,
default: userid@local.hostname)
Alternate-Mailboxes: mh@uci-750a, bug-mh*
Tells repl and scan which addresses are really yours. In this
way, repl knows which addresses should be included in the reply,
and scan knows if the message really originated from you.
Addresses must be separated by a comma, and the hostnames listed
should be the “official” hostnames for the mailboxes you indicate,
as local nicknames for hosts are not replaced with their official
site names. For each address, if a host is not given, then that
address on any host is considered to be you. In addition, an
asterisk (`*') may appear at either or both ends of the mailbox
and host to indicate wild-card matching. (profile, default: your
user-id)
Aliasfile: aliases other-alias
Indicates aliases files for ali, whom, and send. This may be used
instead of the -alias file switch. (profile, no default)
Draft-Folder: drafts
Indicates a default draft folder for comp, dist, forw, refile, and
repl. Read the mh-draft(5) man page for details. (profile, no
default)
digest-issue-list: 1
Tells forw the last issue of the last volume sent for the digest
list. (context, no default)
digest-volume-list: 1
Tells forw the last volume sent for the digest list. (context, no
default)
MailDrop: .mail
Tells inc your maildrop, if different from the default. This is
superseded by the environment variable $MAILDROP. (profile,
default: /var/mail/$USER)
Signature: RAND MH System (agent: Marshall Rose)
Tells front-end programs such as comp, forw, and repl your mail
signature. This is superseded by the environment variable $SIGNA‐
TURE. If $SIGNATURE is not set and this profile entry is not
present, the “gcos” field of the /etc/passwd file will be used.
Your signature will be added to the address send puts in the
“From:” header; do not include an address in the signature text.
The “Local-Mailbox” profile component supersedes all of this.
(profile, no default)
credentials: legacy
Indicates how the username and password credentials will be
retrieved for access to external servers, such as those that pro‐
vide SMTP or POP service. The supported entry values are “legacy”
and “file:netrc”. With “legacy”, or if there is no credentials
entry, the username is the first of:
1) -user switch to send, post, whom, inc, or msgchk program
2) the login name on the local machine
The password for SMTP services is the first of:
1) password value from matching entry in file named “.netrc”
in the user's home directory
2) password obtained by interactively prompting the user
The password for POP service when the -sasl switch is used with
one of these programs is the login name on the local machine.
With a “file:netrc” credentials entry, the username is the first
of:
1) -user switch to program
2) login name from matching entry in netrc file
3) value provided by user in response to interactive query
Similarly, the password is provided either in the netrc file or
interactively. netrc can be any valid filename, either absolute
or relative to Path or $HOME. The netrc file contains authentica‐
tion information, for each server, using a line of the following
form. Replace the words myserver, mylogin, and mypassword with
your own account information:
machine myserver login mylogin password mypassword
This netrc file must be owned and readable only by you. (profile,
default: legacy)
Process Profile Entries
The following profile elements are used whenever an nmh program invokes
some other program such as more. The .mh_profile can be used to select
alternate programs if the user wishes. The default values are given in
the examples.
If the profile element contains spaces, the element is split at spaces
into tokens and each token is given as a separate argument to the
execvp(2) system call. If the element contains shell metacharacters
then the entire element is executed using /bin/sh.
buildmimeproc: /usr/local/bin/mhbuild
This is the program used by whatnow to process drafts which are
MIME composition files.
fileproc: /usr/local/bin/refile
This program is used to refile or link a message to another
folder. It is used by send to file a copy of a message into a
folder given by a “Fcc:” field. It is used by the draft folder
facility in comp, dist, forw, and repl to refile a draft message
into another folder. It is used to refile a draft message in
response to the refile directive at the “What now?” prompt.
formatproc:
Program called by mhl to filter a component when it is tagged with
the “format” variable in the mhl filter. See mhl(5) for more
information.
incproc: /usr/local/bin/inc
Program called by mhmail to incorporate new mail when it is
invoked with no arguments.
lproc: more
This program is used to list the contents of a message in response
to the list directive at the “What now?” prompt. It is also used
by the draft folder facility in comp, dist, forw, and repl to dis‐
play the draft message. (Note that $PAGER supersedes the default
built-in pager command.)
mailproc: /usr/local/bin/mhmail
This is the program used to automatically mail various messages
and notifications. It is used by conflict when using the -mail
option. It is used by send to post failure notices. It is used
to retrieve an external-body with access-type `mail-server' (such
as when storing the body with mhstore).
mhlproc: /usr/local/libexec/nmh/mhl
This is the program used to filter messages in various ways. It
is used by mhshow to filter and display the message headers of
MIME messages. When the -format or -filter option is used by forw
or repl, the mhlproc is used to filter the message that you are
forwarding, or to which you are replying. When the -filter option
is given to send, the mhlproc is used to filter the copy of the
message that is sent to “Bcc:” recipients.
moreproc: more
This is the program used by mhl to page the mhl formatted message
when displaying to a terminal. It is also the default program
used by mhshow to display message bodies (or message parts) of
type text/plain. (Note that $PAGER supersedes the default built-
in pager command.)
mshproc: /usr/local/bin/msh
Currently not used.
packproc: /usr/local/bin/packf
Currently not used.
postproc: /usr/local/libexec/nmh/post
This is the program used by send, mhmail, rcvdist, and viamail
(used by the sendfiles shell script) to post a message to the mail
transport system. It is also called by whom (called with the
switches -whom and -library) to do address verification.
rmmproc: none
This is the program used by rmm, refile, and mhfixmsg to delete a
message from a folder.
sendproc: /usr/local/bin/send
This is the program to use by whatnow to actually send the message
showmimeproc: /usr/local/bin/mhshow
This is the program used by show to process and display non-text
(MIME) messages.
showproc: /usr/local/libexec/nmh/mhl
This is the program used by show to filter and display text (non-
MIME) messages.
whatnowproc: /usr/local/bin/whatnow
This is the program invoked by comp, forw, dist, and repl to query
about the disposition of a composed draft message.
whomproc: /usr/local/bin/whom
This is the program used by whatnow to determine to whom a message
would be sent.
Profile Lookup
After consulting .mh_profile, some programs read an optional profile
specified by a program-specific environment variable, and then the sys‐
tem-wide profile /usr/local/etc/nmh/mhn.defaults. These programs are
mhbuild, mhshow, mhstore, and mhn. mhfixmsg is similar, but has no
optional profile.
The first occurrence of a component is used, e.g. .mh_profile's trumps
$MHSHOW's. A component with no value still stops further occurrences
being used, but is considered absent.
Environment Variables
The operation of nmh and its commands it also controlled by the pres‐
ence of certain environment variables.
Many of these environment variables are used internally by the “What
now?” interface. It's amazing all the information that has to get
passed via environment variables to make the “What now?” interface look
squeaky clean to the nmh user, isn't it? The reason for all this is
that the nmh user can select any program as the whatnowproc, including
one of the standard shells. As a result, it's not possible to pass
information via an argument list. The convention is that environment
variables whose names are all upper-case are user-settable; those whose
names are lower-case only are used internally by nmh and should not
generally be set by the user.
$MH
With this environment variable, you can specify a profile other
than .mh_profile to be read by the nmh programs that you invoke.
If the value of $MH is not absolute, (i.e., does not begin with a
“/”), it will be presumed to start from the current working direc‐
tory. This is one of the very few exceptions in nmh where non-
absolute pathnames are not considered relative to the user's nmh
directory.
$MHCONTEXT
With this environment variable, you can specify a context other
than the normal context file (as specified in the nmh profile).
As always, unless the value of $MHCONTEXT is absolute, it will be
presumed to start from your nmh directory.
$MHBUILD
With this environment variable, you can specify an additional user
profile (file) to be read by mhbuild, in addition to the
mhn.defaults profile.
$MHN
With this environment variable, you can specify an additional user
profile (file) to be read by mhn, in addition to the mhn.defaults
profile. mhn is deprecated, so this support for this variable
will be removed from a future nmh release.
$MHSHOW
With this environment variable, you can specify an additional user
profile (file) to be read by mhshow, in addition to the
mhn.defaults profile.
$MHSTORE
With this environment variable, you can specify an additional user
profile (file) to be read by mhstore, in addition to the
mhn.defaults profile.
$MAILDROP
This variable tells inc the default maildrop. This supersedes the
“MailDrop” profile entry.
$MAILHOST
This variable tells inc the POP host to query for mail to incorpo‐
rate. See the inc(1) man page for more information.
$USERNAME_EXTENSION
This variable is for use with username_extension masquerading.
See the mh-tailor(5) man page.
$SIGNATURE
This variable tells send and post your mail signature. This super‐
sedes the “Signature” profile entry, and is not used when the
“Local-Mailbox” profile component is set.
$USER
This variable tells repl your user name and inc your default mail‐
drop: see the “MailDrop” profile entry.
$HOME
This variable tells all nmh programs your home directory
$TERM
This variable tells nmh your terminal type.
The environment variable $TERMCAP is also consulted. In particu‐
lar, these tell scan and mhl how to clear your terminal, and how
many columns wide your terminal is. They also tell mhl how many
lines long your terminal screen is.
$MHMTSCONF
If this variable is set to a non-null value, it specifies the name
of the mail transport configuration file to use by post, inc, and
other programs that interact with the mail transport system,
instead of the default. See mh-tailor(5).
$MHMTSUSERCONF
If this variable is set to a non-null value, it specifies the name
of a mail transport configuration file to be read in addition to
the default. See mh-tailor(5).
$MHTMPDIR $TMPDIR
These variables are searched, in order, for the directory in which
to create some temporary files.
$MHLDEBUG
If this variable is set to a non-null value, mhl will emit debug‐
ging information.
$MHPDEBUG
If this variable is set to a non-null value, pick will emit a rep‐
resentation of the search pattern.
$MHWDEBUG
If this variable is set to a non-null value, nmh commands that use
the Alternate-Mailboxes profile entry will display debugging
information about the values in that entry.
$PAGER
If set to a non-null value, this supersedes the value of the
default built-in pager command.
$editalt
This is the alternate message.
This is set by dist and repl during edit sessions so you can
peruse the message being distributed or replied to. The message
is also available, when the -atfile switch is used, through a link
called “@” in the current directory if your current working direc‐
tory and the folder the message lives in are on the same UNIX
filesystem, and if your current working directory is writable.
$mhdraft
This is the path to the working draft.
This is set by comp, dist, forw, and repl to tell the whatnowproc
which file to ask “What now?” questions about.
$mhaltmsg
dist and repl set $mhaltmsg to tell the whatnowproc about an
alternate message associated with the draft (the message being
distributed or replied to).
$mhfolder
This is the folder containing the alternate message.
This is set by dist and repl during edit sessions so you can
peruse other messages in the current folder besides the one being
distributed or replied to. The environment variable $mhfolder is
also set by show, prev, and next for use by mhl.
$mhdist
dist sets $mhdist to tell the whatnowproc that message re-distri‐
bution is occurring.
$mheditor
This is set by comp, repl, forw, and dist to tell the whatnowproc
the user's choice of editor (unless overridden by -noedit).
$mhuse
This may be set by comp.
$mhmessages
This is set by dist, forw, and repl if annotations are to occur.
$mhannotate
This is set by dist, forw, and repl if annotations are to occur.
$mhinplace
This is set by dist, forw, and repl if annotations are to occur.
FILES
$HOME/.mh_profile The user profile
or $MH Rather than the standard profile
<mh-dir>/context The user context
or $MHCONTEXT Rather than the standard context
<folder>/.mh_sequences Public sequences for <folder>
SEE ALSOenviron(5), mh-sequence(5), nmh(7)HISTORY
The .mh_profile contains only static information, which nmh programs
will NOT update. Changes in context are made to the context file kept
in the users nmh directory. This includes, but is not limited to: the
“Current-Folder” entry and all private sequence information. Public
sequence information is kept in each folder in the file determined by
the “mh-sequences” profile entry (default is .mh_sequences).
The .mh_profile may override the path of the context file, by specify‐
ing a “context” entry (this must be in lower-case). If the entry is
not absolute (does not start with a “/”), then it is interpreted rela‐
tive to the user's nmh directory. As a result, you can actually have
more than one set of private sequences by using different context
files.
BUGS
There is some question as to what kind of arguments should be placed in
the profile as options. In order to provide a clear answer, recall
command line semantics of all nmh programs: conflicting switches (e.g.
-header and -noheader) may occur more than one time on the command
line, with the last switch taking effect. Other arguments, such as
message sequences, filenames and folders, are always remembered on the
invocation line and are not superseded by following arguments of the
same type. Hence, it is safe to place only switches (and their argu‐
ments) in the profile.
If one finds that an nmh program is being invoked again and again with
the same arguments, and those arguments aren't switches, then there are
a few possible solutions to this problem. The first is to create a
(soft) link in your $HOME/bin directory to the nmh program of your
choice. By giving this link a different name, you can create a new
entry in your profile and use an alternate set of defaults for the nmh
command. Similarly, you could create a small shell script which called
the nmh program of your choice with an alternate set of invocation line
switches (using links and an alternate profile entry is preferable to
this solution).
Finally, the csh user could create an alias for the command of the
form:
alias cmd 'cmd arg1 arg2 ...'
In this way, the user can avoid lengthy type-in to the shell, and still
give nmh commands safely. (Recall that some nmh commands invoke oth‐
ers, and that in all cases, the profile is read, meaning that aliases
are disregarded beyond an initial command invocation)
nmh-1.6 February 16, 2014 MH-PROFILE(5)