SMTP AUTH
作成 : 2004/07/16
SMTP AUTH
メール送信時に認証をおこない、リレーを許可/拒否する。 SASL(Simple Authentication and Security Layer)を使用する。
SMTP AUTHに必要なパッケージ
cyrus-sasl(デーモンとかユーティリティとか)、cyrus-sasl-devel(ライブラリとヘッダファイル)、cyrus-sasl-plain(PLAIN/LOGIN認証に必要なプラグイン)、cyrus-sasl-md5(CRAM-MD5/DIGEST-MD5認証に必要なプラグイン)。 あと、MTAとしてsendmailをインストール済み。
SMTP AUTHのためのsendmailの設定
/etc/mail/sendmail.mcを編集する。
/etc/mail/sendmail.mc TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl <---指定のメカニズムで認証されたユーザは、リレーを許可する define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl <---AUTHで使用できる認証メカニズム
PLAIN認証は平文でパスワードを送信するし、LOGIN認証も平文ではないがパスワードを送信するので、使用しないほうがよい。 どうしても必要な場合は、SMTP over SSLと合わせて使用すること。 PLAIN認証はEvolution、LOGIN認証はOutlook ExplorerなどのMUAで使用されるらしい。
/etc/mail/sendmail.cfの作成
/etc/mail/sendmail.cfを作成する。
# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
/etc/mail/relay-domainsと/etc/mail/access
relay-domainsファイルまたはaccessファイルは、リレーを許可するホストやドメインを記述する。 このファイルでリレーを許可している場合は、認証に関係なくすべてリレーされる。
sendmailの再起動
sendmailを再起動する。
# /etc/init.d/sendmail restart
telnetでSMTPサーバに接続して、ELHOコマンドを入力してみる。
# telnet smtp.nina.jp 25 Connected to smtp.nina.jp. Escape character is '^]'. 220 smtp.nina.jp ESMTP Sendmail 8.12.11/8.12.11; Wed, 14 Jul 2004 23:28:21 +0900 ehlo localhost 250-smtp.nina.jp Hello smtp.nina.jp [192.168.0.10] (may be forged), pleased tomeet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN <---SMTP AUTHが使用できるようになった 250-STARTTLS 250-DELIVERBY 250 HELP quit 221 2.0.0 smtp.nina.jp closing connection
sasldb2の作成
Eudora6などのように、DIGEST-MD5認証やCRAM-MD5認証を使う場合は、別にユーザデータベースファイルsasldb2(/etc/sasldb2)を作成する。 (LOGIN認証やPLAIN認証では、/etc/passwdファイルを使用するので、sasldb2は不要) ユーザをsasldb2に登録するには、saslpasswd2ユーティリティを実行する。
注意! EudoraのようにPOPアカウントとパスワードでSMTP AUTHをするアプリケーションでは、POPアカウントとsasldb2に登録するユーザを一致させる。
# saslpasswd2 -c test <---testユーザをsasldb2に登録 Password: password <---testユーザのパスワード Again (for verification): password <---testユーザのパスワード
sasldb2に登録されているユーザを確認するには、sasldblistusers2ユーティリティを実行する。
# sasldblistusers2 test@smtp.nina.jp: userPassword <---testユーザが登録されている
ついでに、sasldb2からユーザを削除するには、saslpasswd2ユーティリティを実行する。
# saslpasswd2 -d test <---testユーザを削除する
saslauthdの起動
どのメカニズムで認証するにしても、saslauthdデーモンが動作していなければならない。 saslauthdを起動する。
# /etc/init.d/saslauthd start
システム起動時にデーモンが起動するよう、/etc/rc3.dディレクトリにシンボリックリンクを作成する。
# cd /etc/rc3.d # ln -s ../init.d/saslauthd S95saslauthd
メールクライアントの設定
EudoraでSMTP AUTHまたはOutlook ExpressでSMTP AUTHを参照。
メール送信時のログ
メールを送信したときのログを確認してみる。
/var/log/maillog
sendmail[27496]: AUTH=server, relay=client.nina.jp [192.168.0.20] (may be forged), authid=test, mech=CRAM-MD5, bits=0
sasldb2で認証エラーになった場合は、次のようなメッセージになる。
/var/log/message
sendmail[28094]: incorrect digest response