Once you’ve finished the LISTSERV installation, you’re ready to start LISTSERV and verify its successful installation. To do so, change your current directory to LSVROOT (as defined in the Makefile) and enter “./go”. LISTSERV will print some startup messages, then since this is the first time your server has been run, LISTSERV will generate a number of files needed to route mail. Presuming that you have already installed your product and maintenance licenses, you should see messages similar the ones below.

10 Jun 2019 10:59:33 LISTSERV(R) for unix version 17.0 starting...

10 Jun 2019 10:59:33  Copyright Eric Thomas 1986-2019

10 Jun 2019 10:59:33 Build date: 10 Jun 2019

10 Jun 2019 10:59:33

10 Jun 2019 10:59:33 SIGNUP files are being compressed...

10 Jun 2019 10:59:33 -> No entry removed.

10 Jun 2019 10:59:33 The network tables are outdated and must be rebuilt.

* Network tables generation process started - be patient...

Currently processed 500 nodes.

Currently processed 1000 nodes.


And once the table generation steps have finished you will see something like this:

* Step 6 complete - link weights file successfully compiled.


* Network tables generation completed successfully.

10 Jun 2019 10:59:39 Nearest backbone host is LISTSERV@PEACH.EASE.LSOFT.COM

10 Jun 2019 10:59:39 Nearest NJE host is LISTSERV@PSUVM

10 Jun 2019 10:59:39 Building list indexes...

10 Jun 2019 10:59:39 License activated: SERIAL=MYCORP-1, UNITS=0

10 Jun 2019 10:59:39 This license will expire on 26 Nov 2019

10 Jun 2019 10:59:39 Your maintenance contract will expire on 26 Nov 2019

10 Jun 2019 10:59:39 Cleaning up upload directory...

10 Jun 2019 10:59:39 -> No file deleted

10 Jun 2019 10:59:39 Initialization complete

10 Jun 2019 10:59:39 You can enter commands via the keyboard at any time

which confirms that you’ve successfully installed the LISTSERV server. To issue LISTSERV commands, press Ctrl-C and you will be prompted to enter a command. You can verify that your customized version of “go.user” was used with the RELEASE command. It will display, among other things, the address(es) of the LISTSERV postmaster(s) you entered in “go.user”. If not, then stop the server and make certain that LISTSERV owns the “go.user” file, and that execute permission is set for the file. To stop LISTSERV, hit Ctrl-C then enter “stop”.

Once you’ve verified that your LISTSERV server starts and accepts commands, you should check to make sure the mail interface is working properly. If you stopped LISTSERV, then restart it. After restarting LISTSERV, login to a different username and send mail to the LISTSERV account on your machine. Include one or more LISTSERV commands in the body of the mail message. Since you have yet to define any mailing lists to your server, commands like RELEASE, INFO and THANKS would be good choices. The mail interface notifies the server immediately upon arrival of new mail. So unless your system is heavily used when you try sending the message, a response should arrive within a few moments. If you don’t receive mail back from LISTSERV, check for syslog entries generated by the mail interface, lsv_amin. Also, check to see if there are any errors on the terminal/window where you’re running LISTSERV. If you started the server with “go bg” check the file “listserv.log” for error messages.

4.1 Register a LISTSERV personal password

Before going any further, start LISTSERV (if it isn’t already running) and create a password for your POSTMASTER address.  To do this, send email to the LISTSERV@hostname address for the server, with the following command in the body (not the subject) of the message:  

PW ADD password

You will be sent an OK confirmation request with instructions on how to confirm the password registration, after which your password will be live and can be used.

Note: This is also a good test of whether mail is actually being passed successfully to and from the server.

4.2 Starting and Stopping LISTSERV in the Background

Running LISTSERV in the foreground is primarily useful for debugging purposes only.  When running in production, LISTSERV should be run in the background, which also causes a ‘listserv.log’ file to be generated by redirection of standard output.

To start LISTSERV in the background, cd into the LSVROOT directory and issue ‘./go bg’ at the shell prompt.

To stop LISTSERV when it is running in the background, do one of the following:

    • Send mail to LISTSERV from an account listed in the POSTMASTER go.user variable with the command

      STOP PW=password

      in the body (not the subject) of the message.  This command is validated with the personal password assigned to your POSTMASTER email address (see the previous section).

    • At the shell prompt, issue the following command:

      kill -TERM $(cat /home/listserv/spool/listserv.PID)

      This causes a STOP command to be generated internally by LISTSERV and LISTSERV shuts down gracefully.  (Note that if you have installed LISTSERV in a directory tree other than the default, you will have to change the path to the PID file appropriately.)

4.3 Starting LISTSERV Automatically

There are a couple of different systems for registering LISTSERV as a “service” under unix.

4.3.1 SysV

L-Soft ships a sample SysV init script with LISTSERV, which is found in LSVROOT/ listserv-initd-script.sample after the installation.  This file may be copied into the init.d directory (usually, /etc/init.d) and registered as a boot-time service with chkconfig.  Presuming you have renamed the script to simply “listserv” before copying it into /etc/init.d, you would register it with

chkconfig --add listserv

If necessary (and it shouldn’t be) you can then activate the boot-time startup with

chkconfig listserv on

You can then start and stop LISTSERV with the usual service commands:

service start listserv

service stop listserv

service restart listserv

4.3.2 Systemd

Systemd uses scripts called “unit files” for service definition.  Generally, these files are named *.service, and custom service files are stored in /etc/systemd/system .

L-Soft ships a sample systemd unit file with LISTSERV, which is found in LSVROOT/listserv-systemd-service.sample after the installation.  This file may be copied into the /etc/systemd/system directory and registered as a boot-time service with systemctl.  Presuming you have renamed the script to “listserv.service” before copying it into /etc/systemd/system , you would register it with

systemctl enable listserv.service

and start LISTSERV with

systemctl start listserv.service

, stop it with

systemctl stop listserv.service

and so forth.

There is also a “systemctl status” command that can give you information about how LISTSERV is interacting with the system:

[root@hadesx listserv]# systemctl status listserv

listserv.service - LISTSERV

  Loaded: loaded (/usr/lib/systemd/system/listserv.service; enabled; vendor preset: disabled)

  Active: active (running) since Wed 2018-05-16 19:27:23 EDT; 18h ago

Main PID: 1694 (go)

  CGroup: /system.slice/listserv.service

          └─1694 /bin/sh /home/listserv/go bg

May 16 19:27:23 hadesx.colo.lsoft.com systemd[1]: Started LISTSERV.

May 16 19:27:23 hadesx.colo.lsoft.com systemd[1]: Starting LISTSERV...

May 16 19:27:26 hadesx.colo.lsoft.com su[1706]: (to listserv) root on none

May 16 19:27:28 hadesx.colo.lsoft.com go[1694]: > Starting LISTSERV as a bac...s

Hint: Some lines were ellipsized, use -l to show in full.

[root@hadesx listserv]#

Note that, depending on your particular needs, you might want to add postfix.target (or the service target for whatever mail server you are running) to the After parameter under [Unit] in the listserv.service file.  The default is simply


To add another service target to the file, simply add it to the space-separated list, for instance:

After=network.target postfix.target

Other than the fact that mail won’t flow until the mail server is started, this is entirely at the discretion of the local administrator(s).

After editing the listserv.service file and saving it, issue the following command at the unix prompt to reload the systemctl daemon:

systemctl daemon-reload

IMPORTANT:  Finally, the listserv.service file shipped with LISTSERV depends on the existence of a shell script named lsvstop, which should be found in the LSVROOT directory (in a default installation, it will be located at /home/listserv/lsvstop ).  The file should be owned by ‘listserv’ and have at minimum permissions 700.  This file contains the following code:

#!/bin/sh -
/bin/echo Stopping LISTSERV...
/bin/kill -TERM $(cat /home/listserv/spool/listserv.PID)

If LISTSERV is installed in a path other than the default (/home/listserv), the path to listserv.PID (highlighted above in yellow) will have to be altered appropriately, or the systemctl stop listserv.service command will not work.