Jun 08, 2008

Mac OS Xをメールサーバーにしよう-Postfixの設定-for Leopard

tiger

 職場のスタッフそれぞれにメールアドレスを配布できたらナァ、とか、社内メール専用アドレスが欲しいなぁとか、サークルのメンバーで使うオリジナルアドレスが欲しいなぁなんて思うこともあるわけです。Mac OS Xにはメールサーバーソフトウェアとして、はじめからPostfixという優れたソフトがインストールされています。

 これまで、Mac OS X10.3(Panther)や10.4(Tiger)でPostfixを起動する方法を紹介してきました。ここではMac OS X10.5(Leopard)でPostfixを有効にして、職場に素敵なメール環境をつくっていくための方法を考えていきます。安全のためSSLでの接続を前提にすすめていきましょう。

The Postfix Home Page
Postfixのぺーじ

  なお、Mac OS X10.3(Panther)や10.4(Tiger)で設定を行う場合は、以前のログを参考にしてください。

Mac OS Xをメールサーバーにしよう


 MacOSXでPostfixを使えるようにすると、単にSMTPサーバーにできるだけでなく、勉強次第ではその機能を活かしてGmailさんやYahoo!さんやinfoseekさんなどが提供しているようなWebメールシステムもつくれるようになります。


 ただし、とても重要で忘れてはいけないこともあります。それはサーバーを悪用しようと考える人がいることです。メールサーバーを運営するにはしっかりとした管理が必要です。そうでなければ、あなたのサーバーが悪意のある人たちによって、スパムメールの踏み台にされてしまうかもしれません。なによりこのインターネットメールというシステムが、危機に追い込まれてしまいます。かならずしっかりとした覚悟で、立ち上げてください。特にフリーのドメインネームサービスを利用しているような場合では、安全性に限界があることを理解しておきましょう。



このステップに進む前にすませておくこと

 Postfixの設定と起動をする前に、ドメインネームを用意しておいてください。そうしておかないとhogehoge@mydomain.comのような@mydomain.comがないのでメールの送受信がかなりやっかいです。まず、上記のページの手順でフリーのドメインネームを取得しておくといいと思います。

フリーのドメインネームを利用しよう「ドメインネームが欲しい」



必要なもの

  • Mac(Mac OS Xを搭載しているもの。ここは10.5.3(Leopard)で進みます)
  • CotEditor(ANYiMacさんのところからダウンロードしてきてください)
  • ターミナル(Terminal)アプリケーションフォルダ>ユーティリティフォルダの中にあります。
  • コンソール(console)アプリケーションフォルダ>ユーティリティフォルダの中にあります。
  • やる気
  • オープンソースコミュニティへの感謝
  • セキュリティーへの配慮
  • メールというシステムへの感謝
  • インターネットを構築してくれた方々への畏敬の念



完了までの流れ

  1. Postfixの設定-main.cfの編集-
  2. Postfixの設定-master.cfの編集-
  3. SSL接続用ファイルの用意
  4. 設定ファイルのチェック
  5. servicesの登録
  6. Postfixの起動
  7. 動作確認
  8. メール送受信テスト
  9. 不正中継チェック
  10. Postfixの自動起動設定

上記のステップの後、POP3とIMAP、それからSSLの設定へと進んで作業完了です。全3回のシリーズになりますね。



Postfixの設定-main.cfの編集-

 PostfixはMac OS Xにはじめからインストールされていますが、インストールされているだけで、動いてはいません。これを動くように、そして、悪意のある人に踏み台にされたりしないように慎重に設定をしていきます。

  1. Finderの移動から「フォルダへ移動...」を選び/etc/postfix/へ移動します。



    間違えないように入力したら、「移動」を押す。


  2. postfixの設定ファイルが納められたフォルダが開きます。

    いろいろ不安になりそうな名前のファイルばかりでドキドキします。


  3. この中からmain.cfを探します。



  4. 見つけたら、早速編集といきたいところですが、万が一に備えて、必ず一つ以上バックアップしておきます。

    まず、デスクトップにバックアップ用のフォルダを用意して...



    main.cfファイルをpostfixフォルダからドラッグアンドドロップします。これで手つかずの設定ファイルがコピーされたので、何かあったら元に戻せばオッケー。元に戻すときはターミナルでおこないます。


  5. /etc/postfixフォルダの中にあるmain.cfファイルをCotEditorで開きます。

    CotEditorにドラッグアンドドロップするのが手っ取り早いです。CotEditorの「ファイル」>「開く」>command+Shift+Gを押す>フォルダの場所を入力ダイアログが出るので/etc/postfixと入力>main.cfを選択して「開く」、でもオッケーです。


  6. main.cfの中身が表示されます。

    なんか寒気とうんざりが一緒にやってきますけれども、がんばりましょう。


  7. とにかく一番最後の行まで移動してしまいます。



  8. 650行目ぐらいに以下の文章をコピー、ペーストします。この設定はあくまで、Postfixが動くというだけの一例です。より自分の環境にあった条件を責任を持って検討しましょう。あなたのドメインネームの部分は自分の環境に合わせて変えてください。ddo.jpドメインを持っているなら、そのアドレスを入れます。
    ###MacOSXSABA_main.cf_Start###
    inet_interfaces=all
    mynetworks_style=subnet
    mydomain=あなたのドメインネーム
    myhostname=あなたのドメインネーム

    smtpd_tls_cert_file=/System/Library/OpenSSL/certs/server.crt
    smtpd_tls_key_file=/System/Library/OpenSSL/certs/server.key
    smtpd_tls_loglevel=1
    smtpd_use_tls=yes
    smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache
    tls_random_source = dev:/dev/urandom

    smtpd_sasl_auth_enable=yes
    smtpd_use_pw_server=yes
    enable_server_options=yes
    smtpd_pw_server_security_options=plain, login, cram-md5
    smtpd_sasl_security_options=noanonymous, noplaintext
    broken_sasl_auth_clients=yes
    smtpd_recipient_restrictions=permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
    smtpd_sasl_local_domain=$mydomain
    ###MacOSXSABA_main.cf_End###


  9. ペーストしようとすると「編集を許可」を求めるダイアログが出ますので、「編集を許可」を押して先に進みます。



  10. ペーストをした後、「あなたのドメインネーム」を正しく入力します。

    "あなたのドメインネーム"にはあなたが取得したドメインネームを入力します。ddo.jpでドメインを使わせてもらっているなら、namahage.ddo.jpのように入力します。外部と接続せず、自分のマシンの中だけでテスト、勉強するだけならlocalhostでいいと思います。


  11. 「保存」を実行します。実行すると、管理者パスワードを求められるので入力して対応します。

    保存を実行すると...


    認証を求められるので管理者名とパスワードをを入力してOKします。


  12. これでmain.cfの編集は終了です。ファイルは閉じてしまってかまいません。



Postfixの設定-master.cfの編集-

 続いてmaster.cfの編集を行います。基本操作はmain.cfの時と同じです。

  1. postfixのフォルダからmaster.cfを見つけます。postfixのウィンドウをすでに閉じてしまっていたら、main.cfの編集step1でおこなった方法でもう一度開いてください。



  2. main.cf同様、編集に失敗したときなどの万が一に備えて、必ずmaster.cfもバックアップ用としてコピーしておきます。

    めんどくさがってやらないと後で苦労することになったりします...TimeMachineがあるおかげで助かったりしますけれども、この作業は習慣づけておくことをおすすめします。

  3. CotEditorでmaster.cfを開きます。



  4. master.cfの中身が表示されます。



  5. 10行目ぐらいにsubmissionから始まる場所があります。ここから4行の頭についている「#」を削除していきます。削除しようとすると「編集を許可」を求められますので対応します。
    #submission inet n - n - - smtpd
    # -o smtpd_enforce_tls=yes
    # -o smtpd_sasl_auth_enable=yes
    # -o smtpd_client_restrictions=permit_sasl_authenticated,reject
    こうなっているのを...
    submission inet n - n - - smtpd
    -o smtpd_enforce_tls=yes
    -o smtpd_sasl_auth_enable=yes
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject
    こう編集する。


  6. 続いて、14行目ぐらいにsmtpsで始まる行があります。先ほどと同様ここから4行の頭についている「#」を削除していきます。

    #smtps inet n - n - - smtpd
    # -o smtpd_tls_wrappermode=yes
    # -o smtpd_sasl_auth_enable=yes
    # -o smtpd_client_restrictions=permit_sasl_authenticated,reject
    こうなっているのを...
    smtps inet n - n - - smtpd
    -o smtpd_tls_wrappermode=yes
    -o smtpd_sasl_auth_enable=yes
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject
    こんな具合に編集します。


  7. 10行目から14行目は以下のようになっているはずです。



  8. 編集がすんだら「保存」をして作業終了です。保存時には管理者名とパスワードを求められますので対応します。



SSL接続用のファイルの用意

 将来的にSMTP認証ができるように用意をしておきます。何も対策をしていないとMac OS Xのユーザーアカウントとパスワードがすっぱだかでインターネット上を流れていってしまいます。この情報を悪意ある人が拾い上げてしまうと、Mac OS Xにアクセスされてしまったり、乗っ取られてしまったりするかもしれません。そうした事件を防ぐためにPostfixとやりとりをする際にSSLによる暗号化通信ができるように必要なファイルを作成します。

  1. アプリケーションからユーティリティフォルダを開いて、ターミナルを起動させます。


  2. 次のコマンドを入力し、リターンキーで実行します。
    sudo touch /etc/postfix/smtpd_scache.pag


    入力すると...


    パスワードを要求してきますので、Macの管理者パスワードを入力して対応します。なお、入力しても実際に文字としては表示されません。表示されないだけでちゃんと入力はできていますので、間違えないように正しく入力しましょう。


    正しく実行できると、何事もなかったように表示されます。


  3. 続いて次のコマンドを入力して、実行します。
    sudo touch /etc/postfix/smtpd_scache.dir


    実行すると先ほどと同様にパスワードが求められます。ただし、先ほどのコマンド実行したあとすぐなら、パスワードの入力は省略されます。


  4. 以上でSSL用の作業は終了です。



Servicesの登録

SSLを利用できるようにするためには、 Mac OS Xにサービスの登録を行わないといけないようです。

  1. Finderの移動から「フォルダへ移動...」を選び/etcへ移動します。





  2. フォルダの中からservicesという名前のファイルを探します。



  3. servicesファイルを万が一に備えてバックアップしておきます。



  4. etcフォルダのservicesファイルをCotEditorで開きます。





  5. 1136行目まで移動します。



  6. 1136行目の頭に「#」をつけます。
    urd 465/tcp # URL Rendesvous Directory for SSM
    これを...
    #urd 465/tcp # URL Rendesvous Directory for SSM
    これに...


  7. ファイルの一番下に移動し、次の一行を追記します。
    smtps 465/tcp # SMTP over SSL/TLS


    記述したら下に空白の一行を追加しておく方がよいかもしれません。


  8. あとは保存をして作業終了です。



設定ファイルのチェック

設定ファイルの編集作業にミスがなかったかをチェックします。この作業はPostfixが起動できるかどうかをチェックするものです。ここまでの編集作業にミスがなかったかをチェックするだけですので、メールサーバーとして安全であるかどうかなどをチェックするわけではありません。

  1. ターミナルで次のコマンドを入力し、実行します。
    sudo postfix check




  2. 記述の仕方にミスなどがなければ何も表示されません。問題があった場合はその問題が指摘されます。


    間違いがあるとこんな具合に指摘されます。



    あっていると何も表示されません。


  3. 以上で設定ファイルのチェック作業は終了です。



Postfixの起動

 いよいよPostfixを起動させます。起動させる前にユーティリティフォルダからコンソールを起動させて、エラーが起きたりしていないかすぐに確認できるようにしておきます。

  1. ユーティリティフォルダからコンソールを起動します





  2. ログリストを表示させて、/var/logの中からmail.logを探し、クリックします。これでエラーを確認するための準備は完了です。



  3. ターミナルから次のコマンドを入力し、実行します。
    sudo postfix start


    パスワードを求められたら対応します。


  4. 無事に起動すれば以下のような表示になります。

    postfix/postfix-script: starting the Postfix mail systemと出ればオッケー


  5. コンソール上にも無事起動したことが表示されているはずです。

    なにかエラーがある場合は記述されている情報から絞り込んでいくと楽になります。


  6. 以上でPostfixの起動作業は終了です。



動作確認

 Postfixがメールの受信を行ってくれるかをテストしてみます。ちょっと面倒ではありますが、ターミナルを利用してチェックしていきましょう。

  1. ターミナルから次のコマンドを入力し、実行します。
    telnet localhost 25


    このコマンドはSMTPサービスを提供するポート25番に接続できるかを試しています


  2. Postfixが無事起動して、動作しているとSMTPサーバーに接続できたという表示が出ます。

    つながりましたー。イヤッホー。


  3. 続いて、次のコマンドを入力し、実行します。
    EHLO locahost




  4. 今動作しているSMTPサーバーの認証形式などが表示されます。

    ばばばばばっと、文字列が表示されます。ちゃんとSTARTTLSも対応しているようです。


  5. 無事動作しているのが確認できましたので、quitと入力、実行して接続を終了します。

    quitを入力すると...


    接続が切れます。


  6. 以上で動作確認は終了です。



メールの送受信テスト

 一度メールを送受信できるかどうか実際に試してみます。使い慣れたメールソフトでできるといいのですが、このテストのためだけにメールソフトの設定をするのがめんどくさいのと、Postfixを起動しただけでは、メールソフトを使った受信ができるサーバーにはなっていません。なので、しんどいですけどターミナルをつかっておこないます。mailxというコマンドを使用します。

  1. ターミナルに次のコマンドを入力し、リターンで実行します。ここでは例としてこのMacでの私のユーザー名namahageから、自分namahageへメールを送る操作をして、メールがちゃんと送れるか試してみます。
    mail あなたのMacのユーザーネーム


    mail namahage





  2. 実行すると、mailを作成する画面になります。まずSubject、つまり題名を適当につけます。なんでもかまいません。ここではtestと入力しました。入力したらリターンで次に進みます。



  3. 本文を入力します。内容はなんでもかまいません。



  4. 入力がすんだら、改行をして、ピリオドを入力しリータン。EOTと表示されたら、あなたからあなたへメールが無事送信されたことになります。

    一つ改行をしてピリオドを入力し、リターン...



    EOTと表示されればメールの作成と送信が完了します。


  5. では受信を試してみましょう。postfixが正しく動作していれば、今送信したメールがあなた宛に届いているはずです。メールを確認するには次のコマンドを入力、リターンで実行してください。
    mail




  6. ちょっと地味ですけれども、メールが到着していることを示すうれしいメッセージが表示されます。イヤッホー。Postfixがちゃんと動いているようですよ。

    ばんざい、Postfixがちゃんと動いていますよ。/var/mail/namahageにあるメールボックスに一つ新しいメッセージがあります。と書いてあるわけです。その次の行、Nは新着メールという意味。namahageさんからtestという名前のメールが来ていると書いてあります。


  7. メールを開くには1と入力、リターンを押します。(この場合1通だけなのでリターンだけでもオッケー)。下のようにメッセージが表示されます。

    &マークの後ろにこのまま入力すればよいです。



    先ほど送信したメールがちゃんと届いていますし、読めています。イヤッホー。


  8. qと入力し、リターンで実行するとmailを終了することができます。

    qとだけ入力しリターン


  9. メールボックスにメッセージを読んだことが記録されてmailは終了します。



  10. メールの送受信テストはこれで終了です。コンソールを見てみると送受信を行ったことがログとして記録されているはずです。参考までに読んでおくと、あー、サーバー動いているんだなという気分になれます。




Postfixの自動起動設定

Postfixは無事動作しましたが、このままではMacを再起動するたびに、手動でPostfixをスタートするコマンドを毎回入力しないといけません。そこで、Postfixが自動的に起動するように設定をします。Mac OS X10.5(Leopard)の場合は、launchdというサービス経由で行います。

  1. ターミナルを起動して、次のコマンドを入力、実行し、一度Postfixを停止させます。
    sudo postfix stop


    パスワードを求められたら管理者として対応します。


  2. launchdにPostfixを登録するコマンドを実行します。
    sudo launchctl load /System/Library/LaunchDaemons/org.postfix.master.plist


    Mac OS X Leopardには、OS標準でPostfixを自動起動させるためのlaunchd.plist「org.postfix.master」が用意されています。このコマンドを入力することで、launchdが自動起動してくれるプログラムのリストにPostfixも追加されたことになります。


  3. 以上で、Postfixを自動起動させるための設定は終了です。余裕がある人は、実際にPostfixが自動的に起動してくれるかどうかを確認してみるとよいかと思います。ユーティリティフォルダからアクティビティモニタを起動します。



  4. アクティビティモニタウィンドウが開いたら、表示させるプロセスを「すべてのプロセス」に変更します。



  5. プロセスの中に「_postfix」という名前のプロセスが見あたらないことを確認しておきます。



  6. ターミナルから先ほど動作確認で利用したmailコマンドでメールの送信テストを行ってみます。



  7. 送信が完了したら、アクティビティモニタに「ユーザー」名が「_postfix」になっているプロセスを探します。4つのプロセスが見つかればちゃんと動作している証拠です。

    メール送信を実行すると、launchdが検知してくれて、postfixを自動的に起動してくれますので、先ほどまではなかったPostfixのプロセスが現れます。



不正中継のチェック

Postfixは無事動作しましたが、もしかしたら設定が不十分で、メールサーバーをどこか知らない悪い人に使われてしまうようになっているかもしれません。これを確認しないまま、サーバーを動かし続けるのは、自分にとってマズイだけでなく、ずばり全世界的にまずいことです。不正な中継がおこなわれるようになっていないかチェックをします。

  1. 不正中継のチェックは、日本独自のメールブラックリストデータベースをつくろうというプロジェクトをがんばっておられるRBL.JPさんらのところでできます。


    RBL.JP


  2. RBL.JPさんらのトップページ中程に、ツールというコーナーがあります。ここに「第三者中継チェック」という項目がありますのでクリックして先に進みます。




  3. Third Party Relay Check(第三者中継チェック)のページに来ます。



  4. ホスト名を入力して、checkを押します。入力するのはあなたのサーバーのアドレスです。IPアドレスでもいいですし、ddo.jpから使わせてもらっているドメインネーム(あなたの希望した名前.ddo.jp)でもどちらでもかまいません。


    ここに適切な名前を入力します。


    または

    自分のIPアドレスはシステム環境設定>ネットワークパネルで確認できます。


  5. 結構時間がかかりますが、じっくりと待つと、結果が表示されます。no relays accepted.なら完璧です。赤い文字でrelay accepted.と出た場合は不合格となります。ただし、注意書きにあるように、赤が出たからと言ってかならず問題があるというわけではありません。詳しくはRBL.JPさんらの説明を良く読んでください。



  6. 以上で、第三者不正中継のチェックは終了です。



以上ですべての作業は終了です。お疲れ様でした。
この後は、メール受信サービスを司るPOP3とIMAPサービスをLeopardに構築する方法へと進みます。




おまけ-Leopardで変わったこと-

 Postfixの設定は、Mac OS X10.5(Leopard)でも一部がちょっとだけ違うだけで、10.3や10.4とほとんど同じです。設定の違いを簡単にまとめますと、

  • main.cfのsmtpd_tls_session_cache_databaseをsdbmからbtreeに変更
  • master.cfの記述が以前とは変わっていること(作業的には変わらない)
  • Finderからアクセス権の設定ができなくなったためターミナルの利用が必須になった
  • 起動の仕組みがlauchdになった

です。

 Postfixとは直接関係ないことですが、やはり作業的に一番かわったことは、3つめの「Finderからアクセス権の設定ができなくなった」ことでしょうか。Tigerまでは、Finderの「情報を見る」から「所有者とアクセス権」項目を利用してアクセス権の編集ができました。この機能のおかげで、サーバー構築のため記述内容を編集したファイルやフォルダのアクセス権が変わってしまっても、手軽に元の設定に戻したり、正しい設定に変えたりすることができました。しかし、Leopardからは「どこにあるフォルダでも共有フォルダにできるファイル共有機能」などのために用意された「拡張アクセス権」というものが存在していて、Finderの「情報を見る」から編集できるアクセス権は、「拡張アクセス権」だけになりました。ファイルやフォルダ本体のアクセス権はFinderからはいじれなくなっています。




おまけ-お手軽メールサーバー構築ソフト-

 ほぼマウスだけでPostfix(かつPOP3かつIMAPかつTSL/SSL)を使えるように設定してくれるという、度肝を抜くソフトウェア「MailServe of Leopard」というシェアウエアが、Cutedge Systemsさんでリリースされています。$15だそうです。決済をする方法をお持ちなら、こちらのソフトウェアを使った方が、とても簡単です。
Cutedge Systems:MailServe for Leopard



Trackback

No Trackbacks

Track from Your Website

http://earlybirds.ddo.jp/namahage/inegalog/trackback/tb.php?id=60
(言及リンクのないトラックバックは無視されます)

Comments in Forum

20 Comments