xserver
Home クッキー及びWeb ビーコンについて



PostfixによるSMTP認証[SMTP-AUTH]

メールサーバーの構築

 ここでは、PostfixをSMTP-AUTH対応にするための解説を行います。SMTP-AUTH認証は、出張先や旅行中、出先などでメールを送信したい場合に効果を発揮します。通常、メールサーバーは第三者中継を拒否する設定にしているため、外部ホストからメールを送信する際は、第三者中継とみなされ、メールを送信することはできません。そこで、SMTP認証を使うことによって、MTAにアクセスしてきたクライアントに対してリレーを許可することができるようになります。SMTP認証は、内部でSASLという認証旗鼓を使っているため、設定は、cyrus-sasl とPostfix の双方で行います。以下でその方法について具体的に説明していきましょう。なお、既にcyrus-sasl がインストールしてあって、Postfixが正常に稼動していることを前提として話を進めています。もし、これらの前準備がまだ出来ていない方は、「Postfixによるメールサーバーの構築」を参照してください。




Postfixはcyrus-sasl というSASLライブラリを使用しており、/usr/lib/sasl/smtpd.conf がPostfix用のcyrus-saslの設定ファイルとなります。中を開いて見てみると、以下のような行が表示されています。これは、cyrus-sasl のデータベースを直接参照するという意味です。

pwcheck_method: sasldb



■SMTP認証用のユーザー/パスワードを作成する

cyrus-sasl ライブラリが参照するパスワードデータベースは、/etc/passwd や/etc/shadowから自動的に生成することはできないので、saslpasswd コマンドを使用します。では、実際にユーザー/パスワードを作成してみます。データベースはrootユーザーのみ書き換え可能なのでrootでログインしてから以下のコマンドを実行します。ほとんどおまじないに近いのでユーザー名"kororo"の部分だけ変更してください。なお、初めてユーザーを作成する場合は、データベースが存在しないために必ず「saslpasswd: generic failure」というエラーがでて失敗するようなのでもう一度再登録することで解消されます。2人目以降は通常どおり作成することが出来ます。

# saslpasswd -c -u `/usr/sbin/postconf -h myhostname` kororo
Password:
Again (for verification):
saslpasswd: generic failure
# saslpasswd -c -u `/usr/sbin/postconf -h myhostname` kororo
Password:
Again (for verification):
#

設定したパスワードを削除したい場合は、-d オプションに変えてコマンドを実行します。

# saslpasswd -d -u `/usr/sbin/postconf -h myhostname` kororo

設定されたパスワードを確認したい場合は次の通りです。DIGEST-MD5、CRAM-MD5、PLAINという3つの認証機構のパスワードが登録されています。

# /usr/sbin/sasldblistusers
user: kororo realm: ns.kororo.jp mech: DIGEST-MD5
user: kororo realm: ns.kororo.jp mech: CRAM-MD5
user: kororo realm: ns.kororo.jp mech: PLAIN

最後に、Postfixがsaslデータベース(/etc/sasldb )を参照できるようにPostfixグループに対するアクセス権限を設定します。一行目で、データベースの所属グループをpostfix に設定し、2行目でパーミッションを640(rw-r----)としています。

# chgrp postfix /etc/sasldb
# chmod 640 /etc/sasldb



■/etc/postfix/main.cf の設定

設定ファイルを開いてSMTP認証ができるように編集していきます。main.cf に以下の行を付け加えます。詳細な下記表を参照してください。

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous, noplaintext
broken_sasl_auth_clients = yes
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_relay_domains, reject


1行目 SMTP-AUTHを有効にします
2行目 暗号化されないパスワードがネットワーク上に流れないようにします。noanonymous は「匿名を許可しない」、noplaintextは、「平文認証を許可しない」という意味になります。

3行目 OutlookExpressを使う場合は付け加えます。
4行目 SMTP認証をするローカルドメインを指定します。メールサーバーが一台しかない場合は、$mydomain としても構いません。

5行目 permit_mynetworks は、自ネットワークからのリレーを許可します。permit_sasl_authenticated は、SMTP認証を通過した場合のみ、リレーを許可します。check_relay_domain は、宛先が自ドメインだったら受け入れるという意味です。


main.cfの編集を終えたら、Postfix を起動させます。既に起動している場合はリロードしてください。

# /etc/init.d/postfix reload
Reloading postfix: [ OK ]


■SMTP-AUTHの動作テスト

動作確認を行うには、telnet して確認します。AUTH DIGEST-MD5 CRAM-MD5 の応答メッセージが返されればOKです。また、main.cf の設定で"broken_sasl_auth_clients = yes"にしているとAUTH の後ろに等号("=")が入った応答メッセージを返します。

# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 ns1.kororo.jp ESMTP Postfix
EHLO localhost
250-ns1.kororo.jp
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5
250-AUTH=DIGEST-MD5 CRAM-MD5

250-XVERP
250 8BITMIME
QUIT
221 Bye
Connection closed by foreign host.

以上の確認を終えたら、今度はパスワードをエンコードして、正しく認証が行われるかをチェックします。書式は以下のとおりです。

# printf 'ユーザー名\0ユーザー名\0パスワード' | mmencode

それでは、実際にエンコードしてみます。なお、以下のコマンド実行時に、「mencode: command not found」のようにmmencode がないと言われる場合は、PATHが通っていないか、もしくはインストールされていません。PATHが通っていない場合はフルパスで記述するか、PATHをとおしてください。インストールされていない場合は、xemacs パッケージが入っていない可能性があるのでインストールを行ってください。

# printf 'kororo\0kororo\0hogehoge' | mmencode
a29yb3JvAGtvcm9ybwBrb3JvMTgxNQ==

もう一度、telnet して、認証できるかどうか確認します。AUTH PLAIN (平文認証)で、先ほどエンコードしたものを入力し、Authentication successful という結果が返ってくれば認証が正常に成功したことになります。失敗した場合は、「535 Error: authentication failed 」というメッセージが返されます。

# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 hoge.kororo.jp ESMTP Postfix
EHLO localhost
250-hoge.kororo.jp
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5
250-AUTH=DIGEST-MD5 CRAM-MD5
250-XVERP
250 8BITMIME
AUTH PLAIN a29yb3JvAGtvcm9ybwBrb3JvMTgxNQ==
235 Authentication successful
QUIT
221 Bye
Connection closed by foreign host.


■Microsoft Outlook or OutlookExpressの設定


通常のメールアカウントの作成と異なる点は、「このサーバーは認証が必要」というチェックボックスにチェックをいれ、「設定」をクリックします。



新しく現れた画面で、「次のアカウントとパスワードでログオンする」にチェックをいれ、アカウント名とパスワードを入力します。もしも、アカウント名とパスワードが受信メールサーバー同じなら、「受信メールサーバーと同じ設定を使用する」にチェックを入れます。以上で、OutlookでのSMTP-AUTHの設定は完了です。なお、Outlook では、PLAIN 認証しかサポートしていないため、CRAM-MD5認証は使用できませんので注意してください。




■Becky! Internet Mail Ver2の設定

「詳細」タブで、CRAM-MD5、LOGIN、PLAINのいづれかを選択することが出来ます。









TOPに戻る

Sponcerd Link


Search
 
Web サイト内
Rental Server

【レンタルサーバのXbit】 低価格・高品質のビジネスクオリティー。300メガ1,050円~30分で サービススタート可能!


容量300MB、月額125円、高性能なサーバが日本最大級のバックボーンに直結。
さくらのレンタルサーバ



当サイトはLinux自宅サーバーの構築を目的としたサイトです。
当サイトに関するご意見、ご要望等は、こちらのメールアドレスよりお願いします。
Beginning | Introduction | Installation | Server |
Security | Tips | Related-Sites
Copyright©2003-2006 KORO All Rights Reserved.
総計:
今日:
昨日: