|
14-5.pop-before-smtp |
2007年6月1日 |
メール送信サーバー(SMTP)認証用にPop Before SMTP(PBS)も使えるようにします。 |
dracというプログラムもありこちらが一般的ですが、courier-IMAPとはそのままではうまくつながりません。courier-IMAPは意識的にdracの使用を拒否しているようなので、これを使うにはソースの改造が必要になりバージョンアップの度に面倒なことをしなくてはならないのでdracはやめておきます。
courier-IMAPの改造をしなくて済むpop-before-smtpというプログラムを使います。
インストールと設定
今回は pop-before-smtp-1-41.tar.gz
rpm/SOURCES/に上記.tar.gzを置いて解凍
$tar zxvf pop-before-smtp-1.41.tar.gz
展開されたフォルダからpop-before-smtp.specファイルをrpm/SPECS/に移動
rpm/SPECS/フォルダに移動
ビルドする。
$rpmbuild -ba pop-before-smtp.spec
ここでrpmインストールすればOKのはずだったが、perl moduleがうまく認識されず依存関係欠如でrpmインストールはできず。
perl(Date::Format), perl(Date::Parse), perl(Net::Netmask)などがないと言ってエラーになる。
perl(Date::...)はperl-TimeDateのrpmインストールで解決。
しかしperl(Net::Netmask)は対応しそうなperlのrpmがなく、perl -MCPAN で導入したにもかかわらずうまく認識されなかった。
しかたないので強引にインストール。
たぶんインストール時にperl moduleが認識されないだけだろうと。
#rpm -ivh --nodeps pop-before-smtp-1.41-1.noarch.rpm
ためしに起動、停止してみる。
#service pop-before-smtp start
Starting pop-before-smtp: done
#service pop-before-smtp stop
Stopping pop-before-smtp: done
....OKのようだ。
/etc/pop-before-smtp-conf.pl を編集
$logto = '/var/log/pop-before-smtp'; ...32行目。#を外す。ログファイルの指定。
$dbfile = '/etc/postfix/pop-before-smtp'; ...35行目。#を外す。
$grace = 10*60; ... 41行目。pbsの猶予時間の設定。ディフォルト30分を10分に。
$file_tail{'name'} = '/var/log/maillog'; ...44行目。#を外す。
使っているメールクライアントソフト(今回Courier-pop3 and Courier-IMAP)を探して$par = ... と $out_pat = ...の#を外す。(181-184行目)
以上でいちおうpop-before-smtpは動いたのですが、rpmで--nodepsを使って強引にインストールしたため、synapticが起動のたびにパッケージが破損していると警告をだしてきます。
うっとうしいので、/etc/pop-before-smtp-conf.plをいったん退避。
rpmで入れたパッケージをアンインストール後、今度は手動で再度インストールしました。(contrib/README_QUICKSTART参照)
#cd rpm/BUILD/pop-before-smtp-1.4.2
#cp pop-before-smtp.init /etc/rc.d/init.d/pop-before-smtp
#cp pop-before-smtp /usr/sbin/
あと退避した/etc/pop-before-smtp-conf.plを戻します。
これでOK!
起動設定と動作テスト
#service pop-before-smtp start
Starting pop-before-smtp: done でOK
起動設定
#chkconfig pop-before-smtp on
#pop-before-smtp --config=/etc/pop-before-smtp-conf.pl --debug --nowrite --reprocess をやると現在あるメールログから結果を出力してくる。特にエラーメッセージはないのでOKらしい。
本当はこれはインストールの前に展開したディレクトリでpop-before-smtp-conf.plを書き換えてから
#./pop-before-smtp --config=./pop-before-smtp-conf.pl --debug --nowrite --reprocess でやってテストするのが正しいらしい。
postfixの設定追加
smtpd_recipient_restrictions =
permit_mynetworks,
check_client_access hash:/etc/postfix/pop-before-smtp,
permit_sasl_authenticated,
check_recipient_access hash:/etc/postfix/access,
reject_unknown_recipient_domain,
reject_unauth_pipelining,
reject_unauth_destination,
permit
check_client_access hash:/etc/postfix/pop-before-smtpはpermit_sasl_authenticatedの前に入れます。
#service postfix reload で設定を反映
確認
結果、OKでーす。