ですってば。
世知辛い世の中になってきて、ぼくもお外のメールを社内に入れないように、会社のメールを外部にフォワードしないように、としないとまずいらしい。こんなことで賞罰くらうのもいやなので、まずは第一ステップで meadowy.org から会社 ^^;;; と ISP の二ヶ所にまわすようにし、会社のメールを外部に出すのをやめてみた。
が、単に ISP にまわすと spam だらけだし、Zaurus で spam filter 動かすのも無茶だし、おうちにはサーバないし。うーーーんと悩んだのだが、spam filter といえば GMail!! と気づいた。
まず、GMail に forward して、GMail から ISP に forward するようにしたのだが、単に forward するだけだと spam filter が動いてくれない。
おそらく世の中で同じことを考える人はたくさんいるだろうと gmail forward spam で、-in:spam 発見。おぉ、動いたよ。素晴らしい。
しかし、forward の機能を使うと、pop は disable になってしまう模様。もう一点、もしかすると、同じ Message-ID を持つメールが二通来ても一通は消えちゃっているかもしれない。
(defcustom mew-junkai-cases '("default")
"*Cases of JUNKAI."
:group 'mew-net
:type '(repeat (string :tag "Case" :size 0)))
(add-hook 'mew-summary-mode-hook
(lambda ()
(define-key mew-summary-mode-map "\M-i" 'mew-junkai)))
(defvar mew-junkai--cases nil)
(defvar mew-junkai--local nil)
(defvar mew-junkai--rttl 0)
(defvar mew-junkai--left 0)
(defun mew-junkai (&optional auto)
(interactive "P")
(remove-hook 'mew-pop-sentinel-non-biff-hook 'mew-junkai-next)
(remove-hook 'mew-imap-sentinel-non-biff-hook 'mew-junkai-next)
(remove-hook 'mew-scan-sentinel-hook 'mew-junkai-local)
(setq mew-junkai--local nil)
(make-variable-buffer-local 'mew-junkai--local)
(setq mew-junkai--rttl 0)
(setq mew-junkai--left 0)
(when (or auto (y-or-n-p "JUNKAI start? "))
(setq mew-junkai--cases (copy-sequence mew-junkai-cases))
(let ((cases mew-junkai--cases)
(procs (process-list))
(continue t)
(regex (concat "^" (regexp-opt `(,mew-imap-info-prefix
,mew-pop-info-prefix
,mew-local-info-prefix)))))
(setq mew-junkai--cases (mew-uniq-list mew-junkai--cases))
(while cases
(unless (and (member (car cases) mew-config-cases)
(mew-use-retrieve (car cases)))
(setq mew-junkai--cases
(delete (car cases) mew-junkai--cases)))
(setq cases (cdr cases)))
(unless mew-junkai--cases
(message "JUNKAI: No cases")
(setq continue nil))
(catch 'loop
(while procs
(when (string-match regex (process-name (car procs)))
(message "JUNKAI: Anthor Mew process running")
(setq continue nil)
(throw 'loop nil))
(setq procs (cdr procs))))
(when continue
(mew-junkai-next 'first)))))
(defun mew-junkai-next (&optional first)
(remove-hook 'mew-pop-sentinel-non-biff-hook 'mew-junkai-next)
(remove-hook 'mew-imap-sentinel-non-biff-hook 'mew-junkai-next)
(remove-hook 'mew-scan-sentinel-hook 'mew-junkai-local)
(setq mew-junkai--local nil)
(when (and (not first) (boundp 'rttl) (integerp rttl))
(setq mew-junkai--rttl (+ mew-junkai--rttl rttl))
(when (and (boundp 'left) (integerp left))
(setq mew-junkai--left (+ mew-junkai--left left))))
(if (null mew-junkai--cases)
(let ((rttl mew-junkai--rttl)
(left mew-junkai--left)
(leftmsg ""))
(cond
((= left 1)
(setq leftmsg " (1 message left)"))
((> left 1)
(setq leftmsg (format " (%d messages left)" left))))
(cond
((= rttl 0)
(message "JUNKAI done: No new messages%s" leftmsg))
((= rttl 1)
(message "JUNKAI done: 1 new message retrieved%s" leftmsg))
(t
(message "JUNKAI done: %d messages retrieved%s" rttl leftmsg)))
(run-hooks 'mew-junkai-done-hook))
(let ((mew-case-input (car mew-junkai--cases))
(mailbox (mew-mailbox-type (car mew-junkai--cases)))
(pos (point))
(obuf (current-buffer))
(mpos (marker-position mew-summary-inbox-position))
(mbuf (marker-buffer mew-summary-inbox-position)))
(setq mew-junkai--cases (cdr mew-junkai--cases))
(sit-for 0.5)
(message "JUNKAI: case '%s' start..." mew-case-input)
(sit-for 0.5)
(mew-summary-retrieve 'noflush)
(cond
((eq mailbox 'pop)
(add-hook 'mew-pop-sentinel-non-biff-hook 'mew-junkai-next 'append))
((eq mailbox 'imap)
(add-hook 'mew-imap-sentinel-non-biff-hook 'mew-junkai-next 'append))
((eq mailbox 'mbox)
(add-hook 'mew-scan-sentinel-hook 'mew-junkai-local 'append)
;; so mew-local-info- clear before run-hooks.
(setq mew-junkai--local 'inc)))
(unless first
(when (buffer-name obuf)
(set-buffer obuf)
(goto-char pos))
(when (buffer-name mbuf)
(set-marker mew-summary-inbox-position mpos mbuf))))))
(defun mew-junkai-local ()
(when (eq mew-junkai--local 'inc)
(setq mew-junkai--local nil)
(mew-junkai-next)))
(defadvice mew-summary-retrieve (before junkai-hooks activate)
"JUNKAI remove-hooks"
(remove-hook 'mew-pop-sentinel-non-biff-hook 'mew-junkai-next)
(remove-hook 'mew-imap-sentinel-non-biff-hook 'mew-junkai-next)
(remove-hook 'mew-scan-sentinel-hook 'mew-junkai-local)
(setq mew-junkai--local nil))
こういうのやるときに社内から社外に出るルートは三つほどあるのだが、社外から社内はひとつしかないので少々不安だ。是ちゃんの保守次第だ。がんばれ。だけど、そのルートが死んでも、単に休みのときに仕事のメールが読めなくなるだけだから、別に良いような気もする。
大学のときの所属サークルが今年度で解散するとのこと。今二人しかいない部員が二人とも卒業して部員がいなくなってしまうので、部室を大学に返さなければならないらしい。2月末の解散会には出るぞ。