## DMail Servers' Complete Settings Reference List

This is the complete list of settings used by DSMTP, DPOP and DList. At times, this page will be more up to date than the rest of the DMail manual because we generate it automatically at compile time. If a link does not work, please feel free to let us know at DMail Support.

NB: The defaults shown are the code defaults, i.e. for when you have NO setting in dmail.conf, often DMSetup will have inserted recommended 'defaults' for you when it installed DMail. See the individual descriptions for such defaults.
Setting Default Value Description Version Added
allowduptrueAllows mutltiple deliveries to same drop file in same transaction.
apop_enablefalseno description
auth_nocachefalseno description
authent_cache1000Number of authentication requests to cache, External authentication only.
authent_domainfalseSet to true to have 'user@domain' instead of 'user' to be passed to the external authentication process
authent_methodnt_userThe method used for user/password lookups Unix_User, NT_User or External
authent_methodunix_userThe method used for user/password lookups Unix_User, NT_User or External
authent_number2Number of concurrent authentication processes to run (external authentication only)
authent_timeout10 Timeout (in seconds) for external authentication requests.
bin_pfull0.5Criteria for compacting. Bins with less than bin_pfull get compacted.
bomb_dec50Mail Bomb; Specifies how much to decrement the entries in the mail-bomb cache by.(more than one permitted)
bomb_dir./bomb/Mail Bomb; Specifies which directory mail-bomb messages are to be stored in.
bomb_entries2000Mail Bomb; Specifies how many entries to store in the mail-bomb detection cache.
bomb_max50Mail Bomb; Specifies DSMTP's tolerance for detecting a potential mail-bomb.
bounce_bodyfalseSpecifies whether or not to include the message body in a Deliver Status Notification message (DSN).
bounce_maxlen20Specifies (if bounce_body is true) how much of the body (in kbytes) to include in a Deliver Status Notification.(units: kilobytes)
bulletin_fromEmail system administratorText to be sent as from line in all bulletins. Default is 'Email System Administrator'.
bulletin_max233no description
bulletin_pathwork_path/bulletinsDirectory to contain bulletin messages of form nnn.txt.
cleanout_disablefalseno description
crlf_storedfalseIs cr and lf stored at end of lines on this system.
crlf_storedtrueIs cr and lf stored at end of lines on this system.
dlist_accept_from_requestfalse Added for Backwards compatibility. If true then accept messages from usernames containing '-request' (default is false).
dlist_log_levelinfo Sets the logging level to one of error,info or debug.
dlist_rotate60000 Size of log file in bytes before it is rotated (default and minimum value is 60 kbytes)
dns_timeout10Specifies how long (in seconds) DSMTP should wait on a DNS lookup.
dotstuff_robotfalseMakes DSMTP dotstuff robots for backwards compatibility.
dotstuff_robottrueMakes DSMTP dotstuff robots for backwards compatibility.
dpop_path/usr/local/dmail/Installation directory for DPOP and manual pages etc.
dpop_path\\dmailInstallation directory for DPOP and manual pages etc.
drop_path./mail/Specifies the directory to use for email drop files
drop_prefixtrueIf true, the virtual domain prefix is used as part of path for drop files.
dsmtp_path./Location of DSMTP executable (and default for many path settings).
dump_stats60V:2.7d !: Time in minutes between performace statistics output
dwatch_path./dwatch/Specifies path for .pid and .wat files and other DWatch information
expire_age366When expiring old emails from server, remove messages more than expire_age days old
expire_size1000When expiring old email from server, remove messages larger than expire_size bytes(units: bytes)
fake_verifytrue If true, (default) DSMTP returns 250 OK on all VRFY commands.
files_per_session2Number of file handles needed per DPOP session. Setting <2 may allow more concurrent sessions. Set between 1 and 2 use less than 2 at your own risk!
forward_window120Anti-SPAM; sets time (in seconds) in which relaying is allowed after POP login (i.e. expiry time of forward_user records).
from_testfalseIf true use slow test for valid From lines when bursting files. Only needed when DPOP is used with other smtp servers which use extended From line test.
fromip_max10000Anti-SPAM; sets a limit on message throughput per hour from any IP number.
hash_spool0Sets hashing method (0,1 or 2). Hashing is where drop_files are distributed across multiple directories.
host_domain127.0.0.1Adds a domain name to the list of domains to be recognized as being local(more than one permitted)
lock_idno default(UNIX); sets a file locking id for multi-server systems.
log_chainfalseno description
log_datafalseSpecifies whether or not DSMTP should log the TCPIP data it gets.
log_days14Tells DSMTP how long (in days) to keep summary logfiles.
log_flushfalseno description
log_levelerrorSpecifies how much information to output to the logfile (one of error, info, debug).
log_path./log/Specifies where the server log files are to go.
log_status600Time (in mins) between logging DPOP status to log file.
lookup_namesfalseSets DSMTP and DPOP to do reverse DNS lookups.
lowercase_usernamefalseSets DSMTP and DPOP to be case insensitive for usernames and hence 'dropfile' names.
max_log_size3000000Max size (in bytes) for DPOP log file before renaming and starting new one.(units: bytes)
max_loglen1024Specifies the maximum size (in kbytes) of DSMTP's log files.(units: kilobytes)
max_msgsize2048Specifies the maximum message size DSMTP may accept(in kbytes).(units: kilobytes)
max_others20Specifies the maximum number of recipients recorded for each message in summary files.
max_queue1000 Sets the number of rcpt lines from queue files that DMSTP queues up in memory, this is not a setting to idly play with:)
max_rcvd15Anti-SPAM; Specifies the maximum number of received lines allowed in an incoming message.
max_retry48This command is obsolete, use max_retrytime(obsolete)
max_retrytime24Specifies the maximum time in hours to continue attempting (once every 2 hours) to deliver a message.
max_send10Sets maximum outgoing channels, which limits maximum simultaneous outgoing messages (50 is upper limit).
max_sessions200Limit on number of concurrent sessions connected at one time, DPOP will try to make this many available.
max_vdomain2048V:2.8b !: Maximum number of virtual domains which can be used
min_space10Specifies the minimum disk space (in Mbytes) DSMTP needs to operate.(units: megabytes)
no_autohostfalseDe-activate the auto adding of hosts to DSMTP's internal host_domain list.
no_dotforwardfalse(UNIX) tells DSMTP not to look for .forward files but .fwd files instead.
no_xdpopfalseno description
pop_event_logburst,statV:2.8b !: Switches on logging of various POP events: last,uidl,burst,list,listn,stat,user,pass,quit,retr,dele,rset
pop_port110Allows the the port number pop3 clients will access to be set to a non-standard value.
pop_timeout600How long DPOP waits (in seconds) before assuming a connection has gone and close TCPIP channel.
preserve_domainfalseV:2.7i !: Added for Backwards compatibility. Do not replace all host domains with the first one for lookups
quiettrueTells DSMTP to direct minimal output to stdout.
reject_no_reversefalseTells DSMTP whether it should reject messages where reverse DNS on connecting IP address fails (requires reverse_lookup to be set).
remind_timeout3600Specifies the minimum time (in seconds) between critical error emails.
retr_chunk10000Max bytes to send in one chunk for retrv command. Default is 10000.(units: bytes)
robot_try120Specifies how long DSMTP should try to give input to a robot before giving up (in seconds).
robot_wait600Specifies how long DSMTP should wait before killing a robot.
rotated_logs4Sets the number of old log files DSMTP keeps.
show_8bitmimefalseMakes DSMTP revert to pre version 2.5c default of advertising 8 bit MIME capability (not recommended).
slave_burst_size1000000Burst drop files of this size (in bytes) or larger with a DSlave process.(units: bytes)
slave_number4Sets the number of DSlave processes (sub processes of DPOP) for handling burst of large drop files (we recommend 4).
slave_processdpop_path/dslave.exeno description
slave_processdpop_path/dslaveno description
slave_timeout100Timeout (in seconds) for commands (e.g. burst) given to DSlave processes. Default 100 seconds.
smtp_port25Allows you to alter to a non-standard value the port that DSMTP will listen for SMTP connections on.
tcp_list_nodelayfalseno description
tcp_max200no description
tcp_nodelayfalseno description
tcp_timeout300Specifies how long DSMTP should wait (in seconds) for a response before giving up on ALL TCPIP connections (except sendlog connections).
unix_casefalse(UNIX)Tells DSMTP to use strictly case sensitive user lookups.
use_forward_filestrueUsed to stop DSMTP from checking for users' forward files.
use_maildirfalseno description
user_quotafalseEnables a per-user mailbox quota system and optionally sets the default quota(true/false/kbytes).(units: kilobytes)
users_filework_path/users.idxno description
valid_users*Valid usernames to get their mail here.
vdomain_separator_Specifies the separator character to use with Virtual Domain prefixes.
vdomain_substitutetrueAllows DSMTP to do 'smart' string replacement of host_domains with appropriate vdomain in message headers.
warn_user4Specifies when (after x hours) DSMTP is to warn the sender of a delayed delivery.
work_path./work/Specifies the directory for work files (also default for log and statistics files)

Common dmail.conf settings

## The DMail General Configuration Settings:

This page details only those settings in dmail.conf which are recognized by both DSMTP and DPOP. Some marked thus (DL) concern DList as well. The other settings in dmail.conf are specific to a particular server. See: Settings Specific to DSMTP, Settings Specific to DPOP and Settings Specific to DList

NOTE : If you have modified a dmail.conf setting which is relevant to both DPOP and DSMTP, it is necessary to reload both servers individually with their reload configuration file commands, e.g. tellsmtp reload and tellpop reload. DMAdmin will do this automatically.

### Compulsory Settings:

(If omitted, DMail may function unpredictably, or not at all.)

 authent_method sets the method used for user/password lookups drop_path specifies the directory to use for email drop files host_domain adds a domain name to the list of domains to be recognized as being local work_path   (DL) specifies the directory for work files (also default for log and statistics files)

### Optional Settings:

(These settings may be omitted, and all have reasonable defaults.)

 authent_cache Number of authentication requests to cache, External authentication only. authent_domain true for 'user@domain' instead of 'user' to be passed to the authentication process  (external authentication only) authent_number number of concurrent authentication processes to run (external authentication only) authent_process Specifies the executable to use for external authentication process(when authent_method external) dwatch_path specifies path for .pid and .wat files and other DWatch information drop_prefix If true, the virtual domain prefix is used as part of path for drop files. hash_spool Sets hashing method (0,1 or 2). Hashing is where drop_files are distributed across multiple directories. log_level (NOT DL) Specifies how much information to output to the logfile (one of error, info, debug). log_path (DL) Specifies where the server log files are to go. lookup_names Sets DSMTP and DPOP to do reverse DNS lookups lowercase_username Sets DSMTP and DPOP to be case insensitive for usernames and hence 'dropfile' names. vdomain Sets up a virtual domain for use with/by DPOP and DSMTP. vdomain_passwd Tells DSMTP and DPOP to use a separate passwd file for a vdomain (Unix) vdomain_separator Specifies the separator character to use with Virtual Domain prefixes.

## Detailed Descriptions of DMail/DPOP configuration settings:

#### authent_cache <integer>

Sets the number of authentication requests to cache, for both DSMTP and DPOP. The default setting for DPOP is the minimum of the setting max_users and 1000. The default setting for DSMTP is 1000

Note: the DPOP process size will grow with cache usage at about 100 bytes per cache entry so a 10,000 user cache will add about 1 megabyte to the process size. See the Authentication section for an overview of this topic.

Examples:
 authent_cache 0 (no caching) authent_cache 5000 (cache the last 5000 lookups)

DSMTP has a command,
tellsmtp clear_cache_all
for clearing its cache when you change the fwd="" field returned by an external authentication lookup - see Ext Auth FWD Field.

authent_domain <switch>

<switch> must either be true or false.

If true, this setting tells DSMTP and DPOP to include the domain name when sending a username to the external authentication process, i.e. they will send lookup user@domain. This is to permit the same username to exist on more than one domain. The default is false, i.e.only lookup user is passed. See the Authentication section for an overview of this topic.

This setting applies to all domains on both the DPOP and DSMTP servers. It cannot be changed by domain administrators.

Example:

authent_domain true

authent_method <method>

This setting specifies which type of user authentication DSMTP and DPOP are to use. <method> must be one of the following strings:

The authentication process is used either for verification that a user exists (e.g. this is what DSMTP uses it for) or for a full authentication of a username and password pair ( this is what DPOP uses it for).

In addition, the 'external' authentication module can return more information on the user, e.g. their drop file name (including path), mail re-direction settings, etc.

Notes on the drop path:
the methods nt_user and unix_user mean that the servers will work out the drop path based on the settings, drop_path, hash_spool (directory hashing) and vdomain. The external authentication process can also request that the servers work out the drop path by returning the key word, "config" as the user's dropfile path. If the external authentication process returns a drop file name (including path), it must do any directory hashing required.

If the "External" method is used, the authent_process setting must also be used. The authent_number setting may be used as well. See the
External Authentication of users
section for more details on how the external authentication process must behave.

The default is unix_user on Unix and nt_user on NT, so that after installation all system users automatically have email accounts on DMail.

This setting cannot be changed by domain administrators, covers all domains, and requires a RESTART of both DPOP and DSMTP if it is changed.

Example:

authent_method unix_user

or
authent_method external
authent_process process_file

authent_number <number>

This setting tells DSMTP and DPOP how many external authentication processes to run upon startup. It has no effect unless authent_method is "external". If the process being used for authentication has long delays, then running several copies will allow authentication of a number of users to be overlapped. However, the caching of external authentication requests normally provides sufficient gains to avoid the need for multiple processes. So the default of 2 for both DSMTP and DPOP would normally be left unaltered.

If you wish to enter a setting to set the authent number to a different value (both servers will use the same setting) then base your setting on how fast the external program operates, and how many clients are expected to be connected at any one time.

The default setting is 2 for both DSMTP and DPOP. See the Authentication section for an overview of this topic.

NOTE: changing this setting requires a RE-START of both DSMTP and DPOP. It applies to all domains on both the DPOP and DSMTP servers.

Example:

authent_number 12

authent_process <executable>

This setting is used in conjunction with the authent_method setting. When the "external" method is used, the <executable> parameter is used in order to determine the name and location of the program to be used for external user authentication. It must include the full pathname and filename of the program. If authent_method is set to external then you MUST also set this setting (DSMTP will stop if you don't). See the External Authentication section for details of how an external_authentication process should work. An example nwauth.c program is supplied with the DMail distribution set.

Changing this setting requires a RE-START of both the DSMTP and DPOP servers. It applies to all domains and cannot be changed by domain administrators.

Examples:

If you wish to use NWAuth then, assuming the default installation directories set this setting to,
authent_process \dmail\nwauth.exe
on Windows platforms and on UNIX based platforms,
authent_process /usr/local/dmail/nwauth

authent_process c:\mail\authent.exe
authent_process /usr/local/dmail/authent
authent_process /mypath/myauthent

drop_path <pathname>

There is no default for the drop_path so a setting for it must be included in the dmail.conf file.

Drop_path specifies the default directory for the mail drop files. These are the files that contain newly arrived mail messages for each user. Normally the drop file for a user Fred will be drop_path/Fred. This file will be appended to each time a new message arrives. The only time that this directory will not be used for mail deliveries is when an external user authentication program (other than the one specified by the NetWin setting) is used. Even then, if the program returns "config" as it's drop directory, <pathname> will be used.

Note these added features . . .
When <pathname> is used, DSMTP and DPOP will perform any directory hashing specified by the hash_spool setting before writing to the dropfile. On UNIX based systems, a leading ~ can be used to signify the home directory. If used, it will automatically be replaced by the user's home directory, so ~/inmail might become /usr/local/ralph/inmail.

The DMSetup installation prompts you for the drop_path setting with, for example, c:\dmail for NT and /var/spool/mail for Linux.

Examples:

 drop_path ~/Mailbox # might use /home/fred/Mailbox as fred's drop file drop_path /var/spool/netmail # will use /var/spool/netmail/fred as fred's drop file drop_path c:\pop3\mail # will use c:\pop3\mail\fred as fred's drop file

#### drop_prefix <switch>

This setting determines how the drop file name is constructed when virtual domains are being used. Drop_prefix can be set to true or false. The default is true. When this setting is true, the drop file name will include the virtual domain prefix.

NB: This setting and the resulting drop file name are not affected by whether you are using IP based virtual domains or suffix based virtual domains, or by the authent_domain setting.

For example, consider the case when the following vdomain line is being used and a user fred is connecting to abc.com which maps to ip number 1.2.3.4

• vdomain abc 1.2.3.4 abc.com /mail/abc_com

This second item in this line sets the drop_prefix to 'abc'.

If drop_prefix is true the drop file used will be /mail/abc_com/abc_fred
(the underscore '_' is the default vdomain_separator setting)

While if drop_prefix is false the drop file used will be /mail/abc_com/fred

NB: the example above assumes that directory hashing is turned off (hash_spool 0). The hash_spool setting controls directory hashing which affects the path.

This setting applies to all domains and by default cannot be altered by domain administrators.

example:

drop_prefix false

dwatch_path <pathname>

This setting gives the directory for the .pid and .wat files. The .pid files are written by each of the servers, DSMTP, DPOP and DList on startup and removed on normal shutdown. They are used by DWatch to monitor their status. DWatch can restart each or all of them if necessary. The files with a .wat extension will also be stored in the same directory for each of the servers, e.g. dsmtp.wat, which contains information for DWatch on how to restart that server and how often before giving up, etc.

When DWatch restarts a server it also renames the current log file to a 'ded' file and places it in the dwatch_path directory.

A useful trick to know is that you can stop most of the servers by putting a file in this directory named, server.exit, e.g. if DList sees a file called dlist.exit in the dwatch directory, then it will shut itself down (and remove the exit file when it does so).

The default dwatch_path is dpop_path, however on Windows NT the DMSetup installation wizard creates a specific 'dwatch' directory and points the dwatch_path setting at it. See the DWatch section for more details.

This setting applies to all domains and by default cannot be altered by domain administrators.

Example:

dwatch_path /usr/local/dwatch

hash_spool <number>

Specifies how the mail drop file names are 'hashed' (distributed) into drop directories.

Hashing is used to make up for Unix's slow linear directory search. It also avoids overly large directories on large email systems.

NOTE: This setting must be the same for both the POP and SMTP servers of your mail system. In the case of DSMTP and DPOP they will both use this same setting and therefore match.

The <number> parameter identifies which hashing method to use. There are currently three options:

 0: No hashing 1: Add one extra directory level. The directories in the new level are named a-z, but note that the following is done in order to decide which drop files go in which of the 26 directories; sum the first four characters of the drop file name,modulo 26, i.e. any username beginning 'fred' will always end up in the same directory but it isn't named f for fred, rather in this case it will be named b. E.g. fred's drop file might go in, \dmail\in\b\fred where the hashing has added the \b directory. 2: Add two extra directory levels. A simple naming method is used; the first two characters are used to name the two intermediate directories, e.g. /f/r/fred

The directories generated by the hashing method are appended to the pathname specified by the drop_path setting. If the directories do not exist, then DSMTP or DPOP will create them. The default is "0", which implies no hashing.

This setting is global to all domains and by default cannot be altered by domain administrators. This setting applies to DSMTP, DPOP and DList.

Note: if this setting is altered, you MUST restart both DSMTP and DPOP.

Example:

hash_spool 1

host_domain <domain>

This setting adds <domain> to a list of aliases for the machine running DSMTP. Any checks on a message's destination for (amongst other things) local delivery will also compare any names in this alias list with the destination.

NOTE: The first host_domain entry in the config file must be the host machine's actual name, i.e. the actual name that the machine has on the internet (or intranet) . Any messages sent from, or generated by, the host machine will use this entry in the 'MAIL FROM' line in order to identify themselves. So, for a non-intranet server, the first host_domain entry must be a domain name which can be resolved to an IP address by any machines wishing to talk to DSMTP.

Except for the first entry, the <domain> parameter may contain the wildcard character '*'. Note that *.domain.com does not include domain.com itself, but *domain.com does!

Any number of these settings may be used. There is no default.

Example:

host_domain my.resolvable.domain.com
host_domain *mydomain.com

log_level <level>

This setting determines which types of event information should be written to the logfile. There are three levels: error, info and debug. Error is the default setting, and the usual setting for operating in.

 error: the only information written will be errors, warnings, socket read and write information and minimal progress information. info: as well as the error information, this setting gives much more progress information, as well as file open and close calls. debug: as well as the info information, this setting gives a whole lot of internal status information, function calls...all sorts of stuff. However, it may slow down operation slightly and can produce large log files, so it is not recommended for normal use.

If DSMTP is crashing or doing very peculiar things, you should immediately ensure that it is running with the debug option.
So edit the log_level setting in dmail.conf to read,
log_level debug
then reload both DSMTP and DPOP.

The most useful things to NetWin support are the config file and the log file. The log file is far more useful if the log_level was set to debug.

If setting log_level to debug because of DSMTP problems, you should also consider setting, log_data true. The log_data setting only applies to DSMTP, and makes it log all of it's TCPIP transactions (DPOP does this on debug log level anyway).

NB: This setting does not apply to DList, see the setting dlist_loglvl for setting DList's logging level. It does apply to both DSMTP and DPOP. The log file writing is cached so it should not detriment the servers' performance. (If you want DSMTP to not cache log entries then set, log_flush true.)

This setting is global (it does not apply to individual domains).

NOTE: Don't get scared by log lines which you see on info or debug level. They are generally of a technical nature, which can make them worrying :-) See, Deciphering Log Files for more help.

Common Settings:
log_path
DSMTP settings:
max_loglen, rotated_logs
DPOP settings:
max_log_size, log_status

Example:

log_level debug

log_path <pathname>

This setting specifies the path for log files. The three servers record error and other informational messages into a file called servername.log, e.g. dpop.log for DPOP. Old versions of this file are called, in the case of DPOP, dpop1.log, dpop2.log etc. These files are stored in the work_path by default, but sometimes the system administrator may wish to keep all log files in one place. This can be absolutely anywhere, so long as it is a full pathname. By default, the logfile path is the same as the work path. Note: on Windows NT the DMSetup program creates a \dmail\log directory and sets the log_path setting to point at it.

In addition to dsmtp.log and dpop.log, both DSMTP and DPOP can be made to create statistics files, e.g. DSMTP creates a daily summary log file stored at <pathname>, with a name of dmddmm.log, e.g. dm2704.log. See Statistics Files in the Disk Use And Files section.

DWatch also stores a temporary log file, dwatch.log, at <pathname>.

This setting applies to all domains and by default cannot be altered by domain administrators. This setting applies to DPOP, DSMTP and DList, as well as DWatch (some DMail utilities do not make use of it).

Common Settings:
log_level
DSMTP settings:
max_loglen, rotated_logs
DPOP settings:
max_log_size, log_status

Examples:
log_path      work_path
log_path      mypath/for/log/files/
log_path      C:\dmail\log

lookup_names <switch>

Set true if DPOP and DSMTP should lookup domain names for checking valid connections - (CAN BE SLOW). If this setting is true then when DPOP gets a connection from, say, 161.39.2.44 it will do a reverse DNS lookup in order to turn this into whatsit.company.co.nz. This is only useful for the following reasons:

1. if you want to have incoming connections referred to by their domains, i.e. logged with their domain name as well as their IP address.
2. If you don't want DSMTP to accept connections where reverse DNS lookups fail, you should set
reject_no_reverse true
in dmail.conf as well, so that when a connection opens, if the reverse DNS lookup fails then the connection will be rejected. It is generally faster to restrict access some other way, as reverse name lookups can be quite slow.

The setting for lookup_names is disabled unless <switch> is "true", the default is false.

This setting applies to both DSMTP and DPOP. It is applied to all domains and, by default, cannot be altered by domain administrators.

Example: in order to turn reverse DNS lookups on, set

lookup_names true

If set true, DPOP will only work with lower_case usernames. So user BOB logging in will be assumed to be user bob, and his password will therefore be checked against user bob's password.

This means that drop files will also be forced to lowercase. This is how this setting effects DSMTP as well, as when true, DSMTP will also only create lowercase drop files.

The default for this setting is false - i.e. usernames and hence dropfiles are case sensitive.

This setting affects both DSMTP and DPOP and is global across all domains. By default, domain administrators cannot alter it.

Notes:

1. Previously, this setting only applied to DPOP, i.e. versions before 2.4e
2. If your authentication module is not case sensitive (e.g. NWAuth, Windows NT, or your external auth module), then using this setting stops multiple case license user entries, e.g. you won't have three users bob, BOB and Bob.
3. DSMTP does not use this setting for deciding whether incoming mail is for a valid local user. The lookup that it does on incoming mail for Bob@domain is case sensitive, so it looks up Bob. If your password file only has a user bob, it will succeed on NT and fail on Unix.

For this reason, we have the unix_case setting for Unix systems where you want such a test to succeed.

See Case Sensitivity for more details.

Example:

vdomain

Virtual Domain support. A number of vdomain lines may be used to specify domain prefixes, ip numbers, virtual domains and drop paths. This allows different drop path and username prefix strings to be specified for users connecting to different virtual domains based on IP number or username suffixes. See the virtual domains section of the manual for details of setting up virtual domains for use with DSMTP and DPOP.

The default is no virtual domains.

Multiple lines (one for each virtual domain) are required.

These settings cannot be altered by domain administrators by default, and they apply to both DSMTP and DPOP.

NOTE: after altering any vdomain setting you MUST restart both DSMTP and DPOP.

DPOP needs to be able to work out which virtual domain a user belongs to when they log in to check their mail. DMail provides two methods for doing this, virtual domains can be either Suffix based or IP address based.

For virtual domains based on IP address rather than username suffix, use the following format:(where DPOP tells the difference between users by the IP address which they log into to check their mail)

where
 prefix This is the internal prefix which DSMTP and DPOP will attach to the start of the username, e.g. prefix_bob, for referring to the users of this domain. Externally, this is only visible for setting up authentication, i.e. adding users, and naming drop files. See drop_prefix IP address This is the IP address which users from this domain MUST connect to in order to read their mail. This is only needed by DPOP, so DSMTP ignores it (DSMTP knows that incoming mail is for this domain because the mail is addressed to this domain). This is the KEY to how DPOP tells the difference between users on IP address based virtual domains, i.e. it detects the ip address which they connect to, and assigns them to a domain based on this information. domain This is the domain name for which these virtual domain settings apply drop_path This is the FULL path to the directory where users of this domain should have their mail stored (any hashing directories will be added onto this). '~' can be used as the first character of the drop file path in the same way as it is used in a drop_path setting.

Examples: (assuming the default vdomain_separator of '_')
vdomain sal 1.2.3.4 sales.netg.com /var/spool/salesmail
will set up a virtual domain for the domain sales.netg.com. Users will connect to DPOP only on the IP address, 1.2.3.4 , with a normal username, e.g. bob's username is bob. The system administrator will have added a user bob to the authentication database with username, sal_bob and bob's mail will be found in the drop file, /var/spool/salesmail/sal_bob

vdomain dom1 161.33.2.44 ast.netg.com /var/mail/domain1

vdomain dom2 161.33.2.30 lnt.netg.co.nz /var/mail/domain2

For virtual domains based on username suffix rather than ip number, use the following format: (where DPOP tells the difference between users by a suffix on the username which they use to login with)

vdomain    prefix    suffix    domain    drop_path

where
 prefix This is the internal prefix which DSMTP and DPOP will attach to the start of the username, e.g. prefix_bob, for referring to the users of this domain. Externally, this is only visible for authentication, i.e. adding users, and naming drop files. See drop_prefix suffix This is the suffix which users will add onto the end of their usernames in their email client, e.g. bob will enter bobsuffix as his username in his email client, for the purposes of connecting to DPOP, to read mail. NB: this setting includes the separator character! This is the KEY to how DPOP tells the difference between users on suffix based virtual domains, i.e. users connecting (on any ip address) have their username checked for this suffix and, if found, DPOP assigns them to this domain. domain This is the domain name for which these virtual domain settings apply drop_path This is the FULL path to the directory where users of this domain should have their mail stored (any hashing directories will be added onto this). '~' can be used as the first character of the drop file path in the same way as it is used in a drop_path setting.

Example: (assuming the default vdomain_separator of '_')
vdomain sal /sales sales.netg.com /var/spool/salesmail
will set up a virtual domain for the domain sales.netg.com. Users will connect to DPOP on any IP address with the username, user/sales, e.g. bob/sales . The sys admin will have added a user bob to the authentication database with username, sal_bob and bob's mail will be found in the drop file, /var/spool/salesmail/sal_bob

vdomain_passwd <domain> <path>

When using many vdomains with unix_user authentication, it is sometimes more convenient to maintain separate unix-style password files for each vdomain. This command permits that to be done.

The <domain> parameter must be a domain name, with no wildcards.

We STRONGLY RECOMMEND NOT using this setting on Windows based platforms - if you want a file type user database then use NWAuth.

Note: DSMTP and DPOP will create the drop files for all users in the domain which the password file is for, with the same uid and gid as the password file itself. E.g. if you have a vdomain_passwd line for the domain domain1.com of /etc/passwd2 then all users in domain1.com will have drop files with the same uid and gid as the file, /etc/passwd2.

This setting has no default value and, by default, cannot be altered by domain administrators.

Example:

vdomain_passwd vdomains.r.us /usr/local/vdomsrus/etc/passwd

vdomain_separator

Virtual Domain separator. This setting specifies the type of separator which should be used for separating the domain prefix string from the username or filename, when operating virtual domains. The default is '_'.

The domain prefix and separator only appear in the users drop file name (unless drop_prefix is false) and in the authentication database (to distinguish between the same username on two different domains).

NOTE: this setting, together with the domain prefix set in the vdomain line, DO NOT affect the username which the user logs in with (or their email address).

So, if the separator was the default '_' and the virtual domain prefix is 'dom1' for domain one, then ralph from domain one becomes dom1_ralph. Similarly, if the prefix for domain two is 'dom2' then user ralph from domain two becomes dom2_ralph in the password file. You can use this setting to change the separator to another character, e.g. '.', which would make the two examples just given become, dom1.ralph and dom2.ralph.

NB: This character is also used in naming the user's drop path, so think carefully about which character you use. For example, * is not allowed, as it might cause you to get a drop file name of, /mail/dom1*amy. Similarly '/' might cause ambiguity with a drop file name of /mail/dom1/amy.

Note also: in versions of DMail before 2.4f you can NOT have any usernames with the vdomain separator character in them, in ANY of your domains. Even though you theoretically can in versions after 2.4f we strongly advise against it.

This setting is used by both DSMTP and DPOP and, by default, cannot be altered by domain administrators.

Examples:

 vdomain_separator _ # e.g. dom1_ralph vdomain_separator - # e.g. dom1-ralph

work_path <pathname>

This setting specifies the directory for the working files, temporary files, data files etc. for all three servers, i.e. this includes DList. By default, log and usage statistics files are also stored here. The default work_path for each server is the same as the server's work path setting, e.g. dpop_path for DPOP etc., however for DMail, a common DMail directory would normally be used for all three servers' work paths.

DMSetup suggests a default work_path of
work_path \dmail\work (Windows platforms)
work_path /usr/local/dmail/work (Unix based platforms)

Examples:

 work_path drop_path # will set it to same as the drop_path setting work_path /usr/local/dmail # might be used on a Unix machine work_path c:\mail\DMail\work # might be used on an NT machine

DSMTP settings

## Configuration Settings Specific to DSMTP:

This page details only those dmail.conf settings which apply specifically to DSMTP.
For more settings see: Settings Common to DPOP and DSMTP, Settings Specific to DPOP and Settings Specific to DList

Note: After modifying a DSMTP setting you should do a tellsmtp reload command or send a reload command to the DSMTP server using DMAdmin.

### Compulsory settings:

(If omitted, DSMTP may function unpredictably, or not at all.)
 host_domain NOW a COMMON setting to both DSMTP and DPOP dsmtp_path Location of DSMTP executable (and default for many path settings). sysadmin The email address of the system administrator and 'postmaster' for DSMTP.

### Often Used Optional settings:

(These settings may be omitted, and all have reasonable defaults)

ban_ip   Specifies an IP address which DSMTP should not talk to.
bomb_dec   Mail Bomb; Specifies how much to decrement the entries in the mail-bomb cache by.
bomb_dir   Mail Bomb; Specifies which directory mail-bomb messages are to be stored in.
bomb_entries  Mail Bomb; Specifies how many entries to store in the mail-bomb detection cache.
bomb_max   Mail Bomb; Specifies DSMTP's tolerance for detecting a potential mail-bomb.
dns_host          Set specific DNS servers to be used for domain lookups (instead of using system DNS settings).
dns_timeout  Specifies how long (in seconds) DSMTP should wait on a DNS lookup.
drop_max  Specifies how big DSMTP should let dropfiles get (in kbytes).
log_data  Specifies whether or not DSMTP should log the TCPIP data which it gets.
max_msgsize  Specifies the maximum message size DSMTP may accept(in kbytes).
max_rcpts  Use to limit the number of recipients DSMTP should allow per message.
max_retry  This command is obsolete, use max_retrytime
max_retrytime  Specifies the maximum time in hours to continue attempting (once every 2 hours) to deliver a message.
msg_filter  Tells DSMTP to use a message filter (in specified file) on all incoming mail.
quiet  Tells DSMTP to direct minimal output to stdout
robot_try  Specifies how long DSMTP should try to give input to a robot before giving up (in seconds).
robot_wait  Specifies how long DSMTP should wait before killing a robot.
shell_prefix  Robot; tells DSMTP to use a prefix for autoresponder exec calls.
smtp_port  Allows you to alter to a non-standard value the port which DSMTP will listen for SMTP connections on.
tarpit_start  Anti-Spam; Number of Recipients before DSMTP should start responding slowly.
tarpit_except  Lists IP addresses which are exceptions to tarpit_start.
tcp_timeout  Specifies how long DSMTP should wait (in seconds) for a response before giving up on ALL TCPIP connections (except sendlog connections).
timezone  Tells DSMTP to fake it's timezone info with this value.
use_forward_files  Used to stop DSMTP from checking for users' forward files.

### Obscure Optional settings:

(These settings may be omitted, and all have reasonable defaults)

add_footer  Appends the given footers file if the envelope from matches the given domains.
alias_file  Specifies file where DSMTP is to look for user alias information.
alias_file_domainSpecifies file where DSMTP is to look for domain specific, user alias information.
alt_drop_path  Specifies an alternative dropfile path for a particular domain (use only when not using external authentication).
auth_allow  Sets various permissions for ESMTP/AUTH success.
bounce_body  Specifies whether or not to include the message body in a Deliver Status Notification message (DSN).
bounce_maxlen  Specifies (if bounce_body is true) how much of the body (in kbytes) to include in a Deliver Status Notification.
domain_chroot  (UNIX) Robots; Enables chroot functionality for domains.
dotstuff_robot  Makes DSMTP dotstuff robots for backwards compatibility.
forward  Creates a mail re-direction rule to be checked against all incoming mail.
forward_cc  Creates a carbon-copy mail re-direction rule to be checked against all incoming mail.
forward_from  Anti-SPAM; specifies a domain which is exempt from relaying restrictions.
forward_from_ip   Anti-SPAM; specifies an IP address which is exempt from relaying restrictions.
forward_user  Anti-SPAM; turns on an anti-relaying system which allows relaying only after a recent DPOP login.
forward_window  Anti-SPAM; sets time (in seconds) in which relaying is allowed after POP login (i.e. expiry time of forward_user records).
fromip_max  Anti-SPAM; sets a limit on message throughput per hour from any IP number.
fromip_nolimit  Anti-SPAM; specifies IP addresses which are exempt from the fromip_max setting.
gateway  Bypass DNS lookups by specifying domain-IP_address pairs for DSMTP to use.
lock_id  (UNIX); sets a file locking id for multi-server systems.
log_days  Tells DSMTP how long (in days) to keep summary log files.
max_loglen  Specifies the maximum size (in kbytes) of DSMTP's log files.
max_others  Specifies the maximum number of recipients recorded for each message in summary files.
max_queue  Sets the number of rcpt lines from queue files that DMSTP queues up in memory.
max_rcvd  Anti-SPAM; Specifies the maximum number of received lines allowed in an incoming message.
max_send  Sets maximum outgoing channels, which limits maximum simultaneous outgoing messages.
min_space  Specifies the minimum disk space (in Mbytes) which DSMTP needs in order to operate.
no_autohost  De-activate the auto adding of hosts to DSMTP's internal host_domain list.
no_dotforward   (UNIX) tells DSMTP not to look for .forward files but .fwd files instead.
ras_domain  RAS Dialup; In almost all cases, this setting is NOT necessary. It specifies the domain on which authentication is to occur (NT only).
reject_no_reverse Tells DSMTP whether it should reject messages where reverse DNS on connecting IP address fails (requires reverse_lookup to be set).
relay_to  Permits unconditional relaying to particular domains.
remind_timeout  Specifies the minimum time (in seconds) between critical error emails.
rotated_logs  Sets the number of old log files which DSMTP keeps.
show_8bitmime;  Makes DSMTP revert to pre version 2.5c default of advertising 8 bit MIME capability (not recommended).
show_ehlo;  Switches on the announcing of various ESMTP extenstions.
unix_case  (UNIX)Tells DSMTP to use strictly case sensitive user lookups.
user_quota  Enables a per-user mailbox quota system and optionally sets the default quota(true/false/kbytes).
vdomain_passwd  Common setting to DPOP and DSMTP
warn_user  Specifies when (after x hours) DSMTP is to warn the sender of a delayed delivery.

### Multiple entry settings: These settings may occur more than once(repeated from lists above).

add_footer  Appends the given footers file if the envelope from matches the given domains.
alias_file_domain specifies where DSMTP is to look for domain specific user alias information
alt_drop_path     specifies an alternative dropfile path for a particular domain
ban_ip  Specifies an IP address that DSMTP should not talk to.
host_domain       adds a domain name to the list of domains to be recognized as being local
dns_host          Set specific DNS servers to be used for domain lookups (instead of using system DNS settings).
fromip_nolimit           enables exceptions to fromip_max
forward           creates a forwarding rule for all incoming mail
forward_cc           creates a carbon-copy forwarding rule
forward_from      establishes relaying restrictions
forward_from_ip   establishes relaying restrictions
gateway           creates a gateway type rule for all incoming mail
relay_to           permits unconditional relaying to particular domains
vdomain_passwd    common setting to DPOP and DSMTP

## Detailed Descriptions of DSMTP Configuration Settings:

This setting specifies a footer file to be added onto the end of all messages sent out by DSMTP, from users on any of the specified domains.

The <filename> can be specified with a path, or without. If a path is not given then DSMTP looks in the directory specified by the dsmtp_path setting.

(NB: DON'T specify a path in version 2.8b, i.e. put the footer file in your dsmtp_path directory.)

One or many domains can be specified. Use a comma separated list (no spaces) to specify a list of domains to which the setting should apply. In addition you can use one of the keywords to save typing,
host - means that DSMTP should add the full list of host_domain settings to the list
virtual - means that DSMTP should add the full list of vdomain domains to the list
default - means that this should be applied to any domain that does not have a specific add_footer setting.

Example1:
would add the footer file, dsmtp_path/footer.txt onto any outgoing messages sent by users on the domain, domainx.com

Example2:
would add the footer file, dsmtp_path/footer.txt onto any outgoing messages sent by users on any domain (unless their domain had a specific footer of its own as set by another add_footer setting).

Example3:
would add the footer file, dsmtp_path/footer.txt onto any outgoing messages sent by users on any host_domain as well as those on the domain, domainx.com (presumably a virtual domain).

alias_file <filename>

This setting tells DSMTP which file contains the user alias information. The <filename> parameter must include the full pathname and the filename of the original alias file. DSMTP makes a copy of this file in aliases.dml, in its working directory to use when doing user alias lookups. Alias files are textfiles containing lines of the following format:
user: destination
e.g.

Lines starting with a hash are treated as comment. Destinations that have multiple words should be within quotes. e.g.

NOTE: All aliases found for a user by DSMTP are applied.

You can include another alias file using the :include: in the destination, e.g. to include the alias file /etc/aliases2 you could use the following line,

As the examples above show you can use an alias in the same way as you can use a forward setting to make DSMTP write incoming messages directly to file or to pass them to a robot with the pipe symbol, | .

Note: The alias must be entered without a domain, but the destination for the alias should contain a domain - otherwise DSMTP will assume the domain is the domain given in the first host_domain setting. If you do not wish to specify the destination domain and you don't like the host_domain default then you should put the alias in a domain specific alias file, identified in dmail.conf with the alias_file_domain setting.

You do not need to enter virtual domain prefixes in the alias file. E.g. with a vdomain prefix of dom1_ the following line is incorrect,
dom1_bob@domain1.com: dom1_fred@domain1.com
it should be,
bob@domain1.com: fred@domain1.com

Aliases only apply to valid local users, so DSMTP will check that an incoming message is for a valid local domain before it checks for an alias, whereas a forward rule can apply to local or non-local users, i.e. any domain.

Example:

alias_file /usr/aliases

alias_file_domain <domain> <filename>

This setting works exactly the same way as alias_file, except that the alias file <filename> is only applied to domains matching <domain> which may include wildcards.

This allows you to set up alias files for specific domains and also to create global aliases.

To create global aliases you can add the setting,
alias_file_domain * global_aliases and then within the file, global_aliases, you can add aliases that you want to apply on ALL domains.

NOTE: All aliases found for a user by DSMTP are applied.

NOTE: You do not need to enter virtual domain prefixes in the alias file. E.g. with a vdomain prefix of dom1_ the following line is incorrect,
dom1_bob: dom1_fred@domain1.com
it should be,
bob: fred@domain1.com
or even just,
bob: fred

If a domain is not specified on the destination, e.g.,
bob: john
then DSMTP will assume the destination user is on the same domain.

In version 2.7m and above you can use the syntax,
alias_file_domain domain filename suffix
where suffix is appended to any alias destinations with only subdomain names, e.g.
bob: fred@machine1
becomes a legal setting if the suffix was set to
.domain.com
, i.e. fred@machine1.domain.com.
NB: DSMTP only adds the suffix if there is no dot in the destination domain.

Example:

alias_file_domain /usr/aliases

alt_drop_path <domain> <pathname>

Note: This setting will be ignored unless the <domain> parameter is specified as being local by using the host_domain setting. The last applicable setting will be used.

Example:

alt_drop_path *.spammers.com /etc/trash/

auth_allow [relay],...

This setting specifies various permissions or actions that are allowed for any user that has authenticated to DSMTP using the SMTP AUTH command.

This setting is a comma separated multiple value setting which can take any of the following key words:
 Keyword Allows the authenticated channel or user to ... relay relay mail to non-local domains.

Example:

auth_allow relay
Allows any user that authenticates successfully to relay messages to non-local domains by passing any other relaying settings like forward_from_ip.

This setting specifies an IP address that DSMTP should not talk to. If something attempts to connect to DSMTP from this IP address, DSMTP serves them with this line:

551 You have no permission to talk, Goodbye

at the end of which the connection is dropped by DSMTP.

Example:

To stop anyone connecting from the IP address 1.2.3.4, use

ban_ip 1.2.3.4

This setting is an extension to the bomb_max setting. It is used for catching particularly devious mail-bombs which arrive over an extended period. The setting tells DSMTP how thoroughly it should clean up it's sender-recipient cache. Once an hour, DSMTP goes through the cache and subtracts <number> from each counter (the entry will not be removed, even if the counter becomes 0). In most circumstances, the <number> parameter should be set to be the same as the bomb_max setting. This assumes that any mail-bomb will take the form of a surge of messages in a short time. Some particularly devious sorts might send one message every five minutes for a day, which would still be a mail-bomb. If you suspect that this is happening, setting <number> to be much lower would trap the incident. Extreme care must be taken with this setting however, as DSMTP will not deliver messages which it thinks are mail-bombs, and it will only keep the last 10 it has received. Basically, if DSMTP receives bomb_max messages in (bomb_max/bomb_dec) hours, it will trigger a mail-bomb alert. The default value is 50.

Example:

With bomb_max 50 if we want to define 50 messages in 5 hours as a bomb we set bomb_dec to 10 ( as 5 = 50/10 ): bomb_dec 10

bomb_dir <pathname>

This setting tells DSMTP where to put rejected mail-bomb messages. A maximum of bomb_max messages will be placed here, the last one being the most recent. The default value is work_path

Example:

bomb_dir /dev/null

bomb_entries <number>

This setting tells DSMTP how many sender-recipient pairs to cache for mail-bomb detection. Every time DSMTP receives a message to be delivered locally, it stores the sender-recipient pair. If the pair is already present, it increments the associated counter. If there are <number> entries already in the cache, DSMTP finds one with a low count and deletes it to make room for the new one. The larger this setting is, the more likely DSMTP is to detect a mail bomb. Performance degradation may occur if it is made too large. The default value is 2000.

Example:

bomb_entries 500

bomb_entries <number>

This setting tells DSMTP how many sender-recipient pairs to cache for mail-bomb detection. Every time DSMTP receives a message to be delivered locally, it stores the sender-recipient pair. If the pair is already present, it increments the associated counter. If there are <number> entries already in the cache, DSMTP finds one with a low count and deletes it to make room for the new one. The larger this setting is, the more likely DSMTP is to detect a mail bomb. Performance degradation may occur if it is made too large. The default value is 2000.

Example:

bomb_entries 500

bomb_max <number>

This setting defines what DSMTP is to call a mail-bomb. If more than <number> messages are received for the same user, from the same source in a one hour period DSMTP will alert the system administrator and intercept any further messages with the same sender-recipient pair. These will be placed in the directory specified by the bomb_dir setting. In order to disable this feature, set <number> to something big, like 10000. The default value is 50.

Example:

bomb_max 20

bounce_body <switch>

This setting tells DSMTP whether or not it should include the body of a message in its Delivery Status Notification (DSNs can result from a failed delivery (bounce) or a successful one, if requested by the sender as set out in the Extended SMTP RFC). DSN requests are added by the sender's email client to the MAIL FROM: line of the ESMTP envelope, e.g.
MAIL FROM: <bob@netwinsite.com> RET=FULL
would request the full body to be returned with the DSN, and RET=HDRS requests that only the headers be sent if there is a DSN.

This setting can take true, false (= never) or always as an argument, with the following meanings:

true - if requested by the sender, send the message body with the notification message.
false - never send the message body with the notification message, even if it is requested by the sender.
always - always send the message body with the notification message, even if the sender only requests that the headers be sent.

The default is false, which means only the headers will be returned to the sender on a bounce or DSN.

Example:

bounce_body false
will mean that the body of a message is never bounced even if the user requests it as part of the ESTMP DSN.

bounce_maxlen <number>

This setting specifies when to truncate the body of a bounced message. If the message body exceeds <number> kb, DSMTP will truncate it. The default is 20.

Example:

bounce_maxlen 5

dns_host <ip number>

NOTE: By default, DSMTP will use any DNS servers which you have set up your operating system to use (this includes any domains listed in your hosts file (commonly /etc/hosts or \winnt\system32\drivers\etc\hosts). So you probably don't need to use this setting.

This setting is provided so that you can specify a list of DNS servers which DSMTP should use to lookup domains (resolve them to an IP address) INSTEAD of any DNS servers setup for use in the operating system.

This setting can be used any number of times or take a comma separated list of IP addresses. If multiple hosts are given, DSMTP will go through them all until it gets a valid answer.

The default is to use the system DNS setup, i.e. no dns_host setting.

Example:

dns_host 127.0.0.1

dns_timeout <time>

Example:

dns_timeout 20

domain_chroot <domain> <path> (Unix based platforms only)

It is possible to configure DSMTP to make use of user-maintained alias files (using alias_file_domain for instance) and forward (.fwd) files. These can include references to files and/or autoresponders. Particuarly in the case of virtual domains, it may be necessary to chroot to a particular directory before performing the desired operation. domain_chroot does this. The <domain> parameter may contain wildcards, DSMTP does not check that <path> exists.

Example:

vdomain prefix 1.2.3.4 vdomains.r.us.com /usr/local/vdomsrus/var/spool/
domain_chroot vdomains.r.us.com /usr/local/vdomsrus/

If a domain has a domain_chroot setting, references to robots and different drop files in forwarding rules and the like, can take relative paths. E.g. in the example above, the domain_chroot for vdomains.r.us.com would mean that a forward rule for a user in that domain to a drespond robot would have to call the robot from a relative path, with it's root based at the chrooted domain, i.e. /usr/local/vdomsrus, e.g.
forward bob@vdomains.r.us.com "|/drespond /message.txt"
where /drespond means run the drespond program from the root of the chrooted directory, so the file being run is,
/usr/local/vdomsrus/drespond
and the message file is similarly located in the same directory.

NB: domain_chroot is intended for Unix based platforms only.

dotstuff_robot <true/false>

In versions 2.5d and 2.4k DSMTP's default behaviour was changed on Unix platforms so that it no longer does dotstuffing on messages going to robots. On Windows platforms the dotstuffing of messages to robots still occurs. This setting is provided for backwards compatibility only. If set true, DSMTP will carry out dot stuffing on messages that it writes to robots.

Example:

dot_stuff true

drop_max <number>

This command tells DSMTP how big to let dropfiles become. If a dropfile is bigger than <number> kb, DSMTP will not deliver the message (it will alert the sender to the problem, but not the recipient). This setting should be used in conjunction with user_quota because when a user checks their mail, DPOP clears the dropfile and sorts the messages within it into it's own 'bin' files. Therefore, a user can have an empty dropfile but still use up a lot of space in message storage on your email server.

Example:

drop_max 5120

dsmtp_path <pathname>

This is the DSMTP installation directory. It will contain the DSMTP executable, help files and utility executables. The work_path and log_path default to here. The DMSetup installation wizard will, by default, create a directory called 'dmail' and point all of the server's home directories at it, i.e. dpop_path, dsmtp_path and dlist_path are all made to point to the directory called DMail by default.

This setting applies indirectly to DSMTP,DPOP and DList. It is global across all domains and, by default, cannot be changed by domain administrators.

Example:

dsmtp_path c:\mail\dmail\

This setting sets up a fallback address for a given domain. If a message is sent to a user at the given domain, but that user doesn't exist (or no longer exists), then the message will be sent to the given address.

The FAQ, I want all domain1 email which does not go to a specific user . . . is a common use for this setting.

Example:

fromip_max <number>

This setting activates a restriction on the number of messages which an IP number can send through DSMTP per hour. The default value is 10000.

Example:

fromip_max 50

fromip_nolimit <ip number>

This setting allows exceptions to fromip_max for local/trusted IP numbers. Wildcard characters are permitted.

Example:

fromip_nolimit 127.0.0.1

Any incoming message whose next destination is of the form user@domain, and matches <wildcard> will be sent to <address> instead, so long as <address> is valid. The <address> parameter must be of the form user@domain (i.e. it must be a valid final destination). The comparisons are done upon receiving the RCPT setting, so internally generated messages (such as those generated by the forward or alias settings) will not be checked. Any number of these settings may be used. All applicable forward settings will be applied. The '*' wildcard character may be used in the <wildcard> parameter. The message will not be delivered to the original recipient

Note: There is a fallback_address setting that can pick up addresses not covered by a forward rule, see the faq I want all domain1 email which does not go to a specific user to . . .

Forward rules can apply to any users of any domain, not just local users as they must be in an alias file.

Example:

forward bgates@windows.com jreno@doj.gov

will send a copy of all Bill's mail to Janet

This setting works exactly the same way as forward, except that it copies the message instead of redirecting. This means that both the original recipient and the user at the given address will receive the message.

Note: DSMTP will not deliver the message to the original recipient if a forward rule exists for the same email address, i.e. DSMTP will treat two rules,
forward_cc bob@dom1 bob@dom2
forward bob@dom1 george@dom2
as two forward rules,
forward_cc bob@dom1 bob@dom2
forward bob@dom1 george@dom2

Note: Also, the original recipient may not get the message if there is a forward file for that user.

Example:

forward_cc sales@bob.com bofh@bob.com

forward_from <wildcard>

Notes:

1. You can add as many of these settings as you need
2. This setting can only be used in versions 2.4h and above.
3. Adding any relaying restrictions, e.g. a forward_from line, automatically turns on relaying restrictions, as the default behaviour is to allow all relaying.
4. You will need to make sure that every client and server that connects to DSMTP in order to send messages OUT has some sort of relaying exception like this forward_from setting (forward_from_ip being the best).
5. In version 2.7 and above, DMSetup will automatically add these two lines for you,
forward_from_ip 127.0.0.1
and
forward_from_ip x.x.x.*
where x.x.x is the first three sections of the IP address of your machine. This stops your server from being an Open Relay when you have just installed it.
6. In version 2.5f and above, this setting is case insensitive, so...
forward_from domainx.com
covers, DOMAINX.com Domainx.com etc.
7. A forward rule (e.g. a forward setting or an alias) bypasses any relaying restrictions

Example: in order to allow relaying ONLY from domains "below" local.domain, say bob.local.domain, put this line in dmail.conf
forward_from *.local.domain

to allow relaying from local.domain AS WELL AS domains below it, use this line instead...
forward_from *local.domain

because 'wildcard' is a simple string search.

forward_from_ip <wildcard>

This setting is used to establish exceptions to relaying restrictions. If this command is present, DSMTP will not accept mail for non-local addresses unless the sender's ip number matches the <wildcard> parameter. If the forward_from_ip rule specifies the sender, then they are allowed to relay messages, i.e. DSMTP is happy to try and send mail to users at other machines for them.

Notes:

1. You can add as many of these settings as you need
2. This command overrides any forward_from commands, e.g. if the sender's IP address matches this setting, they can relay no matter which domain they say they are from.
3. Adding any relaying restrictions, e.g. a forward_from_ip line, automatically turns on relaying restrictions, as the default behaviour is to allow all relaying.
4. In version 2.7o and above, DMSetup will automatically add these two lines for you,
forward_from_ip 127.0.0.1
and
forward_from_ip x.x.x.*
where x.x.x is the first three sections of the IP address of your machine. This stops your server from being an Open Relay when you have just installed it.
5. If you add any forward_from_ip settings you will probably want to add entries for your server's IP address and for 127.0.0.1, so that anything that generates messages on your server can send messages to non-local users, e.g. DList or an autoresponder robot.
6. You need to make sure that every client and server that connects to DSMTP in order to send messages OUT has some sort of relaying exception like this forward_from setting (forward_from_ip being the best).
7. A forward rule (e.g. a forward setting or an alias) bypasses any relaying restrictions

Example:
in order to allow relaying only for connections coming from IP addresses starting 1.2.3., add the following rule,
forward_from_ip 1.2.3.*

also, in order to allow messages to be sent to users at other machines from your server, add
forward_from_ip 127.0.0.1

forward_user <switch>

This setting activates relay permissions for recent DPOP users. If switch is set to true, DPOP will keep a record of all recent logins ('recent' is defined by forward_window . If a message's IP number and FROM envelope entry matches an entry in that record, relaying will be permitted for that message. This allows users to read and send their mail from anywhere, while maintaing a non-relaying server.

Example:

forward_user true

forward_window <number>

This setting tells DPOP how long to let records for forward_user linger for in seconds. The default is 120 seconds, or 2 minutes.

Example:

forward_window 240 (sets the window to 4 minutes)

gateway <domain> <ip> [return domain]

This setting functions essentially as an instant DNS lookup. If the next destination of a message matches <domain> and is not local, DSMTP will not do a DNS lookup on the destination. Instead, it will use the <ip> parameter (which must be of the form w.x.y.z).

The optional [return] parameter, if present, will be added to the message's reverse-path instead of the host machine's name. Any bounce messages will then be sent via [return] This may be used when the machine pointed to by the<ip> knows the host machine by some other name (that being what goes in the [return] parameter) instead of the host machine's actual name (see host_domain for information on how to set this).

The last applicable gateway setting will be used. The <domain> parameter may include the wildcard character '*'. Any number of these settings may be used.

In versions 2.5g and above, the <ip> parameter can actually be a domain instead of the ip address. If DSMTP finds a domain destination it does a DNS lookup on this domain instead of the original domain. The domain may NOT refer to a local domain and if it refers to another gateway setting, that setting will be ignored.

Examples:

gateway fake.name 1.2.3.4
will cause any mail arriving for the domain fake.name, to be sent on to the machine with IP address, 1.2.3.4

gateway * 1.2.3.4
will cause DSMTP to gateway ALL mail onto the server at the IP address 1.2.3.4

gateway domain2.com 1.2.3.4 outside.com
will cause DSMTP to gateway mail for the domain domain2.com onto the server at the IP address 1.2.3.4, but before it sends the message it will add outside.com to the reverse path instead of it's domain.

lock_id <id>

When running multiple DPOP or DSMTP servers which access the same mail spool, it is necessary to give each server a unique id for file-locking purposes. lock_id does this. <id> can be any string but, for clarity, it should be a number to identify which server is using it.

Example:

lock_id 02

log_data <switch>

Normally, DSMTP doesn't log every line sent or received via it's TCP channels, as it can add significant bulk to the logfiles. However, full logging can be turned on by setting <switch> to 'true'.

Example:

log_data true

log_days <number>

This setting tells DSMTP how many days worth of activity summary logfiles to keep. These files are called dmxxyy.sta and dmxxyy.log, where xx is the day and yy the month that the logfile is for. The sta files contain message statistics (number received, sent, local, failed etc). The log file contains lists of recipients and senders for all messages that day. They are retained for accounting and security reasons, but can occupy quite a lot of space if left alone. Any files older than <number> days are deleted by DSMTP. The default is 14 days.

Example:

log_days 8

max_loglen <number>

DSMTPs logfile can get very large. Once they exceed <number> kb, DSMTP rotates out the old ones and starts new ones. The default value is 1024.

Example:

max_loglen 2048

max_msgsize <number>

This setting tells DSMTP the maximum size which a message is allowed to be in order for DSMTP to accept it. This applies to all messages, not just those being delivered locally. If an incoming message exceeds <number> kb, any further data will be discarded. Once the message has finished, DSMTP will notify both the sender and the recipient that the message could not be delivered, with the first 20 lines from the body of the message appended. The default is 2048 (that is, 2 megabytes).

Example:

max_msgsize 10240

max_others <number>

This setting tells DSMTP the maximum number of recipients per message to log in the daily summary logfile dmxxyy.log(see log_days . If a significant portion of the messages going through DSMTP are mailing list messages with several dozen recipients, the summary logfile can become very large, as each recipient will be recorded for each message. max_others caps the number of recorded recipients to <number> The default is 20.

Example:

max_others 100

max_rcpts <number>

One way to identify spam is that they often have a very large number of recipients per message. In order to trap this, DSMTP can limit the number of recipients an individual message can have. Any further RCPT lines will be refused. Be careful when using max_rcpts, as legitimate mailing lists can often have large recipient lists. By default, there is no limit.

Example:

max_rcpts 200

max_queue <number>

Sets the number of recipient lines from queue files which DMSTP queues up in memory.

Default is 1000 - perfect for 99% of systems. This setting is available in versions 2.7k and upwards.

NB: Do not play idly with this setting :-)
This setting is provided for tweaking of delivery performance. For example, if a server has to deal with a number of large mailing lists, you might want to increase it - carefully monitor any changes that you make to it.

All messages which arrive at DSMTP's door get put in the work_path directory as queue file (in pairs - q_x.itm being the message and q_x.idx being an index of the envelope etc.). The way that DSMTP deals with these messages is complex. This setting allows you to change how many of the messages from the queue are stored in memory (the actual message is not stored in the queue, just information on it). DSMTP does things like scanning the internal queue, reordering it, moving messages on and off it etc, so a bigger queue does not necessarily lead to improved efficiency.

In version 2.7l we have made a considerable change to the efficiency of DSMTP's queue. Therefore, if you are moving to this version or higher and you are not running the default for this setting, you should re-check that it's value is correct for your system.

Example:

max_queue 1000
will make DSMTP internally queue up to 1000 of the rcpt lines stored in queue files

max_rcvd <number>

This setting sets the maximum number of 'Received:' lines which can be contained in an incoming message's headers before DSMTP bounces the message. Received headers are added by SMTP servers when they receive a message. For this reason, it is used to check that the message has not ended up in a loop. A loop example is where you have two SMTP servers forwarding the same message back and forth to each other.

By default DSMTP rejects (bounces) messages with 15 Received: header lines. These days SMTP servers can generally talk directly to one another, so one or two received lines is normal.

This setting and it's default were added in version 2.4e.

Example:

max_rcvd 25
will make DSMTP accept messages with up to 25 Received headers (given that it does not reject the message for some other reason).

max_retry <number>

This command is obsolete. Use max_retrytime instead.

max_retrytime <number>

This setting tells DSMTP how long, in hours, it should continue to attempt to send a message. If the message cannot be delivered after this time, DSMTP will give up. The default is 48 hours.

DSMTP re-tries to send all queued messages every two hours.

Example:

max_retrytime 24
will result in DSMTP attempting to send each message until it is successfully sent, or it has unsuccessfully tried 12 times (each attempt being 2 hours apart).

max_send <number>

This setting sets maximum number of outgoing TCPIP channels, which limits maximum simultaneous outgoing messages.

The default of 10 is normally adequate. The maximum value is 50.

NOTE: More outgoing channels does not necessarily lead to better sending performance. This setting is provided in order to allow you to improve performance for your setup, e.g. relays and servers with heavy mailing list loads might require adjustment of this setting. We suggest that you only increment this by 10 channels at a time and carefully moniter any effects.

Use tellsmtp showsend to see a snapshot of the number of outgoing channels in use. Tellsmtp showchans shows you all channels in use, those in state 2 are sends. (those with the socket of -1 are no longer in use).

Example:

max_send 25
Sets the maximum number of outgoing TCPIP channels to 25.

min_space <number>

This setting specifies the minimum amount of disk space that DSMTP must have in order for it to work. If the available disk space falls below <number> megabytes, it will send an Email to the system administrator alerting them to the problem, and then it will refuse all connections. As soon as more disk space is made available, DSMTP will accept connections. Because of this, it is important that the problem be addressed as soon as possible. The default is 10, i.e. 10 Megabytes.

Example:

min_space 5

msg_filter <filename>

This setting tells DSMTP which file to use for it's message filters. The file is a simple text file, containing any number of the following types of entry:
<rule> <part> <string>
<rule> may be either 'reject' or 'accept'.
<part> may either be 'body' or a header entry such as 'Subject', 'Return-Path'.<
<string> can be any text string, may include wild cards.

For example, a text file filter.txt might look like:
reject body eschatology #This line will cause DSMTP to reject any message with eschatology anywhere in the body
accept subject yak #This line will cause DSMTP to accept any message with yak as the subject line
reject subject *cat*arm* #This line will cause DSMTP to reject any message with 'cat farming','cat charming' etc. in the subject line

The last applicable rule has priority. For instance, using the above example, a message with eschatology in the body and a subject line reading "yak" will be accepted.

If a message is rejected then DSMTP will give a message rejection code at the end of the DATA stage of the SMTP protocol, i.e.,
570 Command DATA Message rejected due to content.

Example:

msg_filter /etc/dsmtp_filter

no_autohost <boolean>

If set to true, deactivates the auto adding of hosts to DSMTP's internal host_domain list. Default is false.

Example:

no_autohost true

no_dotforward <boolean> (UNIX based platforms only)

If set to true, this deactivates DSMTP's default behaviour of looking for a .forward file in the user's home directory as specified in the /etc/passwd file. Instead, DSMTP will look for a .fwd file in the same directory as the user's drop file (including any directory hashing). The default is FALSE.

For more information on .forward and .fwd files see, Forward Files in the 'Forwarding and Aliasing' section.

Example:

no_dotforward true

The specified IP address will be hidden by DSMTP in any Received header lines that it creates.

This option has been added so that DSMTP hides internal (made up) IP addresses on a LAN when it is acting as the gateway, so that they are not visible to the outside world.

Example:

hide_rcvd_ip 999.999.999.1
will ensure that DSMTP does not put the IP address, 999.999.999.1 in the received line of any messages that it receives.

quiet <boolean>

This setting tells DSMTP to send a minimal amount of output to stdout (such as errors, and brief info on what it's up to). The information being logged to the log file remains unchanged. The <switch> parameter must be set to "true" in order to activate this option. The default setting is true.

Example:

quiet true

ras_domain <domain> (WINDOWS PLATFORMS ONLY)

Specifies a string containing the domain on which authentication is to occur.

If left blank, the domain in which the remote access server is a member.

An asterisk specifies the domain stored in the RAS phonebook for the entry.

It must be a full domain name. See the FAQ for details on running a dialup mail server (NT only).

Example:

ras_domain my.pet.domain

(using this setting is not recommended)

ras_entry <string> (WINDOWS PLATFORMS ONLY)

The <string> parameter contains the name of the dial-up entry in the RAS phonebook which DSMTP should use when running in RAS mode.

Example:

ras_entry My Connection

ras_number <number> (WINDOWS PLATFORMS ONLY)

The <number> tells DSMTP which phone number to use when dialling up in RAS mode. This should match the RAS phonebook entry.

Example:

ras_number 5551234

If the RAS entry requires a password, it must be entered here. This should match the RAS phonebook entry.

Example:

ras_smtpip <ip number> (WINDOWS PLATFORMS ONLY)

Once DSMTP has established an RAS connection, it must contact an SMTP server to retrieve messages that are waiting for it. The <ip number> parameter tells DSMTP where it is.

Example:

ras_smtpip 1.2.3.4

ras_timeout <number> (WINDOWS PLATFORMS ONLY)

After contacting the SMTP server given in ras_smtpip messages will start arriving.

This is because, after opening up the connection to the remote SMTP server, DSMTP sends the Extended SMTP command, ETRN domain, for all of the domains specified in the host_domain and vdomain settings in dmail.conf. The ETRN command causes the remote SMTP server to send all mail waiting in it's queue for the specified domain.

If DSMTP does not receive any messages for <number> minutes, it will hang up the RAS connection. The default is 2 minutes. the minimum is 1 minute.

Example:

ras_timeout 5

ras_timer <number>

If using an RAS connection to get it's mail, DSMTP will reconnect every <number> minutes. The default is 30 minutes, the minimum is 5 minutes. It would be unwise to set this number to less than ras_timeout as DSMTP would never hangup the connection, which somewhat defeats the purpose.

Example:

ras_timer 60

When establishing an RAS connection, a username is needed. This command tells DSMTP what that is.

Example:

reject_no_reverse <switch>

Normally, DSMTP doesn't bother doing a reverse lookup on incoming connections, as it can take time. However, it is sometimes desirable to reject incoming mail from machines which fail a reverse lookup. In order to do this, turn on reverse lookups and then set <switch> to true.

NB: This setting will be ignored unless you have the lookup_names setting set to true.
DPOP also ignores this setting.

Example:

reject_no_reverse true

relay_to <domain>

The relay_to setting permits unconditional relaying to a particular domain.

Example:

relay_to somewhere.com

remind_timeout <number>

This setting specifies how long DSMTP should wait between events before alerting the system administrator of a recurring problem (see sysadmin . DSMTP will not send an Email if the event occurs within <number> seconds of the last one. This means that a frequently occurring problem will only generate one error message. The default is 3600 (or one hour).

Example:

remind_timeout 7200

robot_try <time>

This setting tells DSMTP how long it ought to keep trying to send input to a robot if it cannot send the whole message immediately. It will continue to try to send the robot more data until <time> seconds have elapsed since the last successful write. DSMTP will then give up trying to send more data, but will wait until the time specified by robot_wait before killing it. If the <time> parameter is larger than that specified by robot_wait the robot will be killed regardless of whether or not DSMTP was able to send the whole message to it. The <time> parameter is in seconds, with the default being 120 (or 2 minutes).

Example:

robot_try 10

When the write to the robot fails, you will see a log line like, '*** Warning *** robot 11631 choked on 77 bytes' in dsmtp.log. If the robot_try time is reached then you will see a log line like, 'gave up trying to feed robot'.

robot_wait <time>

This setting tells DSMTP how long to wait after sending the message data to a robot before killing it. If the robot is still active after this time, DSMTP assumes that it has either hung, or is stuck in a loop, and terminates it. It can be set to any integer (negative numbers will have the same effect as 0, i.e. the robot will be killed immediately). Because there is no standard for robot implementation, they cannot be reliably assumed to terminate under all circumstances, so there is no option to switch off robot killing. The <time> parameter is in seconds, with the default being 600 (or 10 minutes).

Example:

robot_wait 10

rotated_logs <number>

DSMTP rotates it's logfile out once it reaches 1 megabyte in size. dsmtp.log is rename dsmtp1.log, dsmtp1.log is renamed dsmtp2.log, and so on. The total number of logfiles kept can be set by using rotated_logs. The default value is 4.

Example:

rotated_logs 10

shell_prefix <string>

Normally, DSMTP will run robots/autoresponder by directly forking and exec'ing the process. Sometimes this doesn't work, or doesn't have the desired effect. It is possible to set shell_prefix to fix this. If <string> is set to, say, "shell -c", DSMTP will run all autoresponders by forking and then exec'ing

/usr/bin/whatever

Example:

shell_prefix shell -c

show_8bitmime <boolean>

If set to true, DSMTP will advertise it's 8 bit MIME compatibility as part of the Extended SMTP welcome banner.

The default is false, i.e. do not advertise 8 bit MIME support.

When an email client or SMTP server opens up a connection to DSMTP, it sends the SMTP command HELO. For Extended SMTP servers, like DSMTP, it can send EHLO. In response to EHLO, DSMTP sends a number of lines which tell the client what it's capabilities are, e.g. here are the opening lines of an SMTP connection from the clients end,
220 tosh DSMTP ESMTP Server v2.5c
EHLO domainx.com
250-server.com. Hello domainx.com (161.29.2.46)
250-ETRN
250-DSN
250 HELP

If you want DSMTP to advertise 8 bit MIME as one of it's capabilities, set show_8bitmime to true, then DSMTP will show it's 8 bit MIME capability, e.g.
220 tosh DSMTP ESMTP Server v2.5c
EHLO domainx.com
250-server.com. Hello domainx.com (161.29.2.46)
250-ETRN
250-DSN
250-8BITMIME
250 HELP

In versions prior to 2.5c, DSMTP always advertised it's 8 bit MIME compatibility, but we think that 8 bit MIME is a strange thing :-) and so DSMTP no longer does by default.

Note: If DSMTP advertises as 8 bit MIME and accepts a message in that format, then it cannot pass the message on to a server or client that is not 8 bit MIME compatible (e.g. if that server only accepted 7 bit MIME messages), it will simply bounce the message back to the sender.

Example:

show_8bitmime true
will make DSMTP always advertise it's 8 bit MIME compatibility in it's welcome banner.

show_ehlo [8bit],[vrfy],[auth]

DSMTP supports the ESMTP (Extended SMTP protocol) and, as part of this, if a client connects with the EHLO command, DSMTP must respond by advertising which of the SMTP Extensions it supports.

The problem with this is that, if advertised, most clients tend to try to use the latest and greatest things, even if they are not sensible. So this setting is provided to allow you to decide what DSMTP advertises as it's capabilities.

DSMTP will always respond to EHLO with, ETRN,DSN and HELP, e.g.
250-netwin.co.nz. Hello bob.com (1.2.3.4)
250-ETRN
250-DSN
250 HELP
this setting lets you set what other things it advertises.

This settting is a comma separated multi value setting which takes any of the key words in the following table:
 Keyword Makes DSMTP Advertise auth AUTH PLAIN 8bit 8BITMIME vrfy VRFY

Example:

show_ehlo auth,vrfy,8bit
will make DSMTP advertise AUTH PLAIN,VRFY and 8BITMIME as well as the normal ETRN,DSN and HELP.

smtp_port <number>

Example:

smtp_port 1025

This setting tells DSMTP who to contact if something terrible happens. Currently, those things are:

When DSMTP detects a mail-bomb incident

Also, DSMTP automatically creates an alias for postmaster to this address (the postmaster alias is case insensitive and currently covers all domains).

It is highly recommended that this setting be included. Especially in the case of a disk full error, when DSMTP will cease to accept any incoming connections. It is most important that the problem be attended to. There is no default value.

This setting covers all domains and, by default, is not alterable by domain administrators.

Example:

tarpit_start <number>

This setting specifies the number of RCPT TO: lines at which DSMTP starts responding ever slower to further RCPT TO: lines in the SMTP protocol.

So if it is set to 7, for example, then when an SMTP session commences, DSMTP counts the RCPT TO: lines that the sender (i.e. an email client or another SMTP server) sends. On the 7th Rcpt To: line, DSMTP will do the lookup on the email address, but then delay it's response to the sender (e.g. 250 Rcpt User OK) by 1 second. After 3 more Rcpt To: lines it will delay each response by 2 seconds. Every further 4 lines received it will increase the delay by another second, up to a maximum of 15 seconds.

This setting is an anti spam measure that is independent to the max_rcpts setting, but is intended to be used in conjunction with it. The slowing of the response is likened to being stuck in a tar pit, hence 'tarpit'. This is designed to be annoying to spamming robots as it clogs them up. If you simply reject a connection then it does not bother a spamming robot, but if you can slow it down then that should make your server less desirable as a spamming target.

This setting is not included by default, i.e. there is no point at which DSMTP responds deliberately slowly.

The setting tarpit_except is provided so that you can specify servers that should be an exception to this setting.

Example:

tarpit_start 5
will result in anything that tries to give DSMTP a message with more than 5 Rcpt To: lines, gradually getting a slower and slower response, starting with a one second delay on to the 5th Rcpt To: line.

This setting can take a comma separated list of IP addresses, and wildcard entries.

Example:

tarpit_except 1.2.3.4, 161.29.2.*
will result in connections from the IP address 1.2.3.4 and any IP address starting 161.29.2. not ever getting a deliberately slow response, i.e. being restricted by the tarpit_start setting.

tcp_timeout <number>

This setting specifies how long DSMTP should wait for a response on a TCP/IP port before giving up. This only applies when DSMTP is actually expecting data. Once <number> seconds have elapsed, DSMTP closes the channel and discards the half-complete message (if receiving), or queues it for another try (if sending). Setting <number> to something small could have unpredictable results. The default value is 300 (or five minutes).

Example:

tcp_timeout 120

timezone <string>

On NT, the _timezone variable gives unreliable results. If the timezone command is present, DSMTP will insert the <string> parameter where appropriate. i.e. In date fields:

Fri, 19 Jun 1998 02:03:30 <string>

Example:

timezone +1200 NZD

unix_case <switch>

This setting tells DSMTP whether it should use strictly case sensitive user lookups for unix_user authentication. Normally, if DSMTP fails to find a user, it searches again for a case insensitive match. If only one is found, it uses that, otherwise it fails. Setting <switch> to 'true' will disable this feature.

Example:

unix_case true

user_quota <switch>

Note: If there is no 'quota' setting in a user's _inf file then, DSMTP will not impose a quota restriction on that user.

The user quota setting has been extended in Versions 2.4i and above to take a numerical value instead of the 'true' setting. The value specified is a default quota (in kbytes) for users who have no 'quota' line in their username_inf file. E.g.
user_quota 40
would result in any user without a 'quota' line in their username_inf file having a disk quota restriction of 40 kbytes.

Examples:

user_quota true
would turn on disk quotas for those users with a quota setting in their username_inf file (manually entered by the system administrator).

user_quota false
would turn off all disk quotas, i.e. DSMTP would not make any checks on the user's disk usage, ignoring all quota lines in username_inf files.

user_quota 90 (ONLY valid in versions 2.4i and above)
would turn on disk quota's for all users. DSMTP would check the username_inf file for a 'quota' line, and use it if found and for all other users a default quota of 90 kbytes will be imposed.

warn_user <number>

This setting tells DSMTP when to alert the sender of a message that it is having trouble delivering the message. The <number> parameter is in retries, which occur every 2 hours. If the <number> parameter is larger than max_retry, DSMTP will only notify the user if it completely failed to deliver the message. The default value is 4 (which means the user will be alerted after roughly 8 hours). Delay warnings must be explicitly requested by the user by using the NOTIFY=DELAY ESMTP extension.

Example:

warn_user 5

use_forward_files true/false

This setting allows all checking of forwarding files to be turned off, so that DSMTP will not check for .fwd or .forward files.

The default is true.

Example:

use_forward_files false
would stop DSMTP from looking for any forward files.

wd vdomains.r.us /usr/local/vdomsrus/etc/passwd DPOP settings

## Configuration Settings Specific to DPOP:

This page details only those dmail.conf settings which apply specifically to DPOP.
For more settings see: Settings Common to DPOP and DSMTP, Settings Specific to DSMTP and Settings Specific to DList

Note: After modifying a DPOP setting you should do a tellpop reload command or send a reload command to the DPOP server using DMAdmin.

### Compulsory settings:

(If omitted, DPOP may function unpredictably, or not at all.)

NONE: specific to DPOP, but note that there are some common compulsary settings

### Common Optional settings:

(These settings may be omitted, and all have reasonable defaults. ! remember - you can get back to this list after using a hyperlink by using your browser's 'back' button)

### Obscure Optional settings:

#### (These settings may be omitted, and all have reasonable defaults.)

 authent_cache Now a common setting - Number of authentication requests to cache, External authentication only. authent_timeout Timeout (in seconds) for external authentication requests. bin_pfull Criteria for compacting. Bins with less than bin_pfull get compacted. check_gid (UNIX only) Set if gid for drop files should be checked before DPOP accesses drop or bin files. Default is no check and set no group access. check_owner_disable (Unix only) Set if user id for drop files should not be checked. Default is to check. crlf_stored Is cr and lf stored at end of lines on this system. drop_ext Change-over compatibility; Drop file extension. Default is none. drop_kill Change-over compatibility; File related to drop file to remove after drop file has been burst. drop_old Change-over compatibility; Process temporary files left by previous popper. drop_prefix Common Setting! drop_users Specifies users who need to be able to read mail from another popper as well as DPOP (i.e. convert from bin file back to drop file). log_status Time (in mins) between logging DPOP status to log file. lowercase_username Now a common setting to both DSMTP and DPOP (2.4e and above). lowercase_password If true, DPOP will always set passwords to lower case before using them for authentication (auth module must have lower case passwords or be case insensitive). max_log_size Max size, in bytes, for DPOP log file before renaming and starting new one. max_sessions Limit on number of concurrent sessions connected at one time. DPOP will try to make this many available. msg_separator Change-over compatibility; If message separator character is not defined then we don't use one. pop_timeout How long DPOP waits (in seconds) before assuming that a connection has gone and close TCPIP channel. retr_chunk Max bytes to send in one chunk for retrv command. Default is 10000. slave_number Sets the number of DSlave processes (sub processes of DPOP) for handling burst of large drop files (we recommend 4). slave_burst_size Burst drop files of this size (in bytes) or larger with a DSlave process. slave_timeout Timeout (in seconds) for commands (e.g. burst) given to DSlave processes. Default 100 seconds.

#### authent_timeout <seconds>

Timeout for external authentication requests. If an external authentication routine is being used for checking username/password pairs you may want it to timeout if no response is given for some time. This setting sets the length of time before DPOP times out on the external authentication routine.

The default timeout is after 10 seconds.

Example:

authent_timeout 10

#### bin_path

This setting specifies the directory for user work files. That is, the username.bin sub directories. These contain bin files for processed messages and message index files. The bin_path defaults to the same as the work_path. It is often set to be the same as the drop_path. In this case a user with a drop file /var/mail/fred would have a bin directory /var/mail/fred.bin

Examples:
bin_path       drop_path
bin_path       /usr/local/bins

#### bin_pfull

This setting controls the criteria for compacting message storage bin files. Files with less than bin_pfull bytes used / total size are compacted when a user connection is closed. The default setting is 0.5

Examples:

 bin_pfull 0.9 # This would make compacting happen more often bin_pfull 0.1 # This would make compacting happen less often bin_pfull 0 # This would stop bins ever being compressed

#### bin_path

Path for user directories containing the bin and message index files. Each user's bins and msg index files are stored in a subdirectory /username.bin below the bin_path. The default is the same as the work_path. The usual choice is to either store the bin files in the same place as the drop files or all together in the DPOP work_path.

Examples:

 bin_path work_path # will set it to same as work_path bin_path drop_path # will set it to same as drop_path bin_path path/for/binfiles # will set it to path/for/binfiles

#### bulletin_from

In addition to mailing lists, DMail provides a bulletin facility. This setting determines what text will be sent in the 'from' field of bulletin messages. The default setting is Email Administrator.

• A bulletin directory is specified in the dmail.conf file with a setting: e.g. bulletin_path /var/mail/bulletins
• This directory contains files with names of the form nnn.txt, where nnn is the bulletin id number
• Any user connecting to DPOP will receive any of these files which they have not already seen as an email message
• For each user, DPOP stores the id number of the last bulletin seen by this user.

Examples:
bulletin_from    Your lord and master

#### bulletin_path

In addition to mailing lists, DMail provides a bulletin facility. This is useful when you need to send an email message to all users, but without the overheads of duplicating and sending the same message to all users. The bulletins are organized as follows:

• A bulletin directory is specified in the dmail.conf file with a setting: e.g. bulletin_path /var/mail/bulletins
• This directory contains files with names of the form nnn.txt, where nnn is the bulletin id number
• Any user connecting to DPOP will receive any of these files which they have not already seen as an email message
• For each user, DPOP stores the the id number of the last bulletin seen by this user.

Examples:
bulletin_path    /var/mail/bulletins

#### check_gid Unix Platforms Only

Set if Unix group id for drop files should be checked by DPOP and set by DSMTP when writing to drop files.

The default is for no check to be done and the drop file's group ID to be set to the gid for the user (or the gid for the uid which is returned from the external authentication routine).
Note: if check_gid is not specified then the file protection on the drop file is always set to no group access (0600) by DPOP.

DPOP always sets the owner of the drop file to the user.

NB: If set, DSMTP sets the group ID for the drop file to the specified GID if it exists.

No check is ever made on Windows platforms.

NOTE: you must RE-START DPOP after changing this setting. A tellpop reload is not sufficient.

This setting may be required so that your SMTP server can access the drop files - this should not be necessary for DSMTP, but may be for non-Netwin SMTP servers.

Example:

 check_gid mail (would check group was mail and set group to mail) check_gid netmail (would check group was netmail and set group to netmail) no check_gid setting (would set to no group access)

#### check_owner_disable Unix Platforms Only

DPOP normally checks that a user's drop file is owned by the user, and if it is not it reports an error in bursting the drop file. If you do not wish DPOP to make this check, set check_owner_disable to true. Think carefully before setting this!

No check is ever made on Windows platforms.

Example:

check_owner_disable true

#### crlf_stored

This should be set true if cr and lf are normally stored at the end of each line in a text file. DPOP will normally choose the correct default for the system which it is running on. Thus the default is true for Windows NT and false for Unix. In some rare cases it may be necessary to use this setting explicitly.

Examples:
crlf_stored    true
crlf_stored    false

#### dpop_host

The TCP/IP address of the machine DMail/DPOP is running on.

• Tellpop commands will try to connect to DPOP running on the machine specified
• There is no default for this setting, so it must be specified in dmail.conf. In recent versions (2.5f and above) the default is the first host_domain setting, so you do not need to set this setting.
Examples:
dpop_host    fred.dr.ac.nz
dpop_host    161.39.22.44

#### dpop_path

Specifies the installation directory for DPOP. The manual and utility applications are stored here. The default when DPOP is running as part of DMail is a directory called DMail, e.g. for Unix the default is /usr/local/dmail and the default for NT is C:\dmail. The DMSetup installation wizard creates the DMail directory and points all of the server's home directories at it, i.e. dpop_path, dsmtp_path and dlist_path are all made to point to the directory called DMail by default.

Examples:
dpop_path /path/for/dpop
dpop_path d:\network_apps\dmail

#### drop_ext

If drop filenames have a standard extension then it can be specified with this setting. For example, if all drop files had a .mail extension you would use the setting drop_ext .mail

The default setting is no extension. If using DSMTP then drop_ext is not required.

Example:

 drop_ext .mbx

#### drop_kill

Specifies a file related to the drop file to delete after processing the drop file.
On some systems some form of index file has to be killed after a drop file has been processed. For example, for user Fred there may be a Fred.idx which needs to be killed.
The default setting is none.

Example:

 drop_kill .idx (will delete Fred.idx after processing drop file Fred)

#### drop_old

Process temporary files left by previous popper.This setting normally only needs to be set for a short time after the changeover to DPOP from some other popper. It tells DPOP to look for and process files with a particular extension, before processing the normal drop files. For example, a previous POP server may have copied some messages into a temporary file called username.pop and these will need to be processed before the normal drop file is processed.
The default is none, i.e. don't process any old temporary files.

NB: In version 2.7m, if the drop_old setting contains a separator, DPOP will use the given path rather than thinking that it is a suffix and tacking it onto the drop file name. So DPOP will read drop files from another path given by this setting, as well as reading it's ones in the hash directory. This lets you move to another hashing method. NB: this does not mean that old bin files will be checked, so you will have to drop all users first, e.g. tellpop drop_all.

Examples:

 drop_old .oldone (Before processing drop file for user fred process fred.oldone) drop_old .~.pop (Before processing drop file for user fred process file .fred.pop)

#### drop_users

NB: Do NOT use this setting unless you understand it! :-)

A wild card list of users who access their mail from pop3 AND the Unix command line.
For these users, we have to convert any undeleted mail back to a drop file
after each connection. This degrades pop3 performance for those users, so use sparingly.
Note: This is not needed if users ONLY read mail from a Unix command line client and never get their mail through DPOP, or if they always collect their mail using DPOP.
The default is none.

Examples:

 drop_users unixman drop_users fred,john,bill drop_users uni*,JSmith drop_users billsmith

#### log_status

Sets the time between logging DPOP status to the log file in minutes.
The default is 10 hourly, i.e. 600

Example:

 log_status 120 (for logging every 120 minutes)

If set to true, DPOP will always set passwords to lowercase so that case is essentially ignored. The default setting is false - i.e. passwords are case sensitive.

Example:
lowercase_password true

The setting specifies a wildcard list of IP addresses which manager commands can come from. Specified in NetWin wildcard format: (*-wild, !-NOT, separated by commas. NO SPACES ALLOWED). Often set to * as manager commands must also contain the manager password. When Tellpop or the DMAdmin package are used remotely, a challenge-encrypted-password response sequence is used. It is recommended that you include the '127.0.0.1' address and your server's address in order for the remote manager tools to be allowed to connect.

Note: This setting will not allow access unless either of the user_ip_address or user_ip_name settings also allow access.

Examples:
manager_ip_address   161.29.2.37

#### manager_ip_name

The setting specifies a wildcard list of domains which manager commands can come from. Specified in NetWin wildcard format: (*-wild, !-NOT, separated by commas. NO SPACES ALLOWED). Often set to * as manager commands must also contain the manager password. When Tellpop or the DMAdmin package are used remotely a challenge-encrypted-password response sequence is used. It is recommended that you include the 'localhost' name and your server's name in order for the remote manager tools to be allowed to connect.

Note:

1. This setting will not allow access unless either of the user_ip_address or user_ip_name settings also allow access.

2. This setting can only work if you have allowed reverse name lookups, i.e. lookup_names true.

Examples:
manager_ip_name	     localhost, your_machine_name
manager_ip_name      *
manager_ip_name      *.fred


Specifies the password to be used for manager commands. This setting is now obsolete (from DPOP 2.0) Use command Tellpop password xyz instead. The password is no longer sent as clear text and is stored encrypted in a separate file tellpass.dat

Example:
#manager_password xyz

#### max_sessions

This setting can be used to limit the number of concurrent POP users. The default setting is 200. The number of concurrent connections is sometimes limited by other factors such as the number of available file handles. DPOP needs several file_handles per connection and on some versions of Unix file_handles per process are limited to 256. On NT and other versions of Unix, this limit may be many thousands.

Examples:
max_sessions 	99


#### max_log_size

This sets the maximum size, in bytes, for the log file before it is renamed and a new one started.
The default is 3,000 Kbytes (3Mb)

Example:

 max_log_size 3000000 (for a maximum log size of 3Mb)

#### msg_separator

Message separator character. This allows you to make DPOP read non 'sendmail' type drop files which use a separator character to separate messages within the drop file. If not defined, we don't use one and depend on a blank line followed by a valid 'From' line as a message separator (as per Sendmail drop file format).

Also, the syntax x\n for this setting can be used to imply that separator character stuffing should be carried out, i.e. email message lines in the drop file which start with the character x will be stored as xxtext and that a line which contains just the character x is used as a message separator. For example, the setting msg_separator .\n would mean lines starting with a dot would be stored as ..line and a line containing just . would signify the end of a message.

Examples:
msg_separator .\n (separator is '.' and dot stuffing should be done)
msg_separator |

#### pop_port

This sets the port number which DPOP will accept POP3 client connections on. The default is 110. This can be set to something other than 110 for testing DPOP, while leaving another pop server running on the normal POP3 port.

Examples:
pop_port 1100

#### pop_timeout

How long we wait (in seconds) before assuming connection has gone. If this setting is too long, a session left running will prevent the user from connecting from elsewhere. If it is set too short, the connection could be terminated while the user is just thinking what to do next. The default setting is 600 seconds or 10 minutes NB: this is the minimum value required by the RFC1939, so you should not set it lower than this except for testing.

Example:
pop_timeout    1200


#### retr_chunk

Sets the maximum number of bytes to send in one chunk for the retrv command.
The default is 10000, i.e. 10kb.

Example:

 retr_chunk 5000 (for a maximum chunk size of 5kb)

#### slave_number

Specifies the number of DSlave processes to use for handling bursts of large drop files. The default is 0, i.e. no slave processes will be used. If you have a large number of concurrent users, and some with large drop files or a slow file system, it is generally worth setting up several slave processes.

In version 2.5g and above DMSetup will set this to 4 when installing DMail.

Examples:
slave_number 2
slave_number 10

#### slave_burst_size

This setting determines when DPOP will use a slave process for bursting mail drop files. DPOP will use a slave process for any drop files larger than the specified size in bytes. The default for this setting is 1000000, i.e. 1Mb. Note that DPOP will only use slave processes if the setting for slave_number is 1 or more.

In version 2.5g and above DMSetup will set this to 500000 (500 Kbytes) when installing DMail.

Examples:
slave_burst_size 1
slave_burst_size 10000000


#### slave_timeout

Sets the timeout value for slave commands such as burst drop file. The default is 100 seconds. If the timeout is exceeded then the slave process is killed and a new one started. The operation which timed out is aborted.

Example:
slave_timeout 123

#### stats_path

Specifies the path for files containing a log of per connection usage statistics. One file is produced each day and they can be analyzed and summarized with the Tellpop stats command. The default is to place these stats files in the dpop_path. If no stats records are required then a blank path can be specified.

Examples:

 stats_path # implies don't log usage statistics stats_path c:\pop_stats # place stats files in c:\pop_stats

Specifies IP addresses which user connections can come from. Specified using NetWin wildcard format: (*-wild, !-NOT, separated by commas. NO SPACES ALLOWED). The default setting allows connection from any ip address. This is only one of several ways of limiting access, see Controlling Access

Note: This setting applies to any incoming TCPIP connections, even manager (DMAdmin or tellpop) commands, so you should include, 127.0.0.1

Examples:
user_ip_address *

#### user_ip_name

Specifies valid ip names user that connections can come from. Specified in NetWin wildcard format: (*-wild, !-NOT, separated by commas. NO SPACES ALLOWED). The default setting allows connections from anyone. This is only one of several ways of limiting access, see Controlling Access

Note:

1. This setting applies to any incoming TCPIP connections, even manager (DMAdmin or tellpop) commands, so you should include, localhost, and probably your machine name, in order for DMAdmin to work.

2. This setting can only work if you have allowed reverse name lookups, i.e. lookup_names true.

Examples:
user_ip_name	 localhost
user_ip_name     massey.ac.nz
user_ip_name     massey.ac.nz,otago.ac.nz,fred.john.bill
user_ip_name     *.ac.nz,bill.*.nz
user_ip_name     *

#### valid_users

Wildcard list of valid usernames. Only users whose usernames match will be able to connect to DPOP. The list is specified in NetWin wildcard format: (*-wild, !-NOT, separated by commas. NO SPACES ALLOWED)
The default allows any username to connect. Note this is only one of several ways of limiting access.

Examples
valid_users     *, !*smith*,fred,john,bill
valid_users     *

Dmail.conf Settings Specific to DList

### Configuration Settings Specific to DList:

This page details only those dmail.conf settings which apply specifically to DList.
For more settings see: Settings Common to all servers , Settings specific to DSMTP and Setting specific to DPOP

DList does not have a reload command, it will automatically notice any changes you make to DList settings in dmail.conf.

NB: All DList settings in dmail.conf begin, DList_

The Configuration File, dmail.conf

Setting Example Description
dlist_path (none) The directory for lists.dat and all DList work files, log file, and list archiving.
dlist_domain host_domain Sets the default @xxx address for messages from DList. Overriden by individual lists 'domain' setting (default is first host_domain settings).
dlist_loglvl info Logging level (debug,info,warn,error)
dlist_rotate 50000 Size of log file in bytes before it is rotated (default and minimum value is 60 kbytes)
dlist_smtp_host <domain[:port]> 127.0.0.1:3025 In versions 2.5g and above, this setting lets you set the domain or IP Address of the SMTP server it should send mail to. Optionally, you can add a colon followed by a port number which DList should connect to, other than the default SMTP port 25. ( On older versions, DList will ALWAYS send out messages to the ip address,127.0.0.1, but you can use this setting to set the port that it talks to.)
dlist_accept_from_request <true/false> true Added for Backwards compatibility. If true, accept messages from usernames containing '-request' (default is false).

#### DList settings used by DSMTP or DPOP:

• dlist_path

new DList mail Cmds

## DList Email Commands

DList commands are commands which the people on the lists (list subscribers) send to the list server. They are used to control which lists the person is joined to and to allow them to make use of other functions that lists offer.

## How to use list Commands:

DList commands are written in the body of a normal email message. The email message is then sent to a special email address,

listname-request.

For example, for a list called 'trendsetters' and a list server running on the machine 'great.isp.com', the user would put commands within an email and send it to

(Actual messages to be distributed to other trendsetters on the trendsetter list would just be sent to trendsetters@great.isp.com)

NB: Many of DList's commands have synonym command names available. For example, instead of sending the command join, the user could just send the command subscribe or even sub. Users may find it useful to use a synonym if they are using the command on other lists of which they are members.

NOTE to Moderators:

Many of the commands can take extra parameters (marked in square brackets), which are for use by list moderators. The command 'approve xxxx' should be given in the first line of a message, to signify to DList that the command that follows has come from a moderator.

The commands available are:

### Command

* parameters in square brackets are for the Moderator's use, other users should leave them blank

### Function

(Most commands will result in the list server emailing the user back at their 'reply' address with the required information)

help Returns the help information contained in these pages.

Subscribes the user to the list. Moderators can subscribe other people by specifying 'approve xxxx' where 'xxxx' is the password.

(or remove,unsub,unsubscribe,signoff)

Removes the user from the list stated in 'list_name'. Moderators and users can unsubscribe other people (depending on access settings)

Unsubscribe is also detected in messages sent to the list itself as this is a common mistake users will make.

who

(or who,review,enumerate)

Sends a mail message to the user containing a list of all members of the list stated in the 'list_name' parameter.
lists Returns a list of the lists handled by the list server, so that the user can choose the one they'd like to join.
dir Provides a list of receivable files available to users of the list 'list_name'
get <file-name>

(or send)

Sends the files requested as attachments of an email message to the user.

The User can put in as many 'file-name' parameters as needed in order to obtain all the files required.

NB: Wildcards can be used in the filename.

approve xxxxx For moderated lists, if a message contains on it's first line approve 'xxxxx', then the item will be accepted as if it came from the moderator. (Assuming xxxxx is the correct password as defined in lists.dat)
digest true | false If the user is set to 'digest true' then they will recieve all the day's messages at the end of the day in one mime message instead of as they arrive.
holiday true | false When holiday is set true you will recieve no messages.
status The sender will receive a message showing the status of the list.

DList Config File

### The DList Configuration File:

General settings for DList are contained in dmail.conf, list specific settings are stored in lists.dat in the dlist_path directory.

An example lists.dat file with entries for two lists, talk and juggling:
  list talk archive true moderator talk.master@macro.com:passwd   list juggling

#### DList Settings in DMail.conf:

Setting Default Description
dlist_path (none) The directory for lists.dat and all DList work files, log file, and list archiving
dlist_domain host_domain The default @xxx address for messages from DList
dlist_loglvl info Logging level (debug,info,warn,error)
dlist_rotate 50000 Size of log file in bytes before it is rotated
dlist_smtp_host 127.0.0.1 Destination of SMTP host to send outgoing list messages.

#### List Specific Settings in DList.dat:

Setting Default Example Description
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
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 commas (not spaces)
archive false true If set, DList will record all incoming messages in an archive sub directory.
reply_to_user false true 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.
max_size 1MB 100K Limits the maximum size of an item which can go through the mailing list.
status_interval 7 1 Period in days between automatic status reports being sent to the moderator.
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.
access_join anyone *netwinsite.com Controls who can join the mailing list
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
access_leave anyone members Controls who can unsubscribe from the mailing list. By default, anyone can unsubscribe anyone else.
join_cookie false true If set, when users join the list they will be asked to respond with a specific cookie (number) to prove that they are real humans. This setting prevents people from subscribing other people, or worse other lists, to an existing list.
title (none) N.Z. Juggling A title for the list, shown in headers and lists output.

Tellpop Cmds

## The Tellpop Command Line Utility

Tellpop provides a simple universal command line utility for controlling and monitoring the DPOP system. Of special note is the 'reload' command, which makes DPOP reload it's configuration file. It is often used after manually editing the configuration file, so that you do not have to restart DPOP for the changes made to take effect.

It is used as follows:

Tellpop  command  parameters

Examples:

Tellpop  status                 				 to check status of running DPOP system
Tellpop  key 1234-567a-4321-1111 	to load new registration key

Tellpop needs access to the same configuration file that DPOP is using. The default location for the configuration file, the default filename being dmail.conf, is system dependent

• for most Unix variations
	/etc/
• for Windows 95 and NT
	C:\winnt\system32\

In normal use, Tellpop will find the configuration file automatically. When Tellpop is being used to control DPOP running on another machine, the configuration file to be used is specified as follows, (example sends the status command).

Tellpop -i another/path/fred.conf   status

NB: Tellpop will try to connect to the server domain, as set in your dmail.conf file with the dpop_host setting. If you have not set one, it will do a gethostname( ) type call in order to find the server's domain name.

• Firstly, a configuration file wildcard list limits the 'from' address for Tellpop manager commands. The limits can be based on ip-name or ip-number wildcard lists. See the manager_ip_address setting.
• Secondly, a manager command password is used. This is normally generated on installation and stored in encrypted form in tellpass.dat. See the manager_password setting.
• If Tellpop is being used remotely, the manager password command is not normally sent across the network .

### Tellpop command summary:

Note: Underscore characters in commands are optional, so list_users or listusers can be used.



### Main Tellpop Commands

Add a username bill to DPOP’s INTERNAL list of users. The main purpose for this internal list is for license key limits.

NB: This does not control access to DPOP. Access can be limited by a variety of different means. See the valid_users setting for information on controlling access.

#### bulletin

Creates a bulletin message for all users. The message is written to a file nnn.txt in the bulletins directory. nnn is the next free bulletin number. The message will be delivered to each user when they check their email.

#### del_user

Del_user fred removes username fred from DPOP's internal user list. Note: if a user is deleted they can still connect to DPOP, as the username will automatically be added on connection. However, information such as the highest bulletin number that user has read will have been forgotten. User access can be restricted by use of controls on valid username wildcards, valid from ip name wildcards, valid Unix usernames and by disabling individual users.

The command Tellpop password xyz will set a new manager password for DPOP. An encrypted form of this password is stored in the tellpass.dat file and is used automatically by DPOP, Tellpop and DMAdmin. The password is normally encrypted with a random token whenever it is sent across a network but can be used unencrypted if DPOP is being controlled manually using Telnet.

#### status

Provides feedback on the current status of the DPOP server. The information returned includes:

• DPOP version number.
• The time DPOP was started and current up time.
• The number of current connections, the peak number of connections and the maximum number of connections allowed
• The current license class and user limit

#### stats *jul*

Provides per user connections statistics for all users from matching statistics files. DPOP produces one .stats file per day with names dpopmmmdd.stats so the example above would process all stats files for July. This can be used to provide accounting or charging information. For each user it lists:

• IP number for last connection from this user
• Total and average connection time in seconds and average connection time for checks when no mail was available.
• Total number of connections and average time between connections
• Total messages transferred and total quantity in bytes

A summary at the end gives grand totals for all users.

The output is written to the file, dpop.sum

#### flush_stats

If you want to use the Tellpop stats command to lookup statistics for the current day, you should first issue the flush_stats command to make sure current records are written to file. Otherwise, the last few connections will not be included in the summaries.

#### register

Presents questions in order to allow DPOP to be registered. A register.txt file is created for emailing to Netwin.

Payment details are encrypted for safe transfer to NetWin Ltd..

#### key xyz

Loads a new registration key xyz

#### offline

Puts DPOP in offline mode in which new connections from users are disabled. Generally used prior to shutdown in order to ensure that no current sessions are aborted. Can also be used to temporarily disable connections without stopping DPOP. Naturally, DPOP will still accept manager command connections.

#### online

Puts DPOP back in online mode, which enables normal client connections.

#### shutdown

Shuts down the DPOP system.

Reloads the configuration file to ensure that any changed settings are put into effect.

NOTE : If you have modified a dmail.conf setting which is relevant to both DPOP and DSMTP, it is necessary to reload both servers individually with their reload configuration file commands, e.g. tellsmtp reload and tellpop reload. DMAdmin will do this automatically, but note that you can send the reload command from the command list in DMAdmin whenever you wish.

If you have an exceptionally large dmail.conf file this process of reloading could take as long as 30 seconds. You should not need to do reloads of the configuration file for DPOP very often, so this sort of down time should not be too much of a problem. If it is, please contact support-dmail@netwinsite.com to discuss your situation.

#### list_users

Provides a list of all users of DPOP who have read mail or been added via add_user command.

#### log_level

This command will change DPOP's log level during runtime. It will not cause DPOP's config file to be re-written, so next time DPOP is run, it will use the log level setting found there. This command is useful for closely observing a particular transaction which DPOP may be about to make.

The available log levels are:

 error: the only information written will be errors, warnings, socket read and write information and minimal progress information. info: as well as the error information, this setting gives much more progress information, as well as file open and close calls. debug: as well as the info information, this setting gives a whole lot of internal status information, function calls...all sorts of stuff. However, it may slow down operation slightly and can produce large log files, so use sparingly.

If DPOP is crashing or doing very peculiar things, the most useful things to NetWin support are the config file and the log file.

Info is the default setting, and the usual setting for operating in. For more information, see the Logging of information and error messages section.

### Additional Tellpop commands for testing

#### drop_all

(Normally only used before reverting to another POP3 server and when 'read but undeleted' messages are left)

Turns all bins back into drop files for all users. Connection to DPOP while this command is executing is disabled.

Note: This command deletes the bin files for each user after successful conversion.

#### drop uuu

Turns user uuu's bin files back into a drop file.

Note: This command deletes the bin files if conversion is successful.

#### bins uuu

(Normally only used by NetWin - documentation only provided for completeness.)

show status of user uuu's bin files in terms of message numbers in each bin

Columns are bin number, file size, used bytes, number of messages in bin, (message numbers)

#### xtest n

(Normally only used by NetWin - documentation only provided for completeness.)

Add n users with names test0 up to testn

#### xusers n

(Normally only used by NetWin - documentation only provided for completeness.)

Add n users with random names

#### testfiles

(Normally only used by NetWin - documentation only provided for completeness.)

Check how many files can be opened concurrently. i.e. check number of free file handles available. Note: on average, two handles are needed for each concurrent client connection to DPOP. Concurrent connections on some platforms are limited by the availability of file handles or descriptors.

#### die

(Dangerous! Normally only used by NetWin - documentation only provided for completeness.)

This command simulates the behavior of certain other much loved software i.e. Causes DPOP to perform an illegal command and die, generally producing a core dump etc.

tellsmtp commands

## The Tellsmtp Command Line Utility

(Page still under construction !)

The Tellsmtp executable provides a simple universal command line utility for controlling and monitoring the DSMTP system. Of special note is the 'reload' command, which makes DSMTP reload it's configuration file. It is often used after manually editing the config file, so that you do not have to restart DSMTP in order for the changes made to take effect.

It is invoked with the command line:

tellsmtp [-n ip] [-p port] [-i conf] <command> [parameters...]
The ip parameter following the -n switch tells Tellsmtp which IP number to use when connecting to DMail. The default is simply to connect to the machine which Tellsmtp is executed from.

The port parameter following the -p switch tells Tellsmtp which port to use when connecting to DMail. The default is 25.

The -i switch tells Tellsmtp to look for appropriate settings in the DMail config file specified by the conf parameter (including full pathname).

The <command> parameter can take the following forms, as outlined below.

### Tellsmtp Command Summary:

clear_cache_all - tells DSMTP to clear it's cache of user lookups (and the forward rules etc. that they returned).
config <setting> - shows what DSMTP currently has set for that 'setting'
filters - shows all active mail_filter, or filter_file commands
help            Displays a brief summary of Tellsmtp commands
log_level       sets the amount of information logged
monitors        shows the IP numbers which DSMTP is currently remote logging to
profile        - shows a profile of code statistics.
quiet           toggles 'quiet' status, i.e. does/does not print minimal operating information to stdout
register        instigates registration function, creates register.txt
resume          tells DSMTP to resume processing outgoing mail
scriptfile.msc  sends the script file named
showchans        shows a list of current TCPIP channels and their status
showsend        shows a list of current outgoing TCPIP channels.
shutdown        starts exit of DSMTP in a reasonably civilized fashion
smtp            what follows this command is passed directly to DMail
status          causes status of DSMTP to be echoed to screen
suspend         stops DSMTP from attempting to process outgoing mail
tryall          requeues all outgoing messages to be processed immediately

Detailed List of Tellsmtp Commands:

clear_cache_all

tells DSMTP to clear it's cache of user lookups (and the
forward rules etc. that they returned).
See authent_cache.

help

Displays a brief summary of Tellsmtp commands.

help

Displays a brief summary of Tellsmtp commands.

register

When given, the register command Tellsmtp will execute
the DMail registration function. This asks questions which will allow DMail
to be registered. A register.txt file is created for emailing to NetWin.
Payment details are encrypted for safe transfer to NetWin Ltd. No parameters
are required.

scriptfile.msc

If the <command> parameter ends in .msc, Tellsmtp
assumes that a Tellsmtp scriptfile has been specified. It will then load
the scriptfile, and pass the lines in it directly to DMail. Each line will
be sent to DMail exactly as it is found in the textfile. The only exception
is when the line starts with '#'. In this case, Tellsmtp will not
wait for a response before sending the next line. This is mostly for use
when sending the DATA lines of a message. Because of this flexibility,
a scriptfile may be written to test any aspect of DMail's operation. A
simple scriptfile to deliver a message locally would read as follows:

helo test.domain
mail from:<test@any.machine>
rcpt to:<recipient@local.machine>
data
#Subject: This is a
test
#
.
quit

The hash symbol must be present at the beginning of all
lines between a DATA command and the '.' following it, or Tellsmtp will
wait (forever) for a reply, and DMail will wait (forever) for more data.
Assuming that the above script is saved as 'test.msc', the command

tellsmtp test.msc

will send the scriptfile to
DMail (or whoever is listening to the port which Tellsmtp is talking to). No
parameters are required.

smtp

The smtp command talks directly to DMail, with Tellsmtp
pretending to be an SMTP client. Any arguments following the smtp command
will be concatenated (separated by a space) and sent to DMail, followed
by a quit command. DMail's responses will be echoed by Tellsmtp. This command
is of little use, as it will only work with a very small number of SMTP
commands.

Example:

tellsmtp smtp helo test.domain

status

This command will cause Tellsmtp to echo status information
sent to it by DMail. Depending on what DMail has been up to, several screens
of information may be displayed. It is a good idea to redirect Tellsmtp's
output to a file when using this command, e.g.
tellsmtp status > a.a
outputs the status to the file, a.a.

If DMail is behaving oddly, but not crashing, the output from
a Tellsmtp status command may help us to find the problem.

Here are some details of the information that it prints out. Don't worry
if you can't understand some of it.

+DATA
DSMTP v2.7l status as at Tue Nov 09 12:35:05 1999
Uptime: 0 days, 16 hours, 48 minutes

Message Statistics
period)
Messages local/remote: (number of msgs with both local + remote rcpt lines)
Messages    delivered: (number of queued files delivered locally)
Messages      sent on: (number of queued files delivered with rcpt lines that
Messages      gave up: (number trashed for some reason (unkown rcpt etc))
Messages      pending: (number still sitting in the message queue)
Messages   to unknown: (other people talking to this server gave this many bad recipient lines)
Messages   incomplete: (messages where DSMTP could not get the entire message)
Messages     rejected: (number of messages rejected for whatever reason)

Total in:  (the total number of messages that arrived at dsmtp's door)

Total out: (a ballpark figure of the total number of messages that DSMTP dealt with)

File Rty Time Left Busy Domain
(This is a list of queued files which are currently in
the memory queue as set by the setting max_queue)
-------------------------------------------------

15236  000 -942172505    1 aol.com
15215  000 -942172505    1 aol.com
15188  001 000007140    0 companyx.com

(using the last one as an example,

15188: is the queue files number, i.e. you will find
q_15188.itm and .idx files in the work_path

001:  rcpt lines in this queue file have been tried once

000007140: time in seconds until this is next tried.  If a
large negative number this message will be tried as soon as
DSMTP can get to it - e.g. if you do a tellsmtp tryall command
all messages will be set like this.

0:  Is the queue file currently being looked at, 0 is NO, 1 is Yes.

companyx.com: the domain of the first rcpt line in the queue file, to
give you an indication of who it is addressed to.
)
-------------------------------------------------
TCP channel history
-------------------------------------------------
(The column on the left is a counter of the number of times
each close/open of a TCPIP channel occurred for the detailed reason,
some reasons relate directly to a setting in dmail.conf as noted below.)
19717 Command failed: RCPT Unknown user

77598 Connection opened:(in)

68534 Connection closed:(in) it was told to  (other end gave QUIT command)

53729 Connection refused: banned IP number  (connecting ip address matched a ban_ip setting)

12144 Connection closed:(out) DSMTP told it to (dsmtp does this when finished with a normal connection)

2936 Connection closed:(in) by remote end (other end closed the connection on DSMTP)

7692 Connection closed:(in) timeout (dsmtp waited tcp_timeout seconds for a response and then closed connection)

3461 Connection closed:(out) unexpected isclosing() (connection was aborted, other end crashed, line broke ...)

15604 Connection opened:(out) processing qfile (dsmtp opens connection as q file was to non-local domains)

1436 Command rejected: remote domain, no relaying (got a non-local rcpt line from a remote domain and DSMTP could not allow it to relay)

014 Command rejected: weird RCPT (bad syntax in rcpt to line)

013 Command rejected: untimely RCPT (order for SMTP protocol was not followed by sending device)

8054 Command rejected: too many RCPTs (number of rcpt lines greater than setting, max_rcpt)

287 Connection refused: accept() failed (remote end opened channel, DSMTP responded but could not connect to other end)

294 Command rejected: weird FROM (bad syntax of from line given)

060 Command rejected: DATA no valid rcpt fields (rejected connection at data stage because no valid destination addresses were given)

1150 Command rejected: DATA fromip_max limit hit (sending ip address had sent more than allowed messages this hour, as set by fromip_max)

006 Command rejected: premature FROM (sender got SMTP protocol around the wrong way)

003 Command rejected: DATA no valid from field (we did not get a valid FROM field but the sender still tried to send)

001 Command rejected: Found possible MX loop  (message had a lot of rcpt lines to a domain that resolved to this box but we did not have a host_domain or vdomain setting for it)

004 Command rejected: unsupported AUTH (sender tried to use an AUTH type that DSMTP does not support)

-------------------------------------------------

.

+OK finished

showchans

This diagnostic command will make DSMTP respond with a list of TCPIP channels that
have been used since startup.  List entries show the channel's current state
and how long the channel has been in that sate.  Channels which will not timeout (e.g. those
sending live log updates, see sendlog) are marked as such.

shutdown

This command will cause DSMTP to exit in a reasonably
civilized fashion, but will cause it to do so without any further confirmation
from anyone (i.e. immediately)

die

This command will cause DSMTP to crash. Used mainly for
testing how well it recovers from...ermm...a crash. Use at your own risk.
Actually, try not to use at all :-)

This command will make DSMTP reload it's config file. This
is very useful for making changes to DSMTP on the fly, without having to
shut it down and restart it. Alterations to significant commands such as
drop_path can be made, so take care when using this command. The only setting
which will have no effect if reloaded is smtp_port.

NOTE : If you have modified a dmail.conf setting which
is relevant to both DPOP and DSMTP, it is necessary to reload both
servers individually with their reload configuration file commands, e.g.
will do this automatically, but note that you can send the reload command from the command list

If you have an exceptionally large dmail.conf file, this process of reloading could take 30
seconds.  So larger sites should probably schedule reloads for every x hours and then let
customers know that their changes won't take effect until after the next scheduled reload.

log_level

This command will change DSMTP's log level during runtime.
It will not cause DSMTP's config file to be re-written, so next time DSMTP
is run, it will use the log level setting found there. This command is
useful for closely observing a particular transaction which DSMTP may be about
to make.

The available log levels are:

error:

the only
information written will be errors, warnings, socket read and write information
and minimal progress information.

info:

as well
as the error information, this setting gives much more progress information,
as well as file open and close calls.

debug:

as well
as the info information, this setting gives a whole lot of internal status
information, function calls...all sorts of stuff. However, it may slow
down operation slightly and can produce large log files, so use sparingly.

If DSMTP is behaving unusually, run it with the verbose option first. This
should give enough information to reveal whether or not it is a problem
with the config file. If all else fails, run it with the debug option.
If DSMTP is crashing or doing very peculiar things, the most useful things
to NetWin support are the config file and the log file.

Info is the default setting, and the usual setting for operating in.
of information and error messages section.

quiet

This command toggles DSMTP's "quiet" status, i.e. whether
or not it prints anything aside from minimal operating information to stdout.
On some systems (Windows NT in particular) this will result in significant
performance gains. If DSMTP is running quietly, critical messages such
as disk full warnings will still be displayed.

showq <num>

This command tells DSMTP to send the q_<num>.idx and
q_<num>.itm files back to tellsmtp.

killq <num>

This command tells DSMTP to kill the q_<num>.* files
and remove them from it's internal queue. Use this in conjunction with showq
in order to remove troublesome or unwanted messages.

suspend

This command will stop DSMTP from processing outgoing
mail. DSMTP will stay in this mode until told otherwise, so use with caution,
as incoming mail will still be accepted, so a backlog of q files will
build up.

resume

This command will tell DSMTP to resume outgoing message
processing. It undoes what suspend does.

sendlog

This command will cause DSMTP to send a copy of all it's
logfile output across the TCP connection opened by the sender of the sendlog
command.

tryall

This command tells DSMTP to requeue and immediately retry
all pending outgoing messages. Useful mainly if there has been a network
outage of some form.

monitors

This command will list all current sendlog
TCPIP connections, e.g. connections from remote admin tools such as