MM reads certain specially-named files automatically, and they provide several ways of customizing MM. Actually, customizing by setting variables and mail aliases is a special case of this, since those settings are saved for future sessions in one of the specially-named files, .mminit, and MM then executes the set and define commands as it starts up.
The type of customizing described here is advanced and most users will not ever use it. Some users do like to take the time, however, and for them, MM can be made to act a bit differently.
The file .mminit contains set and define commands that will be executed when an MM process starts. The file is optional and can be created and maintained by MM's save-init command, which tells MM to update .mminit to include all current settings, namely define commands for all your personal mail-aliases, and set commands for any variables that have been changed.
You can also change .mminit yourself with an editor. You can add or remove set and define commands (no other commands apply). For best results, do this with no MM process running. If you suspend MM (leaving with quit or exit for example), change .mminit, and restart the suspended MM, anomalies may result because that MM process won't automatically re-read in the changed .mminit file (you could type take .mminit to run the commands in .mminit).
The file .mmfast is a processed version of .mminit that runs a little faster: MM uses .mmfast if it exists and is more recent than .mminit. MM updates .mmfast automatically right after .mminit when you save-init. If you have edited .mminit, then the next time MM starts up, .mminit will be the more recent of the two, and MM will read .mminit instead and rewrite .mmfast to match it. The variable fast-init-file, normally set to yes, makes MM use and update .mmfast, so you can turn off the use of .mmfast with set fast-init-file no and save-init if you want to.
The file .mmrc can contain any Top-Level MM commands that you would like executed when a new MM process starts. .mmrc is an optional file that you would create and maintain with an editor. The format is the same as for a file to be run with the take command, and the difference is that the .mmrc file gets taken automatically every time.
The commands in .mmrc are executed after .mminit. If .mmrc has any set or define commands that contradict .mminit, .mmrc's versions will override them because .mmrc's commands are executed second.
On the other hand, .mmrc is executed ahead of the automatic get command that is normally done to get your main mail file, so at the time .mmrc is run, there is no current mail file yet. If you want any commands in .mmrc to act on a mail file, include a get command first, like get, and then headers unseen or whatever. Including a get command overrides the automatic get, so it's not done twice (otherwise, the variable auto-startup-get, normally set to yes, controls the automatic get of the main mail file at startup).
For each mail file, you may also have a file with the mail file name plus .rc, which contains commands that will be executed when you get or examine that mail file. For example, when you give the command get oldmail, commands in oldmail.rc, if it exists, will be executed. You might for example want to show headers of some or all messages when you get the file, or set some variables differently, or even just echo a line or so of text explaining the file.
A file named mbox.rc would be executed when you get mbox, other than at startup. It might be useful if you have reset things in another mail file's .rc and want to set them back to normal when you return to mbox.
If you use the Berkeley mail program for mail, you may have created a .mailrc file for it. MM looks for a .mailrc at startup and reads in mail aliases from it before reading .mminit, so that in case of conflicts the definition in .mminit is the one used. The .mailrc aliases are kept separate, and save-init does not save .mailrc mail aliases into .mminit.
The way to run commands from a file manually (not automatically) is with the take command. Anything you could put in an .mminit or .rc file could also be put into a file to be run with take, if you don't want to run the commands every time you start MM or get a certain mail file.
A system file called mm.conf is read before any of your own files and sets some variables for all MM processes on the system. Check what's in it by typing more /usr/local/lib/mm/mm.conf at the UNIX shell prompt. You will see ordinary set commands, and you can override any or all of them in your own .mminit or rc files.