|
Postfix Pop-Before-SMTP |
2010年10月5日(火) |
メール送信の認証にPop-Before-SMTP(PBS)方式も設定してみます。今回はDracを使います。 でもCentOSにはDracはありません。もちろんpop-before-smtpもありません。RPMForgeにもないようです。 |
でも懐かしのPBSもつい設定してみたくなり、時代に反するとは思いながらもやります。
代表的なソフトとしては、pop-before-smtpとDracがありますが、今回はDracで行ってみます。
昔のpop-before-smtpについてはこちら。→ pop-before-smtp/Vine4
Dracのインストール
Drac本家(http://mail.cc.umanitoba.ca/drac/)からソースをもらってきてコンパイルしインストールしてもいいけど、できるならばrpmでいれたいところ。
で、以下の方法。あまり推奨はしないけど。
VineLinuxにはDracのrpmがありますのでこれを盗んで...じゃなかった、密かに頂いてきます。
$ cd ~/rpm/SRPMS/
$ wget http://ftp.riken.jp/Linux/vine/Vine-5.0/SRPMS/SRPMS.main/dracd-1.12-2vl5.src.rpm
$ rpm -ivh dracd-1.12-2vl5.src.rpm
ヘッダ V3 DSA signatureどうのこうのと警告が出ますが無視。(別のディストリからもってきたためだろうと。)
もしpop-before-smtpの有効時間(30分)などを変更したければ、dracとでも名前をつけてフォルダ作成し、drac.tar.Zをこの中に展開、rpc.dracd.cを編集して古いdrac.tar.Zを捨ててdrac.tar.Zを再作成しておきます。
私は有効時間を5分に変更。
$ cd ~/rpm/SPECS/
$ rpmbuild -ba dracd.spec
エラー: ビルド依存性の失敗:
db4-devel >= 4.6.21 は dracd-1.12-2.i386 に必要とされています
概ねVineは意外と新しいバージョンを使っています。CentOSのdb4は、4.3.29でした。
しかしどう考えてもソースのdrac.tar.Zは2003年のものだし、dbのバージョンアップに伴う修正の形跡もないので、単にビルド時のdbのバージョンを記載しただけだろうと解釈。
dracd.specのdb4バージョン指定は消去。
BuildPrereq: db4-devel
Requires: db4
再度rpmbuildすると無事通って、dracdとdracd-debuginfoの2つのrpmができます。dracdのみインストール。
$ su
# rpm -ivh ~/rpm/RPMS/i386/dracd-1.12-2.i386.rpm
無事インストールされました。
Dracの設定
Dracはもともとsendmail用なのか、/etc/mailにファイルが作られます。(データベースファイルdracd.dbもここにつくられます。)
/etc/mail/dracd.allowを確認。
255.255.255.255 127.0.0.1
が記載されていればOK。
テストをしてみます。
$ testdrac 127.0.0.1 1.2.3.4 …1.2.3.4は適当なアドレス
$ db_dump -p /etc/mail/dracd.db
VERSION=3
format=print
type=btree …ここのtype(btree)をあとでpostfix設定に使用
db_pagesize=512
HEADER=END
1.2.3.4 …ここに打ち込んだ適当なアドレスが出ればOK
1285967787
DATA=END
ソケットの作成
Dracがすでにインストールされていることと、Dovecotのソースが必要です。
dovecotのsrc.rpmを取得、ソースをインストールし展開とパッチ適用。
$ wget http://ftp.riken.jp/Linux/centos/5/os/SRPMS/dovecot-1.0.7-7.el5.src.rpm
$ mv ~/dovecot-1.0.7-7.el5.src.rpm ~/rpm/SRPMS/
$ cd ~/rpm/SRPMS/
$ rpm -ivh ./dovecot-1.0.7-7.el5.src.rpm
$ cd ~/rpm/SPECS/
$rpmbuild -bp dovecot.spec
~/rpm/BUILD/にdovecot-1.0.7ができています。
dovecotソースの準備完了。
今度はhttp://www.dovecot.org/patches/より1.0/drac.cをダウンロード。(現行dovecotバージョンは1.0.7なので。)
ダウンロードした drac.c を ~/rpm/BUILD/に移動。
$ wget http://www.dovecot.org/patches/1.0/drac.c
$ mv ~/drac.c ~/rpm/BUILD/
dovecotのソースのありかを教えてコンパイル。詳細はdrac.cに書いてあります。
$ cd ~/rpm/BUILD/
$ export dovecot=~/rpm/BUILD/dovecot-1.0.7
$ gcc -Wall -W -shared -fPIC -DHAVE_CONFIG_H -I$dovecot -I$dovecot/src/lib drac.c -o drac.so -ldrac
~/rpm/BUILD/にソケットファイルdrac.soができていますので、
/usr/lib/dovecot/pop3/ にコピー。
$ su
# cp drac.so /usr/lib/dovecot/pop3/
Dovecotの設定
まずそのままだとDovecotはipv6アドレスを使いますがDracはipv6は理解しないようです。Dovecotにipv4を強制します。(ipv6を使うという人はパッチ当てか何か必要。)
listenのところを
listen = * …ipv4のみの指定
さらにprotocol pop3 { }の中に以下を記載。
mail_plugins = drac
mail_plugin_dir = /usr/lib/dovecot/pop3
注意:
protocol imap { }にこれを記載するとなぜか起動せず、
EDRAC: net_ip2addr() failed: Operation not permitted
というエラーが出ます。
Postfixの設定
smtpd_recipient_restrictions =
permit_mynetworks,
check_recipient_access hash:/etc/postfix/access,
check_client_access btree:/etc/mail/dracd,
permit_sasl_authenticated,
......
これは permit_sasl_authenticatedの前に入れる必要があります。saslを先にするとPBSの前にパスワードを要求されてしまうからです。
# service dracd start
# chkconfig dracd on
さらにdovecot, postfixを再起動
# service dovecot restart
# service postfix restart
実際にメールを送信してみて確認し、完了。