sendmail 8.13.1 + dk-milter 0.2.3 インストール [Linux]
sendmail 8.13.1 + dk-milter 0.2.3
dk-milter に関しては http://www.sendmail.net/dk-milter/ とかに
いろいろ情報が載ってますが、いかんせん英語だし、まだまだ量が少ないです。
というわけで dk-milter とかインストールする人へのお役に立てれば幸いです。
ちなみに sendmail のインストール設定は検索すれば腐るほどでてくるので省きます。
dk-milter に関しては検索しても出てこないのでここに書いちゃいます。
書きなぐりですけど、勘弁してください。
それぞれの source は
sendmail http://www.sendmail.org/8.13.1.html
dk-milter http://sourceforge.net/projects/dk-milter/
から取って来てくださいね。注意することは、sendmail は 8.13.1 か、それ以上の version にすることです。
dk-milter はなるべく最新のものを。今の最新は 0.2.3 です。
あと、openssl 入れといてください。
ソースを get してきたら展開しましょう。
# gzip -dc dk-milter-0.2.3.tar.gz | tar xvf -
compile する為の site.config.m4 を書きます。
# cd dk-milter-0.2.3/devtools/Site
# cp -p site.config.m4.sample site.config.m4
# vi site.config.m4
自分のところの sendmail は TLS やってるので
APPENDDEF(`confENVDEF',`-DSTARTTLS')
と書いておきました。
あと、
APPENDDEF(`confENVDEF', `-UNIS')
-UNIS は NIS を使わない設定です。
また、ssl の library が必要です。 /usr/local/ssl とかに入ってる人は
APPENDDEF(`confLIBDIRS', `-L/usr/local/ssl/lib -R/usr/local/ssl/lib')
APPENDDEF(`confINCDIRS', `-I/usr/local/ssl/include')
APPENDDEF(`confLIBS', `-lssl -lcrypto')
としてください。
では compile しましょう。source を展開したところに Build というものがあるはずです。
こいつを sh で起動させましょう。
# sh Build
そうすると obj.ARCH というディレクトリが作成されます。
自分は gentoo Linux なので obj.Linux.2.6.9-gentoo-r1.i686 になりました。
この中に compile したものが入ってます。sendmail を compile した時と同じ感じですね。
普通ならこの後 install とかするんですけど、今回は実験なので install しないで
起動させてみます。
起動させる前に・・・sendmail.cf で milter として dk-milter を通す設定しないといけないです。
milter を UNIX-domain Socket 経由にするか inet 経由にするか決めないといけないんですけど、
今回は inet にしてみます。port は適当でいいんですけど、とりあえず 9010 とかにしておきます。
sendmail.mc に
INPUT_MAIL_FILTER(`dk-filter', `S=inet:9010@localhost')
を追加してcf 作り直してください。
さて、肝心の key なんですけど、ツールが用意されてます。
gentxt.csh です。引数に host 名をいれて起動させます。smtp という host ですと、
# cd /usr/local/src/dk-milter-0.2.3/dk-filter/
# ./gentxt.csh smtp
とします。
gentxt.csh の中身は単なる openssl 叩いてるだけです。
key の byte 数を変えたい時とかは改造しちゃいましょう。
前 openssl genrsa -out ${selector}.private 512 >& /dev/null
後 openssl genrsa -out ${selector}.private 1024 >& /dev/null
改造したら再度 gentxt.csh を叩きます。
# gentxt.csh smtp
smtp._domainkey IN TXT "g=; k=rsa; t=y; p=.....key......"
DNS の TXT レコードとして登録するべきものがそのまま表示されます。
DNSに smtp._domainkey という host を登録して、TXT レコードのところに上記のやつをそのまま書きます。
smtp._domainkey という名前で TXT レコードを引けるようになればOKです。
さらに、 smtp.private と smtp.public っていうファイルが出来ているはずです。
private を pem として適当なディレクトリに持っていきましょう。
どこでもいいんですけど、/var/db/domainkeys の下が一般的っぽいです。
# cp -p ./smtp.private /var/db/domainkeys/smtp.key.pem
/etc/mail/ilist というのを作成します。
この list に書かれている host を認証するらしいです。
最初、この ilist が無かったのでいつまでたっても認証してくれなかった・・・
# cd /etc/mail
# vi ilist
ilist の中身は host 名とか IP アドレスとか domain とか書いておきましょう。
smtp
127.0.0.1
smtp.makocchi.net
makocchi.net
こんなかんじでしょうかね。
では dk-milter を起動させましょう。
自分の場合は /usr/local/src に展開したので
/usr/local/src/dk-milter-0.2.3/obj.Linux.2.6.9-gentoo-r1.i686/dk-filter/dk-filter -D
-p inet:9010@localhost -d makocchi.net -s /var/db/domainkeys/smtp.key.pem
-l -S smtp -P /var/run/dk-filter.pid -A -h -i /etc/mail/ilist -c nofws
長いですけど、、、これで動くはずです。1行で書いてください。
各オプションの意味は README とか見といてください。
・・・と思ったら書いてない!(´ー`;)
-a peerlist file containing list of hosts to ignore
-A auto-restart
-c canon canonicalization to use when signing
-C config configuration info (see man page)
-d domlist domains to sign
-D also sign subdomains
-f don't fork-and-exit
-h append identifying header
-H sign with explicit header lists
-i ilist file containing list of internal (signing) hosts
-l log activity to system log
-m mtalist MTA daemon ports to sign
-P pidfile file to which to write pid
-s keyfile location of secret key file
-S selector selector to use when signing
-u userid change to specified userid
-V print version number and terminate
こんなかんじです。
# netstat -na | grep 9010
できちんと起動されたか確認してくださいね。
あと、sendmail も忘れず再起動しといてください。
メールを出して、DomainKey-Signature:っていうヘッダがつけばOKです。
テストがうまくいったら dk-milter を inittab で起動させてあげれば、
いちいち起動させなくて済む予感がします。
分からない時は sendmail.cf の中の LogLevel を 99 とかにして再起動させて、
ログを見ながらメールを出してみると解決策が見えるかもしれませんよ。
いま、sendmail.8.12.10 入れまくっています。
8.13.1ってまた12台と違いますか?
by masakiman (2004-12-03 13:00)
基本的に変わらないと思いますよ。
12 に比べて 13 はいろいろ高機能になってるはずですけど。
dk-milter や sid-milter を使わないのであれば 12 で充分です。
by まこっち (2004-12-03 13:05)