Create  Edit  Diff  Mac OS X Serverで作る 小さな計算機室  Index  Search  Changes  RSS  Login

小さな計算機室 - GreylistingForPostfix Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

!! 迷惑メールは迷惑だ

OS X Serverには SpamAssassin が最初からインストールされており、学習データも
自動ダウンロードできるようだったので、迷惑メール対策に時間を取られることは
ないだろう、と思っていたけれど、実際に運用をはじめてみると、
「メールが届かなくなった」というクレームが多く寄せられた。
仕方がないので、「スコア」を上げたら、今度は大量の迷惑メールが届くようになってしまった。

その他にも、メールサーバーの変更に伴って、「メールがどこか変だ」という声が聞かれるようになって、「別に放っておけばいいさ」という思いもある反面で、ちょっとした意地みたいなものもあって、結局、「本来ならばやらなくてもよかった」仕事を抱えこんでしまう結果になる。

メールやネットワークは、ちゃんと動いて当り前で、仕事やその他の何もかも、それに大きく依存しているくせに、それがどのような仕掛けになっていて、それを維持するのにどれくらいの手間が必要なのか、については、誰もほとんど気にしない。ネットがまだもの珍しかったころは、一部の(優秀な)物好き達が「ボランタリー」に管理をしていたし、そんな彼らに対して周囲はある種の敬意を払っていたけれど、そんなハッピーな時期は長くは続かない。「本来」の仕事をこなしながら、ネットの管理も趣味的に行っていけるほど、大学のゆとりは無くなってしまったし。

でもまあ、この歳になっても、計算機いじりはまだ嫌いではないし、「Mac OS X Serverの標準機能のみで楽ちんな手抜き管理」を決め込もうという当初のポリシーは捨てて、あちこちのサイトでも紹介されている postgrey をマニュアルインストールしてみることにした。

!! Postgreyを入れる

1. NetInfoマネージャーを開いて、postgreyというユーザーとグループを作成。uid, gidともに125にした。

2 http://postgrey.schweikert.ch/pub/ から postgrey 1.27 をダウンロードして展開。whitelistデータを /etc/postfix の中にコピー。postgrey (perlスクリプト)は /usr/local/sbin の中に入れた。さらに、ディレクトリ /var/spool/postfix/postgreyを作成し、オーナーとグループをpostgreyにしておく

3 CPANを使って、perl に IO::Multiplex を追加インストール。Net::ServerとBerkeieyDBはOSに最初から入っているので、入れる必要なし(実はこの件でトラブルに遭遇→[[PostfixConfig]])。

4 http://lingon.sourceforge.net/ を使って、User Daemonとして
/usr/local/sbin/postgrey --inet=10023 -d --user=postgrey --group=postgrey
を起動するように設定。plistを手で書かなくてもよいのでとても便利。Programの欄に"/usr/local/sbin/postgrey"を書いてはダメで、全てを引数の欄に記述する。

そうすると、/Library/LaunchDaemonsの中にplistファイルが追加されて、その中身は以下のよう:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>cmpt.postgrey</string>
        <key>ProgramArguments</key>
        <array>
                <string>/usr/local/sbin/postgrey</string>
                <string>--inet=10023</string>
                <string>-d</string>
                <string>--user=postgrey</string>
                <string>--group=postgrey</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>ServiceDescription</key>
        <string>Greylisging daemon for Postfix</string>
</dict>
</plist>

5. /etc/postfix/main.cf に
smtpd_recipient_restrictions = permit_mynetworks,reject_unauth_destination,check_policy_service inet:127.0.0.1:10023
を追加。
sudo postfix reload


MacPortsに入っている perl と db を使おうと思ったが、そちらではうまく動かなかった。