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」ボタンをクリックして、設定を完了します。