PostfixでSMTP Auth

最終更新日時:2012-03-05 00:00:00
Postfix

SMTP Authとは


SMTP Auth とは、SMTP 接続を行う際に認証を行い、認証された SMTP 通信についてはリレーを許可するしかけです。
これにより、不正中継を阻止することが可能となり、同じ目的で使用するものとして POP before SMTP があります。
Postfix では Cyrus SASL を使用することにより、SMTP Auth 対応させることが可能です。
SMTP Auth はメーラーが対応している必要はありますが、POP before SMTP に比べてサーバ側では導入が容易な上、Cyrus SASL の持っている暗号化機能により、SMTP 通信を暗号化することもできます。

インストール


まず、Cyrus SASL をインストールしておきます。

※注意
sasl,sasl2の双方のバージョンが混在している環境では、sasl.hが正常に検出できないことがあります。
こういった場合には明示的にsasl.hを指定する必要があります。

Postfix のインストールについては、通常のインストールと異なるのは以下のように make 時にオプションを指定する箇所だけです。

 % make makefiles CCARGS="-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/include/sasl" AUXLIBS="-L/usr/local/lib -lsasl2" 


-ldb が見つけられない場合には-L/usr/local/BerkeleyDB/lib 等と追加指定します。
その他の箇所は通常と変わらないのでPostfixのインストールを参照してください。

設定


Postfix の smtpd は /usr/local/lib/sasl2/smtpd.conf にて指定された方式によって SMTP 認証を行いますので、smtpd.conf ファイルを作成します。
下記の例は SASL用 パスワードファイル (sasldb2) を利用する場合の設定です。
※ sasldb2 ファイルのパーミッションにも注意

 pwcheck_method:  auxprop
 auxprop_plugin:  sasldb
 mech_list:       cram-md5 digest-md5
 #mech_list:       cram-md5 digest-md5 plain login


通常の平文や login 認証にも対応したい場合には、plain login を追加します。
また、SASL 認証デーモンや UNIX の通常のパスワードファイルを使用することも可能ですが、私自身使っていないので割愛します。

次に、main.cf に以下の設定を行うことによって、Postfix に SMTP Auth を有効とさせます。

 smtpd_sasl_auth_enable = yes
 smtpd_recipient_restrictions =
        permit_mynetworks
        permit_sasl_authenticated          <-- これを追加。認証済みのアクセスを許可
        reject_unauth_destination


設定完了後、設定を反映させるために再読み込みさせます。

お問い合わせは 掲示板 にて。