そろそろLDAPにしてみないか?

第15回 FDS+Postfixでメールサーバ管理

この記事を読むのに必要な時間:およそ 5 分

giengerldapプラグインの活用

前述のように,FDSでldapdb方式が使用できないのはSASLプロキシ認証がサポートされていないためです。しかし,giengerldapというcyrus-sasl用プラグインを使えば,SASLプロキシ認証を使用せずに,なおかつSASL設定が行われていないLDAPサーバで認証を行うことができるようになります。

このプラグインはPascal Gienger氏によって作成,公開されており,saslauthdと違い,CRAM-MD5やDIGEST-MD5認証もサポートしています。是非本家ソースにも同じような仕組みを取り入れてほしいものです。

プラグインビルドのためには,cyrus-saslのソースファイルが必要になりますので,FTPサイトなどからCentOS用のcyrus-saslのSRPMを入手して,次のように下準備を行っておきます。

図1 cyrus-saslをビルドしておく

# rpm -i cyrus-sasl-2.1.22-4.src.rpm
# cd /usr/src/redhat/SPECS
# rpmbuild -bc cyrus-sasl.spec

以上により,/usr/src/redhat/BUILD/cyrus-sasl-2.1.22/build-shared以下に各種ライブラリなどが作成されますので,プラグインインストールの準備を行います。

図2 giengerldapプラグインの展開

% tar zxfv giengerldap_auxprop-1.2.1.tar.gz
% cd giengerldap-1.2.1

ソースファイルを展開したら,その中にあるcompileスクリプトを修正します。

リスト9 compileスクリプトの修正

CYRUSSASLPATH=/var/home/pascal/src/cyrus-sasl-2.1.22
       
CYRUSSASLPATH=/usr/src/redhat/BUILD/cyrus-sasl-2.1.22/build-shared 

次にcompileスクリプトを実行しますが,ヘッダファイルのパスが微妙に異なるためエラーになってしまいますので,CFLAGSを修正して正しいパスを指定します。CentOS以外で作業を行う場合には,エラー内容に従い,適切にパスの変更などを行ってください。

図3 giengerldapプラグインのコンパイルとインストール

% ./compile
(sasl.hなどのヘッダファイルが見つからないというエラーが表示されるので,手動でmake)
% make CFLAGS+="-I/usr/src/redhat/BUILD/cyrus-sasl-2.1.22/include -I/usr/src/redhat/BUILD/cyrus-sasl-2.1.22/plugins" 
# make install

以上の操作で,/usr/lib/sasl2以下にlibgiengerldap.*といったファイルが作成されます。必要であれば事前にRPMパッケージなどを作成してインストールするようにしましょう。

PostfixのSMTP Auth設定

まずは送信専用となる587/tcpを有効にします。そのために,master.cfのコメント行を外して次のようにsubmissionポートを有効にします。SSLは今回使用しないため,smtpd_enforce_tlsオプションは指定していませんが,SMTP Authを有効にするため,smtpd_sasl_auth_enable=yesを指定します。また,smtpd_client_restrictionsパラメータを設定することで,メールを送信する場合には宛先が内部であろうと外部であろうと,必ず認証を要求するようにしています。

リスト10 /etc/postfix/master.cfの一部

submission inet n       -       n       -       -       smtpd
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject 

main.cfでは25/tcp,587/tcpにおけるアクセス制限を設定します。これ以外にも様々な設定が考えられるでしょうが,今回は簡単に済ませました。

リスト11 /etc/postfix/main.cfに設定する内容

# メールサーバが所属するネットワーク
mynetworks = 127.0.0.0/8, 10.0.100.0/24
smtpd_recipient_restrictions = 
  permit_mynetworks 
  permit_sasl_authenticated
  reject 

著者プロフィール

中満英生(なかみつひでお)

大学時代に出会ったSolarisがきっかけでUNIXの世界へ。その後ホスティングプロバイダ,データセンターで実務経験を積む傍ら,雑誌記事の執筆や技術セミナーの講師を務める。サーバ設定の他,セキュリティに関する著作や技術者エッセイも執筆経験あり。