SMTP AUTH

[サーバの実験室 Redhat/Fedora]

作成 : 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

[サーバの実験室 Redhat/Fedora]