smtpdcheck(1)                 Mail Avenger 0.8.1                 smtpdcheck(1)



NAME
       smtpdcheck - check SMTP servers

SYNOPSIS
       smtpdcheck [--stop {ip-addr|name}] [--timeout seconds]
                  [prio:]server [[prio:]server]

DESCRIPTION
       smtpdcheck checks to see if SMTP servers are available.  The intent is
       for use on secondary mail servers, which have no reason to accept mail
       when the primary server is available.

       The argument consists of a list of server names, each of which may
       optionally be prefixed by a numeric MX priority and a colon.  (This is
       exactly the format for MX records returned by the avenger dns command.)
       smtpdcheck will attempt to connect to each server in succession.

       If one of the servers specified on the command line is available,
       smtpdcheck will print its name to standard output and exit with status
       1.  If smtpdcheck cannot connect to any of the servers, it will exit
       with status 0.  If a system error occurs, smtpdcheck will exit with
       status 2.

       OPTIONS

       --stop {ip-addr|name}
           Tells smtpdcheck to stop before checking a server with IP address
           ip-addr or hostname name.  If such a host is encountered in the
           list of servers and prio is specified, then smtpdcheck will
           consider it acceptable for other servers with the same priority to
           be available, even if those servers were first in the list.  In
           other words, given the following arguments:

                  smtpdcheck --stop s2.domain.com \
                             10:s1.domain.com 10:s2.domain.com \
                             20:s3.domain.com

           This command will always succeed, regardless of whether
           "s1.domain.com" is up, because "s2.domain.com" has the same
           priority.  On the other hand, the following command will fail and
           output "s1.domain.com" if "s1.domain.com" is up:

                  smtpdcheck --stop s2.domain.com \
                             10:s1.domain.com 20:s2.domain.com \
                             30:s3.domain.com

           If a gethostbyname lookup for the argument name fails, smtpdcheck
           will exit immediately with status 2.

       --timeout {seconds]
           By default, smtpdcheck spends 10 seconds probing each server.  This
           includes the time to do a DNS lookup, to establish a TCP connection
           to port 25 of the server, and to read the "220" SMTP code from the
           server's SMTP greeting message.  To use a different value, specify
           it with the --timeout option.  The value 0 disables the timeout
           completely, which is dangerous since smtpdcheck might then end up
           waiting forever to read the "220" string.

EXAMPLES
       To refuse to relay mail at a secondary MX server when the primary
       server is not down, you might place the following in
       /etc/avenger/secondary (assuming MxLocalRcpt is 1):

               dns RECIP_MXES mx "$RECIPIENT_HOST"
               setvars
               server=`smtpdcheck --stop $MYIP $RECIP_MXES`
               test -n "$server" && defer "Please use server $server"

SEE ALSO
       avenger(1) dbutil(1) asmtpd.conf(5),

       The Mail Avenger home page: <http://www.mailavenger.org/>.

BUGS
       smtpdcheck could achieve much lower latency by probing all the servers
       simultaneously.  It should also include some kind of caching, to avoid
       repeatedly trying to contact an unavailable server.  Finally, hosts
       with multiple IP addresses could be handled more cleanly, though what
       smtpdcheck does should probably work in most cases.

AUTHOR
       David Mazieres



Mail Avenger 0.8.1                2010-04-12                     smtpdcheck(1)
