ユーザ認証を行わないとメールを送信できないよう、SMTP認証の設定を行う。
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 LOGIN2つの設定ファイルを修正したら、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) を実行中...
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
PostfixがPAM経由でActiveDirectoryに対して認証するように設定を行う。SMTP認証サービスのPAM設定ファイル /etc/pam.d/smtp をviで開き、全ての行をコメントアウトしてから、次の行を追加する。
- Winbind認証を利用する
auth sufficient /lib/security/pam_winbind.so
account sufficient /lib/security/pam_winbind.so- Kerberos認証を利用する
auth sufficient /lib/security/pam_krb5.so
account sufficient /lib/security/pam_krb5.so※PAMは設定ファイルを保存しただけで、変更が有効になる。
クライアントPCのメーラーを設定し、メールが送受信できるかどうか確認する。まずは今までの設定のままで、外部のメールアドレスに対してメールを作成する。
作成したメールを送信しようとすると、次のようなエラーが出る。
これは、Outlook Expressのアカウントの設定において、SMTP認証を有効にしていないからである。
アカウントのプロパティを開き、「サーバー」タブをクリックして、このサーバーは認証が必要にチェックを入れる。設定変更後、再度メールを送信すると、今度はエラーが出ることなく、メールが送れるはずである。
※同一ドメインのメールアカウントにメールを送信する場合、SMTP認証は行われない。外部へメールを送信する場合にSMTP認証が行われる。