2009-12-13 (日)

Subject も本文も存在しないメールはスパムフォルダに振り分け [procmail]

最近 1 日に 10 通程度、毎回違う From で Subject も本文も存在しない
スパムが来るのですが、bsfilter で捕捉できません。仕方がないので、そ
のようなメールは問答無用でスパムフォルダに振り分けることにしました。

以下が ~/.procmailrc のレシピです。touch しているのは、Mew でスパム
フォルダを訪問した時に自動でスキャンを走らせるためです。

PATH=${HOME}/bin:${PATH}
MAILDIR=${HOME}/Mail
:0
* !^Subject:
{
      :0 HB:
      * ? mail-body-empty
      * ? touch ${MAILDIR}/spam/.mew-mtime
      ${MAILDIR}/spam/.
}


mail-body-empty は自作の Ruby スクリプトです。~/bin に置きました。
以下にコピペします。

#!/usr/bin/ruby

# 標準入力から渡されたメールの本文が空だったら 0、空でなかったら 0 以外を返す。
# メール本文が空行のみ、または空行の連続を「空」と定義する。

mode = :header

STDIN.each do |line|

  case mode
  when :header
    if /^$/ =~ line
      mode = :body
    end
  when :body
    unless /^$/ =~ line
      exit 1
    end
  end

end

exit 0

### End of file



最初は "* ? mail-body-empty" でなく "* < 1" と書いていたのですが、
うまくいかなかったのでこのスクリプトを作りました。どうやら "<" は
ヘッダと本文の合計サイズを評価する仕様のようです。

2007-10-19 (金)

formailを使った重複メールの削除 [procmail][Mew]

[2007-07-31-1] で話題にした重複メールの件。

To: masutaka.net@gmail.com
Cc: 加入しているメーリングリスト

という宛先でメールが来ると、同じメールが 2 通来てしまう。
procmail 付属の formail をうまくを使えば、スマートに削除できることが分かった。
以下は ~/.procmailrc の該当の設定。

PATH=$PATH:/usr/local/bin
MAILDIR=$HOME/Mail.local
DELETEDIR=$HOME/.trash/Mail/delete
:0
* ? formail -D 8192 msgid.cache
* ? touch $DELETEDIR/.mew-mtime
$DELETEDIR/.


formail が Message-ID を msgid.cache というファイルに 8192byte 蓄え、
重複メールかの判断をしている。そう判断されたメールは $DELETEDIR に振り
分けられる。msgid.cache は $MAILDIR に作られる。どちらのディレクトリとも
メールサーバから見える場所を指定すること。$HOME が無難。
ディレクトリはあらかじめ掘っておき、適切なパーミッション(2700等)をかけておくこと。

.mew-mtime を touch しているのは、Mew から $DELETEDIR を見たときに
スキャンが走るようにするため。

2007-07-31 (火)

重複メール [procmail]

To: masutaka.net@gmail.com
Cc: 加入しているメーリングリスト
という宛先でメールが来ると、同じメールが 2 通来てしまう。
procmail 付属の formail を使えば Message-ID が同じメールを削除してくれる。詳細は割愛。
でも削除は怖いから、どこかのディレクトリに待避したいなあ。Notes のメールは Message-ID が重複しているし...。
あとは、メール本文が同じかどうかでも判断するようにしたい。MD5 でハッシュを計算すれば、負荷は少ないはず。

この記事に言及しているこのブログ内の記事

2005-08-29 (月)

bsfilter の使用感 [fetchmail][procmail]

elisp だけで実装したスパムフィルタ mew-spam-stat.el でスパム除去し
ていたが、スパム判定洩れが多くなってきたので、評判が良い bsfilter
を使ってみることにする。

【環境】
OS: RedHat Linux 7.2
メール受信: fetchmail + procmail
フィルタ: bsfilter

fetchmail で外部の POP サーバーからメールを収集し、procmail でロー
カルマシンに配送。その際、bsfilter を使って SPAM メールを指定ディレ
クトリに移動してしまおう、というのがねらい。

まず、fetchmail、procmail、bsfilter をインストールする。
bsfilter は、http://bsfilter.org/ から入手できる。

[bsfilter のインストール]
上記 bsfilter のサイトから入手した bsfilter-X.Y.Z.tgz 内の
bsfilter/bsfilter を、/usr/local/bin などにコピーするだけ。

[bsfilter の育て方]
最初、bsfilter は、どれが SPAM で、どれがクリーンなファイルなのか分
からないので、教えてあげないといけない。具体的には以下のようにする。

% find $HOME/Mail/inbox -type f ! -name ".mew-*" | xargs bsfilter --add-clean
% find $HOME/Mail/spam -type f ! -name ".mew-*" | xargs bsfilter --add-spam
% bsfilter --update



もちろんこれに先だって、$HOME/Mail/inbox の中の SPAM メールを
$HOME/Mail/spam ディレクトリに移しておく。

[fetchmail の設定]
$HOME/.fetchmailrc に、たとえば以下のように記述。

poll pop.nifty.com
proto apop
user xxxxx
pass yyyyy
no rewrite
no mimedecode
fetchall
mda "/usr/bin/procmail -d zzzzz"


上の設定の場合、POP サーバーは pop.nifty.com でユーザーアカウントは
xxxxx パスワードは xxxxxx。そして、ローカルマシンのアカウント
zzzzz に、procmail を使って配送している。

[procmail の設定]
$HOME/.procmailrc は、以下のように記載する。

PATH=/usr/local/bin:/usr/bin:/bin
MAILDIR=$HOME/Mail
:0 HB:
* ? bsfilter --auto-update
* ? touch $MAILDIR/spam/.mew-mtime
spam/.


この場合、bsfilter で SPAM と判定されたメールは POP のスプールには
送られず、直接 $HOME/Mail/spam にコピーされる。

今のところ、動きは上々。
不愉快なメールに悩まされることが少なくなることを期待している。

(URL: http://k-ishik.seesaa.net/article/6166960.html)

最終更新時間: 2017-04-29 14:50

検索
最近の話題
- 2017-04-29
  Docker ではないコンテナ systemd-nspawn を使ってみた
- 2017-04-16
  CircleCI 2.0 で capistrano デプロイしてみた
- 2017-04-15
  CircleCI 2.0 をローカルで実行できる circleci コマンドとは何者か
- 2017-04-13
  Rails リポジトリに CircleCI 2.0 を導入した
- 2017-04-08
  PS4 Pro と LG の 4K テレビ 43UH6500 で nasne は使えるのか?
- 2017-04-02
  オムロンの低周波治療器が肩こりにだいぶ効く
- 2017-03-21
  ローカル環境を出来るだけ Dockerize した
最近追記された記事
- 2017-04-13-1 (13日前)
- 2017-04-13-1 (15日前)
- 2017-03-02-1 (57日前)
- 2017-02-25-1 (62日前)
- 2017-02-21-1 (66日前)
- 2015-06-07-1 (72日前)
- 2016-10-19-1 (81日前)
- 2016-01-01-1 (93日前)
- 2015-01-04-1 (102日前)
- 2015-06-07-1 (122日前)
カテゴリ
- Anthy (3)
- Apache (11)
- Apple (1)
- ATOK (4)
- au (3)
- AWS (17)
- Bazaar (1)
- Berkshelf (2)
- BigQuery (1)
- BitBar (3)
- Book (85)
- Boxen (2)
- Bugsnag (1)
- C (26)
- capistrano (4)
- chalow (56)
- ChatWork (1)
- Chef (17)
- Chrome (3)
- Chromecast (1)
- CircleCI (10)
- Comics (2)
- Cooking (10)
- cvs (15)
- cygwin (12)
- D3.js (1)
- Debian (55)
- Docker (3)
- E-mail (8)
- elasticsearch (4)
- Emacs (219)
- Emacs講座 (10)
- English (4)
- feedforce (7)
- fetchmail (3)
- Firefox (20)
- Fluentd (4)
- ftp (1)
- Game (20)
- Gem (5)
- Git (9)
- GitHub (15)
- Go (5)
- Google (1)
- gpg (4)
- GrowthForecast (7)
- Health (3)
- Heroku (9)
- Homebrew (10)
- HTML (6)
- iBook (1)
- iPhone (15)
- IRC (1)
- Jenkins (8)
- JS (1)
- Karabiner (1)
- KeySnail (3)
- Kibana (1)
- Kindle (1)
- Langrich (7)
- LDAP (6)
- Life (19)
- Linux (6)
- Mackerel (1)
- Mew (18)
- MongoDB (1)
- Mozilla (19)
- Music (1)
- MySQL (1)
- NAS (4)
- nginx (6)
- NHK (1)
- Node (1)
- ntp (4)
- OOP (1)
- OpenID (2)
- openssl (1)
- Opera (2)
- OSX (41)
- Perl (14)
- PHP (19)
- PostgreSQL (1)
- procmail (4)
- Programing (3)
- Puppet (1)
- Python (2)
- Rails (12)
- Rake (2)
- RaspberryPi (1)
- RedHat (29)
- Redmine (3)
- Rspec (1)
- Ruby (48)
- samba (3)
- screen (7)
- sed (5)
- serverspec (6)
- sh (8)
- Slack (2)
- Solaris9 (22)
- Spring (2)
- ssh (4)
- StatusNet (21)
- svn (12)
- Swift (1)
- Tablet (1)
- tdiary (3)
- Twitter (14)
- Twmode (6)
- Ubuntu (5)
- UNIX (102)
- vagrant (8)
- Video (21)
- vim (1)
- Wercker (9)
- Windows (29)
- Wine (3)
- XML (11)
- XP (1)
- zsh (25)
- インストールメモ (33)
- クイックシェイプ (12)
- ネタ (15)
- 勉強会 (14)
- 携帯 (6)
- 正規表現 (4)
過去ログ
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12
2002 : 01 02 03 04 05 06 07 08 09 10 11 12
2001 : 01 02 03 04 05 06 07 08 09 10 11 12
Google+