;;; spam-report.el --- Reporting spam
-;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
;; Author: Ted Zlatanov <tzz@lifelogs.com>
;; Keywords: network, spam, mail, gmane, report
:group 'spam-report)
(defcustom spam-report-gmane-use-article-number t
- "Whether the article number (faster!) or the header should be used."
+ "Whether the article number (faster!) or the header should be used.
+
+You must set this to nil if you don't read Gmane groups directly
+from news.gmane.org, e.g. when using local newsserver such as
+leafnode."
:type 'boolean
:group 'spam-report)
(setq field (or (gnus-fetch-field "X-Report-Spam")
(gnus-fetch-field "X-Report-Unspam")
(gnus-fetch-field "Archived-At")))
- (setq host (progn
- (string-match
- (concat "http://\\([a-z]+\\.gmane\\.org\\)"
- "\\(/[^:/]+[:/][0-9]+\\)")
- field)
- (match-string 1 field)))
- (setq report (match-string 2 field))
- (when (string-equal "permalink.gmane.org" host)
- (setq host rpt-host)
- (setq report (gnus-replace-in-string
- report "/\\([0-9]+\\)$" ":\\1")))
- (setq url (format "http://%s%s" host report))
+ (when (stringp field)
+ (setq host
+ (progn
+ (string-match
+ (concat "http://\\([a-z]+\\.gmane\\.org\\)"
+ "\\(/[^:/]+[:/][0-9]+\\)")
+ field)
+ (match-string 1 field)))
+ (setq report (match-string 2 field))
+ (when (string-equal "permalink.gmane.org" host)
+ (setq host rpt-host)
+ (setq report (gnus-replace-in-string
+ report "/\\([0-9]+\\)$" ":\\1")))
+ (setq url (format "http://%s%s" host report)))
(if (not (and host report url))
(gnus-message
3 "Could not find a spam report header in article %d..."
;; report: "/gmane.some.group:123456"
(funcall spam-report-url-ping-function host report))
+(defcustom spam-report-user-mail-address
+ (and (stringp user-mail-address)
+ (gnus-replace-in-string user-mail-address "@" "<at>"))
+ "Mail address of this user used for spam reports to Gmane.
+This is initialized based on `user-mail-address'."
+ :type '(choice string
+ (const :tag "Don't expose address" nil))
+ :version "23.0" ;; No Gnus
+ :group 'spam-report)
+
+(defvar spam-report-user-agent
+ (if spam-report-user-mail-address
+ (format "%s (%s) %s" "spam-report.el"
+ spam-report-user-mail-address
+ (gnus-extended-version))
+ (format "%s %s" "spam-report.el"
+ (gnus-extended-version))))
+
(defun spam-report-url-ping-plain (host report)
"Ping a host through HTTP, addressing a specific GET resource."
(let ((tcp-connection))
(set-marker (process-mark tcp-connection) (point-min))
(process-send-string
tcp-connection
- (format "GET %s HTTP/1.1\nUser-Agent: %s (spam-report.el)\nHost: %s\n\n"
- report (gnus-emacs-version) host)))))
+ (format "GET %s HTTP/1.1\nUser-Agent: %s\nHost: %s\n\n"
+ report spam-report-user-agent host)))))
;;;###autoload
(defun spam-report-process-queue (&optional file keep)