10.7. SMTP AUTH の設定

通常、SMTP には、POP3 や IMAP4 と異なりユーザーの認証プロセスが存在ないため、外部からのメール転送を不用意に許可してしまうと SPAM メールの送信などで不正に利用される可能性があります。そのため、ある特定のクライアントからの送信を許可するために 項10.6 で紹介した POP before SMTP と呼ばれる手法が広く利用されています。しかし、Turbolinux 11 Server の Postfix は SMTP 自身でユーザー認証を可能にした SMTP AUTH と呼ばれる機能拡張を実装しています。認証の機構には、SASL(Simple Authentication and Security Layer)を利用しており、数多くの認証方式をサポートしています。代表的なものを以下に示します。

表 10-3. SMTP AUTH の主な認証方式

認証方式概要
PLAIN 平文によるユーザー認証方式です。
LOGINPLAIN と同様に平文を用いた認証形式です。標準仕様が存在しないため、各社製品間の互換性があまり考慮されていません。
CRAM-MD5CRAM とは、Challenge-Response Authentication Mechanism の略称です。クライアントは、接続先の SMTP サーバーからあらかじめ示された任意の文字列にパスワードを含めで MD5 アルゴリズムで作成したメッセージを MTA へ送信します、MTA 側でも同様の方法でメッセージを作成し、クライアントから送られてきたメッセージと比較します。そして、それらの文字列が等しければログインを許可します。この認証方法は、ネットワークにパスワード自身が流れることがないため PLAIN や LOGIN より安全性が高くなります。
DIGEST-MD5CRAM-MD5 の欠点である総当たり攻撃などに対処するために、Realm(ドメイン名)や URL の指定、および HMAC(keyed-Hashing for Message Authentication Code)による暗号化をサポートしています。

このように、SMTP AUTH を利用するには、サーバーとクライアントの双方がこれらの暗号方式に対応していなければならないものの、メールの送信の際にユーザーとパスワードによる認証を行い、認証された場合のみメールの送信を許可することが可能になります。以下では、Turbolinux 11 Server の Postfix における SMTP AUTH の設定方法を解説します。

10.7.1. SMTP_AUTH 専用のユーザーによる認証

最初に以下のコマンドを実行して、SMTP AUTH による認証を行うユーザーとパスワードを登録します。この例は、ドメイン名 turbolinux.co.jp、ユーザー名 turbo を登録する場合です。通常、ドメイン名は自分のサイトのドメイン名を指定し、このドメイン名はメールクライアントの設定で必要になります。

# saslpasswd2 -u turbolinux.co.jp -c taro
Password:
Again (for verification):

登録済みのユーザーのパスワードを変更するのであれば、-c オプションは必要ありません。また、ユーザーを削除するには -d オプションを指定します。

# saslpasswd2 -u turbolinux.co.jp -d taro

SASL(Simple Authentication and Security Layer)のデータベースが /etc/sasldb2 に作成されます。登録されたユーザー情報を確認するには、以下のコマンドを実行します。

# sasldblistusers2
taro@turbolinux.co.jp: cmusaslsecretOTP
taro@turbolinux.co.jp: userPassword

Postfix が SMTP AUTH で /etc/sasldb2 を利用するには、読み込み可能となっている必要がありますので、以下のようにファイルの所有者を変更します。

# chgrp postfix /etc/sasldb2
# chmod 640 /etc/sasldb2
# ls -l /etc/sasldb2
-rw-r-----  1 root postfix 12687 Sep  4 13:25 /etc/sasldb2

SMTP AUTH を利用するには Postfix の設定も必要です。/etc/postfix/main.cf に以下の行を追加します。

smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated, check_relay_domains,reject

もし、平分によるパスワード認証は拒否するのであれば、以下のパラメータを指定することもできます。

smtpd_sasl_security_options = noplaintext

また、古いバージョンの Microsoft Outlook をメールクライアントに使用する場合は以下のパラメータを追加する必要があるかもしれません。EHLO の応答に対して、"250 AUTH" ではなく "250 AUTH=" が返されることを期待しているため、SMTP AUTH が機能しません。

broken_sasl_auth_clients = yes

認証方法を変更する場合には、/usr/lib/sasl2/smtpd.conf ファイル(Turbolinux 11 Server 64Bit の場合は /usr/lib64/sasl2/smtpd.conf ファイル)の変更が必要です。

SASL 用パスワードファイルを利用する場合は以下のように編集します。

pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: cram-md5 digest-md5 plain login

Postfix を再起動して設定を反映します。

# /etc/init.d/postfix restart

10.7.2. Linux のシステムアカウントによる認証

SMTP_AUTH 専用のユーザーを用意せず Linux のシステムアカウントによる認証を行うこともできます。ユーザーの作成や削除は、useradd 、userdel コマンドで実行します。

SASL_AUTH 専用ユーザーによる認証の場合と同様に /etc/postfix/main.cf で Postfix の設定を行います。

/usr/lib/sasl2/smtpd.conf ファイルを以下のように設定します。Turbolinux 11 Server のデフォルトなので特に変更の必要はありません。

 pwcheck_method: saslauthd
 mech_list: plain login

ティップ

/etc/shadow を使用する場合は、cram-md5 方式や digest-md5 方式は設定できません。

認証方法に合わせて /etc/sysconfig/saslauthd ファイルの MECH= の部分を編集します。Turbolinux 11 Server の初期状態 shadow は、 /etc/shadow を使用するという意味です。saslauthd -v と実行して指定可能なメカニズムのリストを表示できます。

MECH=shadow

Postfix を起動する前に saslauthd デーモンを起動します。

# /etc/init.d/saslauthd  restart

次回のシステム起動時にも saslauthd デーモンを有効にするには次のように実行します。

# chkconfig saslauthd on

Postfix を再起動して設定を反映します。

# /etc/init.d/postfix restart