Function: spam-check-blackholes

spam-check-blackholes is a byte-compiled function defined in spam.el.gz.

Signature

(spam-check-blackholes)

Documentation

Check the Received headers for blackholed relays.

Source Code

;; Defined in /usr/src/emacs/lisp/gnus/spam.el.gz
(defun spam-check-blackholes ()
  "Check the Received headers for blackholed relays."
  (let ((headers (message-fetch-field "received"))
        ips matches)
    (when headers
      (with-temp-buffer
        (insert headers)
        (goto-char (point-min))
        (gnus-message 6 "Checking headers for relay addresses")
        (while (re-search-forward
                "\\([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+\\)" nil t)
          (gnus-message 9 "Blackhole search found host IP %s." (match-string 1))
          (push (spam-reverse-ip-string (match-string 1))
                ips)))
      (dolist (server spam-blackhole-servers)
        (dolist (ip ips)
          (unless (and spam-blackhole-good-server-regex
                       ;; match against the reversed (again) IP string
                       (string-match
                        spam-blackhole-good-server-regex
                        (spam-reverse-ip-string ip)))
            (unless matches
              (let ((query-string (concat ip "." server)))
                (if spam-use-dig
                    (let ((query-result (dig-query query-string)))
                      (when query-result
                        (gnus-message 6 "(DIG): positive blackhole check `%s'"
                                      query-result)
                        (push (list ip server query-result)
                              matches)))
                  ;; else, if not using dig.el
                  (when (dns-query query-string)
                    (gnus-message 6 "positive blackhole check")
                    (push (list ip server (dns-query query-string 'TXT))
                          matches)))))))))
    (when matches
      spam-split-group)))