通常、SMTP には、POP3 や IMAP4 と異なりユーザーの認証プロセスが存在ないため、外部からのメール転送を不用意に許可してしまうと SPAM メールの送信などで不正に利用される可能性があります。そのため、ある特定のクライアントからの送信を許可するために 項10.6 で紹介した POP before SMTP と呼ばれる手法が広く利用されています。しかし、Turbolinux 10 Server の Postfix は SMTP 自身でユーザー認証を可能にした SMTP AUTH と呼ばれる機能拡張を実装しています。認証の機構には、SASL(Simple Authentication and Security Layer)を利用しており、数多くの認証方式をサポートしています。代表的なものを以下に示します。
表 10-3. SMTP AUTH の主な認証方式
| 認証方式 | 概要 |
|---|---|
| PLAIN | 平文によるユーザー認証方式です。 |
| LOGIN | PLAIN と同様に平文を用いた認証形式です。標準仕様が存在しないため、各社製品間の互換性があまり考慮されていません。 |
| CRAM-MD5 | CRAM とは、Challenge-Response Authentication Mechanism の略称です。クライアントは、接続先の SMTP サーバーからあらかじめ示された任意の文字列にパスワードを含めで MD5 アルゴリズムで作成したメッセージを MTA へ送信します、MTA 側でも同様の方法でメッセージを作成し、クライアントから送られてきたメッセージと比較します。そして、それらの文字列が等しければログインを許可します。この認証方法は、ネットワークにパスワード自身が流れることがないため PLAIN や LOGIN より安全性が高くなります。 |
| DIGEST-MD5 | CRAM-MD5 の欠点である総当たり攻撃などに対処するために、Realm(ドメイン名)や URL の指定、および HMAC(keyed-Hashing for Message Authentication Code)による暗号化をサポートしています。 |
このように、SMTP AUTH を利用するには、サーバーとクライアントの双方がこれらの暗号方式に対応していなければならないものの、メールの送信の際にユーザーとパスワードによる認証を行い、認証された場合のみメールの送信を許可することが可能になります。以下では、Turbolinux 10 Server の Postfix における 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_domain,reject |
もし、平分によるパスワード認証は拒否するのであれば、以下のパラメータを指定することもできます。
smtpd_sasl_security_options = noplaintext |
また、古いバージョンの Microsoft Outlook をメールクライアントに使用する場合は以下のパラメータを追加する必要があるかもしれません。EHLO の応答に対して、"250 AUTH" ではなく "250 AUTH=" が返されることを期待しているため、SMTP AUTH が機能しません。
broken_sasl_auth_clients = yes |
Postfix を再起動して設定を反映します。
# /etc/init.d/postfix restart |
telnet で SMTP が使用するポート 25 番へアクセスし、SMTP AUTH が有効になったことを確認します。
# telnet localhost 25 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. 220 turbolinux.co.jp ESMTP Postfix EHLO localhost 250-turbolinux.co.jp 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-AUTH PLAIN OTP NTLM LOGIN GSSAPI DIGEST-MD5 CRAM-MD5 <- この行を確認 250 8BITMIME quit Connection closed by foreign host. |