8.SMTP認証

 ユーザ認証を行わないとメールを送信できないよう、SMTP認証の設定を行う。

8-1 SASLの起動

 SMTP認証を導入するにはSASLというパッケージが必要になる。CentOS 4には標準でインストールされている。ただし、saslauthdデーモンはデフォルトで /etc/passwd、/etc/shadow を使ってSMTP認証をするようになっているため、PAM認証を行うよう、設定ファイル /etc/sysconfig/saslauthd をviで開き、次のように修正する。

MECH=pam

 次に /usr/lib/sasl2/smtpd.conf をviで開き、次のように修正する。

pwcheck_method: saslauthd
mech_list: PLAIN LOGIN

 2つの設定ファイルを修正したら、saslauthdデーモンを起動する。ついでにサービスに追加する。

# chkconfig saslauthd on
# /etc/rc.d/init.d/saslauthd start
# /etc/rc.d/init.d/saslauthd status
saslauthd (pid 30113 30112 30111 30109 30108) を実行中...

8-2 Postfixの設定

 PostfixがSASL認証を利用するよう、設定ファイル /etc/postfix/main.cf をviで開き、次の文を追加する。

# SASLによるSMTP認証を有効にする
smtpd_sasl_auth_enable = yes
# メールリレー制御の設定 
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
# Outlook ExpressでSMTP認証がうまく行かない場合は以下を有効に
#broken_sasl_auth_clients = yes

※smtpd_recipient_restrictionsパラメータに指定した値の意味

permit_mynetworks
mynetworksパラメータで指定したネットワークに属するクライアントを許可する。このクライアントからはSMTP認証無しにSMTP接続できる。
内部ネットワークでもSMTP認証を強制したい場合は、この値を削除する。
permit_sasl_authenticated
SMTP認証で認証されたクライアントを許可する。
reject_unauth_destination
次のパラメータで指定されているアドレス宛のメールかどうかをチェックし、該当しなければ拒否する。
mydestination, inet_interfaces, relay_domains, virtual_alias_domains, virtual_mailbox_domains

 追加したら、Postfixをリロードして設定の変更を有効にする。

# /etc/rc.d/init.d/postfix reload

8-3 統合認証方式の選択

 PostfixがPAM経由でActiveDirectoryに対して認証するように設定を行う。SMTP認証サービスのPAM設定ファイル /etc/pam.d/smtp をviで開き、全ての行をコメントアウトしてから、次の行を追加する。

※PAMは設定ファイルを保存しただけで、変更が有効になる。

8-4 動作確認

 クライアントPCのメーラーを設定し、メールが送受信できるかどうか確認する。まずは今までの設定のままで、外部のメールアドレスに対してメールを作成する。

 作成したメールを送信しようとすると、次のようなエラーが出る。

 これは、Outlook Expressのアカウントの設定において、SMTP認証を有効にしていないからである。
 アカウントのプロパティを開き、「サーバー」タブをクリックして、このサーバーは認証が必要にチェックを入れる。

 設定変更後、再度メールを送信すると、今度はエラーが出ることなく、メールが送れるはずである。

※同一ドメインのメールアカウントにメールを送信する場合、SMTP認証は行われない。外部へメールを送信する場合にSMTP認証が行われる。


[ Back ]