DList - Mailing Lists

NB: You must make DSMTP reload after changing DList lists so that it can create the aliases that it needs for the lists (check for them in the file aliases.dml in the work directory).


DList - Quick Overview

DList is a mailing list server that is part of the DMail package.

General settings for DList are contained in the main configuration file, dmail.conf.

To create a list you simply add a line like,
list listname
setting in the file, lists.dat which you will find in the dlist_path directory. Then make DSMTP reload the configuration file, dmail.conf (DList regularly checks the configuration and lists.dat files for changes, so it does not need to be sent a reload command).

Generally the sysadmin would set up a list, and then users would send an email to the 'listname-request' address to 'subscribe' themselves to the list.

Users in general will only interact with the list by sending emails, either directly to the list to be 'posted', or to the listname-request address if they wish to join the list or send it commands. See:
DList mail commands
When users join the list they are normally sent this list of commands so that they know what the list can do for them.

To modify DList settings you can directly edit dmail.conf and lists.dat with a text editor, use the windows management utility DMAdmin or use the web based tool, NetAuth.


Creating a Mailing List

To create a mailing list on the list server, DList, you need to add a new list setting in the lists.dat file, e.g.
list listname
where listname is the name of the list. You can edit the lists.dat file with a text editor (e.g. notepad or vi), or the windows administration tool DMAdmin will edit the file for you if you use the "Mailing Lists" button.

If you are doing it manually then below the list setting add any other settings that you require for your list, e.g.
title juggling

Then RESTART the DSMTP process with DMAdmin. You must restart DSMTP after adding or remobing DList lists so that it can create the aliases that it needs for the lists. (If you simply change a list setting, like changing one of the 'access_' settings, then there is no need to restart DSMTP or DList).

To try out the list, you should add a user to the list and then post a message to the list. For information on this see,
Adding Users to a List
DList Email Commands

NB: Mailing lists on Virtual Domains...

If you are wanting to add the mailing list to a specific domain, e.g. a virtual domain, then you need to specify that domain in lists.dat, so that DSMTP can create the correct aliases for your mailing list.

There are two ways to do this.

1. Old way: add a domain setting to your list, e.g.

list juggling
    title Mailing List
    domain vdomain1.com

2. New way: create the list with a full list name, e.g.

list juggling@vdomain1.com
    title Mailing List

(NB: you must use DMail version 2.7q or above, for option 2 to work!)

The second method is better because it means that all mailing list directoryies will be created with unique names. This allows you to reuse mailing list names on different domains.

NB: no matter what domain a mailing list is on, you will find its drop file in the main directory's drop_path (not in the vdomain drop_path), as set by the dmail.conf drop_path setting.


Settings - lists.dat

Lists.dat is the file where you create all the lists on your DList server and where you enter individual settings for each list. (General DList settings, i.e. not list specific, are entered as for DPOP and DSMTP in the dmail.conf file, see Settings - dmail.conf)

As with dmail.conf all settings are one per line, and you can exclude a line by starting it with the '#' character. You do not need to reload the DList server after making changes to dmail.conf (as you do with DSMTP and DPOP), as DList automatically checks the dmail.conf and the lists.dat files before each check for list messages.

Note: after adding a new list to lists.dat you MUST make DSMTP do the reload command. This is because DSMTP has to create aliases for each of the lists on your list server.

Below is a list of all of the settings available for each list. All settings for a list are entered on the lines following the
list listname
line that declares a list, before the next list starts with its 'list listname' declaration line. See example lists.dat file

All settings take just ONE value except where stated otherwise in the description.

Note: In the table below you will see that the 'access' settings can generally take one of the following values. It is important to think about what these settings mean - NOT all of them apply to every access setting! See moderated lists

  • member - refers to list members and in general the list moderator as well
  • anyone - no restriction
  • moderator - only the list moderator can do it
  • *domain - person trying to do it must have the email address ending in 'domain'

Setting Default Example/options Description
access_join anyone anyone,*netwinsite.com, Controls who can join the mailing list
access_leave anyone moderator Controls who can unsubscribe from the mailing list, by default anyone can unsubscribe anyone else.

in version 2.5d (2.4k) and above:
members: (can unsubscribe themselves, moderator can unsubscribe anyone)
moderator: (only moderator can unsubscribe - members cannot unsub themselves)

access_post members moderator Controls who can post messages to the mailing list
access_who members anyone Controls who can retrieve the list of current members
archive false true If set, DList will record all incoming messages in an 'archive' sub directory, off the list's directory.
bounce_remove
(added in 2.8h)
false true If set, then DList will log all bounces that it receives, and if it can work out that the bounce was because of a permanent error, then it will remove that address from the mailing list. DList will also send a summary email to the moderator each day recording any addresses it has removed from the list and the bounce error that was the reason for the removal. This is a new 'beta' setting so let us know how it goes if you try it. You might like to try, the log_bounce setting as a first step to turning on this setting.
domain (none> domain mydomain.com Specifies the domain that this list should exist on where you do not want it to be on your first host_domain. NB: To allow listname re-use on different domains see the note,
Mailing lists on Virtual Domains
footer
(version 2.4h and above)
(none) footer
c:\dmail\dlist\listname\footer.txt
The full path to a file that you want added onto the end of all messages as a footer. In version 2.8e and above this is only added onto all TEXT messages, HTML version also added see below. Note that as of 2.9g, template variables can be used in footers. See Template Footers for details.
footer_html
(version 2.8e and above)
(none) footer_html
c:\dmail\dlist\listname\footer_html.txt
The full path to a file that you want added onto the end of all HTML messages as a footer. Note that as of 2.9g, template variables can be used in footers. Template Footers for details.
join_cookie false true If set, when users join the list they will be asked to respond with a specific cookie (number) to prove they are real humans, this setting prevents people from subscribing other people or worse other lists to an existing list. Note: a cookie will not be sent if the subscriber is a moderator or if access_join for the list is set to moderator or password.
language_file
(version 2.9d and above)
(none) newproducts.dat Used to specify a language file for a particular list. That language file is used to translate most of the phrases generated by DList for that list. Documentation on language translation is available here.
log_bounce
(version 2.8h and above)
false true This is a debugging setting, that may be more generally useful. It causes DList to log all addresses that bounce and the reason for the bounce to the file, bounces.log, in the list home directory. The log is appended to for every bounce received when sending any messages to the list. See also, bounce_remove.
list (none) dnews-discussion The name of the list, this cannot contain spaces and must be the first setting for each new list in lists.dat
max_size 40 100 Limits the maximum size of an item that can go through the mailing list in kbytes. NB: this setting applies to messages to the -request address as well as the posting address.
max_per_user
(2.4g and above)
200
(changed from 50 in vers. 2.5d)
1000 Sets the max number of messages allowed to be posted to all lists on the server per user per hour. Note that the count is per user for posts to ALL lists, whereas the setting is per list. So the count is global but whether it applies to a list is list specific (the default is 200).
moderator (none) fred@netwinsite.com A list of one or more moderator email addresses, a moderator often has extra access rights, like the ability to subscribe other people etc. Separate multiple entries with spaces or tabs (or commas in version 2.5d and above), emails are only sent to the first moderator in the list, but any moderator can send moderated messages.
no_processed_message
(version 2.9d and above)
false true This setting is very powerful. If set to 'true' for a particular list, no command processed messages are sent by DList for that list. This means that users will only see list posts; they will get no response to any DList commands they send (i.e. who, lists etc.). This would only really be useful if you wanted to subscribe users to a list without them receiving notices.
no_welcome_message
(version 2.9d and above)
false true By default, DList sends a welcome message to each user directly after that user successfully subscribes to a list. If set to 'true' for a particular list, then users subscribing to that list will not be sent a welcome message.
reply_to_user false true (also in version 2.5f and above, user@domain) If set, the reply-to header in each message will be pointed to the original poster, rather than the mailing list, this is recommended for large mailing lists. In versions 2.5f and above in place of true you can specify an address as the reply address for ALL messages posted to the list. If given, posted messages will have any Reply-To: header turned into X-Reply-To:, and the address given is added to a new Reply-To: header.
status_interval 7 1 Period in days between automatic status reports being sent to the moderator.
skip_mailer_check false TRUE If TRUE then DList will not ignore messages from users called, MAILER-DAEMON (all in capitals). These are normally bouced messages and so would not normally be wanted as posts to the list.
skip_postmaster_check FALSE TRUE If TRUE then DList will not ignore messages from users called, POSTMASTER (all in capitals). These are normally bouced messages and so would not normally be wanted as posts to the list.
subject_prefix (none) Juggle: This string will be added to the front of every subject line of messages from this list, this makes it easy for people to sort list messages out from other messages.
title (none) N.Z. Juggling A title for the list, shown in headers and lists output.
to_user false true If true then the To: address in each message sent will be the users email address instead of the list name

An example lists.dat file with entries for two lists, talk and juggling:

listtalk 
 archivetrue
 titleThe list for talkers.
 subject_prefix[list: talk]
 access_joinAnyone
 access_postModerator
 access_whoAnyone
 access_getAnyone
 moderatortalk.master@macro.com
 max_size40
 footerc:\dmail\dlist\talk\footer.txt
listjuggle 
 titleThe list for jugglers.
 subject_prefix[Juggle]
 access_joinAnyone
 access_postAnyone
 access_whoAnyone
 access_getAnyone
 moderatorjuggling.master@macro.com
 max_size40
 footerc:\dmail\dlist\juggle\footer.txt< /td>


Welcome Messages

DList comes with an example welcome message. It is stored in a file called join.tpl in a template format.

You can edit this template to the look that you require, and you can copy it to each list's directory (off the main DList directory) so that individual lists can have their own welcome message.

DList supports variables in templates as of 2.9g. All you need to do to use template variables is add the variables you want into the template. or information on how to use template variables, and a list of supported variable names, see Template Variables.


Adding users to a list

Usually users would add themselves to a list, by sending a message to the list request address, e.g. listname-request@domain with the word subscribe in the message body.

DList will then add them to the users.lst file for that list. Users.lst for each list is stored in that list's directory (named after the list) off the DList directory (probably \dmail\dlist\listname\users.lst or /usr/local/dmail/dlist/listname/users.lst )

To add a number of users you have two options:

  1. Add yourself as a moderator for the list and send the listname-request address a message with mutliple subscribe lines in the body.

    So as a moderator you send the following email:

    To: listname-request@domain
    From: your_moderator_address

    subscribe bob@domain1.com
    subscribe judy@domain1.com
    subscribe george@domain99.com

    to join up the email addresses,
    bob@domain1.com
    judy@domain1.com
    george@domain99.com

  2. Directly edit the users.lst text file for the list and add the email addresses, one per line.

    So to add the same three users, you might edit the users.lst file to look like this:

    u:tam@1.2.3.4 f:Tam Willacy p:0 t:0
    bob@domain1.com
    judy@domain1.com
    george@domain99.com

    where the first line is an existing user on the list.

    Don't worry about the format of lines for existing users. The next time DList has to write anything to the users.lst file it will add the email addresses that you have pasted/typed in correctly.

Adding Users' Real Names

In version 2.5f and above to specifiy the user's real name when you are subscribing them using either method, enter the user's email address with the full name field as per an email client, e.g.

sending subscribe commands:

subscribe "bobby" bob@domain1.com
subscribe "Judy Simpson" judy@domain1.com
subscribe george@domain99.com "Georgie Porgy"

directly in users.lst:

u:tam@1.2.3.4 f:Tam Willacy p:0 t:0
"bobby" bob@domain1.com
"Judy Simpson" judy@domain1.com
george@domain99.com "Georgie Porgy"

When the user subscribes themselves, the real name is taken from their email address (from the From header).


Moderated lists

This is still being written :-)

There are two ways of posting into a moderated list, depending on whether the access_post setting is set to Password or Moderator:

  1. Password: DList accepts the message from the user and sends it to the moderator, who if they want to approve it then submits it to the list with the first line of message body being
    approve Password
    e.g.
    approve xxxx

    For this to work the access_post setting for the list in lists.dat must be set to 'Password' and the list password setting must match the password given in the approve line, e.g.
    access_post Password
    password xxxx

  2. Moderator: The return address of the incoming message matches that of the moderator setting and the access_post setting is set to Moderator in the lists.dat file, e.g.
    access_post Moderator
    moderator moderator@domain

    where moderator@domain is the address that must match.

Notes:

  • There must always be a moderator for a list set to password post access because password is a more secure moderated list.


Archives and Files

This is still being written :-)

DList lists can be set to save an archive of all messages by setting the list specific setting in lists.dat,
archive true

If this is set then DList will create the archive messages in a subdirectory called, 'archive' below the list's directory, e.g.
c:\dmail\dlist\listname\archive\1.msg
c:\dmail\dlist\listname\archive\2.msg

etc.

Then if the user sends an email to the listname-request address with the command, dir, in the message body, then DList will send back a message telling the user how many archived messages there are.

If the user wants one of the messages then they can send the 'get' command to fetch the archived message.

If you want to provide other files to the list members, then you create your own directory off the list's directory called, files, and put the files that you want to provide there, e.g.
c:\dmail\dlist\listname\files\picture.jpg

Then when the user does a 'dir' command, they will also be shown a list of other files available.

For details on the list commands see, DList Email Commands


Template Footers

As of DMail 2.9g, DList will treat footer files as templates. This means that you will be able to use variable names in the footer file. These names will be replaced with the actual values as the message is sent. For information on how to use template variables, and a list of supported variable names, see Template Variables.


Template Variables

Template variables are a way to customise joining messages and footers with information about a list, or a list member. Variables are denoted in the following form:

	%%variable_name%%

When DList comes across a variable in a template (say a footer, or a join message), it replaces that variable with its value. For example, the following line contains two variables:

	Welcome to the %%list_name%% list, %%h_user%%. 

The variables are replaced with their actual values when the message is sent. As an example, the above line could become:

	Welcome to the newproducts list, joe@bloggs.com. 

Below is a list of all template variables supported by DList. Please note that some variables may have multiple variable names. This is to ensure backwards compatibility with older versions of DList.

Variable Name Synonym Replaced With Example Value
list_member h_user The email address of the user to whom the message is sent. joe@bloggs.com
list_request_address
list-request The email address to which to send requests. newproducts-request@bloggs.com
list_address The email address to which to send list messages. newproducts@bloggs.com
list_name list
list-name
The name of the list. newproducts

NB: As of DMail 3.0h6, list template variables have been standardised. That means that in all places where variables were used, the information in this section applies. NB2: Upgrade to 3.0k6 for the synonyms to work correctly.