All LISTSERV maintainer commands require a password for validation when issued by email. Commands issued by TELL or SEND from the local host or via the LCMD utility do not require password validation. (Commands issued by LCMDX do require password validation. LCMDX, the LISTSERV TCPGUI demonstration program, is not the same as the LCMD utility shipped with LISTSERV.)

DEBUG FLAGS [update1 [update2 [...]]]

Each update parameter has the format:


where ‘flag’ can be either the name of a debug flag or its corresponding hex value. A plus sign turns on the flag, minus turns it off, no sign sets the specified flag and clears all others. For instance,


The command updates the session debug flags as requested, then displays a summary:

* Debug flags for this session: 00000022
* 00000001 TRACE_DIST       [Trace DISTRIBUTE processing - OFF]
* 00000002 TRACE_MIME        Trace MIME parser
* 00000004 TRACE_LISTS      [Trace (a few) list-related functions - OFF]
* 00000008 TRACE_SPAM       [Trace spam filter calls - OFF]
* 00000010 TRACE_EMM        [Trace Embedded Mail-Merge processor - OFF]
* 00000020 TRACE_DEV         Temporary ad hoc tracing for development use
* 00000040 TRACE_FSAV       [Trace FSAV calls - OFF]
* 00000080 TRACE_LDAP_CALLS [Trace LDAP library calls - OFF]
* 00000100 TRACE_LDAP_DATA  [Trace data obtained from LDAP - OFF]
* 08000000 HOLD_DISTBG      [Do not process background DISTRIBUTE jobs - OFF]
* 10000000 HOLD_XB64        [Hold X-B64 jobs instead of processing them - OFF]
* 20000000 KEEP_JOBFILES    [Keep successfully processed job files - OFF]
* 40000000 TRACE_TCPGUI     [Additional TCPGUI tracing - OFF]

Flags that have not yet been assigned a function will display as RESERVED in the summary and do nothing. The TRACE_DEV flag is used by L-Soft Development to trace various aspects of whatever is being worked on at the time. While TRACE_DEV may be enabled by site maintainers (and in certain cases the support department may request that TRACE_DEV be enabled for debugging purposes), the results will vary depending on the build (and will not be publicly documented for that reason).

Any changes made using the DEBUG FLAGS command are for the current session only (they will be reset when LISTSERV is restarted). For certain purposes it can make sense to have some flags permanently turned on, and the DEBUG_FLAGS site configuration variable remains available for those special cases.

FOR user command

Execute a command on behalf of another user (LISTSERV maintainers only).

Note that this command is provided for debugging purposes only -- it provides a method for a LISTSERV maintainer to send commands “from” the specified user.

It is not recommended to use this command syntax in production, for instance to issue SET or SUBSCRIBE or UNSUBSCRIBE commands on a user’s behalf. For instance, the LISTSERV maintainer should use, respectively, the “SET listname options FOR userid@host”, “ADD listname userid@host”, or “DELete listname userid@host” syntaxes in preference to the “FOR userid@host command” syntax.

Lists [option]

LISTSERV maintainers have a few additional options for the Lists command.


All known lists, one line per list, sent as a (large!) file. Only LISTSERV maintainers may request this list, as it has become a favorite pastime of Internet mailbombers to issue LIST GLOBAL commands on behalf of users whose mailboxes they wish to bomb. You should direct users who request “the whole list of lists” to L-Soft’s CataList service at

Additional local management options available for site maintainers are:

OWNED BY internet_address

Returns a list of local lists owned by the userid@host specified. Wildcards are acceptable.

MODerated BY internet_address

Returns a list of local lists moderated by the userid@host specified. Wildcards are acceptable.


Regenerate all LISTSERV network tables, or just compile the links weight file (debugging command). This happens automatically when LISTSERV is rebooted if a new BITEARN NODES file is found. Otherwise you should issue a NODESGEN whenever you update BITEARN NODES.

PUT listname LIST

Create a new list. Requires the LISTSERV maintainer's personal LISTSERV password for authentication.  You may specify initial subscribers, one per line, following the list header when creating a list. See also the PUTALL command in the Site Manager’s Manual for LISTSERV.

LISTSERV's CREATEPW is required for validation of this command when it is issued from a remote node.  It is unlikely that this will happen today as this tended to be a function restricted to z/VM servers running on BITNET, and we recommend that CREATEPW on a modern LISTSERV server be set to the special value *NOPW* to disable it.

PWC function

Password file management:

ADD user newpw

Define a password for the specified user

DELete user

Delete password for that user

Query user

Query the password of the specified user

Note: The PWC QUERY function does not actually return the password under LISTSERV 15.5 or later unless SIGNUP_ENCRYPT_PASSWORDS is set to 0 (and the user created their password after that).  Instead, LISTSERV simply acknowledges that the user has set a password, for instance,

john@EXAMPLE.COM has been assigned a password by John Doe <john@EXAMPLE.COM> on Tue, 12 Mar 2019.

Disabling password encryption is NOT RECOMMENDED.  If a user has forgotten his or her password, they should simply issue the PW REP command with a new password.

REGister <name | OFF | QUERY> FOR user

Set or delete the "real name" associated with a user’s SIGNUP FILE entry.  

Or, in LISTSERV 16.5 or later, query the signup database to see what name is registered for a given user.

Note: This command should ALWAYS be used in preference to editing or viewing the SIGNUP files by hand.  The SIGNUP files are not plain text and are not meant to be edited or viewed manually.

Documented Restriction: The QUERY subcommand is available only in LISTSERV 16.5 and later, and may be used to query a single user's registration status.  It is not intended to be used, for instance, to produce a list of all registered LISTSERV users and their "real name" fields.  For instance,


will fail with the error

Wildcards in the target address are meaninful only with REGISTER OFF. That is, while "REGISTER  OFF FOR *@XYZ" is  a valid command, the  meaning of a command like "REGISTER John Doe FOR *@XYZ" is difficult to define.

As implied, this error is thrown for any attempt to perform REGISTER QUERY for a wildcarded address.


SERVE user OFF permanently suspends access from an abusive user or gateway (restore service with SERVE user).

Adding “DROP” (for example, SERVE user OFF DROP) to the command is identical to SERVE user OFF except that the postmaster will not receive any notification messages from LISTSERV when/if the user continues to try to post.

Issuing a SERVE LIST command causes LISTSERV to return a list of all users who are currently served off or who are spam-quarantined.

For instance,

> serve list

JOE@EXAMPLE.COM                DROP 2003-08-20 15:51:20 by nathan@EXAMPLE.COM

FOOBAR@EXAMPLE.EDU             HARD 2003-04-07 14:55:29 by NATHAN@EXAMPLE.COM

BLAB@FOO.EXAMPLE.COM           SOFT 2004-09-14 10:53:18

SPAMMER@SPAMDOMAIN.COM         SPAM 2003-08-20 15:50:55

4 matching entries.


(LISTSERV HPO 16.5 and following)

SHOW DOWNTIME invokes a built-in downtime monitor.  LISTSERV basically keeps track of when it is up, and LISTSERV maintainers can use this privileged command to see when it was down and how good its uptime has been a particular month (or over a period of several months).  The command syntax is:

SHOW DOWNtime [yyyymm1[-[yyyymm2]]]

Given a hypothetical command like

SHOW DOWNTIME 201801-201804

the output looks like this:

Downtime started  Downtime ended        Duration
----------------  --------------        --------
2018-01-17 20:03  2018-01-17 20:06         4 min
2018-01-17 20:13  2018-01-17 20:13         1 min
2018-03-15 03:06  2018-03-15 03:06         1 min
2018-03-15 03:08  2018-03-15 03:09         2 min
2018-04-12 03:06  2018-04-12 03:06         1 min
2018-04-16 20:01  2018-04-16 20:06         6 min
2018-04-16 20:32  2018-04-16 20:33         2 min
2018-04-16 21:07  2018-04-16 21:08         2 min
2018-04-16 22:18  2018-04-16 22:28        11 min
                                         30 min (99.982% uptime)

If there is no downtime in the specified period, LISTSERV simply responds,

There was no downtime in the specified range.

The first time LISTSERV is started, it assumes that there has been no downtime to date in the current month, simply because it is a binary state with no "don't know" option. From that point on, it assumes that every future time period is a downtime period unless marked otherwise as time progresses. DST will cause a false positive when jumping forward by one hour, and will only see 1h of downtime if you are down for 2h during the backward jump.


Stop the server, and (optionally) restart it immediately (by specifying either REBOOT or REIPL -- the two options are synonymous). This is available on all platforms.

Note: This command restarts LISTSERV only.  It does not reboot the machine on which LISTSERV is running.  Under Windows, it also does not restart the SMTPL.EXE "listener", which may be required if configuration changes are made which affect SMTPL.