⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spambayes.el

📁 用python实现的邮件过滤器
💻 EL
字号:
;; spambayes.el -- integrate spambayes into Gnus and VM;; Copyright (C) 2003 Neale Pickett <neale@woozle.org>;; Time-stamp: <2003-11-17 11:49:29 neale>;; This is free software; you can redistribute it and/or modify it under;; the terms of the GNU General Public License as published by the Free;; Software Foundation; either version 2, or (at your option) any later;; version.;; This program is distributed in the hope that it will be useful, but;; WITHOUT ANY WARRANTY; without even the implied warranty of;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU;; General Public License for more details.;; You should have received a copy of the GNU General Public License;; along with GNU Emacs; see the file COPYING.  If not, write to the;; Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.;; Purpose:;;;; Functions to put spambayes into Gnus and VM.;; GNUS;; ----;; To install, just drop this file in your load path, and insert the;; following lines in ~/.gnus:;;;; (setq gnus-sum-load-hook;;   (lambda ();;     (require 'spambayes);;     (define-key gnus-summary-mode-map [(B) (s)] 'spambayes-gnus-refile-as-spam);;     (define-key gnus-summary-mode-map [(B) (h)] 'spambayes-gnus-refile-as-ham)));;;; In summary mode, "B h" will train a message as ham and refile, and "B;; s", appropriately enough, will train a message as spam and refile.;; If you misfile something, simply locate it again and refile;; it--sb_filter will know that you're retraining the message.;;;;;; You can also put the following in ~/.gnus to run messages through the;; filter as Gnus reads them in:;;;;  (setq nnmail-prepare-incoming-message-hook 'spambayes-filter-buffer);;;; You can then use Gnus message splitting (looking at the;; X-Spambayes-Classification header) to file messages based on the;; spambayes score.;;;; Some folks may prefer using procmail to score messages when they;; arrive.  See README.txt in the distribution for more information on;; how to do this.;; VM (Courtesy of Prabhu Ramachandran <prabhu@aero.iitm.ernet.in>);; ----;; Put the following in ~/.vm:;;;; (load-library "spambayes");;;; This binds "l h" to retrain processable messages as ham and "l s";; to retrain them as spam.;; (define-key vm-mode-map "ls" 'spambayes-vm-retrain-as-spam);; (define-key vm-summary-mode-map "ls" 'spambayes-vm-retrain-as-spam);; (define-key vm-mode-map "lh" 'spambayes-vm-retrain-as-ham);; (define-key vm-summary-mode-map "lh" 'spambayes-vm-retrain-as-ham);;;; (setq vm-auto-folder-alist;;       '(("X-Spambayes-Classification:" ("spam" . "~/vmmail/SPAM"));;         ("X-Spambayes-Classification:" ("unsure" . "~/vmmail/UNSURE"));;         );; );;;; Hitting the 'A' key will refile messages to the SPAM and UNSURE folders.;;;; The following visible header list might also be useful:;; (setq vm-visible-headers;;    '("Resent-";;      "From:" "Sender:" "Reply-To:";;      "To:" "Apparently-To:" "Cc:";;      "Subject:";;      "Date:";;      "X-Spambayes-Classification:"))(defvar spambayes-filter-program "/usr/local/bin/sb_filter.py"  "Path to the sb_filter program.");; Gnus(defun spambayes-filter-buffer (&optional buffer)  "Filter a buffer through Spambayes.This pipes the a buffer through Spambayes, which adds its headers.  Theoutput of Spambayes replaces the contents of the buffer.  If no bufferis specified, the current buffer is used."  (shell-command-on-region   (point-min)   (point-max)   (concat    spambayes-filter-program    " -f")   (or buffer (current-buffer))   t))(defun spambayes-gnus-retrain (is-spam)  "Retrain on all processable articles, or the one under the cursor.This will replace the buffer contents with command output.  You can thenrespool the article.is-spam is a boolean--true if you want to retrain the message as spam,false if you want to retrain as ham."  (labels ((do-exec (n group is-spam)		    (message "Retraining...")		    (with-temp-buffer		      (gnus-request-article-this-buffer n group)		      (cond		       ((zerop (shell-command-on-region			       (point-min)			       (point-max)			       (concat				spambayes-filter-program				(if is-spam " -s" " -g")				" -f")			       (current-buffer)			       t))			(gnus-request-replace-article n group (current-buffer))			(message "Retrained article."))		       (t			(message "Unable to parse article--leaving it alone."))))))    (let ((group gnus-newsgroup-name)	  (list gnus-newsgroup-processable))      (if (>= (length list) 1)	  (while list	    (let ((n (car list)))	      (do-exec n group is-spam))	    (setq list (cdr list)))	(let ((n (gnus-summary-article-number)))	  (do-exec n group is-spam))))))(defun spambayes-gnus-refile-as-spam ()  "Retrain and refilter all process-marked messages as spam, then respool them"  (interactive)  (spambayes-gnus-retrain 't)  (gnus-summary-respool-article nil (gnus-group-method gnus-newsgroup-name)))(defun spambayes-gnus-refile-as-ham ()  "Retrain and refilter all process-marked messages as ham, then respool them"  (interactive)  (spambayes-gnus-retrain nil)  (gnus-summary-respool-article nil (gnus-group-method gnus-newsgroup-name)));;; VM(defun spambayes-vm-retrain (is-spam)  "Retrain on all processable articles, or the one under the cursor.is-spam is a boolean--true if you want to retrain the message as spam,false if you want to retrain as ham."  (interactive)  (message (concat "Retraining" (if is-spam " as SPAM" " as HAM") " ..."))  (vm-pipe-message-to-command   (concat spambayes-filter-program (if is-spam " -s" " -g") " -f") nil)  (message (concat "Done retraining messages"                   (if is-spam " as SPAM" " as HAM") ".") ))(defun spambayes-vm-retrain-as-spam ()  "Retrain and refilter messages as spam"  (interactive)  (spambayes-vm-retrain t))(defun spambayes-vm-retrain-as-ham ()  "Retrain and refilter messages as ham"  (interactive)  (spambayes-vm-retrain nil))(provide 'spambayes)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -