DMail Utilities Download Page

This is a slowly evolving page :-)

Netwin and some of our customers have produced add-ons for DMail. This page provides links to those, along with any information available, on the utility which is not provided with the utility.

All those written or owned by netwin are marked; 'Netwin'. All others have been written by third parties and, as such, you should use them at your own risk - please do not assume that they have been tested (although most have) by Netwin, or that Netwin proclaims them safe to use or even functional with its products :-)

ODBCAuth - External Authentication

An External Authentication module written by us for talking to an ODBC driver that connects to a User Database on a Windows box.

Designed with the following Databases in mind,
Microsoft Access, Microsoft SQL Server, ORACLE.

For details see the odbcauth page in the dmail manual,

NB: This is currently a BETA authentication module. Contact,
DMail Support if you have any problems with it.

Latest download is top one in list below,

Known Problems:

NB: ODBCAuth only supports the BASIC External Authentication Protocol, i.e. user checks and lookups - it does not allow searches and adding users via it.

NB: ODBCAuth with MS SQL Server: In version 1.0d we have fixed the bug with MS SQL 7 from version 1.0c.


1.0i 5 Oct 2000 TRW
- recompiled 1.0h with debug symbols in COFF format so that drwtsn32.log files will be more useful.

- 1.0h 2 Oct 2000 trw
     - fixed bug with lookup `Huayn'Husayn causing -DEAD `Huayn'Husayn Database Problem, please try again later (odbc_query() failed
     d: Line 1: Incorrect syntax near 'husayn'.|Unclosed quotation mark before the char)
     - disallow by default the following chars in the local part of usernames (in front of @) by default,

   BADCHARS_LOCALPART "':|;[]/\()<>\""

     - disallow by default the following chars in any part of usernames by default,
   BADCHARS ":|\"`'"

     (those last two are 60 and 27 in Hex)
     - disallow highascii chars in any part of username, i.e. chars 0-31 and 127 up.
     - added -allowhighascii, to allow usernames with chars in the ranges 0-31 and >127.
     - added ini setting, allowhighascii true, to allow usernames with chars in the ranges 0-31 and >127.
     - added -badchar <string-list>, where string-list specifies a list of bad characters to override the default list with
     - added ini setting, badchar <string-list>, where string-list specifies a list of bad characters to override the default list with
     - added -badchar_localpart <string-list>, where string-list specifies a list of bad characters to override the default localpart (before the @) list with
     - added ini setting, badchar_localpart <string-list>, where string-list specifies a list of bad characters to override the default localpart (before the @) list with
     - more than one @ symbol no longer allowed in username by default
     - added -allowats which overrides default limitation of one @ symbol in username
     - added ini setting, allowats true, which overrides default limitation of one @ symbol in username
     - after -dead response the database was not always reopening, so added do close first. (NB: reopen never happens on initial open - odbcauth always stops if connect fails initially).
     - added -logpass or ini setting logpass true, which causes the full received line to be logged including the password.
     - removed debug ini setting again (if found assume log found), but still have debug as command and command line option.

-1.0g 20 Sept. 2000 trw
- if ini file load fails, then return '-DEAD Unable to load ini file (try moving it to c:\winnt\system32 directory)' and die.
- now uses system_dir if it can get it rather than \\winnt\\system32

-1.0f 06 Sept 2000 trw
-added support for field_forwardcc, if field set to true, then add $user to start of fwd="" field if we return one.

-1.0e 26 Jul 2000 KB
- added exception handling to stop the assertion errors.
- fixed one exception handler in odbc_query that returned 0 (caused death if
sql server stopped after odbcauth started up.)
- added isdead, and isdead_reason so that odbc stuff can cause -DEAD with
reason to be returned instead of -ERR for most database problems.

1.0d 21 Jun 2000 KB + TRW
- fixed bug with SQL 7
- removed 'debug' ini setting so cannot accidently run in debug mode.

1.0c 8 May 2000 TRW
- all lookups are done with lowercase usernames when lowercase_username true in
ini file.
- ensures that username returned matches that given with orig_user variable.
- added setting, log true, which causes debug logging but nothing extra printed to screen.

1.0b - 27 April 2000 TRW
- fix log_path setting, so when set don't get small extra log in exe directory.
- remove printfs so that 'type 1' and 'type 5' etc are not returned in non-debug mode
- change database connection errors to return - DEAD instead of -ERR so that
users get told to come back later.
- made -DEAD messages return nice, 'Database Problem, please try again later' message.
- make log lines not have blank line between them (imsg etc print with \n instead of NEXT_LINE).

1.0a - 22 Mar 2000 TRW put on the site.

  • (Netwin)

  • TCPAuth - External Authentication Client+Server

    TCPAuth is a TCPIP client+server module that will take any other module as its backend. Allows easy authentication across boxes and across platforms.

    For details see the tcpauth manual page in the dmail manual,

    NB: This is currently a BETA authentication module. Contact,
    DMail Support if you have any problems with it.

    Latest download is top one in list below,


    1.0b, 6 Nov 2000, First beta released - no known issues.


    - Netwin's latest version of the autresponder. Run drespond or drespond.exe from a command line to see usage information. You should set up a forward rule or an alias to the drespond robot for the user whose mail you wish to have responded to. See robots for more information.

    'Netwin' - for NT
    NB: This file is included in the DMail 2.4h, and above, distribution set for all platforms.

    Columns - for creating batch files to add users

    - A small utility written by Netwin, which can be used to create a batch file that adds a list of users to an External Authentication Module, e.g. NWAuth

    Run cols(.exe) without any arguments to get the following usage information:

    Columns Version 1.0a

    Columns allows you take data from specific columns
    in each line of an input file and write it out to a
    file (cols.out) in a specified format.

    cols filename <-try> -delim ";" -out "nwauth -set $4 $5"

    Where $4 indicates the 4th column.
    Columns are delimeted by the single character
    given with the -delim option.
    Use the -try option to test your parameters (no
    output file will be created).

    For example:

    This example shows four users being added to the nwauth external authentication routine, Note, in order to do this you do need to know the user's passwords in an unencrypted form.
    The command line,

    cols input.txt -delim ";" -out "nwauth -set $3 $4"

    will turn the following input file,input.txt,


    into the output file, cols.out,

    nwauth -set bob bobs_password
    nwauth -set fred freds_password
    nwauth -set rupert ruperts_password
    nwauth -set joe joes_password

    This file can then be renamed, cols.bat and run by simply entering cols at the command prompt.

    Additional Use: To add a prefix/suffix to all usernames

    The flexibility of the output string allows you to use Columns to add suffixes and prefixes to the usernames.

    E.g. To add a domain suffix onto the end of all usernames in your nwauth.txt file,

    tam:lcYQf:fwd="" info="" groups=""
    bob:mlUW[:fwd="" info="" groups=""
    trev:qwEWJY:fwd="" info="" groups=""
    fred:eqO_FA:fwd="" info="" groups=""
    fred99:dkM]GUPg:fwd="" info="" groups=""
    fred9:xiaIeUF:fwd="" info="" groups=""

    run cols on that file with the following command line,

    cols nwauth.txt -delim ":" -out "$ $2:$3"

    This gives the following output file, cols.out,"" info="" groups=""[:fwd="" info="" groups="""" info="" groups="""" info="" groups=""]GUPg:fwd="" info="" groups="""" info="" groups=""`Od:]JEN:

    You can then replace your nwauth.txt file with this file renamed as nwauth.txt. NOTE: To replace nwauth.txt you must make sure that there are no entries in nwauth.add and that all instances of nwauth are stopped (i.e. shutdown all servers and check process list for any stray instances).

    Download for NT

    IMAPD - IMAP Server

    IMAPD is a IMAP server to run alongside or instead of DPOP, to allow users to connect to an IMAP server to read their mail, instead of connecting to the POP server. Each user is able to connect using either IMAP or POP, and is free to switch between the 2 servers. However, any email they have read using one server will not be available through the other server.


    1. The IMAP server supplied here is based upon Mark Crispin of the University of Washington's IMAP4rev1 server (RFC 2060), version 4.4, which has been modified to run in conjunction with DMail. Mark Crispin's source can be obtained from See Imap Release Notes for his copyright notice and release notes.
    2. We supply this port 'as is where is'. DMail Support staff can offer limited help with problems with the unpacking of the distribution set and/or problems with our port.
    3. You need to be running version 2.5h or higher of DMail.

    For installation instructions see,
    IMAPD Server

    For configuration instructions see,
    IMAPD Configuration

    Download: 'Netwin'

    Latest Release Versions:
    IMAPD 4.4.3z2 - Windows NT (Intel) ( 426,588 bytes )
    IMAPD 4.4.3z - Linux (Intel) ( 801,387 bytes )
    IMAPD 4.4.3z - Linux libc6/redhat 5/6 (Intel) ( 459,331 bytes )
    IMAPD 4.4.3z - Solaris (Intel) ( 1,196,252 bytes )
    IMAPD 4.4.3z - Solaris (Sparc) ( 998,661 bytes )
    IMAPD 4.4.3z - Free BSD 3 ( 754,281 bytes )
    IMAPD 4.4.3z - Digital Unix (OSF) ( 875,080 bytes )

    Previous Release Versions:
    IMAPD 4.4.3w - Windows NT (Intel) ( 422,810 bytes )
    IMAPD 4.4.3v - Linux (Intel) ( 781,421 bytes )
    IMAPD 4.4.3w - Linux libc6/redhat 5/6 (Intel) ( 456,123 bytes )
    IMAPD 4.4.3w - Solaris (Intel) ( 1,187,353 bytes )
    IMAPD 4.4.3w - Solaris (Sparc) ( 863,193 bytes )
    IMAPD 4.4.3w - Free BSD 3 ( 755,371 bytes )
    IMAPD 4.4.3w - Digital Unix (OSF) ( 867,303 bytes )


    - Netwin's latest version of the nwauth external authentication module. See external authentication for more information.

    NB: This file is included in all distribution sets, we recommend that you use the one from the latest beta release. Please note that if you are using WAdduser, then you must upgrade it to the same version as the nwauth you are using.

    LDAPAuth - External Authentication Module

    - Netwin's latest version of the LDAP external authentication module. See the external authentication section of the dmail manual for more general information and the LDAPAuth page for specific information.

    NB: LDAPAuth is now built with the DMail distribution set, so check for the current version in your distribution set first. If not there check the list below. If you can't find the version you want for your OS then please email DMail Support.

    Windows Platforms:
    UNIX based Platforms:
    ldp10e_libc6 (binary only)

    Please email DMail Support if you would like us to try building LDAPAuth on another platform, or you can download the source with the link below,

    Known bugs in recent versions:

    • Various versions up to 1.0i. The default ldapauth.ini file has the commented out setting,
      #ldapobjectclass inetorgperson
      which should be,
      #ldap_objectclass inetorgperson (i.e. with an underscore)
    • 1.0c fwd field returned with incorrect syntax, i.e. fwd=blah rather than fwd="blah"
    • 1.0c can core dump on some systems when given a null username

    Recent History:

    • 1.0L TRW 13/03/2001

      -added init file setting, sha_hash true so on set passwords added in form,

      i.e. they are stored using the Secure Hash Algorithm rather than in plaintext. This is needed by the OpenLDAP server because it does not do the hashing for you on encrypt but it will be default hash a plaintext password given by a client if the entry in the userPasswd attribute starts with,
      {sha} or {ssha}
      (i.e. ldapauth does not need to do anything different on lookup or check command, just on set)

      - CHANGED DEFAULT: added ssha hashing to be done by default. Use ssha_hash_dont true, to turn it off. Puts {ssha} on start of hashed password. As per SHA the databases automatically use SSHA if they see the string, {ssha] on the start of the string.

    • 1.0k TRW 26/2/2001 (for DMail_beta 3.0a1)

      - finished optional fields (extended to 20=MAX_FIELDS - can be increased and then recompile). setting is 'info_fields', syntax is,

      info_fields <response_field> <db_field_name>[,<response_field> <db_field_name>,...]
      info_fields usergroups groups
      info_fields usergroups groups,ftpquota disk_quota
      so ldapauth will translate the field name pairs where necessary on set, lookup, check and search commands.

      - made ldap_search_name be used in ld_set, so that if set to something other than mail then set command will try to set the attribute specified rather than mail.

      - added in ld_safe.c and .h so that all strcpy's etc are safe. In process did away with all different sized buffers. All increased or stayed same at 1024 except for forward field buffer was 2000, but I think 1024 is enough given overall response must be less than 1001. Also kept MAX_PATH.

      - fixed search * command to work when pop_domain is and is not set.

    • 1.0j TRW 6/12/2000

      - adding 5 optional fields to look for, return and set, e.g., field1 usergroups groups

    • 1.0i trw added -version option.
    • 1.0h chrisp - Added setting ldap_scope, defaults to LDAP_SCOPE_SUBTREE can also be set to LDAP_SCOPE_ONELEVEL, LDAP_SCOPE_BASE
    • 1.0g chrisp - added user_extend true, if defined then if username has ldap search fields added to it they are added to the base search (no they replace the base and they must be added to the username, e.g. chrisp,ou=developers,o=netwin
    • 1.0f Chrisp added setting 'ldap_search_name' which defaults to 'mail' and also changed so if domain is blank then domain name is not added.
    • 1.0e (adding the stuff from 1.0d again)
      28 July 2000 TRW
      - fix fwd="" stuff.

    DNAuth - beta

    - Netwin's latest version of the dnauth external authentication module, which reads from DNews's users.dat file.
    here for more information.

    Version 1.0a is not considered worth using, 1.0b is :-)
    NB: This file is included in the DMail 2.5d, and above, distribution set for all platforms.

    Keith Steven's NT ODBC Authenticator

    An ODBC external authentication module for DMail on Windows NT.

    Follow this link for more information . . .
    ODBC Authenticator
    (if you need the source for this authenticator then note that there is a small charge)

    Dean Wong's NiagaAuth Perl Script for MySQL (and others)

    An external authentication module written in Perl for use with MySQL. Uses DBI, so should also work for Msql and Oracle.

    See also, Netwin's MySQLAuth module for information on DMail and MySQL.

    Please contact DMail Support in the first instance if you have problems or questions on this module.

    Download from our beta directory

    (Netwin) FixHash - for changing between hashing methods

    NB: This is a new Netwin utility which is still in its beta form. We have tested it on both NT and Linux, and checked that it does not alter directory or file permissions, but we have not tested it on a large system as yet. Please let us know if you try it and how you get on.

    This utility will move all directories and files in a mail spool from one hashing system to another. The systems that it works with are those defined under the hash_spool dmail.conf setting,
    i.e. hash_spool 0 = no hashing,
    hash_spool 1 = 1 extra directory level,
    hash_spool 2 = 2 extra directory levels.

    Here is an example of running this program to change from hash_spool 0 to hash_spool 2, where at present all mail is in drop files,

    ./fixhash -hash 2 -path /var/mail


    1. You must add the option, -doit for fixhash to actually do anything. If you don't it simply writes to screen what it would do.
    2. Enter just ./fixhash, (or simply fixhash on NT) to get further usage information
    3. Remember to set your hash_spool setting in dmail.conf so that DSMTP and DPOP know where to find the drop and bin files
    4. You MUST shutdown DSMTP, DPOP and DList before running fixhash
    5. Fixhash moves DPOP's bin_files for every user if it finds them in the same directory as the user's drop file.
    6. See also,
      Changing hash_spool, what needs to happen?, how do I test fixhash?

    NB: Fixhash will be in all distribution sets from 2.8r onwards, so you should have it on your machine already!

    Download BETA for NT:

    Download BETA for Linux:

    Download BETA for AIX:

    Download Source and UNIX Makefile:

    1.0b 24 Nov 2000
    - added use of newhash.c sam, as used in dmail 2.9g and above.
    - added -old option, for doing old style hashing changes.
    - added '-version' option (TRW)


    Products Downloads Prices Support Company