[LISTSERV logo] [Online documentation]

L-Soft international, Inc.

List Owner's Manual


LISTSERV®, version 1.8d

5 May 2000

Revision 1

Appendix A: LISTSERV Command Reference for LISTSERV® version 1.8d

(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 someone.with.a.real.long.userid.that.wraps@hishost.com ,
His Name

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. General Commands

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:


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 available.

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


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:


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 negate another.

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 list.

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 routing information.

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 system.

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 .
INDex [listname]

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 SYSTEM.CATALOG).

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:

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

Lists [option]

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 information.

Global xyz Only those whose name or title contains 'xyz'

SUMmary [host] Membership summary for all lists on specified host, or the host to which the command is sent if no host is specified

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 http://www.lsoft.com/catalist.html.

"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 exist.

Query listname

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 (NODE NAME)

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:

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) are.

Info [topic|listname]

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 data files.

SHOW [function]

Display information as follows:

ALIAS node1 [node2 [...]] BITNET nodeid to Internet hostname mapping

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 default option)

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 VM Syntax:
GIVE fn ft [filelist] [TO] userid@host
Non-VM Syntax:
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 joenewuser@hishost.com
GIVE LISTSERV REFCARD TO joenewuser@hishost.com

GIVE README TEXT MYLIST-L joenewuser@hishost.com
GIVE README TEXT MYLIST-L TO joenewuser@hishost.com

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. Examples are:

GIVE LISTSERV.REFCARD joenewuser@hishost.com
GIVE LISTSERV.REFCARD TO joenewuser@hishost.com

GIVE README TXT MYLIST-L joenewuser@hishost.com
GIVE README TXT MYLIST-L TO joenewuser@hishost.com

INDex [filelist|catalog] 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).

PW function

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.

SENDme Same as GET

The following commands are available on VM servers only:

AFD 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 off.

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:' fields


DD=ddname Name of DD holding the data to distribute (default: 'DD=DATA')


<TO> user1 <user2 <...>> List of recipients

<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 information

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 purposes.


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

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.

SERVE user

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 infinitum).


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:

DATAbase function

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 privileged



6.2. List Owner and File Owner Commands

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 authentication

The following options are VM-specific and will not work on the non-VM servers.

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 entry

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 storing back

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 filelist after a GET with the CTL option if you decide not to update it after all

Lists [option]

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 somewhat.

For a bulk ADD operation, the users are defined in a separate dataset beginning on the line following the ADD command. For instance,

ADD listname DD=ddname IMPORT
//ddname DD *
userid@host.com User Name
userid2@host.com 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.

The list owner form does not use cookies but simply applies the standard "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 specify QUIET.

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 options are:

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 were deleted.

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 are:

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 PUT)

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 specified option(s).

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 user

NOPOST/POST Prevent user from posting to list

EDITor/NOEDITor User may post without going through moderator

REView/NOREView Postings from user go to list owner or moderator even if user is otherwise allowed to post

UNLOCK listname

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 'node'

PREFer node Preferred peer in case of tie (equidistant peers)

SERVice Check to see that service areas are respected

With(node1 <node2 <...>>>) Perform analysis as though specified nodes ran a peer

WITHOut(node1 <node2 <...>>>) Opposite effect

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
            NODES entry
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® Version 1.8d
Appendix C: Sample Boilerplate Files
Appendix D: Related Documentation and Support
Appendix E: Acknowledgements