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の記述
    後で書く。