Options

Standard and common options

Several command-line options are standard to all commands, or are applicable across multiple commands:

/?

Display command line usage information.

This option, when used, must be the first option. It will be treated as an unknown option if encountered anywhere else. It should not be combined with any other options, because all other options and arguments to the command that follow it will be ignored.

/CACHE

Specify the size of the cache. The default is 4MiB.

/UDPPROXYSOCKETS

Specify the number of UDP sockets used by proxies. The default is 64. This consumes available port numbers on a system, but the larger this number is, the better for DNS security.

/TCPPROXYSOCKETS

Specify the number of TCP sockets used by proxies. The default is 1.

/TCPSERVERSOCKETS

Specify the number of TCP sockets used by the server to listen for client queries. The default is 1.

/LOCALHOST

Enable or disable the built-in processing for "localhost.", 127.0.0.1, and ::1.

/DECIMAL

Enable or disable the built-in processing for dotted-decimal names.

/IMPLICITALL0

Enable or disable the built-in processing for 0.0.0.0.

/IMPLICITALL1

Enable or disable the built-in processing for 255.255.255.255.

/LARGEUDP

This option applies to DNS queries, the DNS queries used to find servers, the back-end DNS queries made by the proxy DNS server dæmons, and the DNS queries made by the explicit DNS querying utilities that implement the standard lookup mechanism. It controls whether EDNS0 is used to advertise the availability of large DNS/UDP datagram capability by DNS clients. When enabled, the application DNS client libraries and the back-end DNS clients will advertise support for up to 32767 octet large DNS/UDP datagrams.

Note: The theoretical maximum for large DNS/UDP support is 64KiB, which provides DNS/UDP support for all DNS queries and responses (with the exception of "zone transfer") that could possibly be sent via DNS/TCP, and which thus would eliminate the need for ever falling back to DNS/TCP. The Internet Utilities advertises only a maximum of 32KiB minus 1 because of a stupid 16-bit sign-extension bug in 32-bit code in IBM OS/2's sockets library.

Note: Some substandard firewalls prevent the uses of either EDNS0 or large DNS/UDP datagrams. If enabling the /LARGEUDP option causes all DNS queries to fail, you will need to fix your firewall.

/IP6GLUE

Enable or disable the fetching and the use of IP version 6 address records for content DNS servers.

Note: At the time of writing, nearly all of the delegations in the DNS database were glueless with respect to IP version 6 address records. Enabling this option would thus result in a large increase in traffic generated by the server, as it attempted to fetch all of the missing IP version 6 glue.

/TTLPOSITIVEMAX

Specify the cap on the cache lifetimes of non-empty resource record sets, in seconds. The default is 604800 seconds (1 week).

/TTLEMPTYMAX

Specify the cap on the cache lifetimes of empty resource record sets, in seconds. The default is 604800 seconds (1 week).

/TTLEMPTYDEFAULT

Specify the default cache lifetimes of empty resource record sets that is inferred for RFC 2308 type 3 responses, in seconds. The default is 0 seconds.

/TTLNEGATIVEMAX

Specify the cap on the cache lifetimes of "no such name" errors, in seconds. The default is 604800 seconds (1 week).

/TTLNEGATIVEDEFAULT

Specify the default cache lifetimes of "no such name" errors that is inferred for RFC 2308 type 3 or type 4 responses, in seconds. The default is 0 seconds.

/BLACKLIST

Specify the DNS domain suffix for an SMTP client blacklist.

/WHITELIST

Specify the DNS domain suffix for an SMTP client whitelist.

/SERVER

This option specifies the domain that the client uses to connect to the server. Servers are located by domain name in a standard manner.

Note: The Internet Utilities make no attempts to magically guess whether you mean to specify a server by IP address or by domain name. You are expected to explicitly tell the software what you want. You must use the /SERVERIP option instead of this option if you are supplying an IP address, otherwise the Internet Utilities will attempt to parse supplied names as domain names, and will look them up in the DNS.

/SERVICE

This option specifies a replacement service name for the service being used. Service names numbers are used when servers are specified by domain name. Default service names are built in to most of the client commands. HTTP clients by default use "http" as the service name, for example.

/SERVERIP

In commands that are servers listening for connections: This option specifies the IP address that the server listens for connections on.

In commands that are clients that connect to servers: This option specifies the IP address that the client uses to connect to the server. The port number of the service is taken to be well-known port number for that service.

/SERVERPORT

In commands that are servers listening for connections: This option specifies the port number that the server listens for connections on.

/WELLKNOWNPORT

This option specifies a replacement well-known port number for the service being used. Well-known port numbers are used when servers are specified by IP address, or when DNS lookups have had to fall back to implicit lookups. Default well-known port numbers are built in to most of the client commands. SMTP Relay clients use port 25 as the well-known port number, for example.

/IP6ADDR

This option applies to DNS lookups, both the DNS lookups used to find servers and the DNS lookups made by the explicit DNS querying utilities that implement the standard lookup mechanism. It controls whether the standard lookup mechanism obtains IP version 6 addresses and use them to contact servers. If it is not enabled, client utilities will not use any IPv6 addresses found by DNS lookups, and will not even explicitly look up IPv6 addresses in the DNS in the first place.

/IP6
This option is similar to /IP6ADDR except that it applies to the server lookups (as made by the DNS client utilities) for looking up the DNS servers themselves (if specified by the /SERVER option).

In other words: Whilst /IP6ADDR controls the standard lookup mechanism implemented by the DNS querying utilities as their primary function, this option controls the lookups used to find the server(s) to apply the standard lookup mechanism to in the first place. If it is not enabled, DNS client utilities will not use any IPv6 addresses of DNS servers, and will not even explicitly look up IPv6 addresses of those DNS servers in the first place. (The /IP6ADDR option will control whether they then ask those servers for IPv6 information.)

/CLIENTIP

This option specifies the IP address that the client makes connections to servers from. It is useful for machines that have more than one (non-loopback) network interface. By default, client sockets are not explicitly bound to an IP address by the client utilities, leaving the operating system to pick the IP addresses for the client ends of connections.

/CLIENTPORT

This option specifies the port number that the client makes connections to servers from. It is useful for (the very rare) servers that have silly rules about client port numbers. By default, client sockets are not explicitly bound to a port number by the client utilities, leaving the operating system to pick the port numbers for the client ends of connections.

/IMPLICIT

This option applies to DNS lookups, both the DNS lookups used to find servers and the DNS lookups made by the explicit DNS querying utilities that implement the standard lookup mechanism. It controls whether the standard lookup mechanism falls back to implicit lookups.

/FETCHGLUE

This option applies to DNS lookups, both the DNS lookups used to find servers and the DNS lookups made by the explicit DNS querying utilities that implement the standard lookup mechanism. It controls whether the standard lookup mechanism attempts to fetch missing "glue" AAAA and A resource records. If the option is disabled, the standard lookup mechanism will make no attempts to fetch such missing records, and only work with what servers provide to it. Disabling this option is mostly only useful as a diagnostic aid for DNS problems.

/SRV_SUPERDOMAINS

This option applies to DNS lookups, both the DNS lookups used to find servers and the DNS lookups made by the explicit DNS querying utilities that implement the standard lookup mechanism. It controls whether the standard lookup mechanism attempts to query all of the enclosing superdomains (of the domain name given) for SRV resource records for services.

/SRV_SELF

This option applies to DNS lookups, both the DNS lookups used to find servers and the DNS lookups made by the explicit DNS querying utilities that implement the standard lookup mechanism. It controls whether the standard lookup mechanism attempts to query the domain name given for SRV resource records for services.

/BYIP

This option chooses whether server name, in those commands that specify server names as ordinary command-line arguments instead of via the /SERVER and /SERVERIP options, represents an IP address or a domain name.

Note: The Internet Utilities make no attempts to magically guess whether you mean to specify a server by IP address or by domain name. You are expected to explicitly tell the software what you want. You must enable the /BYIP option if you are supplying an IP address, otherwise the Internet Utilities will attempt to parse supplied names as domain names, and will look them up in the DNS.

/ACCESSLEVEL

In TCP server programs that expect to be spawned from the TCPSRUN command, this is the option that is used, in a RUN file, to pass the client access level information, determined by TCPSRUN, to the TCP server program.

An access level is a number. There are three standard access levels defined:

  1. No access. Deny service in some appropriate manner. (SMTP servers provide a NULL SMTP service for access level zero, for example.)
  2. Normal access. Provide normal service.
  3. Privileged access. Provide a privileged service.

How commands parse their arguments

Commands parse their command tails as a series of arguments. These are either option arguments or non-option arguments.

In all commands, an option string is prefixed by the option character, which is either the forward slash, /, or the dash, -, and terminated by whitespace. The first option string encountered determines which of the two option characters will be recognised for that and all subsequent option strings.

An option string comprises a sequence of options. Some options take arguments. These options cannot be combined with other options and must be separated from them by the option character. Options that do not take arguments may be combined with other similar options. For example

[c:\]etrn /vp mydomain.example.

is the same as

[c:\]etrn /v/p mydomain.example.

although the second form is preferable, for clarity and forward compatibility.

For options that take arguments the argument immediately follows the option without intervening whitespace. A colon is often allowed to separate the option from its argument. For example:

[c:\]etrn /serverip:127.0.0.1 somedomain.example.

Options either apply globally to the entire command tail, or to the remaining part of the command tail after the option has been seen. This varies from command to command. In either case, later options always override earlier options.

In order to work with names that may begin with the option character, or to prevent the wrong option character from being recognised, a word comprising a double option character (i.e. the double dash, --, or double forward slash, //) can be used to prevent any further option characters following it from being recognised. For example:

[c:\]etrn -- -v.silly-hostnames.example

The Internet Utilities are © Copyright Jonathan de Boyne Pollard. "Moral" rights are asserted.