2.1使ったもの
OS=redhat linux9
sendmail-8.12.10
cyrus-sasl-1.5.24(sasl-2.xではなぜかうまく動かないので)
sendmail
cyrus-mail
Redhatではsendmail-cf、sendmial-devel、およびcyrus-sasl-2.x関連4つくらいのパッケージはすべてアンインストールしておいた
2.2
/usr/local/srcにsendmail.8.12.10 & cyrus-sasl1.5.24のtar.gzを置いた。
2.3.cyrus-saslのインストール
tar zxvf cyrus-sasl-1.5.24.tar.gz
cd cyrus-sasl-1.5.24
./configure --prefix=/usr --enable-login=yes --with-dbpath=/etc/mail/sasldb
(--prefix=/usrをつけないと/usr/localにインストールされ、シンボリックリンクをはるように警告されるのでこれをつけた。dbpathを設定したのは、sendmailのファイルたちと同じ場所においておくため←指定なしのデフォルトでは/etcだった。また、OutlookExpressでも使いたいのでlogin認証を有効にした←デフォルトでは無効になってるから)
make
make install
saslpasswd -u localhost.localdomain test
(↑ユーザーアカウントを作るコマンド。passwordを聞かれるのでpassとした)
cd /etc/mail/
chmod 600 sasldb
(↑これをやっておかないとcram-md5とdigest-md5
がehloで有効になっていないことが確認できるし、auth
plain
やloginまでも実質使えなかった(authentication failedになる)。
sasldblistusers
(↑作ったアカウントの確認コマンドで、以下が表示される。おや?loginが無いぞと思ったが、表示されないだけで有効になっていたことが認証テストで判明。)
user: test realm: localhost.localdomain mech: PLAIN
user: test realm: localhost.localdomain mech: CRAM-MD5
user: test realm: localhost.localdomain mech: DIGEST-MD5
ちなみにcyrus-sasl2.x関連のパッケージを抜いておかないとユーザー登録がうまくいかなかった。
2.4.sendmailのインストールと設定
cd /usr/local/src
tar zxvf sendmail.8.12.10.tar.gz
cd sendmail-8.12.10/sendmail
vi conf.h
→#if SASLの手前の空行に#define SASL 1を追加。(128行目あたり)
cd ../devtools/Site
vi site.config.m4
*********以下を書き込む。*************************
APPENDDEF(`confENVDEF', `-DSASL')
APPENDDEF(`conf_sendmail_LIBS', `-lsasl')
APPENDDEF(`confLIBDIRS', `-L/usr/lib/sasl -L/usr/lib')
APPENDDEF(`confINCDIRS', `-I/usr/include')
**************************************************
注意:`と'は違うので気をつける
文字列を囲むときの最初は`=バッククォーテーション
最後は'=シングルクォーテーション
lsやcatでsite.config.m4ができているか確認。
mkdir /usr/man/man1
mkdir /usr/man/man5
(↑エラーが出るときがあったのであらかじめ作っておいた。)
adduser smmsp ←このユーザーを作らないとinstall時にエラーがでる。
(ただし、Redhatのinstall時にsendmailが入っていたならsmmspさんは
既に存在しているかもしれない。)
cd ..
cd ..
sh Build
sh Build install
2.5.cfの設定
cd cf/cf
cp generic-linux.mc sendmail.mc
vi sendmail.mc
*************以下のように書き換える。注意:`と'は違うので気をつける*******
divert(-1)
.
.
.
.
divert(0)dnl
VERSIONID(`$Id: generic-linux.mc,v 8.1 1999/09/24 22:48:05 gshapiro Exp $')
OSTYPE(linux)dnl
DOMAIN(generic)dnl
TRUST_AUTH_MECH(`LOGIN PLAIN CRAM-MD5 DIGEST-MD5')dnl
define(`confAUTH_MECHANISMS',`LOGIN PLAIN CRAM-MD5
DIGEST-MD5')dnl
MAILER(local)dnl
MAILER(smtp)dnl
***************************************************
注意:`と'は違うので気をつける
文字列を囲むときの最初は`=バッククォーテーション
最後は'=シングルクォーテーション
上記ファイルはspam対策などで後で設定しなおした。(保存場所は/usr/local/src/sendmail.mc.bkとしてある)
sh Build sendmail.cf
sh Build install-cf
cd /etc/mail
touch local-host-names
(local-host-namesを編集)
mkdir /var/spool/mqueue
(無ければ作る)
2.6認証の確認
sendmail -bd -q15m
telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 localhost.localdomain ESMTP Sendmail 8.12.10/8.12.10;
Fri, 19 Sep 2003 06:31:27 +0900
ehlo localhost
250-localhost.localdomain Hello mail [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 LOGIN PLAIN CRAM-MD5 DIGEST-MD5
250-DELIVERBY
250 HELP
ちなみにユーザー名とパスワードはencode済みの文字列で送信しなければならないが、私のRedhat9では以下のコマンドが効かなかった。しかし、redhat7.3で作った時と同じユーザー名とパスワードを登録したので変換後の文字列も同様であるから(結果)部分をそのまま入力した。
※以下のコマンドを用いてユーザー名を変換する
printf 'username¥0username¥0password' | mmencode
例:
printf 'test¥0test¥0pass' | mmencode
dGVzdAB0ZXN0AHBhc3M= (←結果)
ehlo localhost
250-localhost.localdomain Hello mail [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 LOGIN PLAIN CRAM-MD5 DIGEST-MD5
250-DELIVERBY
250 HELP
AUTH PLAIN dGVzdAB0ZXN0AHBhc3M=
235 2.0.0 OK Authenticated
quit
成功したので、outlookexpressでも確認したところうまくいった。
ユーザー名:test (test%localhost.localdomainとするソフトもある様だ)
パスワード:pass
※Authentication Failedなど、うまくいかない場合は/usr/lib/sasl/にあるSendmail.confまたはsmtpd.confの中身を変更する。
pwcheck_method:pamになっていたり、ファイルがければSendmail.confかsmtpd.confを作成し、内容として以下の様に記述する。
pwcheck_method:sasldb
plainなどの平文での認証だとインターネット上で利用すると
ユーザー名やパスワードが盗聴される恐れもあるが、考えて
みるとプロバイダのPOPメールなどにログインするときも覗かれてい
る危険性があるのかもしれない。今度はsslなどを使った検証を行う。
2.7.smrsh(SendMailRestrictedSHell)のインストール
これはsendmailのセキュリティを高めるためのツール。
使い方については後で考える。
とりあえずインストールしておく。
cd /usr/local/src/sendmail-8.12.10/smrsh
sh Build install
これでインストールは終わり。
2.8.sendmailの詳細設定
sendmail.mcの記述
後で書く。