L-Soft international, Inc.
List Owner's Manual
LISTSERV®, version 1.8d
5 May 2000
(For a quick reference card of LISTSERV commands, send the command INFO REFCARD to LISTSERV.)
This appendix is divided into two parts, corresponding to those commands available for use by the general user and for use by list owners and file owners. Non-privileged users can send commands by mail or by interactive commands. (Note that interactive commands can only be sent if a two-way NJE or MSGD connection exists.) Privileged users can send commands by mail, interactive commands (subject to the same restriction previously noted) or via the console (VM) or the LCMD utility (non-VM).
Unless otherwise noted, commands are listed in alphabetical order, with the minimum acceptable abbreviation in capital letters. Angle brackets are used to indicate optional parameters. All commands which return a file accept an optional 'F=fformat' keyword (without the quotes) that lets you select the format in which you want the file sent; the default format is normally appropriate in all cases. Some esoteric, historical or seldom-used commands and options have been omitted.
Note that some commands are not available on all platforms; these commands are marked appropriately.
Continuation cards (see Chapter 2 in the
Developer's Guide for
LISTSERV regarding LISTSERVís Command Jobs Language) can be used to
split long commands (for instance, ADD commands for users with long X.500
addresses) into two or more 80-character cards. In that case you must insert a
"// " string before the command text and a comma at the end of each line of the
command so that CJLI considers it as a control card and performs the required
concatenation. For instance,
// QUIET ADD MYLIST firstname.lastname@example.org ,
or, for instance, for a large GETPOST job,
// GETPOST MYLIST 10769-10770 10772 11079 11086 11095 11099-11100 11104 ,
11111 11115 11118 11121 11124 11131 11144 11147 11153 11158 11166 11168
Be sure to put a space before the comma at the end of the first line, as
LISTSERV will not add the space for you.
6.1.1. List subscription commands (from most to least important)
SUBscribe listname [full_name | ANONYMOUS] [WITH options]
The SUBscribe command is LISTSERV's basic command, issued by
users to join mailing lists. This command can also be used to change one's
"full_name" field in LISTSERV's SIGNUP database (simply reissue the command with
the changed name). Note that the full_name is not
required if the user has previously signed up to lists on the same LISTSERV
server, or if the user has previously registered in LISTSERV's SIGNUP database
by using the REGISTER (q.q.v.) command.
LISTSERV 1.8c and later supports the following syntax:
SUBSCRIBE listname ANONYMOUS
This indicates that the user wishes to join the list anonymously, that is,
without specifying a name. The CONCEAL subscription option is
automatically set, granting the subscriber the maximal level of protection
LISTSERV 1.8d and later supports the following additional syntax:
SUBSCRIBE listname full_name WITH option1 option2 ...
This syntax allows you to "preset" subscription options at subscribe time. For
instance, you might want to subscribe to MYLIST-L in order to be able to search
its archives, but don't want to receive postings. You would use the command
SUBSCRIBE MYLIST-L Joe User WITH NOMAIL
Or you might want to receive individual postings with the SUBJecthdr
option and receive copies of your own postings instead of the standard
acknowledgement that your message was distributed to the list:
SUBSCRIBE MYLIST-L Joe User WITH SUBJecthdr REPRO NOACK
JOIN listname [full_name | ANONYMOUS]
JOIN is a synonym for SUBscribe.
SIGNOFF listname|*|* [(NETWIDE]
The SIGNOFF command allows the user to cancel his or her
subscription to lists. SIGNOFF requires a qualifying
parameter, as follows:
listname Sign off of the specified list
* Sign off of all lists on that server
* (NETWIDESign off of all lists in the LISTSERV network
The "* (NETWIDE parameter causes the LISTSERV server to forward a copy of
the signoff request to all other registered LISTSERV servers. This is a good
option for a user who is changing service providers or otherwise losing a
specific address that will not be forwarded. Please note that this parameter
will not remove the user from non-LISTSERV lists or from LISTSERV lists
running on non-registered sites.
LISTSERV will attempt to sign off the address it finds in the RFC822 "From:"
line and will not "fuzzy match" for "similar" addresses.
UNSUBscribe listname|*|* [(NETWIDE]
UNSUBscribe is a synonym for SIGNOFF.
CHANGE listname|* newaddr
This form of the CHANGE command can be used by any
subscriber and results in a cookie being sent to the new address. This cookie
MUST be confirmed by the new address, exactly as it was entered, or the command
will fail. This is the only case where a 1.8d cookie must be confirmed by a
specific address. Note that this assumes that the user still has login access to
both addresses, or at least the ability to send mail from the old address.
SET listname option1 [option2 ...]
Allows the user to change his or her subscription options without administrative
intervention. The options available to be changed are as follows:
ACK A mail message acknowledging the receipt and distribution
of the user's posting is sent back to the user.
NOACK No posting acknowledgement is sent. In general, this
setting should only be used if the user has also set himself to REPRO, as it is
desirable in most cases that some indication of whether or not the posting was
received by LISTSERV be sent.
MSGack An interactive message is sent to acknowledge receipt
and distribution. Note that this works only if both the machine running LISTSERV
and the user's machine have NJE connectivity (e.g., BITNET). If NJE connectivity
is not available on both ends, this option is effectively the same as NOACK.
CONCEAL Allows the user to be concealed from the REVIEW
command. Note that the list owner or LISTSERV maintainer can always get the
complete list of subscribers, regardless of this setting.
NOCONCEAL "Unhides" the user
Files/NOFiles These options toggle the receipt of non-mail
files from the list. Note that this is NJE-specific, and thus obsolete for
systems without NJE connectivity, but retained for compatibility.
Mail/NOMail These options toggle the receipt of mail from the
list. Users who will be away from their mail for an extended period of time may
prefer to simply turn the mail off rather than to unsubscribe, particularly if
subscription to the list is restricted in some way.
Note that for backward compatibility, the command SET listname MAIL sent by a
user who is set to DIGEST but not also set to NOMAIL will cause the user to be
set to NODIGEST (the behaviour is identical for users set to INDEX but not to
NOMAIL). SET listname MAIL sent by users set to DIGEST/NOMAIL or INDEX/NOMAIL
will simply remove the NOMAIL setting and leave the user set to DIGEST or
INDEX as the case may be.
These options change the
format in which list mail is received by the subscriber.
DIGEST turns on digest mode, in which the subscriber receives
a digest of postings at set times dependent on how the "Digest=" keyword of the
list is set. INDEX turns on index mode, in which the
subscriber receives a daily listing of subjects posted to the list, from which
he or she may order postings of interest. NODIGEST and
NOINDEX toggle the mode back to individual postings sent as
received by LISTSERV. Note that these options are interrelated; setting one will
REPro/NOREPro Causes LISTSERV to send you a copy of your own
postings as they are distributed. Some users may prefer this behavior to the
ACK option (see above).
MIME/NOMIME Toggles MIME options on and off. Currently only
digests are available in MIME format. If DIGEST mode is set,
the user will receive a MIME digest instead of the regular plain-text digest.
Note that you must have a mail client that supports MIME digests (Pegasus is one
that does) or this setting will do you little good. This option is automatically
set at subscribe time for users who send their subscription command using a
MIME-compliant agent, unless "Default-Options= NOMIME" is specified for the
HTML/NOHTML Toggle the HTML function for digests and indexes
on and off. New in 1.8d.
TOPICS: ALL | [+/-]topicname
For lists with topics enabled (see the Topics= list header keyword), subscribe
or unsubscribe to topics. For instance, if a list has topics SUPPORT and CHAT, a
user could subscribe to CHAT by sending SET TOPICS +CHAT . Or
the user could unsubscribe to SUPPORT by sending SET TOPICS
-SUPPORT . Finally, the user can subscribe to all available topics by
sending SET TOPICS ALL .
Options for mail headers of incoming postings (choose one):
FULLhdr "Full" mail headers, (default) containing all of the
IETFhdr Internet-style headers.
SHORThdr Short headers (no routing information).
DUALhdr Dual headers, useful with PC or Mac mail programs
which do not preserve the RFC822 return email address.
SUBJecthdr "Full" mail headers (like the default) except that
setting this option tells LISTSERV to add the list's default subject tag to the
subject line of mail coming from the list. (See the listing in Appendix B for "Subject-Tag=" for more information.)
Note that if the user is set to SHORThdr (or any other header option other than
FULLhdr), LISTSERV will automatically switch the user to FULLhdr, as subject
tags require full headers. Under 1.8c subject tags are not generated for
messages sent without an RFC822 "Subject:" header; starting with 1.8d a subject
tag is generated (for subscribers with the SUBJecthdr option
set) even if the original message had no "Subject:" header. To turn the subject
tagging off, the user simply sends a new SET command with any
of the other header options (e.g., SET listname
FULLhdr) and the SUBJecthdr option is reset.
FULL822 Essentially the same as "full" mail headers, but with the
important difference that the recipient's email address is specified in the
"To:" line rather than the address of the list. "FULL822" headers should be used
with extreme caution, as they cause LISTSERV to create a separate mail envelope
with a single RFC821 RCPT TO: for each address so set. This behavior can
significantly affect the performance of both LISTSERV and of your external mail
SHORT822 Essentially the same as "short" mail headers, with
the same caveats as noted for FULL822.
Note that FULL822 and SHORT822 headers
should only be used if a specific problem indicates that they might solve the
problem. One possible use would be to determine which subscriber from a specific
site is causing the site to throw back delivery errors if that site does not
specify which RCPT TO: is generating the error. These headers should
never be used by default.
CONFIRM listname1 [listname2 ]...]]
The CONFIRM command should be issued when LISTSERV requests
it. A request for CONFIRM should not be confused with a
"command confirmation request" which requires an "OK" response. The
CONFIRM command is used in two cases:
6.1.2. Other list-related commands
GETPost listname post_number [post_number [...]]
GETPost is used after receiving the output of a SEARch
command to retrieve the postings you want from the SEARch output.
For instance, if you want postings numbered 1730, 1731, 1732, and 1840 from the
MYLIST list, send the command
GETPost MYLIST 1730-1732 1840
GETPost is analogous to the VM database command PRINT
The INDEX command sent to LISTSERV without further qualification
sends back the contents of the "root" level archive filelist on VM systems (LISTSERV
FILELIST) or archive catalog on non-VM systems (SITE.CATALOG plus the contents of
If the INDEX command is sent with the name of a list (e.g.,
INDEX MYLIST) or the name of a special filelist or catalog file (e.g.,
INDEX TOOLS , if TOOLS FILELIST on VM or TOOLS.CATALOG on non-VM
exists), LISTSERV sends back the contents of the specified filelist or catalog.
Several possibilities exist:
- When the list in question requires periodic subscription renewals (controlled by
the Renewal= keyword). In this case, the amount of time between the
request for confirmation and termination of the subscription is controlled by
the Delay() parameter of the Renewal= keyword;
the default is seven days.
- When LISTSERV's automatic address probing function fails and you receive a
message to that effect. The response time is controlled by the settings of the
Auto-Delete= keyword for the list in question.
Under VM, instead of the size in bytes, three separate VM-specific columns are
used. Please note the following definitions for them:
rec -fm Indicates whether the file is in a fixed or
variable record format
lrecl Logical record length. For a file with fixed
record format (F), this is the length of each record. For a file with
variable record format (V), this is the maximum record length.
nrecs Number of records (lines) in the file
Access the global list of lists maintained by LISTSERV. If no options are
specified, then LISTSERV returns only local lists, one line per list. The
available options are:
Detailed All local lists, complete with full header
Global xyz Only those whose name or title
SUMmary [host] Membership summary for all lists on
specified host, or the host to which the command is sent if no host is
SUMmary ALL Membership summary for all hosts (long
output, send request via mail!)
SUMmary TOTAL Membership totals only
"Lists Global" without a search string, which returns the entire list of
lists, may no longer be issued by general users. If you are asked about
this, you should advise users to use the "Lists Global /xyz" format to
search the list of lists, or use L-Soft's CataList service at
"Lists SUMmary", when issued to an unregistered host or to a host running in
STANDALONE mode will generate the response "No information available yet -
please try again later." because the file required for this function does not
Query your subscription options for a particular list (use the SET command to
change them). Using the "*" wildcard in place of the name of a single list
queries subscription options on all lists on the server.
REGister full_name | OFF
Register's the user's full name field in LISTSERV's SIGNUP files, or
changes the current value of that field. When a user's name is
registered, he or she can omit the full name field from subsequent
SUBscribe requests to that server. Sending "REGISTER OFF"
to LISTSERV deletes the user's entry from the SIGNUP file.
REView listname [(options]
Get information about a list, assuming the list header keyword "Review="
is set appropriately. REVIEW does not return address
information about subscribers who are set to CONCEAL.
The options are:
BY sort_field Sort list in a certain order:
Country by country of origin (ISO country codes)
Date by subscription date (newest to oldest)
Name by user name (last, then first)
NODEid by hostname/nodeid
Userid by userid
BY (sort_field1 sort_field2) You can specify more
than one sort field if enclosed in parentheses. For instance: BY
Countries Synonym of BY COUNTRY
Topics (New for 1.8d) Adds a breakdown of subscribers
per topic (if Topics= is defined in the list header)
at the end of the subscriber list. If you just want the breakdown, use
REVIEW listname SHORT TOPICS . This does
not show topics by individual subscribers (see the
QUERY command instead). If Topics=
is not enabled for a given list then this option is ignored.
LOCalDon't forward request to peers. This is only
useful if the list is peered; normally it should not be necessary to
issue this option.
MsgSend reply via interactive messages (BITNET users only)
NOHeaderDon't send list header, just send the subscriber list
ShortDon't list subscribers, just send the header and the
membership summary for the list.
Note that you can get a quick read of the number of subscribers on the list by
sending the command REVIEW listname SHORT NOHEADER.
SCAN listname text
Scan a list's membership for a name or address. Helpful if a user attempts to
send a SET command or an UNSUB command and is informed that their address is not
subscribed to the list. At the non-privileged level, this command will show all
non-concealed entries that match the search text, assuming that the list is set
to "Review= Public".
The following command is available on VM servers only:
- For mailing lists without an associated filelist or catalog, LISTSERV creates an
index "on the fly" containing entries for the accumulated notebook archives for
that list. If notebook archives are not enabled for the list, LISTSERV will
respond, "This server does not have any file by the name
- For mailing lists with an associated filelist or catalog, LISTSERV will append
the "on the fly" index of notebook archives to the entries in the associated
filelist or catalog. For instance, for a list called MYLIST with associated
catalog MYLIST.CATALOG, INDEX
MYLIST might return:
Figure 6.1. Sample output of an INDEX
* MYLIST FILELIST from LISTSERV@LISTSERV.MYCORP.COM
* The GET/PUT authorization codes shown with each file entry describe
* who is authorized to GET or PUT the file:
* ALL = Everybody
* CTL = LISTSERV administrators
* OWN = List owners
* PRV = Private, ie list members
* LMC = LISTSERV master coordinator
* N/A = Not applicable - file is internally maintained by LISTSERV
* MSC = Miscellaneous - contact administrator for more information
* Information files for MYLIST
* filename filetype GET PUT size (bytes) date time
* -------- -------- --- --- ------------ ---------- --------
MYLIST FAQ ALL MSC 22,528 1996-02-09 21:30:10
MYLIST WELCOME ALL MSC 279 1998-02-02 09:59:44
MYLIST FAREWELL ALL MSC 92 1998-02-05 11:06:14
* Archive files for the MYLIST list at LISTSERV.MYCORP.COM
* (monthly logs)
* filename filetype GET PUT size (bytes) date time
* -------- -------- --- --- ------------ ---------- --------
MYLIST LOG9603 LOG OWN 8,668 1998-05-27 15:29:57
MYLIST LOG9605 LOG OWN 7,865 1998-06-29 08:43:26
MYLIST LOG9606 LOG OWN 17,298 1998-07-23 12:46:20
- Lastly, for catalogs or filelists without an associated list, the INDEX
command returns only the entries in the catalog or filelist, since there are
no associated list archives to be indexed.
Stats listname [(options]
Get statistics about a list. NOT AVAILABLE ON NON-VM SERVERS. This
command is VM-specific, and was originally intended to return BITNET data. The
single option is:
LOCal Don't forward to peers
6.1.3. Informational commands
Obtain a list of commonly-used LISTSERV commands. Also explains how to get the
comprehensive reference card and tells who the (non-hidden) server manager(s)
Order a LISTSERV manual, or get a list of available ones (if no topic
was specified); or get information about a list. For Info
listname, the text in the INFO template form of
listname.MAILTPL is used; however, if listname.MAILTPL
does not exist or does not contain an INFO template form, the INFO
template form of DEFAULT.MAILTPL is used.
Query File fn ft [filelist] [(options]
(Available only on VM) Get date/time of last update of a file, and
GET/PUT file access code. The single option is:
Flags Get additional technical data (useful when reporting
problems to experts)
Find out who maintains the server and the version of the software and network
Display information as follows:
ALIAS node1 [node2 [...]] BITNET nodeid to Internet
DISTribute Statistics about DISTRIBUTE
HARDWare or HW Hardware
information; what kind of machine is LISTSERV running on?
LICense License/capacity information and software build date
LINKs [node1 [node2 [...]] Network links
at the BITNET node(s) in question
NADs [node1 [node2 [...]] Addresses
LISTSERV recognizes as node administrators for the specified site(s)
NODEntry [node1 [node2 [...]] BITEARN
NODES entry for the specified node(s)
NODEntry node1 /abc*/xyz
Just the ':xyz.' tag and all tags whose name starts with 'abc'
POINTs [ALL | list1 [list2...]] Graduated
(LISTSERV Classic) license point information. This information can help you plan
orderly expansion of your site if you are running with a graduated LISTSERV
Classic license. Under Lite this command shows Classic point usage.
STATs Usage statistics for the server (this is the
VERSion Same output as RELEASE command
If no function is specified, the output is per SHOW STATS.
The following options are available for VM servers only:
BITEARN Statistics about the BITEARN NODES file
DPATHs host1 [host2 [...]] DISTRIBUTE
path from that server to specified host(s)
DPATHs * Full DISTRIBUTE path tree
FIXes List of fixes installed on the server (non-VM
see SHOW LICENSE)
NETwork Statistics about the NJE network
PATHs snode node1 [node2 [...]] BITNET path
between 'snode' and the specified node(s)
6.1.4. Commands related to file server and web functions
GET fn ft [filelist] [(options] [F=fformat] [SPLIT=integer]
Order the specified file or package from LISTSERV. The single option is
VM-specific and is:
PROLOGtext xxxx Specify a 'prolog text' to be inserted
on top of the file
To control the format in which LISTSERV returns the file(s) to you,
you can specify the F=fformat parameter.
Supported formats are Netdata, Card, Disk, Punch, LPunch,
UUencode, XXencode, VMSdump, MIME/text, MIME/Appl, Mail
To split very large files into manageable chunks, you can specify the
SPLIT=integer parameter. The integer value is
the size you want the chunks to be generated, in kilobytes. For instance
if you were ordering a 2MB notebook log and wanted to break it into
100KB chunks, you would specify SPLIT=100. This is handy for
people whose mail systems place a limit on the size of an individual
mail message that may be received by a given user.
GIVE fn ft [filelist] [TO] userid@host
GIVE fn.ft [TO] userid@host
GIVE fn ft catalogname [TO] userid@host
(Note: Prior to 1.8d this command is not available on non-VM servers.)
Sends a file stored in a LISTSERV file archive to someone else. For
instance, you may want to send LISTSERV REFCARD to a new user. Rather
than retrieving LISTSERV REFCARD and then forwarding it to the user, you
simply issue a GIVE command to tell LISTSERV to send it directly. Note
that the token "TO" is optional. Examples:
For LISTSERV running under VM:
GIVE LISTSERV REFCARD email@example.com
GIVE LISTSERV REFCARD TO firstname.lastname@example.org
GIVE README TEXT MYLIST-L email@example.com
GIVE README TEXT MYLIST-L TO firstname.lastname@example.org
For LISTSERV running on non-VM hosts there are two syntaxes, depending
on whether or not you need to specify a catalog name for the file in
question. Note that the only real difference is whether or not you are
required to specify a dot between the filename and the extension.
GIVE LISTSERV.REFCARD email@example.com
GIVE LISTSERV.REFCARD TO firstname.lastname@example.org
GIVE README TXT MYLIST-L email@example.com
GIVE README TXT MYLIST-L TO firstname.lastname@example.org
Same as GET xxxx FILELIST. If no filelist is
specified, the default is LISTSERV FILELIST (on non-VM, SITE CATALOG is
returned as LISTSERV FILELIST in this case).
Define/change a "personal password" for protecting AFD/FUI subcriptions,
authenticating PUT commands, and so on.
ADD firstpw Define a password for the first
time, or after a PW RESET. Requires confirmation via
the "OK" confirmation method.
CHange newpw [PW=oldpw] Change your existing
password. If you do not include your old password for authentication, LISTSERV
will require confirmation via the "OK" confirmation method.
REP password Starting with 1.8d, this function
is a hybrid of "ADD" and "CHange".
If a password does not exist for the user, one will be added. If a
password does exist for the user, it will be changed (with confirmation
required via the "OK" confirmation method). "REP" was
added primarily for use by the web archive and administration interface
but can be used in e-mailed PW commands as well.
RESET Reset (delete) your password. This function
always requires confirmation via the "OK" confirmation method.
Same as GET
The following commands are available on VM servers only:
Automatic File Distribution. The functions are as follows:
ADD fn ft [filelist [prolog]] Add
file or generic entry to your AFD list
DELete fn ft [filelist] Delete file(s)
from your AFD list (wildcards are supported)
List Displays your AFD list
For node administrators:
FOR user ADD/DEL/LIST etc Perform requested
function on behalf of a user you have control over (wildcards are
supported for DEL and LIST)
File Update Information: same syntax as AFD, except
that FUI ADD accepts no 'prolog text'
6.1.5. Other (advanced) commands
DISTribute type source dest [options]
Note: Starting with 1.8d, the ability to send DISTRIBUTE jobs is limited
to LISTSERV Maintainers by default, and requires a password. This
section is retained for compatibility with 1.8c and earlier, and for
1.8d and later servers which have the DISTRIBUTE security feature turned
Distribute a file or a mail message to a list of users (see the Developer's
Guide for LISTSERV for more details on the syntax). The various
parameters are, briefly:
MAIL Data is a mail message, and recipients are defined by '<dest>'
FILE Data is not mail, recipients are defined by '<dest>'
RFC822 Data is mail and recipients are defined by the RFC822 'To:'/'cc:'
DD=ddname Name of DD holding the data to distribute (default:
<TO> user1 <user2 <...>> List
<TO> DD=ddname Use a DD called
ddname for the destination addresses, one recipient per line
Options for the general user:
ACK=NOne/MAIL/MSG Acknowledgement level (default: ACK=NONE)
CANON=YES 'TO' list in 'canonical' form (uid1 host1 uid2 host2...)
DEBUG=YES Do not actually perform the distribution; returns debug path
INFORM=MAIL Send file delivery message to recipients via mail
TRACE=YES Same as DEBUG=YES, but file is actually distributed
Options requiring privileges:
FROM=user File originator
FROM=DD=ddname One line: 'address name'
FOR user command
Execute a command on behalf of another user (for LISTSERV maintainers). Note
that generally this command should not be used for normal production
For lists running on VM servers, see also below at DATABASE.
The Search command syntax is similar to that of the
SEARCH/SELECT commands in the "old" database functions. A very basic
Search command for list MYLIST would look like this:
Search search_string IN MYLIST
You can also restrict your search by date, sender, or other criteria, e.g.,
Search search_string IN MYLIST SINCE 96/01/01
Search search_string IN MYLIST WHERE SENDER CONTAINS ERIC
etc. The specific syntax is outlined in LISTDB MEMO (available from LISTSERV with
the command "INFO DATABASE") and in the Developer's Guide for
LISTSERV. Note that the new Search command does not require
a CJLI job framework to operate; simply send the Search command in
the body of an email message to the appropriate server. LISTSERV will respond with
an index of the postings matching your criteria and instructions on how to use the
GETPost command to retrieve the posts you want.
Restore service to a user whose access to LISTSERV has been disabled. This
generally occurs when a user has sent 51 incorrect commands (raised from 21 in
1.8b) in a row to LISTSERV, which LISTSERV interprets as a possible mail loop.
(Note also that certain mail packages that send "Read:/Not Read:" notifications
back to LISTSERV will trigger this scenario after 51 iterations. The best
solution would be for the user to disable receipt notifications.) The user in
question cannot restore his or her own service; this command must be issued from
another userid. Note that if the user has been manually served out by privileged
user (a LISTSERV maintainer), the SERVE command must be issued
by a similarly-privileged user (who must also be a LISTSERV maintainer, although
naturally the same user who issued the SERVE OFF command can
issue the SERVE command). For 1.8d please note that the
THANKs command will not reset the serve-off counter (so
vacation messages or auto-replies that contain a sentence starting with
something like "Thanks for writing" will not defeat the system and users sending
them will eventually be served off instead of continuing to loop ad
You can send this command to check to see if the server is alive. If it is, the
server politely responds, "You're welcome!".
The following commands are available only on VM servers:
Access LISTSERV database(s). The functions are explained in detail in the
version of LISTDB MEMO available from VM servers, but the basic syntax is:
Search DD=ddname <ECHO=NO> Perform database search
(see the VM version of LISTDB MEMO for more information on this)
List Get a list of databases available from that server
REFRESH dbname Refresh database index, if suitably
Same as DATABASE
6.2.1. File management commands (for file owners only)
PUT fn ft <filelist <NODIST>>
Update a file you own. Options are:
<PW=password> Supply your password for command
The following options are VM-specific and will not work on the non-VM
The "NODIST" option prevents AFD and FUI distributions when the file is updated.
Other available VM only options include:
<CKDATE=NO> Accept request even if
the current version of the file is more recent than the version you sent
<DATE=yymmddhhmmss> Set file date/time
<RECFM=F <LRECL=nnn>> Select
fixed-format file (not to be used for text files).
<REPLY-TO=userid> Send reply to another user
<REPLY-TO=NONE> Don't send any reply
<REPLY-VIA=MSG> Request reply via interactive messages,
not mail (Requires NJE connectivity)
<"parameters"> Special parameters passed to FAVE
routine, if any
Standard parameters supported for all files:
TITLE=file title Change file "title" in filelist
The following commands are available on VM servers only:
Automatic File Distribution privileged commands. In addition to the AFD/FUI
functions listed above, a file owner may use the following function:
GET fn ft <filelist> Get a list of people subscribed to a file you own
GET fn FILELIST <(options>
Special options for filelists:
CTL Return filelist in a format suitable for editing and
NOLock Don't lock filelist (use in conjunction with CTL)
REFRESH filelist <(options>
Refresh a filelist you own. The single option is:
NOFLAG Don't flag files which have changed since last time as
updated (for AFD/FUI)
UNLOCK fn FILELIST
Unlock filelist after a GET with the CTL
option if you decide not to update it after all
An additional option available for list owners is
OWNed Returns a list of local lists owned by the invoker.
6.2.2. List management functions
Commands that support the QUIET keyword are marked (*)
ADD(*) listname user [full_name]
ADD(*) listname DD=ddname [IMPORT [PRELOAD]]
The first syntax is used to add an individual user to one of your lists, or
update his name field. Note that you can substitute an asterisk
("*") for full_name and LISTSERV will
substitute "<No name available>" in the list.
The second syntax is used for bulk ADD operations where a dataset
(DD=ddname) is used add multiple users, one address/name pair per line.
For bulk operations you may also use the IMPORT option, which
implies a QUIET ADD (in other words you do not need to specify
QUIET if you use IMPORT) and otherwise
vastly speeds up the ADD process by loosening syntax checking
and omitting success messages. The IMPORT PRELOAD option
appeared in 1.8d and is used to direct LISTSERV to preload the existing e-mail
keys in memory before starting the transaction, which speeds the operation up
considerably. This option is used primarily with DBMS lists to speed up bulk
adds. PRELOAD is not necessary for traditional LISTSERV lists
and does not normally lead to a significant performance improvement. However,
when importing a new list (no existing subscribers), it does reduce CPU usage
For a bulk ADD operation, the users are defined in a separate
dataset beginning on the line following the ADD command. For
ADD listname DD=ddname IMPORT
//ddname DD *
email@example.com User Name
firstname.lastname@example.org User2 Name
... more address/name pairs, one per line ...
Please see chapter 4.4
of the List Owner's Manual
for specific instructions for bulk ADD operations.
Same as ADD, but means "add the user on this peer, do not
forward this request to a (possibly) closer peer". For non-peered lists, is
functionally identical to ADD.
CHANGE(*) listname|* newaddr
CHANGE(*) listname|* oldaddr|pattern newaddr|*@newhost
The first form can be used by any subscriber and results in a cookie being sent
to the new address. This cookie MUST be confirmed by the new address, exactly as
it was entered, or the command will fail. This is the only case where a 1.8d
cookie must be confirmed by a specific address.
"Validate=" rules (as for a DELETE command). You can specify a
wildcard pattern for the old address and *@newhost for the new address to rename
certain addresses to a new hostname. The CHANGE1 template is sent unless you
Change log entries are made (CHANGE oldaddr newaddr)
and there is a new CHG_REQ exit point which allows you to reject the operation.
DELete(*) listname user [(options]
DELete(*) listname DD=ddname [BRIEF]
The first syntax is used to remove a single user from one of your lists, or from
all local lists if listname is '*' The available
Global Forward request to all peers
LOCal Don't try to forward request to closest peer if not found locally
TEST Do not actually perform any deletion (useful to test wildcard patterns)
The second syntax is used for bulk DELETE operations (similar
to a bulk ADD operation). See chapter 4.5 of the
List Owner's Manual
for details. The single available option is:
BRIEF Good for deleting wildcard patterns (such as
*@*) when you don't want a "userid@host has been deleted from
list xxxx" for each user deleted. Returns instead only a count of the users that
FREE listname <(options>
Release a held list. The single option is:
Global Forward request to all peers
GET listname <(options>
Get a copy of a list in a form suitable for editing and storing the list and
lock it so that other list owners can't modify it until you store it back (or
until you or they issue an UNLOCK command). The options
Global Forward request to all peers
HEADer Send just the header; on the way back, only the header
will be updated. This is the recommended way to modify your list header.
NOLock Do not lock the list
OLD Recover the "old" copy of the list (before the last
HOLD listname <(options>
Hold a list, preventing new postings from being processed until a
FREE command is sent. The single option is:
Global Forward request to all peers
MOVE(*) listname user <TO> node
Move a subscriber to another peer. Do NOT use this command to move users from
one list host site to another during migration. It is strictly for moving
subscribers from one peer to another peer.
listname DD=ddname Move several subscribers
to various peers
PUT listname LIST
Update a list from the file returned by a GET command. This is the standard "PUT
command" or "list PUT" referred to throughout this document.
Starting with LISTSERV 1.8d, use of the PUT command to store a list header with
new subscriber data at the bottom (e.g., an attempt to add subscribers "on the
fly") will result in only the header of the list being stored, and in the
generation of the following warning:
WARNING: new subscriber data was found in the replacement list you sent,
possibly due to the use of a signature file with an unusual separator line.
If you really meant to update the subscriber data, please resend your
request with the word "PUT" replaced with "PUTALL". For now, only the list
header will be updated.
PUTALL listname LIST
Starting with 1.8d, this command allows you to PUT an entire
list file, that is, the list header followed by the list of subscribers.
Query listname <WITH options> FOR user
Query the subscription options of another user (wildcards are supported).
* <WITH options> FOR user Searches all the lists you own for the specified user(s) with the
SET(*) listname options <FOR user>
Alter the subscription options for other users (wildcards are supported when
setting options for another user or set of users).
Additional options for list owners:
NORENEW/RENEW Waive subscription confirmation for this
NOPOST/POST Prevent user from posting to list
EDITor/NOEDITor User may post without going through
REView/NOREView Postings from user go to list owner or
moderator even if user is otherwise allowed to post
Unlock a list after a GET, if you decide not to update it after all, or unlock a
list if it has been locked by another list owner or by the LISTSERV maintainer.
Note that if you are not the person who originally locked the list, it is
considered good practice to ask the person who originally locked the list
whether or not they are done with the list before you unlock it.
The following commands are available only on VM servers:
EXPLODE listname <(options>
Examine list and suggest better placement of recipients, returning a
ready-to-submit MOVE job.
BESTpeers n Suggest the N best possible peers to add
Detailed More detailed analysis
FOR node Perform analysis as though local node were
PREFer node Preferred peer in case of tie (equidistant
SERVice Check to see that service areas are respected
With(node1 <node2 <...>>>) Perform
analysis as though specified nodes ran a peer
WITHOut(node1 <node2 <...>>>)
Stats listname (RESET
Resets (BITNET) statistics for the list.
Syntax of parameters
filelist = 1 to 8 characters from the following set: A-Z 0-9 $#@+-_:
fformat = Netdata, Card, Disk, Punch, LPunch, UUencode, XXencode, VMSdump,
MIME/text, MIME/Appl, Mail
fn = same syntax as 'filelist'
ft = same syntax as 'filelist'
full_name = firstname surname (*not* your e-mail address)
host = Internet hostname
listname = name of an existing list
node = BITNET nodeid or Internet hostname of a BITNET machine which
has taken care of supplying a ':internet.' tag in its BITEARN
pw = A password with characters from the set: A-Z 0-9 $#@_-?!|%
user = Any valid Internet address not longer than 80 characters; if
omitted, the 'hostname' part defaults to that of the command
Go to the top of this document
List Owner's Manual for LISTSERV®
Appendix B: List Keyword Reference for LISTSERV®
Appendix C: Sample Boilerplate Files
Appendix D: Related Documentation and Support
Appendix E: Acknowledgements