SMTP-AUTH

smtp-authを入れました。Cyrus SASLのインストール、sendmailの再コンパイルsendmail.cfの調整、認証情報の調整という手順です。

Cyrus SASLのインストール

sendmailで認証するにはCyrus SASLを使うようです。まずCyrus SASLをインストール。ソースはftp://ftp.andrew.cmu.edu/pub/cyrusにあります。最新はcyrus-sasl-2.1.22.tar.gzでした。Solarisでのインストール奮闘記は2007年4月16日のエントリを参照してください。

>||
$ /usr/local/bin/tar -zxvf cyrus-sasl-2.1.22.tar.gz
$ cd cyrus-sasl-2.1.22
$ ./configure --prefix=/usr --with-openssl=/usr/local/ssl --enable-digest
$ /usr/local/bin/make
# /usr/local/bin/make install

SASLの設定ファイルを編集

CyrusSASLを使って認証する場合、いろんな認証方法が使えます。CRAM-MD5,DIGEST-MD5以外の認証方法を使って認証するばあいは、SASLの設定ファイルSendmail.confを用意する必要があります。たとえばPLAIN認証でPAMで認証する場合はこんなの。

# cat /usr/lib/sasl/Sendmail.conf
pwcheck_method:pam

今回はDIGEST-MD5を使うつもりなので、このファイルは用意しません。

sendmailを再コンパイル

sendmailがSASLを使って認証できるようにsendmailコンパイルしなおします。コンパイル時に認証するm4マクロファイルに以下の3行を追加。SASLのインクルードファイルの場所とSASLをつかうようフラグを指定します。

define(`confINCDIRS', `-I/usr/include/sasl')
APPENDDEF(`confENVDEF', `-DSASL=2')
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')

m4のマクロファイルは通常だと devtool/Site/site.OSの名前.m4ってファイルですね。
編集したら再コンパイル、リンク、インストール。

$ sh Build -c
# sh Build install

実際に起動してみて確認。

$ ./obj.SunOS.5.9.sun4/sendmail/sendmail -d0.1
Version 8.14.1
Compiled with: DNSMAP LOG MAP_REGEX MATCHGECOS MILTER MIME7TO8 MIME8TO7
NAMED_BIND NDBM NETINET NETINET6 NETUNIX NIS NISPLUS PIPELINING
SASLv2 SCANF XDEBUG
/etc/mail/submit.cf: line 41: invalid V line vendor code: "Sun"
WARNING: RunAsUser for MSP ignored, check group ids (egid=10, want=25)

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

can not chdir(/var/spool/clientmqueue/): Permission denied
Program mode requires special privileges, e.g., root or TrustedUser.

SASLv2ってのが入っていればOK。

sendmail.cfの調整

sendmail.cfを編集して認証を有効にします。sendmail.cfの元になっているm4のマクロファイルに以下の2行を追加してsendmail.cfを作成。

 TRUST_AUTH_MECH(`DIGEST-MD5')dnl
 define(`confAUTH_MECHANISMS', `DIGEST-MD5')dnl

今回の目的は外部からのリレーを許すので、TRUST_AUTH_MECHで認証方式を指定します。編集したらsendmail.cfを作成、/etc/mailにcpしてsendmailを起動。

$ cd sendmail-8.14.1/cf/cf
(sendmail.mcを編集)
$ /usr/local/bin/make sendmail.cf
# cp ./sendmail.cf /etc/mail
# /etc/init.d/sendmai start

sendmailが起動したら自分に25番でtelnetして確認。

telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 hoge.hoge.co.jp ESMTP Sendmail 8.14.1/8.14.1; Mon, 4 Jun 2007 15:38:09 +0900 (JST)
EHLO www
250-hoge.hoge.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
250-DELIVERBY
250 HELP

250-AUTH DIGEST-MD5ってのが出ていればOK。認証情報などの調整については次回。