  | 
 
 
 
 |  
 |  | 
 
  
    | MILTER-CALLBACK(8) | 
    FreeBSD System Manager's Manual | 
    MILTER-CALLBACK(8) | 
   
 
milter-callback —
    sendmail milter using sender verification. 
  
    milter-callback | 
    [-s path to sendmail
      socket] [-t sendmail
      timeout] [-m milter email
      address] [-u milter
      user] [-f fake email
      address] [-c callback
      mode] [-i IP address]
      [-l loglevel]
      [-D] | 
   
 
The milter-callback performs sender
    verification of the envelope-from e-mail address using 3 basic
    callback modes on the sender MXes and/or sending
    relay. 
The options are as follows: 
  -s
    path 
  - The path to sendmail socket file, by which sendmail and the milter will
      communicate. Defaults to
      /var/run/milter-callback.sock.
 
  -t
    sendmail timeout 
  -  
 
  -m
    e-mail address 
  - E-mail address user in MAIL FROM: in SMTP callout
      sessions.
 
  -u
    milter user 
  - A user to
      
suid()
      to. Currently this option is not used. This will be fixed in later
      releases. 
  -f
    e-mail address 
  - Fake e-mail address used in RCPT TO: to check if
      the relay is an open relay.
 
  -c
    mode 
  - Callback mode, can be rfc,
      direct or both. Defaults
      to both mode. In rfc mode
      the sender is validated according to RFC 821: if
      MXes for sender domains exist, the sender is checked on those MXes; if
      not, the sender is checked on the host taken from the hostpart of the
      e-mail address. If all of the MXes reject e-mail envelope-from address
      that relay is trying to send, the message is rejected. If all/one of the
      MXes is accepting such mail, the message is relayed. Otherwise the message
      is tempfailed. In direct mode sender is validated
      on sending relay by opening reverse connection. In
      both mode previous two modes are used
      sequentially. Plus, a fake e-mail address verification is performed.
      Finally, the message is accepted only if following conditions are met: the
      fake e-mail is rejected on the sending peer, one/all of the MXes accepted
      original e-mail, the sending peer accepted the e-mail address it's trying
      to send. The message is rejected if all of the MXes rejected reverse
      e-mail, otherwise the message is tempfailed. In
      both mode reverse peer testing will be skipped if
      the reverse peer is one of the MXes. Plus, a feature called
      graceful DNS relaying can be applied. See it's
      description below. Note: the direct mode is
      considered as weird and exotic, and it exists only because it exist
      internally inside the program on procedural level. I see no reason to use
      it.
 
  -i
    IP address 
  - this option enables IP address test mode, the supplied IP address will be
      tested against whitelisted networks, then program will exit.
 
  -l
    loglevel 
  - Level of logging detail. Supported levels are 0,
      1, 2 and
      3. 0 is the less detailed
      level, and 3 is the most.
 
  -D 
  - Don't detach from controlling terminal and log to stdout.
 
 
One of the first features implemented was
    graceful DNS relaying. It means that if, for
    example, the envelope-from e-mail address is
    some@foo.bar and the IP of the relay that is sending
    such mail resolves to somehost.foo.bar, and the
    domain level of this host will be 2 or more, reverse relaying checks will be
    skipped and only MX tests will be performed. This is a dangerous feature,
    because the spammers may set their IPs to resolve to some well-known e-mail
    providers domains, even to your own e-mail domain. Use this feature with
    caution, it can be only set through the configuration file.
    milter-callback also implements the cache, the main
    idea of teh cache is to minimize the traffic sent and received during
    callbacks. Also I should say here that
    milter-callback will insert 4 headers to e-mails it
    has processed: one, X-Callback , that will indicate
    that the message was processes by milter and the version of the milter, and
    another, X-Callback-Status , that will contain
    reasons why this message was passed.
    X-Callback-Envelope-From , that will e-mail address
    that sending relay told receiving relay in MAIL FROM. This address may be
    different from the e-mail address in From header, and this will indicate
    possible address forgery. milter-callback will also
    appen the X-Callback-Cached header, if the decision
    about a messages was taken using cache.
    milter-callback can be built with PostgreSQL
    support, that can simplify the lost mail searching and whitelist handling
    using the provided web-interface. 
milter-callback looks for a configuration
    file in /usr/local/etc/mail/milter-callback.conf and
    at the time of this writing this is defined only in
    milter-callback sources. This behaviour is a subject
    to changing. The configuration file options are mostly same as the
    command-line keys and are self-explanatory. 
The milter-callback logs to syslog and
    currently I have no plans to change that scheme or implement independent
    logging system. 
Currently the only way to pass the mail from RFC-compliant but
    spam-alike sumbission-only relays is either whitelist them, or using SPF,
    but on their side. That means, that in both and
    direct modes it has no standard mechanism to
    distinguish spammers from relays that use RFC-compliant but still spam-like
    methods of sending mail. The key principle that in
    both mode the decision about relaying a message is
    taken basing on the ability of the sending relay to pass the e-mail in
    reverse direction. Basically, this isn't a strong rule (see section
    RFC FIGHTINGS ),
   
   but in modern environment this can be relied on, if we take some precautions.
    Those precautions are simple but uncomfortable: whitelist all known relays
    clusters that use outbound-only relay scheme without having proper SPF
    record. Basically, these are large ISPs and public e-mail services. After
    all, it's up to you to choose the comfortable balance level between amount
    of received spam and the amount of bouncing e-mails. Without whitelisting
    milter-callback will bounce the mail from
    outbound-only relays, from e-mail lists and subscriptions, as they often use
    the same outbount-only scheme. Plus, it bounces the mail from non-RFC
    mailers and non-RFC mail filters. The RFC 821
    insists that SMTP replies use the scheme <3 digit
    code><space><reply text>.
    milter-callback usually bounces the mailers those
    reply codes aren't separated by space. I won't change that behaviour. Also,
    it used to say that greylisting fights with SMTP-callouts - basically that
    is not true. Suppose we have a sending relay with greylisting enabled and a
    relay with milter-callback. First time the sending
    relay will receive bounce, because callout will be greylisted. But as soon
    as the sending relay will retry the relaying,
    milter-callback will do the callout again, and it's
    obvious that after some time it will succeed. The only small problem with
    the milter-callback and greylisting is that if the
    relay uses both greylisting and the milter-callback
    the incoming e-mail will be checked twice with milter-callback, and this is
    because the message flow scheme in libmilter. Finally,
    milter-callback bounces mail from others sender
    verification schemes that use non-RFC compliant methods of sender
    verification. Once again, RFC 821 insists that
    envelope-from address must be valid e-mail address, but some of the sender
    verification implementations use the <> empty
    invalid address. This mail is bounced in the
    milter-callback and I won't change that RFC
    behaviour too. I don't see a single reason why not to use a valid e-mail
    address in sender verification scheme. 
First of all, spammers that send mail from forged e-mail addresses
    don't violate the RFCs. Second, sending mail through any permitting relay
    isn't RFCs violation too. Finally, openrelaying isn't an RFCs violation at
    all. But there is other side of that. RFCs doesn't say that e-mail MUST be
    relayed. It even doesn't say that the e-mail MUST be relayed on native MXes
    for that domain. RFC only describes the procedures used when sending or
    receiving mail. milter-callback uses all
    RFC-compliant procedures and codes in such procedures. Thus, it doesn't
    violate SMTP RFCs directly or indirectly. Insisting on the reverse relaying
    isn't described in RFCs along with relay-symmetric scheme, but it's neither
    prohibited. 
The milter-callback and manual were
    written by Eugene M. Zheganin
    ⟨milter-callback@norma.perm.ru⟩. 
 
 
  Visit the GSP FreeBSD Man Page Interface. Output converted with ManDoc.
  |