ブログ ランキング
インターネットサーバー設定・運用
HOME  | MYBlog  | MAIL 

SMTP AUTH の導入

SMTP AUTH とは、メール送信時にユーザー認証を行う機構で、不正な第3者中継を締め出すための手段として使用されます。
メール送信にユーザー認証機能を持たせることで中継を許可されていないサイトからのメールはユーザー認証を要求し、 中継を許可されたサイトからのメールは認証を行わずに中継させるといったことが可能になります。
そのため、ローミングサービスや、他の ISP からのメール送信等、信用するIPアドレスが特定できないような場合でも メールクライアントでSMTP AUTH の設定することで、メールサーバーへのアクセスを許可させることができます。

必要なソフト

SMTP AUTH に対応させるには SASL ライブラリ(ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/)が必要になります。
なお、Berkeley DB のインストールは完了済みとします。

 
cyrus-sasl-2.1.20
Berkeley DB 4.2
sendmail-8.13.8

cyrus-sasl のインストール

$ gzip -dc cyrus-sasl-2.1.20.tar.gz | tar xvf -
$ cd cyrus-sasl-2.1.20
$ ./configure --with-openssl=/usr/local/ssl \
     --with-bdb-libdir=/usr/local/BerkeleyDB.4.2/lib \
     --with-bdb-incdir=/usr/local/BerkeleyDB.4.2/include 2>&1 \
     | tee config1.log
$ make
$ su
# make install
# ln -s /usr/local/lib/sasl2 /usr/lib/sasl2
sasl のプラグインは /usr/local/lib/sasl2/ にインストールされるが
ライブラリは /usr/lib/sasl2を探しにいくのでリンクを張る

sendmail の再コンパイル

SASL を組み込むため site.config.m4を変更して、その後 Build を実行します。

$ cd sendmail-8.13.8/devtools/Site
$ vi site.config.m4
$ sh Build

site.config.m4 の内容

APPENDDEF(`confMAPDEF',`-DNEWDB -DSASL=2')
APPENDDEF(`conf_sendmail_LIBS',`-lsasl2')
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib/sasl2 \
          -L/usr/local/BerkeleyDB.4.2/lib')
APPENDDEF(`confINCDIRS', `-I/usr/local/include/sasl \
          -I/usr/local/BerkeleyDB.4.2/include')

sendmail -d0.1 を実行してコンパイルオプションの表示に "SASLv2" が含まれていればOK

$ export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/BerkeleyDB.4.2/lib
sasl のライブラリをパスに追加

$ obj.SunOS.5.8.sun4/sendmail/sendmail -d0.1
Version 8.13.8
 Compiled with: DNSMAP LOG MAP_REGEX MATCHGECOS MILTER MIME7TO8 MIME8TO7
                NAMED_BIND NDBM NETINET NETINET6 NETUNIX NEWDB NIS NISPLUS
                PIPELINING SASLv2 SCANF USERDB XDEBUG
WARNING: RunAsUser for MSP ignored, check group ids (egid=10, want=25)

============ SYSTEM IDENTITY (after readcf) ============
      (short domain name) $w = mami
  (canonical domain name) $j = mami.example.co.jp
         (subdomain name) $m = example.co.jp
              (node name) $k = mami
========================================================

# sh Build install

sendmail.cf の作成

cf/cf/sendmail.mc の内容

divert(0)dnl
VERSIONID(`$Id: generic-solaris.mc,v 8.13 2001/06/27 21:46:30 gshapiro Exp $')
OSTYPE(solaris2)dnl
DOMAIN(generic)dnl
define(`confTO_IDENT', `0s')
Dwgw
Dmexample.co.jp
FEATURE(`accept_unresolvable_domains')
FEATURE(`accept_unqualified_senders')
FEATURE(`mailertable')
define(`confAUTH_MECHANISMS', `DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')
TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confDEF_AUTH_INFO', `/etc/mail/auth-info')dnl
MAILER(local)dnl
MAILER(smtp)dnl

make で sendmail.cf を作成

$ make sendmail.cf
$ su
# make install

sendmail の動作チェック

sendmail デーモンに接続して "EHLO localhost" を発行します。

$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mami.example.co.jp ESMTP Sendmail 8.13.8/8.13.8; Mon, 
4 May 2009 21:30:02 +0900 (JST)
EHLO localhost
250-mami.example.co.jp Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
250-DELIVERBY
250 HELP
quit
221 2.0.0 mami.example.co.jp closing connection
Connection closed by foreign host.

応答 "250-AUTH" 行をチェック

sasl の設定

認証メカニズム

sasl でサポートされる認証メカニズムは複数ありますが、よく使われるメカニズムは以下です。

認証方式 説明
CRAM-MD5 チャレンジレスポンスによるパスワード認証
DIGEST-MD5 CRAM-MD5 の後継
LOGIN パスワードはプレーンテキストで流れる
PLAIN パスワードはプレーンテキストで流れる

以降では、プレーンテキスト(LOGIN, PLAIN)とシェアードシークレット(CRAM-MD5, DIGEST-MD5)の場合における sasl の設定を示します。

プレーンテキスト(LOGIN, PLAIN)の場合

SMTP AUTH 用アカウントは UNIX パスワードを利用します。
認証は SASL をインストールしたディレクトリに含まれる saslauthd が行うため、 事前に saslauthd を起動しておく必要があります。

# /usr/local/sbin/saslauthd -a pam

/usr/lib/sasl2/Sendmail.conf に以下を指定

pwcheck_method: saslauthd

シェアードシークレット(DIGEST-MD5, CRAM-MD5)の場合

saslauthd を起動しておく必要ありません。(SASL に含まれる auxprop プラグインが認証を行う)
SMTP AUTH 用アカウントは SASL 独自のパスワードファイルを使用します。

SMTP AUTH 用アカウントの作成

saslpasswd2 コマンドで SMTP AUTH 用のアカウントを作成

 /usr/local/sbin/saslpasswd2 -c -u example.co.jp ahirunoko

/etc/sasldb2.db が生成され、アカウントが追加される

ユーザーの表示

# /usr/local/sbin/sasldblistusers2

メールソフトの設定方法

メールソフトでもSMTP AUTH に対応している必要があります。
今回は Becky を使用しました。

Becky! Internet Mail Ver.2.5 のSMTP AUTH設定方法

(1)Becky!を起動し、メニューバーの「ツール(T)」から「メールボックスの設定(M)」を選択します。

(2)[詳細] タブを選択します。

・「SMTP認証」で「CRAM-MD5」にチェックを入れます。

・「ユーザーID(U):」を「ユーザー名@ドメイン名」を指定します。

・「ESMTPを使用(K)」にチェックを入れます。

・「OK」ボタンをクリックして、設定を完了します。