最新のPostfixでは,Milterがサポートされ,DKIMとか簡単に設定できそうだ,と思い立ったのが,始まりなんだが,よくわからなくなってきた。実装例や運用例が異なっていたりするのは,まだ,標準的な運用が成立していないせいだからだろう。RedHatで標準のパッケージに含められるようになれば,設定ツールも揃ってくるだろうけど,まだ,発展途上なんだろう。
仕方なく,自分で試してみた。(参考サイト)
- CentOS5の添付のPostfixのバージョンが,2.2.3で,Milterをサポートしていないので,2.4.4のPostfixを作る。
Milterを使わない方法もあるが,将来は,Milterが標準になるだろうという期待から,今から覚えておいてみたかったから。設定は,2.2のものをそのまま使えたので,別に苦労はしなかった。
postfix-2.4.6-11.i386.rpm , postfix-debuginfo-2.4.6-11.i386.rpm , postfix-pflogsumm-2.4.6-11.i386.rpm , postfix-2.4.6-11.src.rpm - まずは,DKIMをインストールをしようと,src.rpmを探す。(http://blackbean.org/review/dkim-milter-2.4.0-1.fc8.src.rpm
)。最新のDKIMは,2.4.2と知り,SPECファイルをいじる。
参考サイトの見ながら,直しているうちに,ソケットはUNIXドメインの方が性能的に良いし,セキュリティ上も安心だと思い始め,このSPECファイルに不満を持ち始める。で,直す。
dkim-milter-2.4.2-2.i386.rpm , dkim-milter-debuginfo-2.4.2-2.i386.rpm , dkim-milter-2.4.2-2.src.rpm - DKIMだけで良いと思っていたが,ついでにDomainkeyのMilterも試したくなる。(dk-milter-0.6.0-1.src.rpm)
ユーザ名が気に入らない,UNIXドメインが使いたいという気分がわき起こり,ついつい,SPECファイルまでいじり始める。
dk-milter-0.6.0-2.i386.rpm , dk-milter-debuginfo-0.6.0-2.i386.rpm , dk-milter-0.6.0-2.src.rpm - src.rpmを探している中で,SenderIDのsrc.rpmも見つける。(sid-milter-0.2.14-1.src.rpm)
勢いに任せて,SPECファイルを弄り始める。
sid-milter-0.2.14-2.i386.rpm , sid-milter-debuginfo-0.2.14-2.i386.rpm , sid-milter-0.2.14-2.src.rpm - SPFとDKIMとDomainkeyの設定を行う
- check-auth@verifier.port25.com へのメールpass
sa-test@sendmail.net へのメール pass
http://senderid.espcoalition.org/ へのメール。SPFは,passだが,DomeinKey/DKIMは,NG。設定が悪いのかな。
一部,おかしいところがあるかもしれない。もっと良く調べないといけないな。
設定方法.
- DKIM
# rpm -ivh dkim-milter-2.4.2-2.i386.rpm
# cd /var/db/dkim-milter/
# dkim-genkey -s selecter -d example.jp
# selector.private と selector.txtが作成される
# chmod 400 selector.private
# chown dkim-melter.mail selector.private
### selector.txtの中身を example.jpのDNS設定ファイル(ゾーンファイル)に追加する
# vi /var/db/dkim-milter/keylist
# keylistにセレクタとドメインの設定を記述する
| *:example.jp:selector
### postfixのmain.cfに,Milterの設定を追加する
# vi /etc/postfix/main.cf
| smtpd_milters = unix:/var/run/dkim-milter/dkim-milter.sock
| non_smtpd_milters = unix:/var/run/dkim-milter/dkim-milter.sock
| milter_default_action = accept
### デーモンの起動・再起動
# /etc/init.d/dkim-melter start
# /etc/init.d/postfix restart - Domainkey
# rpm -ivh dk-milter-0.6.0-2.i386.rpm
# cd /var/db/dk-milter/
# /usr/share/doc/dk-milter-0.6.0/gentxt.csh dkselector example.jp > dkselector.txt
# dkselector.private とdkselector.txtが作成される。 dkselector.publicも作成されるが使われない
# chmod 400 dkselector.private
# chown dk-melter.mail dkselector.private
### dkselector.txtの中身を example.jpのDNS設定ファイル(ゾーンファイル)に追加する
# vi /etc/sysconfig/dk-milter
# dk-milterにセレクタとドメインの設定等を追記する。
# 複数のセレクタを登録するためには,パラメータの最後に数字を追加して,PORTを設定していかなければならない。
# 1つだけなら,数字は不要。0から連番である必要,間違えるとややこしいことになる。
| PORT0="local:/var/run/dk-milter/dk-milter0.sock"
| SIGNING_DOMAIN0="exmple.jp"
| SELECTOR_NAME0="dkselector"
| KEYFILE0="/var/db/dk-milter/dkselector.private"
| SIGNER0=yes
| VERIFIER0=yes
### postfixのmain.cfに,Milterの設定を追加する
# vi /etc/postfix/main.cf
| smtpd_milters = unix:/var/run/dk-milter/dk-milter0.sock
| non_smtpd_milters = unix:/var/run/dk-milter/dk-milter0.sock
| milter_default_action = accept << これは,DKIMで追加したので,場合によっては不要
### デーモンの起動・再起動
# /etc/init.d/dk-melter start
# /etc/init.d/postfix restart - SID
## DNS のゾーンファイルに設定
# vi {ゾーンファイル}
# メールサーバ(MX)で指定したサーバからしか,メールを送信しないなら,以下を追記
| example.jp. IN TXT "v=spf1 mx ~all"
### postfixのmain.cfに,Milterの設定を追加する
# vi /etc/postfix/main.cf
| smtpd_milters = unix:/var/run/sid-milter/sid-milter.sock
| ( non_smtpd_miltersに設定すると動作ができなかった。原因は不明だけど,これば不要かな)
| milter_default_action = accept << これは,DKIMで追加したので,場合によっては不要
### デーモンの起動・再起動
# /etc/init.d/sid-melter start
# /etc/init.d/postfix restart - 1~3で追加したpostfix設定イメージ
| smtpd_milters = unix:/var/run/dkim-milter/dkim-milter.sock
| unix:/var/run/dk-milter/dk-milter0.sock
| unix:/var/run/sid-milter/sid-milter.sock
| non_smtpd_milters = unix:/var/run/dkim-milter/dkim-milter.sock
| unix:/var/run/dk-milter/dk-milter.sock
| milter_default_action = accept - 1~3で追加したDNSのゾーンファイルで追加したイメージ (省略形が使用されているので, "selector._domainkey.example.jp."の記述しても問題ない。)
| ; SPF
| example.jp. IN TXT "v=spf1 mx ~all"
| mail.example.jp. IN TXT "v=spf1 mx ~all" ; <- MXで指定したサーバも入れた方が良いかも
| ; DKIM
| selector._domainkey IN TXT "v=DKIM1; g=*; k=rsa; t=s; p=M(略)B"; ----- DKIM selector for example.jp
| ; Domainkey
| dkselector._domainkey IN TXT "g=; k=rsa; t=y; p=M(略)=" ; ----- DomainKey dkselector for example.jp
dk-milter/sid-milterでは,/etc/sysconfig/{dk|dif}-milterをstart/stopで参照するので,コンフィグを弄るときは,停止しておく必要がある。UNIXドメインファイルがゴミとなって残る可能性がある。
また,起動は,milter→postfixで,停止は,postfix→milterの順でないと,困ることがあるかもしれない。
milterが起動エラーを起こす場合,/var/run/{dkim|dk|sid}-milter配下のUNIXドメインファイルを削除して,再起動すると解決できる場合もある。

コメントする