< サイダー | メイン | 庭田山頂公園、謎のストーンヘンジ >

2006年11月11日

 ■ Cyrus SASL + PAM on Mac OS X

MacPorts で cyrus-sasl2 をインストールしても、 saslauthd で PAM 認証が使えねーっス。 (9/28分参照)

なんでかなーと思ってたのだけど、configure 時に libpam の検出に失敗してるらしい。 つーことで、build する前に saslauthd.h と Makefile を編集して強制的に有効化すると 使えるようになるようだ。

sudo port configure cyrus-sasl2
cd /opt/local/var/db/dports
cd sources/rsync.rsync.darwinports.org_dpupdate_dports
cd security/cyrus-sasl2
cd work/cyrus-sasl-2.1.21/saslauthd
sudo vi saslauthd.h
91行目
/* #undef HAVE_PAM */
↓
#define HAVE_PAM 1
sudo vi Makefile
70行目
LIBS = -lresolv -lresolv
↓
LIBS = -lresolv -lpam

ビルドしなおして、今入ってるヤツをアンインストールしてから再インストール。

sudo port build cyrus-sasl2
sudo port -f uninstall cyrus-sasl2
sudo port install cyrus-sasl2

で、このようにしてインストールした Cyrus SASL で何がやりたいかってーと Postfix からリンクして、PAM 経由で OS ユーザを使って SMTP AUTH を 利用したいわけです。

あと必要な作業は以下のとおり。

1. OS ユーザを作成、/etc/master.passwd にシャドウパスワードが記載された状態にする。

2. /opt/local/lib/sasl2/smtpd.conf を作る。

sudo vi /opt/local/lib/sasl2/smtpd.conf
pwcheck_method: saslauthd
mech_list: plain login

3. /etc/pam.d の下に、設定ファイル smtp を作る。

sudo vi /etc/pam.d/smtp
auth    sufficient      pam_securityserver.so
auth    sufficient      pam_unix.so
auth    required        pam_deny.so
account required        pam_permit.so

4. Postfix に SMTP AUTH 用設定をする。

MacPorts で Postfix をインストールするときに、sasl を使えるように指定しておくこと。 Portfile を編集して Cyrus を使えるようにすることも忘れずに。

参照: 9/19分の日記

sudo vi /opt/local/etc/postfix/main.cf
2行追加
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
リレー制限解除条件に SASL 認証を加える
smtpd_recipient_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated, ←これ
        permit_auth_destination, reject

5. saslauthd を起動する。

sudo /opt/local/sbin/saslauthd -a pam

実際動くことを確認したら、postfix の起動スクリプトに saslauthd を起動するよう追加する。

cd /opt/local/etc/LaunchDaemons/org.macports.postfix
sudo vi postfix.wrapper
Start()
{
    /opt/local/sbin/saslauthd -a pam ←追加
    /opt/local/sbin/postfix start
}
Stop()
{
    /opt/local/sbin/postfix stop
    kill `cat /opt/local/var/state/saslauthd/saslauthd.pid` ←追加
}

以上。

2007/03/13 追記: naoya さんからの情報により誤りを訂正。

投稿者 gema : 2006年11月11日 22:39

トラックバック

このエントリーのトラックバックURL:
https://gema.luna2.org/cgi-bin/mt/mt-tb.cgi/43

コメント

最近は、Mail のお仕事をほとんどやっていません。
ですから、このあたりの設定について疎くなってしまっております。(汗)
いかんですなぁ。
SMTP AUTH は実際に使われている例も多いんでしょうか。
企業では出先からメールを使いたいという要望も多いでしょうから、SMTP AUTH、メールの暗号化といった部分はクライアントの実装状況に合わせて、勉強する必要がありそうですね。
加えてスパム対策をどうサーバサイドで実現するかもソリューションの方法を検討する必要ありと感じております。

投稿者 non sugar : 2006年11月12日 18:54

SMTP AUTH はやっぱり必要ですかねぇ。
Outlook Express 前提だと、平文認証しかできないから
SMTP over SSL も必須になっちゃうけど。

SPAM 対策ということで言えば、レピュテーションが気になりますね。
いわゆる RBL の発展系だけど、白か黒かの判定ではなく、
IP アドレスごとに数値化された「評判」を元に判定するらしいです。
フリーの MTA で実装されてる例を見たこと無いんですが、
コンテンツフィルタアプライアンスでは今大流行の機能のようです。

投稿者 げま : 2006年11月12日 22:14

貴重な情報ありがとうございます。
僕もこの件ではまっていました。

若干修正していただきたいところがあります。

udo vi saslauthd.h
91行目
/* #undef HAS_PAM */

#define HAS_PAM 1

この部分ですが、僕の環境では HAS_PAM ではなく、HAVE_PAM でした。

また、1/opt/local/lib/sasl2/smtpd.conf を作成する必要があります。
次の一行で問題ありませんでした。

pwcheck_method: saslauthd


この件、本家も対応してもらいたいですね。

投稿者 naoya : 2007年03月13日 02:02

ご指摘ありがとうございます。修正しました。

> HAVE_PAM の件
まったくそのとおりでした。
> smtpd.conf の件
手元でも作成していたものの、記載を忘れていました(汗)。

投稿者 げま : 2007年03月13日 17:09

コメントしてください




保存しますか?

(書式を変更するような一部のHTMLタグを使うことができます)