postfixでメールのお勉強をしてみる spamassassinの設定

前回spamassassinの設定を行った際にmaster.cfの設定をしたのですが、書式についてあまり調べずにいれたので少し調べてみました。前回いれた設定は以下の2つでした。

smtp      inet  n       -       n       -       -       smtpd -o content_filter=spamassassin
spamassassin  unix  -   n       n       -       -       pipe
  user=mind argv=/usr/bin/spamc -f -e /usr/sbin/sendmail.postfix -oi -f ${sender} ${recipient}

そもそもmaster.cf自体が何を設定するもので、main.cfとどう違うのかってところが未だぼやっとしているんですが、Listenの仕方の設定とかPostfixで受けた後にどうやって後段に渡して処理するかといったところを柔軟に設定できるようにしてるものかなと思います。
master.cfの各項目の意味はこの辺り(http://www.postfix-jp.info/trans-2.2/jhtml/master.5.html)を見るとわかったような気になれました。細かいところはマニュアルを読めばいいとして大まかに目につくのが1,2列目と最後の列ですね。

  • 1列目はサービス名
  • 2列目はサービス種類(何でListenするか、inet, unix(unixドメインソケット), fifo(named pipeが指定できる)
  • 最後の列はコマンド+オプション

を表しているようです。例えば1つ目の設定だと

tcp/ipでListenしたものをsmtpdに渡すという設定をsmtpという名前にする。

ということですね。ちなみにsmtpdの後ろに-oオプションがついていますが、これはmain.cfの設定を-oの後の設定で上書きして起動するというオプションの様です。ということでこれはmain.cfに設定できるようで、実際http://www.postfix-jp.info/trans-2.3/jhtml/postconf.5.htmlに項目として上げられています。content_filterはメールがキューに入った後でフィルタリングをかけるものを指定するための項目らしいです。ということは2つ目の設定はなくてもヘッダに付加してくれそうなものですが、実際はこれだけではうまくいきませんでした。
一方2つ目の設定をみると頭の名前がspamassassinになっています。ということでcontent_filterで指定している項目はこの2つ目の項目を指しているのだと思われます。

これらの設定をあわせるとinet経由で受け取ったメールをunixドメインソケット(pipe)を使って判定結果をヘッダーに付加するコマンドに渡すといった処理を定義しているんですね。milter形式もこの辺りを利用して設定してあげれば出来そうな感じがしてきました。

なんかまとまりのない駄文だな....。まあまだ饒舌に語れる程理解してないってことで。

spamcコマンドとかのオプションはまた機会があればまとめてみようかと思います。