Provided by: mxallowd_1.9-2_amd64 bug

NAME

       mxallowd - dynamically whitelist your Mail eXchanger

SYNOPSIS

       mxallowd  [-d]  [-c  configfile] [-t whitelist-time] [-p pflog-interface] [-l pcap-filter]
       [-F] [-s] [-q] [-p] -f fake-mailserver -r real-mailserver -n queue-num

DESCRIPTION

       mxallowd is a daemon which uses libnetfilter_queue (on Linux) or pf and pflog (on BSD)  to
       allow  (or  deny)  connections to a mailserver (or similar application) if the remote host
       hasn't connected to a fake daemon before.

       This is an improved version of the so-called  nolisting  (see  http://www.nolisting.org/).
       The  assumption  is  that  spammers are not using RFC 2821-compatible SMTP-clients and are
       sending fire-and-forget spam (directly to the first or second MX-entry without retrying on
       error).  This  direct access is blocked with mxallowd, you'll only get a connection if you
       retry.

       NOTE: It is highly recommended to install nscd (nameserver caching daemon)  or  a  similar
       software  in  order  to speed-up DNS lookups. Since version 1.3, DNS lookups are done in a
       thread (so they don't  block  the  main  process),  however,  on  very-high-traffic-sites,
       mxallowd may show significantly better overall performance in combination with nscd.

OPTIONS

       -b, --no-rdns-whitelist
              Disable whitelisting all IP-addresses that have the same RDNS as the connecting one
              (necessary for google mail)

       -c, --config
              Specifies an alternative configuration file (instead of /etc/mxallowd.conf)

       -t, --whitelist-time
              Specify the amount of time (in seconds) until an IP-address will  be  removed  from
              the whitelist

       -s, --stdout
              Log to stdout, not to syslog

       -q, --quiet
              Don't log anything but errors.

       -f, --fake-mailserver
              Specify  which  IP-address the fake mailserver has (connecting to it will whitelist
              you for the real mailserver)

       -r, --real-mailserver
              Specify which IP-address the real mailserver has

       -F, --foreground
              Do not fork into background, stay on console

       -n, --queue-num (only available when compiled for netfilter_queue)
              Specify the queue number which will be used for the netfilter_queue-link. This  has
              to  be the same which is specified in the iptables-rule and it has to be specified,
              there is no default.

       -p, --pflog-interface (only available when compiled for pf)
              Specify the pflog(4) interface which  you  configured  in  pf(4).  The  default  is
              pflog0. Also see the pcap-filter-option if you use an interface which does not only
              get smtp-traffic.

       -l, --pcap-filter (only available when compiled for pf)
              Specify the filter for pcap. The default is "port  25".  See  tcpdump(8)  for  more
              information on the filters.

FILES

       /etc/mxallowd.conf
              System-wide  configuration  file.  Use  the  long options without the beginning two
              dashes. For example:

                   stdout
                   fake-mailserver 192.168.1.3
                   fake-mailserver 192.168.1.4
                   real-mailserver 192.168.1.5
                   queue-num 23

EXAMPLES FOR NETFILTER

       The machine has  two  IP-addresses.  The  mailserver  only  listens  on  192.168.1.4,  the
       nameserver  returns  the  mx-records  mx1.domain.com  (192.168.1.3)  with  priority  5 and
       mx2.domain.com (192.168.1.4) with priority 10.

       # modprobe nfnetlink_queue
       # iptables -A INPUT -p tcp --dport 25 -m state --state NEW -j NFQUEUE --queue-num 23
       # mxallowd -s -F -f 192.168.1.3 -r 192.168.1.4 -n 23

       Then open a separate terminal and connect via telnet on your real mailserver.  You'll  see
       the  connection  attempt  being  dropped.  Now  connect  to  the fake mailserver and watch
       mxallowd's output. Afterwards, connect to the real mailserver to verify your mailserver is
       still working.

EXAMPLES FOR PF

       The  machine  has  two  IP-addresses.  The  mailserver  only  listens  on 192.168.1.4, the
       nameserver returns  the  mx-records  mx1.domain.com  (192.168.1.3)  with  priority  5  and
       mx2.domain.com (192.168.1.4) with priority 10.

       Create a pf.conf like this:

            table <mx-white> persist

            real_mailserver="192.168.1.4"
            fake_mailserver="192.168.1.3"

            real_mailserver6="2001:dead:beef::1"
            fake_mailserver6="2001:dead:beef::2"

            pass in quick log on fxp0 proto tcp from <mx-white> to $real_mailserver port smtp
            pass in quick log on fxp0 inet6 proto tcp from <mx-white> to $real_mailserver6 port smtp
            block in log on fxp0 proto tcp to { $fake_mailserver $real_mailserver } port smtp
            block in log on fxp0 inet6 proto tcp to { $fake_mailserver6 $real_mailserver6 } port smtp

       Afterwards, load it and start mxallowd using the following commands:

       # pfctl -f /etc/pf.conf
       # mxallowd -s -F -f 192.168.1.3 -r 192.168.1.4

       Then  open  a separate terminal and connect via telnet on your real mailserver. You'll see
       the connection attempt being dropped.  Now  connect  to  the  fake  mailserver  and  watch
       mxallowd's output. Afterwards, connect to the real mailserver to verify your mailserver is
       still working.

       The ruleset for pf is actually longer because pf does more  than  netfilter  on  linux  --
       netfilter  passes  the  packets  and lets mxallowd decide whether to drop/accept whilst pf
       blocks/passes before even "passing" to mxallowd.

SEE ALSO

       iptables(8), pf(4), pflog(4), tcpdump(8)

AUTHOR

       Michael Stapelberg <michael+mxallowd at stapelberg dot de>