SMTP Auth で安心快適メール送信

性善説はとうの昔に崩壊し,メール送信時に認証をしないとあっと言う間に SPAM の踏み台にされる昨今です.
以前はメール送信時の認証として,POP before SMTP などがよく使われていました
(私もこんなの作りましたしね.).
しかし POP before SMTP はいちいち POP 認証するのも面倒,
かつ POP の認証機構もいまいちです(POP は平文,RPOP は論外 ;-p).
というわけで,SMTP Auth を使いましょう.
SMTP Auth は,RFC2554 ``SMTP Service Extention for Authentication''で定義されています.

1. とりあえず SASL

まず,認証に使う SASL を入れます.SSL が入っていないのであれば,そっちを先に入れましょう.
SASL は Simple Authentication and Security Layer の略で,RFC2222, RFC2444 あたりに書かれています.
何がどう Simple なのかは私には分かりません.
いくつか実装はありますが,Cyrus-SASL を使うことにします.

    % tar zxvf cyrus-sasl-1.5.28.tar.gz
    % cd cyrus-sasl-1.5.28
    % ./configure  --enable-login --enable-gssapi=no
    % make
    # make install
    # touch /etc/sasldb
    # chmod 600 /etc/sasldb
    # cd /usr/lib
    # ln -s /usr/local/lib/sasl

SASL を入れたあと,Sendmail で SASL を使えるようにするために設定ファイルを置く必要があります.
chmod は要らないかも.

    % cd /usr/lib/sasl
    # vi Sendmail.conf
    pwcheck_method: sasldb
    # chmod 600 Sendmail.conf

2. Sendmail を作る

SASL が入ったら,SASL 対応で sendmail を作ります.
devtools/Site/site.config.m4 に -DSASL とか付けるだけです.

    % tar zxvf sendmail.8.12.7.tar.gz
    % cd sendmail-8.12.7
    % cd devtools/Site
    % cp ../OS/Linux ./site.config.m4
    % vi site.config.m4
    % diff -ur ../OS/Linux site.config.m4            
    --- ../OS/Linux Fri Mar 22 08:59:25 2002
    +++ site.config.m4      Sat Jan  4 18:10:21 2003
    @@ -6,8 +6,10 @@
     define(`confDEPEND_TYPE', `CC-M')
     define(`confSM_OS_HEADER', `sm_os_linux')
     define(`confMANROOT', `/usr/man/man')
    -define(`confLIBS', `-ldl')
    +define(`confLIBS', `-ldl -lssl -lcrypto -lsasl')
    +define(`confLIBDIRS', `-L/usr/local/ssl/lib -L/usr/local/lib/sasl')
     define(`confEBINDIR', `/usr/sbin')
    +define(`confENVDEF', `-DSASL')
     APPENDDEF(`confLIBSEARCH', `crypt nsl')
 
     define(`confLD', `ld')

あとは,普通に make しましょう.

    % cd ../../
    % sh ./Build
    # sh ./Build install

3. sendmail.cf を作る

最後に sendmail.cf を作りましょう.
sendmail.mc に下のように書き加えます.

    define(`confAUTH_MECHANISMS', `DIGEST-MD5 CRAM-MD5 PLAIN LOGIN ANONYMOUS')dnl
    define(`confAUTH_OPTIONS', `A')dnl
    TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5')dnl

これで,MD5 認証だけ信用するようになります.
あとは普通に sendmail.cf を作りましょう.

    % cd cf/cf
    # make install-cf

4. SASL のユーザを作る

saslpasswd コマンドで,ユーザ登録します.
登録されているユーザの確認は,sasldblistusers です.

5. sendmail を上げて,確認

sendmail をデーモンで上げて,SMTP Auth できるか確認しましょう.
とりあえず,telnet でつないで EHLO で確認できます.
telnet localhost 25 して,EHLO localhost した時に

    250-AUTH DIGEST-MD5 CRAM-MD5 PLAIN LOGIN ANONYMOUS

が表示されれば,たぶん SMTP Auth は動いています.
それでも認証が失敗する場合は,SASL のユーザ登録, 認証メカニズムなどを調べましょう.
Digest-MD5 を使っているのにドメインを渡していない,などもありがちです.


PREV RETURN NEXT