CentOS6.5でやっているLinuxサーバー設定関連の続き記事。
前回はPostfixの導入を行ったので、認証機能を追加して送信ユーザーを特定できるようにします。
ページの目次
SMTP-AUTHの導入目標
前回導入したPostfixを使ってのメールのリレーを特定のユーザーにのみ許可するようにします。
外部に公開するわけではないので導入しなくても構わないのですが、最低限の設定方法ぐらいまとめて勉強してしまおうという事で導入する事にしました。
また、メールを送信するにはCRAM-MD5(MD5形式でハッシュ化した認証情報を送って認証を行う)かDIGEST-MD5(CRAM-MD5の弱点である総当たりや辞書攻撃の対策が取られている形式)によって認証情報の交換を行います。
SASLのインストール
SASLは「Simple Authentication and Security Layer」の略で認証とデータセキュリティのためのプロトコルです。
SASLをCRAM-MD5で使用するには「cyrus-sasl」(インストール済みなのでUpdateを行う)、「cyrus-sasl-md5」のインストールを行います。
# yum install cyrus-sasl cyrus-sasl-md5
Postfixの設定変更
SMTP-AUTHを使用して認証できないユーザーのメールリレーを制限するには「/etc/postfix/main.cf」に以下の追加を行います。(全ての行を新規に追加します)
smtpd_sasl_auth_enable = yes ・・・・・・ (1) broken_sasl_auth_clients = no ・・・・・・ (2) smtpd_recipient_restrictions = permit_mynetworks, ・・・・・・ (3) permit_sasl_authenticated, reject_unauth_destination, reject smtpd_sasl_security_options=noanonymous,noplaintext ・・・・・・ (4) smtpd_sasl_local_domain = cross-ring.org ・・・・・・ (5)
(1) SMTP-AUTH認証をサポートするかどうかの設定です。使用するにはyesを設定します。
(2) Outlook等、一部のメールクライアントソフトは規格外の動作を行うため、その規格外の動作に対応するかどうかを指定します。
(私はOutlookを使う気はないので「no」に設定しています)
(3) メールを受信したときの動作を設定します。
上から(先頭から)順に評価を行い、合致した条件の動作を行うようになります。
設定項目について補足を行うと
- permit_mynetworks: mynetworksで指定したネットワークからの接続の場合は受信可能にする
- permit_sasl_authenticated: SMTP-AUTH接続を行ったクライアントからのメールは受信可能にする
- reject_unauth_destination: 自ホスト宛のアドレス以外は拒否する
- reject: 全てのメールの受信を拒否する(※先に合致した条件が無ければ受信しないという設定)
その他の設定内容について確認したい場合はコチラを確認してください。
(4) 使用可能な認証方式などの設定を行います。
「noanonymous」は匿名での接続を禁止し、「noplaintext」を指定するとPLAIN(平文)での認証接続も禁止する事ができます。
(5) ドメインの指定を行います。デフォルトではmyhostnameの値(当サイトの設定ではsmtp.cross-ring.org)が採用されますのでsmtpを省いた名称をドメインとして使用する設定を行います。
補足:CentOS6.5の標準リポジトリーではpostfixは2.6のため上記の設定で問題ありませんが、postfix 2.10以降は受信設定とリレー設定が分離されています。postfix 2.10以降を利用する場合は以下の内容もmain.cfに追加してください。
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject
認証の設定
「/etc/sasl2/smtpd.conf」にDIGEST-MD5、CRAM-MD5認証を行うように設定を行います。
pwcheck_method: auxprop auxprop_plugin: sasldb mech_list: digest-md5 cram-md5
ファイルの内容が上記の内容と一致するように変更します。
上記2つの設定で、認証ユーザを管理しているsasldb2を使用する設定に変更しています。
※sasldb2は次で作成方法を書きます。
mech_list で使用する認証形式を記載しています。
認証可能ユーザの登録(sasldbの作成)
メールの送信を許可するユーザーを登録します。
登録には「saslpasswd2」のコマンドを使います。
今回はユーザー名「user_name」でドメイン「cross-ring.org」とした場合です。
# saslpasswd2 -u cross-ring.org user_name Password: <パスワードを入力> Again (for verification): <パスワードを再入力> # sasldblistusers2 ・・・・・・ (5) user_name@cross-ring.org: userPassword # chgrp postfix /etc/sasldb2 ・・・・・・ (6)
(5) 登録したユーザーの一覧を確認するコマンドです。
(6) 作成されたsasldb2はpostfixからのアクセス権が無いため、グループを変更して読出しアクセスを許可します。
サービスの起動設定と起動
ここまでで、設定は完了したのでサービスの起動設定と起動を行います。
また、postfixの設定も変更を行ったためサービスの再起動を行います。
# chkconfig --level 35 saslauthd on # chkconfig --list saslauthd saslauthd 0:off 1:off 2:off 3:on 4:off 5:on 6:off # service saslauthd start Starting saslauthd: [OK] # service postfix restart Shutting down postfix: [OK] Starting postfix: [OK]
動作確認
telnetを使った設定の確認
「telnet」コマンドが実行できない場合は「yum install telnet」のコマンドを実行してコマンドをインストールしてください。
接続が成功した後は「ehlo localhost」で接続内容の確認を行います。確認が完了した後は「quit」で終了します。
# telnet localhost smtp Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 smtp.cross-ring.org ESMTP Postfix ehlo localhost 250-smtp.cross-ring.org 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-AUTH DIGEST-MD5 CRAM-MD5 ・・・・・・ (7) 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN quit 221 2.0.0 Bye Connection closed by foreign host.
※ハイライトしている行が入力を行う個所です。
(7) 認証が有効であることを表している行です。
この行が表示されていた場合は認証設定が完了しています。
(番外編) うまくいかないケース
250-AUTH が表示されない
「/etc/postfix/main.cf」の内容を確認してください。
私は凡ミスで「smtpd_sasl_auth_enable = yes」と書かないといけない所を「smtp_sasl_auth_enable = yes」(smtpdの‘d’が抜けていた)と記載していたため認証表示が行われませんでした。
設定を変更した後はサービス「saslauthd」のリスタートもお忘れなく。
トラックバック & ピンバック