2006-07-28 (Fri)
■[pc][spam]Starpitの課題

Starpitについてのエントリーを書いてから、いろいろとご意見や実際に使っていただいた際の問題点など、いただきました。
それで浮かんできたStarpitの課題をリストアップします。
→一部はsleepパッチにより低減可だが、すでにtarpittingを通らないとわかっているIPからも毎回tarpittingで待たせることが無駄
- S25Rに引っかかる正しいメールサーバは1送信先毎に遅延がかけらてしまう
→10件送信先ある場合、10×遅延時間だけ時間が掛かってしまう
- 非常にまれなケースで誤検出がある
→アジア地域のメールサーバなど逆引き設定がされていない場合や、DNS設定が間違っている場合などで、タイムアウトも短くしている場合
以下で、これらの課題を解決するための方法を提案します。
■[pc][spam]taRgrey(S25R+tarpitting+greylisting)というスパム対策のアイデア

Starpitよりもさらに誤検出の少ないスパム検出方法についてのアイデアです。(まだ実装はありません)
簡単に言うと、
S25R + tarpitting + greylisting
というもので、つまりStarpitで排除されるメールをさらにgreylistingで救済するという手法です。
S25Rに引っかかる条件で、かつ遅延を抜けられず、かつ再送もしてこなかったらスパムとして排除されます。
tarpitting では相手が切断してしまうので、その後再送してくるかを検出できれば上記の構成にすることが出来ます。
切断されたのか、それとも通ったのかを確認するには、ほんとうならMTA側になんらかの実装、つまりパッチが必要になりそうですが、Postfixでは smtpd_recipient_restrictions でDBに登録して遅延を掛け、smtpd_data_restrictions でDBと照らし合わせて、抜けてこれてないものは遅延の間に先方が切った、つまりtarpittingに引っかかったもの、と考えることが出来ると思います。
ただ、単にgreylistingを掛けると、postfixやqmailなど普通のMTAをスパム送信に使っている場合、greylistingで救済されて全部抜けてきてしまいます。
むろん、誤検出を減らす目的だけの場合はそれでも良いのですが、なるべくならあまり検出率も下げずに救済策を取りたいと考えました。
tarpittingやgreylistingで誤検出を検知することを考えるとき、スパマーは頻繁にIPを変えながらスパムを送信してくるので、長期に同一IPからスパムを送ってくることがほとんどありえないため、同一のIPから長期にわたってメールが出されているが受け取れていない場合、誤検出の可能性が高い、と考えられます。
そこで、greylistingで再送してきても、最初に受け取った時から2日くらい経ってからも、同IPで再送してきているか、を確認してはどうか、と考えました。
これだと、greylistingのパラメータの設定のみでこのような動きをすることが出来ます。
正しいメールサーバを2日とか待たせてしまう可能性がありますが、Starpitで誤検出されるメールサーバはほんとうにごくまれで、そういうレアケースを救済するための処置です。
またgreylistingのように、ホワイトリストやブラックリストをDB化して持つことで、S25Rに引っかかる場合、正しいメールサーバなのに常に遅延を掛けられてしまう問題や、すでにスパマーとわかっているIPからの接続も毎回遅延させることで起動smtpdが増加する問題も、回避することが出来ます。
PostgreyかPolicy Daemonをベースに修正して、これらの機能を持ったポリシーサービスデーモンを作る予定です。
その前に、ログからスパマーがどれだけの期間、同一IPでメールを出してるのか、統計出す必要がありそうです。
(追記)
postgreyをベースにこのポリシーサーバを書きました。
taRgrey - S25R + tarpitting + greylisting
モーグルとカバとパウダーの日記 - taRgrey - S25R + tarpitting + greylisting
また、同一IPからスパムが出される期間については、下記エントリーを参照下さい。
モーグルとカバとパウダーの日記 - 同一IPからスパムが出されている期間
モーグルとカバとパウダーの日記 - 一見さんは1日以上同一IPを使ってるか確認するスパム対策手法
■[pc][spam]RgreyとStarpitの比較

Rgrey(S25R+greylisting)とStarpit(S25R+tarpitting)は兄弟のようなもので、非常に似ています。
スパム対策として採用するとき、どちらを選択したらよいか指標になるよう、比較をまとめました。
ただ、あくまで自分の主観的なもので、実際に数字的な根拠のないものもあります。
| Rgrey(greylisting) | Starpit(tarpitting) | |
| メール受信数 | 非常に大量のメール受信でも利用実績あり | smtpdの増加が問題になる可能性 |
| 誤検出 | greylistingのホワイトリストの整備がより進んでいる | より誤検出自体が少ない印象 |
| 遅延 | S25Rに掛かった場合のみ数10分程度の遅延がある | ほぼない |
| 導入のし易さ | greylistingサーバを導入する必要がある | Postfix-2.3以降なら設定だけで簡単 |
| 通信事業者での導入 | 導入可能か不明 | 条件により可能 |
(追記)
tarpittingの有利な点として、強さをパラメータで変更できる、という部分もあります。
greylistingは、再送要求を掛けるか否かの1/0ですが、tarpittingは10秒だけとか35秒だけとか、その長さによって強度を変えられます。
この柔軟性の違いは結構大きいかも。
■[pc]Debian(sarge)でPostfix-2.3+dovecotでSMTP Authの設定はまりどころ

Postfix-2.3ではdovecotの認証を利用して、SMTP Authを利用することが出来るようになりました。
そこで、Debian(sarge)でPostfix-2.3+dovecotという構成でSMTP Authを設定してみたのですが、結構はまりどころがあったのでまとめます。
SMTP Authの設定自体は実はほとんど問題はなく、簡単に出来ます。
Postfix付属のドキュメント(Postfix SASL Howto)に沿って設定するだけです。
さて、なにがはまりどころかというと、Debian(sarge)のdovecotはバージョンが0.99.14だということです。
Postfixの説明で書かれている設定方法は、1.0以降でなければ使えない書式と設定のようです。
しかし、Debian(sarge)のdovecot設定ファイル、/etc/dovecot/dovecot.confには、
## Dovecot 1.0 configuration file
と書かれているため、気がつくのが遅れました…
[Dovecot] Error in config を参照。
ということで、dovecotも1.0RCをtarボールを持ってきてインストールしたところ、使えるようになりました。
あと、passdb pamが使えなかったため、shadowを使うようにしました。
一応、うちでやった設定内容を紹介しておきます。
postfixのmake時にsaslを使うように指定しデフォルトでdovecotを指定。
> make -f Makefile.init makefiles > make makefiles CCARGS='-DUSE_SASL_AUTH -DDEF_SASL_SERVER=\"dovecot\"' > make
submission inet n - - - - smtpd
-o smtpd_etrn_restrictions=reject
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
...
/usr/local/etc/dovecot.conf
auth default {
mechanisms = plain login
passdb shadow {
}
userdb passwd {
}
user = root
socket listen {
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
}
さらに細かな設定については
が参考になります。
他のツールを入れずにPostfix+dovecotだけでSMTP Auth可能で、Maildirでもmboxでも使えるため、今後はこの構成がメジャーになっていくのではないかと思いました。
■[life]クレジットカードで節約

id:sv01kaiさんから、ガソリン代の割引のあるクレジットカード使ってなんでも支払うようにすると節約になるよ、というのを昔聞いて、いつか導入しようと思ってたんだけども、やっとこ一念発起していろいろと調べて、そういうスタイルにすることにしました。
クレジットカードでの割引だとか、マイルだとか調べてみると、マイルとかポイントとかはあまり還元率が高くなくて、ガソリンや携帯の割引になるのが一番率が良いようでした。
そこで、カード年会費とか含めた年間の割引金額をシミュレートして、どこが一番お得になるのかを調べてみました。
うちの場合、ガソリン代が月1万5千円程度、携帯代が8千円程度なのですが、さくらドライバーズプラスカードとNTTグループカードが、カード利用金額に応じた割引が非常に大きく、これらを組み合わせたものが一番良さそうでした。
で、Excel使っていろんなカードや組み合わせと、月にカードで利用する金額とをグラフ化してみたんですが、トータルで見て、素直にさくらドライバーズプラスカードだけを使うのが一番良さそうでした。
さくらドライバーズプラスカードの場合だと、どのガソリンスタンドでも使えて、高速の料金にも割引が適用される点も利点です。ETC使った場合も割引対象になるのかな?
とりあえずカードの申込みはしてみたので、実際に計算通りに行くかどうか、試してみます。
- postfixでのSPAMメール対策(途中経過)
- http://d.hatena.ne.jp/stealthinu/20060719
- http://d.hatena.ne.jp/stealthinu/20060706
- S25R + tarpitting + greylisting = taRgrey
- http://d.hatena.ne.jp/stealthinu/20060928
- http://d.hatena.ne.jp/stealthinu/20061016
- http://d.hatena.ne.jp/stealthinu/20061024
- http://d.hatena.ne.jp/stealthinu/20061206
- http://d.hatena.ne.jp/stealthinu/20061206

カード利用実績での割り引きも限度があるし・・・
電気料金、コンビニ、スーパー等もカードでこつこつ払うと結構な金額になりますよ。
自動車保険も代理店によってはカード決済に応じてくれます。
そんなこんなで月平均10万以上使ってるような・・・
あと私のまわりで実際にあったのが海外旅行先で緊急手術というのがありました。海外旅行の保険が自動付帯されるカードを複数枚持ってたから手術&入院費用はまかなえたそうです。ライフスタイルによってどれ選ぶかが難しいですね。
あ、そうそう。同じような感じですね。
検索してみたら、もろそのへん比較してるページがありました。
ガソリン代節約カード 三つ巴対決
http://credit.narikin-road.net/credit019.html
さくらのってETC使った場合もキャッシュバックされるのかな??
うーん、JCBだとどのスタンドでも入れれるのが良いと思ったんですが、ドライバーズエッジのほうが微妙に細かく割り引き率があっていいのかも?
>>teleskierさん
電気料金や電話代やら、あとスーパーでの買い物も全部カードにしようと思ってますだ。
海外旅行の保険かあ… めったに海外に行かないからなあ、むう。
セブンイレブンはスヌーピー絵皿とかのために必須なんです :)
スヌーピー絵皿系は、いまんところコンプリしてますだ。足りないときは月末ずっとお昼コンビニ弁当とかまでして。