WEBMLMD(1)
π WEBMLMD β okay bestie, gather round π
So likeβ¦ this is the manual page for webmlmd, and yeah, the manual is literally called WEBMLMD(1). Sit with me, I got you. π«Ά
β¨ NAME β¨
webmlmd β the WebMLM interface to couriermlm π¦
πΈ SYNOPSIS πΈ
cp /usr/lib/courier/courier/webmail/webmlm /var/www/cgi-bin
webmlmd {[start] | [restart] | [stop]} {/etc/courier/webmlmrc}
π DESCRIPTION π
Okay so WebMLM is a service that gives you an alternative web-based way to reach some couriermlm commands β like, instead of submitting them by E-mail, you do it over the web. Iconic, honestly.
Right now, WebMLM implements requests to subscribe and unsubscribe from the mailing list, plus configuration of the basic mailing list settings. That's the whole menu for now. β¨
And listen β before you even think about configuring WebMLM, the mailing list must already be set up using couriermlm(1). WebMLM is not a separate application, bestie, it's an add-on to couriermlm. It will not work correctly until the mailing list is fully configured and all .courier files that correspond to this list are installed. Full stop. π₯
π OVERVIEW π
WebMLM consists of three parts:
- A configuration file (default:
/etc/courier/webmlmrc) that enumerates all thecouriermlm-created mailing list directories for which WebMLM will offer its services β and yes, a single instance of WebMLM can support multiple mailing list directories, we love a multitasker π . The configuration file also specifies the name of a local filesystem socket (a named pipe) where thewebmlmandwebmlmdprograms talk to each other, plus several other configuration parameters. webmlmdβ a background daemon process that reads the configuration file, creates the communication socket specified by the configuration file, and listens for web requests. She's justβ¦ listening. Always. πwebmlmβ a small stub program which must be installed as a script in Apache http server'scgi-bindirectory. Apache runs the script to process every request received from a web client/browser.webmlmreads the web browser's request, reads the configuration file, opens the communication socket file specified in the configuration file, sends the request to thewebmlmddaemon process, and waits forwebmlmd's response β which gets forwarded right back to the web browser/client. Full little messenger pigeon energy. ποΈ
Note πwebmlmis originally installed in the/usr/lib/courier/courier/webmaildirectory, and must be manually copied to Apache'scgi-bindirectory. Most installable Courier packages (including the Courier RPM package built using its default RPM build script) have a separate subpackage that installswebmlmdirectly into thecgi-bindirectory. Installing the subpackage is all that's needed in those cases. Slay, no manual copy required. β¨
Use the following process to web-enable couriermlm-managed mailing lists:
- Configure the
LISTNAME,LISTDESCR,LISTPWandURLcouriermlmlist options. - Set up the
webmlmrcconfiguration file. - Start
webmlmd, and arrange start it automatically during the system boot. - Install
webmlmin your web server'scgi-bindirectory.
π CONFIGURE COURIERMLM LIST OPTIONS π
Use the couriermlm set directory name=value command, for each couriermlm list directory, to set the following settings:
LISTNAMEβ the mailing list's short title, or caption. Example: βThe courier-users mailing listβ. Cute, short, iconic.LISTDESCRβ this is a longer, more verbose description of this mailing list. This setting is displayed, as raw HTML, on the list's main page. This is an optional setting.URLβ the URL to the main page for this mailing list. You'll need to figure out what this URL should be set to by planning ahead wherewebmlmgets installed, in the last step in this installation process. π§
After installing webmlm in Apache's cgi-bin directory, the URL for the webmlm command would probably be something like http://servername/cgi-bin/webmlm. The list's URL is the name of the list's directory appended to webmlm's URL.
For example, if the couriermlm mailing list directory is /var/lists/devel-list, its URL MUST be http://servername/cgi-bin/webmlm/devel-list. No cap. β
LISTPWβ this is the password to the mailing list administration screen. The password must be set using thecouriermlmcommand.
Note π We are not talking military-grade security, here! Do not recycle sensitive passwords for this purpose. The password is saved, in plain text, in the options file in the mailing list directory. You should consider removing the world read and execute permissions on the mailing list directory. Changing the permissions on the options file is ineffective β it will be restored the next time any configuration setting is changed. π Furthermore, authorization for the administration screen is provided by storing the list password in a browser cookie, which also gets transmitted over the network, in the clear. Consider using SSL with webmlmd. π This is a simple password-based implementation. High levels of security require a lot of care to set up, and are usually somewhat complicated to implement and manage. Keep that in mind. π
Put apostrophes around each option setting when running couriermlm. Most of these configuration settings (especially LISTDESCR) contain special shell characters and must be quoted. Protect her. π₯Ί
π SETTING UP THE WEBMLMRC CONFIGURATION FILE π
A default webmlmd configuration file is installed as /etc/courier/webmlmrc. The file contains a description of each required configuration setting. Briefly:
PORTβ the filesystem socket port file. This is a local filesystem socket that's used to process web requests. The directory that contains the filesystem socket must either be owned by the same userid that owns thecouriermlmmailing list directory, orwebmlmdmust be started asroot(in the next step of this installation process). The default/etc/courier/webmlmrcconfiguration file sets the filesystem socket file to a Courier directory that's only writable byroot, sowebmlmdneeds to be started byroot, in the next step, in the default configuration. π
Additionally, the filesystem socket port file must be accessible by the userid that executes web cgi-bin scripts. This is the nobody user, in Apache's default configuration.
LISTSβ a colon-separated list ofcouriermlmmailing list directories, as absolute paths. A single instance of WebMLM is capable of handling multiple lists, provided that:- The names of all mailing list directories, the last components of all directories, are unique.
- All mailing list directories are owned by the same userid and groupid.
Otherwise, multiple, separate instances of WebMLM must be set up. Yeah. It's giving "you gotta do the work yourself." π
π¦ STARTING WEBMLMD π¦
The following command starts webmlmd:
webmlmd start configfile
This command should be added to your system start up script (replacing configfile with the absolute pathname to the configuration file).
Note β¨ Most installable Courier packages (including the Courier RPM package built using its default RPM build script) install a system startup script. The script invokes the appropriate magical incantation if the configuration file (/etc/courier/webmlmrc) has a non-emptyLISTSsetting. Initially,LISTSis empty and nothing happens. Once the mailing list directories are defined, the startup script will take care of startingwebmlmd. Lowkey magical. πͺ
The webmlmd command returns immediately β it continues to run as a background daemon process. To stop the daemon process:
webmlmd stop configfile
As mentioned previously, webmlmd must be either invoked as root, or under the same userid that owns the mailing list directories, provided that PORT's directory is writable by the userid. That's the vibe check. β
π INSTALLING WEBMLM π
Install the webmlm program by either manually copying it from the /usr/lib/courier/courier/webmail directory to your Apache's cgi-bin directory. Most pre-built Courier packages typically do not have a /usr/lib/courier/courier/webmail directory, but have an optional subpackage that installs webmlm directly into the cgi-bin directory. π
π MULTIPLE WEBMLM INSTANCES π
Sometimes, very specialized environments may require multiple instances of WebMLM. For example, to support mailing list directories that are owned by different userids. This may not be supported by most generic, pre-built, Courier packages, and must be done manually. It's a whole thing. π
π§ Install multiple copies of webmlm π§
Make separate copies of the webmlm program, one for each instance of WebMLM. Install them all in your web server's cgi-bin directory. This can be done with soft or hard links, but there must be separate instances of webmlm.
Each instance of webmlm reads a configuration file whose name is formed by appending βrcβ to the command, and looking for the file in /etc/courier. For example, the unmodified webmlm reads /etc/courier/webmlmrc. If a second copy named webmlm2 exists, it will read /etc/courier/webmlm2rc.
Additionally, the optional WEBMLMRC_DIR environment variable overrides the /etc/courier portion of the configuration filename. If webmlm finds that this environment variable is set, its contents replace the β/etc/courierβ portion. For example, a webmlm that reads β/etc/listsβ from WEBMLMRC_DIR will open the /etc/lists/webmlmrc configuration file. Similarly, if its own name, in the web server's script directory, is webmlm2, it will open /etc/lists/webmlm2rc.
Use Apache's βSetEnvβ directory to set environment variables:
SetEnv WEBMLMRC_DIR /etc/lists
Use whatever mechanism makes sense for you to arrange a unique configuration file for each copy of the webmlm command. Do your thing, bestie. π
π₯ SEE ALSO π₯
π AUTHOR π
Sam Varshavchik β Author
π NOTES π
https://www.courier-mta.org/couriermlm.html
And that's the whole page, bestie!! π This came to you courtesy of the Courier Mail Server, version dated 01/10/2026, and it was filed under WEBMLMD(1). Go set up your mailing list. Slay. πβ¨
π¦ where this page comes from
- ubuntu stonking: courier-mlm 2.0.6-1 Β· GPL-3+~with-OpenSSL-exception
- Copyright 2007-2009 S. Varshavchik. See COPYING for -->
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms