The "mj_shell" tool is for shell (or command line) administrators who
have access to the machine where Majordomo is running. It cannot be
accessed through email or the web, but if you have shell access it
will bypass the delays associated with email. All functionality of
the mj_shell is provided by the email parser. For more information,
send "help admin" to majordomo@openbsd.org
BEWARE: Using the "-p" option to specify a password will make your
password visible to other shell users, who can issue a command like
"ps -ax" to see your full command line.
The text which follows is simply a copy of the documentation from
the program:
------------------------------------------------------------------------
% pod2text bin/mj_shell
NAME
mj_shell - Majordomo command line interface
SYNOPSIS
mj_shell [-D] [-R] [-d domain] [-t topdir] [-p password] [command
[args]]
DESCRIPTION
mj_shell provides a command line interface to the Majordomo core
functionality. It provides both a single command interface, where a
command is given directly on the command line, and an interface into the
full text parser, where commands are parsed out of a file. Anything that
can be done through the email interface can be done through the shell
interface.
mj_shell also provides a convenient 'configedit' command that opens an
editor on a set of config variables and allows them to be edited
directly. Similarly, the 'get-edit' command will start a text editor
program to allow a file to be edited and replaced easily.
If called without a command file, mj_shell will enter an interactive
mode where you can enter commands and have their results returned
without rerunning mj_shell.
Executing single commands
mj_shell allows the user to execute a single command directly, just by
placing it and its arguments on the command line:
mj_shell who mylist
mj_shell subscribe mylist whoever@example.com
For a list of supported commands, execute
mj_shell help topics
Passwords
The -p switch specifies that the command should be executed with the
given password. For general information on how passwords work in
Majordomo, execute
mj_shell help admin_passwords
Command modes
The specific behavior of most of the commands can be altered through the
use of command modes. Most commands take the 'noinform' and 'nolog'
modes, which turn off owner information and logging, respectively. The
subscribe command takes the 'nowelcome' mode, which prevents the
introductory welcome message from being sent out to new subscribers.
To specify one or more modes, separate them from the command with
hyphens, as follows:
mj_shell -p pass subscribe-noinform-nowelcome mylist user@example.com
For information on which commands take which modes, execute
mj_shell help admin_commands
Commands taking multiple or array arguments
Some commands, like subscribe, can take multiple arguments (in this
case, a list of addresses to subscribe). Others, like configset,
sometimes take array arguments. These are handled in mj_shell by placing
the multiline part of the command in a file and specifying the file
using the -f switch. For example, if 'addr_file' contains a list of
addresses, one per line, you can do the following:
mj_shell -p pass -f addr_file subscribe-noinform-nowelcome mylist
For another example, if the file 'inform_file' contains the following:
subscribe : all : ignore
unsubscribe : all : ignore
Then
mj_shell -p pass -f inform_file configset mylist inform
would set the inform variable such that the list owner would not be
informed of subscribe and unsubscribe requests. (Execute
mj_shell help configshow
mj_shell help configset
for more information about configuration variables.)
Executing multiple commands
For performing more involved tasks, mj_shell gives access to the full
Majordomo text parser, which is also used to parse commands from the
body of an email message. Place multiple commands in a file, and pass
the filename to mj_shell using the -F switch.
For example, if 'cmd_file' contains the following lines:
subscribe mylist usera@example.com
subscribe mylist userb@example.com
show mylist usera@example.com
show mylist userb@example.com
all of the commands can be executed by calling mj_shell as follows:
mj_shell -p pass -F cmd_file
The text parser also allows some advanced features. Multiline arguments
can be specified by a syntax similar to the shell 'here document'
feature. An example is simpler than a description; you could place the
following in 'cmd_file':
subscribe mylist << ENDA
usera@example.com
userb@example.com
ENDA
show mylist << ENDB
usera@example.com
userb@example.com
ENDB
configset mylist inform << AAA
subscribe : all : ignore
unsubscribe : all : ignore
AAA
to additionally set the 'inform' variable. (In this example the syntax
is not much shorter, but for longer address lists it can save much
typing.) The '<<' begins the multiline argument, and must be at the end
of the command line. The tag must consist of at least three uppercase
letters, and appears both directly after the '<<' and alone on a line
after all of the data.
Multiline arguments can also be included in external files. The external
files given using one or more -f options on the mj_shell command line,
and their contents are referenced by placing '<@' followed by a number;
using '3' would reference the file named by the third -f option. For
example, if the file 'addrs' contains:
usera@example.com
userb@example.com
'inform' contains:
subscribe : all : ignore
unsubscribe : all : ignore
and 'commands' contains:
subscribe mylist <@1
show mylist <@1
configset mylist inform <@2
then the command
mj_shell -F commands -f addrs -f inform
would do the same as the previous example.
In addition, the text parser supports the special 'default' command,
which sets some default parameter for following commands. The 'default
list' command (followed by a list name) sets the default list, while the
'default password' command sets the password. Thus the 'commands' file
in the previous example can be replaced by:
default list mylist
subscribe <@1
show <@1
configset inform <@2
The default list or password can be cleared by using 'default list' or
'default password' with no list or password.
In interactive mode, multiline arguments and the 'default delay,'
'default password,' and 'default user' commands are supported. Use the
command
mj_shell help default
to learn more about the default command.
The configedit command
There is one command which is exclusive to mj_shell, the configedit
command. This enables a list owner to retrieve the values of one or more
configuration variables, modify them in an editor, and save the new
values in a single operation.
Note that the configedit command is not supported on all platforms, but
can be emulated by the following set of operations:
mj_shell -p pass configshow list vars > tempfile
(edit tempfile)
mj_shell -p pass -F tempfile
Switches
Here are all of the command line switches that mj_shell accepts:
-D Specifies that full debugging information will be sent to standard
error.
-d *domain*
Specifies the domain of lists to operate on. The default domain is
chosen at install time; for installations supporting more than one
domain, this switch must be used to distinguish between them.
-F *filename*
Specifies that the text parser will be run on *filename*. All
non-option arguments on the mj_shell command line will be ignored.
-f *filename*
Specifies that the contents of *filename* will be used either as a
multiline argument for a given command, or for an external argument
for a '<@' specifier in the text parser.
More than one -f argument is permitted, though multiple instances
are only used by the text parser.
*filename* can also be the string '-', in which case standard input
is read.
-l *language*
Specifies the user's preferred language. This should be in the
standard two-letter (ISO 639) form, plus subtags as outlined in RFC
1766. (For example, en for English, de for German, or no-nynorsk for
Norwegian/Nynorsk.) Case is not significant. Multiple preferences
can be specified in order by separating them with commas or using
multiple -l options.
Note that the server may not have all files available in all
supported languages. If a file does not exist in the preferred
language, the other supplied languages are searched in order and
finally English is used if no other choice is available. In
conformance with RFC 1766, tags are not considered separately from
tags, so in the Nynorsk example above, plain Norwegian would not be
returned unless it was listed as an additional preference.
-P Use a pager to display the results. It is also possible to achieve
this effect in interactive mode with the following command:
default display pager
-p *password*
Specifies a password that a command will be run with, or the default
password for commands run by the text parser.
-R As a debugging aid, specifies that mj_shell should dump the request
structures sent to the Majordomo library and the result structures
received from the library.
-t *directory*
This specifies the directory which is the top level of the Majordomo
lists directory structure. This is generally compiled in at
installation time, but some sites may have different directory
structures.
-u *user*
Specifies the user that commands will run as. Note that this does
not change the system UID, but only affects the user (really the
email address) that is passed to the Majordomo core for access
checking and which is used as the default for certain commands.
Normally the user is determined from a combination of environment
variables and the result of the 'hostname' function, but this
information is not always accurate.
Please note that this can be used for nefarious purposes, but that
it does not pose any additional security risk since mail sent to the
email processor can be trivially forged. List owners are strongly
urged not to rely on users and email addresses for security, but
instead to rely on passwords and to enable confirmation on all
security sensitive commands.
-Z Specifies that UID/GID tests will not be done. Normally mj_shell
will check to make sure that it is running as the user and group
specified during installation. Failure of this test generally
indicates an installation error; either the wrappers or the scripts
themselves shouldf be installed setuid and setgid to the Majordomo
user and group. Using the -Z option enables mj_shell to run even
with this misconfiguration, though other operations may fail and
file ownerships will not be set correctly.
This option is mainly used by the test scripts, so that they can run
before the software has been completely installed.
--aliascomplete
When running in interactive mode, mj_shell provides for completion
of Majordomo commands. It does not normally complete command aliases
(such as 'remove' for 'unsubscribe') but supplying this switch will
cause it to do so.
--id
Forces mj_shell to print out the real and effective user and group
IDs at the beginning of execution. Used for debugging.
--noornaments
When running in interactive mode, mj_shell will use ornamentation to
spruce up the prompt of the underlying ReadLine library supports it.
The --noormanemts switch will turn these off.
See Also:
help admin
help admin_commands
help configset
help configshow
help default
For a list of all help topics send this one-line message
help topics
to the server at majordomo@openbsd.org